ZGlmZiAtLWdpdCBhL0FuZHJvaWQubWsgYi9BbmRyb2lkLm1rCmluZGV4IDUxZGZhNTcuLmQzZTFjZjUgMTAwNjQ0Ci0tLSBhL0FuZHJvaWQubWsKKysrIGIvQW5kcm9pZC5tawpAQCAtNDk5LDYgKzQ5OSw3IEBACiAJZnJhbWV3b3Jrcy9iYXNlL2dyYXBoaWNzL2phdmEvYW5kcm9pZC9ncmFwaGljcy9Qb2ludEYuYWlkbCBcCiAJZnJhbWV3b3Jrcy9iYXNlL2dyYXBoaWNzL2phdmEvYW5kcm9pZC9ncmFwaGljcy9SZWN0Ri5haWRsIFwKIAlmcmFtZXdvcmtzL2Jhc2UvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL1JlY3QuYWlkbCBcCisJZnJhbWV3b3Jrcy9iYXNlL2dyYXBoaWNzL2phdmEvYW5kcm9pZC9ncmFwaGljcy9kcmF3YWJsZS9JY29uLmFpZGwgXAogCWZyYW1ld29ya3MvYmFzZS9jb3JlL2phdmEvYW5kcm9pZC9hY2NvdW50cy9BdXRoZW50aWNhdG9yRGVzY3JpcHRpb24uYWlkbCBcCiAJZnJhbWV3b3Jrcy9iYXNlL2NvcmUvamF2YS9hbmRyb2lkL2FjY291bnRzL0FjY291bnQuYWlkbCBcCiAJZnJhbWV3b3Jrcy9iYXNlL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9hZG1pbi9TeXN0ZW1VcGRhdGVQb2xpY3kuYWlkbCBcCmRpZmYgLS1naXQgYS9hcGkvY3VycmVudC50eHQgYi9hcGkvY3VycmVudC50eHQKaW5kZXggZTQ5NjJkOC4uZWM2NWIyNSAxMDA2NDQKLS0tIGEvYXBpL2N1cnJlbnQudHh0CisrKyBiL2FwaS9jdXJyZW50LnR4dApAQCAtMzUwNCw2ICszNTA0LDcgQEAKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gcmVsZWFzZUluc3RhbmNlKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCBkZXByZWNhdGVkIHZvaWQgcmVtb3ZlRGlhbG9nKGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHJlcG9ydEZ1bGx5RHJhd24oKTsKKyAgICBtZXRob2QgcHVibGljIGFuZHJvaWQudmlldy5Ecm9wUGVybWlzc2lvbnMgcmVxdWVzdERyb3BQZXJtaXNzaW9ucyhhbmRyb2lkLnZpZXcuRHJhZ0V2ZW50KTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb25zKGphdmEubGFuZy5TdHJpbmdbXSwgaW50KTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gcmVxdWVzdFZpc2libGVCZWhpbmQoYm9vbGVhbik7CiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCBib29sZWFuIHJlcXVlc3RXaW5kb3dGZWF0dXJlKGludCk7CkBAIC0zNTM4LDYgKzM1MzksNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgZGVwcmVjYXRlZCB2b2lkIHNldFRpdGxlQ29sb3IoaW50KTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0VmlzaWJsZShib29sZWFuKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIHZvaWQgc2V0Vm9sdW1lQ29udHJvbFN0cmVhbShpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRWck1vZGUoYm9vbGVhbik7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIHNob3VsZFNob3dSZXF1ZXN0UGVybWlzc2lvblJhdGlvbmFsZShqYXZhLmxhbmcuU3RyaW5nKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gc2hvdWxkVXBSZWNyZWF0ZVRhc2soYW5kcm9pZC5jb250ZW50LkludGVudCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIHNob3dBc3Npc3QoYW5kcm9pZC5vcy5CdW5kbGUpOwpAQCAtODk5Myw2ICs4OTk1LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0FMV0FZU19SRVRBSU5fVEFTS19TVEFURSA9IDg7IC8vIDB4OAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfQVVUT19SRU1PVkVfRlJPTV9SRUNFTlRTID0gODE5MjsgLy8gMHgyMDAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCA9IDQ7IC8vIDB4NAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfRU5BQkxFX1ZSX01PREUgPSAzMjc2ODsgLy8gMHg4MDAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19FWENMVURFX0ZST01fUkVDRU5UUyA9IDMyOyAvLyAweDIwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19GSU5JU0hfT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MgPSAyNTY7IC8vIDB4MTAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19GSU5JU0hfT05fVEFTS19MQVVOQ0ggPSAyOyAvLyAweDIKQEAgLTk1NTYsNiArOTU1OSw3IEBACiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfVVNCX0FDQ0VTU09SWSA9ICJhbmRyb2lkLmhhcmR3YXJlLnVzYi5hY2Nlc3NvcnkiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBGRUFUVVJFX1VTQl9IT1NUID0gImFuZHJvaWQuaGFyZHdhcmUudXNiLmhvc3QiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBGRUFUVVJFX1ZFUklGSUVEX0JPT1QgPSAiYW5kcm9pZC5zb2Z0d2FyZS52ZXJpZmllZF9ib290IjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9WUl9NT0RFID0gImFuZHJvaWQuc29mdHdhcmUudnIubW9kZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfV0FUQ0ggPSAiYW5kcm9pZC5oYXJkd2FyZS50eXBlLndhdGNoIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9XRUJWSUVXID0gImFuZHJvaWQuc29mdHdhcmUud2VidmlldyI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfV0lGSSA9ICJhbmRyb2lkLmhhcmR3YXJlLndpZmkiOwpAQCAtOTU2NCw3ICs5NTY4LDYgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfQ09ORklHVVJBVElPTlMgPSAxNjM4NDsgLy8gMHg0MDAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0VUX0RJU0FCTEVEX0NPTVBPTkVOVFMgPSA1MTI7IC8vIDB4MjAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0VUX0RJU0FCTEVEX1VOVElMX1VTRURfQ09NUE9ORU5UUyA9IDMyNzY4OyAvLyAweDgwMDAKLSAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfRU5DUllQVElPTl9VTkFXQVJFX0NPTVBPTkVOVFMgPSAyNjIxNDQ7IC8vIDB4NDAwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfR0lEUyA9IDI1NjsgLy8gMHgxMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfSU5TVFJVTUVOVEFUSU9OID0gMTY7IC8vIDB4MTAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfSU5URU5UX0ZJTFRFUlMgPSAzMjsgLy8gMHgyMApAQCAtOTU4MCw2ICs5NTgzLDkgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfVVJJX1BFUk1JU1NJT05fUEFUVEVSTlMgPSAyMDQ4OyAvLyAweDgwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0FMTCA9IDEzMTA3MjsgLy8gMHgyMDAwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0RFRkFVTFRfT05MWSA9IDY1NTM2OyAvLyAweDEwMDAwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9BTkRfVU5BV0FSRSA9IDc4NjQzMjsgLy8gMHhjMDAwMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0VOQ1JZUFRJT05fQVdBUkVfT05MWSA9IDUyNDI4ODsgLy8gMHg4MDAwMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0VOQ1JZUFRJT05fVU5BV0FSRV9PTkxZID0gMjYyMTQ0OyAvLyAweDQwMDAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBsb25nIE1BWElNVU1fVkVSSUZJQ0FUSU9OX1RJTUVPVVQgPSAzNjAwMDAwTDsgLy8gMHgzNmVlODBMCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEVSTUlTU0lPTl9ERU5JRUQgPSAtMTsgLy8gMHhmZmZmZmZmZgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFUk1JU1NJT05fR1JBTlRFRCA9IDA7IC8vIDB4MApAQCAtMjY4NDksNiArMjY4NTUsMjc5IEBACiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uTWVzc2FnZShpbnQsIGludCwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpOwogICB9CiAKKyAgcHVibGljIGNsYXNzIEdMRVMzMiBleHRlbmRzIGFuZHJvaWQub3BlbmdsLkdMRVMzMSB7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kQmFycmllcigpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGludCwgaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xCbGVuZEVxdWF0aW9uaShpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kRnVuY1NlcGFyYXRlaShpbnQsIGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kRnVuY2koaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbENvbG9yTWFza2koaW50LCBib29sZWFuLCBib29sZWFuLCBib29sZWFuLCBib29sZWFuKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsQ29weUltYWdlU3ViRGF0YShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGVidWdNZXNzYWdlQ2FsbGJhY2soYW5kcm9pZC5vcGVuZ2wuR0xFUzMyLkRlYnVnUHJvYyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERlYnVnTWVzc2FnZUNvbnRyb2woaW50LCBpbnQsIGludCwgaW50LCBpbnRbXSwgaW50LCBib29sZWFuKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGVidWdNZXNzYWdlQ29udHJvbChpbnQsIGludCwgaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlciwgYm9vbGVhbik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERlYnVnTWVzc2FnZUluc2VydChpbnQsIGludCwgaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERpc2FibGVpKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleChpbnQsIGludCwgaW50LCBqYXZhLm5pby5CdWZmZXIsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoaW50LCBpbnQsIGludCwgamF2YS5uaW8uQnVmZmVyLCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChpbnQsIGludCwgaW50LCBpbnQsIGludCwgamF2YS5uaW8uQnVmZmVyLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xFbmFibGVpKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRnJhbWVidWZmZXJUZXh0dXJlKGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgaW50IGdsR2V0RGVidWdNZXNzYWdlTG9nKGludCwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBieXRlW10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgaW50IGdsR2V0RGVidWdNZXNzYWdlTG9nKGludCwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkJ5dGVCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmdbXSBnbEdldERlYnVnTWVzc2FnZUxvZyhpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmdbXSBnbEdldERlYnVnTWVzc2FnZUxvZyhpbnQsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgaW50IGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cygpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmcgZ2xHZXRPYmplY3RMYWJlbChpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyBnbEdldE9iamVjdFB0ckxhYmVsKGxvbmcpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGxvbmcgZ2xHZXRQb2ludGVydihpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySXVpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm1mdihpbnQsIGludCwgaW50LCBmbG9hdFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybWZ2KGludCwgaW50LCBpbnQsIGphdmEubmlvLkZsb2F0QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm1pdihpbnQsIGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm1pdihpbnQsIGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybXVpdihpbnQsIGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm11aXYoaW50LCBpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBib29sZWFuIGdsSXNFbmFibGVkaShpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbE1pblNhbXBsZVNoYWRpbmcoZmxvYXQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xPYmplY3RMYWJlbChpbnQsIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsT2JqZWN0UHRyTGFiZWwobG9uZywgamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFBhdGNoUGFyYW1ldGVyaShpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFBvcERlYnVnR3JvdXAoKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUHJpbWl0aXZlQm91bmRpbmdCb3goZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUHVzaERlYnVnR3JvdXAoaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFJlYWRuUGl4ZWxzKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgamF2YS5uaW8uQnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsU2FtcGxlclBhcmFtZXRlcklpdihpbnQsIGludCwgaW50W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsU2FtcGxlclBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleEJ1ZmZlcihpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsVGV4QnVmZmVyUmFuZ2UoaW50LCBpbnQsIGludCwgaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleFBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBib29sZWFuKTsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9CVUZGRVIgPSAzMzUwNDsgLy8gMHg4MmUwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ0xBTVBfVE9fQk9SREVSID0gMzMwNjk7IC8vIDB4ODEyZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTE9SQlVSTiA9IDM3NTMwOyAvLyAweDkyOWEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT0xPUkRPREdFID0gMzc1Mjk7IC8vIDB4OTI5OQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwID0gMzc4MTk7IC8vIDB4OTNiYgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUgPSAzNzgxNjsgLy8gMHg5M2I4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiA9IDM3ODE3OyAvLyAweDkzYjkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4ID0gMzc4MTg7IC8vIDB4OTNiYQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwID0gMzc4MjA7IC8vIDB4OTNiYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyID0gMzc4MjE7IC8vIDB4OTNiZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCA9IDM3ODA4OyAvLyAweDkzYjAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQgPSAzNzgwOTsgLy8gMHg5M2IxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1ID0gMzc4MTA7IC8vIDB4OTNiMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSA9IDM3ODExOyAvLyAweDkzYjMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYgPSAzNzgxMjsgLy8gMHg5M2I0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1ID0gMzc4MTM7IC8vIDB4OTNiNQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiA9IDM3ODE0OyAvLyAweDkzYjYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDggPSAzNzgxNTsgLy8gMHg5M2I3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCA9IDM3ODUxOyAvLyAweDkzZGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUgPSAzNzg0ODsgLy8gMHg5M2Q4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2ID0gMzc4NDk7IC8vIDB4OTNkOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCA9IDM3ODUwOyAvLyAweDkzZGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwID0gMzc4NTI7IC8vIDB4OTNkYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIgPSAzNzg1MzsgLy8gMHg5M2RkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQgPSAzNzg0MDsgLy8gMHg5M2QwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQgPSAzNzg0MTsgLy8gMHg5M2QxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUgPSAzNzg0MjsgLy8gMHg5M2QyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUgPSAzNzg0MzsgLy8gMHg5M2QzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYgPSAzNzg0NDsgLy8gMHg5M2Q0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUgPSAzNzg0NTsgLy8gMHg5M2Q1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYgPSAzNzg0NjsgLy8gMHg5M2Q2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDggPSAzNzg0NzsgLy8gMHg5M2Q3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09OVEVYVF9GTEFHUyA9IDMzMzEwOyAvLyAweDgyMWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0ZMQUdfREVCVUdfQklUID0gMjsgLy8gMHgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09OVEVYVF9GTEFHX1JPQlVTVF9BQ0NFU1NfQklUID0gNDsgLy8gMHg0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09OVEVYVF9MT1NUID0gMTI4NzsgLy8gMHg1MDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9EQVJLRU4gPSAzNzUyNzsgLy8gMHg5Mjk3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04gPSAzMzM0ODsgLy8gMHg4MjQ0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTSA9IDMzMzQ5OyAvLyAweDgyNDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSCA9IDMzMzg5OyAvLyAweDgyNmQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMgPSAzNzE4OTsgLy8gMHg5MTQ1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEggPSAzMzM0NzsgLy8gMHg4MjQzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfT1VUUFVUID0gMzc2MDA7IC8vIDB4OTJlMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyA9IDMzMzQ2OyAvLyAweDgyNDIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TRVZFUklUWV9ISUdIID0gMzcxOTA7IC8vIDB4OTE0NgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX0xPVyA9IDM3MTkyOyAvLyAweDkxNDgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0gPSAzNzE5MTsgLy8gMHg5MTQ3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OID0gMzMzODc7IC8vIDB4ODI2YgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9BUEkgPSAzMzM1MDsgLy8gMHg4MjQ2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OID0gMzMzNTQ7IC8vIDB4ODI0YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9PVEhFUiA9IDMzMzU1OyAvLyAweDgyNGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSID0gMzMzNTI7IC8vIDB4ODI0OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSA9IDMzMzUzOyAvLyAweDgyNDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTSA9IDMzMzUxOyAvLyAweDgyNDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1IgPSAzMzM1NzsgLy8gMHg4MjRkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9FUlJPUiA9IDMzMzU2OyAvLyAweDgyNGMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX01BUktFUiA9IDMzMzg0OyAvLyAweDgyNjgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX09USEVSID0gMzMzNjE7IC8vIDB4ODI1MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UgPSAzMzM2MDsgLy8gMHg4MjUwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9QT1BfR1JPVVAgPSAzMzM4NjsgLy8gMHg4MjZhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSA9IDMzMzU5OyAvLyAweDgyNGYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX1BVU0hfR1JPVVAgPSAzMzM4NTsgLy8gMHg4MjY5CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1IgPSAzMzM1ODsgLy8gMHg4MjRlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRElGRkVSRU5DRSA9IDM3NTM0OyAvLyAweDkyOWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9FWENMVVNJT04gPSAzNzUzNjsgLy8gMHg5MmEwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRklSU1RfVkVSVEVYX0NPTlZFTlRJT04gPSAzNjQyOTsgLy8gMHg4ZTRkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBQ1RJT05BTF9FVkVOID0gMzY0NzY7IC8vIDB4OGU3YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUNUSU9OQUxfT0REID0gMzY0NzU7IC8vIDB4OGU3YgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMgPSAzNjQ0NTsgLy8gMHg4ZTVkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9MQVlFUkVEID0gMzYyNjM7IC8vIDB4OGRhNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTID0gMzc2NTA7IC8vIDB4OTMxMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTEFZRVJfVEFSR0VUUyA9IDM2MjY0OyAvLyAweDhkYTgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HRU9NRVRSWV9JTlBVVF9UWVBFID0gMzUwOTU7IC8vIDB4ODkxNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX09VVFBVVF9UWVBFID0gMzUwOTY7IC8vIDB4ODkxOAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1NIQURFUiA9IDM2MzEzOyAvLyAweDhkZDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HRU9NRVRSWV9TSEFERVJfQklUID0gNDsgLy8gMHg0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TID0gMzQ5NDM7IC8vIDB4ODg3ZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVCA9IDM1MDk0OyAvLyAweDg5MTYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HVUlMVFlfQ09OVEVYVF9SRVNFVCA9IDMzMzYzOyAvLyAweDgyNTMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9IQVJETElHSFQgPSAzNzUzMTsgLy8gMHg5MjliCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX0NPTE9SID0gMzc1NTE7IC8vIDB4OTJhZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hTTF9IVUUgPSAzNzU0OTsgLy8gMHg5MmFkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX0xVTUlOT1NJVFkgPSAzNzU1MjsgLy8gMHg5MmIwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX1NBVFVSQVRJT04gPSAzNzU1MDsgLy8gMHg5MmFlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU1BR0VfQlVGRkVSID0gMzY5NDU7IC8vIDB4OTA1MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lNQUdFX0NVQkVfTUFQX0FSUkFZID0gMzY5NDg7IC8vIDB4OTA1NAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOTk9DRU5UX0NPTlRFWFRfUkVTRVQgPSAzMzM2NDsgLy8gMHg4MjU0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX0lNQUdFX0JVRkZFUiA9IDM2OTU2OyAvLyAweDkwNWMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9JTlRfSU1BR0VfQ1VCRV9NQVBfQVJSQVkgPSAzNjk1OTsgLy8gMHg5MDVmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEVfQVJSQVkgPSAzNzEzMjsgLy8gMHg5MTBjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX1NBTVBMRVJfQlVGRkVSID0gMzYzMDQ7IC8vIDB4OGRkMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZID0gMzY4Nzg7IC8vIDB4OTAwZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lTT0xJTkVTID0gMzY0NzQ7IC8vIDB4OGU3YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lTX1BFUl9QQVRDSCA9IDM3NjA3OyAvLyAweDkyZTcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MQVNUX1ZFUlRFWF9DT05WRU5USU9OID0gMzY0MzA7IC8vIDB4OGU0ZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVggPSAzMzM3NDsgLy8gMHg4MjVlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTElHSFRFTiA9IDM3NTI4OyAvLyAweDkyOTgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MSU5FU19BREpBQ0VOQ1kgPSAxMDsgLy8gMHhhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kgPSAxMTsgLy8gMHhiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTE9TRV9DT05URVhUX09OX1JFU0VUID0gMzMzNjI7IC8vIDB4ODI1MgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNTM3ODsgLy8gMHg4YTMyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNjM4MjsgLy8gMHg4ZTFlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNjM4MzsgLy8gMHg4ZTFmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIID0gMzMzODg7IC8vIDB4ODI2YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMgPSAzNzE4ODsgLy8gMHg5MTQ0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIID0gMzcxODc7IC8vIDB4OTE0MworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCA9IDM2NDQ0OyAvLyAweDhlNWMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTID0gMzc2NTU7IC8vIDB4OTMxNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMgPSAzNzU4OTsgLy8gMHg5MmQ1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgPSAzNzU4MzsgLy8gMHg5MmNmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TID0gMzcwNjk7IC8vIDB4OTBjZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTID0gMzcxNTU7IC8vIDB4OTEyMworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUyA9IDM3MTU2OyAvLyAweDkxMjQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTID0gMzYzMjA7IC8vIDB4OGRlMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMgPSAzNjQ0MjsgLy8gMHg4ZTVhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyA9IDM3MDc5OyAvLyAweDkwZDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDM1ODgxOyAvLyAweDhjMjkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgPSAzNjMyMTsgLy8gMHg4ZGUxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTID0gMzUzNzI7IC8vIDB4OGEyYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNjMxOTsgLy8gMHg4ZGRmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0xBQkVMX0xFTkdUSCA9IDMzNTEyOyAvLyAweDgyZTgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfUEFUQ0hfVkVSVElDRVMgPSAzNjQ3NzsgLy8gMHg4ZTdkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMgPSAzNzU4NzsgLy8gMHg5MmQzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTID0gMzc1ODE7IC8vIDB4OTJjZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMgPSAzNzA2NzsgLy8gMHg5MGNiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTID0gMzQ5MjQ7IC8vIDB4ODg2YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMgPSAzNjQ4MzsgLy8gMHg4ZTgzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MgPSAzNzA4MDsgLy8gMHg5MGQ4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMzY0ODE7IC8vIDB4OGU4MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgPSAzNjQ4NTsgLy8gMHg4ZTg1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyA9IDM2NDg5OyAvLyAweDhlODkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2NDc5OyAvLyAweDhlN2YKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyA9IDM3NTg4OyAvLyAweDkyZDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgPSAzNzU4MjsgLy8gMHg5MmNlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUyA9IDM3MDY4OyAvLyAweDkwY2MKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMgPSAzNDkyNTsgLy8gMHg4ODZkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyA9IDM2NDg2OyAvLyAweDhlODYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUyA9IDM3MDgxOyAvLyAweDkwZDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAzNjQ4MjsgLy8gMHg4ZTgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUyA9IDM2NDkwOyAvLyAweDhlOGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2NDgwOyAvLyAweDhlODAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19HRU5fTEVWRUwgPSAzNjQ3ODsgLy8gMHg4ZTdlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUyA9IDM2NDg0OyAvLyAweDhlODQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRSA9IDM1ODgzOyAvLyAweDhjMmIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQgPSAzNjQ0MzsgLy8gMHg4ZTViCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFID0gMzU4OTU7IC8vIDB4OGMzNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJUExZID0gMzc1MjQ7IC8vIDB4OTI5NAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkgPSAzNzc2MjsgLy8gMHg5MzgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSA9IDM3NzYxOyAvLyAweDkzODEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9OT19SRVNFVF9OT1RJRklDQVRJT04gPSAzMzM3NzsgLy8gMHg4MjYxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfT1ZFUkxBWSA9IDM3NTI2OyAvLyAweDkyOTYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9QQVRDSEVTID0gMTQ7IC8vIDB4ZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BBVENIX1ZFUlRJQ0VTID0gMzY0NjY7IC8vIDB4OGU3MgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRVNfR0VORVJBVEVEID0gMzU5NzU7IC8vIDB4OGM4NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggPSAzNzU2NjsgLy8gMHg5MmJlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEID0gMzMzMTM7IC8vIDB4ODIyMQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BST0dSQU0gPSAzMzUwNjsgLy8gMHg4MmUyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJPR1JBTV9QSVBFTElORSA9IDMzNTA4OyAvLyAweDgyZTQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9RVUFEUyA9IDc7IC8vIDB4NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1FVRVJZID0gMzM1MDc7IC8vIDB4ODJlMworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfR0VPTUVUUllfU0hBREVSID0gMzc2NDE7IC8vIDB4OTMwOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfVEVTU19DT05UUk9MX1NIQURFUiA9IDM3NjM5OyAvLyAweDkzMDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9SRUZFUkVOQ0VEX0JZX1RFU1NfRVZBTFVBVElPTl9TSEFERVIgPSAzNzY0MDsgLy8gMHg5MzA4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZID0gMzMzNjY7IC8vIDB4ODI1NgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVIgPSAzMzUxMDsgLy8gMHg4MmU2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU0FNUExFUl8yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTMxOyAvLyAweDkxMGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TQU1QTEVSX0JVRkZFUiA9IDM2MjkwOyAvLyAweDhkYzIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZID0gMzY4NzY7IC8vIDB4OTAwYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVlfU0hBRE9XID0gMzY4Nzc7IC8vIDB4OTAwZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRV9TSEFESU5HID0gMzU4OTQ7IC8vIDB4OGMzNgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NDUkVFTiA9IDM3NTI1OyAvLyAweDkyOTUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TSEFERVIgPSAzMzUwNTsgLy8gMHg4MmUxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU09GVExJR0hUID0gMzc1MzI7IC8vIDB4OTI5YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NUQUNLX09WRVJGTE9XID0gMTI4MzsgLy8gMHg1MDMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TVEFDS19VTkRFUkZMT1cgPSAxMjg0OyAvLyAweDUwNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfQ09OVFJPTF9PVVRQVVRfVkVSVElDRVMgPSAzNjQ2OTsgLy8gMHg4ZTc1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19DT05UUk9MX1NIQURFUiA9IDM2NDg4OyAvLyAweDhlODgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0NPTlRST0xfU0hBREVSX0JJVCA9IDg7IC8vIDB4OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVIgPSAzNjQ4NzsgLy8gMHg4ZTg3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9CSVQgPSAxNjsgLy8gMHgxMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX01PREUgPSAzNjQ3MDsgLy8gMHg4ZTc2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19HRU5fUE9JTlRfTU9ERSA9IDM2NDczOyAvLyAweDhlNzkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0dFTl9TUEFDSU5HID0gMzY0NzE7IC8vIDB4OGU3NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX1ZFUlRFWF9PUkRFUiA9IDM2NDcyOyAvLyAweDhlNzgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZID0gMzcxMjI7IC8vIDB4OTEwMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTI1OyAvLyAweDkxMDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSID0gMzU4ODQ7IC8vIDB4OGMyYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWSA9IDM2ODc0OyAvLyAweDkwMGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JPUkRFUl9DT0xPUiA9IDQxMDA7IC8vIDB4MTAwNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSID0gMzU4ODI7IC8vIDB4OGMyYQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkcgPSAzNTg4MjsgLy8gMHg4YzJhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HID0gMzU4ODU7IC8vIDB4OGMyZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVCA9IDM3Mjc3OyAvLyAweDkxOWQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UID0gMzcyNzk7IC8vIDB4OTE5ZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX1NJWkUgPSAzNzI3ODsgLy8gMHg5MTllCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWSA9IDM2ODczOyAvLyAweDkwMDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9UUklBTkdMRVNfQURKQUNFTkNZID0gMTI7IC8vIDB4YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWSA9IDEzOyAvLyAweGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTkRFRklORURfVkVSVEVYID0gMzMzNzY7IC8vIDB4ODI2MAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVCA9IDMzMzY1OyAvLyAweDgyNTUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfSU1BR0VfQlVGRkVSID0gMzY5Njc7IC8vIDB4OTA2NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWSA9IDM2OTcwOyAvLyAweDkwNmEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTMzOyAvLyAweDkxMGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9CVUZGRVIgPSAzNjMxMjsgLy8gMHg4ZGQ4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVkgPSAzNjg3OTsgLy8gMHg5MDBmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVkVSVEVYX0FSUkFZID0gMzI4ODQ7IC8vIDB4ODA3NAorICB9CisKKyAgcHVibGljIHN0YXRpYyBhYnN0cmFjdCBpbnRlcmZhY2UgR0xFUzMyLkRlYnVnUHJvYyB7CisgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uTWVzc2FnZShpbnQsIGludCwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpOworICB9CisKICAgcHVibGljIGNsYXNzIEdMRXhjZXB0aW9uIGV4dGVuZHMgamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gewogICAgIGN0b3IgcHVibGljIEdMRXhjZXB0aW9uKGludCk7CiAgICAgY3RvciBwdWJsaWMgR0xFeGNlcHRpb24oaW50LCBqYXZhLmxhbmcuU3RyaW5nKTsKQEAgLTI4ODY4LDYgKzI5MTQ3LDkgQEAKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8gYnVpbGQoKTsKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRDYXBhYmlsaXRpZXMoYW5kcm9pZC5wcmludC5QcmludGVyQ2FwYWJpbGl0aWVzSW5mbyk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0RGVzY3JpcHRpb24oamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKTsKKyAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRJY29uUmVzb3VyY2VJZChpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5wcmludC5QcmludGVySW5mby5CdWlsZGVyIHNldEluZm9JbnRlbnQoYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKTsKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRTdGF0dXMoaW50KTsKICAgfQpAQCAtMjg4ODgsNiArMjkxNzAsMTAgQEAKIAogcGFja2FnZSBhbmRyb2lkLnByaW50c2VydmljZSB7CiAKKyAgcHVibGljIGNsYXNzIEN1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2sgeworICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSWNvbik7CisgIH0KKwogICBwdWJsaWMgZmluYWwgY2xhc3MgUHJpbnREb2N1bWVudCB7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIGdldERhdGEoKTsKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnREb2N1bWVudEluZm8gZ2V0SW5mbygpOwpAQCAtMjg5NDMsNiArMjkyMjksNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc0Rlc3Ryb3llZCgpOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1ByaW50ZXJEaXNjb3ZlcnlTdGFydGVkKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uRGVzdHJveSgpOworICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBvblJlcXVlc3RDdXN0b21QcmludGVySWNvbihhbmRyb2lkLnByaW50LlByaW50ZXJJZCwgYW5kcm9pZC5wcmludHNlcnZpY2UuQ3VzdG9tUHJpbnRlckljb25DYWxsYmFjayk7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RhcnRQcmludGVyRGlzY292ZXJ5KGphdmEudXRpbC5MaXN0PGFuZHJvaWQucHJpbnQuUHJpbnRlcklkPik7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RhcnRQcmludGVyU3RhdGVUcmFja2luZyhhbmRyb2lkLnByaW50LlByaW50ZXJJZCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RvcFByaW50ZXJEaXNjb3ZlcnkoKTsKQEAgLTI5MzExLDYgKzI5NTk4LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgR0VPQ09ERURfTE9DQVRJT04gPSAiZ2VvY29kZWRfbG9jYXRpb24iOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOQ09NSU5HX1RZUEUgPSAxOyAvLyAweDEKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgSVNfUkVBRCA9ICJpc19yZWFkIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTEFTVF9NT0RJRklFRCA9ICJsYXN0X21vZGlmaWVkIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTElNSVRfUEFSQU1fS0VZID0gImxpbWl0IjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSVNTRURfVFlQRSA9IDM7IC8vIDB4MwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBORVcgPSAibmV3IjsKQEAgLTMxNTgxLDYgKzMxODY5LDcgQEAKIAogICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIFZvaWNlbWFpbENvbnRyYWN0LlN0YXR1cyBpbXBsZW1lbnRzIGFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMgewogICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGFuZHJvaWQubmV0LlVyaSBidWlsZFNvdXJjZVVyaShqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIHNldFF1b3RhKGFuZHJvaWQuY29udGVudC5Db250ZXh0LCBhbmRyb2lkLnRlbGVjb20uUGhvbmVBY2NvdW50SGFuZGxlLCBpbnQsIGludCk7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIENPTkZJR1VSQVRJT05fU1RBVEUgPSAiY29uZmlndXJhdGlvbl9zdGF0ZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09ORklHVVJBVElPTl9TVEFURV9DQU5fQkVfQ09ORklHVVJFRCA9IDI7IC8vIDB4MgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTkZJR1VSQVRJT05fU1RBVEVfTk9UX0NPTkZJR1VSRUQgPSAxOyAvLyAweDEKQEAgLTMxNTk3LDYgKzMxODg2LDkgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT1RJRklDQVRJT05fQ0hBTk5FTF9TVEFURV9PSyA9IDA7IC8vIDB4MAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBQSE9ORV9BQ0NPVU5UX0NPTVBPTkVOVF9OQU1FID0gInBob25lX2FjY291bnRfY29tcG9uZW50X25hbWUiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBQSE9ORV9BQ0NPVU5UX0lEID0gInBob25lX2FjY291bnRfaWQiOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBRVU9UQV9PQ0NVUElFRCA9ICJxdW90YV9vY2N1cGllZCI7CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFFVT1RBX1RPVEFMID0gInF1b3RhX3RvdGFsIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRVU9UQV9VTkFWQUlMQUJMRSA9IC0xOyAvLyAweGZmZmZmZmZmCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFNFVFRJTkdTX1VSSSA9ICJzZXR0aW5nc191cmkiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBTT1VSQ0VfUEFDS0FHRSA9ICJzb3VyY2VfcGFja2FnZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFZPSUNFTUFJTF9BQ0NFU1NfVVJJID0gInZvaWNlbWFpbF9hY2Nlc3NfdXJpIjsKQEAgLTMxNjEzLDYgKzMxOTA1LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgSEFTX0NPTlRFTlQgPSAiaGFzX2NvbnRlbnQiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBJU19SRUFEID0gImlzX3JlYWQiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBJVEVNX1RZUEUgPSAidm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vdm9pY2VtYWlsIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTEFTVF9NT0RJRklFRCA9ICJsYXN0X21vZGlmaWVkIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTUlNRV9UWVBFID0gIm1pbWVfdHlwZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIE5VTUJFUiA9ICJudW1iZXIiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBQSE9ORV9BQ0NPVU5UX0NPTVBPTkVOVF9OQU1FID0gInN1YnNjcmlwdGlvbl9jb21wb25lbnRfbmFtZSI7CkBAIC0zMzI1Miw2ICszMzU0NSw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCB2b2lkIHJlcXVlc3RJbnRlcnJ1cHRpb25GaWx0ZXIoaW50KTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIHZvaWQgcmVxdWVzdExpc3RlbmVySGludHMoaW50KTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIHZvaWQgc2V0Tm90aWZpY2F0aW9uc1Nob3duKGphdmEubGFuZy5TdHJpbmdbXSk7CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIENBVEVHT1JZX1ZSX05PVElGSUNBVElPTlMgPSAiYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkudnIubm90aWZpY2F0aW9ucyI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSElOVF9IT1NUX0RJU0FCTEVfRUZGRUNUUyA9IDE7IC8vIDB4MQogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVEVSUlVQVElPTl9GSUxURVJfQUxBUk1TID0gNDsgLy8gMHg0CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5URVJSVVBUSU9OX0ZJTFRFUl9BTEwgPSAxOyAvLyAweDEKQEAgLTM5MzExLDcgKzM5NjA1LDYgQEAKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gZ2V0UmVzdWx0KCk7CiAgICAgbWV0aG9kIHB1YmxpYyBmbG9hdCBnZXRYKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBmbG9hdCBnZXRZKCk7Ci0gICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnZpZXcuRHJvcFBlcm1pc3Npb25zIHJlcXVlc3REcm9wUGVybWlzc2lvbnMoKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChhbmRyb2lkLm9zLlBhcmNlbCwgaW50KTsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ1RJT05fRFJBR19FTkRFRCA9IDQ7IC8vIDB4NAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDVElPTl9EUkFHX0VOVEVSRUQgPSA1OyAvLyAweDUKQEAgLTQwMjQ5LDYgKzQwNTQyLDggQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX0xUUklHR0VSID0gMTc7IC8vIDB4MTEKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX09SSUVOVEFUSU9OID0gODsgLy8gMHg4CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19QUkVTU1VSRSA9IDI7IC8vIDB4MgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfUkVMQVRJVkVfWCA9IDI3OyAvLyAweDFiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SRUxBVElWRV9ZID0gMjg7IC8vIDB4MWMKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1JUUklHR0VSID0gMTg7IC8vIDB4MTIKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1JVRERFUiA9IDIwOyAvLyAweDE0CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SWCA9IDEyOyAvLyAweGMKQEAgLTQwNzg0LDYgKzQxMDc5LDcgQEAKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gaGFzTmVzdGVkU2Nyb2xsaW5nUGFyZW50KCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGhhc09uQ2xpY2tMaXN0ZW5lcnMoKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gaGFzT3ZlcmxhcHBpbmdSZW5kZXJpbmcoKTsKKyAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gaGFzUG9pbnRlckNhcHR1cmUoKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gaGFzVHJhbnNpZW50U3RhdGUoKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gaGFzV2luZG93Rm9jdXMoKTsKICAgICBtZXRob2QgcHVibGljIHN0YXRpYyBhbmRyb2lkLnZpZXcuVmlldyBpbmZsYXRlKGFuZHJvaWQuY29udGVudC5Db250ZXh0LCBpbnQsIGFuZHJvaWQudmlldy5WaWV3R3JvdXApOwpAQCAtNDA5MTAsNiArNDEyMDYsNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBwb3N0T25BbmltYXRpb24oamF2YS5sYW5nLlJ1bm5hYmxlKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgcG9zdE9uQW5pbWF0aW9uRGVsYXllZChqYXZhLmxhbmcuUnVubmFibGUsIGxvbmcpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCByZWZyZXNoRHJhd2FibGVTdGF0ZSgpOworICAgIG1ldGhvZCBwdWJsaWMgdm9pZCByZWxlYXNlUG9pbnRlckNhcHR1cmUoKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gcmVtb3ZlQ2FsbGJhY2tzKGphdmEubGFuZy5SdW5uYWJsZSk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHJlbW92ZU9uQXR0YWNoU3RhdGVDaGFuZ2VMaXN0ZW5lcihhbmRyb2lkLnZpZXcuVmlldy5PbkF0dGFjaFN0YXRlQ2hhbmdlTGlzdGVuZXIpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCByZW1vdmVPbkxheW91dENoYW5nZUxpc3RlbmVyKGFuZHJvaWQudmlldy5WaWV3Lk9uTGF5b3V0Q2hhbmdlTGlzdGVuZXIpOwpAQCAtNDEwMTAsNiArNDEzMDcsNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRQYWRkaW5nUmVsYXRpdmUoaW50LCBpbnQsIGludCwgaW50KTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0UGl2b3RYKGZsb2F0KTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0UGl2b3RZKGZsb2F0KTsKKyAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0UG9pbnRlckNhcHR1cmUoKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0UG9pbnRlckljb24oYW5kcm9pZC52aWV3LlBvaW50ZXJJY29uKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0UHJlc3NlZChib29sZWFuKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIHZvaWQgc2V0UmlnaHQoaW50KTsKQEAgLTU5NDIxLDggKzU5NzE5LDggQEAKICAgICBtZXRob2QgcHVibGljIGphdmEubGFuZy5TdHJpbmdCdWZmZXIgYXBwZW5kVGFpbChqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKTsKICAgICBtZXRob2QgcHVibGljIGludCBlbmQoKTsKICAgICBtZXRob2QgcHVibGljIGludCBlbmQoaW50KTsKLSAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gZmluZChpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBmaW5kKCk7CisgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGZpbmQoaW50KTsKICAgICBtZXRob2QgcHVibGljIGphdmEubGFuZy5TdHJpbmcgZ3JvdXAoKTsKICAgICBtZXRob2QgcHVibGljIGphdmEubGFuZy5TdHJpbmcgZ3JvdXAoaW50KTsKICAgICBtZXRob2QgcHVibGljIGludCBncm91cENvdW50KCk7CkBAIC01OTQ1MCw4ICs1OTc0OCw4IEBACiAgIH0KIAogICBwdWJsaWMgZmluYWwgY2xhc3MgUGF0dGVybiBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLSAgICBtZXRob2QgcHVibGljIHN0YXRpYyBqYXZhLnV0aWwucmVnZXguUGF0dGVybiBjb21waWxlKGphdmEubGFuZy5TdHJpbmcsIGludCkgdGhyb3dzIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuU3ludGF4RXhjZXB0aW9uOwogICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuIGNvbXBpbGUoamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4gY29tcGlsZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIHRocm93cyBqYXZhLnV0aWwucmVnZXguUGF0dGVyblN5bnRheEV4Y2VwdGlvbjsKICAgICBtZXRob2QgcHVibGljIGludCBmbGFncygpOwogICAgIG1ldGhvZCBwdWJsaWMgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXIgbWF0Y2hlcihqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKTsKICAgICBtZXRob2QgcHVibGljIHN0YXRpYyBib29sZWFuIG1hdGNoZXMoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSk7CkBAIC01OTQ2Niw2ICs1OTc2NCw3IEBACiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTElURVJBTCA9IDE2OyAvLyAweDEwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVVMVElMSU5FID0gODsgLy8gMHg4CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVU5JQ09ERV9DQVNFID0gNjQ7IC8vIDB4NDAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTklDT0RFX0NIQVJBQ1RFUl9DTEFTUyA9IDI1NjsgLy8gMHgxMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTklYX0xJTkVTID0gMTsgLy8gMHgxCiAgIH0KIApkaWZmIC0tZ2l0IGEvYXBpL3N5c3RlbS1jdXJyZW50LnR4dCBiL2FwaS9zeXN0ZW0tY3VycmVudC50eHQKaW5kZXggNTg2ZWEwNi4uZTk5MmE3NyAxMDA2NDQKLS0tIGEvYXBpL3N5c3RlbS1jdXJyZW50LnR4dAorKysgYi9hcGkvc3lzdGVtLWN1cnJlbnQudHh0CkBAIC0zNjA5LDYgKzM2MDksNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiByZWxlYXNlSW5zdGFuY2UoKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIGRlcHJlY2F0ZWQgdm9pZCByZW1vdmVEaWFsb2coaW50KTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgcmVwb3J0RnVsbHlEcmF3bigpOworICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC52aWV3LkRyb3BQZXJtaXNzaW9ucyByZXF1ZXN0RHJvcFBlcm1pc3Npb25zKGFuZHJvaWQudmlldy5EcmFnRXZlbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbnMoamF2YS5sYW5nLlN0cmluZ1tdLCBpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0VmlzaWJsZUJlaGluZChib29sZWFuKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIGJvb2xlYW4gcmVxdWVzdFdpbmRvd0ZlYXR1cmUoaW50KTsKQEAgLTM2NDMsNiArMzY0NCw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyBkZXByZWNhdGVkIHZvaWQgc2V0VGl0bGVDb2xvcihpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRWaXNpYmxlKGJvb2xlYW4pOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCBzZXRWb2x1bWVDb250cm9sU3RyZWFtKGludCk7CisgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFZyTW9kZShib29sZWFuKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gc2hvdWxkU2hvd1JlcXVlc3RQZXJtaXNzaW9uUmF0aW9uYWxlKGphdmEubGFuZy5TdHJpbmcpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBzaG91bGRVcFJlY3JlYXRlVGFzayhhbmRyb2lkLmNvbnRlbnQuSW50ZW50KTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gc2hvd0Fzc2lzdChhbmRyb2lkLm9zLkJ1bmRsZSk7CkBAIC05MjYxLDYgKzkyNjMsNyBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfQUxXQVlTX1JFVEFJTl9UQVNLX1NUQVRFID0gODsgLy8gMHg4CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19BVVRPX1JFTU9WRV9GUk9NX1JFQ0VOVFMgPSA4MTkyOyAvLyAweDIwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIID0gNDsgLy8gMHg0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19FTkFCTEVfVlJfTU9ERSA9IDMyNzY4OyAvLyAweDgwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0VYQ0xVREVfRlJPTV9SRUNFTlRTID0gMzI7IC8vIDB4MjAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUyA9IDI1NjsgLy8gMHgxMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZJTklTSF9PTl9UQVNLX0xBVU5DSCA9IDI7IC8vIDB4MgpAQCAtOTg3Miw2ICs5ODc1LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9VU0JfQUNDRVNTT1JZID0gImFuZHJvaWQuaGFyZHdhcmUudXNiLmFjY2Vzc29yeSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfVVNCX0hPU1QgPSAiYW5kcm9pZC5oYXJkd2FyZS51c2IuaG9zdCI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfVkVSSUZJRURfQk9PVCA9ICJhbmRyb2lkLnNvZnR3YXJlLnZlcmlmaWVkX2Jvb3QiOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBGRUFUVVJFX1ZSX01PREUgPSAiYW5kcm9pZC5zb2Z0d2FyZS52ci5tb2RlIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9XQVRDSCA9ICJhbmRyb2lkLmhhcmR3YXJlLnR5cGUud2F0Y2giOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBGRUFUVVJFX1dFQlZJRVcgPSAiYW5kcm9pZC5zb2Z0d2FyZS53ZWJ2aWV3IjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9XSUZJID0gImFuZHJvaWQuaGFyZHdhcmUud2lmaSI7CkBAIC05ODgwLDcgKzk4ODQsNiBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9DT05GSUdVUkFUSU9OUyA9IDE2Mzg0OyAvLyAweDQwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfRElTQUJMRURfQ09NUE9ORU5UUyA9IDUxMjsgLy8gMHgyMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfRElTQUJMRURfVU5USUxfVVNFRF9DT01QT05FTlRTID0gMzI3Njg7IC8vIDB4ODAwMAotICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9FTkNSWVBUSU9OX1VOQVdBUkVfQ09NUE9ORU5UUyA9IDI2MjE0NDsgLy8gMHg0MDAwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9HSURTID0gMjU2OyAvLyAweDEwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9JTlNUUlVNRU5UQVRJT04gPSAxNjsgLy8gMHgxMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9JTlRFTlRfRklMVEVSUyA9IDMyOyAvLyAweDIwCkBAIC05OTMzLDYgKzk5MzYsOSBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BU0tfUEVSTUlTU0lPTl9GTEFHUyA9IDI1NTsgLy8gMHhmZgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0FMTCA9IDEzMTA3MjsgLy8gMHgyMDAwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0RFRkFVTFRfT05MWSA9IDY1NTM2OyAvLyAweDEwMDAwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9BTkRfVU5BV0FSRSA9IDc4NjQzMjsgLy8gMHhjMDAwMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0VOQ1JZUFRJT05fQVdBUkVfT05MWSA9IDUyNDI4ODsgLy8gMHg4MDAwMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX0VOQ1JZUFRJT05fVU5BV0FSRV9PTkxZID0gMjYyMTQ0OyAvLyAweDQwMDAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBsb25nIE1BWElNVU1fVkVSSUZJQ0FUSU9OX1RJTUVPVVQgPSAzNjAwMDAwTDsgLy8gMHgzNmVlODBMCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEVSTUlTU0lPTl9ERU5JRUQgPSAtMTsgLy8gMHhmZmZmZmZmZgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFUk1JU1NJT05fR1JBTlRFRCA9IDA7IC8vIDB4MApAQCAtMjg4NDYsNiArMjg4NTIsMjc5IEBACiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uTWVzc2FnZShpbnQsIGludCwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpOwogICB9CiAKKyAgcHVibGljIGNsYXNzIEdMRVMzMiBleHRlbmRzIGFuZHJvaWQub3BlbmdsLkdMRVMzMSB7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kQmFycmllcigpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGludCwgaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xCbGVuZEVxdWF0aW9uaShpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kRnVuY1NlcGFyYXRlaShpbnQsIGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kRnVuY2koaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbENvbG9yTWFza2koaW50LCBib29sZWFuLCBib29sZWFuLCBib29sZWFuLCBib29sZWFuKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsQ29weUltYWdlU3ViRGF0YShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGVidWdNZXNzYWdlQ2FsbGJhY2soYW5kcm9pZC5vcGVuZ2wuR0xFUzMyLkRlYnVnUHJvYyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERlYnVnTWVzc2FnZUNvbnRyb2woaW50LCBpbnQsIGludCwgaW50LCBpbnRbXSwgaW50LCBib29sZWFuKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGVidWdNZXNzYWdlQ29udHJvbChpbnQsIGludCwgaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlciwgYm9vbGVhbik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERlYnVnTWVzc2FnZUluc2VydChpbnQsIGludCwgaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERpc2FibGVpKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleChpbnQsIGludCwgaW50LCBqYXZhLm5pby5CdWZmZXIsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoaW50LCBpbnQsIGludCwgamF2YS5uaW8uQnVmZmVyLCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChpbnQsIGludCwgaW50LCBpbnQsIGludCwgamF2YS5uaW8uQnVmZmVyLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xFbmFibGVpKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRnJhbWVidWZmZXJUZXh0dXJlKGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgaW50IGdsR2V0RGVidWdNZXNzYWdlTG9nKGludCwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBieXRlW10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgaW50IGdsR2V0RGVidWdNZXNzYWdlTG9nKGludCwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkJ5dGVCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmdbXSBnbEdldERlYnVnTWVzc2FnZUxvZyhpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmdbXSBnbEdldERlYnVnTWVzc2FnZUxvZyhpbnQsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgaW50IGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cygpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmcgZ2xHZXRPYmplY3RMYWJlbChpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyBnbEdldE9iamVjdFB0ckxhYmVsKGxvbmcpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGxvbmcgZ2xHZXRQb2ludGVydihpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySXVpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm1mdihpbnQsIGludCwgaW50LCBmbG9hdFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybWZ2KGludCwgaW50LCBpbnQsIGphdmEubmlvLkZsb2F0QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm1pdihpbnQsIGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm1pdihpbnQsIGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybXVpdihpbnQsIGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsR2V0blVuaWZvcm11aXYoaW50LCBpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBib29sZWFuIGdsSXNFbmFibGVkaShpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbE1pblNhbXBsZVNoYWRpbmcoZmxvYXQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xPYmplY3RMYWJlbChpbnQsIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsT2JqZWN0UHRyTGFiZWwobG9uZywgamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFBhdGNoUGFyYW1ldGVyaShpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFBvcERlYnVnR3JvdXAoKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUHJpbWl0aXZlQm91bmRpbmdCb3goZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUHVzaERlYnVnR3JvdXAoaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFJlYWRuUGl4ZWxzKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgamF2YS5uaW8uQnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsU2FtcGxlclBhcmFtZXRlcklpdihpbnQsIGludCwgaW50W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsU2FtcGxlclBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleEJ1ZmZlcihpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsVGV4QnVmZmVyUmFuZ2UoaW50LCBpbnQsIGludCwgaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleFBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBib29sZWFuKTsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9CVUZGRVIgPSAzMzUwNDsgLy8gMHg4MmUwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ0xBTVBfVE9fQk9SREVSID0gMzMwNjk7IC8vIDB4ODEyZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTE9SQlVSTiA9IDM3NTMwOyAvLyAweDkyOWEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT0xPUkRPREdFID0gMzc1Mjk7IC8vIDB4OTI5OQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwID0gMzc4MTk7IC8vIDB4OTNiYgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUgPSAzNzgxNjsgLy8gMHg5M2I4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiA9IDM3ODE3OyAvLyAweDkzYjkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4ID0gMzc4MTg7IC8vIDB4OTNiYQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwID0gMzc4MjA7IC8vIDB4OTNiYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyID0gMzc4MjE7IC8vIDB4OTNiZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCA9IDM3ODA4OyAvLyAweDkzYjAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQgPSAzNzgwOTsgLy8gMHg5M2IxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1ID0gMzc4MTA7IC8vIDB4OTNiMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSA9IDM3ODExOyAvLyAweDkzYjMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYgPSAzNzgxMjsgLy8gMHg5M2I0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1ID0gMzc4MTM7IC8vIDB4OTNiNQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiA9IDM3ODE0OyAvLyAweDkzYjYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDggPSAzNzgxNTsgLy8gMHg5M2I3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCA9IDM3ODUxOyAvLyAweDkzZGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUgPSAzNzg0ODsgLy8gMHg5M2Q4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2ID0gMzc4NDk7IC8vIDB4OTNkOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCA9IDM3ODUwOyAvLyAweDkzZGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwID0gMzc4NTI7IC8vIDB4OTNkYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIgPSAzNzg1MzsgLy8gMHg5M2RkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQgPSAzNzg0MDsgLy8gMHg5M2QwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQgPSAzNzg0MTsgLy8gMHg5M2QxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUgPSAzNzg0MjsgLy8gMHg5M2QyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUgPSAzNzg0MzsgLy8gMHg5M2QzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYgPSAzNzg0NDsgLy8gMHg5M2Q0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUgPSAzNzg0NTsgLy8gMHg5M2Q1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYgPSAzNzg0NjsgLy8gMHg5M2Q2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDggPSAzNzg0NzsgLy8gMHg5M2Q3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09OVEVYVF9GTEFHUyA9IDMzMzEwOyAvLyAweDgyMWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0ZMQUdfREVCVUdfQklUID0gMjsgLy8gMHgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09OVEVYVF9GTEFHX1JPQlVTVF9BQ0NFU1NfQklUID0gNDsgLy8gMHg0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09OVEVYVF9MT1NUID0gMTI4NzsgLy8gMHg1MDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9EQVJLRU4gPSAzNzUyNzsgLy8gMHg5Mjk3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04gPSAzMzM0ODsgLy8gMHg4MjQ0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTSA9IDMzMzQ5OyAvLyAweDgyNDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSCA9IDMzMzg5OyAvLyAweDgyNmQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMgPSAzNzE4OTsgLy8gMHg5MTQ1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEggPSAzMzM0NzsgLy8gMHg4MjQzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfT1VUUFVUID0gMzc2MDA7IC8vIDB4OTJlMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyA9IDMzMzQ2OyAvLyAweDgyNDIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TRVZFUklUWV9ISUdIID0gMzcxOTA7IC8vIDB4OTE0NgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX0xPVyA9IDM3MTkyOyAvLyAweDkxNDgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0gPSAzNzE5MTsgLy8gMHg5MTQ3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OID0gMzMzODc7IC8vIDB4ODI2YgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9BUEkgPSAzMzM1MDsgLy8gMHg4MjQ2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OID0gMzMzNTQ7IC8vIDB4ODI0YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9PVEhFUiA9IDMzMzU1OyAvLyAweDgyNGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSID0gMzMzNTI7IC8vIDB4ODI0OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSA9IDMzMzUzOyAvLyAweDgyNDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTSA9IDMzMzUxOyAvLyAweDgyNDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1IgPSAzMzM1NzsgLy8gMHg4MjRkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9FUlJPUiA9IDMzMzU2OyAvLyAweDgyNGMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX01BUktFUiA9IDMzMzg0OyAvLyAweDgyNjgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX09USEVSID0gMzMzNjE7IC8vIDB4ODI1MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UgPSAzMzM2MDsgLy8gMHg4MjUwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9QT1BfR1JPVVAgPSAzMzM4NjsgLy8gMHg4MjZhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSA9IDMzMzU5OyAvLyAweDgyNGYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX1BVU0hfR1JPVVAgPSAzMzM4NTsgLy8gMHg4MjY5CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1IgPSAzMzM1ODsgLy8gMHg4MjRlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRElGRkVSRU5DRSA9IDM3NTM0OyAvLyAweDkyOWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9FWENMVVNJT04gPSAzNzUzNjsgLy8gMHg5MmEwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRklSU1RfVkVSVEVYX0NPTlZFTlRJT04gPSAzNjQyOTsgLy8gMHg4ZTRkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBQ1RJT05BTF9FVkVOID0gMzY0NzY7IC8vIDB4OGU3YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUNUSU9OQUxfT0REID0gMzY0NzU7IC8vIDB4OGU3YgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMgPSAzNjQ0NTsgLy8gMHg4ZTVkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9MQVlFUkVEID0gMzYyNjM7IC8vIDB4OGRhNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTID0gMzc2NTA7IC8vIDB4OTMxMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTEFZRVJfVEFSR0VUUyA9IDM2MjY0OyAvLyAweDhkYTgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HRU9NRVRSWV9JTlBVVF9UWVBFID0gMzUwOTU7IC8vIDB4ODkxNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX09VVFBVVF9UWVBFID0gMzUwOTY7IC8vIDB4ODkxOAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1NIQURFUiA9IDM2MzEzOyAvLyAweDhkZDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HRU9NRVRSWV9TSEFERVJfQklUID0gNDsgLy8gMHg0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TID0gMzQ5NDM7IC8vIDB4ODg3ZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVCA9IDM1MDk0OyAvLyAweDg5MTYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HVUlMVFlfQ09OVEVYVF9SRVNFVCA9IDMzMzYzOyAvLyAweDgyNTMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9IQVJETElHSFQgPSAzNzUzMTsgLy8gMHg5MjliCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX0NPTE9SID0gMzc1NTE7IC8vIDB4OTJhZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hTTF9IVUUgPSAzNzU0OTsgLy8gMHg5MmFkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX0xVTUlOT1NJVFkgPSAzNzU1MjsgLy8gMHg5MmIwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX1NBVFVSQVRJT04gPSAzNzU1MDsgLy8gMHg5MmFlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU1BR0VfQlVGRkVSID0gMzY5NDU7IC8vIDB4OTA1MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lNQUdFX0NVQkVfTUFQX0FSUkFZID0gMzY5NDg7IC8vIDB4OTA1NAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOTk9DRU5UX0NPTlRFWFRfUkVTRVQgPSAzMzM2NDsgLy8gMHg4MjU0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX0lNQUdFX0JVRkZFUiA9IDM2OTU2OyAvLyAweDkwNWMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9JTlRfSU1BR0VfQ1VCRV9NQVBfQVJSQVkgPSAzNjk1OTsgLy8gMHg5MDVmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEVfQVJSQVkgPSAzNzEzMjsgLy8gMHg5MTBjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX1NBTVBMRVJfQlVGRkVSID0gMzYzMDQ7IC8vIDB4OGRkMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZID0gMzY4Nzg7IC8vIDB4OTAwZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lTT0xJTkVTID0gMzY0NzQ7IC8vIDB4OGU3YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lTX1BFUl9QQVRDSCA9IDM3NjA3OyAvLyAweDkyZTcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MQVNUX1ZFUlRFWF9DT05WRU5USU9OID0gMzY0MzA7IC8vIDB4OGU0ZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVggPSAzMzM3NDsgLy8gMHg4MjVlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTElHSFRFTiA9IDM3NTI4OyAvLyAweDkyOTgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MSU5FU19BREpBQ0VOQ1kgPSAxMDsgLy8gMHhhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kgPSAxMTsgLy8gMHhiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTE9TRV9DT05URVhUX09OX1JFU0VUID0gMzMzNjI7IC8vIDB4ODI1MgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNTM3ODsgLy8gMHg4YTMyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNjM4MjsgLy8gMHg4ZTFlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNjM4MzsgLy8gMHg4ZTFmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIID0gMzMzODg7IC8vIDB4ODI2YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMgPSAzNzE4ODsgLy8gMHg5MTQ0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIID0gMzcxODc7IC8vIDB4OTE0MworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCA9IDM2NDQ0OyAvLyAweDhlNWMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTID0gMzc2NTU7IC8vIDB4OTMxNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMgPSAzNzU4OTsgLy8gMHg5MmQ1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgPSAzNzU4MzsgLy8gMHg5MmNmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TID0gMzcwNjk7IC8vIDB4OTBjZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTID0gMzcxNTU7IC8vIDB4OTEyMworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUyA9IDM3MTU2OyAvLyAweDkxMjQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTID0gMzYzMjA7IC8vIDB4OGRlMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMgPSAzNjQ0MjsgLy8gMHg4ZTVhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyA9IDM3MDc5OyAvLyAweDkwZDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDM1ODgxOyAvLyAweDhjMjkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgPSAzNjMyMTsgLy8gMHg4ZGUxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTID0gMzUzNzI7IC8vIDB4OGEyYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMgPSAzNjMxOTsgLy8gMHg4ZGRmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0xBQkVMX0xFTkdUSCA9IDMzNTEyOyAvLyAweDgyZTgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfUEFUQ0hfVkVSVElDRVMgPSAzNjQ3NzsgLy8gMHg4ZTdkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMgPSAzNzU4NzsgLy8gMHg5MmQzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTID0gMzc1ODE7IC8vIDB4OTJjZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMgPSAzNzA2NzsgLy8gMHg5MGNiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTID0gMzQ5MjQ7IC8vIDB4ODg2YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMgPSAzNjQ4MzsgLy8gMHg4ZTgzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MgPSAzNzA4MDsgLy8gMHg5MGQ4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMzY0ODE7IC8vIDB4OGU4MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgPSAzNjQ4NTsgLy8gMHg4ZTg1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyA9IDM2NDg5OyAvLyAweDhlODkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2NDc5OyAvLyAweDhlN2YKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyA9IDM3NTg4OyAvLyAweDkyZDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgPSAzNzU4MjsgLy8gMHg5MmNlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUyA9IDM3MDY4OyAvLyAweDkwY2MKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMgPSAzNDkyNTsgLy8gMHg4ODZkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyA9IDM2NDg2OyAvLyAweDhlODYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUyA9IDM3MDgxOyAvLyAweDkwZDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAzNjQ4MjsgLy8gMHg4ZTgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUyA9IDM2NDkwOyAvLyAweDhlOGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2NDgwOyAvLyAweDhlODAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19HRU5fTEVWRUwgPSAzNjQ3ODsgLy8gMHg4ZTdlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUyA9IDM2NDg0OyAvLyAweDhlODQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRSA9IDM1ODgzOyAvLyAweDhjMmIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQgPSAzNjQ0MzsgLy8gMHg4ZTViCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFID0gMzU4OTU7IC8vIDB4OGMzNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJUExZID0gMzc1MjQ7IC8vIDB4OTI5NAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkgPSAzNzc2MjsgLy8gMHg5MzgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSA9IDM3NzYxOyAvLyAweDkzODEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9OT19SRVNFVF9OT1RJRklDQVRJT04gPSAzMzM3NzsgLy8gMHg4MjYxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfT1ZFUkxBWSA9IDM3NTI2OyAvLyAweDkyOTYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9QQVRDSEVTID0gMTQ7IC8vIDB4ZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BBVENIX1ZFUlRJQ0VTID0gMzY0NjY7IC8vIDB4OGU3MgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRVNfR0VORVJBVEVEID0gMzU5NzU7IC8vIDB4OGM4NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggPSAzNzU2NjsgLy8gMHg5MmJlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEID0gMzMzMTM7IC8vIDB4ODIyMQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BST0dSQU0gPSAzMzUwNjsgLy8gMHg4MmUyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJPR1JBTV9QSVBFTElORSA9IDMzNTA4OyAvLyAweDgyZTQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9RVUFEUyA9IDc7IC8vIDB4NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1FVRVJZID0gMzM1MDc7IC8vIDB4ODJlMworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfR0VPTUVUUllfU0hBREVSID0gMzc2NDE7IC8vIDB4OTMwOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfVEVTU19DT05UUk9MX1NIQURFUiA9IDM3NjM5OyAvLyAweDkzMDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9SRUZFUkVOQ0VEX0JZX1RFU1NfRVZBTFVBVElPTl9TSEFERVIgPSAzNzY0MDsgLy8gMHg5MzA4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZID0gMzMzNjY7IC8vIDB4ODI1NgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVIgPSAzMzUxMDsgLy8gMHg4MmU2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU0FNUExFUl8yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTMxOyAvLyAweDkxMGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TQU1QTEVSX0JVRkZFUiA9IDM2MjkwOyAvLyAweDhkYzIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZID0gMzY4NzY7IC8vIDB4OTAwYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVlfU0hBRE9XID0gMzY4Nzc7IC8vIDB4OTAwZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRV9TSEFESU5HID0gMzU4OTQ7IC8vIDB4OGMzNgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NDUkVFTiA9IDM3NTI1OyAvLyAweDkyOTUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TSEFERVIgPSAzMzUwNTsgLy8gMHg4MmUxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU09GVExJR0hUID0gMzc1MzI7IC8vIDB4OTI5YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NUQUNLX09WRVJGTE9XID0gMTI4MzsgLy8gMHg1MDMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TVEFDS19VTkRFUkZMT1cgPSAxMjg0OyAvLyAweDUwNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfQ09OVFJPTF9PVVRQVVRfVkVSVElDRVMgPSAzNjQ2OTsgLy8gMHg4ZTc1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19DT05UUk9MX1NIQURFUiA9IDM2NDg4OyAvLyAweDhlODgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0NPTlRST0xfU0hBREVSX0JJVCA9IDg7IC8vIDB4OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVIgPSAzNjQ4NzsgLy8gMHg4ZTg3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9CSVQgPSAxNjsgLy8gMHgxMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX01PREUgPSAzNjQ3MDsgLy8gMHg4ZTc2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19HRU5fUE9JTlRfTU9ERSA9IDM2NDczOyAvLyAweDhlNzkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0dFTl9TUEFDSU5HID0gMzY0NzE7IC8vIDB4OGU3NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX1ZFUlRFWF9PUkRFUiA9IDM2NDcyOyAvLyAweDhlNzgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZID0gMzcxMjI7IC8vIDB4OTEwMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTI1OyAvLyAweDkxMDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSID0gMzU4ODQ7IC8vIDB4OGMyYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWSA9IDM2ODc0OyAvLyAweDkwMGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JPUkRFUl9DT0xPUiA9IDQxMDA7IC8vIDB4MTAwNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSID0gMzU4ODI7IC8vIDB4OGMyYQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkcgPSAzNTg4MjsgLy8gMHg4YzJhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HID0gMzU4ODU7IC8vIDB4OGMyZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVCA9IDM3Mjc3OyAvLyAweDkxOWQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UID0gMzcyNzk7IC8vIDB4OTE5ZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX1NJWkUgPSAzNzI3ODsgLy8gMHg5MTllCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWSA9IDM2ODczOyAvLyAweDkwMDkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9UUklBTkdMRVNfQURKQUNFTkNZID0gMTI7IC8vIDB4YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWSA9IDEzOyAvLyAweGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTkRFRklORURfVkVSVEVYID0gMzMzNzY7IC8vIDB4ODI2MAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVCA9IDMzMzY1OyAvLyAweDgyNTUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfSU1BR0VfQlVGRkVSID0gMzY5Njc7IC8vIDB4OTA2NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWSA9IDM2OTcwOyAvLyAweDkwNmEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTMzOyAvLyAweDkxMGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9CVUZGRVIgPSAzNjMxMjsgLy8gMHg4ZGQ4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVkgPSAzNjg3OTsgLy8gMHg5MDBmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVkVSVEVYX0FSUkFZID0gMzI4ODQ7IC8vIDB4ODA3NAorICB9CisKKyAgcHVibGljIHN0YXRpYyBhYnN0cmFjdCBpbnRlcmZhY2UgR0xFUzMyLkRlYnVnUHJvYyB7CisgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uTWVzc2FnZShpbnQsIGludCwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpOworICB9CisKICAgcHVibGljIGNsYXNzIEdMRXhjZXB0aW9uIGV4dGVuZHMgamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gewogICAgIGN0b3IgcHVibGljIEdMRXhjZXB0aW9uKGludCk7CiAgICAgY3RvciBwdWJsaWMgR0xFeGNlcHRpb24oaW50LCBqYXZhLmxhbmcuU3RyaW5nKTsKQEAgLTMwODc4LDYgKzMxMTU3LDkgQEAKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8gYnVpbGQoKTsKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRDYXBhYmlsaXRpZXMoYW5kcm9pZC5wcmludC5QcmludGVyQ2FwYWJpbGl0aWVzSW5mbyk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0RGVzY3JpcHRpb24oamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKTsKKyAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRJY29uUmVzb3VyY2VJZChpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5wcmludC5QcmludGVySW5mby5CdWlsZGVyIHNldEluZm9JbnRlbnQoYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKTsKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRTdGF0dXMoaW50KTsKICAgfQpAQCAtMzA4OTgsNiArMzExODAsMTAgQEAKIAogcGFja2FnZSBhbmRyb2lkLnByaW50c2VydmljZSB7CiAKKyAgcHVibGljIGNsYXNzIEN1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2sgeworICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSWNvbik7CisgIH0KKwogICBwdWJsaWMgZmluYWwgY2xhc3MgUHJpbnREb2N1bWVudCB7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIGdldERhdGEoKTsKICAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnREb2N1bWVudEluZm8gZ2V0SW5mbygpOwpAQCAtMzA5NTMsNiArMzEyMzksNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc0Rlc3Ryb3llZCgpOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1ByaW50ZXJEaXNjb3ZlcnlTdGFydGVkKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uRGVzdHJveSgpOworICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBvblJlcXVlc3RDdXN0b21QcmludGVySWNvbihhbmRyb2lkLnByaW50LlByaW50ZXJJZCwgYW5kcm9pZC5wcmludHNlcnZpY2UuQ3VzdG9tUHJpbnRlckljb25DYWxsYmFjayk7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RhcnRQcmludGVyRGlzY292ZXJ5KGphdmEudXRpbC5MaXN0PGFuZHJvaWQucHJpbnQuUHJpbnRlcklkPik7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RhcnRQcmludGVyU3RhdGVUcmFja2luZyhhbmRyb2lkLnByaW50LlByaW50ZXJJZCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RvcFByaW50ZXJEaXNjb3ZlcnkoKTsKQEAgLTMxMzIxLDYgKzMxNjA4LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgR0VPQ09ERURfTE9DQVRJT04gPSAiZ2VvY29kZWRfbG9jYXRpb24iOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOQ09NSU5HX1RZUEUgPSAxOyAvLyAweDEKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgSVNfUkVBRCA9ICJpc19yZWFkIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTEFTVF9NT0RJRklFRCA9ICJsYXN0X21vZGlmaWVkIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTElNSVRfUEFSQU1fS0VZID0gImxpbWl0IjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSVNTRURfVFlQRSA9IDM7IC8vIDB4MwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBORVcgPSAibmV3IjsKQEAgLTMzNzI0LDYgKzM0MDEyLDcgQEAKIAogICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIFZvaWNlbWFpbENvbnRyYWN0LlN0YXR1cyBpbXBsZW1lbnRzIGFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMgewogICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGFuZHJvaWQubmV0LlVyaSBidWlsZFNvdXJjZVVyaShqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIHNldFF1b3RhKGFuZHJvaWQuY29udGVudC5Db250ZXh0LCBhbmRyb2lkLnRlbGVjb20uUGhvbmVBY2NvdW50SGFuZGxlLCBpbnQsIGludCk7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIENPTkZJR1VSQVRJT05fU1RBVEUgPSAiY29uZmlndXJhdGlvbl9zdGF0ZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09ORklHVVJBVElPTl9TVEFURV9DQU5fQkVfQ09ORklHVVJFRCA9IDI7IC8vIDB4MgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTkZJR1VSQVRJT05fU1RBVEVfTk9UX0NPTkZJR1VSRUQgPSAxOyAvLyAweDEKQEAgLTMzNzQwLDYgKzM0MDI5LDkgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT1RJRklDQVRJT05fQ0hBTk5FTF9TVEFURV9PSyA9IDA7IC8vIDB4MAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBQSE9ORV9BQ0NPVU5UX0NPTVBPTkVOVF9OQU1FID0gInBob25lX2FjY291bnRfY29tcG9uZW50X25hbWUiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBQSE9ORV9BQ0NPVU5UX0lEID0gInBob25lX2FjY291bnRfaWQiOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBRVU9UQV9PQ0NVUElFRCA9ICJxdW90YV9vY2N1cGllZCI7CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFFVT1RBX1RPVEFMID0gInF1b3RhX3RvdGFsIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRVU9UQV9VTkFWQUlMQUJMRSA9IC0xOyAvLyAweGZmZmZmZmZmCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFNFVFRJTkdTX1VSSSA9ICJzZXR0aW5nc191cmkiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBTT1VSQ0VfUEFDS0FHRSA9ICJzb3VyY2VfcGFja2FnZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFZPSUNFTUFJTF9BQ0NFU1NfVVJJID0gInZvaWNlbWFpbF9hY2Nlc3NfdXJpIjsKQEAgLTMzNzU2LDYgKzM0MDQ4LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgSEFTX0NPTlRFTlQgPSAiaGFzX2NvbnRlbnQiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBJU19SRUFEID0gImlzX3JlYWQiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBJVEVNX1RZUEUgPSAidm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vdm9pY2VtYWlsIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTEFTVF9NT0RJRklFRCA9ICJsYXN0X21vZGlmaWVkIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTUlNRV9UWVBFID0gIm1pbWVfdHlwZSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIE5VTUJFUiA9ICJudW1iZXIiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBQSE9ORV9BQ0NPVU5UX0NPTVBPTkVOVF9OQU1FID0gInN1YnNjcmlwdGlvbl9jb21wb25lbnRfbmFtZSI7CkBAIC0zNTQwMCw2ICszNTY5Myw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCB2b2lkIHNldE5vdGlmaWNhdGlvbnNTaG93bihqYXZhLmxhbmcuU3RyaW5nW10pOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCBzZXRPbk5vdGlmaWNhdGlvblBvc3RlZFRyaW0oaW50KTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgdW5yZWdpc3RlckFzU3lzdGVtU2VydmljZSgpIHRocm93cyBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgQ0FURUdPUllfVlJfTk9USUZJQ0FUSU9OUyA9ICJhbmRyb2lkLmludGVudC5jYXRlZ29yeS52ci5ub3RpZmljYXRpb25zIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBISU5UX0hPU1RfRElTQUJMRV9FRkZFQ1RTID0gMTsgLy8gMHgxCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5URVJSVVBUSU9OX0ZJTFRFUl9BTEFSTVMgPSA0OyAvLyAweDQKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlRFUlJVUFRJT05fRklMVEVSX0FMTCA9IDE7IC8vIDB4MQpAQCAtNDE2NjUsNyArNDE5NTksNiBAQAogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBnZXRSZXN1bHQoKTsKICAgICBtZXRob2QgcHVibGljIGZsb2F0IGdldFgoKTsKICAgICBtZXRob2QgcHVibGljIGZsb2F0IGdldFkoKTsKLSAgICBtZXRob2QgcHVibGljIGFuZHJvaWQudmlldy5Ecm9wUGVybWlzc2lvbnMgcmVxdWVzdERyb3BQZXJtaXNzaW9ucygpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKGFuZHJvaWQub3MuUGFyY2VsLCBpbnQpOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDVElPTl9EUkFHX0VOREVEID0gNDsgLy8gMHg0CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUNUSU9OX0RSQUdfRU5URVJFRCA9IDU7IC8vIDB4NQpAQCAtNDI2MDMsNiArNDI4OTYsOCBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfTFRSSUdHRVIgPSAxNzsgLy8gMHgxMQogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfT1JJRU5UQVRJT04gPSA4OyAvLyAweDgKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1BSRVNTVVJFID0gMjsgLy8gMHgyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SRUxBVElWRV9YID0gMjc7IC8vIDB4MWIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1JFTEFUSVZFX1kgPSAyODsgLy8gMHgxYwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfUlRSSUdHRVIgPSAxODsgLy8gMHgxMgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfUlVEREVSID0gMjA7IC8vIDB4MTQKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1JYID0gMTI7IC8vIDB4YwpAQCAtNDMxMzgsNiArNDM0MzMsNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBoYXNOZXN0ZWRTY3JvbGxpbmdQYXJlbnQoKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gaGFzT25DbGlja0xpc3RlbmVycygpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBoYXNPdmVybGFwcGluZ1JlbmRlcmluZygpOworICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBoYXNQb2ludGVyQ2FwdHVyZSgpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBoYXNUcmFuc2llbnRTdGF0ZSgpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBoYXNXaW5kb3dGb2N1cygpOwogICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGFuZHJvaWQudmlldy5WaWV3IGluZmxhdGUoYW5kcm9pZC5jb250ZW50LkNvbnRleHQsIGludCwgYW5kcm9pZC52aWV3LlZpZXdHcm91cCk7CkBAIC00MzI2NCw2ICs0MzU2MCw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHBvc3RPbkFuaW1hdGlvbihqYXZhLmxhbmcuUnVubmFibGUpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBwb3N0T25BbmltYXRpb25EZWxheWVkKGphdmEubGFuZy5SdW5uYWJsZSwgbG9uZyk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHJlZnJlc2hEcmF3YWJsZVN0YXRlKCk7CisgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiByZW1vdmVDYWxsYmFja3MoamF2YS5sYW5nLlJ1bm5hYmxlKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgcmVtb3ZlT25BdHRhY2hTdGF0ZUNoYW5nZUxpc3RlbmVyKGFuZHJvaWQudmlldy5WaWV3Lk9uQXR0YWNoU3RhdGVDaGFuZ2VMaXN0ZW5lcik7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHJlbW92ZU9uTGF5b3V0Q2hhbmdlTGlzdGVuZXIoYW5kcm9pZC52aWV3LlZpZXcuT25MYXlvdXRDaGFuZ2VMaXN0ZW5lcik7CkBAIC00MzM2NCw2ICs0MzY2MSw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFBhZGRpbmdSZWxhdGl2ZShpbnQsIGludCwgaW50LCBpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRQaXZvdFgoZmxvYXQpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRQaXZvdFkoZmxvYXQpOworICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRQb2ludGVyQ2FwdHVyZSgpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRQb2ludGVySWNvbihhbmRyb2lkLnZpZXcuUG9pbnRlckljb24pOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRQcmVzc2VkKGJvb2xlYW4pOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCBzZXRSaWdodChpbnQpOwpAQCAtNjIwOTEsOCArNjIzODksOCBAQAogICAgIG1ldGhvZCBwdWJsaWMgamF2YS5sYW5nLlN0cmluZ0J1ZmZlciBhcHBlbmRUYWlsKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpOwogICAgIG1ldGhvZCBwdWJsaWMgaW50IGVuZCgpOwogICAgIG1ldGhvZCBwdWJsaWMgaW50IGVuZChpbnQpOwotICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBmaW5kKGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGZpbmQoKTsKKyAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gZmluZChpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBncm91cCgpOwogICAgIG1ldGhvZCBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBncm91cChpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgaW50IGdyb3VwQ291bnQoKTsKQEAgLTYyMTIwLDggKzYyNDE4LDggQEAKICAgfQogCiAgIHB1YmxpYyBmaW5hbCBjbGFzcyBQYXR0ZXJuIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuIGNvbXBpbGUoamF2YS5sYW5nLlN0cmluZywgaW50KSB0aHJvd3MgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm5TeW50YXhFeGNlcHRpb247CiAgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4gY29tcGlsZShqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBqYXZhLnV0aWwucmVnZXguUGF0dGVybiBjb21waWxlKGphdmEubGFuZy5TdHJpbmcsIGludCkgdGhyb3dzIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuU3ludGF4RXhjZXB0aW9uOwogICAgIG1ldGhvZCBwdWJsaWMgaW50IGZsYWdzKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBqYXZhLnV0aWwucmVnZXguTWF0Y2hlciBtYXRjaGVyKGphdmEubGFuZy5DaGFyU2VxdWVuY2UpOwogICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGJvb2xlYW4gbWF0Y2hlcyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKTsKQEAgLTYyMTM2LDYgKzYyNDM0LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMSVRFUkFMID0gMTY7IC8vIDB4MTAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNVUxUSUxJTkUgPSA4OyAvLyAweDgKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTklDT0RFX0NBU0UgPSA2NDsgLy8gMHg0MAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOSUNPREVfQ0hBUkFDVEVSX0NMQVNTID0gMjU2OyAvLyAweDEwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOSVhfTElORVMgPSAxOyAvLyAweDEKICAgfQogCmRpZmYgLS1naXQgYS9hcGkvdGVzdC1jdXJyZW50LnR4dCBiL2FwaS90ZXN0LWN1cnJlbnQudHh0CmluZGV4IGVjY2Q4YjAuLjQyYTZhODYgMTAwNjQ0Ci0tLSBhL2FwaS90ZXN0LWN1cnJlbnQudHh0CisrKyBiL2FwaS90ZXN0LWN1cnJlbnQudHh0CkBAIC0zNTA0LDYgKzM1MDQsNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiByZWxlYXNlSW5zdGFuY2UoKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIGRlcHJlY2F0ZWQgdm9pZCByZW1vdmVEaWFsb2coaW50KTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgcmVwb3J0RnVsbHlEcmF3bigpOworICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC52aWV3LkRyb3BQZXJtaXNzaW9ucyByZXF1ZXN0RHJvcFBlcm1pc3Npb25zKGFuZHJvaWQudmlldy5EcmFnRXZlbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbnMoamF2YS5sYW5nLlN0cmluZ1tdLCBpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0VmlzaWJsZUJlaGluZChib29sZWFuKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIGJvb2xlYW4gcmVxdWVzdFdpbmRvd0ZlYXR1cmUoaW50KTsKQEAgLTM1MzgsNiArMzUzOSw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyBkZXByZWNhdGVkIHZvaWQgc2V0VGl0bGVDb2xvcihpbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCBzZXRWaXNpYmxlKGJvb2xlYW4pOwogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCBzZXRWb2x1bWVDb250cm9sU3RyZWFtKGludCk7CisgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFZyTW9kZShib29sZWFuKTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gc2hvdWxkU2hvd1JlcXVlc3RQZXJtaXNzaW9uUmF0aW9uYWxlKGphdmEubGFuZy5TdHJpbmcpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBzaG91bGRVcFJlY3JlYXRlVGFzayhhbmRyb2lkLmNvbnRlbnQuSW50ZW50KTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gc2hvd0Fzc2lzdChhbmRyb2lkLm9zLkJ1bmRsZSk7CkBAIC04OTkzLDYgKzg5OTUsNyBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfQUxXQVlTX1JFVEFJTl9UQVNLX1NUQVRFID0gODsgLy8gMHg4CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19BVVRPX1JFTU9WRV9GUk9NX1JFQ0VOVFMgPSA4MTkyOyAvLyAweDIwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIID0gNDsgLy8gMHg0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19FTkFCTEVfVlJfTU9ERSA9IDMyNzY4OyAvLyAweDgwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0VYQ0xVREVfRlJPTV9SRUNFTlRTID0gMzI7IC8vIDB4MjAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUyA9IDI1NjsgLy8gMHgxMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZJTklTSF9PTl9UQVNLX0xBVU5DSCA9IDI7IC8vIDB4MgpAQCAtOTU1Niw2ICs5NTU5LDcgQEAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9VU0JfQUNDRVNTT1JZID0gImFuZHJvaWQuaGFyZHdhcmUudXNiLmFjY2Vzc29yeSI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfVVNCX0hPU1QgPSAiYW5kcm9pZC5oYXJkd2FyZS51c2IuaG9zdCI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEZFQVRVUkVfVkVSSUZJRURfQk9PVCA9ICJhbmRyb2lkLnNvZnR3YXJlLnZlcmlmaWVkX2Jvb3QiOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBGRUFUVVJFX1ZSX01PREUgPSAiYW5kcm9pZC5zb2Z0d2FyZS52ci5tb2RlIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9XQVRDSCA9ICJhbmRyb2lkLmhhcmR3YXJlLnR5cGUud2F0Y2giOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBGRUFUVVJFX1dFQlZJRVcgPSAiYW5kcm9pZC5zb2Z0d2FyZS53ZWJ2aWV3IjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgRkVBVFVSRV9XSUZJID0gImFuZHJvaWQuaGFyZHdhcmUud2lmaSI7CkBAIC05NTY0LDcgKzk1NjgsNiBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9DT05GSUdVUkFUSU9OUyA9IDE2Mzg0OyAvLyAweDQwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfRElTQUJMRURfQ09NUE9ORU5UUyA9IDUxMjsgLy8gMHgyMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRVRfRElTQUJMRURfVU5USUxfVVNFRF9DT01QT05FTlRTID0gMzI3Njg7IC8vIDB4ODAwMAotICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9FTkNSWVBUSU9OX1VOQVdBUkVfQ09NUE9ORU5UUyA9IDI2MjE0NDsgLy8gMHg0MDAwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9HSURTID0gMjU2OyAvLyAweDEwMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9JTlNUUlVNRU5UQVRJT04gPSAxNjsgLy8gMHgxMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9JTlRFTlRfRklMVEVSUyA9IDMyOyAvLyAweDIwCkBAIC05NTgwLDYgKzk1ODMsOSBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9VUklfUEVSTUlTU0lPTl9QQVRURVJOUyA9IDIwNDg7IC8vIDB4ODAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfQUxMID0gMTMxMDcyOyAvLyAweDIwMDAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfREVGQVVMVF9PTkxZID0gNjU1MzY7IC8vIDB4MTAwMDAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRDSF9FTkNSWVBUSU9OX0FXQVJFX0FORF9VTkFXQVJFID0gNzg2NDMyOyAvLyAweGMwMDAwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9PTkxZID0gNTI0Mjg4OyAvLyAweDgwMDAwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfRU5DUllQVElPTl9VTkFXQVJFX09OTFkgPSAyNjIxNDQ7IC8vIDB4NDAwMDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGxvbmcgTUFYSU1VTV9WRVJJRklDQVRJT05fVElNRU9VVCA9IDM2MDAwMDBMOyAvLyAweDM2ZWU4MEwKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQRVJNSVNTSU9OX0RFTklFRCA9IC0xOyAvLyAweGZmZmZmZmZmCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEVSTUlTU0lPTl9HUkFOVEVEID0gMDsgLy8gMHgwCkBAIC0yNjg0OSw2ICsyNjg1NSwyNzkgQEAKICAgICBtZXRob2QgcHVibGljIGFic3RyYWN0IHZvaWQgb25NZXNzYWdlKGludCwgaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk7CiAgIH0KIAorICBwdWJsaWMgY2xhc3MgR0xFUzMyIGV4dGVuZHMgYW5kcm9pZC5vcGVuZ2wuR0xFUzMxIHsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsQmxlbmRCYXJyaWVyKCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEJsZW5kRXF1YXRpb25pKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsQmxlbmRGdW5jU2VwYXJhdGVpKGludCwgaW50LCBpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsQmxlbmRGdW5jaShpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsQ29sb3JNYXNraShpbnQsIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4pOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xDb3B5SW1hZ2VTdWJEYXRhKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayhhbmRyb2lkLm9wZW5nbC5HTEVTMzIuRGVidWdQcm9jKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGVidWdNZXNzYWdlQ29udHJvbChpbnQsIGludCwgaW50LCBpbnQsIGludFtdLCBpbnQsIGJvb2xlYW4pOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sKGludCwgaW50LCBpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyLCBib29sZWFuKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGVidWdNZXNzYWdlSW5zZXJ0KGludCwgaW50LCBpbnQsIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRGlzYWJsZWkoaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4KGludCwgaW50LCBpbnQsIGphdmEubmlvLkJ1ZmZlciwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleChpbnQsIGludCwgaW50LCBqYXZhLm5pby5CdWZmZXIsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KGludCwgaW50LCBpbnQsIGludCwgaW50LCBqYXZhLm5pby5CdWZmZXIsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEVuYWJsZWkoaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xGcmFtZWJ1ZmZlclRleHR1cmUoaW50LCBpbnQsIGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2coaW50LCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGludFtdLCBpbnQsIGJ5dGVbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2coaW50LCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uQnl0ZUJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZ1tdIGdsR2V0RGVidWdNZXNzYWdlTG9nKGludCwgaW50W10sIGludCwgaW50W10sIGludCwgaW50W10sIGludCwgaW50W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZ1tdIGdsR2V0RGVidWdNZXNzYWdlTG9nKGludCwgamF2YS5uaW8uSW50QnVmZmVyLCBqYXZhLm5pby5JbnRCdWZmZXIsIGphdmEubmlvLkludEJ1ZmZlciwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBpbnQgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyBnbEdldE9iamVjdExhYmVsKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nIGdsR2V0T2JqZWN0UHRyTGFiZWwobG9uZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgbG9uZyBnbEdldFBvaW50ZXJ2KGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdihpbnQsIGludCwgaW50W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJaXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEdldFRleFBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2KGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybWZ2KGludCwgaW50LCBpbnQsIGZsb2F0W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEdldG5Vbmlmb3JtZnYoaW50LCBpbnQsIGludCwgamF2YS5uaW8uRmxvYXRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybWl2KGludCwgaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybWl2KGludCwgaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbEdldG5Vbmlmb3JtdWl2KGludCwgaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xHZXRuVW5pZm9ybXVpdihpbnQsIGludCwgaW50LCBqYXZhLm5pby5JbnRCdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZ2xJc0VuYWJsZWRpKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsTWluU2FtcGxlU2hhZGluZyhmbG9hdCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbE9iamVjdExhYmVsKGludCwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xPYmplY3RQdHJMYWJlbChsb25nLCBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUGF0Y2hQYXJhbWV0ZXJpKGludCwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUG9wRGVidWdHcm91cCgpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xQcmltaXRpdmVCb3VuZGluZ0JveChmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xQdXNoRGVidWdHcm91cChpbnQsIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsUmVhZG5QaXhlbHMoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBqYXZhLm5pby5CdWZmZXIpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xTYW1wbGVyUGFyYW1ldGVySWl2KGludCwgaW50LCBpbnRbXSwgaW50KTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsU2FtcGxlclBhcmFtZXRlcklpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsU2FtcGxlclBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGludFtdLCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsVGV4QnVmZmVyKGludCwgaW50LCBpbnQpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIHZvaWQgZ2xUZXhCdWZmZXJSYW5nZShpbnQsIGludCwgaW50LCBpbnQsIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleFBhcmFtZXRlcklpdihpbnQsIGludCwgaW50W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleFBhcmFtZXRlcklpdihpbnQsIGludCwgamF2YS5uaW8uSW50QnVmZmVyKTsKKyAgICBtZXRob2QgcHVibGljIHN0YXRpYyB2b2lkIGdsVGV4UGFyYW1ldGVySXVpdihpbnQsIGludCwgaW50W10sIGludCk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleFBhcmFtZXRlckl1aXYoaW50LCBpbnQsIGphdmEubmlvLkludEJ1ZmZlcik7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2xlYW4pOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0JVRkZFUiA9IDMzNTA0OyAvLyAweDgyZTAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DTEFNUF9UT19CT1JERVIgPSAzMzA2OTsgLy8gMHg4MTJkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09MT1JCVVJOID0gMzc1MzA7IC8vIDB4OTI5YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTE9SRE9ER0UgPSAzNzUyOTsgLy8gMHg5Mjk5CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAgPSAzNzgxOTsgLy8gMHg5M2JiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSA9IDM3ODE2OyAvLyAweDkzYjgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2ID0gMzc4MTc7IC8vIDB4OTNiOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDggPSAzNzgxODsgLy8gMHg5M2JhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAgPSAzNzgyMDsgLy8gMHg5M2JjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIgPSAzNzgyMTsgLy8gMHg5M2JkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0ID0gMzc4MDg7IC8vIDB4OTNiMAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCA9IDM3ODA5OyAvLyAweDkzYjEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUgPSAzNzgxMDsgLy8gMHg5M2IyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1ID0gMzc4MTE7IC8vIDB4OTNiMworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiA9IDM3ODEyOyAvLyAweDkzYjQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUgPSAzNzgxMzsgLy8gMHg5M2I1CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2ID0gMzc4MTQ7IC8vIDB4OTNiNgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCA9IDM3ODE1OyAvLyAweDkzYjcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwID0gMzc4NTE7IC8vIDB4OTNkYgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSA9IDM3ODQ4OyAvLyAweDkzZDgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYgPSAzNzg0OTsgLy8gMHg5M2Q5CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4ID0gMzc4NTA7IC8vIDB4OTNkYQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAgPSAzNzg1MjsgLy8gMHg5M2RjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiA9IDM3ODUzOyAvLyAweDkzZGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCA9IDM3ODQwOyAvLyAweDkzZDAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCA9IDM3ODQxOyAvLyAweDkzZDEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSA9IDM3ODQyOyAvLyAweDkzZDIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSA9IDM3ODQzOyAvLyAweDkzZDMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiA9IDM3ODQ0OyAvLyAweDkzZDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSA9IDM3ODQ1OyAvLyAweDkzZDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiA9IDM3ODQ2OyAvLyAweDkzZDYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OCA9IDM3ODQ3OyAvLyAweDkzZDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0ZMQUdTID0gMzMzMTA7IC8vIDB4ODIxZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTlRFWFRfRkxBR19ERUJVR19CSVQgPSAyOyAvLyAweDIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0ZMQUdfUk9CVVNUX0FDQ0VTU19CSVQgPSA0OyAvLyAweDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0xPU1QgPSAxMjg3OyAvLyAweDUwNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RBUktFTiA9IDM3NTI3OyAvLyAweDkyOTcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19DQUxMQkFDS19GVU5DVElPTiA9IDMzMzQ4OyAvLyAweDgyNDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19DQUxMQkFDS19VU0VSX1BBUkFNID0gMzMzNDk7IC8vIDB4ODI0NQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIID0gMzMzODk7IC8vIDB4ODI2ZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyA9IDM3MTg5OyAvLyAweDkxNDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSCA9IDMzMzQ3OyAvLyAweDgyNDMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19PVVRQVVQgPSAzNzYwMDsgLy8gMHg5MmUwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTID0gMzMzNDY7IC8vIDB4ODI0MgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX0hJR0ggPSAzNzE5MDsgLy8gMHg5MTQ2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU0VWRVJJVFlfTE9XID0gMzcxOTI7IC8vIDB4OTE0OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTSA9IDM3MTkxOyAvLyAweDkxNDcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04gPSAzMzM4NzsgLy8gMHg4MjZiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU09VUkNFX0FQSSA9IDMzMzUwOyAvLyAweDgyNDYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04gPSAzMzM1NDsgLy8gMHg4MjRhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU09VUkNFX09USEVSID0gMzMzNTU7IC8vIDB4ODI0YgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIgPSAzMzM1MjsgLy8gMHg4MjQ4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZID0gMzMzNTM7IC8vIDB4ODI0OQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNID0gMzMzNTE7IC8vIDB4ODI0NworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUiA9IDMzMzU3OyAvLyAweDgyNGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX0VSUk9SID0gMzMzNTY7IC8vIDB4ODI0YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfTUFSS0VSID0gMzMzODQ7IC8vIDB4ODI2OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfT1RIRVIgPSAzMzM2MTsgLy8gMHg4MjUxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRSA9IDMzMzYwOyAvLyAweDgyNTAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX1BPUF9HUk9VUCA9IDMzMzg2OyAvLyAweDgyNmEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZID0gMzMzNTk7IC8vIDB4ODI0ZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCA9IDMzMzg1OyAvLyAweDgyNjkKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUiA9IDMzMzU4OyAvLyAweDgyNGUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9ESUZGRVJFTkNFID0gMzc1MzQ7IC8vIDB4OTI5ZQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0VYQ0xVU0lPTiA9IDM3NTM2OyAvLyAweDkyYTAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9GSVJTVF9WRVJURVhfQ09OVkVOVElPTiA9IDM2NDI5OyAvLyAweDhlNGQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9GUkFDVElPTkFMX0VWRU4gPSAzNjQ3NjsgLy8gMHg4ZTdjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBQ1RJT05BTF9PREQgPSAzNjQ3NTsgLy8gMHg4ZTdiCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyA9IDM2NDQ1OyAvLyAweDhlNWQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRUQgPSAzNjI2MzsgLy8gMHg4ZGE3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9MQVlFUlMgPSAzNzY1MDsgLy8gMHg5MzEyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9MQVlFUl9UQVJHRVRTID0gMzYyNjQ7IC8vIDB4OGRhOAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX0lOUFVUX1RZUEUgPSAzNTA5NTsgLy8gMHg4OTE3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfR0VPTUVUUllfT1VUUFVUX1RZUEUgPSAzNTA5NjsgLy8gMHg4OTE4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfR0VPTUVUUllfU0hBREVSID0gMzYzMTM7IC8vIDB4OGRkOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1NIQURFUl9CSVQgPSA0OyAvLyAweDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMgPSAzNDk0MzsgLy8gMHg4ODdmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfR0VPTUVUUllfVkVSVElDRVNfT1VUID0gMzUwOTQ7IC8vIDB4ODkxNgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dVSUxUWV9DT05URVhUX1JFU0VUID0gMzMzNjM7IC8vIDB4ODI1MworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hBUkRMSUdIVCA9IDM3NTMxOyAvLyAweDkyOWIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9IU0xfQ09MT1IgPSAzNzU1MTsgLy8gMHg5MmFmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSFNMX0hVRSA9IDM3NTQ5OyAvLyAweDkyYWQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9IU0xfTFVNSU5PU0lUWSA9IDM3NTUyOyAvLyAweDkyYjAKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9IU0xfU0FUVVJBVElPTiA9IDM3NTUwOyAvLyAweDkyYWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9JTUFHRV9CVUZGRVIgPSAzNjk0NTsgLy8gMHg5MDUxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU1BR0VfQ1VCRV9NQVBfQVJSQVkgPSAzNjk0ODsgLy8gMHg5MDU0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5OT0NFTlRfQ09OVEVYVF9SRVNFVCA9IDMzMzY0OyAvLyAweDgyNTQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9JTlRfSU1BR0VfQlVGRkVSID0gMzY5NTY7IC8vIDB4OTA1YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWSA9IDM2OTU5OyAvLyAweDkwNWYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRV9BUlJBWSA9IDM3MTMyOyAvLyAweDkxMGMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9JTlRfU0FNUExFUl9CVUZGRVIgPSAzNjMwNDsgLy8gMHg4ZGQwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSU5UX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVkgPSAzNjg3ODsgLy8gMHg5MDBlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSVNPTElORVMgPSAzNjQ3NDsgLy8gMHg4ZTdhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfSVNfUEVSX1BBVENIID0gMzc2MDc7IC8vIDB4OTJlNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xBU1RfVkVSVEVYX0NPTlZFTlRJT04gPSAzNjQzMDsgLy8gMHg4ZTRlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWCA9IDMzMzc0OyAvLyAweDgyNWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MSUdIVEVOID0gMzc1Mjg7IC8vIDB4OTI5OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xJTkVTX0FESkFDRU5DWSA9IDEwOyAvLyAweGEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MSU5FX1NUUklQX0FESkFDRU5DWSA9IDExOyAvLyAweGIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVQgPSAzMzM2MjsgLy8gMHg4MjUyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM1Mzc4OyAvLyAweDhhMzIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2MzgyOyAvLyAweDhlMWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2MzgzOyAvLyAweDhlMWYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEggPSAzMzM4ODsgLy8gMHg4MjZjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyA9IDM3MTg4OyAvLyAweDkxNDQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEggPSAzNzE4NzsgLy8gMHg5MTQzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUID0gMzY0NDQ7IC8vIDB4OGU1YworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMgPSAzNzY1NTsgLy8gMHg5MzE3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUyA9IDM3NTg5OyAvLyAweDkyZDUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyA9IDM3NTgzOyAvLyAweDkyY2YKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgPSAzNzA2OTsgLy8gMHg5MGNkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMgPSAzNzE1NTsgLy8gMHg5MTIzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTID0gMzcxNTY7IC8vIDB4OTEyNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMgPSAzNjMyMDsgLy8gMHg4ZGUwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyA9IDM2NDQyOyAvLyAweDhlNWEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTID0gMzcwNzk7IC8vIDB4OTBkNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTID0gMzU4ODE7IC8vIDB4OGMyOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyA9IDM2MzIxOyAvLyAweDhkZTEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MgPSAzNTM3MjsgLy8gMHg4YTJjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyA9IDM2MzE5OyAvLyAweDhkZGYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfTEFCRUxfTEVOR1RIID0gMzM1MTI7IC8vIDB4ODJlOAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9QQVRDSF9WRVJUSUNFUyA9IDM2NDc3OyAvLyAweDhlN2QKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyA9IDM3NTg3OyAvLyAweDkyZDMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgPSAzNzU4MTsgLy8gMHg5MmNkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyA9IDM3MDY3OyAvLyAweDkwY2IKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMgPSAzNDkyNDsgLy8gMHg4ODZjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUyA9IDM2NDgzOyAvLyAweDhlODMKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUyA9IDM3MDgwOyAvLyAweDkwZDgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAzNjQ4MTsgLy8gMHg4ZTgxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyA9IDM2NDg1OyAvLyAweDhlODUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTID0gMzY0ODk7IC8vIDB4OGU4OQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTID0gMzY0Nzk7IC8vIDB4OGU3ZgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTID0gMzc1ODg7IC8vIDB4OTJkNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyA9IDM3NTgyOyAvLyAweDkyY2UKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TID0gMzcwNjg7IC8vIDB4OTBjYworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyA9IDM0OTI1OyAvLyAweDg4NmQKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTID0gMzY0ODY7IC8vIDB4OGU4NgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTID0gMzcwODE7IC8vIDB4OTBkOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyA9IDM2NDgyOyAvLyAweDhlODIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTID0gMzY0OTA7IC8vIDB4OGU4YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTID0gMzY0ODA7IC8vIDB4OGU4MAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0dFTl9MRVZFTCA9IDM2NDc4OyAvLyAweDhlN2UKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTID0gMzY0ODQ7IC8vIDB4OGU4NAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFID0gMzU4ODM7IC8vIDB4OGMyYgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCA9IDM2NDQzOyAvLyAweDhlNWIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUgPSAzNTg5NTsgLy8gMHg4YzM3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTVVMVElQTFkgPSAzNzUyNDsgLy8gMHg5Mjk0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSA9IDM3NzYyOyAvLyAweDkzODIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFID0gMzc3NjE7IC8vIDB4OTM4MQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX05PX1JFU0VUX05PVElGSUNBVElPTiA9IDMzMzc3OyAvLyAweDgyNjEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9PVkVSTEFZID0gMzc1MjY7IC8vIDB4OTI5NgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BBVENIRVMgPSAxNDsgLy8gMHhlCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUEFUQ0hfVkVSVElDRVMgPSAzNjQ2NjsgLy8gMHg4ZTcyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJJTUlUSVZFU19HRU5FUkFURUQgPSAzNTk3NTsgLy8gMHg4Yzg3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCA9IDM3NTY2OyAvLyAweDkyYmUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQgPSAzMzMxMzsgLy8gMHg4MjIxCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUFJPR1JBTSA9IDMzNTA2OyAvLyAweDgyZTIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9QUk9HUkFNX1BJUEVMSU5FID0gMzM1MDg7IC8vIDB4ODJlNAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1FVQURTID0gNzsgLy8gMHg3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUVVFUlkgPSAzMzUwNzsgLy8gMHg4MmUzCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUkVGRVJFTkNFRF9CWV9HRU9NRVRSWV9TSEFERVIgPSAzNzY0MTsgLy8gMHg5MzA5CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfUkVGRVJFTkNFRF9CWV9URVNTX0NPTlRST0xfU0hBREVSID0gMzc2Mzk7IC8vIDB4OTMwNworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfVEVTU19FVkFMVUFUSU9OX1NIQURFUiA9IDM3NjQwOyAvLyAweDkzMDgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kgPSAzMzM2NjsgLy8gMHg4MjU2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU0FNUExFUiA9IDMzNTEwOyAvLyAweDgyZTYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TQU1QTEVSXzJEX01VTFRJU0FNUExFX0FSUkFZID0gMzcxMzE7IC8vIDB4OTEwYgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQlVGRkVSID0gMzYyOTA7IC8vIDB4OGRjMgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVkgPSAzNjg3NjsgLy8gMHg5MDBjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU0FNUExFUl9DVUJFX01BUF9BUlJBWV9TSEFET1cgPSAzNjg3NzsgLy8gMHg5MDBkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU0FNUExFX1NIQURJTkcgPSAzNTg5NDsgLy8gMHg4YzM2CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU0NSRUVOID0gMzc1MjU7IC8vIDB4OTI5NQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NIQURFUiA9IDMzNTA1OyAvLyAweDgyZTEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9TT0ZUTElHSFQgPSAzNzUzMjsgLy8gMHg5MjljCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfU1RBQ0tfT1ZFUkZMT1cgPSAxMjgzOyAvLyAweDUwMworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NUQUNLX1VOREVSRkxPVyA9IDEyODQ7IC8vIDB4NTA0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19DT05UUk9MX09VVFBVVF9WRVJUSUNFUyA9IDM2NDY5OyAvLyAweDhlNzUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0NPTlRST0xfU0hBREVSID0gMzY0ODg7IC8vIDB4OGU4OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfQ09OVFJPTF9TSEFERVJfQklUID0gODsgLy8gMHg4CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUiA9IDM2NDg3OyAvLyAweDhlODcKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSX0JJVCA9IDE2OyAvLyAweDEwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19HRU5fTU9ERSA9IDM2NDcwOyAvLyAweDhlNzYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVNTX0dFTl9QT0lOVF9NT0RFID0gMzY0NzM7IC8vIDB4OGU3OQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX1NQQUNJTkcgPSAzNjQ3MTsgLy8gMHg4ZTc3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19HRU5fVkVSVEVYX09SREVSID0gMzY0NzI7IC8vIDB4OGU3OAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkgPSAzNzEyMjsgLy8gMHg5MTAyCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZID0gMzcxMjU7IC8vIDB4OTEwNQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR19CVUZGRVIgPSAzNTg4NDsgLy8gMHg4YzJjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZID0gMzY4NzQ7IC8vIDB4OTAwYQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQk9SREVSX0NPTE9SID0gNDEwMDsgLy8gMHgxMDA0CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CVUZGRVIgPSAzNTg4MjsgLy8gMHg4YzJhCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyA9IDM1ODgyOyAvLyAweDhjMmEKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0JVRkZFUl9EQVRBX1NUT1JFX0JJTkRJTkcgPSAzNTg4NTsgLy8gMHg4YzJkCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUID0gMzcyNzc7IC8vIDB4OTE5ZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQgPSAzNzI3OTsgLy8gMHg5MTlmCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVYVFVSRV9CVUZGRVJfU0laRSA9IDM3Mjc4OyAvLyAweDkxOWUKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZID0gMzY4NzM7IC8vIDB4OTAwOQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RSSUFOR0xFU19BREpBQ0VOQ1kgPSAxMjsgLy8gMHhjCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZID0gMTM7IC8vIDB4ZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOREVGSU5FRF9WRVJURVggPSAzMzM3NjsgLy8gMHg4MjYwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVU5LTk9XTl9DT05URVhUX1JFU0VUID0gMzMzNjU7IC8vIDB4ODI1NQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9CVUZGRVIgPSAzNjk2NzsgLy8gMHg5MDY3CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVU5TSUdORURfSU5UX0lNQUdFX0NVQkVfTUFQX0FSUkFZID0gMzY5NzA7IC8vIDB4OTA2YQorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFX0FSUkFZID0gMzcxMzM7IC8vIDB4OTEwZAorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0JVRkZFUiA9IDM2MzEyOyAvLyAweDhkZDgKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFX01BUF9BUlJBWSA9IDM2ODc5OyAvLyAweDkwMGYKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9WRVJURVhfQVJSQVkgPSAzMjg4NDsgLy8gMHg4MDc0CisgIH0KKworICBwdWJsaWMgc3RhdGljIGFic3RyYWN0IGludGVyZmFjZSBHTEVTMzIuRGVidWdQcm9jIHsKKyAgICBtZXRob2QgcHVibGljIGFic3RyYWN0IHZvaWQgb25NZXNzYWdlKGludCwgaW50LCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk7CisgIH0KKwogICBwdWJsaWMgY2xhc3MgR0xFeGNlcHRpb24gZXh0ZW5kcyBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiB7CiAgICAgY3RvciBwdWJsaWMgR0xFeGNlcHRpb24oaW50KTsKICAgICBjdG9yIHB1YmxpYyBHTEV4Y2VwdGlvbihpbnQsIGphdmEubGFuZy5TdHJpbmcpOwpAQCAtMjg4NTcsNiArMjkxMzYsNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5wcmludC5QcmludGVySWQgZ2V0SWQoKTsKICAgICBtZXRob2QgcHVibGljIGphdmEubGFuZy5TdHJpbmcgZ2V0TmFtZSgpOwogICAgIG1ldGhvZCBwdWJsaWMgaW50IGdldFN0YXR1cygpOworICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSBsb2FkSWNvbihhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoYW5kcm9pZC5vcy5QYXJjZWwsIGludCk7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvcjxhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvPiBDUkVBVE9SOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRVU19CVVNZID0gMjsgLy8gMHgyCkBAIC0yODg3MCw2ICsyOTE1MCw5IEBACiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvIGJ1aWxkKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0Q2FwYWJpbGl0aWVzKGFuZHJvaWQucHJpbnQuUHJpbnRlckNhcGFiaWxpdGllc0luZm8pOwogICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5wcmludC5QcmludGVySW5mby5CdWlsZGVyIHNldERlc2NyaXB0aW9uKGphdmEubGFuZy5TdHJpbmcpOworICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5wcmludC5QcmludGVySW5mby5CdWlsZGVyIHNldEhhc0N1c3RvbVByaW50ZXJJY29uKCk7CisgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0SWNvblJlc291cmNlSWQoaW50KTsKKyAgICBtZXRob2QgcHVibGljIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciBzZXRJbmZvSW50ZW50KGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQpOwogICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5wcmludC5QcmludGVySW5mby5CdWlsZGVyIHNldE5hbWUoamF2YS5sYW5nLlN0cmluZyk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIgc2V0U3RhdHVzKGludCk7CiAgIH0KQEAgLTI4ODkwLDYgKzI5MTczLDEwIEBACiAKIHBhY2thZ2UgYW5kcm9pZC5wcmludHNlcnZpY2UgewogCisgIHB1YmxpYyBjbGFzcyBDdXN0b21QcmludGVySWNvbkNhbGxiYWNrIHsKKyAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gb25DdXN0b21QcmludGVySWNvbkxvYWRlZChhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkljb24pOworICB9CisKICAgcHVibGljIGZpbmFsIGNsYXNzIFByaW50RG9jdW1lbnQgewogICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciBnZXREYXRhKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBhbmRyb2lkLnByaW50LlByaW50RG9jdW1lbnRJbmZvIGdldEluZm8oKTsKQEAgLTI4OTQ1LDYgKzI5MjMyLDcgQEAKICAgICBtZXRob2QgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNEZXN0cm95ZWQoKTsKICAgICBtZXRob2QgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNQcmludGVyRGlzY292ZXJ5U3RhcnRlZCgpOwogICAgIG1ldGhvZCBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvbkRlc3Ryb3koKTsKKyAgICBtZXRob2QgcHVibGljIHZvaWQgb25SZXF1ZXN0Q3VzdG9tUHJpbnRlckljb24oYW5kcm9pZC5wcmludC5QcmludGVySWQsIGFuZHJvaWQucHJpbnRzZXJ2aWNlLkN1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2spOwogICAgIG1ldGhvZCBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblN0YXJ0UHJpbnRlckRpc2NvdmVyeShqYXZhLnV0aWwuTGlzdDxhbmRyb2lkLnByaW50LlByaW50ZXJJZD4pOwogICAgIG1ldGhvZCBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblN0YXJ0UHJpbnRlclN0YXRlVHJhY2tpbmcoYW5kcm9pZC5wcmludC5QcmludGVySWQpOwogICAgIG1ldGhvZCBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblN0b3BQcmludGVyRGlzY292ZXJ5KCk7CkBAIC0yOTMxMyw2ICsyOTYwMSw3IEBACiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEdFT0NPREVEX0xPQ0FUSU9OID0gImdlb2NvZGVkX2xvY2F0aW9uIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTkNPTUlOR19UWVBFID0gMTsgLy8gMHgxCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIElTX1JFQUQgPSAiaXNfcmVhZCI7CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIExBU1RfTU9ESUZJRUQgPSAibGFzdF9tb2RpZmllZCI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIExJTUlUX1BBUkFNX0tFWSA9ICJsaW1pdCI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlTU0VEX1RZUEUgPSAzOyAvLyAweDMKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgTkVXID0gIm5ldyI7CkBAIC0zMTU4Myw2ICszMTg3Miw3IEBACiAKICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBWb2ljZW1haWxDb250cmFjdC5TdGF0dXMgaW1wbGVtZW50cyBhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIHsKICAgICBtZXRob2QgcHVibGljIHN0YXRpYyBhbmRyb2lkLm5ldC5VcmkgYnVpbGRTb3VyY2VVcmkoamF2YS5sYW5nLlN0cmluZyk7CisgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRRdW90YShhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCwgYW5kcm9pZC50ZWxlY29tLlBob25lQWNjb3VudEhhbmRsZSwgaW50LCBpbnQpOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBDT05GSUdVUkFUSU9OX1NUQVRFID0gImNvbmZpZ3VyYXRpb25fc3RhdGUiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTkZJR1VSQVRJT05fU1RBVEVfQ0FOX0JFX0NPTkZJR1VSRUQgPSAyOyAvLyAweDIKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT05GSUdVUkFUSU9OX1NUQVRFX05PVF9DT05GSUdVUkVEID0gMTsgLy8gMHgxCkBAIC0zMTU5OSw2ICszMTg4OSw5IEBACiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9USUZJQ0FUSU9OX0NIQU5ORUxfU1RBVEVfT0sgPSAwOyAvLyAweDAKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgUEhPTkVfQUNDT1VOVF9DT01QT05FTlRfTkFNRSA9ICJwaG9uZV9hY2NvdW50X2NvbXBvbmVudF9uYW1lIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgUEhPTkVfQUNDT1VOVF9JRCA9ICJwaG9uZV9hY2NvdW50X2lkIjsKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgUVVPVEFfT0NDVVBJRUQgPSAicXVvdGFfb2NjdXBpZWQiOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBRVU9UQV9UT1RBTCA9ICJxdW90YV90b3RhbCI7CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUVVPVEFfVU5BVkFJTEFCTEUgPSAtMTsgLy8gMHhmZmZmZmZmZgogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBTRVRUSU5HU19VUkkgPSAic2V0dGluZ3NfdXJpIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgU09VUkNFX1BBQ0tBR0UgPSAic291cmNlX3BhY2thZ2UiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBWT0lDRU1BSUxfQUNDRVNTX1VSSSA9ICJ2b2ljZW1haWxfYWNjZXNzX3VyaSI7CkBAIC0zMTYxNSw2ICszMTkwOCw3IEBACiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIEhBU19DT05URU5UID0gImhhc19jb250ZW50IjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgSVNfUkVBRCA9ICJpc19yZWFkIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgSVRFTV9UWVBFID0gInZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3ZvaWNlbWFpbCI7CisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIExBU1RfTU9ESUZJRUQgPSAibGFzdF9tb2RpZmllZCI7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIE1JTUVfVFlQRSA9ICJtaW1lX3R5cGUiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBOVU1CRVIgPSAibnVtYmVyIjsKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgUEhPTkVfQUNDT1VOVF9DT01QT05FTlRfTkFNRSA9ICJzdWJzY3JpcHRpb25fY29tcG9uZW50X25hbWUiOwpAQCAtMzMyNTQsNiArMzM1NDgsNyBAQAogICAgIG1ldGhvZCBwdWJsaWMgZmluYWwgdm9pZCByZXF1ZXN0SW50ZXJydXB0aW9uRmlsdGVyKGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCB2b2lkIHJlcXVlc3RMaXN0ZW5lckhpbnRzKGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCB2b2lkIHNldE5vdGlmaWNhdGlvbnNTaG93bihqYXZhLmxhbmcuU3RyaW5nW10pOworICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBDQVRFR09SWV9WUl9OT1RJRklDQVRJT05TID0gImFuZHJvaWQuaW50ZW50LmNhdGVnb3J5LnZyLm5vdGlmaWNhdGlvbnMiOwogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhJTlRfSE9TVF9ESVNBQkxFX0VGRkVDVFMgPSAxOyAvLyAweDEKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlRFUlJVUFRJT05fRklMVEVSX0FMQVJNUyA9IDQ7IC8vIDB4NAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVEVSUlVQVElPTl9GSUxURVJfQUxMID0gMTsgLy8gMHgxCkBAIC0zOTMxMyw3ICszOTYwOCw2IEBACiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGdldFJlc3VsdCgpOwogICAgIG1ldGhvZCBwdWJsaWMgZmxvYXQgZ2V0WCgpOwogICAgIG1ldGhvZCBwdWJsaWMgZmxvYXQgZ2V0WSgpOwotICAgIG1ldGhvZCBwdWJsaWMgYW5kcm9pZC52aWV3LkRyb3BQZXJtaXNzaW9ucyByZXF1ZXN0RHJvcFBlcm1pc3Npb25zKCk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoYW5kcm9pZC5vcy5QYXJjZWwsIGludCk7CiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUNUSU9OX0RSQUdfRU5ERUQgPSA0OyAvLyAweDQKICAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ1RJT05fRFJBR19FTlRFUkVEID0gNTsgLy8gMHg1CkBAIC00MDI1MSw2ICs0MDU0NSw4IEBACiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19MVFJJR0dFUiA9IDE3OyAvLyAweDExCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19PUklFTlRBVElPTiA9IDg7IC8vIDB4OAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfUFJFU1NVUkUgPSAyOyAvLyAweDIKKyAgICBmaWVsZCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1JFTEFUSVZFX1ggPSAyNzsgLy8gMHgxYgorICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfUkVMQVRJVkVfWSA9IDI4OyAvLyAweDFjCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SVFJJR0dFUiA9IDE4OyAvLyAweDEyCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SVURERVIgPSAyMDsgLy8gMHgxNAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFYSVNfUlggPSAxMjsgLy8gMHhjCkBAIC00MDc4Niw2ICs0MTA4Miw3IEBACiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGhhc05lc3RlZFNjcm9sbGluZ1BhcmVudCgpOwogICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBoYXNPbkNsaWNrTGlzdGVuZXJzKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGhhc092ZXJsYXBwaW5nUmVuZGVyaW5nKCk7CisgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGhhc1BvaW50ZXJDYXB0dXJlKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGhhc1RyYW5zaWVudFN0YXRlKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGhhc1dpbmRvd0ZvY3VzKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgYW5kcm9pZC52aWV3LlZpZXcgaW5mbGF0ZShhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCwgaW50LCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwKTsKQEAgLTQwOTEyLDYgKzQxMjA5LDcgQEAKICAgICBtZXRob2QgcHVibGljIHZvaWQgcG9zdE9uQW5pbWF0aW9uKGphdmEubGFuZy5SdW5uYWJsZSk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHBvc3RPbkFuaW1hdGlvbkRlbGF5ZWQoamF2YS5sYW5nLlJ1bm5hYmxlLCBsb25nKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgcmVmcmVzaERyYXdhYmxlU3RhdGUoKTsKKyAgICBtZXRob2QgcHVibGljIHZvaWQgcmVsZWFzZVBvaW50ZXJDYXB0dXJlKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIHJlbW92ZUNhbGxiYWNrcyhqYXZhLmxhbmcuUnVubmFibGUpOwogICAgIG1ldGhvZCBwdWJsaWMgdm9pZCByZW1vdmVPbkF0dGFjaFN0YXRlQ2hhbmdlTGlzdGVuZXIoYW5kcm9pZC52aWV3LlZpZXcuT25BdHRhY2hTdGF0ZUNoYW5nZUxpc3RlbmVyKTsKICAgICBtZXRob2QgcHVibGljIHZvaWQgcmVtb3ZlT25MYXlvdXRDaGFuZ2VMaXN0ZW5lcihhbmRyb2lkLnZpZXcuVmlldy5PbkxheW91dENoYW5nZUxpc3RlbmVyKTsKQEAgLTQxMDEyLDYgKzQxMzEwLDcgQEAKICAgICBtZXRob2QgcHVibGljIHZvaWQgc2V0UGFkZGluZ1JlbGF0aXZlKGludCwgaW50LCBpbnQsIGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFBpdm90WChmbG9hdCk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFBpdm90WShmbG9hdCk7CisgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFBvaW50ZXJDYXB0dXJlKCk7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFBvaW50ZXJJY29uKGFuZHJvaWQudmlldy5Qb2ludGVySWNvbik7CiAgICAgbWV0aG9kIHB1YmxpYyB2b2lkIHNldFByZXNzZWQoYm9vbGVhbik7CiAgICAgbWV0aG9kIHB1YmxpYyBmaW5hbCB2b2lkIHNldFJpZ2h0KGludCk7CkBAIC01OTQyMyw4ICs1OTcyMiw4IEBACiAgICAgbWV0aG9kIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIGFwcGVuZFRhaWwoamF2YS5sYW5nLlN0cmluZ0J1ZmZlcik7CiAgICAgbWV0aG9kIHB1YmxpYyBpbnQgZW5kKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBpbnQgZW5kKGludCk7Ci0gICAgbWV0aG9kIHB1YmxpYyBib29sZWFuIGZpbmQoaW50KTsKICAgICBtZXRob2QgcHVibGljIGJvb2xlYW4gZmluZCgpOworICAgIG1ldGhvZCBwdWJsaWMgYm9vbGVhbiBmaW5kKGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGdyb3VwKCk7CiAgICAgbWV0aG9kIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGdyb3VwKGludCk7CiAgICAgbWV0aG9kIHB1YmxpYyBpbnQgZ3JvdXBDb3VudCgpOwpAQCAtNTk0NTIsOCArNTk3NTEsOCBAQAogICB9CiAKICAgcHVibGljIGZpbmFsIGNsYXNzIFBhdHRlcm4gaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0gICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4gY29tcGlsZShqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIHRocm93cyBqYXZhLnV0aWwucmVnZXguUGF0dGVyblN5bnRheEV4Y2VwdGlvbjsKICAgICBtZXRob2QgcHVibGljIHN0YXRpYyBqYXZhLnV0aWwucmVnZXguUGF0dGVybiBjb21waWxlKGphdmEubGFuZy5TdHJpbmcpOworICAgIG1ldGhvZCBwdWJsaWMgc3RhdGljIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuIGNvbXBpbGUoamF2YS5sYW5nLlN0cmluZywgaW50KSB0aHJvd3MgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm5TeW50YXhFeGNlcHRpb247CiAgICAgbWV0aG9kIHB1YmxpYyBpbnQgZmxhZ3MoKTsKICAgICBtZXRob2QgcHVibGljIGphdmEudXRpbC5yZWdleC5NYXRjaGVyIG1hdGNoZXIoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSk7CiAgICAgbWV0aG9kIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBtYXRjaGVzKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DaGFyU2VxdWVuY2UpOwpAQCAtNTk0NjgsNiArNTk3NjcsNyBAQAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExJVEVSQUwgPSAxNjsgLy8gMHgxMAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1VTFRJTElORSA9IDg7IC8vIDB4OAogICAgIGZpZWxkIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOSUNPREVfQ0FTRSA9IDY0OyAvLyAweDQwCisgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVU5JQ09ERV9DSEFSQUNURVJfQ0xBU1MgPSAyNTY7IC8vIDB4MTAwCiAgICAgZmllbGQgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVU5JWF9MSU5FUyA9IDE7IC8vIDB4MQogICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5LmphdmEKaW5kZXggNjFmZDk1Mi4uODAwZWJjNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5LmphdmEKQEAgLTMxLDYgKzMxLDggQEAKIGltcG9ydCBhbmRyb2lkLnRyYW5zaXRpb24uVHJhbnNpdGlvbk1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkFycmF5TWFwOwogaW1wb3J0IGFuZHJvaWQudXRpbC5TdXBlck5vdENhbGxlZEV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuRHJhZ0V2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5Ecm9wUGVybWlzc2lvbnM7CiBpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvdy5XaW5kb3dDb250cm9sbGVyQ2FsbGJhY2s7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVG9vbGJhcjsKIApAQCAtNjAzOCw2ICs2MDQwLDIyIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogRW5hYmxlIG9yIGRpc2FibGUgdmlydHVhbCByZWFsaXR5IChWUikgbW9kZS4KKyAgICAgKgorICAgICAqIDxwPlZSIG1vZGUgaXMgYSBoaW50IHRvIEFuZHJvaWQgc3lzdGVtIHNlcnZpY2VzIHRvIHN3aXRjaCB0byBtb2RlcyBvcHRpbWl6ZWQgZm9yCisgICAgICogaGlnaC1wZXJmb3JtYW5jZSBzdGVyZW9zY29waWMgcmVuZGVyaW5nLjwvcD4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlbmFibGVkIHtAY29kZSB0cnVlfSB0byBlbmFibGUgdGhpcyBtb2RlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFZyTW9kZShib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuc2V0VnJNb2RlKG1Ub2tlbiwgZW5hYmxlZCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBwYXNzCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBTdGFydCBhbiBhY3Rpb24gbW9kZSBvZiB0aGUgZGVmYXVsdCB0eXBlIHtAbGluayBBY3Rpb25Nb2RlI1RZUEVfUFJJTUFSWX0uCiAgICAgICoKICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2sgdGhhdCB3aWxsIG1hbmFnZSBsaWZlY3ljbGUgZXZlbnRzIGZvciB0aGlzIGFjdGlvbiBtb2RlCkBAIC02MzIwLDYgKzYzMzgsMjEgQEAKICAgICAgICAgbUFjdGl2aXR5VHJhbnNpdGlvblN0YXRlLnN0YXJ0UG9zdHBvbmVkRW50ZXJUcmFuc2l0aW9uKCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIHtAbGluayBEcm9wUGVybWlzc2lvbnN9IG9iamVjdCBib3VuZCB0byB0aGlzIGFjdGl2aXR5IGFuZCBjb250cm9sbGluZyB0aGUgYWNjZXNzCisgICAgICogcGVybWlzc2lvbnMgZm9yIGNvbnRlbnQgVVJJcyBhc3NvY2lhdGVkIHdpdGggdGhlIHtAbGluayBEcmFnRXZlbnR9LgorICAgICAqIEBwYXJhbSBldmVudCBEcmFnIGV2ZW50CisgICAgICogQHJldHVybiBUaGUgRHJvcFBlcm1pc3Npb25zIG9iamVjdCB1c2VkIHRvIGNvbnRyb2wgYWNjZXNzIHRvIHRoZSBjb250ZW50IFVSSXMuIE51bGwgaWYKKyAgICAgKiBubyBjb250ZW50IFVSSXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgb3IgaWYgcGVybWlzc2lvbnMgY291bGQgbm90IGJlIGdyYW50ZWQuCisgICAgICovCisgICAgcHVibGljIERyb3BQZXJtaXNzaW9ucyByZXF1ZXN0RHJvcFBlcm1pc3Npb25zKERyYWdFdmVudCBldmVudCkgeworICAgICAgICBEcm9wUGVybWlzc2lvbnMgZHJvcFBlcm1pc3Npb25zID0gRHJvcFBlcm1pc3Npb25zLm9idGFpbihldmVudCk7CisgICAgICAgIGlmIChkcm9wUGVybWlzc2lvbnMgIT0gbnVsbCAmJiBkcm9wUGVybWlzc2lvbnMudGFrZShnZXRBY3Rpdml0eVRva2VuKCkpKSB7CisgICAgICAgICAgICByZXR1cm4gZHJvcFBlcm1pc3Npb25zOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKwogICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLSBJbnRlcm5hbCBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICBmaW5hbCB2b2lkIHNldFBhcmVudChBY3Rpdml0eSBwYXJlbnQpIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXJOYXRpdmUuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXJOYXRpdmUuamF2YQppbmRleCBkNzI0ODIzLi4zYTNhYTkyIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlck5hdGl2ZS5qYXZhCkBAIC0xODQ1LDYgKzE4NDUsMTUgQEAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHRVRfVVJJX1BFUk1JU1NJT05fT1dORVJfRk9SX0FDVElWSVRZX1RSQU5TQUNUSU9OOiB7CisgICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIElCaW5kZXIgYWN0aXZpdHlUb2tlbiA9IGRhdGEucmVhZFN0cm9uZ0JpbmRlcigpOworICAgICAgICAgICAgSUJpbmRlciBwZXJtID0gZ2V0VXJpUGVybWlzc2lvbk93bmVyRm9yQWN0aXZpdHkoYWN0aXZpdHlUb2tlbik7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXBseS53cml0ZVN0cm9uZ0JpbmRlcihwZXJtKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHUkFOVF9VUklfUEVSTUlTU0lPTl9GUk9NX09XTkVSX1RSQU5TQUNUSU9OOiB7CiAgICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKICAgICAgICAgICAgIElCaW5kZXIgb3duZXIgPSBkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKTsKQEAgLTI3NjYsNiArMjc3NSwxNCBAQAogICAgICAgICAgICAgcmVwbHkud3JpdGVOb0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBTRVRfVlJfTU9ERV9UUkFOU0FDVElPTjogeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgICAgICBmaW5hbCBJQmluZGVyIHRva2VuID0gZGF0YS5yZWFkU3Ryb25nQmluZGVyKCk7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZSA9IGRhdGEucmVhZEludCgpID09IDE7CisgICAgICAgICAgICBzZXRWck1vZGUodG9rZW4sIGVuYWJsZSk7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHN1cGVyLm9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKQEAgLTUxMTMsNiArNTEzMCwxOSBAQAogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KIAorICAgIHB1YmxpYyBJQmluZGVyIGdldFVyaVBlcm1pc3Npb25Pd25lckZvckFjdGl2aXR5KElCaW5kZXIgYWN0aXZpdHlUb2tlbikgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKGFjdGl2aXR5VG9rZW4pOworICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KEdFVF9VUklfUEVSTUlTU0lPTl9PV05FUl9GT1JfQUNUSVZJVFlfVFJBTlNBQ1RJT04sIGRhdGEsIHJlcGx5LCAwKTsKKyAgICAgICAgcmVwbHkucmVhZEV4Y2VwdGlvbigpOworICAgICAgICBJQmluZGVyIHJlcyA9IHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKICAgICBwdWJsaWMgdm9pZCBncmFudFVyaVBlcm1pc3Npb25Gcm9tT3duZXIoSUJpbmRlciBvd25lciwgaW50IGZyb21VaWQsIFN0cmluZyB0YXJnZXRQa2csCiAgICAgICAgICAgICBVcmkgdXJpLCBpbnQgbW9kZSwgaW50IHNvdXJjZVVzZXJJZCwgaW50IHRhcmdldFVzZXJJZCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOwpAQCAtNTg5Niw2ICs1OTI2LDE4IEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogCisgICAgcHVibGljIHZvaWQgc2V0VnJNb2RlKElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gZW5hYmxlZCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKHRva2VuKTsKKyAgICAgICAgZGF0YS53cml0ZUludChlbmFibGVkID8gMSA6IDApOworICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KFNFVF9WUl9NT0RFX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgSUFjdGl2aXR5Q29udGFpbmVyIGNyZWF0ZVN0YWNrT25EaXNwbGF5KGludCBkaXNwbGF5SWQpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewogICAgICAgICBQYXJjZWwgZGF0YSA9IFBhcmNlbC5vYnRhaW4oKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eVRocmVhZC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5VGhyZWFkLmphdmEKaW5kZXggMzk2MmFiZC4uZWQxNjhkMSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5VGhyZWFkLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5VGhyZWFkLmphdmEKQEAgLTEyMyw2ICsxMjMsNyBAQAogaW1wb3J0IGphdmEubmV0LkluZXRBZGRyZXNzOwogaW1wb3J0IGphdmEudGV4dC5EYXRlRm9ybWF0OwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKQEAgLTg1MSw4ICs4NTIsMTMgQEAKICAgICAgICAgICAgICAgICAvLyBUZWxsIHRoZSBWTVJ1bnRpbWUgYWJvdXQgdGhlIGFwcGxpY2F0aW9uLCB1bmxlc3MgaXQgaXMgc2hhcmVkCiAgICAgICAgICAgICAgICAgLy8gaW5zaWRlIGEgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICBpZiAoIXNoYXJhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBjb2RlUGF0aHMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgICAgICAgICAgICAgY29kZVBhdGhzLmFkZChhcHBJbmZvLnNvdXJjZURpcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcHBJbmZvLnNwbGl0U291cmNlRGlycyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aW9ucy5hZGRBbGwoY29kZVBhdGhzLCBhcHBJbmZvLnNwbGl0U291cmNlRGlycyk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgVk1SdW50aW1lLnJlZ2lzdGVyQXBwSW5mbyhhcHBJbmZvLnBhY2thZ2VOYW1lLCBhcHBJbmZvLmRhdGFEaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluZm8ucHJvY2Vzc05hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVQYXRocy50b0FycmF5KG5ldyBTdHJpbmdbY29kZVBhdGhzLnNpemUoKV0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvbkxvYWRlcnMuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvbkxvYWRlcnMuamF2YQppbmRleCBkZGIyZDQ2Li43ZDBkMWI0IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQXBwbGljYXRpb25Mb2FkZXJzLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uTG9hZGVycy5qYXZhCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgIHJldHVybiBnQXBwbGljYXRpb25Mb2FkZXJzOwogICAgIH0KIAotICAgIHB1YmxpYyBDbGFzc0xvYWRlciBnZXRDbGFzc0xvYWRlcihTdHJpbmcgemlwLCBTdHJpbmcgbGlicmFyeVNlYXJjaFBhdGgsCisgICAgcHVibGljIENsYXNzTG9hZGVyIGdldENsYXNzTG9hZGVyKFN0cmluZyB6aXAsIGJvb2xlYW4gaXNCdW5kbGVkLCBTdHJpbmcgbGlicmFyeVNlYXJjaFBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5UGVybWl0dGVkUGF0aCwgQ2xhc3NMb2FkZXIgcGFyZW50KQogICAgIHsKICAgICAgICAgLyoKQEAgLTU2LDcgKzU2LDggQEAKICAgICAKICAgICAgICAgICAgICAgICBUcmFjZS50cmFjZUJlZ2luKFRyYWNlLlRSQUNFX1RBR19BQ1RJVklUWV9NQU5BR0VSLCB6aXApOwogICAgICAgICAgICAgICAgIFBhdGhDbGFzc0xvYWRlciBwYXRoQ2xhc3Nsb2FkZXIgPQotICAgICAgICAgICAgICAgICAgICBuZXcgUGF0aENsYXNzTG9hZGVyKHppcCwgbGlicmFyeVNlYXJjaFBhdGgsIGxpYnJhcnlQZXJtaXR0ZWRQYXRoLCBwYXJlbnQpOworICAgICAgICAgICAgICAgICAgICBuZXcgUGF0aENsYXNzTG9hZGVyKHppcCwgaXNCdW5kbGVkLCBsaWJyYXJ5U2VhcmNoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5UGVybWl0dGVkUGF0aCwgcGFyZW50KTsKICAgICAgICAgICAgICAgICBUcmFjZS50cmFjZUVuZChUcmFjZS5UUkFDRV9UQUdfQUNUSVZJVFlfTUFOQUdFUik7CiAKICAgICAgICAgICAgICAgICBtTG9hZGVycy5wdXQoemlwLCBwYXRoQ2xhc3Nsb2FkZXIpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lBY3Rpdml0eU1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9JQWN0aXZpdHlNYW5hZ2VyLmphdmEKaW5kZXggZjkxYTBiZS4uNjFiMWJjOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lBY3Rpdml0eU1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFjdGl2aXR5TWFuYWdlci5qYXZhCkBAIC0zNjMsNiArMzYzLDcgQEAKICAgICBwdWJsaWMgU3RyaW5nIGdldFByb3ZpZGVyTWltZVR5cGUoVXJpIHVyaSwgaW50IHVzZXJJZCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKIAogICAgIHB1YmxpYyBJQmluZGVyIG5ld1VyaVBlcm1pc3Npb25Pd25lcihTdHJpbmcgbmFtZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKKyAgICBwdWJsaWMgSUJpbmRlciBnZXRVcmlQZXJtaXNzaW9uT3duZXJGb3JBY3Rpdml0eShJQmluZGVyIGFjdGl2aXR5VG9rZW4pIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgcHVibGljIHZvaWQgZ3JhbnRVcmlQZXJtaXNzaW9uRnJvbU93bmVyKElCaW5kZXIgb3duZXIsIGludCBmcm9tVWlkLCBTdHJpbmcgdGFyZ2V0UGtnLAogICAgICAgICAgICAgVXJpIHVyaSwgaW50IG1vZGUsIGludCBzb3VyY2VVc2VySWQsIGludCB0YXJnZXRVc2VySWQpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgcHVibGljIHZvaWQgcmV2b2tlVXJpUGVybWlzc2lvbkZyb21Pd25lcihJQmluZGVyIG93bmVyLCBVcmkgdXJpLApAQCAtNTUyLDYgKzU1Myw4IEBACiAKICAgICBwdWJsaWMgdm9pZCBlbnRlclBpY3R1cmVJblBpY3R1cmVNb2RlKElCaW5kZXIgdG9rZW4pIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAKKyAgICBwdWJsaWMgdm9pZCBzZXRWck1vZGUoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBlbmFibGVkKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworCiAgICAgLyoKICAgICAgKiBQcml2YXRlIG5vbi1CaW5kZXIgaW50ZXJmYWNlcwogICAgICAqLwpAQCAtOTE3LDQgKzkyMCw2IEBACiAgICAgaW50IElOX1BJQ1RVUkVfSU5fUElDVFVSRV9NT0RFX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OICsgMzUzOwogICAgIGludCBLSUxMX1BBQ0tBR0VfREVQRU5ERU5UU19UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTiArIDM1NDsKICAgICBpbnQgRU5URVJfUElDVFVSRV9JTl9QSUNUVVJFX01PREVfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04gKyAzNTU7CisgICAgaW50IFNFVF9WUl9NT0RFX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OICsgMzU2OworICAgIGludCBHRVRfVVJJX1BFUk1JU1NJT05fT1dORVJfRk9SX0FDVElWSVRZX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OICsgMzU3OwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lOb3RpZmljYXRpb25NYW5hZ2VyLmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSU5vdGlmaWNhdGlvbk1hbmFnZXIuYWlkbAppbmRleCBiY2U1YmYzLi5hYmU5ODIyIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSU5vdGlmaWNhdGlvbk1hbmFnZXIuYWlkbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSU5vdGlmaWNhdGlvbk1hbmFnZXIuYWlkbApAQCAtNTUsNiArNTUsNyBAQAogICAgIHZvaWQgc2V0VG9waWNJbXBvcnRhbmNlKFN0cmluZyBwa2csIGludCB1aWQsIGluIE5vdGlmaWNhdGlvbi5Ub3BpYyB0b3BpYywgaW50IGltcG9ydGFuY2UpOwogICAgIGludCBnZXRUb3BpY0ltcG9ydGFuY2UoU3RyaW5nIHBrZywgaW50IHVpZCwgaW4gTm90aWZpY2F0aW9uLlRvcGljIHRvcGljKTsKICAgICB2b2lkIHNldEFwcEltcG9ydGFuY2UoU3RyaW5nIHBrZywgaW50IHVpZCwgaW50IGltcG9ydGFuY2UpOworICAgIGJvb2xlYW4gZG9lc0FwcFVzZVRvcGljcyhTdHJpbmcgcGtnLCBpbnQgdWlkKTsKIAogICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gY2FsbGVycyBoYXZlIGJlZW4gbWlncmF0ZWQgdG8gdGhlIGVxdWl2YWxlbnQKICAgICAvLyBJTm90aWZpY2F0aW9uTGlzdGVuZXIgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xvYWRlZEFway5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xvYWRlZEFway5qYXZhCmluZGV4IDczMTNmZDEuLjg1NWIyMWUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Mb2FkZWRBcGsuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTG9hZGVkQXBrLmphdmEKQEAgLTM2NiwxMiArMzY2LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlicmFyeVBlcm1pdHRlZFBhdGggPSBtQXBwRGlyICsgRmlsZS5wYXRoU2VwYXJhdG9yICsgbURhdGFEaXI7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBpc0J1bmRsZWRBcHAgPSBmYWxzZTsKKwogICAgICAgICAgICAgICAgIGlmIChtQXBwbGljYXRpb25JbmZvLmlzU3lzdGVtQXBwKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaXNCdW5kbGVkQXBwID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHBhdGggdG8gc3lzdGVtIGxpYnJhcmllcyB0byBsaWJQYXRoczsKICAgICAgICAgICAgICAgICAgICAgLy8gQWNjZXNzIHRvIHN5c3RlbSBsaWJzIHNob3VsZCBiZSBsaW1pdGVkCiAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJ1bmRsZWQgYXBwbGljYXRpb25zOyB0aGlzIGlzIHdoeSB1cGRhdGVkCiAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBhcHBzIGFyZSBub3QgaW5jbHVkZWQuCiAgICAgICAgICAgICAgICAgICAgIGxpYlBhdGhzLmFkZChTeXN0ZW0uZ2V0UHJvcGVydHkoImphdmEubGlicmFyeS5wYXRoIikpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGdyYW50IGJ1bmRsZWQgYXBwcyBhY2Nlc3MgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8gbGlicmFyaWVzIGxvY2F0ZWQgaW4gc3ViZGlyZWN0b3JpZXMgb2YgL3N5c3RlbS9saWIKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeVBlcm1pdHRlZFBhdGggKz0gRmlsZS5wYXRoU2VwYXJhdG9yICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLmxpYnJhcnkucGF0aCIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBsaWJyYXJ5U2VhcmNoUGF0aCA9IFRleHRVdGlscy5qb2luKEZpbGUucGF0aFNlcGFyYXRvciwgbGliUGF0aHMpOwpAQCAtMzg5LDEwICszOTgsOCBAQAogICAgICAgICAgICAgICAgIC8vIGFzIHRoaXMgaXMgZWFybHkgYW5kIG5lY2Vzc2FyeS4KICAgICAgICAgICAgICAgICBTdHJpY3RNb2RlLlRocmVhZFBvbGljeSBvbGRQb2xpY3kgPSBTdHJpY3RNb2RlLmFsbG93VGhyZWFkRGlza1JlYWRzKCk7CiAKLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlicmFyeVBlcm1pdHRlZFBhdGggPSBtQXBwRGlyICsgRmlsZS5wYXRoU2VwYXJhdG9yICsgbURhdGFEaXI7Ci0KLSAgICAgICAgICAgICAgICBtQ2xhc3NMb2FkZXIgPSBBcHBsaWNhdGlvbkxvYWRlcnMuZ2V0RGVmYXVsdCgpLmdldENsYXNzTG9hZGVyKHppcCwgbGlicmFyeVNlYXJjaFBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5UGVybWl0dGVkUGF0aCwgbUJhc2VDbGFzc0xvYWRlcik7CisgICAgICAgICAgICAgICAgbUNsYXNzTG9hZGVyID0gQXBwbGljYXRpb25Mb2FkZXJzLmdldERlZmF1bHQoKS5nZXRDbGFzc0xvYWRlcih6aXAsIGlzQnVuZGxlZEFwcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlTZWFyY2hQYXRoLCBsaWJyYXJ5UGVybWl0dGVkUGF0aCwgbUJhc2VDbGFzc0xvYWRlcik7CiAKICAgICAgICAgICAgICAgICBTdHJpY3RNb2RlLnNldFRocmVhZFBvbGljeShvbGRQb2xpY3kpOwogICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Ob3RpZmljYXRpb24uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Ob3RpZmljYXRpb24uamF2YQppbmRleCA2MjBhYjUwLi4zZmYwODk2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTm90aWZpY2F0aW9uLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05vdGlmaWNhdGlvbi5qYXZhCkBAIC0zMDAxLDYgKzMwMDEsNyBAQAogICAgICAgICAgICAgcmVzZXROb3RpZmljYXRpb25IZWFkZXIoY29udGVudFZpZXcpOwogICAgICAgICAgICAgcmVzZXRDb250ZW50TWFyZ2lucyhjb250ZW50Vmlldyk7CiAgICAgICAgICAgICBjb250ZW50Vmlldy5zZXRWaWV3VmlzaWJpbGl0eShSLmlkLnJpZ2h0X2ljb24sIFZpZXcuR09ORSk7CisgICAgICAgICAgICBjb250ZW50Vmlldy5zZXRWaWV3VmlzaWJpbGl0eShSLmlkLnRpdGxlLCBWaWV3LkdPTkUpOwogICAgICAgICAgICAgY29udGVudFZpZXcuc2V0VGV4dFZpZXdUZXh0KFIuaWQudGl0bGUsIG51bGwpOwogICAgICAgICAgICAgY29udGVudFZpZXcuc2V0VGV4dFZpZXdUZXh0KFIuaWQudGV4dCwgbnVsbCk7CiAgICAgICAgICAgICBjb250ZW50Vmlldy5zZXRWaWV3VmlzaWJpbGl0eShSLmlkLmxpbmUzLCBWaWV3LkdPTkUpOwpAQCAtMzA0Nyw2ICszMDQ4LDcgQEAKICAgICAgICAgICAgIGJpbmROb3RpZmljYXRpb25IZWFkZXIoY29udGVudFZpZXcpOwogICAgICAgICAgICAgYmluZExhcmdlSWNvbihjb250ZW50Vmlldyk7CiAgICAgICAgICAgICBpZiAoZXguZ2V0Q2hhclNlcXVlbmNlKEVYVFJBX1RJVExFKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY29udGVudFZpZXcuc2V0Vmlld1Zpc2liaWxpdHkoUi5pZC50aXRsZSwgVmlldy5WSVNJQkxFKTsKICAgICAgICAgICAgICAgICBjb250ZW50Vmlldy5zZXRUZXh0Vmlld1RleHQoUi5pZC50aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NMZWdhY3lUZXh0KGV4LmdldENoYXJTZXF1ZW5jZShFWFRSQV9USVRMRSkpKTsKICAgICAgICAgICAgIH0KQEAgLTMwNjUsMTAgKzMwNjcsMjYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgZ2V0U3RhbmRhcmRWaWV3IG1heSBoaWRlIGxpbmUgMyBhZ2Fpbi4KICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNldFZpZXdWaXNpYmlsaXR5KFIuaWQubGluZTMsIHNob3dMaW5lMyA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CisgICAgICAgICAgICBzZXRDb250ZW50TWluSGVpZ2h0KGNvbnRlbnRWaWV3LCBzaG93UHJvZ3Jlc3MgfHwgbU4ubUxhcmdlSWNvbiAhPSBudWxsKTsKIAogICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3OwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSByZW1vdGVWaWV3IHRoZSByZW1vdGUgdmlldyB0byB1cGRhdGUgdGhlIG1pbmhlaWdodCBpbgorICAgICAgICAgKiBAcGFyYW0gaGFzTWluSGVpZ2h0IGRvZXMgaXQgaGF2ZSBhIG1pbUhlaWdodAorICAgICAgICAgKiBAaGlkZQorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBzZXRDb250ZW50TWluSGVpZ2h0KFJlbW90ZVZpZXdzIHJlbW90ZVZpZXcsIGJvb2xlYW4gaGFzTWluSGVpZ2h0KSB7CisgICAgICAgICAgICBpbnQgbWluSGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIGlmIChoYXNNaW5IZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHNldCB0aGUgbWluSGVpZ2h0IG9mIHRoZSBub3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICBtaW5IZWlnaHQgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXREaW1lbnNpb25QaXhlbFNpemUoCisgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRpbWVuLm5vdGlmaWNhdGlvbl9taW5fY29udGVudF9oZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3RlVmlldy5zZXRJbnQoUi5pZC5ub3RpZmljYXRpb25fbWFpbl9jb2x1bW4sICJzZXRNaW5pbXVtSGVpZ2h0IiwgbWluSGVpZ2h0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBoYW5kbGVQcm9ncmVzc0Jhcihib29sZWFuIGhhc1Byb2dyZXNzLCBSZW1vdGVWaWV3cyBjb250ZW50VmlldywgQnVuZGxlIGV4KSB7CiAgICAgICAgICAgICBmaW5hbCBpbnQgbWF4ID0gZXguZ2V0SW50KEVYVFJBX1BST0dSRVNTX01BWCwgMCk7CiAgICAgICAgICAgICBmaW5hbCBpbnQgcHJvZ3Jlc3MgPSBleC5nZXRJbnQoRVhUUkFfUFJPR1JFU1MsIDApOwpAQCAtMzMxMiw2ICszMzMwLDM3IEBACiAgICAgICAgICAgICByZXR1cm4gYXBwbHlTdGFuZGFyZFRlbXBsYXRlV2l0aEFjdGlvbnMoZ2V0QmlnQmFzZUxheW91dFJlc291cmNlKCkpOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnN0cnVjdCBhIFJlbW90ZVZpZXdzIGZvciB0aGUgZGlzcGxheSBpbiBwdWJsaWMgY29udGV4dHMgbGlrZSBvbiB0aGUgbG9ja3NjcmVlbi4KKyAgICAgICAgICoKKyAgICAgICAgICogQGhpZGUKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBSZW1vdGVWaWV3cyBtYWtlUHVibGljQ29udGVudFZpZXcoKSB7CisgICAgICAgICAgICBpZiAobU4ucHVibGljVmVyc2lvbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmluYWwgQnVpbGRlciBidWlsZGVyID0gcmVjb3ZlckJ1aWxkZXIobUNvbnRleHQsIG1OLnB1YmxpY1ZlcnNpb24pOworICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVyLm1ha2VDb250ZW50VmlldygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQnVuZGxlIHNhdmVkQnVuZGxlID0gbU4uZXh0cmFzOworICAgICAgICAgICAgU3R5bGUgc3R5bGUgPSBtU3R5bGU7CisgICAgICAgICAgICBtU3R5bGUgPSBudWxsOworICAgICAgICAgICAgSWNvbiBsYXJnZUljb24gPSBtTi5tTGFyZ2VJY29uOworICAgICAgICAgICAgbU4ubUxhcmdlSWNvbiA9IG51bGw7CisgICAgICAgICAgICBCdW5kbGUgcHVibGljRXh0cmFzID0gbmV3IEJ1bmRsZSgpOworICAgICAgICAgICAgcHVibGljRXh0cmFzLnB1dEJvb2xlYW4oRVhUUkFfU0hPV19XSEVOLAorICAgICAgICAgICAgICAgICAgICBzYXZlZEJ1bmRsZS5nZXRCb29sZWFuKEVYVFJBX1NIT1dfV0hFTikpOworICAgICAgICAgICAgcHVibGljRXh0cmFzLnB1dEJvb2xlYW4oRVhUUkFfU0hPV19DSFJPTk9NRVRFUiwKKyAgICAgICAgICAgICAgICAgICAgc2F2ZWRCdW5kbGUuZ2V0Qm9vbGVhbihFWFRSQV9TSE9XX0NIUk9OT01FVEVSKSk7CisgICAgICAgICAgICBwdWJsaWNFeHRyYXMucHV0Q2hhclNlcXVlbmNlKEVYVFJBX1RJVExFLAorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcubm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0KSk7CisgICAgICAgICAgICBtTi5leHRyYXMgPSBwdWJsaWNFeHRyYXM7CisgICAgICAgICAgICBmaW5hbCBSZW1vdGVWaWV3cyBwdWJsaWNWaWV3ID0gYXBwbHlTdGFuZGFyZFRlbXBsYXRlKGdldEJhc2VMYXlvdXRSZXNvdXJjZSgpKTsKKyAgICAgICAgICAgIG1OLmV4dHJhcyA9IHNhdmVkQnVuZGxlOworICAgICAgICAgICAgbU4ubUxhcmdlSWNvbiA9IGxhcmdlSWNvbjsKKyAgICAgICAgICAgIG1TdHlsZSA9IHN0eWxlOworICAgICAgICAgICAgcmV0dXJuIHB1YmxpY1ZpZXc7CisgICAgICAgIH0KKworCiAKICAgICAgICAgcHJpdmF0ZSBSZW1vdGVWaWV3cyBnZW5lcmF0ZUFjdGlvbkJ1dHRvbihBY3Rpb24gYWN0aW9uKSB7CiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHRvbWJzdG9uZSA9IChhY3Rpb24uYWN0aW9uSW50ZW50ID09IG51bGwpOwpAQCAtMzgwMSwxMiArMzg1MCw3IEBACiAgICAgICAgICAgICAgICAgY29udGVudFZpZXcuc2V0VGV4dFZpZXdUZXh0KFIuaWQudGV4dCwgbUJ1aWxkZXIucHJvY2Vzc0xlZ2FjeVRleHQobVN1bW1hcnlUZXh0KSk7CiAgICAgICAgICAgICAgICAgY29udGVudFZpZXcuc2V0Vmlld1Zpc2liaWxpdHkoUi5pZC5saW5lMywgVmlldy5WSVNJQkxFKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBpbWFnZU1pbkhlaWdodCA9IG1CdWlsZGVyLm1Db250ZXh0LmdldFJlc291cmNlcygpLmdldERpbWVuc2lvblBpeGVsU2l6ZSgKLSAgICAgICAgICAgICAgICAgICAgUi5kaW1lbi5ub3RpZmljYXRpb25fYmlnX3BpY3R1cmVfY29udGVudF9taW5faGVpZ2h0X3dpdGhfcGljdHVyZSk7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSByaWdodCBpbWFnZSwgc28gd2UncmUgZW5mb3JjaW5nIGEgbWluaGVpZ2h0IGlmIHRoZXJlCi0gICAgICAgICAgICAvLyBpcyBhIHBpY3R1cmUuCi0gICAgICAgICAgICBpbnQgbWluSGVpZ2h0ID0gKG1CdWlsZGVyLm1OLm1MYXJnZUljb24gPT0gbnVsbCkgPyAwIDogaW1hZ2VNaW5IZWlnaHQ7Ci0gICAgICAgICAgICBjb250ZW50Vmlldy5zZXRJbnQoUi5pZC5ub3RpZmljYXRpb25fbWFpbl9jb2x1bW4sICJzZXRNaW5pbXVtSGVpZ2h0IiwgbWluSGVpZ2h0KTsKKyAgICAgICAgICAgIG1CdWlsZGVyLnNldENvbnRlbnRNaW5IZWlnaHQoY29udGVudFZpZXcsIG1CdWlsZGVyLm1OLm1MYXJnZUljb24gIT0gbnVsbCk7CiAKICAgICAgICAgICAgIGlmIChtQmlnTGFyZ2VJY29uU2V0KSB7CiAgICAgICAgICAgICAgICAgbUJ1aWxkZXIubU4ubUxhcmdlSWNvbiA9IG9sZExhcmdlSWNvbjsKQEAgLTM4NzMsOCArMzkxNyw3IEBACiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCaWdUZXh0U3R5bGUgZXh0ZW5kcyBTdHlsZSB7CiAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9MSU5FUyA9IDEzOwotICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElORVNfQ09OU1VNRURfQllfQUNUSU9OUyA9IDM7Ci0gICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU5FU19DT05TVU1FRF9CWV9TVU1NQVJZID0gMjsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTkVTX0NPTlNVTUVEX0JZX0FDVElPTlMgPSA0OwogCiAgICAgICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIG1CaWdUZXh0OwogCkBAIC0zOTQ0LDggKzM5ODcsMTAgQEAKIAogICAgICAgICAgICAgbUJ1aWxkZXIuZ2V0QWxsRXh0cmFzKCkucHV0Q2hhclNlcXVlbmNlKEVYVFJBX1RFWFQsIG9sZEJ1aWxkZXJDb250ZW50VGV4dCk7CiAKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNldFRleHRWaWV3VGV4dChSLmlkLmJpZ190ZXh0LCBtQnVpbGRlci5wcm9jZXNzTGVnYWN5VGV4dChtQmlnVGV4dCkpOwotICAgICAgICAgICAgY29udGVudFZpZXcuc2V0Vmlld1Zpc2liaWxpdHkoUi5pZC5iaWdfdGV4dCwgVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBiaWdUZXh0VGV4dCA9IG1CdWlsZGVyLnByb2Nlc3NMZWdhY3lUZXh0KG1CaWdUZXh0KTsKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNldFRleHRWaWV3VGV4dChSLmlkLmJpZ190ZXh0LCBiaWdUZXh0VGV4dCk7CisgICAgICAgICAgICBjb250ZW50Vmlldy5zZXRWaWV3VmlzaWJpbGl0eShSLmlkLmJpZ190ZXh0LAorICAgICAgICAgICAgICAgICAgICBUZXh0VXRpbHMuaXNFbXB0eShiaWdUZXh0VGV4dCkgPyBWaWV3LkdPTkUgOiBWaWV3LlZJU0lCTEUpOwogICAgICAgICAgICAgY29udGVudFZpZXcuc2V0SW50KFIuaWQuYmlnX3RleHQsICJzZXRNYXhMaW5lcyIsIGNhbGN1bGF0ZU1heExpbmVzKCkpOwogCiAgICAgICAgICAgICBtQnVpbGRlci5hZGRQcm9maWxlQmFkZ2UoY29udGVudFZpZXcsIFIuaWQucHJvZmlsZV9iYWRnZV9sYXJnZV90ZW1wbGF0ZSk7CkBAIC0zOTU4LDE0ICs0MDAzLDkgQEAKICAgICAgICAgcHJpdmF0ZSBpbnQgY2FsY3VsYXRlTWF4TGluZXMoKSB7CiAgICAgICAgICAgICBpbnQgbGluZUNvdW50ID0gTUFYX0xJTkVTOwogICAgICAgICAgICAgYm9vbGVhbiBoYXNBY3Rpb25zID0gbUJ1aWxkZXIubUFjdGlvbnMuc2l6ZSgpID4gMDsKLSAgICAgICAgICAgIGJvb2xlYW4gaGFzU3VtbWFyeSA9IChtU3VtbWFyeVRleHRTZXQgPyBtU3VtbWFyeVRleHQKLSAgICAgICAgICAgICAgICAgICAgOiBtQnVpbGRlci5nZXRBbGxFeHRyYXMoKS5nZXRDaGFyU2VxdWVuY2UoRVhUUkFfU1VCX1RFWFQpKSAhPSBudWxsOwogICAgICAgICAgICAgaWYgKGhhc0FjdGlvbnMpIHsKICAgICAgICAgICAgICAgICBsaW5lQ291bnQgLT0gTElORVNfQ09OU1VNRURfQllfQUNUSU9OUzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChoYXNTdW1tYXJ5KSB7Ci0gICAgICAgICAgICAgICAgbGluZUNvdW50IC09IExJTkVTX0NPTlNVTUVEX0JZX1NVTU1BUlk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGluZUNvdW50OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL2FkbWluL0RldmljZVBvbGljeU1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9hZG1pbi9EZXZpY2VQb2xpY3lNYW5hZ2VyLmphdmEKaW5kZXggNWRmNmJhOC4uZWRhMDk4MiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL2FkbWluL0RldmljZVBvbGljeU1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvYWRtaW4vRGV2aWNlUG9saWN5TWFuYWdlci5qYXZhCkBAIC00MTQyLDYgKzQxNDIsMTAgQEAKICAgICAgKiA8cD5XaGVuIGFjY291bnQgbWFuYWdlbWVudCBpcyBkaXNhYmxlZCBmb3IgYW4gYWNjb3VudCB0eXBlLCBhZGRpbmcgb3IgcmVtb3ZpbmcgYW4gYWNjb3VudAogICAgICAqIG9mIHRoYXQgdHlwZSB3aWxsIG5vdCBiZSBwb3NzaWJsZS4KICAgICAgKgorICAgICAqIDxwPkZyb20ge0BsaW5rIGFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTl9DT0RFUyNOfSB0aGUgcHJvZmlsZSBvciBkZXZpY2Ugb3duZXIgY2FuIHN0aWxsIHVzZQorICAgICAqIHtAbGluayBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyfSBBUElzIHRvIGFkZCBvciByZW1vdmUgYWNjb3VudHMgd2hlbiBhY2NvdW50CisgICAgICogbWFuYWdlbWVudCBmb3IgYSBzcGVjaWZpYyB0eXBlIGlzIGRpc2FibGVkLgorICAgICAqCiAgICAgICogQHBhcmFtIGFkbWluIFdoaWNoIHtAbGluayBEZXZpY2VBZG1pblJlY2VpdmVyfSB0aGlzIHJlcXVlc3QgaXMgYXNzb2NpYXRlZCB3aXRoLgogICAgICAqIEBwYXJhbSBhY2NvdW50VHlwZSBGb3Igd2hpY2ggYWNjb3VudCBtYW5hZ2VtZW50IGlzIGRpc2FibGVkIG9yIGVuYWJsZWQuCiAgICAgICogQHBhcmFtIGRpc2FibGVkIFRoZSBib29sZWFuIGluZGljYXRpbmcgdGhhdCBhY2NvdW50IG1hbmFnZW1lbnQgd2lsbCBiZSBkaXNhYmxlZCAodHJ1ZSkgb3IKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9CbHVldG9vdGhQcm9maWxlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoUHJvZmlsZS5qYXZhCmluZGV4IDZiZjNmYWIuLmNiY2UyMmMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9CbHVldG9vdGhQcm9maWxlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aFByb2ZpbGUuamF2YQpAQCAtMTMxLDE4ICsxMzEsNiBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhFQURTRVRfQ0xJRU5UID0gMTY7CiAKICAgICAvKioKLSAgICAgKiBISUQgUHJvZmlsZQotICAgICAqIEBoaWRlCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSElEID0gMTc7Ci0KLSAgICAvKioKLSAgICAgKiBIRFAgUHJvZmlsZQotICAgICAqIEBoaWRlCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSERQID0gMTg7Ci0KLSAgICAvKioKICAgICAgKiBEZWZhdWx0IHByaW9yaXR5IGZvciBkZXZpY2VzIHRoYXQgd2UgdHJ5IHRvIGF1dG8tY29ubmVjdCB0byBhbmQKICAgICAgKiBhbmQgYWxsb3cgaW5jb21pbmcgY29ubmVjdGlvbnMgZm9yIHRoZSBwcm9maWxlCiAgICAgICogQGhpZGUKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0ludGVudC5qYXZhCmluZGV4IDk5NzNmYWYuLjBmM2NhMTAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9JbnRlbnQuamF2YQpAQCAtNDE2OCw2ICs0MTY4LDE0IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19HUkFOVF9QUkVGSVhfVVJJX1BFUk1JU1NJT04gPSAweDAwMDAwMDgwOwogCiAgICAgLyoqCisgICAgICogSW50ZXJuYWwgZmxhZyB1c2VkIHRvIGluZGljYXRlIHRoYXQgYSBzeXN0ZW0gY29tcG9uZW50IGhhcyBkb25lIHRoZWlyCisgICAgICogaG9tZXdvcmsgYW5kIHZlcmlmaWVkIHRoZWlyIGVuY3J5cHRpb24tYXdhcmUgYmVoYXZpb3IuCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfREVCVUdfRU5DUllQVElPTl9UUklBR0VEID0gMHgwMDAwMDEwMDsKKworICAgIC8qKgogICAgICAqIElmIHNldCwgdGhlIG5ldyBhY3Rpdml0eSBpcyBub3Qga2VwdCBpbiB0aGUgaGlzdG9yeSBzdGFjay4gIEFzIHNvb24gYXMKICAgICAgKiB0aGUgdXNlciBuYXZpZ2F0ZXMgYXdheSBmcm9tIGl0LCB0aGUgYWN0aXZpdHkgaXMgZmluaXNoZWQuICBUaGlzIG1heSBhbHNvCiAgICAgICogYmUgc2V0IHdpdGggdGhlIHtAbGluayBhbmRyb2lkLlIuc3R5bGVhYmxlI0FuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X25vSGlzdG9yeQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BY3Rpdml0eUluZm8uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vQWN0aXZpdHlJbmZvLmphdmEKaW5kZXggMGNiMGU5Zi4uMzI2NzM1ZSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BY3Rpdml0eUluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FjdGl2aXR5SW5mby5qYXZhCkBAIC0yNzYsNiArMjc2LDEyIEBACiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19SRVNVTUVfV0hJTEVfUEFVU0lORyA9IDB4NDAwMDsKICAgICAvKioKKyAgICAgKiBCaXQgaW4ge0BsaW5rICNmbGFnc30gaW5kaWNhdGluZyB0aGF0IHRoaXMgYWN0aXZpdHkgc2hvdWxkIGJlIHJ1biB3aXRoIFZSIG1vZGUgZW5hYmxlZC4KKyAgICAgKgorICAgICAqIHtAc2VlIGFuZHJvaWQuYXBwLkFjdGl2aXR5I3NldFZyTW9kZShib29sZWFuKX0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19FTkFCTEVfVlJfTU9ERSA9IDB4ODAwMDsKKyAgICAvKioKICAgICAgKiBAaGlkZSBCaXQgaW4ge0BsaW5rICNmbGFnc306IElmIHNldCwgdGhpcyBjb21wb25lbnQgd2lsbCBvbmx5IGJlIHNlZW4KICAgICAgKiBieSB0aGUgc3lzdGVtIHVzZXIuICBPbmx5IHdvcmtzIHdpdGggYnJvYWRjYXN0IHJlY2VpdmVycy4gIFNldCBmcm9tIHRoZQogICAgICAqIGFuZHJvaWQuUi5hdHRyI3N5c3RlbVVzZXJPbmx5IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vQ29tcG9uZW50SW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9Db21wb25lbnRJbmZvLmphdmEKaW5kZXggYTI5NWNjNS4uNjNhMTYzZCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9Db21wb25lbnRJbmZvLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9Db21wb25lbnRJbmZvLmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBhbmRyb2lkLmNvbnRlbnQucG07CiAKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKQEAgLTE0OCw2ICsxNDksMTEgQEAKICAgICAgICAgcmV0dXJuIGJhbm5lciAhPSAwID8gYmFubmVyIDogYXBwbGljYXRpb25JbmZvLmJhbm5lcjsKICAgICB9CiAKKyAgICAvKioge0BoaWRlfSAqLworICAgIHB1YmxpYyBDb21wb25lbnROYW1lIGdldENvbXBvbmVudE5hbWUoKSB7CisgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TmFtZShwYWNrYWdlTmFtZSwgbmFtZSk7CisgICAgfQorCiAgICAgcHJvdGVjdGVkIHZvaWQgZHVtcEZyb250KFByaW50ZXIgcHcsIFN0cmluZyBwcmVmaXgpIHsKICAgICAgICAgc3VwZXIuZHVtcEZyb250KHB3LCBwcmVmaXgpOwogICAgICAgICBpZiAocHJvY2Vzc05hbWUgIT0gbnVsbCAmJiAhcGFja2FnZU5hbWUuZXF1YWxzKHByb2Nlc3NOYW1lKSkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlTWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlTWFuYWdlci5qYXZhCmluZGV4IDQwYmNjN2UuLjY5ZjUwOGUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZU1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VNYW5hZ2VyLmphdmEKQEAgLTQ3LDEwICs0Nyw4IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5vcy5Vc2VySGFuZGxlOwogaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5Wb2x1bWVJbmZvOwotaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb247CiAKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuQXJyYXlVdGlsczsKIAogaW1wb3J0IGphdmEuaW8uRmlsZTsKQEAgLTIzNiwyMSArMjM0LDQxIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfQUxMID0gMHgwMDAyMDAwMDsKIAogICAgIC8qKgotICAgICAqIHtAbGluayBQYWNrYWdlSW5mb30gZmxhZzogaW5jbHVkZSBjb21wb25lbnRzIHdoaWNoIGFyZW4ndCBlbmNyeXB0aW9uCi0gICAgICogYXdhcmUgaW4gdGhlIHJldHVybmVkIGluZm8sIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgdXNlciBzdGF0ZS4KKyAgICAgKiB7QGxpbmsgUGFja2FnZUluZm99IGZsYWc6IGluY2x1ZGUgb25seSBjb21wb25lbnRzIHdoaWNoIGFyZSBlbmNyeXB0aW9uCisgICAgICogdW5hd2FyZSBpbiB0aGUgcmV0dXJuZWQgaW5mbywgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCB1c2VyIHN0YXRlLgogICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFVF9FTkNSWVBUSU9OX1VOQVdBUkVfQ09NUE9ORU5UUyA9IDB4MDAwNDAwMDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfRU5DUllQVElPTl9VTkFXQVJFX09OTFkgPSAweDAwMDQwMDAwOwogCiAgICAgLyoqCi0gICAgICoge0BsaW5rIFBhY2thZ2VJbmZvfSBmbGFnOiByZXR1cm4gY29tcG9uZW50cyB0aGF0IGFyZSBtYXJrZWQgYXMKLSAgICAgKiB7QGxpbmsgQ29tcG9uZW50SW5mbyNlbmNyeXB0aW9uQXdhcmV9LCB1bmxlc3MKLSAgICAgKiB7QGxpbmsgI0dFVF9FTkNSWVBUSU9OX1VOQVdBUkVfQ09NUE9ORU5UU30gaXMgYWxzbyBzcGVjaWZpZWQuCi0gICAgICogPHA+Ci0gICAgICogVGhpcyBmbGFnIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4KKyAgICAgKiB7QGxpbmsgUGFja2FnZUluZm99IGZsYWc6IGluY2x1ZGUgb25seSBjb21wb25lbnRzIHdoaWNoIGFyZSBlbmNyeXB0aW9uCisgICAgICogYXdhcmUgaW4gdGhlIHJldHVybmVkIGluZm8sIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgdXNlciBzdGF0ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRDSF9FTkNSWVBUSU9OX0FXQVJFX09OTFkgPSAweDAwMDgwMDAwOworCisgICAgLyoqCisgICAgICoge0BsaW5rIFBhY2thZ2VJbmZvfSBmbGFnOiBpbmNsdWRlIGJvdGggZW5jcnlwdGlvbiBhd2FyZSBhbmQgdW5hd2FyZQorICAgICAqIGNvbXBvbmVudHMgaW4gdGhlIHJldHVybmVkIGluZm8sIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgdXNlciBzdGF0ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRDSF9FTkNSWVBUSU9OX0FXQVJFX0FORF9VTkFXQVJFID0gTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9PTkxZCisgICAgICAgICAgICB8IE1BVENIX0VOQ1JZUFRJT05fVU5BV0FSRV9PTkxZOworCisgICAgLyoqCisgICAgICoge0BsaW5rIFBhY2thZ2VJbmZvfSBmbGFnOiBpbmNsdWRlIG9ubHkgY29tcG9uZW50cyBmcm9tIGFwcGxpY2F0aW9ucyB0aGF0CisgICAgICogYXJlIG1hcmtlZCB3aXRoIHtAbGluayBBcHBsaWNhdGlvbkluZm8jRkxBR19TWVNURU19LgogICAgICAqCiAgICAgICogQGhpZGUKICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRDSF9FTkNSWVBUSU9OX0FXQVJFX09OTFkgPSAweDAwMDgwMDAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVENIX1NZU1RFTV9PTkxZID0gMHgwMDEwMDAwMDsKKworICAgIC8qKgorICAgICAqIHtAbGluayBQYWNrYWdlSW5mb30gZmxhZzogdXNlIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24gbWF0Y2hpbmcgYmVoYXZpb3IKKyAgICAgKiBiYXNlZCBvbiB1c2VyIHN0YXRlLiBJbnRlcm5hbCBmbGFnIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhIHN5c3RlbQorICAgICAqIGNvbXBvbmVudCBoYXMgZG9uZSB0aGVpciBob21ld29yayBhbmQgdmVyaWZpZWQgdGhlaXIgZW5jcnlwdGlvbi1hd2FyZQorICAgICAqIGJlaGF2aW9yLgorICAgICAqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRDSF9FTkNSWVBUSU9OX0RFRkFVTFQgPSAweDEwMDAwMDAwOwogCiAgICAgLyoqCiAgICAgICogRmxhZyBmb3Ige0BsaW5rIGFkZENyb3NzUHJvZmlsZUludGVudEZpbHRlcn06IGlmIHRoaXMgZmxhZyBpcyBzZXQ6CkBAIC0xODMwLDYgKzE4NDgsMTYgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX01JREkgPSAiYW5kcm9pZC5zb2Z0d2FyZS5taWRpIjsKIAogICAgIC8qKgorICAgICAqIEZlYXR1cmUgZm9yIHtAbGluayAjZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXN9IGFuZCB7QGxpbmsgI2hhc1N5c3RlbUZlYXR1cmV9OgorICAgICAqIFRoZSBkZXZpY2UgaW1wbGVtZW50cyBhIGFuIG9wdGltaXplZCBtb2RlIGZvciB2aXJ0dWFsIHJlYWxpdHkgKFZSKSBhcHBsaWNhdGlvbnMgdGhhdCBoYW5kbGVzCisgICAgICogc3RlcmVvc2NvcGljIHJlbmRlcmluZyBvZiBub3RpZmljYXRpb25zLCBhbmQgbWF5IHBvdGVudGlhbGx5IGFsc28gaW5jbHVkZSBvcHRpbWl6YXRpb25zIHRvCisgICAgICogcmVkdWNlIGxhdGVuY3kgaW4gdGhlIGdyYXBoaWNzLCBkaXNwbGF5LCBhbmQgc2Vuc29yIHN0YWNrcy4gIFByZXNlbmNlIG9mIHRoaXMgZmVhdHVyZQorICAgICAqIGFsc28gaW5kaWNhdGVzIHRoYXQgdGhlIFZyQ29yZSBsaWJyYXJ5IGlzIGluY2x1ZGVkIG9uIHRoaXMgZGV2aWNlLgorICAgICAqLworICAgIEBTZGtDb25zdGFudChTZGtDb25zdGFudFR5cGUuRkVBVFVSRSkKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX1ZSX01PREUgPSAiYW5kcm9pZC5zb2Z0d2FyZS52ci5tb2RlIjsKKworICAgIC8qKgogICAgICAqIEFjdGlvbiB0byBleHRlcm5hbCBzdG9yYWdlIHNlcnZpY2UgdG8gY2xlYW4gb3V0IHJlbW92ZWQgYXBwcy4KICAgICAgKiBAaGlkZQogICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9SZWdpc3RlcmVkU2VydmljZXNDYWNoZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9SZWdpc3RlcmVkU2VydmljZXNDYWNoZS5qYXZhCmluZGV4IGE0MTNmMzYuLmJiMjhiZGUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUmVnaXN0ZXJlZFNlcnZpY2VzQ2FjaGUuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1JlZ2lzdGVyZWRTZXJ2aWNlc0NhY2hlLmphdmEKQEAgLTM2NSw3ICszNjUsNyBAQAogICAgIHByb3RlY3RlZCBMaXN0PFJlc29sdmVJbmZvPiBxdWVyeUludGVudFNlcnZpY2VzKGludCB1c2VySWQpIHsKICAgICAgICAgZmluYWwgUGFja2FnZU1hbmFnZXIgcG0gPSBtQ29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICByZXR1cm4gcG0ucXVlcnlJbnRlbnRTZXJ2aWNlc0FzVXNlcihuZXcgSW50ZW50KG1JbnRlcmZhY2VOYW1lKSwKLSAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5HRVRfTUVUQV9EQVRBIHwgUGFja2FnZU1hbmFnZXIuR0VUX0VOQ1JZUFRJT05fVU5BV0FSRV9DT01QT05FTlRTLAorICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLkdFVF9NRVRBX0RBVEEgfCBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0FXQVJFX0FORF9VTkFXQVJFLAogICAgICAgICAgICAgICAgIHVzZXJJZCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9pbnB1dC9JSW5wdXRNYW5hZ2VyLmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9pbnB1dC9JSW5wdXRNYW5hZ2VyLmFpZGwKaW5kZXggZmYzM2JkOS4uYjhmNDY0ZCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvaW5wdXQvSUlucHV0TWFuYWdlci5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL2lucHV0L0lJbnB1dE1hbmFnZXIuYWlkbApAQCAtNzMsNCArNzMsNiBAQAogCiAgICAgdm9pZCBzZXRQb2ludGVySWNvblNoYXBlKGludCBzaGFwZUlkKTsKICAgICB2b2lkIHNldEN1c3RvbVBvaW50ZXJJY29uKGluIFBvaW50ZXJJY29uIGljb24pOworCisgICAgdm9pZCBzZXRQb2ludGVySWNvbkRldGFjaGVkKGJvb2xlYW4gZGV0YWNoZWQpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvaW5wdXQvSW5wdXRNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9pbnB1dC9JbnB1dE1hbmFnZXIuamF2YQppbmRleCBmYWI0NzE4Li4xNmI4NzIyIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9pbnB1dC9JbnB1dE1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9pbnB1dC9JbnB1dE1hbmFnZXIuamF2YQpAQCAtODI5LDYgKzgyOSwyNCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgLyoqCisgICAgICogVXBkYXRlIHRoZSBwb2ludGVyIGljb24gc3RhdHVzLiBXaGVuIGRldGFjaGVkLCB0aGUgcG9pbnRlciBpY29uIGRpc2FwcGVhcnMsIGFuZCBmdXJ0aGVyCisgICAgICogbW91c2UgbG9jYXRpb24gd2lsbCBiZSBzdHVjayBhdCB0aGUgY3VycmVudCBwb2ludC4gTW91c2UgbW92ZW1lbnQgZXZlbnRzIHdpbGwgc3RpbGwgYXJyaXZlLAorICAgICAqIGFuZCBtb3ZlbWVudCBzaG91bGQgYmUgaGFuZGxlZCB0aHJvdWdoIHtAbGluayBNb3Rpb25FdmVudC5BWElTX1JFTEFUSVZFX1h9IGFuZAorICAgICAqIHtAbGluayBNb3Rpb25FdmVudC5BWElTX1JFTEFUSVZFX1l9LgorICAgICAqCisgICAgICogQHBhcmFtIGRldGFjaGVkIHRydWUgaWYgdGhlIGljb24gd2lsbCBiZSBkZXRhY2hlZCBmcm9tIHRoZSBhY3R1YWwgbW91c2UgbW92ZW1lbnQuCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBvaW50ZXJJY29uRGV0YWNoZWQoYm9vbGVhbiBkZXRhY2hlZCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUltLnNldFBvaW50ZXJJY29uRGV0YWNoZWQoZGV0YWNoZWQpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIC8vIERvIG5vdGhpbmcuCisgICAgICAgIH0KKyAgICB9CisKICAgICBwcml2YXRlIHZvaWQgcG9wdWxhdGVJbnB1dERldmljZXNMb2NrZWQoKSB7CiAgICAgICAgIGlmIChtSW5wdXREZXZpY2VzQ2hhbmdlZExpc3RlbmVyID09IG51bGwpIHsKICAgICAgICAgICAgIGZpbmFsIElucHV0RGV2aWNlc0NoYW5nZWRMaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBJbnB1dERldmljZXNDaGFuZ2VkTGlzdGVuZXIoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL25mYy9OZmNBY3Rpdml0eU1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL25mYy9OZmNBY3Rpdml0eU1hbmFnZXIuamF2YQppbmRleCBkNjE5YzBhLi5jN2Q0YzY1IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmZjQWN0aXZpdHlNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05mY0FjdGl2aXR5TWFuYWdlci5qYXZhCkBAIC0zNzEsNDAgKzM3MSw0NCBAQAogICAgICAgICAgICAgZmxhZ3MgPSBzdGF0ZS5mbGFnczsKICAgICAgICAgICAgIGFjdGl2aXR5ID0gc3RhdGUuYWN0aXZpdHk7CiAgICAgICAgIH0KKyAgICAgICAgZmluYWwgbG9uZyBpZGVudCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gTWFrZSBjYWxsYmFja3Mgd2l0aG91dCBsb2NrCisgICAgICAgICAgICBpZiAobmRlZkNhbGxiYWNrICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gbmRlZkNhbGxiYWNrLmNyZWF0ZU5kZWZNZXNzYWdlKGV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1cmlzQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHVyaXMgPSB1cmlzQ2FsbGJhY2suY3JlYXRlQmVhbVVyaXMoZXZlbnQpOworICAgICAgICAgICAgICAgIGlmICh1cmlzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgQXJyYXlMaXN0PFVyaT4gdmFsaWRVcmlzID0gbmV3IEFycmF5TGlzdDxVcmk+KCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoVXJpIHVyaSA6IHVyaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlVyaSBub3QgYWxsb3dlZCB0byBiZSBudWxsLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNjaGVtZSA9IHVyaS5nZXRTY2hlbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWUgPT0gbnVsbCB8fCAoIXNjaGVtZS5lcXVhbHNJZ25vcmVDYXNlKCJmaWxlIikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXNjaGVtZS5lcXVhbHNJZ25vcmVDYXNlKCJjb250ZW50IikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiVXJpIG5lZWRzIHRvIGhhdmUgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIHNjaGVtZSBmaWxlIG9yIHNjaGVtZSBjb250ZW50Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB1cmkgPSBDb250ZW50UHJvdmlkZXIubWF5YmVBZGRVc2VySWQodXJpLCBVc2VySGFuZGxlLm15VXNlcklkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRVcmlzLmFkZCh1cmkpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgLy8gTWFrZSBjYWxsYmFja3Mgd2l0aG91dCBsb2NrCi0gICAgICAgIGlmIChuZGVmQ2FsbGJhY2sgIT0gbnVsbCkgewotICAgICAgICAgICAgbWVzc2FnZSAgPSBuZGVmQ2FsbGJhY2suY3JlYXRlTmRlZk1lc3NhZ2UoZXZlbnQpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh1cmlzQ2FsbGJhY2sgIT0gbnVsbCkgewotICAgICAgICAgICAgdXJpcyA9IHVyaXNDYWxsYmFjay5jcmVhdGVCZWFtVXJpcyhldmVudCk7Ci0gICAgICAgICAgICBpZiAodXJpcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlMaXN0PFVyaT4gdmFsaWRVcmlzID0gbmV3IEFycmF5TGlzdDxVcmk+KCk7Ci0gICAgICAgICAgICAgICAgZm9yIChVcmkgdXJpIDogdXJpcykgewotICAgICAgICAgICAgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlVyaSBub3QgYWxsb3dlZCB0byBiZSBudWxsLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNjaGVtZSA9IHVyaS5nZXRTY2hlbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVtZSA9PSBudWxsIHx8ICghc2NoZW1lLmVxdWFsc0lnbm9yZUNhc2UoImZpbGUiKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzY2hlbWUuZXF1YWxzSWdub3JlQ2FzZSgiY29udGVudCIpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiVXJpIG5lZWRzIHRvIGhhdmUgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgc2NoZW1lIGZpbGUgb3Igc2NoZW1lIGNvbnRlbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHVyaSA9IENvbnRlbnRQcm92aWRlci5tYXliZUFkZFVzZXJJZCh1cmksIFVzZXJIYW5kbGUubXlVc2VySWQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbGlkVXJpcy5hZGQodXJpKTsKKyAgICAgICAgICAgICAgICAgICAgdXJpcyA9IHZhbGlkVXJpcy50b0FycmF5KG5ldyBVcmlbdmFsaWRVcmlzLnNpemUoKV0pOwogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHVyaXMgPSB2YWxpZFVyaXMudG9BcnJheShuZXcgVXJpW3ZhbGlkVXJpcy5zaXplKCldKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAodXJpcyAhPSBudWxsICYmIHVyaXMubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgZm9yIChVcmkgdXJpIDogdXJpcykgewotICAgICAgICAgICAgICAgIC8vIEdyYW50IHRoZSBORkMgcHJvY2VzcyBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlc2UgVVJJcwotICAgICAgICAgICAgICAgIGFjdGl2aXR5LmdyYW50VXJpUGVybWlzc2lvbigiY29tLmFuZHJvaWQubmZjIiwgdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTik7CisgICAgICAgICAgICBpZiAodXJpcyAhPSBudWxsICYmIHVyaXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGZvciAoVXJpIHVyaSA6IHVyaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gR3JhbnQgdGhlIE5GQyBwcm9jZXNzIHBlcm1pc3Npb24gdG8gcmVhZCB0aGVzZSBVUklzCisgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5LmdyYW50VXJpUGVybWlzc2lvbigiY29tLmFuZHJvaWQubmZjIiwgdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVudC5GTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT04pOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3IEJlYW1TaGFyZURhdGEobWVzc2FnZSwgdXJpcywgbmV3IFVzZXJIYW5kbGUoVXNlckhhbmRsZS5teVVzZXJJZCgpKSwgZmxhZ3MpOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1BhcmNlbEZpbGVEZXNjcmlwdG9yLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9QYXJjZWxGaWxlRGVzY3JpcHRvci5qYXZhCmluZGV4IDEzNWYzNjkuLmQ1NDkxZDMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1BhcmNlbEZpbGVEZXNjcmlwdG9yLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvUGFyY2VsRmlsZURlc2NyaXB0b3IuamF2YQpAQCAtMjMzLDYgKzIzMywxOSBAQAogICAgICAgICBmaW5hbCBGaWxlRGVzY3JpcHRvciBmZCA9IG9wZW5JbnRlcm5hbChmaWxlLCBtb2RlKTsKICAgICAgICAgaWYgKGZkID09IG51bGwpIHJldHVybiBudWxsOwogCisgICAgICAgIHJldHVybiBmcm9tRmQoZmQsIGhhbmRsZXIsIGxpc3RlbmVyKTsKKyAgICB9CisKKyAgICAvKioge0BoaWRlfSAqLworICAgIHB1YmxpYyBzdGF0aWMgUGFyY2VsRmlsZURlc2NyaXB0b3IgZnJvbUZkKAorICAgICAgICAgICAgRmlsZURlc2NyaXB0b3IgZmQsIEhhbmRsZXIgaGFuZGxlciwgZmluYWwgT25DbG9zZUxpc3RlbmVyIGxpc3RlbmVyKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoaGFuZGxlciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJIYW5kbGVyIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGlzdGVuZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTGlzdGVuZXIgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisKICAgICAgICAgZmluYWwgRmlsZURlc2NyaXB0b3JbXSBjb21tID0gY3JlYXRlQ29tbVNvY2tldFBhaXIoKTsKICAgICAgICAgZmluYWwgUGFyY2VsRmlsZURlc2NyaXB0b3IgcGZkID0gbmV3IFBhcmNlbEZpbGVEZXNjcmlwdG9yKGZkLCBjb21tWzBdKTsKICAgICAgICAgZmluYWwgTWVzc2FnZVF1ZXVlIHF1ZXVlID0gaGFuZGxlci5nZXRMb29wZXIoKS5nZXRRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvVXNlck1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL1VzZXJNYW5hZ2VyLmphdmEKaW5kZXggZGRkMTZlMi4uMDM3OTE2YSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvVXNlck1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9Vc2VyTWFuYWdlci5qYXZhCkBAIC0zMSw2ICszMSw3IEBACiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5OwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiBpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zOwpAQCAtNTYsNiArNTcsMTAgQEAKICAgICAgKiBBdXRoZW50aWNhdG9yLgogICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxjb2RlPmZhbHNlPC9jb2RlPi4KICAgICAgKgorICAgICAqIDxwPkZyb20ge0BsaW5rIGFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTl9DT0RFUyNOfSBhIHByb2ZpbGUgb3IgZGV2aWNlIG93bmVyIGFwcCBjYW4gc3RpbGwKKyAgICAgKiB1c2Uge0BsaW5rIGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJ9IEFQSXMgdG8gYWRkIG9yIHJlbW92ZSBhY2NvdW50cyB3aGVuIGFjY291bnQKKyAgICAgKiBtYW5hZ2VtZW50IGlzIGRpc2FsbG93ZWQuCisgICAgICoKICAgICAgKiA8cC8+S2V5IGZvciB1c2VyIHJlc3RyaWN0aW9ucy4KICAgICAgKiA8cC8+VHlwZTogQm9vbGVhbgogICAgICAqIEBzZWUgRGV2aWNlUG9saWN5TWFuYWdlciNhZGRVc2VyUmVzdHJpY3Rpb24oQ29tcG9uZW50TmFtZSwgU3RyaW5nKQpAQCAtODU3LDEyICs4NjIsMTAgQEAKIAogICAgIC8qKiB7QGhpZGV9ICovCiAgICAgcHVibGljIGJvb2xlYW4gaXNVc2VyVW5sb2NrZWQoaW50IHVzZXJJZCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuaXNVc2VyUnVubmluZyh1c2VySWQsCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlci5GTEFHX0FORF9VTkxPQ0tFRCk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogZXZlbnR1YWxseSBwaXZvdCB0aGlzIGJhY2sgdG8gbG9vayBhdCBBY3Rpdml0eU1hbmFnZXIgc3RhdGUsCisgICAgICAgIC8vIGJ1dCB0aGVyZSBpcyByYWNlIHdoZXJlIHdlIGNhbiBzdGFydCBhIG5vbi1lbmNyeXB0aW9uLWF3YXJlIGxhdW5jaGVyCisgICAgICAgIC8vIGJlZm9yZSB0aGF0IGxpZmVjeWNsZSBoYXMgZW50ZXJlZCB0aGUgcnVubmluZyB1bmxvY2tlZCBzdGF0ZS4KKyAgICAgICAgcmV0dXJuIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoU3RvcmFnZU1hbmFnZXIuY2xhc3MpLmlzVXNlcktleVVubG9ja2VkKHVzZXJJZCk7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9JUHJpbnRNYW5hZ2VyLmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9JUHJpbnRNYW5hZ2VyLmFpZGwKaW5kZXggOGZhN2FiOS4uOWE4MGUzNyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvSVByaW50TWFuYWdlci5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L0lQcmludE1hbmFnZXIuYWlkbApAQCAtMTYsNiArMTYsNyBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkljb247CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5JUHJpbnRlckRpc2NvdmVyeU9ic2VydmVyOwogaW1wb3J0IGFuZHJvaWQucHJpbnQuSVByaW50RG9jdW1lbnRBZGFwdGVyOwpAQCAtNTMsNiArNTQsMTkgQEAKICAgICB2b2lkIHN0b3BQcmludGVyRGlzY292ZXJ5KGluIElQcmludGVyRGlzY292ZXJ5T2JzZXJ2ZXIgb2JzZXJ2ZXIsIGludCB1c2VySWQpOwogICAgIHZvaWQgdmFsaWRhdGVQcmludGVycyhpbiBMaXN0PFByaW50ZXJJZD4gcHJpbnRlcklkcywgaW50IHVzZXJJZCk7CiAgICAgdm9pZCBzdGFydFByaW50ZXJTdGF0ZVRyYWNraW5nKGluIFByaW50ZXJJZCBwcmludGVySWQsIGludCB1c2VySWQpOworCisgICAgLyoqCisgICAgICogR2V0IHRoZSBjdXN0b20gaWNvbiBmb3IgYSBwcmludGVyLiBJZiB0aGUgaWNvbiBpcyBub3QgY2FjaGVkLCB0aGUgaWNvbiBpcworICAgICAqIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseS4gT25jZSBpdCBpcyBhdmFpbGFibGUgdGhlIHByaW50ZXIgaXMgdXBkYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIHNob3VsZCBiZSBsb2FkZWQgZm9yCisgICAgICogQHBhcmFtIHVzZXJJZCB0aGUgaWQgb2YgdGhlIHVzZXIgcmVxdWVzdGluZyB0aGUgcHJpbnRlcgorICAgICAqIEByZXR1cm4gdGhlIGN1c3RvbSBpY29uIHRvIGJlIHVzZWQgZm9yIHRoZSBwcmludGVyIG9yIG51bGwgaWYgdGhlIGljb24gaXMKKyAgICAgKiAgICAgICAgIG5vdCB5ZXQgYXZhaWxhYmxlCisgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAqLworICAgIEljb24gZ2V0Q3VzdG9tUHJpbnRlckljb24oaW4gUHJpbnRlcklkIHByaW50ZXJJZCwgaW50IHVzZXJJZCk7CisKICAgICB2b2lkIHN0b3BQcmludGVyU3RhdGVUcmFja2luZyhpbiBQcmludGVySWQgcHJpbnRlcklkLCBpbnQgdXNlcklkKTsKICAgICB2b2lkIGRlc3Ryb3lQcmludGVyRGlzY292ZXJ5U2Vzc2lvbihpbiBJUHJpbnRlckRpc2NvdmVyeU9ic2VydmVyIG9ic2VydmVyLAogICAgICAgICAgICAgaW50IHVzZXJJZCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9JUHJpbnRTcG9vbGVyLmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9JUHJpbnRTcG9vbGVyLmFpZGwKaW5kZXggYjdjZmJlYS4uYzM2MjViOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvSVByaW50U3Bvb2xlci5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L0lQcmludFNwb29sZXIuYWlkbApAQCAtMTcsOSArMTcsMTEgQEAKIHBhY2thZ2UgYW5kcm9pZC5wcmludDsKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSWNvbjsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yOwogaW1wb3J0IGFuZHJvaWQucHJpbnQuSVByaW50U3Bvb2xlckNsaWVudDsKIGltcG9ydCBhbmRyb2lkLnByaW50LklQcmludFNwb29sZXJDYWxsYmFja3M7CitpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVySWQ7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVySW5mbzsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50QXR0cmlidXRlczsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50Sm9iSWQ7CkBAIC01OCw2ICs2MCwzOSBAQAogICAgICAqLwogICAgIHZvaWQgc2V0U3RhdHVzKGluIFByaW50Sm9iSWQgcHJpbnRKb2JJZCwgaW4gQ2hhclNlcXVlbmNlIHN0YXR1cyk7CiAKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgdGhhdCBhIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIgd2FzIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIGJlbG9uZ3MgdG8KKyAgICAgKiBAcGFyYW0gaWNvbiB0aGUgaWNvbiB0aGF0IHdhcyBsb2FkZWQKKyAgICAgKiBAcGFyYW0gY2FsbGJhY2tzIHRoZSBjYWxsYmFjayB0byBjYWxsIG9uY2UgaWNvbiBpcyBzdG9yZWQgaW4gY2FzZQorICAgICAqIEBwYXJhbSBzZXF1ZW5jZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBjYWxsCisgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAqLworICAgIHZvaWQgb25DdXN0b21QcmludGVySWNvbkxvYWRlZChpbiBQcmludGVySWQgcHJpbnRlcklkLCBpbiBJY29uIGljb24sCisgICAgICAgICAgICBpbiBJUHJpbnRTcG9vbGVyQ2FsbGJhY2tzIGNhbGxiYWNrcywgaW4gaW50IHNlcXVlbmNlKTsKKworICAgIC8qKgorICAgICAqIEdldCB0aGUgY3VzdG9tIGljb24gZm9yIGEgcHJpbnRlci4gSWYgdGhlIGljb24gaXMgbm90IGNhY2hlZCwgdGhlIGljb24gaXMKKyAgICAgKiByZXF1ZXN0ZWQgYXN5bmNocm9ub3VzbHkuIE9uY2UgaXQgaXMgYXZhaWxhYmxlIHRoZSBwcmludGVyIGlzIHVwZGF0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJpbnRlcklkIHRoZSBpZCBvZiB0aGUgcHJpbnRlciB0aGUgaWNvbiBzaG91bGQgYmUgbG9hZGVkIGZvcgorICAgICAqIEBwYXJhbSBjYWxsYmFja3MgdGhlIGNhbGxiYWNrIHRvIGNhbGwgb25jZSBpY29uIGlzIHJldHJpZXZlZAorICAgICAqIEBwYXJhbSBzZXF1ZW5jZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBjYWxsCisgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAqLworICAgIHZvaWQgZ2V0Q3VzdG9tUHJpbnRlckljb24oaW4gUHJpbnRlcklkIHByaW50ZXJJZCwKKyAgICAgICAgICAgIGluIElQcmludFNwb29sZXJDYWxsYmFja3MgY2FsbGJhY2tzLCBpbiBpbnQgc2VxdWVuY2UpOworCisgICAgLyoqCisgICAgICogQ2xlYXIgYWxsIHN0YXRlIGZyb20gdGhlIGN1c3RvbSBwcmludGVyIGljb24gY2FjaGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2FsbGJhY2tzIHRoZSBjYWxsYmFjayB0byBjYWxsIG9uY2UgY2FjaGUgaXMgY2xlYXJlZAorICAgICAqIEBwYXJhbSBzZXF1ZW5jZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBjYWxsCisgICAgICovCisgICAgdm9pZCBjbGVhckN1c3RvbVByaW50ZXJJY29uQ2FjaGUoaW4gSVByaW50U3Bvb2xlckNhbGxiYWNrcyBjYWxsYmFja3MsCisgICAgICAgICAgICBpbiBpbnQgc2VxdWVuY2UpOworCiAgICAgdm9pZCBzZXRQcmludEpvYlRhZyhpbiBQcmludEpvYklkIHByaW50Sm9iSWQsIFN0cmluZyB0YWcsIElQcmludFNwb29sZXJDYWxsYmFja3MgY2FsbGJhY2ssCiAgICAgICAgICAgICBpbnQgc2VxdWVuY2UpOwogICAgIHZvaWQgd3JpdGVQcmludEpvYkRhdGEoaW4gUGFyY2VsRmlsZURlc2NyaXB0b3IgZmQsIGluIFByaW50Sm9iSWQgcHJpbnRKb2JJZCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9JUHJpbnRTcG9vbGVyQ2FsbGJhY2tzLmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9JUHJpbnRTcG9vbGVyQ2FsbGJhY2tzLmFpZGwKaW5kZXggNDVjNTMzMi4uMjNkNzA2YSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvSVByaW50U3Bvb2xlckNhbGxiYWNrcy5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L0lQcmludFNwb29sZXJDYWxsYmFja3MuYWlkbApAQCAtMTYsNyArMTYsOSBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkljb247CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludEpvYkluZm87CitpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVySWQ7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiAKIC8qKgpAQCAtMzIsNCArMzQsMjcgQEAKICAgICB2b2lkIG9uU2V0UHJpbnRKb2JTdGF0ZVJlc3VsdChib29sZWFuIHN1Y2Nlc3MsIGludCBzZXF1ZW5jZSk7CiAgICAgdm9pZCBvblNldFByaW50Sm9iVGFnUmVzdWx0KGJvb2xlYW4gc3VjY2VzcywgaW50IHNlcXVlbmNlKTsKICAgICB2b2lkIG9uR2V0UHJpbnRKb2JJbmZvUmVzdWx0KGluIFByaW50Sm9iSW5mbyBwcmludEpvYiwgaW50IHNlcXVlbmNlKTsKKworICAgIC8qKgorICAgICAqIERlbGl2ZXIgdGhlIHJlc3VsdCBvZiBhIHJlcXVlc3Qgb2YgYSBjdXN0b20gcHJpbnRlciBpY29uLgorICAgICAqCisgICAgICogQHBhcmFtIGljb24gdGhlIGljb24gdGhhdCB3YXMgcmV0cmlldmVkLCBvciBudWxsIGlmIG5vIGljb24gY291bGQgYmUKKyAgICAgKiAgICAgICAgICAgICBmb3VuZAorICAgICAqIEBwYXJhbSBzZXF1ZW5jZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBjYWxsIHRvIGdldCB0aGUgaWNvbgorICAgICAqLworICAgIHZvaWQgb25HZXRDdXN0b21QcmludGVySWNvblJlc3VsdChpbiBJY29uIGljb24sIGludCBzZXF1ZW5jZSk7CisKKyAgICAvKioKKyAgICAgKiBEZWNsYXJlIHRoYXQgdGhlIHByaW50IHNwb29sZXIgY2FjaGVkIGEgY3VzdG9tIHByaW50ZXIgaWNvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzZXF1ZW5jZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBjYWxsIHRvIGNhY2hlIHRoZSBpY29uCisgICAgICovCisgICAgdm9pZCBvbkN1c3RvbVByaW50ZXJJY29uQ2FjaGVkKGludCBzZXF1ZW5jZSk7CisKKyAgICAvKioKKyAgICAgKiBEZWNsYXJlIHRoYXQgdGhlIGN1c3RvbSBwcmludGVyIGljb24gY2FjaGUgd2FzIGNsZWFyZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2VxdWVuY2UgdGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgY2FsbCB0byBjbGVhciB0aGUgY2FjaGUKKyAgICAgKi8KKyAgICB2b2lkIGN1c3RvbVByaW50ZXJJY29uQ2FjaGVDbGVhcmVkKGludCBzZXF1ZW5jZSk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QYWdlUmFuZ2UuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1BhZ2VSYW5nZS5qYXZhCmluZGV4IDhiYzE1N2EuLjU3Yzc3MTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1BhZ2VSYW5nZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1BhZ2VSYW5nZS5qYXZhCkBAIC0xNiw2ICsxNiw4IEBACiAKIHBhY2thZ2UgYW5kcm9pZC5wcmludDsKIAoraW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5JbnRSYW5nZTsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CiAKQEAgLTQyLDcgKzQ0LDcgQEAKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBJZiBzdGFydCBpcyBsZXNzIHRoYW4gemVybyBvciBlbmQKICAgICAgKiBpcyBsZXNzIHRoYW4gemVybyBvciBzdGFydCBncmVhdGVyIHRoYW4gZW5kLgogICAgICAqLwotICAgIHB1YmxpYyBQYWdlUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgcHVibGljIFBhZ2VSYW5nZShASW50UmFuZ2UoZnJvbSA9IDApIGludCBzdGFydCwgQEludFJhbmdlKGZyb20gPSAwKSBpbnQgZW5kKSB7CiAgICAgICAgIGlmIChzdGFydCA8IDApIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInN0YXJ0IGNhbm5vdCBiZSBsZXNzIHRoYW4gemVyby4iKTsKICAgICAgICAgfQpAQCAtNTYsNyArNTgsNyBAQAogICAgICAgICBtRW5kID0gZW5kOwogICAgIH0KIAotICAgIHByaXZhdGUgUGFnZVJhbmdlIChQYXJjZWwgcGFyY2VsKSB7CisgICAgcHJpdmF0ZSBQYWdlUmFuZ2UoQE5vbk51bGwgUGFyY2VsIHBhcmNlbCkgewogICAgICAgICB0aGlzKHBhcmNlbC5yZWFkSW50KCksIHBhcmNlbC5yZWFkSW50KCkpOwogICAgIH0KIApAQCAtNjUsNyArNjcsNyBAQAogICAgICAqCiAgICAgICogQHJldHVybiBUaGUgc3RhcnQgcGFnZSBpbmRleC4KICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFN0YXJ0KCkgeworICAgIHB1YmxpYyBASW50UmFuZ2UoZnJvbSA9IDApIGludCBnZXRTdGFydCgpIHsKICAgICAgICAgcmV0dXJuIG1TdGFydDsKICAgICB9CiAKQEAgLTc0LDcgKzc2LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIGVuZCBwYWdlIGluZGV4LgogICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0RW5kKCkgeworICAgIHB1YmxpYyBASW50UmFuZ2UoZnJvbSA9IDApIGludCBnZXRFbmQoKSB7CiAgICAgICAgIHJldHVybiBtRW5kOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRBdHRyaWJ1dGVzLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludEF0dHJpYnV0ZXMuamF2YQppbmRleCAyYWZiYjk5Li44ODkyZTM0IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludEF0dHJpYnV0ZXMuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludEF0dHJpYnV0ZXMuamF2YQpAQCAtMTYsNiArMTYsMTAgQEAKIAogcGFja2FnZSBhbmRyb2lkLnByaW50OwogCitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLkludERlZjsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uSW50UmFuZ2U7CitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLk5vbk51bGw7CitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLk51bGxhYmxlOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uOwpAQCAtMjcsNiArMzEsOCBAQAogCiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKIAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3k7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIAogLyoqCkBAIC0zNyw2ICs0MywxMyBAQAogICogMTAgbWlsbHMgKHRob3VzYW5kIG9mIGFuIGluY2gpIG9uIGFsbCBzaWRlcywgYW5kIGJlIGJsYWNrIGFuZCB3aGl0ZS4KICAqLwogcHVibGljIGZpbmFsIGNsYXNzIFByaW50QXR0cmlidXRlcyBpbXBsZW1lbnRzIFBhcmNlbGFibGUgeworICAgIC8qKiBAaGlkZSAqLworICAgIEBSZXRlbnRpb24oUmV0ZW50aW9uUG9saWN5LlNPVVJDRSkKKyAgICBASW50RGVmKGZsYWcgPSB0cnVlLCB2YWx1ZSA9IHsKKyAgICAgICAgICAgIENPTE9SX01PREVfTU9OT0NIUk9NRSwgQ09MT1JfTU9ERV9DT0xPUgorICAgIH0pCisgICAgcHVibGljIEBpbnRlcmZhY2UgQ29sb3JNb2RlIHsKKyAgICB9CiAgICAgLyoqIENvbG9yIG1vZGU6IE1vbm9jaHJvbWUgY29sb3Igc2NoZW1lLCBmb3IgZXhhbXBsZSBvbmUgY29sb3IgaXMgdXNlZC4gKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT0xPUl9NT0RFX01PTk9DSFJPTUUgPSAxIDw8IDA7CiAgICAgLyoqIENvbG9yIG1vZGU6IENvbG9yIGNvbG9yIHNjaGVtZSwgZm9yIGV4YW1wbGUgbWFueSBjb2xvcnMgYXJlIHVzZWQuICovCkBAIC00NSw2ICs1OCwxMyBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBWQUxJRF9DT0xPUl9NT0RFUyA9CiAgICAgICAgICAgICBDT0xPUl9NT0RFX01PTk9DSFJPTUUgfCBDT0xPUl9NT0RFX0NPTE9SOwogCisgICAgLyoqIEBoaWRlICovCisgICAgQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuU09VUkNFKQorICAgIEBJbnREZWYoZmxhZyA9IHRydWUsIHZhbHVlID0geworICAgICAgICAgICAgRFVQTEVYX01PREVfTk9ORSwgRFVQTEVYX01PREVfTE9OR19FREdFLCBEVVBMRVhfTU9ERV9TSE9SVF9FREdFCisgICAgfSkKKyAgICBwdWJsaWMgQGludGVyZmFjZSBEdXBsZXhNb2RlIHsKKyAgICB9CiAgICAgLyoqIER1cGxleCBtb2RlOiBObyBkdXBsZXhpbmcuICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRFVQTEVYX01PREVfTk9ORSA9IDEgPDwgMDsKICAgICAvKiogRHVwbGV4IG1vZGU6IFBhZ2VzIGFyZSB0dXJuZWQgc2lkZXdheXMgYWxvbmcgdGhlIGxvbmcgZWRnZSAtIGxpa2UgYSBib29rLiAqLwpAQCAtNjYsNyArODYsNyBAQAogICAgICAgICAvKiBoaWRlIGNvbnN0cnVjdG9yICovCiAgICAgfQogCi0gICAgcHJpdmF0ZSBQcmludEF0dHJpYnV0ZXMoUGFyY2VsIHBhcmNlbCkgeworICAgIHByaXZhdGUgUHJpbnRBdHRyaWJ1dGVzKEBOb25OdWxsIFBhcmNlbCBwYXJjZWwpIHsKICAgICAgICAgbU1lZGlhU2l6ZSA9IChwYXJjZWwucmVhZEludCgpID09ICAxKSA/IE1lZGlhU2l6ZS5jcmVhdGVGcm9tUGFyY2VsKHBhcmNlbCkgOiBudWxsOwogICAgICAgICBtUmVzb2x1dGlvbiA9IChwYXJjZWwucmVhZEludCgpID09ICAxKSA/IFJlc29sdXRpb24uY3JlYXRlRnJvbVBhcmNlbChwYXJjZWwpIDogbnVsbDsKICAgICAgICAgbU1pbk1hcmdpbnMgPSAocGFyY2VsLnJlYWRJbnQoKSA9PSAgMSkgPyBNYXJnaW5zLmNyZWF0ZUZyb21QYXJjZWwocGFyY2VsKSA6IG51bGw7CkBAIC03OSw3ICs5OSw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBtZWRpYSBzaXplIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzZXQuCiAgICAgICovCi0gICAgcHVibGljIE1lZGlhU2l6ZSBnZXRNZWRpYVNpemUoKSB7CisgICAgcHVibGljIEBOdWxsYWJsZSBNZWRpYVNpemUgZ2V0TWVkaWFTaXplKCkgewogICAgICAgICByZXR1cm4gbU1lZGlhU2l6ZTsKICAgICB9CiAKQEAgLTk5LDcgKzExOSw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSByZXNvbHV0aW9uIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzZXQuCiAgICAgICovCi0gICAgcHVibGljIFJlc29sdXRpb24gZ2V0UmVzb2x1dGlvbigpIHsKKyAgICBwdWJsaWMgQE51bGxhYmxlIFJlc29sdXRpb24gZ2V0UmVzb2x1dGlvbigpIHsKICAgICAgICAgcmV0dXJuIG1SZXNvbHV0aW9uOwogICAgIH0KIApAQCAtMTI3LDcgKzE0Nyw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBtYXJnaW5zIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzZXQuCiAgICAgICovCi0gICAgcHVibGljIE1hcmdpbnMgZ2V0TWluTWFyZ2lucygpIHsKKyAgICBwdWJsaWMgQE51bGxhYmxlIE1hcmdpbnMgZ2V0TWluTWFyZ2lucygpIHsKICAgICAgICAgcmV0dXJuIG1NaW5NYXJnaW5zOwogICAgIH0KIApAQCAtMTU4LDcgKzE3OCw3IEBACiAgICAgICogQHNlZSAjQ09MT1JfTU9ERV9DT0xPUgogICAgICAqIEBzZWUgI0NPTE9SX01PREVfTU9OT0NIUk9NRQogICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0Q29sb3JNb2RlKCkgeworICAgIHB1YmxpYyBAQ29sb3JNb2RlIGludCBnZXRDb2xvck1vZGUoKSB7CiAgICAgICAgIHJldHVybiBtQ29sb3JNb2RlOwogICAgIH0KIApAQCAtMTk5LDcgKzIxOSw3IEBACiAgICAgICogQHNlZSAjRFVQTEVYX01PREVfTE9OR19FREdFCiAgICAgICogQHNlZSAjRFVQTEVYX01PREVfU0hPUlRfRURHRQogICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0RHVwbGV4TW9kZSgpIHsKKyAgICBwdWJsaWMgQER1cGxleE1vZGUgaW50IGdldER1cGxleE1vZGUoKSB7CiAgICAgICAgIHJldHVybiBtRHVwbGV4TW9kZTsKICAgICB9CiAKQEAgLTgyOCw3ICs4NDgsOCBAQAogICAgICAgICAgKiBvciB0aGUgd2lkdGhNaWxzIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvIG9yIHRoZSBoZWlnaHRNaWxzIGlzIGxlc3MKICAgICAgICAgICogdGhhbiBvciBlcXVhbCB0byB6ZXJvLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIE1lZGlhU2l6ZShTdHJpbmcgaWQsIFN0cmluZyBsYWJlbCwgaW50IHdpZHRoTWlscywgaW50IGhlaWdodE1pbHMpIHsKKyAgICAgICAgcHVibGljIE1lZGlhU2l6ZShATm9uTnVsbCBTdHJpbmcgaWQsIEBOb25OdWxsIFN0cmluZyBsYWJlbCwKKyAgICAgICAgICAgICAgICBASW50UmFuZ2UoZnJvbSA9IDEpIGludCB3aWR0aE1pbHMsIEBJbnRSYW5nZShmcm9tID0gMSkgaW50IGhlaWdodE1pbHMpIHsKICAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShpZCkpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpZCBjYW5ub3QgYmUgZW1wdHkuIik7CiAgICAgICAgICAgICB9CkBAIC04NzIsNyArODkzLDcgQEAKICAgICAgICAgICoKICAgICAgICAgICogQHJldHVybiBUaGUgdW5pcXVlIG1lZGlhIHNpemUgaWQuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgU3RyaW5nIGdldElkKCkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgU3RyaW5nIGdldElkKCkgewogICAgICAgICAgICAgcmV0dXJuIG1JZDsKICAgICAgICAgfQogCkBAIC04ODIsNyArOTAzLDcgQEAKICAgICAgICAgICogQHBhcmFtIHBhY2thZ2VNYW5hZ2VyIFRoZSBwYWNrYWdlIG1hbmFnZXIgZm9yIGxvYWRpbmcgdGhlIGxhYmVsLgogICAgICAgICAgKiBAcmV0dXJuIFRoZSBodW1hbiByZWFkYWJsZSBsYWJlbC4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TGFiZWwoUGFja2FnZU1hbmFnZXIgcGFja2FnZU1hbmFnZXIpIHsKKyAgICAgICAgcHVibGljIEBOb25OdWxsIFN0cmluZyBnZXRMYWJlbChATm9uTnVsbCBQYWNrYWdlTWFuYWdlciBwYWNrYWdlTWFuYWdlcikgewogICAgICAgICAgICAgaWYgKCFUZXh0VXRpbHMuaXNFbXB0eShtUGFja2FnZU5hbWUpICYmIG1MYWJlbFJlc0lkID4gMCkgewogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWNrYWdlTWFuYWdlci5nZXRSZXNvdXJjZXNGb3JBcHBsaWNhdGlvbigKQEAgLTkwMyw3ICs5MjQsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSBtZWRpYSB3aWR0aC4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0V2lkdGhNaWxzKCkgeworICAgICAgICBwdWJsaWMgQEludFJhbmdlKGZyb20gPSAxKSBpbnQgZ2V0V2lkdGhNaWxzKCkgewogICAgICAgICAgICAgcmV0dXJuIG1XaWR0aE1pbHM7CiAgICAgICAgIH0KIApAQCAtOTEyLDcgKzkzMyw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gVGhlIG1lZGlhIGhlaWdodC4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0SGVpZ2h0TWlscygpIHsKKyAgICAgICAgcHVibGljIEBJbnRSYW5nZShmcm9tID0gMSkgaW50IGdldEhlaWdodE1pbHMoKSB7CiAgICAgICAgICAgICByZXR1cm4gbUhlaWdodE1pbHM7CiAgICAgICAgIH0KIApAQCAtOTM0LDcgKzk1NSw3IEBACiAgICAgICAgICAqIEByZXR1cm4gTmV3IGluc3RhbmNlIGluIGxhbmRzY2FwZSBvcmllbnRhdGlvbiBpZiB0aGlzIG9uZQogICAgICAgICAgKiBpcyBpbiBsYW5kc2NhcGUsIG90aGVyd2lzZSB0aGlzIGluc3RhbmNlLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIE1lZGlhU2l6ZSBhc1BvcnRyYWl0KCkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgTWVkaWFTaXplIGFzUG9ydHJhaXQoKSB7CiAgICAgICAgICAgICBpZiAoaXNQb3J0cmFpdCgpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICB9CkBAIC05NTEsNyArOTcyLDcgQEAKICAgICAgICAgICogQHJldHVybiBOZXcgaW5zdGFuY2UgaW4gbGFuZHNjYXBlIG9yaWVudGF0aW9uIGlmIHRoaXMgb25lCiAgICAgICAgICAqIGlzIGluIHBvcnRyYWl0LCBvdGhlcndpc2UgdGhpcyBpbnN0YW5jZS4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBNZWRpYVNpemUgYXNMYW5kc2NhcGUoKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBNZWRpYVNpemUgYXNMYW5kc2NhcGUoKSB7CiAgICAgICAgICAgICBpZiAoIWlzUG9ydHJhaXQoKSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICAgfQpAQCAtMTA2Myw3ICsxMDg0LDggQEAKICAgICAgICAgICogb3IgdGhlIGhvcml6b250YWxEcGkgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8gb3IgdGhlIHZlcnRpY2FsRHBpIGlzCiAgICAgICAgICAqIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIFJlc29sdXRpb24oU3RyaW5nIGlkLCBTdHJpbmcgbGFiZWwsIGludCBob3Jpem9udGFsRHBpLCBpbnQgdmVydGljYWxEcGkpIHsKKyAgICAgICAgcHVibGljIFJlc29sdXRpb24oQE5vbk51bGwgU3RyaW5nIGlkLCBATm9uTnVsbCBTdHJpbmcgbGFiZWwsCisgICAgICAgICAgICAgICAgQEludFJhbmdlKGZyb20gPSAxKSBpbnQgaG9yaXpvbnRhbERwaSwgQEludFJhbmdlKGZyb20gPSAxKSBpbnQgdmVydGljYWxEcGkpIHsKICAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShpZCkpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpZCBjYW5ub3QgYmUgZW1wdHkuIik7CiAgICAgICAgICAgICB9CkBAIC0xMDk0LDcgKzExMTYsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSB1bmlxdWUgcmVzb2x1dGlvbiBpZC4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBTdHJpbmcgZ2V0SWQoKSB7CiAgICAgICAgICAgICByZXR1cm4gbUlkOwogICAgICAgICB9CiAKQEAgLTExMDMsNyArMTEyNSw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gVGhlIGh1bWFuIHJlYWRhYmxlIGxhYmVsLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIFN0cmluZyBnZXRMYWJlbCgpIHsKKyAgICAgICAgcHVibGljIEBOb25OdWxsIFN0cmluZyBnZXRMYWJlbCgpIHsKICAgICAgICAgICAgIHJldHVybiBtTGFiZWw7CiAgICAgICAgIH0KIApAQCAtMTExMiw3ICsxMTM0LDcgQEAKICAgICAgICAgICoKICAgICAgICAgICogQHJldHVybiBUaGUgaG9yaXpvbnRhbCByZXNvbHV0aW9uLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIGludCBnZXRIb3Jpem9udGFsRHBpKCkgeworICAgICAgICBwdWJsaWMgQEludFJhbmdlKGZyb20gPSAxKSBpbnQgZ2V0SG9yaXpvbnRhbERwaSgpIHsKICAgICAgICAgICAgIHJldHVybiBtSG9yaXpvbnRhbERwaTsKICAgICAgICAgfQogCkBAIC0xMTIxLDcgKzExNDMsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSB2ZXJ0aWNhbCByZXNvbHV0aW9uLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIGludCBnZXRWZXJ0aWNhbERwaSgpIHsKKyAgICAgICAgcHVibGljIEBJbnRSYW5nZShmcm9tID0gMSkgaW50IGdldFZlcnRpY2FsRHBpKCkgewogICAgICAgICAgICAgcmV0dXJuIG1WZXJ0aWNhbERwaTsKICAgICAgICAgfQogCkBAIC0xMjA0LDcgKzEyMjYsOCBAQAogICAgICAgICAgKiBAcGFyYW0gcmlnaHRNaWxzIFRoZSByaWdodCBtYXJnaW4gaW4gbWlscyAodGhvdXNhbmRzIG9mIGFuIGluY2gpLgogICAgICAgICAgKiBAcGFyYW0gYm90dG9tTWlscyBUaGUgYm90dG9tIG1hcmdpbiBpbiBtaWxzICh0aG91c2FuZHMgb2YgYW4gaW5jaCkuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgTWFyZ2lucyhpbnQgbGVmdE1pbHMsIGludCB0b3BNaWxzLCBpbnQgcmlnaHRNaWxzLCBpbnQgYm90dG9tTWlscykgeworICAgICAgICBwdWJsaWMgTWFyZ2lucyhASW50UmFuZ2UoZnJvbSA9IDApIGludCBsZWZ0TWlscywgQEludFJhbmdlKGZyb20gPSAwKSBpbnQgdG9wTWlscywKKyAgICAgICAgICAgICAgICBASW50UmFuZ2UoZnJvbSA9IDApIGludCByaWdodE1pbHMsIEBJbnRSYW5nZShmcm9tID0gMCkgaW50IGJvdHRvbU1pbHMpIHsKICAgICAgICAgICAgIG1Ub3BNaWxzID0gdG9wTWlsczsKICAgICAgICAgICAgIG1MZWZ0TWlscyA9IGxlZnRNaWxzOwogICAgICAgICAgICAgbVJpZ2h0TWlscyA9IHJpZ2h0TWlsczsKQEAgLTEyMTYsNyArMTIzOSw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gVGhlIGxlZnQgbWFyZ2luLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIGludCBnZXRMZWZ0TWlscygpIHsKKyAgICAgICAgcHVibGljIEBJbnRSYW5nZShmcm9tID0gMCkgaW50IGdldExlZnRNaWxzKCkgewogICAgICAgICAgICAgcmV0dXJuIG1MZWZ0TWlsczsKICAgICAgICAgfQogCkBAIC0xMjI1LDcgKzEyNDgsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSB0b3AgbWFyZ2luLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIGludCBnZXRUb3BNaWxzKCkgeworICAgICAgICBwdWJsaWMgQEludFJhbmdlKGZyb20gPSAwKSBpbnQgZ2V0VG9wTWlscygpIHsKICAgICAgICAgICAgIHJldHVybiBtVG9wTWlsczsKICAgICAgICAgfQogCkBAIC0xMjM0LDcgKzEyNTcsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSByaWdodCBtYXJnaW4uCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgaW50IGdldFJpZ2h0TWlscygpIHsKKyAgICAgICAgcHVibGljIEBJbnRSYW5nZShmcm9tID0gMCkgaW50IGdldFJpZ2h0TWlscygpIHsKICAgICAgICAgICAgIHJldHVybiBtUmlnaHRNaWxzOwogICAgICAgICB9CiAKQEAgLTEyNDMsNyArMTI2Niw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gVGhlIGJvdHRvbSBtYXJnaW4uCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgaW50IGdldEJvdHRvbU1pbHMoKSB7CisgICAgICAgIHB1YmxpYyBASW50UmFuZ2UoZnJvbSA9IDApIGludCBnZXRCb3R0b21NaWxzKCkgewogICAgICAgICAgICAgcmV0dXJuIG1Cb3R0b21NaWxzOwogICAgICAgICB9CiAKQEAgLTEzNjgsNyArMTM5MSw3IEBACiAgICAgICAgICAqIEBwYXJhbSBtZWRpYVNpemUgVGhlIG1lZGlhIHNpemUuCiAgICAgICAgICAqIEByZXR1cm4gVGhpcyBidWlsZGVyLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgc2V0TWVkaWFTaXplKE1lZGlhU2l6ZSBtZWRpYVNpemUpIHsKKyAgICAgICAgcHVibGljIEBOb25OdWxsIEJ1aWxkZXIgc2V0TWVkaWFTaXplKEBOb25OdWxsIE1lZGlhU2l6ZSBtZWRpYVNpemUpIHsKICAgICAgICAgICAgIG1BdHRyaWJ1dGVzLnNldE1lZGlhU2l6ZShtZWRpYVNpemUpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KQEAgLTEzNzksNyArMTQwMiw3IEBACiAgICAgICAgICAqIEBwYXJhbSByZXNvbHV0aW9uIFRoZSByZXNvbHV0aW9uLgogICAgICAgICAgKiBAcmV0dXJuIFRoaXMgYnVpbGRlci4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIHNldFJlc29sdXRpb24oUmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIHNldFJlc29sdXRpb24oQE5vbk51bGwgUmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICBtQXR0cmlidXRlcy5zZXRSZXNvbHV0aW9uKHJlc29sdXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KQEAgLTEzOTEsNyArMTQxNCw3IEBACiAgICAgICAgICAqIEBwYXJhbSBtYXJnaW5zIFRoZSBtYXJnaW5zLgogICAgICAgICAgKiBAcmV0dXJuIFRoaXMgYnVpbGRlci4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIHNldE1pbk1hcmdpbnMoTWFyZ2lucyBtYXJnaW5zKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIHNldE1pbk1hcmdpbnMoQE5vbk51bGwgTWFyZ2lucyBtYXJnaW5zKSB7CiAgICAgICAgICAgICBtQXR0cmlidXRlcy5zZXRNaW5NYXJnaW5zKG1hcmdpbnMpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KQEAgLTE0MDUsNyArMTQyOCw3IEBACiAgICAgICAgICAqIEBzZWUgUHJpbnRBdHRyaWJ1dGVzI0NPTE9SX01PREVfTU9OT0NIUk9NRQogICAgICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcyNDT0xPUl9NT0RFX0NPTE9SCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlciBzZXRDb2xvck1vZGUoaW50IGNvbG9yTW9kZSkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXRDb2xvck1vZGUoQENvbG9yTW9kZSBpbnQgY29sb3JNb2RlKSB7CiAgICAgICAgICAgICBtQXR0cmlidXRlcy5zZXRDb2xvck1vZGUoY29sb3JNb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CkBAIC0xNDIwLDcgKzE0NDMsNyBAQAogICAgICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcyNEVVBMRVhfTU9ERV9MT05HX0VER0UKICAgICAgICAgICogQHNlZSBQcmludEF0dHJpYnV0ZXMjRFVQTEVYX01PREVfU0hPUlRfRURHRQogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgc2V0RHVwbGV4TW9kZShpbnQgZHVwbGV4TW9kZSkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXREdXBsZXhNb2RlKEBEdXBsZXhNb2RlIGludCBkdXBsZXhNb2RlKSB7CiAgICAgICAgICAgICBtQXR0cmlidXRlcy5zZXREdXBsZXhNb2RlKGR1cGxleE1vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KQEAgLTE0MzAsNyArMTQ1Myw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gVGhlIG5ldyBpbnN0YW5jZS4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBQcmludEF0dHJpYnV0ZXMgYnVpbGQoKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBQcmludEF0dHJpYnV0ZXMgYnVpbGQoKSB7CiAgICAgICAgICAgICByZXR1cm4gbUF0dHJpYnV0ZXM7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludERvY3VtZW50SW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnREb2N1bWVudEluZm8uamF2YQppbmRleCA0NGU2NDEwLi5kYjNiNmY0IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludERvY3VtZW50SW5mby5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50RG9jdW1lbnRJbmZvLmphdmEKQEAgLTE2LDEwICsxNiwxNiBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uSW50RGVmOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5JbnRSYW5nZTsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKIAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3k7CisKIC8qKgogICogVGhpcyBjbGFzcyBlbmNhcHN1bGF0ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBkb2N1bWVudCBmb3IgcHJpbnRpbmcKICAqIHB1cnBvc2VzLiBUaGlzIG1ldGEtZGF0YSBpcyB1c2VkIGJ5IHRoZSBwbGF0Zm9ybSBhbmQgcHJpbnQgc2VydmljZXMsCkBAIC03NCw2ICs4MCwxMyBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBR0VfQ09VTlRfVU5LTk9XTiA9IC0xOwogCisgICAgLyoqIEBoaWRlICovCisgICAgQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuU09VUkNFKQorICAgIEBJbnREZWYoeworICAgICAgICAgICAgQ09OVEVOVF9UWVBFX1VOS05PV04sIENPTlRFTlRfVFlQRV9ET0NVTUVOVCwgQ09OVEVOVF9UWVBFX1BIT1RPCisgICAgfSkKKyAgICBwdWJsaWMgQGludGVyZmFjZSBDb250ZW50VHlwZSB7CisgICAgfQogICAgIC8qKgogICAgICAqIENvbnRlbnQgdHlwZTogdW5rbm93bi4KICAgICAgKi8KQEAgLTExNiw5ICsxMjksOSBAQAogICAgIC8qKgogICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gUHJvdG90eXBlIGZyb20gd2hpY2ggdG8gY2xvbmUuCisgICAgICogQHBhcmFtIHByb3RvdHlwZSBmcm9tIHdoaWNoIHRvIGNsb25lLgogICAgICAqLwotICAgIHByaXZhdGUgUHJpbnREb2N1bWVudEluZm8oUHJpbnREb2N1bWVudEluZm8gcHJvdG90eXBlKSB7CisgICAgcHJpdmF0ZSBQcmludERvY3VtZW50SW5mbyhATm9uTnVsbCBQcmludERvY3VtZW50SW5mbyBwcm90b3R5cGUpIHsKICAgICAgICAgbU5hbWUgPSBwcm90b3R5cGUubU5hbWU7CiAgICAgICAgIG1QYWdlQ291bnQgPSBwcm90b3R5cGUubVBhZ2VDb3VudDsKICAgICAgICAgbUNvbnRlbnRUeXBlID0gcHJvdG90eXBlLm1Db250ZW50VHlwZTsKQEAgLTE0Myw3ICsxNTYsNyBAQAogICAgICAqCiAgICAgICogQHJldHVybiBUaGUgZG9jdW1lbnQgbmFtZS4KICAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgcHVibGljIEBOb25OdWxsIFN0cmluZyBnZXROYW1lKCkgewogICAgICAgICByZXR1cm4gbU5hbWU7CiAgICAgfQogCkBAIC0xNTQsNyArMTY3LDcgQEAKICAgICAgKgogICAgICAqIEBzZWUgI1BBR0VfQ09VTlRfVU5LTk9XTgogICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0UGFnZUNvdW50KCkgeworICAgIHB1YmxpYyBASW50UmFuZ2UoZnJvbSA9IC0xKSBpbnQgZ2V0UGFnZUNvdW50KCkgewogICAgICAgICByZXR1cm4gbVBhZ2VDb3VudDsKICAgICB9CiAKQEAgLTE2Nyw3ICsxODAsNyBAQAogICAgICAqIEBzZWUgI0NPTlRFTlRfVFlQRV9ET0NVTUVOVAogICAgICAqIEBzZWUgI0NPTlRFTlRfVFlQRV9QSE9UTwogICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0Q29udGVudFR5cGUoKSB7CisgICAgcHVibGljIEBDb250ZW50VHlwZSBpbnQgZ2V0Q29udGVudFR5cGUoKSB7CiAgICAgICAgIHJldHVybiBtQ29udGVudFR5cGU7CiAgICAgfQogCkBAIC0xNzYsNyArMTg5LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIGRhdGEgc2l6ZS4KICAgICAgKi8KLSAgICBwdWJsaWMgbG9uZyBnZXREYXRhU2l6ZSgpIHsKKyAgICBwdWJsaWMgQEludFJhbmdlKGZyb20gPSAwKSBsb25nIGdldERhdGFTaXplKCkgewogICAgICAgICByZXR1cm4gbURhdGFTaXplOwogICAgIH0KIApAQCAtMTg3LDcgKzIwMCw3IEBACiAgICAgICoKICAgICAgKiBAaGlkZQogICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldERhdGFTaXplKGxvbmcgZGF0YVNpemUpIHsKKyAgICBwdWJsaWMgdm9pZCBzZXREYXRhU2l6ZShASW50UmFuZ2UoZnJvbSA9IDApIGxvbmcgZGF0YVNpemUpIHsKICAgICAgICAgbURhdGFTaXplID0gZGF0YVNpemU7CiAgICAgfQogCkBAIC0yODgsNyArMzAxLDcgQEAKICAgICAgICAgICogaXMgdGhlIGZpbGUgbmFtZSBpZiB0aGUgY29udGVudCBpdCBkZXNjcmliZXMgaXMgc2F2ZWQgYXMgYSBQREYuCiAgICAgICAgICAqIENhbm5vdCBiZSBlbXB0eS4gCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlcihTdHJpbmcgbmFtZSkgeworICAgICAgICBwdWJsaWMgQnVpbGRlcihATm9uTnVsbCBTdHJpbmcgbmFtZSkgewogICAgICAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibmFtZSBjYW5ub3QgYmUgZW1wdHkiKTsKICAgICAgICAgICAgIH0KQEAgLTMwMiwxMCArMzE1LDExIEBACiAgICAgICAgICAqIDxzdHJvbmc+RGVmYXVsdDogPC9zdHJvbmc+IHtAbGluayAjUEFHRV9DT1VOVF9VTktOT1dOfQogICAgICAgICAgKiA8L3A+CiAgICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBwYWdlQ291bnQgVGhlIG51bWJlciBvZiBwYWdlcy4gTXVzdCBiZSBncmVhdGVyIHRoYW4KLSAgICAgICAgICogb3IgZXF1YWwgdG8gemVybyBvciB7QGxpbmsgUHJpbnREb2N1bWVudEluZm8jUEFHRV9DT1VOVF9VTktOT1dOfS4KKyAgICAgICAgICogQHBhcmFtIHBhZ2VDb3VudCBUaGUgbnVtYmVyIG9mIHBhZ2VzLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvIG9yCisgICAgICAgICAqICAgICAgICAgICAge0BsaW5rIFByaW50RG9jdW1lbnRJbmZvI1BBR0VfQ09VTlRfVU5LTk9XTn0uCisgICAgICAgICAqIEByZXR1cm4gVGhpcyBidWlsZGVyLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgc2V0UGFnZUNvdW50KGludCBwYWdlQ291bnQpIHsKKyAgICAgICAgcHVibGljIEBOb25OdWxsIEJ1aWxkZXIgc2V0UGFnZUNvdW50KEBJbnRSYW5nZShmcm9tID0gLTEpIGludCBwYWdlQ291bnQpIHsKICAgICAgICAgICAgIGlmIChwYWdlQ291bnQgPCAwICYmIHBhZ2VDb3VudCAhPSBQQUdFX0NPVU5UX1VOS05PV04pIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwYWdlQ291bnQiCiAgICAgICAgICAgICAgICAgICAgICAgICArICIgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybyBvciIKQEAgLTMyMiwxMiArMzM2LDEyIEBACiAgICAgICAgICAqIDwvcD4KICAgICAgICAgICoKICAgICAgICAgICogQHBhcmFtIHR5cGUgVGhlIGNvbnRlbnQgdHlwZS4KLSAgICAgICAgICoKKyAgICAgICAgICogQHJldHVybiBUaGlzIGJ1aWxkZXIuCiAgICAgICAgICAqIEBzZWUgI0NPTlRFTlRfVFlQRV9VTktOT1dOCiAgICAgICAgICAqIEBzZWUgI0NPTlRFTlRfVFlQRV9ET0NVTUVOVAogICAgICAgICAgKiBAc2VlICNDT05URU5UX1RZUEVfUEhPVE8KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIHNldENvbnRlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIHNldENvbnRlbnRUeXBlKEBDb250ZW50VHlwZSBpbnQgdHlwZSkgewogICAgICAgICAgICAgbVByb3RvdHlwZS5tQ29udGVudFR5cGUgPSB0eXBlOwogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KQEAgLTMzNyw3ICszNTEsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSBuZXcgaW5zdGFuY2UuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgUHJpbnREb2N1bWVudEluZm8gYnVpbGQoKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBQcmludERvY3VtZW50SW5mbyBidWlsZCgpIHsKICAgICAgICAgICAgIC8vIFplcm8gcGFnZXMgaXMgdGhlIHNhbWUgYXMgdW5rbm93biBhcyBpbiB0aGlzIGNhc2UKICAgICAgICAgICAgIC8vIHdlIHdpbGwgaGF2ZSB0byBhc2sgZm9yIGFsbCBwYWdlcyBhbmQgbG9vayBhIHRoZQogICAgICAgICAgICAgLy8gd2lyaXR0ZW4gUERGIGZpbGUgZm9yIHRoZSBwYWdlIGNvdW50LgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRKb2IuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50Sm9iLmphdmEKaW5kZXggMGFiZTIxOS4uNzc3YmFhYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRKb2IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludEpvYi5qYXZhCkBAIC0xNiw2ICsxNiw5IEBACiAKIHBhY2thZ2UgYW5kcm9pZC5wcmludDsKIAoraW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5Ob25OdWxsOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5OdWxsYWJsZTsKKwogLyoqCiAgKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBwcmludCBqb2IgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYW4KICAqIGFwcGxpY2F0aW9uLiBJdCBjb250YWlucyBiZWhhdmlvciBtZXRob2RzIGZvciBwZXJmb3JtaW5nIG9wZXJhdGlvbnMKQEAgLTQxLDcgKzQ0LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIGlkLgogICAgICAqLwotICAgIHB1YmxpYyBQcmludEpvYklkIGdldElkKCkgeworICAgIHB1YmxpYyBATm9uTnVsbCBQcmludEpvYklkIGdldElkKCkgewogICAgICAgICByZXR1cm4gbUNhY2hlZEluZm8uZ2V0SWQoKTsKICAgICB9CiAKQEAgLTU1LDcgKzU4LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIHByaW50IGpvYiBpbmZvLgogICAgICAqLwotICAgIHB1YmxpYyBQcmludEpvYkluZm8gZ2V0SW5mbygpIHsKKyAgICBwdWJsaWMgQE51bGxhYmxlIFByaW50Sm9iSW5mbyBnZXRJbmZvKCkgewogICAgICAgICBpZiAoaXNJbkltbXV0YWJsZVN0YXRlKCkpIHsKICAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkSW5mbzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRKb2JJZC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRKb2JJZC5qYXZhCmluZGV4IDAxNTUwZTIuLmEyZWUwMmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50Sm9iSWQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludEpvYklkLmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBhbmRyb2lkLnByaW50OwogCitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLk5vbk51bGw7CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CkBAIC05MSwxNCArOTIsMTQgQEAKICAgICAgKgogICAgICAqIEBoaWRlCiAgICAgICovCi0gICAgcHVibGljIFN0cmluZyBmbGF0dGVuVG9TdHJpbmcoKSB7CisgICAgcHVibGljIEBOb25OdWxsIFN0cmluZyBmbGF0dGVuVG9TdHJpbmcoKSB7CiAgICAgICAgIHJldHVybiBtVmFsdWU7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogVW5mbGF0dGVucyBhIHByaW50IGpvYiBpZCBmcm9tIGEgc3RyaW5nLgogICAgICAqCi0gICAgICogQHN0cmluZyBUaGUgc3RyaW5nLgorICAgICAqIEBwYXJhbSBzdHJpbmcgVGhlIHN0cmluZy4KICAgICAgKiBAcmV0dXJuIFRoZSB1bmZsYXR0ZW5lZCBpZCwgb3IgbnVsbCBpZiB0aGUgc3RyaW5nIGlzIG1hbGZvcm1lZC4KICAgICAgKgogICAgICAqIEBoaWRlCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludEpvYkluZm8uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50Sm9iSW5mby5qYXZhCmluZGV4IDcxNDhjODcuLjIxODM2YjMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50Sm9iSW5mby5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50Sm9iSW5mby5qYXZhCkBAIC0xNyw2ICsxNyw5IEBACiBwYWNrYWdlIGFuZHJvaWQucHJpbnQ7CiAKIGltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uRmxvYXRSYW5nZTsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uSW50RGVmOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5JbnRSYW5nZTsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKIGltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTnVsbGFibGU7CiBpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLlRlc3RBcGk7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CkBAIC0yNSw2ICsyOCw4IEBACiAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlByZWNvbmRpdGlvbnM7CiAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb247CitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5OwogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiAKIC8qKgpAQCAtMzUsNiArNDAsMTUgQEAKICAqLwogcHVibGljIGZpbmFsIGNsYXNzIFByaW50Sm9iSW5mbyBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogCisgICAgLyoqIEBoaWRlICovCisgICAgQEludERlZih7CisgICAgICAgICAgICBTVEFURV9DUkVBVEVELCBTVEFURV9RVUVVRUQsIFNUQVRFX1NUQVJURUQsIFNUQVRFX0JMT0NLRUQsIFNUQVRFX0NPTVBMRVRFRCwKKyAgICAgICAgICAgIFNUQVRFX0ZBSUxFRCwgU1RBVEVfQ0FOQ0VMRUQKKyAgICB9KQorICAgIEBSZXRlbnRpb24oUmV0ZW50aW9uUG9saWN5LlNPVVJDRSkKKyAgICBwdWJsaWMgQGludGVyZmFjZSBTdGF0ZSB7CisgICAgfQorCiAgICAgLyoqCiAgICAgICogQ29uc3RhbnQgZm9yIG1hdGNoaW5nIGFueSBwcmludCBqb2Igc3RhdGUuCiAgICAgICoKQEAgLTIwMCw3ICsyMTQsNyBAQAogICAgICAgICBtQWR2YW5jZWRPcHRpb25zID0gb3RoZXIubUFkdmFuY2VkT3B0aW9uczsKICAgICB9CiAKLSAgICBwcml2YXRlIFByaW50Sm9iSW5mbyhQYXJjZWwgcGFyY2VsKSB7CisgICAgcHJpdmF0ZSBQcmludEpvYkluZm8oQE5vbk51bGwgUGFyY2VsIHBhcmNlbCkgewogICAgICAgICBtSWQgPSBwYXJjZWwucmVhZFBhcmNlbGFibGUobnVsbCk7CiAgICAgICAgIG1MYWJlbCA9IHBhcmNlbC5yZWFkU3RyaW5nKCk7CiAgICAgICAgIG1QcmludGVySWQgPSBwYXJjZWwucmVhZFBhcmNlbGFibGUobnVsbCk7CkBAIC0yMzAsNyArMjQ0LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIGlkLgogICAgICAqLwotICAgIHB1YmxpYyBQcmludEpvYklkIGdldElkKCkgeworICAgIHB1YmxpYyBATm9uTnVsbCBQcmludEpvYklkIGdldElkKCkgewogICAgICAgICByZXR1cm4gbUlkOwogICAgIH0KIApAQCAtMjQxLDcgKzI1NSw3IEBACiAgICAgICoKICAgICAgKiBAaGlkZQogICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldElkKFByaW50Sm9iSWQgaWQpIHsKKyAgICBwdWJsaWMgdm9pZCBzZXRJZChATm9uTnVsbCBQcmludEpvYklkIGlkKSB7CiAgICAgICAgIHRoaXMubUlkID0gaWQ7CiAgICAgfQogCkBAIC0yNTAsNyArMjY0LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIGxhYmVsLgogICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TGFiZWwoKSB7CisgICAgcHVibGljIEBOb25OdWxsIFN0cmluZyBnZXRMYWJlbCgpIHsKICAgICAgICAgcmV0dXJuIG1MYWJlbDsKICAgICB9CiAKQEAgLTI2MSw3ICsyNzUsNyBAQAogICAgICAqCiAgICAgICogQGhpZGUKICAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRMYWJlbChTdHJpbmcgbGFiZWwpIHsKKyAgICBwdWJsaWMgdm9pZCBzZXRMYWJlbChATm9uTnVsbCBTdHJpbmcgbGFiZWwpIHsKICAgICAgICAgbUxhYmVsID0gbGFiZWw7CiAgICAgfQogCkBAIC0yNzAsNyArMjg0LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIHRhcmdldCBwcmludGVyIGlkLgogICAgICAqLwotICAgIHB1YmxpYyBQcmludGVySWQgZ2V0UHJpbnRlcklkKCkgeworICAgIHB1YmxpYyBATnVsbGFibGUgUHJpbnRlcklkIGdldFByaW50ZXJJZCgpIHsKICAgICAgICAgcmV0dXJuIG1QcmludGVySWQ7CiAgICAgfQogCkBAIC0yODEsNyArMjk1LDcgQEAKICAgICAgKgogICAgICAqIEBoaWRlCiAgICAgICovCi0gICAgcHVibGljIHZvaWQgc2V0UHJpbnRlcklkKFByaW50ZXJJZCBwcmludGVySWQpIHsKKyAgICBwdWJsaWMgdm9pZCBzZXRQcmludGVySWQoQE5vbk51bGwgUHJpbnRlcklkIHByaW50ZXJJZCkgewogICAgICAgICBtUHJpbnRlcklkID0gcHJpbnRlcklkOwogICAgIH0KIApAQCAtMjkyLDcgKzMwNiw3IEBACiAgICAgICoKICAgICAgKiBAaGlkZQogICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJpbnRlck5hbWUoKSB7CisgICAgcHVibGljIEBOdWxsYWJsZSBTdHJpbmcgZ2V0UHJpbnRlck5hbWUoKSB7CiAgICAgICAgIHJldHVybiBtUHJpbnRlck5hbWU7CiAgICAgfQogCkBAIC0zMDMsNyArMzE3LDcgQEAKICAgICAgKgogICAgICAqIEBoaWRlCiAgICAgICovCi0gICAgcHVibGljIHZvaWQgc2V0UHJpbnRlck5hbWUoU3RyaW5nIHByaW50ZXJOYW1lKSB7CisgICAgcHVibGljIHZvaWQgc2V0UHJpbnRlck5hbWUoQE5vbk51bGwgU3RyaW5nIHByaW50ZXJOYW1lKSB7CiAgICAgICAgIG1QcmludGVyTmFtZSA9IHByaW50ZXJOYW1lOwogICAgIH0KIApAQCAtMzIwLDcgKzMzNCw3IEBACiAgICAgICogQHNlZSAjU1RBVEVfRkFJTEVECiAgICAgICogQHNlZSAjU1RBVEVfQ0FOQ0VMRUQKICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFN0YXRlKCkgeworICAgIHB1YmxpYyBAU3RhdGUgaW50IGdldFN0YXRlKCkgewogICAgICAgICByZXR1cm4gbVN0YXRlOwogICAgIH0KIApAQCAtNDMxLDcgKzQ0NSw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgY29waWVzIG9yIHplcm8gaWYgbm90IHNldC4KICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldENvcGllcygpIHsKKyAgICBwdWJsaWMgQEludFJhbmdlKGZyb20gPSAwKSBpbnQgZ2V0Q29waWVzKCkgewogICAgICAgICByZXR1cm4gbUNvcGllczsKICAgICB9CiAKQEAgLTQ1NCw3ICs0NjgsNyBAQAogICAgICAqCiAgICAgICogQHJldHVybiBUaGUgaW5jbHVkZWQgcGFnZXMgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNldC4KICAgICAgKi8KLSAgICBwdWJsaWMgUGFnZVJhbmdlW10gZ2V0UGFnZXMoKSB7CisgICAgcHVibGljIEBOdWxsYWJsZSBQYWdlUmFuZ2VbXSBnZXRQYWdlcygpIHsKICAgICAgICAgcmV0dXJuIG1QYWdlUmFuZ2VzOwogICAgIH0KIApAQCAtNDc0LDcgKzQ4OCw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBhdHRyaWJ1dGVzLgogICAgICAqLwotICAgIHB1YmxpYyBQcmludEF0dHJpYnV0ZXMgZ2V0QXR0cmlidXRlcygpIHsKKyAgICBwdWJsaWMgQE5vbk51bGwgUHJpbnRBdHRyaWJ1dGVzIGdldEF0dHJpYnV0ZXMoKSB7CiAgICAgICAgIHJldHVybiBtQXR0cmlidXRlczsKICAgICB9CiAKQEAgLTcxMyw3ICs3MjcsNyBAQAogICAgICAgICAgKiBAcGFyYW0gcHJvdG90eXBlIFByb3RvdHlwZSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC4KICAgICAgICAgICogQ2FuIGJlIDxjb2RlPm51bGw8L2NvZGU+LgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIoUHJpbnRKb2JJbmZvIHByb3RvdHlwZSkgeworICAgICAgICBwdWJsaWMgQnVpbGRlcihATnVsbGFibGUgUHJpbnRKb2JJbmZvIHByb3RvdHlwZSkgewogICAgICAgICAgICAgbVByb3RvdHlwZSA9IChwcm90b3R5cGUgIT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgPyBuZXcgUHJpbnRKb2JJbmZvKHByb3RvdHlwZSkKICAgICAgICAgICAgICAgICAgICAgOiBuZXcgUHJpbnRKb2JJbmZvKCk7CkBAIC03MjQsNyArNzM4LDcgQEAKICAgICAgICAgICoKICAgICAgICAgICogQHBhcmFtIGNvcGllcyBUaGUgbnVtYmVyIG9mIGNvcGllcy4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyB2b2lkIHNldENvcGllcyhpbnQgY29waWVzKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHNldENvcGllcyhASW50UmFuZ2UoZnJvbSA9IDEpIGludCBjb3BpZXMpIHsKICAgICAgICAgICAgIG1Qcm90b3R5cGUubUNvcGllcyA9IGNvcGllczsKICAgICAgICAgfQogCkBAIC03MzMsNyArNzQ3LDcgQEAKICAgICAgICAgICoKICAgICAgICAgICogQHBhcmFtIGF0dHJpYnV0ZXMgVGhlIGF0dHJpYnV0ZXMuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgdm9pZCBzZXRBdHRyaWJ1dGVzKFByaW50QXR0cmlidXRlcyBhdHRyaWJ1dGVzKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHNldEF0dHJpYnV0ZXMoQE5vbk51bGwgUHJpbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgIG1Qcm90b3R5cGUubUF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogICAgICAgICB9CiAKQEAgLTc0Miw3ICs3NTYsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAcGFyYW0gcGFnZXMgVGhlIGluY2x1ZGVkIHBhZ2VzLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIHZvaWQgc2V0UGFnZXMoUGFnZVJhbmdlW10gcGFnZXMpIHsKKyAgICAgICAgcHVibGljIHZvaWQgc2V0UGFnZXMoQE5vbk51bGwgUGFnZVJhbmdlW10gcGFnZXMpIHsKICAgICAgICAgICAgIG1Qcm90b3R5cGUubVBhZ2VSYW5nZXMgPSBwYWdlczsKICAgICAgICAgfQogCkBAIC03NzQsNyArNzg4LDcgQEAKICAgICAgICAgICogQHBhcmFtIGtleSBUaGUgb3B0aW9uIGtleS4KICAgICAgICAgICogQHBhcmFtIHZhbHVlIFRoZSBvcHRpb24gdmFsdWUuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgdm9pZCBwdXRBZHZhbmNlZE9wdGlvbihTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcHV0QWR2YW5jZWRPcHRpb24oQE5vbk51bGwgU3RyaW5nIGtleSwgQE51bGxhYmxlIFN0cmluZyB2YWx1ZSkgewogICAgICAgICAgICAgaWYgKG1Qcm90b3R5cGUubUFkdmFuY2VkT3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgbVByb3RvdHlwZS5tQWR2YW5jZWRPcHRpb25zID0gbmV3IEJ1bmRsZSgpOwogICAgICAgICAgICAgfQpAQCAtNzg3LDcgKzgwMSw3IEBACiAgICAgICAgICAqIEBwYXJhbSBrZXkgVGhlIG9wdGlvbiBrZXkuCiAgICAgICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgb3B0aW9uIHZhbHVlLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIHZvaWQgcHV0QWR2YW5jZWRPcHRpb24oU3RyaW5nIGtleSwgaW50IHZhbHVlKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHB1dEFkdmFuY2VkT3B0aW9uKEBOb25OdWxsIFN0cmluZyBrZXksIGludCB2YWx1ZSkgewogICAgICAgICAgICAgaWYgKG1Qcm90b3R5cGUubUFkdmFuY2VkT3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgbVByb3RvdHlwZS5tQWR2YW5jZWRPcHRpb25zID0gbmV3IEJ1bmRsZSgpOwogICAgICAgICAgICAgfQpAQCAtNzk5LDcgKzgxMyw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gVGhlIG5ldyBpbnN0YW5jZS4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBQcmludEpvYkluZm8gYnVpbGQoKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBQcmludEpvYkluZm8gYnVpbGQoKSB7CiAgICAgICAgICAgICByZXR1cm4gbVByb3RvdHlwZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50TWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRNYW5hZ2VyLmphdmEKaW5kZXggM2ZiODEyZS4uM2ViNDg3NCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRNYW5hZ2VyLmphdmEKQEAgLTE2LDExICsxNiwxNCBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTnVsbGFibGU7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQXBwbGljYXRpb24uQWN0aXZpdHlMaWZlY3ljbGVDYWxsYmFja3M7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuQ2FuY2VsbGF0aW9uU2lnbmFsOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKQEAgLTE4MCw2ICsxODMsOCBAQAogICAgICAqCiAgICAgICogQHBhcmFtIGNvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBpbiB3aGljaCB0byBvcGVyYXRlLgogICAgICAqIEBwYXJhbSBzZXJ2aWNlIFRoZSBiYWNraW5nIHN5c3RlbSBzZXJ2aWNlLgorICAgICAqIEBwYXJhbSB1c2VySWQgVGhlIHVzZXIgaWQgaW4gd2hpY2ggdG8gb3BlcmF0ZS4KKyAgICAgKiBAcGFyYW0gYXBwSWQgVGhlIGFwcGxpY2F0aW9uIGlkIGluIHdoaWNoIHRvIG9wZXJhdGUuCiAgICAgICogQGhpZGUKICAgICAgKi8KICAgICBwdWJsaWMgUHJpbnRNYW5hZ2VyKENvbnRleHQgY29udGV4dCwgSVByaW50TWFuYWdlciBzZXJ2aWNlLCBpbnQgdXNlcklkLCBpbnQgYXBwSWQpIHsKQEAgLTI5MCw2ICsyOTUsNyBAQAogICAgIC8qKgogICAgICAqIEdldHMgYSBwcmludCBqb2IgZ2l2ZW4gaXRzIGlkLgogICAgICAqCisgICAgICogQHBhcmFtIHByaW50Sm9iSWQgVGhlIGlkIG9mIHRoZSBwcmludCBqb2IuCiAgICAgICogQHJldHVybiBUaGUgcHJpbnQgam9iIGxpc3QuCiAgICAgICogQHNlZSBQcmludEpvYgogICAgICAqIEBoaWRlCkBAIC0zMTEsMTIgKzMxNywzNSBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEdldCB0aGUgY3VzdG9tIGljb24gZm9yIGEgcHJpbnRlci4gSWYgdGhlIGljb24gaXMgbm90IGNhY2hlZCwgdGhlIGljb24gaXMKKyAgICAgKiByZXF1ZXN0ZWQgYXN5bmNocm9ub3VzbHkuIE9uY2UgaXQgaXMgYXZhaWxhYmxlIHRoZSBwcmludGVyIGlzIHVwZGF0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJpbnRlcklkIHRoZSBpZCBvZiB0aGUgcHJpbnRlciB0aGUgaWNvbiBzaG91bGQgYmUgbG9hZGVkIGZvcgorICAgICAqIEByZXR1cm4gdGhlIGN1c3RvbSBpY29uIHRvIGJlIHVzZWQgZm9yIHRoZSBwcmludGVyIG9yIG51bGwgaWYgdGhlIGljb24gaXMKKyAgICAgKiAgICAgICAgIG5vdCB5ZXQgYXZhaWxhYmxlCisgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIEljb24gZ2V0Q3VzdG9tUHJpbnRlckljb24oUHJpbnRlcklkIHByaW50ZXJJZCkgeworICAgICAgICBpZiAobVNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgTG9nLncoTE9HX1RBRywgIkZlYXR1cmUgYW5kcm9pZC5zb2Z0d2FyZS5wcmludCBub3QgYXZhaWxhYmxlIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldEN1c3RvbVByaW50ZXJJY29uKHByaW50ZXJJZCwgbVVzZXJJZCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiByZSkgeworICAgICAgICAgICAgTG9nLmUoTE9HX1RBRywgIkVycm9yIGdldHRpbmcgY3VzdG9tIHByaW50ZXIgaWNvbiIsIHJlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBHZXRzIHRoZSBwcmludCBqb2JzIGZvciB0aGlzIGFwcGxpY2F0aW9uLgogICAgICAqCiAgICAgICogQHJldHVybiBUaGUgcHJpbnQgam9iIGxpc3QuCiAgICAgICogQHNlZSBQcmludEpvYgogICAgICAqLwotICAgIHB1YmxpYyBMaXN0PFByaW50Sm9iPiBnZXRQcmludEpvYnMoKSB7CisgICAgcHVibGljIEBOb25OdWxsIExpc3Q8UHJpbnRKb2I+IGdldFByaW50Sm9icygpIHsKICAgICAgICAgaWYgKG1TZXJ2aWNlID09IG51bGwpIHsKICAgICAgICAgICAgIExvZy53KExPR19UQUcsICJGZWF0dXJlIGFuZHJvaWQuc29mdHdhcmUucHJpbnQgbm90IGF2YWlsYWJsZSIpOwogICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOwpAQCAtNDExLDggKzQ0MCw5IEBACiAgICAgICoKICAgICAgKiBAc2VlIFByaW50Sm9iCiAgICAgICovCi0gICAgcHVibGljIFByaW50Sm9iIHByaW50KFN0cmluZyBwcmludEpvYk5hbWUsIFByaW50RG9jdW1lbnRBZGFwdGVyIGRvY3VtZW50QWRhcHRlciwKLSAgICAgICAgICAgIFByaW50QXR0cmlidXRlcyBhdHRyaWJ1dGVzKSB7CisgICAgcHVibGljIEBOb25OdWxsIFByaW50Sm9iIHByaW50KEBOb25OdWxsIFN0cmluZyBwcmludEpvYk5hbWUsCisgICAgICAgICAgICBATm9uTnVsbCBQcmludERvY3VtZW50QWRhcHRlciBkb2N1bWVudEFkYXB0ZXIsCisgICAgICAgICAgICBATnVsbGFibGUgUHJpbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHsKICAgICAgICAgaWYgKG1TZXJ2aWNlID09IG51bGwpIHsKICAgICAgICAgICAgIExvZy53KExPR19UQUcsICJGZWF0dXJlIGFuZHJvaWQuc29mdHdhcmUucHJpbnQgbm90IGF2YWlsYWJsZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludGVyQ2FwYWJpbGl0aWVzSW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRlckNhcGFiaWxpdGllc0luZm8uamF2YQppbmRleCA5NmYzMTg1Li5kMTM4NzliIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludGVyQ2FwYWJpbGl0aWVzSW5mby5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50ZXJDYXBhYmlsaXRpZXNJbmZvLmphdmEKQEAgLTE2LDggKzE2LDExIEBACiAKIHBhY2thZ2UgYW5kcm9pZC5wcmludDsKIAoraW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5Ob25OdWxsOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKK2ltcG9ydCBhbmRyb2lkLnByaW50LlByaW50QXR0cmlidXRlcy5Db2xvck1vZGU7CitpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludEF0dHJpYnV0ZXMuRHVwbGV4TW9kZTsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50QXR0cmlidXRlcy5NYXJnaW5zOwogaW1wb3J0IGFuZHJvaWQucHJpbnQuUHJpbnRBdHRyaWJ1dGVzLk1lZGlhU2l6ZTsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50QXR0cmlidXRlcy5SZXNvbHV0aW9uOwpAQCAtMTIxLDcgKzEyNCw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBtZWRpYSBzaXplcy4KICAgICAgKi8KLSAgICBwdWJsaWMgTGlzdDxNZWRpYVNpemU+IGdldE1lZGlhU2l6ZXMoKSB7CisgICAgcHVibGljIEBOb25OdWxsIExpc3Q8TWVkaWFTaXplPiBnZXRNZWRpYVNpemVzKCkgewogICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChtTWVkaWFTaXplcyk7CiAgICAgfQogCkBAIC0xMzAsNyArMTMzLDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIHJlc29sdXRpb25zLgogICAgICAqLwotICAgIHB1YmxpYyBMaXN0PFJlc29sdXRpb24+IGdldFJlc29sdXRpb25zKCkgeworICAgIHB1YmxpYyBATm9uTnVsbCBMaXN0PFJlc29sdXRpb24+IGdldFJlc29sdXRpb25zKCkgewogICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChtUmVzb2x1dGlvbnMpOwogICAgIH0KIApAQCAtMTQwLDcgKzE0Myw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBtaW5pbWFsIG1hcmdpbnMuCiAgICAgICovCi0gICAgcHVibGljIE1hcmdpbnMgZ2V0TWluTWFyZ2lucygpIHsKKyAgICBwdWJsaWMgQE5vbk51bGwgTWFyZ2lucyBnZXRNaW5NYXJnaW5zKCkgewogICAgICAgICByZXR1cm4gbU1pbk1hcmdpbnM7CiAgICAgfQogCkBAIC0xNTIsNyArMTU1LDcgQEAKICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcyNDT0xPUl9NT0RFX0NPTE9SCiAgICAgICogQHNlZSBQcmludEF0dHJpYnV0ZXMjQ09MT1JfTU9ERV9NT05PQ0hST01FCiAgICAgICovCi0gICAgcHVibGljIGludCBnZXRDb2xvck1vZGVzKCkgeworICAgIHB1YmxpYyBAQ29sb3JNb2RlIGludCBnZXRDb2xvck1vZGVzKCkgewogICAgICAgICByZXR1cm4gbUNvbG9yTW9kZXM7CiAgICAgfQogCkBAIC0xNjUsNyArMTY4LDcgQEAKICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcyNEVVBMRVhfTU9ERV9MT05HX0VER0UKICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcyNEVVBMRVhfTU9ERV9TSE9SVF9FREdFCiAgICAgICovCi0gICAgcHVibGljIGludCBnZXREdXBsZXhNb2RlcygpIHsKKyAgICBwdWJsaWMgQER1cGxleE1vZGUgaW50IGdldER1cGxleE1vZGVzKCkgewogICAgICAgICByZXR1cm4gbUR1cGxleE1vZGVzOwogICAgIH0KIApAQCAtMTc0LDcgKzE3Nyw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMuCiAgICAgICovCi0gICAgcHVibGljIFByaW50QXR0cmlidXRlcyBnZXREZWZhdWx0cygpIHsKKyAgICBwdWJsaWMgQE5vbk51bGwgUHJpbnRBdHRyaWJ1dGVzIGdldERlZmF1bHRzKCkgewogICAgICAgICBQcmludEF0dHJpYnV0ZXMuQnVpbGRlciBidWlsZGVyID0gbmV3IFByaW50QXR0cmlidXRlcy5CdWlsZGVyKCk7CiAKICAgICAgICAgYnVpbGRlci5zZXRNaW5NYXJnaW5zKG1NaW5NYXJnaW5zKTsKQEAgLTQyNSw3ICs0MjgsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcHJpbnRlciBpZCBpcyA8Y29kZT5udWxsPC9jb2RlPi4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyKFByaW50ZXJJZCBwcmludGVySWQpIHsKKyAgICAgICAgcHVibGljIEJ1aWxkZXIoQE5vbk51bGwgUHJpbnRlcklkIHByaW50ZXJJZCkgewogICAgICAgICAgICAgaWYgKHByaW50ZXJJZCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicHJpbnRlcklkIGNhbm5vdCBiZSBudWxsLiIpOwogICAgICAgICAgICAgfQpAQCAtNDQ2LDcgKzQ0OSw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEBzZWUgUHJpbnRBdHRyaWJ1dGVzLk1lZGlhU2l6ZQogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgYWRkTWVkaWFTaXplKE1lZGlhU2l6ZSBtZWRpYVNpemUsIGJvb2xlYW4gaXNEZWZhdWx0KSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIGFkZE1lZGlhU2l6ZShATm9uTnVsbCBNZWRpYVNpemUgbWVkaWFTaXplLCBib29sZWFuIGlzRGVmYXVsdCkgewogICAgICAgICAgICAgaWYgKG1Qcm90b3R5cGUubU1lZGlhU2l6ZXMgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIG1Qcm90b3R5cGUubU1lZGlhU2l6ZXMgPSBuZXcgQXJyYXlMaXN0PE1lZGlhU2l6ZT4oKTsKICAgICAgICAgICAgIH0KQEAgLTQ3NCw3ICs0NzcsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcy5SZXNvbHV0aW9uCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlciBhZGRSZXNvbHV0aW9uKFJlc29sdXRpb24gcmVzb2x1dGlvbiwgYm9vbGVhbiBpc0RlZmF1bHQpIHsKKyAgICAgICAgcHVibGljIEBOb25OdWxsIEJ1aWxkZXIgYWRkUmVzb2x1dGlvbihATm9uTnVsbCBSZXNvbHV0aW9uIHJlc29sdXRpb24sIGJvb2xlYW4gaXNEZWZhdWx0KSB7CiAgICAgICAgICAgICBpZiAobVByb3RvdHlwZS5tUmVzb2x1dGlvbnMgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIG1Qcm90b3R5cGUubVJlc29sdXRpb25zID0gbmV3IEFycmF5TGlzdDxSZXNvbHV0aW9uPigpOwogICAgICAgICAgICAgfQpAQCAtNTAyLDcgKzUwNSw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEBzZWUgUHJpbnRBdHRyaWJ1dGVzLk1hcmdpbnMKICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIHNldE1pbk1hcmdpbnMoTWFyZ2lucyBtYXJnaW5zKSB7CisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIHNldE1pbk1hcmdpbnMoQE5vbk51bGwgTWFyZ2lucyBtYXJnaW5zKSB7CiAgICAgICAgICAgICBpZiAobWFyZ2lucyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibWFyZ2lucyBjYW5ub3QgYmUgbnVsbCIpOwogICAgICAgICAgICAgfQpAQCAtNTMyLDcgKzUzNSw4IEBACiAgICAgICAgICAqIEBzZWUgUHJpbnRBdHRyaWJ1dGVzI0NPTE9SX01PREVfQ09MT1IKICAgICAgICAgICogQHNlZSBQcmludEF0dHJpYnV0ZXMjQ09MT1JfTU9ERV9NT05PQ0hST01FCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlciBzZXRDb2xvck1vZGVzKGludCBjb2xvck1vZGVzLCBpbnQgZGVmYXVsdENvbG9yTW9kZSkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXRDb2xvck1vZGVzKEBDb2xvck1vZGUgaW50IGNvbG9yTW9kZXMsCisgICAgICAgICAgICAgICAgQENvbG9yTW9kZSBpbnQgZGVmYXVsdENvbG9yTW9kZSkgewogICAgICAgICAgICAgaW50IGN1cnJlbnRNb2RlcyA9IGNvbG9yTW9kZXM7CiAgICAgICAgICAgICB3aGlsZSAoY3VycmVudE1vZGVzID4gMCkgewogICAgICAgICAgICAgICAgIGZpbmFsIGludCBjdXJyZW50TW9kZSA9ICgxIDw8IEludGVnZXIubnVtYmVyT2ZUcmFpbGluZ1plcm9zKGN1cnJlbnRNb2RlcykpOwpAQCAtNTYyLDcgKzU2Niw4IEBACiAgICAgICAgICAqIEBzZWUgUHJpbnRBdHRyaWJ1dGVzI0RVUExFWF9NT0RFX0xPTkdfRURHRQogICAgICAgICAgKiBAc2VlIFByaW50QXR0cmlidXRlcyNEVVBMRVhfTU9ERV9TSE9SVF9FREdFCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlciBzZXREdXBsZXhNb2RlcyhpbnQgZHVwbGV4TW9kZXMsIGludCBkZWZhdWx0RHVwbGV4TW9kZSkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXREdXBsZXhNb2RlcyhARHVwbGV4TW9kZSBpbnQgZHVwbGV4TW9kZXMsCisgICAgICAgICAgICAgICAgQER1cGxleE1vZGUgaW50IGRlZmF1bHREdXBsZXhNb2RlKSB7CiAgICAgICAgICAgICBpbnQgY3VycmVudE1vZGVzID0gZHVwbGV4TW9kZXM7CiAgICAgICAgICAgICB3aGlsZSAoY3VycmVudE1vZGVzID4gMCkgewogICAgICAgICAgICAgICAgIGZpbmFsIGludCBjdXJyZW50TW9kZSA9ICgxIDw8IEludGVnZXIubnVtYmVyT2ZUcmFpbGluZ1plcm9zKGN1cnJlbnRNb2RlcykpOwpAQCAtNTg5LDcgKzU5NCw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIElmIGEgcmVxdWlyZWQgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIFByaW50ZXJDYXBhYmlsaXRpZXNJbmZvIGJ1aWxkKCkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgUHJpbnRlckNhcGFiaWxpdGllc0luZm8gYnVpbGQoKSB7CiAgICAgICAgICAgICBpZiAobVByb3RvdHlwZS5tTWVkaWFTaXplcyA9PSBudWxsIHx8IG1Qcm90b3R5cGUubU1lZGlhU2l6ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiTm8gbWVkaWEgc2l6ZSBzcGVjaWZpZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludGVySWQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50ZXJJZC5qYXZhCmluZGV4IGEzZjNiMmJmLi44M2VmZTgwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludGVySWQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludGVySWQuamF2YQpAQCAtMTYsNiArMTYsNyBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CkBAIC02NSw3ICs2Niw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBwcmludGVyIG5hbWUuCiAgICAgICovCi0gICAgcHVibGljIFN0cmluZyBnZXRMb2NhbElkKCkgeworICAgIHB1YmxpYyBATm9uTnVsbCBTdHJpbmcgZ2V0TG9jYWxJZCgpIHsKICAgICAgICAgcmV0dXJuIG1Mb2NhbElkOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRlckluZm8uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L1ByaW50ZXJJbmZvLmphdmEKaW5kZXggN2ZjYzgxZi4uMjBkOTFiMiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvUHJpbnRlckluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9QcmludGVySW5mby5qYXZhCkBAIC0xNiwxMCArMTYsMjYgQEAKIAogcGFja2FnZSBhbmRyb2lkLnByaW50OwogCitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLkRyYXdhYmxlUmVzOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5JbnREZWY7CitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLk5vbk51bGw7CitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLk51bGxhYmxlOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5UZXN0QXBpOworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkljb247CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb247CitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5OworCiAvKioKICAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24gb2YgYSBwcmludGVyLiBJbnN0YW5jZXMgb2YKICAqIHRoaXMgY2xhc3MgYXJlIGNyZWF0ZWQgYnkgcHJpbnQgc2VydmljZXMgdG8gcmVwb3J0IHRvIHRoZSBzeXN0ZW0KQEAgLTMwLDYgKzQ2LDEzIEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBQcmludGVySW5mbyBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogCisgICAgLyoqIEBoaWRlICovCisgICAgQEludERlZih7CisgICAgICAgICAgICBTVEFUVVNfSURMRSwgU1RBVFVTX0JVU1ksIFNUQVRVU19VTkFWQUlMQUJMRQorICAgIH0pCisgICAgQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuU09VUkNFKQorICAgIHB1YmxpYyBAaW50ZXJmYWNlIFN0YXR1cyB7CisgICAgfQogICAgIC8qKiBQcmludGVyIHN0YXR1czogdGhlIHByaW50ZXIgaXMgaWRsZSBhbmQgcmVhZHkgdG8gcHJpbnQuICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0lETEUgPSAxOwogCkBAIC00MSw2ICs2NCwxOCBAQAogCiAgICAgcHJpdmF0ZSBQcmludGVySWQgbUlkOwogCisgICAgLyoqIFJlc291cmNlIGluc2lkZSB0aGUgcHJpbnRlcidzIHNlcnZpY2VzJ3MgcGFja2FnZSB0byBiZSB1c2VkIGFzIGFuIGljb24gKi8KKyAgICBwcml2YXRlIGludCBtSWNvblJlc291cmNlSWQ7CisKKyAgICAvKiogSWYgYSBjdXN0b20gaWNvbiBjYW4gYmUgbG9hZGVkIGZvciB0aGUgcHJpbnRlciAqLworICAgIHByaXZhdGUgYm9vbGVhbiBtSGFzQ3VzdG9tUHJpbnRlckljb247CisKKyAgICAvKiogVGhlIGdlbmVyYXRpb24gb2YgdGhlIGljb24gaW4gdGhlIGNhY2hlLiAqLworICAgIHByaXZhdGUgaW50IG1DdXN0b21QcmludGVySWNvbkdlbjsKKworICAgIC8qKiBJbnRlbnQgdGhhdCBsYXVuY2hlcyB0aGUgYWN0aXZpdHkgc2hvd2luZyBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmludGVyLiAqLworICAgIHByaXZhdGUgUGVuZGluZ0ludGVudCBtSW5mb0ludGVudDsKKwogICAgIHByaXZhdGUgU3RyaW5nIG1OYW1lOwogCiAgICAgcHJpdmF0ZSBpbnQgbVN0YXR1czsKQEAgLTc3LDYgKzExMiwxMCBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbUNhcGFiaWxpdGllcyA9IG51bGw7CiAgICAgICAgIH0KKyAgICAgICAgbUljb25SZXNvdXJjZUlkID0gb3RoZXIubUljb25SZXNvdXJjZUlkOworICAgICAgICBtSGFzQ3VzdG9tUHJpbnRlckljb24gPSBvdGhlci5tSGFzQ3VzdG9tUHJpbnRlckljb247CisgICAgICAgIG1DdXN0b21QcmludGVySWNvbkdlbiA9IG90aGVyLm1DdXN0b21QcmludGVySWNvbkdlbjsKKyAgICAgICAgbUluZm9JbnRlbnQgPSBvdGhlci5tSW5mb0ludGVudDsKICAgICB9CiAKICAgICAvKioKQEAgLTg0LDE2ICsxMjMsNjQgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIHByaW50ZXIgaWQuCiAgICAgICovCi0gICAgcHVibGljIFByaW50ZXJJZCBnZXRJZCgpIHsKKyAgICBwdWJsaWMgQE5vbk51bGwgUHJpbnRlcklkIGdldElkKCkgewogICAgICAgICByZXR1cm4gbUlkOwogICAgIH0KIAogICAgIC8qKgorICAgICAqIEdldCB0aGUgaWNvbiB0byBiZSB1c2VkIGZvciB0aGlzIHByaW50ZXIuIElmIG5vIHBlciBwcmludGVyIGljb24gaXMgYXZhaWxhYmxlLCB0aGUgcHJpbnRlcidzCisgICAgICogc2VydmljZSdzIGljb24gaXMgcmV0dXJuZWQuIElmIHRoZSBwcmludGVyIGhhcyBhIGN1c3RvbSBpY29uIHRoaXMgaWNvbiBtaWdodCBnZXQgcmVxdWVzdGVkCisgICAgICogYXN5bmNocm9ub3VzbHkuIE9uY2UgdGhlIGljb24gaXMgbG9hZGVkIHRoZSBkaXNjb3Zlcnkgc2Vzc2lvbnMgd2lsbCBiZSBub3RpZmllZCB0aGF0IHRoZQorICAgICAqIHByaW50ZXIgY2hhbmdlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IHRoYXQgd2lsbCBiZSB1c2luZyB0aGUgaWNvbnMKKyAgICAgKiBAcmV0dXJuIFRoZSBpY29uIHRvIGJlIHVzZWQgZm9yIHRoZSBwcmludGVyIG9yIG51bGwgaWYgbm8gaWNvbiBjb3VsZCBiZSBmb3VuZC4KKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIEBUZXN0QXBpCisgICAgcHVibGljIEBOdWxsYWJsZSBEcmF3YWJsZSBsb2FkSWNvbihATm9uTnVsbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgRHJhd2FibGUgZHJhd2FibGUgPSBudWxsOworICAgICAgICBQYWNrYWdlTWFuYWdlciBwYWNrYWdlTWFuYWdlciA9IGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKworICAgICAgICBpZiAobUhhc0N1c3RvbVByaW50ZXJJY29uKSB7CisgICAgICAgICAgICBQcmludE1hbmFnZXIgcHJpbnRNYW5hZ2VyID0gKFByaW50TWFuYWdlcikgY29udGV4dAorICAgICAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBSSU5UX1NFUlZJQ0UpOworCisgICAgICAgICAgICBJY29uIGljb24gPSBwcmludE1hbmFnZXIuZ2V0Q3VzdG9tUHJpbnRlckljb24obUlkKTsKKworICAgICAgICAgICAgaWYgKGljb24gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGRyYXdhYmxlID0gaWNvbi5sb2FkRHJhd2FibGUoY29udGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZHJhd2FibGUgPT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcGFja2FnZU5hbWUgPSBtSWQuZ2V0U2VydmljZU5hbWUoKS5nZXRQYWNrYWdlTmFtZSgpOworICAgICAgICAgICAgICAgIFBhY2thZ2VJbmZvIHBhY2thZ2VJbmZvID0gcGFja2FnZU1hbmFnZXIuZ2V0UGFja2FnZUluZm8ocGFja2FnZU5hbWUsIDApOworICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBhcHBJbmZvID0gcGFja2FnZUluZm8uYXBwbGljYXRpb25JbmZvOworCisgICAgICAgICAgICAgICAgLy8gSWYgbm8gY3VzdG9tIGljb24gaXMgYXZhaWxhYmxlLCB0cnkgdGhlIGljb24gZnJvbSB0aGUgcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgaWYgKG1JY29uUmVzb3VyY2VJZCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlID0gcGFja2FnZU1hbmFnZXIuZ2V0RHJhd2FibGUocGFja2FnZU5hbWUsIG1JY29uUmVzb3VyY2VJZCwgYXBwSW5mbyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBwcmludGVyJ3Mgc2VydmljZSdzIGljb24gaWYgbm8gcGVyIHByaW50ZXIgaWNvbiBjb3VsZCBiZSBmb3VuZAorICAgICAgICAgICAgICAgIGlmIChkcmF3YWJsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlID0gYXBwSW5mby5sb2FkSWNvbihwYWNrYWdlTWFuYWdlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkcmF3YWJsZTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBHZXQgdGhlIHByaW50ZXIgbmFtZS4KICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIHByaW50ZXIgbmFtZS4KICAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgcHVibGljIEBOdWxsYWJsZSBTdHJpbmcgZ2V0TmFtZSgpIHsKICAgICAgICAgcmV0dXJuIG1OYW1lOwogICAgIH0KIApAQCAtMTA2LDcgKzE5Myw3IEBACiAgICAgICogQHNlZSAjU1RBVFVTX0lETEUKICAgICAgKiBAc2VlICNTVEFUVVNfVU5BVkFJTEFCTEUKICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFN0YXR1cygpIHsKKyAgICBwdWJsaWMgQFN0YXR1cyBpbnQgZ2V0U3RhdHVzKCkgewogICAgICAgICByZXR1cm4gbVN0YXR1czsKICAgICB9CiAKQEAgLTExNSwxNiArMjAyLDI4IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBkZXNjcmlwdGlvbi4KICAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgeworICAgIHB1YmxpYyBATnVsbGFibGUgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgewogICAgICAgICByZXR1cm4gbURlc2NyaXB0aW9uOwogICAgIH0KIAogICAgIC8qKgorICAgICAqIEdldCB0aGUge0BsaW5rIFBlbmRpbmdJbnRlbnR9IHRoYXQgbGF1bmNoZXMgdGhlIGFjdGl2aXR5IHNob3dpbmcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgKiBwcmludGVyLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUge0BsaW5rIFBlbmRpbmdJbnRlbnR9IHRoYXQgbGF1bmNoZXMgdGhlIGFjdGl2aXR5IHNob3dpbmcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorICAgICAqICAgICAgICAgdGhlIHByaW50ZXIgb3IgbnVsbCBpZiBpdCBpcyBub3QgY29uZmlndXJlZAorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIEBOdWxsYWJsZSBQZW5kaW5nSW50ZW50IGdldEluZm9JbnRlbnQoKSB7CisgICAgICAgIHJldHVybiBtSW5mb0ludGVudDsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBHZXRzIHRoZSBwcmludGVyIGNhcGFiaWxpdGllcy4KICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIGNhcGFiaWxpdGllcy4KICAgICAgKi8KLSAgICBwdWJsaWMgUHJpbnRlckNhcGFiaWxpdGllc0luZm8gZ2V0Q2FwYWJpbGl0aWVzKCkgeworICAgIHB1YmxpYyBATnVsbGFibGUgUHJpbnRlckNhcGFiaWxpdGllc0luZm8gZ2V0Q2FwYWJpbGl0aWVzKCkgewogICAgICAgICByZXR1cm4gbUNhcGFiaWxpdGllczsKICAgICB9CiAKQEAgLTEzNCw2ICsyMzMsMTAgQEAKICAgICAgICAgbVN0YXR1cyA9IHBhcmNlbC5yZWFkSW50KCk7CiAgICAgICAgIG1EZXNjcmlwdGlvbiA9IHBhcmNlbC5yZWFkU3RyaW5nKCk7CiAgICAgICAgIG1DYXBhYmlsaXRpZXMgPSBwYXJjZWwucmVhZFBhcmNlbGFibGUobnVsbCk7CisgICAgICAgIG1JY29uUmVzb3VyY2VJZCA9IHBhcmNlbC5yZWFkSW50KCk7CisgICAgICAgIG1IYXNDdXN0b21QcmludGVySWNvbiA9IHBhcmNlbC5yZWFkQnl0ZSgpICE9IDA7CisgICAgICAgIG1DdXN0b21QcmludGVySWNvbkdlbiA9IHBhcmNlbC5yZWFkSW50KCk7CisgICAgICAgIG1JbmZvSW50ZW50ID0gcGFyY2VsLnJlYWRQYXJjZWxhYmxlKG51bGwpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTQ4LDYgKzI1MSwxMCBAQAogICAgICAgICBwYXJjZWwud3JpdGVJbnQobVN0YXR1cyk7CiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtRGVzY3JpcHRpb24pOwogICAgICAgICBwYXJjZWwud3JpdGVQYXJjZWxhYmxlKG1DYXBhYmlsaXRpZXMsIGZsYWdzKTsKKyAgICAgICAgcGFyY2VsLndyaXRlSW50KG1JY29uUmVzb3VyY2VJZCk7CisgICAgICAgIHBhcmNlbC53cml0ZUJ5dGUoKGJ5dGUpIChtSGFzQ3VzdG9tUHJpbnRlckljb24gPyAxIDogMCkpOworICAgICAgICBwYXJjZWwud3JpdGVJbnQobUN1c3RvbVByaW50ZXJJY29uR2VuKTsKKyAgICAgICAgcGFyY2VsLndyaXRlUGFyY2VsYWJsZShtSW5mb0ludGVudCwgZmxhZ3MpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTU5LDkgKzI2Niw2MSBAQAogICAgICAgICByZXN1bHQgPSBwcmltZSAqIHJlc3VsdCArIG1TdGF0dXM7CiAgICAgICAgIHJlc3VsdCA9IHByaW1lICogcmVzdWx0ICsgKChtRGVzY3JpcHRpb24gIT0gbnVsbCkgPyBtRGVzY3JpcHRpb24uaGFzaENvZGUoKSA6IDApOwogICAgICAgICByZXN1bHQgPSBwcmltZSAqIHJlc3VsdCArICgobUNhcGFiaWxpdGllcyAhPSBudWxsKSA/IG1DYXBhYmlsaXRpZXMuaGFzaENvZGUoKSA6IDApOworICAgICAgICByZXN1bHQgPSBwcmltZSAqIHJlc3VsdCArIG1JY29uUmVzb3VyY2VJZDsKKyAgICAgICAgcmVzdWx0ID0gcHJpbWUgKiByZXN1bHQgKyAobUhhc0N1c3RvbVByaW50ZXJJY29uID8gMSA6IDApOworICAgICAgICByZXN1bHQgPSBwcmltZSAqIHJlc3VsdCArIG1DdXN0b21QcmludGVySWNvbkdlbjsKKyAgICAgICAgcmVzdWx0ID0gcHJpbWUgKiByZXN1bHQgKyAoKG1JbmZvSW50ZW50ICE9IG51bGwpID8gbUluZm9JbnRlbnQuaGFzaENvZGUoKSA6IDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENvbXBhcmUgdHdvIHtAbGluayBQcmludGVySW5mbyBwcmludGVySW5mb3N9IGluIGFsbCBhc3BlY3RzIGJlc2lkZSBiZWluZyBudWxsIGFuZCB0aGUKKyAgICAgKiB7QGxpbmsgI21TdGF0dXN9LgorICAgICAqCisgICAgICogQHBhcmFtIG90aGVyIHRoZSBvdGhlciB7QGxpbmsgUHJpbnRlckluZm99CisgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGUgaW5mb3MgYXJlIGVxdWl2YWxlbnQKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFsc0lnbm9yaW5nU3RhdHVzKFByaW50ZXJJbmZvIG90aGVyKSB7CisgICAgICAgIGlmIChtSWQgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKG90aGVyLm1JZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKCFtSWQuZXF1YWxzKG90aGVyLm1JZCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVRleHRVdGlscy5lcXVhbHMobU5hbWUsIG90aGVyLm1OYW1lKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICghVGV4dFV0aWxzLmVxdWFscyhtRGVzY3JpcHRpb24sIG90aGVyLm1EZXNjcmlwdGlvbikpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobUNhcGFiaWxpdGllcyA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAob3RoZXIubUNhcGFiaWxpdGllcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKCFtQ2FwYWJpbGl0aWVzLmVxdWFscyhvdGhlci5tQ2FwYWJpbGl0aWVzKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChtSWNvblJlc291cmNlSWQgIT0gb3RoZXIubUljb25SZXNvdXJjZUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1IYXNDdXN0b21QcmludGVySWNvbiAhPSBvdGhlci5tSGFzQ3VzdG9tUHJpbnRlckljb24pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobUN1c3RvbVByaW50ZXJJY29uR2VuICE9IG90aGVyLm1DdXN0b21QcmludGVySWNvbkdlbikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChtSW5mb0ludGVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAob3RoZXIubUluZm9JbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghbUluZm9JbnRlbnQuZXF1YWxzKG90aGVyLm1JbmZvSW50ZW50KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CiAgICAgICAgIGlmICh0aGlzID09IG9iaikgewpAQCAtMTc0LDI5ICszMzMsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBQcmludGVySW5mbyBvdGhlciA9IChQcmludGVySW5mbykgb2JqOwotICAgICAgICBpZiAobUlkID09IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChvdGhlci5tSWQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghbUlkLmVxdWFscyhvdGhlci5tSWQpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFUZXh0VXRpbHMuZXF1YWxzKG1OYW1lLCBvdGhlci5tTmFtZSkpIHsKKyAgICAgICAgaWYgKCFlcXVhbHNJZ25vcmluZ1N0YXR1cyhvdGhlcikpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAobVN0YXR1cyAhPSBvdGhlci5tU3RhdHVzKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFUZXh0VXRpbHMuZXF1YWxzKG1EZXNjcmlwdGlvbiwgb3RoZXIubURlc2NyaXB0aW9uKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtQ2FwYWJpbGl0aWVzID09IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChvdGhlci5tQ2FwYWJpbGl0aWVzICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoIW1DYXBhYmlsaXRpZXMuZXF1YWxzKG90aGVyLm1DYXBhYmlsaXRpZXMpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMDksNiArMzUxLDEwIEBACiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIHN0YXR1cz0iKS5hcHBlbmQobVN0YXR1cyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIGRlc2NyaXB0aW9uPSIpLmFwcGVuZChtRGVzY3JpcHRpb24pOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCBjYXBhYmlsaXRpZXM9IikuYXBwZW5kKG1DYXBhYmlsaXRpZXMpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCBpY29uUmVzSWQ9IikuYXBwZW5kKG1JY29uUmVzb3VyY2VJZCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIGhhc0N1c3RvbVByaW50ZXJJY29uPSIpLmFwcGVuZChtSGFzQ3VzdG9tUHJpbnRlckljb24pOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCBjdXN0b21QcmludGVySWNvbkdlbj0iKS5hcHBlbmQobUN1c3RvbVByaW50ZXJJY29uR2VuKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgaW5mb0ludGVudD0iKS5hcHBlbmQobUluZm9JbnRlbnQpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiXCJ9Iik7CiAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQpAQCAtMjI4LDcgKzM3NCw3IEBACiAgICAgICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBwcmludGVyIGlkIGlzIG51bGwsIG9yIHRoZQogICAgICAgICAgKiBwcmludGVyIG5hbWUgaXMgZW1wdHkgb3IgdGhlIHN0YXR1cyBpcyBub3QgYSB2YWxpZCBvbmUuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlcihQcmludGVySWQgcHJpbnRlcklkLCBTdHJpbmcgbmFtZSwgaW50IHN0YXR1cykgeworICAgICAgICBwdWJsaWMgQnVpbGRlcihATm9uTnVsbCBQcmludGVySWQgcHJpbnRlcklkLCBATm9uTnVsbCBTdHJpbmcgbmFtZSwgQFN0YXR1cyBpbnQgc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAocHJpbnRlcklkID09IG51bGwpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwcmludGVySWQgY2Fubm90IGJlIG51bGwuIik7CiAgICAgICAgICAgICB9CkBAIC0yNDksNyArMzk1LDcgQEAKICAgICAgICAgICoKICAgICAgICAgICogQHBhcmFtIG90aGVyIE90aGVyIGluZm8gZnJvbSB3aGljaCB0byBzdGFydCBidWlsZGluZy4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyKFByaW50ZXJJbmZvIG90aGVyKSB7CisgICAgICAgIHB1YmxpYyBCdWlsZGVyKEBOb25OdWxsIFByaW50ZXJJbmZvIG90aGVyKSB7CiAgICAgICAgICAgICBtUHJvdG90eXBlID0gbmV3IFByaW50ZXJJbmZvKCk7CiAgICAgICAgICAgICBtUHJvdG90eXBlLmNvcHlGcm9tKG90aGVyKTsKICAgICAgICAgfQpAQCAtMjY0LDE5ICs0MTAsNTAgQEAKICAgICAgICAgICogQHNlZSBQcmludGVySW5mbyNTVEFUVVNfQlVTWQogICAgICAgICAgKiBAc2VlIFByaW50ZXJJbmZvI1NUQVRVU19VTkFWQUlMQUJMRQogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgc2V0U3RhdHVzKGludCBzdGF0dXMpIHsKKyAgICAgICAgcHVibGljIEBOdWxsYWJsZSBCdWlsZGVyIHNldFN0YXR1cyhAU3RhdHVzIGludCBzdGF0dXMpIHsKICAgICAgICAgICAgIG1Qcm90b3R5cGUubVN0YXR1cyA9IHN0YXR1czsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIFNldCBhIGRyYXdhYmxlIHJlc291cmNlIGFzIGljb24gZm9yIHRoaXMgcHJpbnRlci4gSWYgbm8gaWNvbiBpcyBzZXQgdGhlIHByaW50ZXIncworICAgICAgICAgKiBzZXJ2aWNlJ3MgaWNvbiBpcyB1c2VkIGZvciB0aGUgcHJpbnRlci4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIGljb25SZXNvdXJjZUlkIFRoZSByZXNvdXJjZSBJRCBvZiB0aGUgaWNvbi4KKyAgICAgICAgICogQHJldHVybiBUaGlzIGJ1aWxkZXIuCisgICAgICAgICAqIEBzZWUgUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEBOb25OdWxsIEJ1aWxkZXIgc2V0SWNvblJlc291cmNlSWQoQERyYXdhYmxlUmVzIGludCBpY29uUmVzb3VyY2VJZCkgeworICAgICAgICAgICAgbVByb3RvdHlwZS5tSWNvblJlc291cmNlSWQgPSBpY29uUmVzb3VyY2VJZDsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIERlY2xhcmVzIHRoYXQgdGhlIHByaW50IHNlcnZpY2UgY2FuIGxvYWQgYSBjdXN0b20gcGVyIHByaW50ZXIncyBpY29uLiBJZiBib3RoCisgICAgICAgICAqIHtAbGluayBQcmludGVySW5mby5CdWlsZGVyI3NldEljb25SZXNvdXJjZUlkfSBhbmQgYSBjdXN0b20gaWNvbiBhcmUgc2V0IHRoZSByZXNvdXJjZSBpY29uCisgICAgICAgICAqIGlzIHNob3duIHdoaWxlIHRoZSBjdXN0b20gaWNvbiBsb2FkcyBidXQgdGhlbiB0aGUgY3VzdG9tIGljb24gaXMgdXNlZC4gSWYKKyAgICAgICAgICoge0BsaW5rIFByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SWNvblJlc291cmNlSWR9IGlzIG5vdCBzZXQgdGhlIHByaW50ZXIncyBzZXJ2aWNlJ3MgaWNvbiBpcworICAgICAgICAgKiBzaG93biB3aGlsZSBsb2FkaW5nLgorICAgICAgICAgKiA8cD4KKyAgICAgICAgICogVGhlIGljb24gaXMgcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGFuZCBvbmx5IHdoZW4gbmVlZGVkIHZpYQorICAgICAgICAgKiB7QGxpbmsgYW5kcm9pZC5wcmludHNlcnZpY2UuUHJpbnRlckRpc2NvdmVyeVNlc3Npb24jb25SZXF1ZXN0Q3VzdG9tUHJpbnRlckljb259LgorICAgICAgICAgKiA8L3A+CisgICAgICAgICAqCisgICAgICAgICAqIEByZXR1cm4gVGhpcyBidWlsZGVyLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEBOb25OdWxsIEJ1aWxkZXIgc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKSB7CisgICAgICAgICAgICBtUHJvdG90eXBlLm1IYXNDdXN0b21QcmludGVySWNvbiA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgogICAgICAgICAgKiBTZXRzIHRoZSA8c3Ryb25nPmxvY2FsaXplZDwvc3Ryb25nPiBwcmludGVyIG5hbWUgd2hpY2gKICAgICAgICAgICogaXMgc2hvd24gdG8gdGhlIHVzZXIKICAgICAgICAgICoKICAgICAgICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUuCiAgICAgICAgICAqIEByZXR1cm4gVGhpcyBidWlsZGVyLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXROYW1lKEBOb25OdWxsIFN0cmluZyBuYW1lKSB7CiAgICAgICAgICAgICBtUHJvdG90eXBlLm1OYW1lID0gbmFtZTsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CkBAIC0yODgsMTggKzQ2NSwzMCBAQAogICAgICAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uLgogICAgICAgICAgKiBAcmV0dXJuIFRoaXMgYnVpbGRlci4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIHNldERlc2NyaXB0aW9uKFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXREZXNjcmlwdGlvbihATm9uTnVsbCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgIG1Qcm90b3R5cGUubURlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CiAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfQogCiAgICAgICAgIC8qKgorICAgICAgICAgKiBTZXRzIHRoZSB7QGxpbmsgUGVuZGluZ0ludGVudH0gdGhhdCBsYXVuY2hlcyBhbiBhY3Rpdml0eSBzaG93aW5nIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICogdGhlIHByaW50ZXIuCisgICAgICAgICAqCisgICAgICAgICAqIEBwYXJhbSBpbmZvSW50ZW50IFRoZSB7QGxpbmsgUGVuZGluZ0ludGVudCBpbnRlbnR9LgorICAgICAgICAgKiBAcmV0dXJuIFRoaXMgYnVpbGRlci4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIHNldEluZm9JbnRlbnQoQE5vbk51bGwgUGVuZGluZ0ludGVudCBpbmZvSW50ZW50KSB7CisgICAgICAgICAgICBtUHJvdG90eXBlLm1JbmZvSW50ZW50ID0gaW5mb0ludGVudDsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCiAgICAgICAgICAqIFNldHMgdGhlIHByaW50ZXIgY2FwYWJpbGl0aWVzLgogICAgICAgICAgKgogICAgICAgICAgKiBAcGFyYW0gY2FwYWJpbGl0aWVzIFRoZSBjYXBhYmlsaXRpZXMuCiAgICAgICAgICAqIEByZXR1cm4gVGhpcyBidWlsZGVyLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgc2V0Q2FwYWJpbGl0aWVzKFByaW50ZXJDYXBhYmlsaXRpZXNJbmZvIGNhcGFiaWxpdGllcykgeworICAgICAgICBwdWJsaWMgQE5vbk51bGwgQnVpbGRlciBzZXRDYXBhYmlsaXRpZXMoQE5vbk51bGwgUHJpbnRlckNhcGFiaWxpdGllc0luZm8gY2FwYWJpbGl0aWVzKSB7CiAgICAgICAgICAgICBtUHJvdG90eXBlLm1DYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7CiAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfQpAQCAtMzA5LDcgKzQ5OCw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIEByZXR1cm4gQSBuZXcge0BsaW5rIFByaW50ZXJJbmZvfS4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBQcmludGVySW5mbyBidWlsZCgpIHsKKyAgICAgICAgcHVibGljIEBOb25OdWxsIFByaW50ZXJJbmZvIGJ1aWxkKCkgewogICAgICAgICAgICAgcmV0dXJuIG1Qcm90b3R5cGU7CiAgICAgICAgIH0KIApAQCAtMzE4LDYgKzUwNywxOSBAQAogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXMgPT0gU1RBVFVTX0JVU1kKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzID09IFNUQVRVU19VTkFWQUlMQUJMRSk7CiAgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogSW5jcmVtZW50cyB0aGUgZ2VuZXJhdGlvbiBudW1iZXIgb2YgdGhlIGN1c3RvbSBwcmludGVyIGljb24uIEFzIHRoZSB7QGxpbmsgUHJpbnRlckluZm99CisgICAgICAgICAqIGRvZXMgbm90IG1hdGNoIHRoZSBwcmV2aW91cyBvbmUgYW55bW9yZSwgdXNlcnMgb2YgdGhlIHtAbGluayBQcmludGVySW5mb30gd2lsbCByZWxvYWQgdGhlCisgICAgICAgICAqIGljb24gaWYgbmVlZGVkLgorICAgICAgICAgKgorICAgICAgICAgKiBAcmV0dXJuIFRoaXMgYnVpbGRlci4KKyAgICAgICAgICogQGhpZGUKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBATm9uTnVsbCBCdWlsZGVyIGluY0N1c3RvbVByaW50ZXJJY29uR2VuKCkgeworICAgICAgICAgICAgbVByb3RvdHlwZS5tQ3VzdG9tUHJpbnRlckljb25HZW4rKzsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8UHJpbnRlckluZm8+IENSRUFUT1IgPQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvcGRmL1ByaW50ZWRQZGZEb2N1bWVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnQvcGRmL1ByaW50ZWRQZGZEb2N1bWVudC5qYXZhCmluZGV4IDJkOGFhZmEuLmRmN2MwNTQgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50L3BkZi9QcmludGVkUGRmRG9jdW1lbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludC9wZGYvUHJpbnRlZFBkZkRvY3VtZW50LmphdmEKQEAgLTE2LDI2ICsxNiwyNSBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnQucGRmOwogCitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLkludFJhbmdlOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5Ob25OdWxsOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLnBkZi5QZGZEb2N1bWVudDsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLnBkZi5QZGZEb2N1bWVudC5QYWdlOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MucGRmLlBkZkRvY3VtZW50LlBhZ2VJbmZvOwogaW1wb3J0IGFuZHJvaWQucHJpbnQuUHJpbnRBdHRyaWJ1dGVzOwogaW1wb3J0IGFuZHJvaWQucHJpbnQuUHJpbnRBdHRyaWJ1dGVzLk1hcmdpbnM7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludEF0dHJpYnV0ZXMuTWVkaWFTaXplOwogCiAvKioKLSAqIFRoaXMgY2xhc3MgaXMgYSBoZWxwZXIgZm9yIGNyZWF0aW5nIGEgUERGIGZpbGUgZm9yIGdpdmVuIHByaW50Ci0gKiBhdHRyaWJ1dGVzLiBJdCBpcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZyBwcmludGluZyB2aWEgdGhlIG5hdGl2ZQotICogQW5kcm9pZCBncmFwaGljcyBBUElzLgorICogVGhpcyBjbGFzcyBpcyBhIGhlbHBlciBmb3IgY3JlYXRpbmcgYSBQREYgZmlsZSBmb3IgZ2l2ZW4gcHJpbnQgYXR0cmlidXRlcy4gSXQgaXMgdXNlZnVsIGZvcgorICogaW1wbGVtZW50aW5nIHByaW50aW5nIHZpYSB0aGUgbmF0aXZlIEFuZHJvaWQgZ3JhcGhpY3MgQVBJcy4KICAqIDxwPgotICogVGhpcyBjbGFzcyBjb21wdXRlcyB0aGUgcGFnZSB3aWR0aCwgcGFnZSBoZWlnaHQsIGFuZCBjb250ZW50IHJlY3RhbmdsZQotICogZnJvbSB0aGUgcHJvdmlkZWQgcHJpbnQgYXR0cmlidXRlcyBhbmQgdGhlc2UgcHJlY29tcHV0ZWQgdmFsdWVzIGNhbiBiZQotICogYWNjZXNzZWQgdmlhIHtAbGluayAjZ2V0UGFnZVdpZHRoKCl9LCB7QGxpbmsgI2dldFBhZ2VIZWlnaHQoKX0sIGFuZAotICoge0BsaW5rICNnZXRQYWdlQ29udGVudFJlY3QoKX0sIHJlc3BlY3RpdmVseS4gVGhlIHtAbGluayAjc3RhcnRQYWdlKGludCl9Ci0gKiBtZXRob2RzIGNyZWF0ZXMgcGFnZXMgd2hvc2Uge0BsaW5rIFBhZ2VJbmZvfSBpcyBpbml0aWFsaXplZCB3aXRoIHRoZQotICogcHJlY29tcHV0ZWQgdmFsdWVzIGZvciB3aWR0aCwgaGVpZ2h0LCBhbmQgY29udGVudCByZWN0YW5nbGUuCisgKiBUaGlzIGNsYXNzIGNvbXB1dGVzIHRoZSBwYWdlIHdpZHRoLCBwYWdlIGhlaWdodCwgYW5kIGNvbnRlbnQgcmVjdGFuZ2xlIGZyb20gdGhlIHByb3ZpZGVkIHByaW50CisgKiBhdHRyaWJ1dGVzIGFuZCB0aGVzZSBwcmVjb21wdXRlZCB2YWx1ZXMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB7QGxpbmsgI2dldFBhZ2VXaWR0aCgpfSwKKyAqIHtAbGluayAjZ2V0UGFnZUhlaWdodCgpfSwgYW5kIHtAbGluayAjZ2V0UGFnZUNvbnRlbnRSZWN0KCl9LCByZXNwZWN0aXZlbHkuIFRoZQorICoge0BsaW5rICNzdGFydFBhZ2UoaW50KX0gbWV0aG9kcyBjcmVhdGVzIHBhZ2VzIHdob3NlCisgKiB7QGxpbmsgYW5kcm9pZC5ncmFwaGljcy5wZGYuUGRmRG9jdW1lbnQuUGFnZUluZm8gUGFnZUluZm99IGlzIGluaXRpYWxpemVkIHdpdGggdGhlIHByZWNvbXB1dGVkCisgKiB2YWx1ZXMgZm9yIHdpZHRoLCBoZWlnaHQsIGFuZCBjb250ZW50IHJlY3RhbmdsZS4KICAqIDxwPgogICogQSB0eXBpY2FsIHVzZSBvZiB0aGUgQVBJcyBsb29rcyBsaWtlIHRoaXM6CiAgKiA8L3A+CkBAIC04MSw3ICs4MCw3IEBACiAgICAgICogQHBhcmFtIGNvbnRleHQgQ29udGV4dCBpbnN0YW5jZSBmb3IgYWNjZXNzaW5nIHJlc291cmNlcy4KICAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyBUaGUgcHJpbnQgYXR0cmlidXRlcy4KICAgICAgKi8KLSAgICBwdWJsaWMgUHJpbnRlZFBkZkRvY3VtZW50KENvbnRleHQgY29udGV4dCwgUHJpbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHsKKyAgICBwdWJsaWMgUHJpbnRlZFBkZkRvY3VtZW50KEBOb25OdWxsIENvbnRleHQgY29udGV4dCwgQE5vbk51bGwgUHJpbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHsKICAgICAgICAgTWVkaWFTaXplIG1lZGlhU2l6ZSA9IGF0dHJpYnV0ZXMuZ2V0TWVkaWFTaXplKCk7CiAKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgdGFyZ2V0IGNhbnZhcyBmcm9tIHRoZSBhdHRyaWJ1dGVzLgpAQCAtMTA1LDI4ICsxMDQsMjggQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBTdGFydHMgYSBuZXcgcGFnZS4gVGhlIHBhZ2UgaXMgY3JlYXRlZCB1c2luZyB3aWR0aCwgaGVpZ2h0ICBhbmQgY29udGVudAotICAgICAqIHJlY3RhbmdsZSBjb21wdXRlZCBmcm9tIHRoZSBwcmludCBhdHRyaWJ1dGVzIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3IKLSAgICAgKiBhbmQgdGhlIGdpdmVuIHBhZ2UgbnVtYmVyIHRvIGNyZWF0ZSBhbiBhcHByb3ByaWF0ZSB7QGxpbmsgUGFnZUluZm99LgorICAgICAqIFN0YXJ0cyBhIG5ldyBwYWdlLiBUaGUgcGFnZSBpcyBjcmVhdGVkIHVzaW5nIHdpZHRoLCBoZWlnaHQgYW5kIGNvbnRlbnQgcmVjdGFuZ2xlIGNvbXB1dGVkCisgICAgICogZnJvbSB0aGUgcHJpbnQgYXR0cmlidXRlcyBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCB0aGUgZ2l2ZW4gcGFnZSBudW1iZXIgdG8gY3JlYXRlIGFuCisgICAgICogYXBwcm9wcmlhdGUge0BsaW5rIGFuZHJvaWQuZ3JhcGhpY3MucGRmLlBkZkRvY3VtZW50LlBhZ2VJbmZvIFBhZ2VJbmZvfS4KICAgICAgKiA8cD4KLSAgICAgKiBBZnRlciB0aGUgcGFnZSBpcyBjcmVhdGVkIHlvdSBjYW4gZHJhdyBhcmJpdHJhcnkgY29udGVudCBvbiB0aGUgcGFnZSdzCi0gICAgICogY2FudmFzIHdoaWNoIHlvdSBjYW4gZ2V0IGJ5IGNhbGxpbmcge0BsaW5rIFBhZ2UjZ2V0Q2FudmFzKCkgUGFnZS5nZXRDYW52YXMoKX0uCisgICAgICogQWZ0ZXIgdGhlIHBhZ2UgaXMgY3JlYXRlZCB5b3UgY2FuIGRyYXcgYXJiaXRyYXJ5IGNvbnRlbnQgb24gdGhlIHBhZ2UncyBjYW52YXMgd2hpY2ggeW91IGNhbgorICAgICAqIGdldCBieSBjYWxsaW5nIHtAbGluayBhbmRyb2lkLmdyYXBoaWNzLnBkZi5QZGZEb2N1bWVudC5QYWdlI2dldENhbnZhcygpIFBhZ2UuZ2V0Q2FudmFzKCl9LgogICAgICAqIEFmdGVyIHlvdSBhcmUgZG9uZSBkcmF3aW5nIHRoZSBjb250ZW50IHlvdSBzaG91bGQgZmluaXNoIHRoZSBwYWdlIGJ5IGNhbGxpbmcKLSAgICAgKiB7QGxpbmsgI2ZpbmlzaFBhZ2UoUGFnZSl9LiBBZnRlciB0aGUgcGFnZSBpcyBmaW5pc2hlZCB5b3Ugc2hvdWxkIG5vIGxvbmdlcgotICAgICAqIGFjY2VzcyB0aGUgcGFnZSBvciBpdHMgY2FudmFzLgorICAgICAqIHtAbGluayAjZmluaXNoUGFnZShQYWdlKX0uIEFmdGVyIHRoZSBwYWdlIGlzIGZpbmlzaGVkIHlvdSBzaG91bGQgbm8gbG9uZ2VyIGFjY2VzcyB0aGUgcGFnZSBvcgorICAgICAqIGl0cyBjYW52YXMuCiAgICAgICogPC9wPgogICAgICAqIDxwPgotICAgICAqIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gRG8gbm90IGNhbGwgdGhpcyBtZXRob2QgYWZ0ZXIge0BsaW5rICNjbG9zZSgpfS4KLSAgICAgKiBBbHNvIGRvIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGlmIHRoZSBsYXN0IHBhZ2UgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QKLSAgICAgKiBpcyBub3QgZmluaXNoZWQgYnkgY2FsbGluZyB7QGxpbmsgI2ZpbmlzaFBhZ2UoUGFnZSl9LgorICAgICAqIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gRG8gbm90IGNhbGwgdGhpcyBtZXRob2QgYWZ0ZXIge0BsaW5rICNjbG9zZSgpfS4gQWxzbyBkbyBub3QgY2FsbCB0aGlzCisgICAgICogbWV0aG9kIGlmIHRoZSBsYXN0IHBhZ2UgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QgaXMgbm90IGZpbmlzaGVkIGJ5IGNhbGxpbmcKKyAgICAgKiB7QGxpbmsgI2ZpbmlzaFBhZ2UoUGFnZSl9LgogICAgICAqIDwvcD4KICAgICAgKgotICAgICAqIEBwYXJhbSBwYWdlTnVtYmVyIFRoZSBwYWdlIG51bWJlci4gTXVzdCBiZSBhIHBvc2l0aXZlIHZhbHVlLgorICAgICAqIEBwYXJhbSBwYWdlTnVtYmVyIFRoZSBwYWdlIG51bWJlci4gTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZS4KICAgICAgKiBAcmV0dXJuIEEgYmxhbmsgcGFnZS4KICAgICAgKgogICAgICAqIEBzZWUgI2ZpbmlzaFBhZ2UoUGFnZSkKICAgICAgKi8KLSAgICBwdWJsaWMgUGFnZSBzdGFydFBhZ2UoaW50IHBhZ2VOdW1iZXIpIHsKKyAgICBwdWJsaWMgQE5vbk51bGwgUGFnZSBzdGFydFBhZ2UoQEludFJhbmdlKGZyb20gPSAwKSBpbnQgcGFnZU51bWJlcikgewogICAgICAgICBQYWdlSW5mbyBwYWdlSW5mbyA9IG5ldyBQYWdlSW5mbwogICAgICAgICAgICAgICAgIC5CdWlsZGVyKG1QYWdlV2lkdGgsIG1QYWdlSGVpZ2h0LCBwYWdlTnVtYmVyKQogICAgICAgICAgICAgICAgIC5zZXRDb250ZW50UmVjdChtQ29udGVudFJlY3QpCkBAIC0xMzksNyArMTM4LDcgQEAKICAgICAgKgogICAgICAqIEByZXR1cm4gVGhlIHBhZ2Ugd2lkdGggaW4gUG9zdFNjcmlwdCBwb2ludHMgKDEvNzJ0aCBvZiBhbiBpbmNoKS4KICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFBhZ2VXaWR0aCgpIHsKKyAgICBwdWJsaWMgQEludFJhbmdlKGZyb20gPSAwKSBpbnQgZ2V0UGFnZVdpZHRoKCkgewogICAgICAgICByZXR1cm4gbVBhZ2VXaWR0aDsKICAgICB9CiAKQEAgLTE0OCw3ICsxNDcsNyBAQAogICAgICAqCiAgICAgICogQHJldHVybiBUaGUgcGFnZSBoZWlnaHQgaW4gUG9zdFNjcmlwdCBwb2ludHMgKDEvNzJ0aCBvZiBhbiBpbmNoKS4KICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFBhZ2VIZWlnaHQoKSB7CisgICAgcHVibGljIEBJbnRSYW5nZShmcm9tID0gMCkgaW50IGdldFBhZ2VIZWlnaHQoKSB7CiAgICAgICAgIHJldHVybiBtUGFnZUhlaWdodDsKICAgICB9CiAKQEAgLTE1OCw3ICsxNTcsNyBAQAogICAgICAqCiAgICAgICogQHJldHVybiBUaGUgY29udGVudCByZWN0YW5nbGUuCiAgICAgICovCi0gICAgcHVibGljIFJlY3QgZ2V0UGFnZUNvbnRlbnRSZWN0KCkgeworICAgIHB1YmxpYyBATm9uTnVsbCBSZWN0IGdldFBhZ2VDb250ZW50UmVjdCgpIHsKICAgICAgICAgcmV0dXJuIG1Db250ZW50UmVjdDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvQ3VzdG9tUHJpbnRlckljb25DYWxsYmFjay5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL0N1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTllYThiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL0N1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2suamF2YQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLnByaW50c2VydmljZTsKKworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5Ob25OdWxsOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5OdWxsYWJsZTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkljb247CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVySWQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworCisvKioKKyAqIENhbGxiYWNrIGZvciB7QGxpbmsgUHJpbnRlckRpc2NvdmVyeVNlc3Npb24jb25SZXF1ZXN0Q3VzdG9tUHJpbnRlckljb259LgorICovCitwdWJsaWMgY2xhc3MgQ3VzdG9tUHJpbnRlckljb25DYWxsYmFjayB7CisgICAgLyoqIFRoZSBwcmludGVyIHRoZSBjYWxsIGJhY2sgaXMgZm9yICovCisgICAgcHJpdmF0ZSBmaW5hbCBATm9uTnVsbCBQcmludGVySWQgbVByaW50ZXJJZDsKKyAgICBwcml2YXRlIGZpbmFsIEBOb25OdWxsIElQcmludFNlcnZpY2VDbGllbnQgbU9ic2VydmVyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMT0dfVEFHID0gIkN1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2siOworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgY2FsbGJhY2sgY2xhc3MgdG8gYmUgdXNlZCBvbmNlIGEgaWNvbiBpcyBsb2FkZWQKKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgVGhlIHByaW50ZXIgdGhlIGljb24gc2hvdWxkIGJlIGxvYWRlZCBmb3IKKyAgICAgKiBAcGFyYW0gb2JzZXJ2ZXIgVGhlIG9ic2VydmVyIHRoYXQgbmVlZHMgdG8gYmUgbm90aWZpZWQgYWJvdXQgdGhlIHVwZGF0ZS4KKyAgICAgKi8KKyAgICBDdXN0b21QcmludGVySWNvbkNhbGxiYWNrKEBOb25OdWxsIFByaW50ZXJJZCBwcmludGVySWQsIEBOb25OdWxsIElQcmludFNlcnZpY2VDbGllbnQgb2JzZXJ2ZXIpIHsKKyAgICAgICAgbVByaW50ZXJJZCA9IHByaW50ZXJJZDsKKyAgICAgICAgbU9ic2VydmVyID0gb2JzZXJ2ZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvdmlkZSBhIG5ldyBpY29uIGZvciBhIHByaW50ZXIuIENhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgdG8gdXBkYXRlIHRoZSBpY29uLgorICAgICAqCisgICAgICogQHBhcmFtIGljb24gVGhlIG5ldyBpY29uIGZvciB0aGUgcHJpbnRlciBvciBudWxsIHRvIHVuc2V0IHRoZSBjdXJyZW50IGljb24KKyAgICAgKiBAcmV0dXJuIHRydWUgaWZmIHRoZSBpY29uIGNvdWxkIGJlIHVwZGF0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKEBOdWxsYWJsZSBJY29uIGljb24pIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1PYnNlcnZlci5vbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKG1QcmludGVySWQsIGljb24pOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLmUoTE9HX1RBRyAsICJDb3VsZCBub3QgdXBkYXRlIGljb24iLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9JUHJpbnRTZXJ2aWNlLmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvSVByaW50U2VydmljZS5haWRsCmluZGV4IGVlMzY2MTkuLjM3NTBkN2EgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9JUHJpbnRTZXJ2aWNlLmFpZGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL0lQcmludFNlcnZpY2UuYWlkbApAQCAtMTAsNyArMTAsNyBAQAogICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ/9lIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKQEAgLTM1LDYgKzM1LDE1IEBACiAgICAgdm9pZCBzdG9wUHJpbnRlckRpc2NvdmVyeSgpOwogICAgIHZvaWQgdmFsaWRhdGVQcmludGVycyhpbiBMaXN0PFByaW50ZXJJZD4gcHJpbnRlcklkcyk7CiAgICAgdm9pZCBzdGFydFByaW50ZXJTdGF0ZVRyYWNraW5nKGluIFByaW50ZXJJZCBwcmludGVySWQpOworCisgICAgLyoqCisgICAgICogUmVxdWVzdCB0aGUgY3VzdG9tIGljb24gZm9yIGEgcHJpbnRlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIHNob3VsZCBiZSBsb2FkZWQgZm9yCisgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAqLworICAgIHZvaWQgcmVxdWVzdEN1c3RvbVByaW50ZXJJY29uKGluIFByaW50ZXJJZCBwcmludGVySWQpOworCiAgICAgdm9pZCBzdG9wUHJpbnRlclN0YXRlVHJhY2tpbmcoaW4gUHJpbnRlcklkIHByaW50ZXJJZCk7CiAgICAgdm9pZCBkZXN0cm95UHJpbnRlckRpc2NvdmVyeVNlc3Npb24oKTsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9JUHJpbnRTZXJ2aWNlQ2xpZW50LmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvSVByaW50U2VydmljZUNsaWVudC5haWRsCmluZGV4IGI0YmFhNDguLjBhZTFlMTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9JUHJpbnRTZXJ2aWNlQ2xpZW50LmFpZGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL0lQcmludFNlcnZpY2VDbGllbnQuYWlkbApAQCAtMTYsNiArMTYsNyBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnRzZXJ2aWNlOwogCitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3I7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludEpvYkluZm87CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVySWQ7CkBAIC01Myw0ICs1NCwxMyBAQAogCiAgICAgdm9pZCBvblByaW50ZXJzQWRkZWQoaW4gUGFyY2VsZWRMaXN0U2xpY2UgcHJpbnRlcnMpOwogICAgIHZvaWQgb25QcmludGVyc1JlbW92ZWQoaW4gUGFyY2VsZWRMaXN0U2xpY2UgcHJpbnRlcklkcyk7CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgdGhhdCBhIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIgd2FzIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIGJlbG9uZ3MgdG8KKyAgICAgKiBAcGFyYW0gaWNvbiB0aGUgaWNvbiB0aGF0IHdhcyBsb2FkZWQKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgdm9pZCBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKGluIFByaW50ZXJJZCBwcmludGVySWQsIGluIEljb24gaWNvbik7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnREb2N1bWVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL1ByaW50RG9jdW1lbnQuamF2YQppbmRleCBlNDNmMmE4Li4wMTIxYWUxIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnREb2N1bWVudC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludERvY3VtZW50LmphdmEKQEAgLTE2LDYgKzE2LDggQEAKIAogcGFja2FnZSBhbmRyb2lkLnByaW50c2VydmljZTsKIAoraW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5Ob25OdWxsOworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5OdWxsYWJsZTsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yOwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQucHJpbnQuUHJpbnREb2N1bWVudEluZm87CkBAIC01NCw3ICs1Niw3IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRoZSBkb2N1bWVudCBpbmZvLgogICAgICAqLwotICAgIHB1YmxpYyBQcmludERvY3VtZW50SW5mbyBnZXRJbmZvKCkgeworICAgIHB1YmxpYyBATm9uTnVsbCBQcmludERvY3VtZW50SW5mbyBnZXRJbmZvKCkgewogICAgICAgICBQcmludFNlcnZpY2UudGhyb3dJZk5vdENhbGxlZE9uTWFpblRocmVhZCgpOwogICAgICAgICByZXR1cm4gbUluZm87CiAgICAgfQpAQCAtNjksNyArNzEsNyBAQAogICAgICAqCiAgICAgICogQHJldHVybiBBIGZpbGUgZGVzY3JpcHRvciBmb3IgcmVhZGluZyB0aGUgZGF0YS4KICAgICAgKi8KLSAgICBwdWJsaWMgUGFyY2VsRmlsZURlc2NyaXB0b3IgZ2V0RGF0YSgpIHsKKyAgICBwdWJsaWMgQE51bGxhYmxlIFBhcmNlbEZpbGVEZXNjcmlwdG9yIGdldERhdGEoKSB7CiAgICAgICAgIFByaW50U2VydmljZS50aHJvd0lmTm90Q2FsbGVkT25NYWluVGhyZWFkKCk7CiAgICAgICAgIFBhcmNlbEZpbGVEZXNjcmlwdG9yIHNvdXJjZSA9IG51bGw7CiAgICAgICAgIFBhcmNlbEZpbGVEZXNjcmlwdG9yIHNpbmsgPSBudWxsOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL1ByaW50Sm9iLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRKb2IuamF2YQppbmRleCA4NmZjMjkyLi42NDE0YjZhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRKb2IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRKb2IuamF2YQpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgICAgICogQHJldHVybiBUcnVlIGlmIHRoZSB0YWcgd2FzIHNldCwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgICAqLwogICAgIEBNYWluVGhyZWFkCi0gICAgcHVibGljIGJvb2xlYW4gc2V0VGFnKFN0cmluZyB0YWcpIHsKKyAgICBwdWJsaWMgYm9vbGVhbiBzZXRUYWcoQE5vbk51bGwgU3RyaW5nIHRhZykgewogICAgICAgICBQcmludFNlcnZpY2UudGhyb3dJZk5vdENhbGxlZE9uTWFpblRocmVhZCgpOwogICAgICAgICBpZiAoaXNJbkltbXV0YWJsZVN0YXRlKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2NCw3ICszNjQsOCBAQAogICAgICAqCiAgICAgICogQHNlZSAjc2V0VGFnKFN0cmluZykKICAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldFRhZygpIHsKKyAgICBATWFpblRocmVhZAorICAgIHB1YmxpYyBATnVsbGFibGUgU3RyaW5nIGdldFRhZygpIHsKICAgICAgICAgUHJpbnRTZXJ2aWNlLnRocm93SWZOb3RDYWxsZWRPbk1haW5UaHJlYWQoKTsKICAgICAgICAgcmV0dXJuIGdldEluZm8oKS5nZXRUYWcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRTZXJ2aWNlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRTZXJ2aWNlLmphdmEKaW5kZXggNjI5NTgyMi4uZDAwMzdiNyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL1ByaW50U2VydmljZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludFNlcnZpY2UuamF2YQpAQCAtMTYsNiArMTYsNyBAQAogCiBwYWNrYWdlIGFuZHJvaWQucHJpbnRzZXJ2aWNlOwogCitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLk51bGxhYmxlOwogaW1wb3J0IGFuZHJvaWQuYXBwLlNlcnZpY2U7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CkBAIC0xOTEsMzAgKzE5MiwyOSBAQAogCiAgICAgLyoqCiAgICAgICogSWYgeW91IGRlY2xhcmVkIGFuIG9wdGlvbmFsIGFjdGl2aXR5IHdpdGggYWR2YW5jZWQgcHJpbnQgb3B0aW9ucyB2aWEgdGhlCi0gICAgICoge0BsaW5rIGFuZHJvaWQuUi5hdHRyI2FkdmFuY2VkUHJpbnRPcHRpb25zQWN0aXZpdHkgYWR2YW5jZWRQcmludE9wdGlvbnNBY3Rpdml0eX0KLSAgICAgKiBhdHRyaWJ1dGUsIHRoaXMgZXh0cmEgaXMgdXNlZCB0byBwYXNzIGluIHRoZSBjdXJyZW50bHkgY29uc3RydWN0ZWQge0BsaW5rCi0gICAgICogUHJpbnRKb2JJbmZvfSB0byB5b3VyIGFjdGl2aXR5IGFsbG93aW5nIHlvdSB0byBtb2RpZnkgaXQuIEFmdGVyIHlvdSBhcmUKLSAgICAgKiBkb25lLCB5b3UgbXVzdCByZXR1cm4gdGhlIG1vZGlmaWVkIHtAbGluayBQcmludEpvYkluZm99IHZpYSB0aGUgc2FtZSBleHRyYS4KKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5SLmF0dHIjYWR2YW5jZWRQcmludE9wdGlvbnNBY3Rpdml0eSBhZHZhbmNlZFByaW50T3B0aW9uc0FjdGl2aXR5fSBhdHRyaWJ1dGUsCisgICAgICogdGhpcyBleHRyYSBpcyB1c2VkIHRvIHBhc3MgaW4gdGhlIGN1cnJlbnRseSBjb25zdHJ1Y3RlZCB7QGxpbmsgUHJpbnRKb2JJbmZvfSB0byB5b3VyIGFjdGl2aXR5CisgICAgICogYWxsb3dpbmcgeW91IHRvIG1vZGlmeSBpdC4gQWZ0ZXIgeW91IGFyZSBkb25lLCB5b3UgbXVzdCByZXR1cm4gdGhlIG1vZGlmaWVkCisgICAgICoge0BsaW5rIFByaW50Sm9iSW5mb30gdmlhIHRoZSBzYW1lIGV4dHJhLgogICAgICAqIDxwPgotICAgICAqIFlvdSBjYW5ub3QgbW9kaWZ5IHRoZSBwYXNzZWQgaW4ge0BsaW5rIFByaW50Sm9iSW5mb30gZGlyZWN0bHksIHJhdGhlciB5b3UKLSAgICAgKiBzaG91bGQgYnVpbGQgYW5vdGhlciBvbmUgdXNpbmcgdGhlIHtAbGluayBQcmludEpvYkluZm8uQnVpbGRlcn0gY2xhc3MuIFlvdQotICAgICAqIGNhbiBzcGVjaWZ5IGFueSBzdGFuZGFyZCBwcm9wZXJ0aWVzIGFuZCBhZGQgYWR2YW5jZWQsIHByaW50ZXIgc3BlY2lmaWMsCi0gICAgICogb25lcyB2aWEge0BsaW5rIFByaW50Sm9iSW5mby5CdWlsZGVyI3B1dEFkdmFuY2VkT3B0aW9uKFN0cmluZywgU3RyaW5nKQotICAgICAqIFByaW50Sm9iSW5mby5CdWlsZGVyLnB1dEFkdmFuY2VkT3B0aW9uKFN0cmluZywgU3RyaW5nKX0gYW5kIHtAbGluawotICAgICAqIFByaW50Sm9iSW5mby5CdWlsZGVyI3B1dEFkdmFuY2VkT3B0aW9uKFN0cmluZywgaW50KQotICAgICAqIFByaW50Sm9iSW5mby5CdWlsZGVyLnB1dEFkdmFuY2VkT3B0aW9uKFN0cmluZywgaW50KX0uIFRoZSBhZHZhbmNlZCBvcHRpb25zCi0gICAgICogYXJlIG5vdCBpbnRlcnByZXRlZCBieSB0aGUgc3lzdGVtLCB0aGV5IHdpbGwgbm90IGJlIHZpc2libGUgdG8gYXBwbGljYXRpb25zLAotICAgICAqIGFuZCBjYW4gb25seSBiZSBhY2Nlc3NlZCBieSB5b3VyIHByaW50IHNlcnZpY2UgdmlhIHtAbGluawotICAgICAqIFByaW50Sm9iI2dldEFkdmFuY2VkU3RyaW5nT3B0aW9uKFN0cmluZykgUHJpbnRKb2IuZ2V0QWR2YW5jZWRTdHJpbmdPcHRpb24oU3RyaW5nKX0KLSAgICAgKiBhbmQge0BsaW5rIFByaW50Sm9iI2dldEFkdmFuY2VkSW50T3B0aW9uKFN0cmluZykgUHJpbnRKb2IuZ2V0QWR2YW5jZWRJbnRPcHRpb24oU3RyaW5nKX0uCisgICAgICogWW91IGNhbm5vdCBtb2RpZnkgdGhlIHBhc3NlZCBpbiB7QGxpbmsgUHJpbnRKb2JJbmZvfSBkaXJlY3RseSwgcmF0aGVyIHlvdSBzaG91bGQgYnVpbGQKKyAgICAgKiBhbm90aGVyIG9uZSB1c2luZyB0aGUge0BsaW5rIGFuZHJvaWQucHJpbnQuUHJpbnRKb2JJbmZvLkJ1aWxkZXIgUHJpbnRKb2JJbmZvLkJ1aWxkZXJ9IGNsYXNzLgorICAgICAqIFlvdSBjYW4gc3BlY2lmeSBhbnkgc3RhbmRhcmQgcHJvcGVydGllcyBhbmQgYWRkIGFkdmFuY2VkLCBwcmludGVyIHNwZWNpZmljLCBvbmVzIHZpYQorICAgICAqIHtAbGluayBhbmRyb2lkLnByaW50LlByaW50Sm9iSW5mby5CdWlsZGVyI3B1dEFkdmFuY2VkT3B0aW9uKFN0cmluZywgU3RyaW5nKQorICAgICAqIFByaW50Sm9iSW5mby5CdWlsZGVyLnB1dEFkdmFuY2VkT3B0aW9uKFN0cmluZywgU3RyaW5nKX0gYW5kCisgICAgICoge0BsaW5rIGFuZHJvaWQucHJpbnQuUHJpbnRKb2JJbmZvLkJ1aWxkZXIjcHV0QWR2YW5jZWRPcHRpb24oU3RyaW5nLCBpbnQpCisgICAgICogUHJpbnRKb2JJbmZvLkJ1aWxkZXIucHV0QWR2YW5jZWRPcHRpb24oU3RyaW5nLCBpbnQpfS4gVGhlIGFkdmFuY2VkIG9wdGlvbnMgYXJlIG5vdAorICAgICAqIGludGVycHJldGVkIGJ5IHRoZSBzeXN0ZW0sIHRoZXkgd2lsbCBub3QgYmUgdmlzaWJsZSB0byBhcHBsaWNhdGlvbnMsIGFuZCBjYW4gb25seSBiZSBhY2Nlc3NlZAorICAgICAqIGJ5IHlvdXIgcHJpbnQgc2VydmljZSB2aWEge0BsaW5rIFByaW50Sm9iI2dldEFkdmFuY2VkU3RyaW5nT3B0aW9uKFN0cmluZykKKyAgICAgKiBQcmludEpvYi5nZXRBZHZhbmNlZFN0cmluZ09wdGlvbihTdHJpbmcpfSBhbmQge0BsaW5rIFByaW50Sm9iI2dldEFkdmFuY2VkSW50T3B0aW9uKFN0cmluZykKKyAgICAgKiBQcmludEpvYi5nZXRBZHZhbmNlZEludE9wdGlvbihTdHJpbmcpfS4KICAgICAgKiA8L3A+CiAgICAgICogPHA+Ci0gICAgICogSWYgdGhlIGFkdmFuY2VkIHByaW50IG9wdGlvbnMgYWN0aXZpdHkgb2ZmZXJzIGNoYW5nZXMgdG8gdGhlIHN0YW5kYXJkIHByaW50Ci0gICAgICogb3B0aW9ucywgeW91IGNhbiBnZXQgdGhlIGN1cnJlbnQge0BsaW5rIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm99IHVzaW5nIHRoZQotICAgICAqIHtAbGluayAjRVhUUkFfUFJJTlRFUl9JTkZPfSBleHRyYSB3aGljaCB3aWxsIGFsbG93IHlvdSB0byBwcmVzZW50IHRoZSB1c2VyCi0gICAgICogd2l0aCBVSSBvcHRpb25zIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBwcmludGVyLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGN1cnJlbnQKLSAgICAgKiBwcmludGVyIGRvZXMgbm90IHN1cHBvcnQgYSBnaXZlbiBtZWRpYSBzaXplLCB5b3Ugc2hvdWxkIG5vdCBvZmZlciBpdCBpbiB0aGUKLSAgICAgKiBhZHZhbmNlZCBwcmludCBvcHRpb25zIFVJLgorICAgICAqIElmIHRoZSBhZHZhbmNlZCBwcmludCBvcHRpb25zIGFjdGl2aXR5IG9mZmVycyBjaGFuZ2VzIHRvIHRoZSBzdGFuZGFyZCBwcmludCBvcHRpb25zLCB5b3UgY2FuCisgICAgICogZ2V0IHRoZSBjdXJyZW50IHtAbGluayBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvIFByaW50ZXJJbmZvfSB1c2luZyB0aGUKKyAgICAgKiB7QGxpbmsgI0VYVFJBX1BSSU5URVJfSU5GT30gZXh0cmEgd2hpY2ggd2lsbCBhbGxvdyB5b3UgdG8gcHJlc2VudCB0aGUgdXNlciB3aXRoIFVJIG9wdGlvbnMKKyAgICAgKiBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgcHJpbnRlci4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjdXJyZW50IHByaW50ZXIgZG9lcyBub3Qgc3VwcG9ydCBhCisgICAgICogZ2l2ZW4gbWVkaWEgc2l6ZSwgeW91IHNob3VsZCBub3Qgb2ZmZXIgaXQgaW4gdGhlIGFkdmFuY2VkIHByaW50IG9wdGlvbnMgVUkuCiAgICAgICogPC9wPgogICAgICAqCiAgICAgICogQHNlZSAjRVhUUkFfUFJJTlRFUl9JTkZPCkBAIC0yNzUsOSArMjc1LDEwIEBACiAgICAgLyoqCiAgICAgICogQ2FsbGJhY2sgYXNraW5nIHlvdSB0byBjcmVhdGUgYSBuZXcge0BsaW5rIFByaW50ZXJEaXNjb3ZlcnlTZXNzaW9ufS4KICAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIGNyZWF0ZWQgc2Vzc2lvbi4KICAgICAgKiBAc2VlIFByaW50ZXJEaXNjb3ZlcnlTZXNzaW9uCiAgICAgICovCi0gICAgcHJvdGVjdGVkIGFic3RyYWN0IFByaW50ZXJEaXNjb3ZlcnlTZXNzaW9uIG9uQ3JlYXRlUHJpbnRlckRpc2NvdmVyeVNlc3Npb24oKTsKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgQE51bGxhYmxlIFByaW50ZXJEaXNjb3ZlcnlTZXNzaW9uIG9uQ3JlYXRlUHJpbnRlckRpc2NvdmVyeVNlc3Npb24oKTsKIAogICAgIC8qKgogICAgICAqIENhbGxlZCB3aGVuIGNhbmNlbGxhdGlvbiBvZiBhIHByaW50IGpvYiBpcyByZXF1ZXN0ZWQuIFRoZSBzZXJ2aWNlCkBAIC0zNjgsNiArMzY5LDcgQEAKICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKFNlcnZpY2VIYW5kbGVyLk1TR19ERVNUUk9ZX1BSSU5URVJfRElTQ09WRVJZX1NFU1NJT04pOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHN0YXJ0UHJpbnRlckRpc2NvdmVyeShMaXN0PFByaW50ZXJJZD4gcHJpb3JpdHlMaXN0KSB7CiAgICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShTZXJ2aWNlSGFuZGxlci5NU0dfU1RBUlRfUFJJTlRFUl9ESVNDT1ZFUlksCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eUxpc3QpLnNlbmRUb1RhcmdldCgpOwpAQCAtMzkxLDYgKzM5MywxMiBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RDdXN0b21QcmludGVySWNvbihQcmludGVySWQgcHJpbnRlcklkKSB7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShTZXJ2aWNlSGFuZGxlci5NU0dfUkVRVUVTVF9DVVNUT01fUFJJTlRFUl9JQ09OLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRlcklkKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzdG9wUHJpbnRlclN0YXRlVHJhY2tpbmcoUHJpbnRlcklkIHByaW50ZXJJZCkgewogICAgICAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU2VydmljZUhhbmRsZXIuTVNHX1NUT1BfUFJJTlRFUl9TVEFURV9UUkFDS0lORywKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXJJZCkuc2VuZFRvVGFyZ2V0KCk7CkBAIC00MjMsMTAgKzQzMSwxMSBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNU0dfU1RPUF9QUklOVEVSX0RJU0NPVkVSWSA9IDQ7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1TR19WQUxJREFURV9QUklOVEVSUyA9IDU7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1TR19TVEFSVF9QUklOVEVSX1NUQVRFX1RSQUNLSU5HID0gNjsKLSAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1NUT1BfUFJJTlRFUl9TVEFURV9UUkFDS0lORyA9IDc7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1TR19PTl9QUklOVEpPQl9RVUVVRUQgPSA4OwotICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNU0dfT05fUkVRVUVTVF9DQU5DRUxfUFJJTlRKT0IgPSA5OwotICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNU0dfU0VUX0NMSUVOVCA9IDEwOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNU0dfUkVRVUVTVF9DVVNUT01fUFJJTlRFUl9JQ09OID0gNzsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1NUT1BfUFJJTlRFUl9TVEFURV9UUkFDS0lORyA9IDg7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1TR19PTl9QUklOVEpPQl9RVUVVRUQgPSA5OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNU0dfT05fUkVRVUVTVF9DQU5DRUxfUFJJTlRKT0IgPSAxMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1NFVF9DTElFTlQgPSAxMTsKIAogICAgICAgICBwdWJsaWMgU2VydmljZUhhbmRsZXIoTG9vcGVyIGxvb3BlcikgewogICAgICAgICAgICAgc3VwZXIobG9vcGVyLCBudWxsLCB0cnVlKTsKQEAgLTUwOCw2ICs1MTcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gYnJlYWs7CiAKKyAgICAgICAgICAgICAgICBjYXNlIE1TR19SRVFVRVNUX0NVU1RPTV9QUklOVEVSX0lDT046IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAiTVNHX1JFUVVFU1RfQ1VTVE9NX1BSSU5URVJfSUNPTiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZ2V0UGFja2FnZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1EaXNjb3ZlcnlTZXNzaW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50ZXJJZCBwcmludGVySWQgPSAoUHJpbnRlcklkKSBtZXNzYWdlLm9iajsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1EaXNjb3ZlcnlTZXNzaW9uLnJlcXVlc3RDdXN0b21QcmludGVySWNvbihwcmludGVySWQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTVNHX1NUT1BfUFJJTlRFUl9TVEFURV9UUkFDS0lORzogewogICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJNU0dfU1RPUF9QUklOVEVSX1NUQVRFX1RSQUNLSU5HICIKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludFNlcnZpY2VJbmZvLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRTZXJ2aWNlSW5mby5qYXZhCmluZGV4IGEyYzZjMDkuLmIzM2VmODMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludFNlcnZpY2VJbmZvLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJpbnRzZXJ2aWNlL1ByaW50U2VydmljZUluZm8uamF2YQpAQCAtOTgsOCArOTgsNyBAQAogICAgICAqCiAgICAgICogQHBhcmFtIHJlc29sdmVJbmZvIFRoZSBzZXJ2aWNlIHJlc29sdmUgaW5mby4KICAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IGZvciBhY2Nlc3NpbmcgcmVzb3VyY2VzLgotICAgICAqIEB0aHJvd3MgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiBJZiBhIFhNTCBwYXJzaW5nIGVycm9yIG9jY3Vycy4KLSAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIElmIGEgSS9PIGVycm9yIG9jY3Vycy4KKyAgICAgKiBAcmV0dXJuIFRoZSBjcmVhdGVkIGluc3RhbmNlLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgUHJpbnRTZXJ2aWNlSW5mbyBjcmVhdGUoUmVzb2x2ZUluZm8gcmVzb2x2ZUluZm8sIENvbnRleHQgY29udGV4dCkgewogICAgICAgICBTdHJpbmcgc2V0dGluZ3NBY3Rpdml0eU5hbWUgPSBudWxsOwpAQCAtMjIwLDEwICsyMTksMTIgQEAKICAgICAvKioKICAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgICovCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKFBhcmNlbCBwYXJjZWwsIGludCBmbGFneikgewogICAgICAgICBwYXJjZWwud3JpdGVTdHJpbmcobUlkKTsKICAgICAgICAgcGFyY2VsLndyaXRlUGFyY2VsYWJsZShtUmVzb2x2ZUluZm8sIDApOwpAQCAtMjc1LDEwICsyNzYsMTIgQEAKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPFByaW50U2VydmljZUluZm8+IENSRUFUT1IgPQogICAgICAgICAgICAgbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxQcmludFNlcnZpY2VJbmZvPigpIHsKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBQcmludFNlcnZpY2VJbmZvIGNyZWF0ZUZyb21QYXJjZWwoUGFyY2VsIHBhcmNlbCkgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmludFNlcnZpY2VJbmZvKHBhcmNlbCk7CiAgICAgICAgIH0KIAorICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFByaW50U2VydmljZUluZm9bXSBuZXdBcnJheShpbnQgc2l6ZSkgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmludFNlcnZpY2VJbmZvW3NpemVdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcmludHNlcnZpY2UvUHJpbnRlckRpc2NvdmVyeVNlc3Npb24uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludGVyRGlzY292ZXJ5U2Vzc2lvbi5qYXZhCmluZGV4IDE3Y2I2OGYuLmNkNWE5MDMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludGVyRGlzY292ZXJ5U2Vzc2lvbi5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ByaW50c2VydmljZS9QcmludGVyRGlzY292ZXJ5U2Vzc2lvbi5qYXZhCkBAIC0xNiw2ICsxNiw3IEBACiAKIHBhY2thZ2UgYW5kcm9pZC5wcmludHNlcnZpY2U7CiAKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFyY2VsZWRMaXN0U2xpY2U7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVyQ2FwYWJpbGl0aWVzSW5mbzsKQEAgLTEzOCw3ICsxMzksNyBAQAogICAgICAqIEBzZWUgI3JlbW92ZVByaW50ZXJzKExpc3QpCiAgICAgICogQHNlZSAjaXNEZXN0cm95ZWQoKQogICAgICAqLwotICAgIHB1YmxpYyBmaW5hbCBMaXN0PFByaW50ZXJJbmZvPiBnZXRQcmludGVycygpIHsKKyAgICBwdWJsaWMgZmluYWwgQE5vbk51bGwgTGlzdDxQcmludGVySW5mbz4gZ2V0UHJpbnRlcnMoKSB7CiAgICAgICAgIFByaW50U2VydmljZS50aHJvd0lmTm90Q2FsbGVkT25NYWluVGhyZWFkKCk7CiAgICAgICAgIGlmIChtSXNEZXN0cm95ZWQpIHsKICAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKQEAgLTE2MSw3ICsxNjIsNyBAQAogICAgICAqIEBzZWUgI2dldFByaW50ZXJzKCkKICAgICAgKiBAc2VlICNpc0Rlc3Ryb3llZCgpCiAgICAgICovCi0gICAgcHVibGljIGZpbmFsIHZvaWQgYWRkUHJpbnRlcnMoTGlzdDxQcmludGVySW5mbz4gcHJpbnRlcnMpIHsKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBhZGRQcmludGVycyhATm9uTnVsbCBMaXN0PFByaW50ZXJJbmZvPiBwcmludGVycykgewogICAgICAgICBQcmludFNlcnZpY2UudGhyb3dJZk5vdENhbGxlZE9uTWFpblRocmVhZCgpOwogCiAgICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIGlzIGRlc3Ryb3llZCAtIG5vdGhpbmcgZG8gdG8uCkBAIC0yMjUsNyArMjI2LDcgQEAKICAgICAgKiBAc2VlICNnZXRQcmludGVycygpCiAgICAgICogQHNlZSAjaXNEZXN0cm95ZWQoKQogICAgICAqLwotICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlbW92ZVByaW50ZXJzKExpc3Q8UHJpbnRlcklkPiBwcmludGVySWRzKSB7CisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlUHJpbnRlcnMoQE5vbk51bGwgTGlzdDxQcmludGVySWQ+IHByaW50ZXJJZHMpIHsKICAgICAgICAgUHJpbnRTZXJ2aWNlLnRocm93SWZOb3RDYWxsZWRPbk1haW5UaHJlYWQoKTsKIAogICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiBpcyBkZXN0cm95ZWQgLSBub3RoaW5nIGRvIHRvLgpAQCAtMzUwLDcgKzM1MSw3IEBACiAgICAgICogQHNlZSAjcmVtb3ZlUHJpbnRlcnMoTGlzdCkKICAgICAgKiBAc2VlICNpc1ByaW50ZXJEaXNjb3ZlcnlTdGFydGVkKCkKICAgICAgKi8KLSAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblN0YXJ0UHJpbnRlckRpc2NvdmVyeShMaXN0PFByaW50ZXJJZD4gcHJpb3JpdHlMaXN0KTsKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblN0YXJ0UHJpbnRlckRpc2NvdmVyeShATm9uTnVsbCBMaXN0PFByaW50ZXJJZD4gcHJpb3JpdHlMaXN0KTsKIAogICAgIC8qKgogICAgICAqIENhbGxiYWNrIG5vdGlmeWluZyB5b3UgdGhhdCB5b3Ugc2hvdWxkIHN0b3AgcHJpbnRlciBkaXNjb3ZlcnkuCkBAIC0zNzIsMTAgKzM3MywxMCBAQAogICAgICAqCiAgICAgICogQHBhcmFtIHByaW50ZXJJZHMgVGhlIHByaW50ZXJzIHRvIHZhbGlkYXRlLgogICAgICAqCi0gICAgICogQHNlZSBQcmludGVySW5mby5CdWlsZGVyI3NldENhcGFiaWxpdGllcyhQcmludGVyQ2FwYWJpbGl0aWVzSW5mbykKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRDYXBhYmlsaXRpZXMoUHJpbnRlckNhcGFiaWxpdGllc0luZm8pCiAgICAgICogICAgICBQcmludGVySW5mby5CdWlsZGVyLnNldENhcGFiaWxpdGllcyhQcmludGVyQ2FwYWJpbGl0aWVzSW5mbykKICAgICAgKi8KLSAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblZhbGlkYXRlUHJpbnRlcnMoTGlzdDxQcmludGVySWQ+IHByaW50ZXJJZHMpOworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uVmFsaWRhdGVQcmludGVycyhATm9uTnVsbCBMaXN0PFByaW50ZXJJZD4gcHJpbnRlcklkcyk7CiAKICAgICAvKioKICAgICAgKiBDYWxsYmFjayBhc2tpbmcgeW91IHRvIHN0YXJ0IHRyYWNraW5nIHRoZSBzdGF0ZSBvZiBhIHByaW50ZXIuIFRyYWNraW5nCkBAIC00MDAsMTAgKzQwMSwyNCBAQAogICAgICAqIEBwYXJhbSBwcmludGVySWQgVGhlIHByaW50ZXIgdG8gc3RhcnQgdHJhY2tpbmcuCiAgICAgICoKICAgICAgKiBAc2VlICNvblN0b3BQcmludGVyU3RhdGVUcmFja2luZyhQcmludGVySWQpCi0gICAgICogQHNlZSBQcmludGVySW5mby5CdWlsZGVyI3NldENhcGFiaWxpdGllcyhQcmludGVyQ2FwYWJpbGl0aWVzSW5mbykKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRDYXBhYmlsaXRpZXMoUHJpbnRlckNhcGFiaWxpdGllc0luZm8pCiAgICAgICogICAgICBQcmludGVySW5mby5CdWlsZGVyLnNldENhcGFiaWxpdGllcyhQcmludGVyQ2FwYWJpbGl0aWVzSW5mbykKICAgICAgKi8KLSAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBvblN0YXJ0UHJpbnRlclN0YXRlVHJhY2tpbmcoUHJpbnRlcklkIHByaW50ZXJJZCk7CisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgb25TdGFydFByaW50ZXJTdGF0ZVRyYWNraW5nKEBOb25OdWxsIFByaW50ZXJJZCBwcmludGVySWQpOworCisgICAgLyoqCisgICAgICogUmVxdWVzdCB0aGUgY3VzdG9tIGljb24gZm9yIGEgcHJpbnRlci4gT25jZSB0aGUgaWNvbiBpcyBhdmFpbGFibGUgdXNlCisgICAgICoge0BsaW5rIEN1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2sjb25DdXN0b21QcmludGVySWNvbkxvYWRlZH0gdG8gc2VuZCB0aGUgZGF0YSB0byB0aGUgcHJpbnQKKyAgICAgKiBzZXJ2aWNlLgorICAgICAqCisgICAgICogQHBhcmFtIHByaW50ZXJJZCBUaGUgcHJpbnRlciB0byBpY29uIGJlbG9uZ3MgdG8uCisgICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrIGZvciByZXR1cm5pbmcgdGhlIGljb24gdG8gdGhlIHByaW50IHNwb29sZXIuCisgICAgICoKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgcHVibGljIHZvaWQgb25SZXF1ZXN0Q3VzdG9tUHJpbnRlckljb24oQE5vbk51bGwgUHJpbnRlcklkIHByaW50ZXJJZCwKKyAgICAgICAgICAgIEBOb25OdWxsIEN1c3RvbVByaW50ZXJJY29uQ2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgICB9CiAKICAgICAvKioKICAgICAgKiBDYWxsYmFjayBhc2tpbmcgeW91IHRvIHN0b3AgdHJhY2tpbmcgdGhlIHN0YXRlIG9mIGEgcHJpbnRlci4gVGhlIHBhc3NlZApAQCAtNDE0LDcgKzQyOSw3IEBACiAgICAgICoKICAgICAgKiBAc2VlICNvblN0YXJ0UHJpbnRlclN0YXRlVHJhY2tpbmcoUHJpbnRlcklkKQogICAgICAqLwotICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RvcFByaW50ZXJTdGF0ZVRyYWNraW5nKFByaW50ZXJJZCBwcmludGVySWQpOworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3RvcFByaW50ZXJTdGF0ZVRyYWNraW5nKEBOb25OdWxsIFByaW50ZXJJZCBwcmludGVySWQpOwogCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUgcHJpbnRlcnMgdGhhdCBzaG91bGQgYmUgdHJhY2tlZC4gVGhlc2UgYXJlIHByaW50ZXJzIHRoYXQgYXJlCkBAIC00MzQsNyArNDQ5LDcgQEAKICAgICAgKiBAc2VlICNvblN0b3BQcmludGVyU3RhdGVUcmFja2luZyhQcmludGVySWQpCiAgICAgICogQHNlZSAjaXNEZXN0cm95ZWQoKQogICAgICAqLwotICAgIHB1YmxpYyBmaW5hbCBMaXN0PFByaW50ZXJJZD4gZ2V0VHJhY2tlZFByaW50ZXJzKCkgeworICAgIHB1YmxpYyBmaW5hbCBATm9uTnVsbCBMaXN0PFByaW50ZXJJZD4gZ2V0VHJhY2tlZFByaW50ZXJzKCkgewogICAgICAgICBQcmludFNlcnZpY2UudGhyb3dJZk5vdENhbGxlZE9uTWFpblRocmVhZCgpOwogICAgICAgICBpZiAobUlzRGVzdHJveWVkKSB7CiAgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCk7CkBAIC00NzYsNyArNDkxLDcgQEAKICAgICAgICAgcmV0dXJuIG1Jc0Rpc2NvdmVyeVN0YXJ0ZWQ7CiAgICAgfQogCi0gICAgdm9pZCBzdGFydFByaW50ZXJEaXNjb3ZlcnkoTGlzdDxQcmludGVySWQ+IHByaW9yaXR5TGlzdCkgeworICAgIHZvaWQgc3RhcnRQcmludGVyRGlzY292ZXJ5KEBOb25OdWxsIExpc3Q8UHJpbnRlcklkPiBwcmlvcml0eUxpc3QpIHsKICAgICAgICAgaWYgKCFtSXNEZXN0cm95ZWQpIHsKICAgICAgICAgICAgIG1Jc0Rpc2NvdmVyeVN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAgc2VuZE91dE9mRGlzY292ZXJ5UGVyaW9kUHJpbnRlckNoYW5nZXMoKTsKQEAgLTQ5NCwxMyArNTA5LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHZhbGlkYXRlUHJpbnRlcnMoTGlzdDxQcmludGVySWQ+IHByaW50ZXJJZHMpIHsKKyAgICB2b2lkIHZhbGlkYXRlUHJpbnRlcnMoQE5vbk51bGwgTGlzdDxQcmludGVySWQ+IHByaW50ZXJJZHMpIHsKICAgICAgICAgaWYgKCFtSXNEZXN0cm95ZWQgJiYgbU9ic2VydmVyICE9IG51bGwpIHsKICAgICAgICAgICAgIG9uVmFsaWRhdGVQcmludGVycyhwcmludGVySWRzKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgc3RhcnRQcmludGVyU3RhdGVUcmFja2luZyhQcmludGVySWQgcHJpbnRlcklkKSB7CisgICAgdm9pZCBzdGFydFByaW50ZXJTdGF0ZVRyYWNraW5nKEBOb25OdWxsIFByaW50ZXJJZCBwcmludGVySWQpIHsKICAgICAgICAgaWYgKCFtSXNEZXN0cm95ZWQgJiYgbU9ic2VydmVyICE9IG51bGwKICAgICAgICAgICAgICAgICAmJiAhbVRyYWNrZWRQcmludGVycy5jb250YWlucyhwcmludGVySWQpKSB7CiAgICAgICAgICAgICBtVHJhY2tlZFByaW50ZXJzLmFkZChwcmludGVySWQpOwpAQCAtNTA4LDcgKzUyMywyMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzdG9wUHJpbnRlclN0YXRlVHJhY2tpbmcoUHJpbnRlcklkIHByaW50ZXJJZCkgeworICAgIC8qKgorICAgICAqIFJlcXVlc3QgdGhlIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJpbnRlcklkIFRoZSBwcmludGVyIHRvIGljb24gYmVsb25ncyB0by4KKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgdm9pZCByZXF1ZXN0Q3VzdG9tUHJpbnRlckljb24oQE5vbk51bGwgUHJpbnRlcklkIHByaW50ZXJJZCkgeworICAgICAgICBpZiAoIW1Jc0Rlc3Ryb3llZCAmJiBtT2JzZXJ2ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgQ3VzdG9tUHJpbnRlckljb25DYWxsYmFjayBjYWxsYmFjayA9IG5ldyBDdXN0b21QcmludGVySWNvbkNhbGxiYWNrKHByaW50ZXJJZCwKKyAgICAgICAgICAgICAgICAgICAgbU9ic2VydmVyKTsKKyAgICAgICAgICAgIG9uUmVxdWVzdEN1c3RvbVByaW50ZXJJY29uKHByaW50ZXJJZCwgY2FsbGJhY2spOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdG9wUHJpbnRlclN0YXRlVHJhY2tpbmcoQE5vbk51bGwgUHJpbnRlcklkIHByaW50ZXJJZCkgewogICAgICAgICBpZiAoIW1Jc0Rlc3Ryb3llZCAmJiBtT2JzZXJ2ZXIgIT0gbnVsbAogICAgICAgICAgICAgICAgICYmIG1UcmFja2VkUHJpbnRlcnMucmVtb3ZlKHByaW50ZXJJZCkpIHsKICAgICAgICAgICAgIG9uU3RvcFByaW50ZXJTdGF0ZVRyYWNraW5nKHByaW50ZXJJZCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9DYWxsTG9nLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9DYWxsTG9nLmphdmEKaW5kZXggMWQ0ZDU3Mi4uNmE1ZDg1N2MgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL0NhbGxMb2cuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9DYWxsTG9nLmphdmEKQEAgLTQyMSw2ICs0MjEsMTMgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUREX0ZPUl9BTExfVVNFUlMgPSAiYWRkX2Zvcl9hbGxfdXNlcnMiOwogCiAgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgZGF0ZSB0aGUgcm93IGlzIGxhc3QgaW5zZXJ0ZWQsIHVwZGF0ZWQsIG9yIG1hcmtlZCBhcyBkZWxldGVkLCBpbiBtaWxsaXNlY29uZHMKKyAgICAgICAgICogc2luY2UgdGhlIGVwb2NoLiBSZWFkIG9ubHkuCisgICAgICAgICAqIDxQPlR5cGU6IElOVEVHRVIgKGxvbmcpPC9QPgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEFTVF9NT0RJRklFRCA9ICJsYXN0X21vZGlmaWVkIjsKKworICAgICAgICAvKioKICAgICAgICAgICogSWYgYSBzdWNjZXNzZnVsIGNhbGwgaXMgbWFkZSB0aGF0IGlzIGxvbmdlciB0aGFuIHRoaXMgZHVyYXRpb24sIHVwZGF0ZSB0aGUgcGhvbmUgbnVtYmVyCiAgICAgICAgICAqIGluIHRoZSBDb250YWN0c1Byb3ZpZGVyIHdpdGggdGhlIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbnVtYmVyLCBiYXNlZCBvbiB0aGUgdXNlcidzCiAgICAgICAgICAqIGN1cnJlbnQgY291bnRyeSBjb2RlLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvVm9pY2VtYWlsQ29udHJhY3QuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL1ZvaWNlbWFpbENvbnRyYWN0LmphdmEKaW5kZXggNzZlYWVhOS4uMjQ2ODNjYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvVm9pY2VtYWlsQ29udHJhY3QuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9Wb2ljZW1haWxDb250cmFjdC5qYXZhCkBAIC0yNDUsNiArMjQ1LDEzIEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFTEVURUQgPSAiZGVsZXRlZCI7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBkYXRlIHRoZSByb3cgaXMgbGFzdCBpbnNlcnRlZCwgdXBkYXRlZCwgb3IgbWFya2VkIGFzIGRlbGV0ZWQsIGluIG1pbGxpc2Vjb25kcworICAgICAgICAgKiBzaW5jZSB0aGUgZXBvY2guIFJlYWQgb25seS4KKyAgICAgICAgICogPFA+VHlwZTogSU5URUdFUiAobG9uZyk8L1A+CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMQVNUX01PRElGSUVEID0gImxhc3RfbW9kaWZpZWQiOworCisgICAgICAgIC8qKgogICAgICAgICAgKiBBIGNvbnZlbmllbmNlIG1ldGhvZCB0byBidWlsZCB2b2ljZW1haWwgVVJJIHNwZWNpZmljIHRvIGEgc291cmNlIHBhY2thZ2UgYnkgYXBwZW5kaW5nCiAgICAgICAgICAqIHtAbGluayBWb2ljZW1haWxDb250cmFjdCNQQVJBTV9LRVlfU09VUkNFX1BBQ0tBR0V9IHBhcmFtIHRvIHRoZSBiYXNlIFVSSS4KICAgICAgICAgICovCkBAIC00NDksNiArNDU2LDI2IEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PVElGSUNBVElPTl9DSEFOTkVMX1NUQVRFX01FU1NBR0VfV0FJVElORyA9IDI7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEFtb3VudCBvZiByZXNvdXJjZSB0aGF0IGlzIHVzZWQgYnkgZXhpc3Rpbmcgdm9pY2VtYWlsIGluIHRoZSB2aXN1YWwgdm9pY2VtYWlsIGluYm94LAorICAgICAgICAgKiBvciB7QGxpbmsgI1FVT1RBX1VOQVZBSUxBQkxFfS4gVW5pdCBpcyBub3Qgc3BlY2lmaWVkLgorICAgICAgICAgKiA8UD5UeXBlOiBJTlRFR0VSPC9QPgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVPVEFfT0NDVVBJRUQgPSAicXVvdGFfb2NjdXBpZWQiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUb3RhbCByZXNvdXJjZSBpbiB0aGUgdmlzdWFsIHZvaWNlbWFpbCBpbmJveCB0aGF0IGNhbiBiZSB1c2VkLCBvcgorICAgICAgICAgKiB7QGxpbmsgI1FVT1RBX1VOQVZBSUxBQkxFfS4gVW5pdCBpcyBub3Qgc3BlY2lmaWVkLgorICAgICAgICAgKiA8UD5UeXBlOiBJTlRFR0VSPC9QPgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVPVEFfVE9UQUwgPSAicXVvdGFfdG90YWwiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNRVU9UQV9PQ0NVUElFRH0gYW5kIHtAbGluayAjUVVPVEFfVE9UQUx9IHRvIGluZGljYXRlIHRoYXQgbm8KKyAgICAgICAgICogaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUVVPVEFfVU5BVkFJTEFCTEUgPSAtMTsKKworICAgICAgICAvKioKICAgICAgICAgICogQSBjb252ZW5pZW5jZSBtZXRob2QgdG8gYnVpbGQgc3RhdHVzIFVSSSBzcGVjaWZpYyB0byBhIHNvdXJjZSBwYWNrYWdlIGJ5IGFwcGVuZGluZwogICAgICAgICAgKiB7QGxpbmsgVm9pY2VtYWlsQ29udHJhY3QjUEFSQU1fS0VZX1NPVVJDRV9QQUNLQUdFfSBwYXJhbSB0byB0aGUgYmFzZSBVUkkuCiAgICAgICAgICAqLwpAQCAtNDg4LDYgKzUxNSwzOSBAQAogICAgICAgICB9CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEEgaGVscGVyIG1ldGhvZCB0byBzZXQgdGhlIHF1b3RhIG9mIGEgdm9pY2VtYWlsIHNvdXJjZS4gVW5pdCBpcyB1bnNwZWNpZmllZC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgZnJvbSB0aGUgcGFja2FnZSBjYWxsaW5nIHRoZSBtZXRob2QuIFRoaXMgd2lsbCBiZSB0aGUgc291cmNlLgorICAgICAgICAgKiBAcGFyYW0gYWNjb3VudEhhbmRsZSBUaGUgaGFuZGxlIGZvciB0aGUgYWNjb3VudCB0aGUgc291cmNlIGlzIGFzc29jaWF0ZWQgd2l0aC4KKyAgICAgICAgICogQHBhcmFtIG9jY3VwaWVkIFNlZSB7QGxpbmsgU3RhdHVzI1FVT1RBX09DQ1VQSUVEfQorICAgICAgICAgKiBAcGFyYW0gdG90YWwgU2VlIHtAbGluayBTdGF0dXMjUVVPVEFfVE9UQUx9CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0UXVvdGEoQ29udGV4dCBjb250ZXh0LCBQaG9uZUFjY291bnRIYW5kbGUgYWNjb3VudEhhbmRsZSwgaW50IG9jY3VwaWVkLAorICAgICAgICAgICAgICAgIGludCB0b3RhbCkgeworICAgICAgICAgICAgaWYgKG9jY3VwaWVkID09IFFVT1RBX1VOQVZBSUxBQkxFICYmIHRvdGFsID09IFFVT1RBX1VOQVZBSUxBQkxFKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29udGVudFZhbHVlcyB2YWx1ZXMgPSBuZXcgQ29udGVudFZhbHVlcygpOworICAgICAgICAgICAgdmFsdWVzLnB1dChTdGF0dXMuUEhPTkVfQUNDT1VOVF9DT01QT05FTlRfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgYWNjb3VudEhhbmRsZS5nZXRDb21wb25lbnROYW1lKCkuZmxhdHRlblRvU3RyaW5nKCkpOworICAgICAgICAgICAgdmFsdWVzLnB1dChTdGF0dXMuUEhPTkVfQUNDT1VOVF9JRCwgYWNjb3VudEhhbmRsZS5nZXRJZCgpKTsKKyAgICAgICAgICAgIGlmIChvY2N1cGllZCAhPSBRVU9UQV9VTkFWQUlMQUJMRSkgeworICAgICAgICAgICAgICAgIHZhbHVlcy5wdXQoU3RhdHVzLlFVT1RBX09DQ1VQSUVELG9jY3VwaWVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0b3RhbCAhPSBRVU9UQV9VTkFWQUlMQUJMRSkgeworICAgICAgICAgICAgICAgIHZhbHVlcy5wdXQoU3RhdHVzLlFVT1RBX1RPVEFMLHRvdGFsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29udGVudFJlc29sdmVyIGNvbnRlbnRSZXNvbHZlciA9IGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisgICAgICAgICAgICBVcmkgc3RhdHVzVXJpID0gYnVpbGRTb3VyY2VVcmkoY29udGV4dC5nZXRQYWNrYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1N0YXR1c1ByZXNlbnQoY29udGVudFJlc29sdmVyLCBzdGF0dXNVcmkpKSB7CisgICAgICAgICAgICAgICAgY29udGVudFJlc29sdmVyLnVwZGF0ZShzdGF0dXNVcmksIHZhbHVlcywgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnRlbnRSZXNvbHZlci5pbnNlcnQoc3RhdHVzVXJpLCB2YWx1ZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCiAgICAgICAgICAqIERldGVybWluZXMgaWYgYSB2b2ljZW1haWwgc291cmNlIGV4aXN0cyBpbiB0aGUgc3RhdHVzIHRhYmxlLgogICAgICAgICAgKgogICAgICAgICAgKiBAcGFyYW0gY29udGVudFJlc29sdmVyIEEgY29udGVudCByZXNvbHZlciBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvc2VjdXJpdHkvRnJhbWV3b3JrTmV0d29ya1NlY3VyaXR5UG9saWN5LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9zZWN1cml0eS9GcmFtZXdvcmtOZXR3b3JrU2VjdXJpdHlQb2xpY3kuamF2YQppbmRleCBlM2RhYzVlLi44M2YxNzNlYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvc2VjdXJpdHkvRnJhbWV3b3JrTmV0d29ya1NlY3VyaXR5UG9saWN5LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VjdXJpdHkvRnJhbWV3b3JrTmV0d29ya1NlY3VyaXR5UG9saWN5LmphdmEKQEAgLTMyLDQgKzMyLDkgQEAKICAgICBwdWJsaWMgYm9vbGVhbiBpc0NsZWFydGV4dFRyYWZmaWNQZXJtaXR0ZWQoKSB7CiAgICAgICAgIHJldHVybiBtQ2xlYXJ0ZXh0VHJhZmZpY1Blcm1pdHRlZDsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0NsZWFydGV4dFRyYWZmaWNQZXJtaXR0ZWQoU3RyaW5nIGhvc3RuYW1lKSB7CisgICAgICAgIHJldHVybiBpc0NsZWFydGV4dFRyYWZmaWNQZXJtaXR0ZWQoKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZWN1cml0eS9OZXR3b3JrU2VjdXJpdHlQb2xpY3kuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3NlY3VyaXR5L05ldHdvcmtTZWN1cml0eVBvbGljeS5qYXZhCmluZGV4IDc5OTFkMzcuLjQ2YWExYWYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3NlY3VyaXR5L05ldHdvcmtTZWN1cml0eVBvbGljeS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlY3VyaXR5L05ldHdvcmtTZWN1cml0eVBvbGljeS5qYXZhCkBAIC00Myw3ICs0Myw3IEBACiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgY2xlYXJ0ZXh0IG5ldHdvcmsgdHJhZmZpYyAoZS5nLiBIVFRQLCBGVFAsIFdlYlNvY2tldHMsIFhNUFAsIElNQVAsIFNNVFAgLS0KLSAgICAgKiB3aXRob3V0IFRMUyBvciBTVEFSVFRMUykgaXMgcGVybWl0dGVkIGZvciB0aGlzIHByb2Nlc3MuCisgICAgICogd2l0aG91dCBUTFMgb3IgU1RBUlRUTFMpIGlzIHBlcm1pdHRlZCBmb3IgYWxsIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBmcm9tIHRoaXMgcHJvY2Vzcy4KICAgICAgKgogICAgICAqIDxwPldoZW4gY2xlYXJ0ZXh0IG5ldHdvcmsgdHJhZmZpYyBpcyBub3QgcGVybWl0dGVkLCB0aGUgcGxhdGZvcm0ncyBjb21wb25lbnRzIChlLmcuIEhUVFAgYW5kCiAgICAgICogRlRQIHN0YWNrcywge0BsaW5rIGFuZHJvaWQuYXBwLkRvd25sb2FkTWFuYWdlcn0sIHtAbGluayBhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyfSkgd2lsbApAQCAtNjQsNiArNjQsMTggQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm5zIHdoZXRoZXIgY2xlYXJ0ZXh0IG5ldHdvcmsgdHJhZmZpYyAoZS5nLiBIVFRQLCBGVFAsIFhNUFAsIElNQVAsIFNNVFAgLS0gd2l0aG91dAorICAgICAqIFRMUyBvciBTVEFSVFRMUykgaXMgcGVybWl0dGVkIGZvciBjb21tdW5pY2F0aW5nIHdpdGgge0Bjb2RlIGhvc3RuYW1lfSBmb3IgdGhpcyBwcm9jZXNzLgorICAgICAqCisgICAgICogQHNlZSAjaXNDbGVhcnRleHRUcmFmZmljUGVybWl0dGVkKCkKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzQ2xlYXJ0ZXh0VHJhZmZpY1Blcm1pdHRlZChTdHJpbmcgaG9zdG5hbWUpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNvcmUubmV0Lk5ldHdvcmtTZWN1cml0eVBvbGljeS5nZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgLmlzQ2xlYXJ0ZXh0VHJhZmZpY1Blcm1pdHRlZChob3N0bmFtZSk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogU2V0cyB3aGV0aGVyIGNsZWFydGV4dCBuZXR3b3JrIHRyYWZmaWMgaXMgcGVybWl0dGVkIGZvciB0aGlzIHByb2Nlc3MuCiAgICAgICoKICAgICAgKiA8cD5UaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBwbGF0Zm9ybSBlYXJseSBvbiBpbiB0aGUgYXBwbGljYXRpb24ncyBpbml0aWFsaXphdGlvbiB0byBzZXQKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZpY2Uvbm90aWZpY2F0aW9uL05vdGlmaWNhdGlvbkxpc3RlbmVyU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS9ub3RpZmljYXRpb24vTm90aWZpY2F0aW9uTGlzdGVuZXJTZXJ2aWNlLmphdmEKaW5kZXggMjMyZDRmZS4uMWU2MmVkYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS9ub3RpZmljYXRpb24vTm90aWZpY2F0aW9uTGlzdGVuZXJTZXJ2aWNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS9ub3RpZmljYXRpb24vTm90aWZpY2F0aW9uTGlzdGVuZXJTZXJ2aWNlLmphdmEKQEAgLTYwLDYgKzYwLDE2IEBACiAgKiAgICAgICAgICZsdDthY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnNlcnZpY2Uubm90aWZpY2F0aW9uLk5vdGlmaWNhdGlvbkxpc3RlbmVyU2VydmljZSIgLz4KICAqICAgICAmbHQ7L2ludGVudC1maWx0ZXI+CiAgKiAmbHQ7L3NlcnZpY2U+PC9wcmU+CisgKiA8cD4gVHlwaWNhbGx5LCB3aGlsZSBlbmFibGVkIGluIHVzZXIgc2V0dGluZ3MsIHRoaXMgc2VydmljZSB3aWxsIGJlIGJvdW5kIG9uIGJvb3Qgb3Igd2hlbiBhCisgKiBzZXR0aW5ncyBjaGFuZ2Ugb2NjdXJzIHRoYXQgY291bGQgYWZmZWN0IHdoZXRoZXIgdGhpcyBzZXJ2aWNlIHNob3VsZCBydW4uICBIb3dldmVyLCBmb3Igc29tZQorICogc3lzdGVtIHVzYWdlIG1vZGVzLCB0aGUgeW91IG1heSBpbnN0ZWFkIHNwZWNpZnkgdGhhdCB0aGlzIHNlcnZpY2UgaXMgaW5zdGVhZCBib3VuZCBhbmQgdW5ib3VuZAorICogaW4gcmVzcG9uc2UgdG8gbW9kZSBjaGFuZ2VzIGJ5IGluY2x1ZGluZyBhIGNhdGVnb3J5IGluIHRoZSBpbnRlbnQgZmlsdGVyLiAgQ3VycmVudGx5CisgKiBzdXBwb3J0ZWQgY2F0ZWdvcmllcyBhcmU6CisgKiA8dWw+CisgKiAgIDxsaT57QGxpbmsgI0NBVEVHT1JZX1ZSX05PVElGSUNBVElPTlN9IC0gdGhpcyBzZXJ2aWNlIGlzIGJvdW5kIHdoZW4gYW4gQWN0aXZpdHkgaGFzIGVuYWJsZWQKKyAqICAgVlIgbW9kZS4ge0BzZWUgYW5kcm9pZC5hcHAuQWN0aXZpdHkjc2V0VnJNb2RlKGJvb2xlYW4pfS48L2xpPgorICogPC91bD4KKyAqIDwvcD4KICAqLwogcHVibGljIGFic3RyYWN0IGNsYXNzIE5vdGlmaWNhdGlvbkxpc3RlbmVyU2VydmljZSBleHRlbmRzIFNlcnZpY2UgewogICAgIC8vIFRBRyA9ICJOb3RpZmljYXRpb25MaXN0ZW5lclNlcnZpY2VbTXlTdWJjbGFzc10iCkBAIC0xNjIsNiArMTcyLDE3IEBACiAgICAgICAgICAgICA9ICJhbmRyb2lkLnNlcnZpY2Uubm90aWZpY2F0aW9uLk5vdGlmaWNhdGlvbkxpc3RlbmVyU2VydmljZSI7CiAKICAgICAvKioKKyAgICAgKiBJZiB0aGlzIGNhdGVnb3J5IGlzIGRlY2xhcmVkIGluIHRoZSBhcHBsaWNhdGlvbiBtYW5pZmVzdCBmb3IgYSBzZXJ2aWNlIG9mIHRoaXMgdHlwZSwgdGhpcworICAgICAqIHNlcnZpY2Ugd2lsbCBiZSBib3VuZCB3aGVuIFZSIG1vZGUgaXMgZW5hYmxlZCwgYW5kIHVuYm91bmQgd2hlbiBWUiBtb2RlIGlzIGRpc2FibGVkIHJhdGhlcgorICAgICAqIHRoYW4gdGhlIG5vcm1hbCBsaWZlY3ljbGUgZm9yIGEgbm90aWZpY2F0aW9uIHNlcnZpY2UuCisgICAgICoKKyAgICAgKiB7QHNlZSBhbmRyb2lkLmFwcC5BY3Rpdml0eSNzZXRWck1vZGUoYm9vbGVhbil9CisgICAgICovCisgICAgQFNka0NvbnN0YW50KFNka0NvbnN0YW50LlNka0NvbnN0YW50VHlwZS5JTlRFTlRfQ0FURUdPUlkpCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FURUdPUllfVlJfTk9USUZJQ0FUSU9OUyA9CisgICAgICAgICJhbmRyb2lkLmludGVudC5jYXRlZ29yeS52ci5ub3RpZmljYXRpb25zIjsKKworICAgIC8qKgogICAgICAqIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBsZWFybiBhYm91dCBuZXcgbm90aWZpY2F0aW9ucyBhcyB0aGV5IGFyZSBwb3N0ZWQgYnkgYXBwcy4KICAgICAgKgogICAgICAqIEBwYXJhbSBzYm4gQSBkYXRhIHN0cnVjdHVyZSBlbmNhcHN1bGF0aW5nIHRoZSBvcmlnaW5hbCB7QGxpbmsgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9ufQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9Mb2cuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3V0aWwvTG9nLmphdmEKaW5kZXggZmU0MTkzMi4uNTQ0NDQ0ZCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9Mb2cuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0xvZy5qYXZhCkBAIC0xOCw5ICsxOCwxMSBAQAogCiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuUnVudGltZUluaXQ7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5GYXN0UHJpbnRXcml0ZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5MaW5lQnJlYWtCdWZmZXJlZFdyaXRlcjsKIAogaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CiBpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CitpbXBvcnQgamF2YS5pby5Xcml0ZXI7CiBpbXBvcnQgamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb247CiAKIC8qKgpAQCAtMTI2LDcgKzEyOCw3IEBACiAgICAgICogQHBhcmFtIHRyIEFuIGV4Y2VwdGlvbiB0byBsb2cKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGludCB2KFN0cmluZyB0YWcsIFN0cmluZyBtc2csIFRocm93YWJsZSB0cikgewotICAgICAgICByZXR1cm4gcHJpbnRsbl9uYXRpdmUoTE9HX0lEX01BSU4sIFZFUkJPU0UsIHRhZywgbXNnICsgJ1xuJyArIGdldFN0YWNrVHJhY2VTdHJpbmcodHIpKTsKKyAgICAgICAgcmV0dXJuIHByaW50bG5zKExPR19JRF9NQUlOLCBWRVJCT1NFLCB0YWcsIG1zZywgdHIpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTQ3LDcgKzE0OSw3IEBACiAgICAgICogQHBhcmFtIHRyIEFuIGV4Y2VwdGlvbiB0byBsb2cKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGludCBkKFN0cmluZyB0YWcsIFN0cmluZyBtc2csIFRocm93YWJsZSB0cikgewotICAgICAgICByZXR1cm4gcHJpbnRsbl9uYXRpdmUoTE9HX0lEX01BSU4sIERFQlVHLCB0YWcsIG1zZyArICdcbicgKyBnZXRTdGFja1RyYWNlU3RyaW5nKHRyKSk7CisgICAgICAgIHJldHVybiBwcmludGxucyhMT0dfSURfTUFJTiwgREVCVUcsIHRhZywgbXNnLCB0cik7CiAgICAgfQogCiAgICAgLyoqCkBAIC0xNjgsNyArMTcwLDcgQEAKICAgICAgKiBAcGFyYW0gdHIgQW4gZXhjZXB0aW9uIHRvIGxvZwogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgaW50IGkoU3RyaW5nIHRhZywgU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRyKSB7Ci0gICAgICAgIHJldHVybiBwcmludGxuX25hdGl2ZShMT0dfSURfTUFJTiwgSU5GTywgdGFnLCBtc2cgKyAnXG4nICsgZ2V0U3RhY2tUcmFjZVN0cmluZyh0cikpOworICAgICAgICByZXR1cm4gcHJpbnRsbnMoTE9HX0lEX01BSU4sIElORk8sIHRhZywgbXNnLCB0cik7CiAgICAgfQogCiAgICAgLyoqCkBAIC0xODksNyArMTkxLDcgQEAKICAgICAgKiBAcGFyYW0gdHIgQW4gZXhjZXB0aW9uIHRvIGxvZwogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgaW50IHcoU3RyaW5nIHRhZywgU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRyKSB7Ci0gICAgICAgIHJldHVybiBwcmludGxuX25hdGl2ZShMT0dfSURfTUFJTiwgV0FSTiwgdGFnLCBtc2cgKyAnXG4nICsgZ2V0U3RhY2tUcmFjZVN0cmluZyh0cikpOworICAgICAgICByZXR1cm4gcHJpbnRsbnMoTE9HX0lEX01BSU4sIFdBUk4sIHRhZywgbXNnLCB0cik7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yMTksNyArMjIxLDcgQEAKICAgICAgKiBAcGFyYW0gdHIgQW4gZXhjZXB0aW9uIHRvIGxvZwogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgaW50IHcoU3RyaW5nIHRhZywgVGhyb3dhYmxlIHRyKSB7Ci0gICAgICAgIHJldHVybiBwcmludGxuX25hdGl2ZShMT0dfSURfTUFJTiwgV0FSTiwgdGFnLCBnZXRTdGFja1RyYWNlU3RyaW5nKHRyKSk7CisgICAgICAgIHJldHVybiBwcmludGxucyhMT0dfSURfTUFJTiwgV0FSTiwgdGFnLCAiIiwgdHIpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjQwLDcgKzI0Miw3IEBACiAgICAgICogQHBhcmFtIHRyIEFuIGV4Y2VwdGlvbiB0byBsb2cKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGludCBlKFN0cmluZyB0YWcsIFN0cmluZyBtc2csIFRocm93YWJsZSB0cikgewotICAgICAgICByZXR1cm4gcHJpbnRsbl9uYXRpdmUoTE9HX0lEX01BSU4sIEVSUk9SLCB0YWcsIG1zZyArICdcbicgKyBnZXRTdGFja1RyYWNlU3RyaW5nKHRyKSk7CisgICAgICAgIHJldHVybiBwcmludGxucyhMT0dfSURfTUFJTiwgRVJST1IsIHRhZywgbXNnLCB0cik7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yOTIsOCArMjk0LDcgQEAKICAgICAgICAgLy8gT25seSBtYXJrIHRoaXMgYXMgRVJST1IsIGRvIG5vdCB1c2UgQVNTRVJUIHNpbmNlIHRoYXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIHJlc2VydmVkIGZvciBjYXNlcyB3aGVyZSB0aGUgc3lzdGVtIGlzIGd1YXJhbnRlZWQgdG8gYWJvcnQuCiAgICAgICAgIC8vIFRoZSBvblRlcnJpYmxlRmFpbHVyZSBjYWxsIGRvZXMgbm90IGFsd2F5cyBjYXVzZSBhIGNyYXNoLgotICAgICAgICBpbnQgYnl0ZXMgPSBwcmludGxuX25hdGl2ZShsb2dJZCwgRVJST1IsIHRhZywgbXNnICsgJ1xuJwotICAgICAgICAgICAgICAgICsgZ2V0U3RhY2tUcmFjZVN0cmluZyhsb2NhbFN0YWNrID8gd2hhdCA6IHRyKSk7CisgICAgICAgIGludCBieXRlcyA9IHByaW50bG5zKGxvZ0lkLCBFUlJPUiwgdGFnLCBtc2csIGxvY2FsU3RhY2sgPyB3aGF0IDogdHIpOwogICAgICAgICBzV3RmSGFuZGxlci5vblRlcnJpYmxlRmFpbHVyZSh0YWcsIHdoYXQsIHN5c3RlbSk7CiAgICAgICAgIHJldHVybiBieXRlczsKICAgICB9CkBAIC0zNjUsNCArMzY2LDEwNyBAQAogCiAgICAgLyoqIEBoaWRlICovIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGludCBwcmludGxuX25hdGl2ZShpbnQgYnVmSUQsCiAgICAgICAgICAgICBpbnQgcHJpb3JpdHksIFN0cmluZyB0YWcsIFN0cmluZyBtc2cpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtYXhpbXVtIHBheWxvYWQgdGhlIGxvZyBkYWVtb24gYWNjZXB0cyB3aXRob3V0IHRydW5jYXRpb24uCisgICAgICogQHJldHVybiBMT0dHRVJfRU5UUllfTUFYX1BBWUxPQUQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGludCBsb2dnZXJfZW50cnlfbWF4X3BheWxvYWRfbmF0aXZlKCk7CisKKyAgICAvKioKKyAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGxvbmcgbWVzc2FnZXMuIFVzZXMgdGhlIExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyIHRvIGJyZWFrCisgICAgICogdXAgbG9uZyBtZXNzYWdlcyBhbmQgc3RhY2t0cmFjZXMgYWxvbmcgbmV3bGluZXMsIGJ1dCB0cmllcyB0byB3cml0ZSBpbiBsYXJnZQorICAgICAqIGNodW5rcy4gVGhpcyBpcyB0byBhdm9pZCB0cnVuY2F0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBwcmludGxucyhpbnQgYnVmSUQsIGludCBwcmlvcml0eSwgU3RyaW5nIHRhZywgU3RyaW5nIG1zZywKKyAgICAgICAgICAgIFRocm93YWJsZSB0cikgeworICAgICAgICBJbW1lZGlhdGVMb2dXcml0ZXIgbG9nV3JpdGVyID0gbmV3IEltbWVkaWF0ZUxvZ1dyaXRlcihidWZJRCwgcHJpb3JpdHksIHRhZyk7CisgICAgICAgIC8vIEFjY2VwdGFibGUgYnVmZmVyIHNpemUuIEdldCB0aGUgbmF0aXZlIGJ1ZmZlciBzaXplLCBzdWJ0cmFjdCB0d28gemVybyB0ZXJtaW5hdG9ycywKKyAgICAgICAgLy8gYW5kIHRoZSBsZW5ndGggb2YgdGhlIHRhZy4KKyAgICAgICAgLy8gTm90ZTogd2UgaW1wbGljaXRseSBhY2NlcHQgcG9zc2libGUgdHJ1bmNhdGlvbiBmb3IgTW9kaWZpZWQtVVRGOCBkaWZmZXJlbmNlcy4gSXQKKyAgICAgICAgLy8gICAgICAgaXMgdG9vIGV4cGVuc2l2ZSB0byBjb21wdXRlIHRoYXQgYWhlYWQgb2YgdGltZS4KKyAgICAgICAgaW50IGJ1ZmZlclNpemUgPSBOb1ByZWxvYWRIb2xkZXIuTE9HR0VSX0VOVFJZX01BWF9QQVlMT0FEICAvLyBCYXNlLgorICAgICAgICAgICAgICAgIC0gMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR3byB0ZXJtaW5hdG9ycy4KKyAgICAgICAgICAgICAgICAtICh0YWcgIT0gbnVsbCA/IHRhZy5sZW5ndGgoKSA6IDApICAgICAgICAgICAgICAgICAvLyBUYWcgbGVuZ3RoLgorICAgICAgICAgICAgICAgIC0gMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUgc2xhY2suCisgICAgICAgIC8vIEF0IGxlYXN0IGFzc3VtZSB5b3UgY2FuIHByaW50ICpzb21lKiBjaGFyYWN0ZXJzICh0YWcgaXMgbm90IHRvbyBsYXJnZSkuCisgICAgICAgIGJ1ZmZlclNpemUgPSBNYXRoLm1heChidWZmZXJTaXplLCAxMDApOworCisgICAgICAgIExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyIGxiYncgPSBuZXcgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIobG9nV3JpdGVyLCBidWZmZXJTaXplKTsKKworICAgICAgICBsYmJ3LnByaW50bG4obXNnKTsKKworICAgICAgICBpZiAodHIgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBsb2cgc3BldyB0aGF0IGFwcHMgZG8gaW4gdGhlIG5vbi1lcnJvcgorICAgICAgICAgICAgLy8gY29uZGl0aW9uIG9mIHRoZSBuZXR3b3JrIGJlaW5nIHVuYXZhaWxhYmxlLgorICAgICAgICAgICAgVGhyb3dhYmxlIHQgPSB0cjsKKyAgICAgICAgICAgIHdoaWxlICh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIFVua25vd25Ib3N0RXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0ID0gdC5nZXRDYXVzZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyLnByaW50U3RhY2tUcmFjZShsYmJ3KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxiYncuZmx1c2goKTsKKworICAgICAgICByZXR1cm4gbG9nV3JpdGVyLmdldFdyaXR0ZW4oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOb1ByZWxvYWRIZWxwZXIgY2xhc3MuIENhY2hlcyB0aGUgTE9HR0VSX0VOVFJZX01BWF9QQVlMT0FEIHZhbHVlIHRvIGF2b2lkCisgICAgICogYSBKTkkgY2FsbCBkdXJpbmcgbG9nZ2luZy4KKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgTm9QcmVsb2FkSG9sZGVyIHsKKyAgICAgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTE9HR0VSX0VOVFJZX01BWF9QQVlMT0FEID0KKyAgICAgICAgICAgICAgICBsb2dnZXJfZW50cnlfbWF4X3BheWxvYWRfbmF0aXZlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGVscGVyIGNsYXNzIHRvIHdyaXRlIHRvIHRoZSBsb2djYXQuIERpZmZlcmVudCBmcm9tIExvZ1dyaXRlciwgdGhpcyB3cml0ZXMKKyAgICAgKiB0aGUgd2hvbGUgZ2l2ZW4gYnVmZmVyIGFuZCBkb2VzIG5vdCBicmVhayBhbG9uZyBuZXdsaW5lcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJbW1lZGlhdGVMb2dXcml0ZXIgZXh0ZW5kcyBXcml0ZXIgeworCisgICAgICAgIHByaXZhdGUgaW50IGJ1ZklEOworICAgICAgICBwcml2YXRlIGludCBwcmlvcml0eTsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgdGFnOworCisgICAgICAgIHByaXZhdGUgaW50IHdyaXR0ZW4gPSAwOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDcmVhdGUgYSB3cml0ZXIgdGhhdCBpbW1lZGlhdGVseSB3cml0ZXMgdG8gdGhlIGxvZywgdXNpbmcgdGhlIGdpdmVuCisgICAgICAgICAqIHBhcmFtZXRlcnMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgSW1tZWRpYXRlTG9nV3JpdGVyKGludCBidWZJRCwgaW50IHByaW9yaXR5LCBTdHJpbmcgdGFnKSB7CisgICAgICAgICAgICB0aGlzLmJ1ZklEID0gYnVmSUQ7CisgICAgICAgICAgICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CisgICAgICAgICAgICB0aGlzLnRhZyA9IHRhZzsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0V3JpdHRlbigpIHsKKyAgICAgICAgICAgIHJldHVybiB3cml0dGVuOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHdyaXRlKGNoYXJbXSBjYnVmLCBpbnQgb2ZmLCBpbnQgbGVuKSB7CisgICAgICAgICAgICAvLyBOb3RlOiB1c2luZyBTdHJpbmcgaGVyZSBoYXMgYSBiaXQgb2Ygb3ZlcmhlYWQgYXMgYSBKYXZhIG9iamVjdCBpcyBjcmVhdGVkLAorICAgICAgICAgICAgLy8gICAgICAgYnV0IHVzaW5nIHRoZSBjaGFyW10gZGlyZWN0bHkgaXMgbm90IGVhc2llciwgYXMgaXQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZAorICAgICAgICAgICAgLy8gICAgICAgdG8gYSBDIGNoYXJbXSBmb3IgbG9nZ2luZy4KKyAgICAgICAgICAgIHdyaXR0ZW4gKz0gcHJpbnRsbl9uYXRpdmUoYnVmSUQsIHByaW9yaXR5LCB0YWcsIG5ldyBTdHJpbmcoY2J1Ziwgb2ZmLCBsZW4pKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBmbHVzaCgpIHsKKyAgICAgICAgICAgIC8vIElnbm9yZWQuCisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgY2xvc2UoKSB7CisgICAgICAgICAgICAvLyBJZ25vcmVkLgorICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9EcmFnRXZlbnQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvRHJhZ0V2ZW50LmphdmEKaW5kZXggNTkwM2Q0YS4uNzFkYjBiNSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9EcmFnRXZlbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0RyYWdFdmVudC5qYXZhCkBAIC0zNjQsMjAgKzM2NCw5IEBACiAgICAgICAgIHJldHVybiBtQ2xpcERlc2NyaXB0aW9uOwogICAgIH0KIAotICAgIC8qKgotICAgICAqIFJlcXVlc3RzIHRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGNvbnRlbnQgVVJJcyBjb250YWluZWQgaW4ge0BsaW5rIGFuZHJvaWQuY29udGVudC5DbGlwRGF0YX0KLSAgICAgKiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQuIFdoaWNoIHBlcm1pc3Npb25zIHdpbGwgYmUgZ3JhbnRlZCBpcyBkZWZpbmVkIGJ5IHRoZSBzZXQgb2YKLSAgICAgKiBmbGFncyBwYXNzZWQgdG8ge0BsaW5rIFZpZXcjc3RhcnREcmFnQW5kRHJvcChDbGlwRGF0YSwgVmlldy5EcmFnU2hhZG93QnVpbGRlciwgT2JqZWN0LCBpbnQpfS4KLSAgICAgKiBSZXR1cm5zIHRoZSB7QGxpbmsgRHJvcFBlcm1pc3Npb25zfSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUgcmVjZWl2aW5nIGFwcCB0byByZWxlYXNlCi0gICAgICogdGhlIHBlcm1pc3Npb25zIGZvciB0aGUgY29udGVudCBVUklzIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICAgKiBUaGlzIG1ldGhvZCBvbmx5IHJldHVybnMgdmFsaWQgZGF0YSBpZiB0aGUgZXZlbnQgYWN0aW9uIGlzIHtAbGluayAjQUNUSU9OX0RST1B9LgotICAgICAqIEByZXR1cm4gVGhlIERyb3BQZXJtaXNzaW9ucyBvYmplY3QgdXNlZCB0byBjb250cm9sIGFjY2VzcyB0byB0aGUgY29udGVudCBVUklzLgotICAgICAqLwotICAgIHB1YmxpYyBEcm9wUGVybWlzc2lvbnMgcmVxdWVzdERyb3BQZXJtaXNzaW9ucygpIHsKLSAgICAgICAgaWYgKG1Ecm9wUGVybWlzc2lvbnMgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyBEcm9wUGVybWlzc2lvbnMobURyb3BQZXJtaXNzaW9ucyk7CisgICAgLyoqIEBoaWRlICovCisgICAgcHVibGljIElEcm9wUGVybWlzc2lvbnMgZ2V0RHJvcFBlcm1pc3Npb25zKCkgeworICAgICAgICByZXR1cm4gbURyb3BQZXJtaXNzaW9uczsKICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvRHJvcFBlcm1pc3Npb25zLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0Ryb3BQZXJtaXNzaW9ucy5qYXZhCmluZGV4IDc4MDQ2MWYuLjhjOTQ4YTkgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvRHJvcFBlcm1pc3Npb25zLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9Ecm9wUGVybWlzc2lvbnMuamF2YQpAQCAtMTYsMTEgKzE2LDI3IEBACiAKIHBhY2thZ2UgYW5kcm9pZC52aWV3OwogCitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSURyb3BQZXJtaXNzaW9uczsKIGltcG9ydCBkYWx2aWsuc3lzdGVtLkNsb3NlR3VhcmQ7CiAKIAorLyoqCisgKiB7QGxpbmsgRHJvcFBlcm1pc3Npb25zfSBjb250cm9scyB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciB0aGUgY29udGVudCBVUklzIGFzc29jaWF0ZWQgd2l0aCBhCisgKiB7QGxpbmsgRHJhZ0V2ZW50fS4KKyAqIDxwPgorICogUGVybWlzc2lvbiBhcmUgZ3JhbnRlZCB3aGVuIHRoaXMgb2JqZWN0IGlzIGNyZWF0ZWQgYnkge0BsaW5rCisgKiBhbmRyb2lkLmFwcC5BY3Rpdml0eSNyZXF1ZXN0RHJvcFBlcm1pc3Npb25zKERyYWdFdmVudCkgQWN0aXZpdHkucmVxdWVzdERyb3BQZXJtaXNzaW9uc30uCisgKiBXaGljaCBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBpcyBkZWZpbmVkIGJ5IHRoZSBzZXQgb2YgZmxhZ3MgcGFzc2VkIHRvIHtAbGluaworICogVmlldyNzdGFydERyYWdBbmREcm9wKGFuZHJvaWQuY29udGVudC5DbGlwRGF0YSwgVmlldy5EcmFnU2hhZG93QnVpbGRlciwgT2JqZWN0LCBpbnQpCisgKiBWaWV3LnN0YXJ0RHJhZ0FuZERyb3B9IGJ5IHRoZSBhcHAgdGhhdCBzdGFydGVkIHRoZSBkcmFnIG9wZXJhdGlvbi4KKyAqIDxwPgorICogVGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBlcm1pc3Npb25zIGlzIGJvdW5kIHRvIHRoZSBhY3Rpdml0eSB1c2VkIHRvIGNhbGwge0BsaW5rCisgKiBhbmRyb2lkLmFwcC5BY3Rpdml0eSNyZXF1ZXN0RHJvcFBlcm1pc3Npb25zKERyYWdFdmVudCkgcmVxdWVzdERyb3BQZXJtaXNzaW9uc30uIFRoZQorICogcGVybWlzc2lvbnMgYXJlIHJldm9rZWQgd2hlbiB0aGlzIGFjdGl2aXR5IGlzIGRlc3Ryb3llZCwgb3Igd2hlbiB7QGxpbmsgI3JlbGVhc2UoKX0gaXMgY2FsbGVkLAorICogd2hpY2hldmVyIG9jY3VycyBmaXJzdC4KKyAqLwogcHVibGljIGZpbmFsIGNsYXNzIERyb3BQZXJtaXNzaW9ucyB7CiAKICAgICBwcml2YXRlIGZpbmFsIElEcm9wUGVybWlzc2lvbnMgbURyb3BQZXJtaXNzaW9uczsKQEAgLTI4LDIxICs0NCw0MyBAQAogICAgIHByaXZhdGUgZmluYWwgQ2xvc2VHdWFyZCBtQ2xvc2VHdWFyZCA9IENsb3NlR3VhcmQuZ2V0KCk7CiAKICAgICAvKioKLSAgICAgKiBDcmVhdGUgYSBuZXcgRHJvcFBlcm1pc3Npb25zIG9iamVjdCB0byBiZSBwYXNzZWQgdG8gdGhlIGNsaWVudCB3aXRoIGEgRHJhZ0V2ZW50LgotICAgICAqCisgICAgICogQ3JlYXRlIGEgbmV3IHtAbGluayBEcm9wUGVybWlzc2lvbnN9IG9iamVjdCB0byBjb250cm9sIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgZm9yIGNvbnRlbnQKKyAgICAgKiBVUklzIGFzc29jaWF0ZWQgd2l0aCB7QGxpbmsgRHJhZ0V2ZW50fS4KKyAgICAgKiBAcGFyYW0gZHJhZ0V2ZW50IERyYWcgZXZlbnQKKyAgICAgKiBAcmV0dXJuIHtAbGluayBEcm9wUGVybWlzc2lvbnN9IG9iamVjdCBvciBudWxsIGlmIHRoZXJlIGFyZSBubyBjb250ZW50IFVSSXMgYXNzb2NpYXRlZCB3aXRoCisgICAgICogdGhlIHtAbGluayBEcmFnRXZlbnR9LgogICAgICAqIEBoaWRlCiAgICAgICovCi0gICAgRHJvcFBlcm1pc3Npb25zKElEcm9wUGVybWlzc2lvbnMgZHJvcFBlcm1pc3Npb25zKSB7Ci0gICAgICAgIG1Ecm9wUGVybWlzc2lvbnMgPSBkcm9wUGVybWlzc2lvbnM7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBtRHJvcFBlcm1pc3Npb25zLnRha2UoKTsKLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICBwdWJsaWMgc3RhdGljIERyb3BQZXJtaXNzaW9ucyBvYnRhaW4oRHJhZ0V2ZW50IGRyYWdFdmVudCkgeworICAgICAgICBpZiAoZHJhZ0V2ZW50LmdldERyb3BQZXJtaXNzaW9ucygpID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9Ci0gICAgICAgIG1DbG9zZUd1YXJkLm9wZW4oInJlbGVhc2UiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBEcm9wUGVybWlzc2lvbnMoZHJhZ0V2ZW50LmdldERyb3BQZXJtaXNzaW9ucygpKTsKKyAgICB9CisKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwcml2YXRlIERyb3BQZXJtaXNzaW9ucyhJRHJvcFBlcm1pc3Npb25zIGRyb3BQZXJtaXNzaW9ucykgeworICAgICAgICBtRHJvcFBlcm1pc3Npb25zID0gZHJvcFBlcm1pc3Npb25zOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIFJldm9rZSBwZXJtaXNzaW9ucyB0YWtlbiBieSB7QGxpbmsgRHJhZ0V2ZW50I3JlcXVlc3REcm9wUGVybWlzc2lvbnMoKX0uCisgICAgICogVGFrZSB0aGUgcGVybWlzc2lvbnMgYW5kIGJpbmQgdGhlaXIgbGlmZXRpbWUgdG8gdGhlIGFjdGl2aXR5LgorICAgICAqIEBwYXJhbSBhY3Rpdml0eVRva2VuIEJpbmRlciBwb2ludGluZyB0byBhbiBBY3Rpdml0eSBpbnN0YW5jZSB0byBiaW5kIHRoZSBsaWZldGltZSB0by4KKyAgICAgKiBAcmV0dXJuIFRydWUgaWYgcGVybWlzc2lvbnMgYXJlIHN1Y2Nlc3NmdWxseSB0YWtlbi4KKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHRha2UoSUJpbmRlciBhY3Rpdml0eVRva2VuKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtRHJvcFBlcm1pc3Npb25zLnRha2UoYWN0aXZpdHlUb2tlbik7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbUNsb3NlR3VhcmQub3BlbigicmVsZWFzZSIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXZva2UgcGVybWlzc2lvbnMgZXhwbGljaXRseS4KICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCByZWxlYXNlKCkgewogICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9Nb3Rpb25FdmVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9Nb3Rpb25FdmVudC5qYXZhCmluZGV4IDAxOTVkZWMuLjdhNTQ0YjggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvTW90aW9uRXZlbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L01vdGlvbkV2ZW50LmphdmEKQEAgLTk3Nyw2ICs5NzcsMzcgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBWElTX1NDUk9MTCA9IDI2OwogCiAgICAgLyoqCisgICAgICogQXhpcyBjb25zdGFudDogVGhlIG1vdmVtZW50IG9mIHggcG9zaXRpb24gb2YgYSBtb3Rpb24gZXZlbnQuCisgICAgICogPHA+CisgICAgICogPHVsPgorICAgICAqIDxsaT5Gb3IgYSBtb3VzZSwgcmVwb3J0cyBhIGRpZmZlcmVuY2Ugb2YgeCBwb3NpdGlvbiBiZXR3ZWVuIHRoZSBwcmV2aW91cyBwb3NpdGlvbi4KKyAgICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBvaW50ZXIgaXMgY2FwdHVyZWQsIGluIHRoYXQgY2FzZSB0aGUgbW91c2UgcG9pbnRlciBkb2Vzbid0IGNoYW5nZQorICAgICAqIHRoZSBsb2NhdGlvbiBidXQgdGhpcyBheGlzIHJlcG9ydHMgdGhlIGRpZmZlcmVuY2Ugd2hpY2ggYWxsb3dzIHRoZSBhcHAgdG8gc2VlCisgICAgICogaG93IHRoZSBtb3VzZSBpcyBtb3ZlZC4KKyAgICAgKiA8L3VsPgorICAgICAqIDwvcD4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEF4aXNWYWx1ZShpbnQsIGludCkKKyAgICAgKiBAc2VlICNnZXRIaXN0b3JpY2FsQXhpc1ZhbHVlKGludCwgaW50LCBpbnQpCisgICAgICogQHNlZSBNb3Rpb25FdmVudC5Qb2ludGVyQ29vcmRzI2dldEF4aXNWYWx1ZShpbnQsIGludCkKKyAgICAgKiBAc2VlIElucHV0RGV2aWNlI2dldE1vdGlvblJhbmdlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SRUxBVElWRV9YID0gMjc7CisKKyAgICAvKioKKyAgICAgKiBBeGlzIGNvbnN0YW50OiBUaGUgbW92ZW1lbnQgb2YgeSBwb3NpdGlvbiBvZiBhIG1vdGlvbiBldmVudC4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8ge0BsaW5rICNBWElTX1JFTEFUSVZFX1h9IGJ1dCBmb3IgeS1heGlzLgorICAgICAqIDwvcD4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEF4aXNWYWx1ZShpbnQsIGludCkKKyAgICAgKiBAc2VlICNnZXRIaXN0b3JpY2FsQXhpc1ZhbHVlKGludCwgaW50LCBpbnQpCisgICAgICogQHNlZSBNb3Rpb25FdmVudC5Qb2ludGVyQ29vcmRzI2dldEF4aXNWYWx1ZShpbnQsIGludCkKKyAgICAgKiBAc2VlIElucHV0RGV2aWNlI2dldE1vdGlvblJhbmdlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVhJU19SRUxBVElWRV9ZID0gMjg7CisKKyAgICAvKioKICAgICAgKiBBeGlzIGNvbnN0YW50OiBHZW5lcmljIDEgYXhpcyBvZiBhIG1vdGlvbiBldmVudC4KICAgICAgKiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgYSBnZW5lcmljIGF4aXMgaXMgZGV2aWNlLXNwZWNpZmljLgogICAgICAqCkBAIC0xMTg3LDYgKzEyMTgsOCBAQAogICAgICAgICBuYW1lcy5hcHBlbmQoQVhJU19ESVNUQU5DRSwgIkFYSVNfRElTVEFOQ0UiKTsKICAgICAgICAgbmFtZXMuYXBwZW5kKEFYSVNfVElMVCwgIkFYSVNfVElMVCIpOwogICAgICAgICBuYW1lcy5hcHBlbmQoQVhJU19TQ1JPTEwsICJBWElTX1NDUk9MTCIpOworICAgICAgICBuYW1lcy5hcHBlbmQoQVhJU19SRUxBVElWRV9YLCAiQVhJU19SRUFMVElWRV9YIik7CisgICAgICAgIG5hbWVzLmFwcGVuZChBWElTX1JFTEFUSVZFX1ksICJBWElTX1JFQUxUSVZFX1kiKTsKICAgICAgICAgbmFtZXMuYXBwZW5kKEFYSVNfR0VORVJJQ18xLCAiQVhJU19HRU5FUklDXzEiKTsKICAgICAgICAgbmFtZXMuYXBwZW5kKEFYSVNfR0VORVJJQ18yLCAiQVhJU19HRU5FUklDXzIiKTsKICAgICAgICAgbmFtZXMuYXBwZW5kKEFYSVNfR0VORVJJQ18zLCAiQVhJU19HRU5FUklDXzMiKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlLmphdmEKaW5kZXggMzk0NjYwZi4uZWY1MGZkYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlLmphdmEKQEAgLTU3LDYgKzU3LDcgQEAKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUdldEhlaWdodChsb25nIG5hdGl2ZU9iamVjdCk7CiAKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVHZXROZXh0RnJhbWVOdW1iZXIobG9uZyBuYXRpdmVPYmplY3QpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlU2V0U2NhbGluZ01vZGUobG9uZyBuYXRpdmVPYmplY3QsIGludCBzY2FsaW5nTW9kZSk7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFBhcmNlbGFibGUuQ3JlYXRvcjxTdXJmYWNlPiBDUkVBVE9SID0KICAgICAgICAgICAgIG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8U3VyZmFjZT4oKSB7CkBAIC05NSw2ICs5NiwyMSBAQAogICAgIHByaXZhdGUgSHd1aUNvbnRleHQgbUh3dWlDb250ZXh0OwogCiAgICAgLyoqIEBoaWRlICovCisgICAgQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuU09VUkNFKQorICAgIEBJbnREZWYoe1NDQUxJTkdfTU9ERV9GUkVFWkUsIFNDQUxJTkdfTU9ERV9TQ0FMRV9UT19XSU5ET1csCisgICAgICAgICAgICAgICAgICAgIFNDQUxJTkdfTU9ERV9TQ0FMRV9DUk9QLCBTQ0FMSU5HX01PREVfTk9fU0NBTEVfQ1JPUH0pCisgICAgcHVibGljIEBpbnRlcmZhY2UgU2NhbGluZ01vZGUge30KKyAgICAvLyBGcm9tIHN5c3RlbS93aW5kb3cuaAorICAgIC8qKiBAaGlkZSAqLworICAgIHN0YXRpYyBmaW5hbCBpbnQgU0NBTElOR19NT0RFX0ZSRUVaRSA9IDA7CisgICAgLyoqIEBoaWRlICovCisgICAgc3RhdGljIGZpbmFsIGludCBTQ0FMSU5HX01PREVfU0NBTEVfVE9fV0lORE9XID0gMTsKKyAgICAvKiogQGhpZGUgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IFNDQUxJTkdfTU9ERV9TQ0FMRV9DUk9QID0gMjsKKyAgICAvKiogQGhpZGUgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IFNDQUxJTkdfTU9ERV9OT19TQ0FMRV9DUk9QID0gMzsKKworICAgIC8qKiBAaGlkZSAqLwogICAgIEBJbnREZWYoe1JPVEFUSU9OXzAsIFJPVEFUSU9OXzkwLCBST1RBVElPTl8xODAsIFJPVEFUSU9OXzI3MH0pCiAgICAgQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuU09VUkNFKQogICAgIHB1YmxpYyBAaW50ZXJmYWNlIFJvdGF0aW9uIHt9CkBAIC01MDAsNiArNTE2LDIwIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogU2V0IHRoZSBzY2FsaW5nIG1vZGUgdG8gYmUgdXNlZCBmb3IgdGhpcyBzdXJmYWNlcyBidWZmZXJzCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICB2b2lkIHNldFNjYWxpbmdNb2RlKEBTY2FsaW5nTW9kZSBpbnQgc2NhbGluZ01vZGUpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgY2hlY2tOb3RSZWxlYXNlZExvY2tlZCgpOworICAgICAgICAgICAgaW50IGVyciA9IG5hdGl2ZVNldFNjYWxpbmdNb2RlKG1OYXRpdmVPYmplY3QsIHNjYWxpbmdNb2RlKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgc2NhbGluZyBtb2RlOiAiICsgc2NhbGluZ01vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCiAgICAgICogRXhjZXB0aW9uIHRocm93biB3aGVuIGEgQ2FudmFzIGNvdWxkbid0IGJlIGxvY2tlZCB3aXRoIHtAbGluayBTdXJmYWNlI2xvY2tDYW52YXN9LCBvcgogICAgICAqIHdoZW4gYSBTdXJmYWNlVGV4dHVyZSBjb3VsZCBub3Qgc3VjY2Vzc2Z1bGx5IGJlIGFsbG9jYXRlZC4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZVZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZVZpZXcuamF2YQppbmRleCA1ODljMGRjLi5mNGZhOTgwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1N1cmZhY2VWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlVmlldy5qYXZhCkBAIC01NzgsOCArNTc4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZS50cmFuc2ZlckZyb20obU5ld1N1cmZhY2UpOwotCiAgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlICYmIG1TdXJmYWNlLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2V0IFNDQUxJTkdfTU9ERV9OT19TQ0FMRV9DUk9QIHRvIGFsbG93IHRoZSBXaW5kb3dNYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB1cGRhdGUgb3VyIFN1cmZhY2UgY3JvcCB3aXRob3V0IHJlcXVpcmluZyBhIG5ldyBidWZmZXIgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXMuIEluIHRoZSBkZWZhdWx0IG1vZGUgb2YgU0NBTElOR19NT0RFX0ZSRUVaRSwgc3VyZmFjZSBnZW9tZXRyeQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdGUgKHdoaWNoIGluY2x1ZGVzIGNyb3ApIGlzIG9ubHkgYXBwbGllZCB3aGVuIGEgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIGFwcHJvcHJpYXRlIGdlb21ldHJ5IGlzIGF2YWlsYWJsZS4gRHVyaW5nIGRyYWcgcmVzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBpcyBxdWl0ZSBmcmVxdWVudCB0aGF0IGEgbWF0Y2hpbmcgYnVmZmVyIHdpbGwgbm90IGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGJlY2F1c2Ugd2UgYXJlIGNvbnN0YW50bHkgYmVpbmcgcmVzaXplZCBhbmQgaGF2ZSBmYWxsZW4gYmVoaW5kKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgaW4gc3VjaCBzaXR1YXRpb25zIHRoZSBXaW5kb3dNYW5hZ2VyIHN0aWxsIG5lZWRzIHRvIGJlIGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHVwZGF0ZSBvdXIgY3JvcCB0byBlbnN1cmUgd2Ugc3RheSB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2luZG93LgorICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2Uuc2V0U2NhbGluZ01vZGUoU3VyZmFjZS5TQ0FMSU5HX01PREVfTk9fU0NBTEVfQ1JPUCk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbVN1cmZhY2VDcmVhdGVkICYmIChzdXJmYWNlQ2hhbmdlZCB8fCB2aXNpYmxlQ2hhbmdlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUNyZWF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlldy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3LmphdmEKaW5kZXggYWZhNmM3OC4uNTM3Zjg4NyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3LmphdmEKQEAgLTEyNDgyLDggKzEyNDgyLDcgQEAKICAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHBvaW50LCBpbiBsb2NhbCBjb29yZGluYXRlcyBpcyBpbnNpZGUgdGhlIHZpZXcuCiAgICAgICovCiAgICAgLypwYWNrYWdlKi8gZmluYWwgYm9vbGVhbiBwb2ludEluVmlldyhmbG9hdCBsb2NhbFgsIGZsb2F0IGxvY2FsWSkgewotICAgICAgICByZXR1cm4gbG9jYWxYID49IDAgJiYgbG9jYWxYIDwgKG1SaWdodCAtIG1MZWZ0KQotICAgICAgICAgICAgICAgICYmIGxvY2FsWSA+PSAwICYmIGxvY2FsWSA8IChtQm90dG9tIC0gbVRvcCk7CisgICAgICAgIHJldHVybiBwb2ludEluVmlldyhsb2NhbFgsIGxvY2FsWSwgMCk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0xNDcxNiw2ICsxNDcxNSw3IEBACiAgICAgICAgIGRlc3Ryb3lEcmF3aW5nQ2FjaGUoKTsKIAogICAgICAgICBjbGVhbnVwRHJhdygpOworICAgICAgICByZWxlYXNlUG9pbnRlckNhcHR1cmUoKTsKICAgICAgICAgbUN1cnJlbnRBbmltYXRpb24gPSBudWxsOwogICAgIH0KIApAQCAtMjEyMTIsNiArMjEyMTIsNTYgQEAKICAgICAgICAgbVBvaW50ZXJJY29uID0gcG9pbnRlckljb247CiAgICAgfQogCisgICAgLyoqCisgICAgICogUmVxdWVzdCBjYXB0dXJpbmcgZnVydGhlciBtb3VzZSBldmVudHMuCisgICAgICoKKyAgICAgKiBXaGVuIHRoZSB2aWV3IGNhcHR1cmVzLCB0aGUgbW91c2UgcG9pbnRlciBpY29uIHdpbGwgZGlzYXBwZWFyIGFuZCB3aWxsIG5vdCBjaGFuZ2UgaXRzCisgICAgICogcG9zaXRpb24uIEZ1cnRoZXIgbW91c2UgZXZlbnRzIHdpbGwgY29tZSB0byB0aGUgY2FwdHVyaW5nIHZpZXcsIGFuZCB0aGUgbW91c2UgbW92ZW1lbnRzCisgICAgICogd2lsbCBjYW4gYmUgZGV0ZWN0ZWQgdGhyb3VnaCB7QGxpbmsgTW90aW9uRXZlbnQjQVhJU19SRUxBVElWRV9YfSBhbmQKKyAgICAgKiB7QGxpbmsgTW90aW9uRXZlbnQjQVhJU19SRUxBVElWRV9ZfS4gTm9uLW1vdXNlIGV2ZW50cyAodG91Y2hzY3JlZW5zLCBvciBzdHlsdXMpIHdpbGwgbm90CisgICAgICogYmUgYWZmZWN0ZWQuCisgICAgICoKKyAgICAgKiBUaGUgY2FwdHVyZSB3aWxsIGJlIHJlbGVhc2VkIHRocm91Z2gge0BsaW5rICNyZWxlYXNlUG9pbnRlckNhcHR1cmUoKX0sIG9yIHdpbGwgYmUgbG9zdAorICAgICAqIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgdmlldyBvciBjb250YWluaW5nIHdpbmRvdyBkaXNhcHBlYXIuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRydWUgd2hlbiBzdWNjZWVkcy4KKyAgICAgKiBAc2VlICNyZWxlYXNlUG9pbnRlckNhcHR1cmUoKQorICAgICAqIEBzZWUgI2hhc1BvaW50ZXJDYXB0dXJlKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQb2ludGVyQ2FwdHVyZSgpIHsKKyAgICAgICAgZmluYWwgVmlld1Jvb3RJbXBsIHZpZXdSb290SW1wbCA9IGdldFZpZXdSb290SW1wbCgpOworICAgICAgICBpZiAodmlld1Jvb3RJbXBsICE9IG51bGwpIHsKKyAgICAgICAgICAgIHZpZXdSb290SW1wbC5zZXRQb2ludGVyQ2FwdHVyZSh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqCisgICAgICogUmVsZWFzZSB0aGUgY3VycmVudCBjYXB0dXJlIG9mIG1vdXNlIGV2ZW50cy4KKyAgICAgKgorICAgICAqIElmIHRoZSB2aWV3IGRvZXMgbm90IGhhdmUgdGhlIGNhcHR1cmUsIGl0IHdpbGwgZG8gbm90aGluZy4KKyAgICAgKiBAc2VlICNzZXRQb2ludGVyQ2FwdHVyZSgpCisgICAgICogQHNlZSAjaGFzUG9pbnRlckNhcHR1cmUoKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpIHsKKyAgICAgICAgZmluYWwgVmlld1Jvb3RJbXBsIHZpZXdSb290SW1wbCA9IGdldFZpZXdSb290SW1wbCgpOworICAgICAgICBpZiAodmlld1Jvb3RJbXBsICE9IG51bGwpIHsKKyAgICAgICAgICAgIHZpZXdSb290SW1wbC5yZWxlYXNlUG9pbnRlckNhcHR1cmUodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVja3MgdGhlIGNhcHR1cmUgc3RhdHVzIG9mIG1vdXNlIGV2ZW50cy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdmlldyBoYXMgdGhlIGNhcHR1cmUuCisgICAgICogQHNlZSAjc2V0UG9pbnRlckNhcHR1cmUoKQorICAgICAqIEBzZWUgI2hhc1BvaW50ZXJDYXB0dXJlKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNQb2ludGVyQ2FwdHVyZSgpIHsKKyAgICAgICAgZmluYWwgVmlld1Jvb3RJbXBsIHZpZXdSb290SW1wbCA9IGdldFZpZXdSb290SW1wbCgpOworICAgICAgICByZXR1cm4gKHZpZXdSb290SW1wbCAhPSBudWxsKSAmJiB2aWV3Um9vdEltcGwuaGFzUG9pbnRlckNhcHR1cmUodGhpcyk7CisgICAgfQorCiAgICAgLy8KICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgLy8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld1Jvb3RJbXBsLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZpZXdSb290SW1wbC5qYXZhCmluZGV4IGZhZjI2NDAuLmYyYjRmYjMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld1Jvb3RJbXBsLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3Um9vdEltcGwuamF2YQpAQCAtMzksNiArMzksNyBAQAogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CiBpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5kaXNwbGF5LkRpc3BsYXlNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuZGlzcGxheS5EaXNwbGF5TWFuYWdlci5EaXNwbGF5TGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5pbnB1dC5JbnB1dE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5CaW5kZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKQEAgLTE3NCw2ICsxNzUsOSBAQAogICAgIFZpZXcgbUFjY2Vzc2liaWxpdHlGb2N1c2VkSG9zdDsKICAgICBBY2Nlc3NpYmlsaXR5Tm9kZUluZm8gbUFjY2Vzc2liaWxpdHlGb2N1c2VkVmlydHVhbFZpZXc7CiAKKyAgICAvLyBUaGUgdmlldyB3aGljaCBjYXB0dXJlcyBtb3VzZSBpbnB1dCwgb3IgbnVsbCB3aGVuIG5vIG9uZSBpcyBjYXB0dXJpbmcuCisgICAgVmlldyBtQ2FwdHVyaW5nVmlldzsKKwogICAgIGludCBtVmlld1Zpc2liaWxpdHk7CiAgICAgYm9vbGVhbiBtQXBwVmlzaWJsZSA9IHRydWU7CiAgICAgLy8gRm9yIHJlY2VudHMgdG8gZnJlZWZvcm0gdHJhbnNpdGlvbiB3ZSBuZWVkIHRvIGtlZXAgZHJhd2luZyBhZnRlciB0aGUgYXBwIHJlY2VpdmVzIGluZm9ybWF0aW9uCkBAIC0xOTcsNiArMjAxLDEwIEBACiAgICAgLy8gc28gdGhlIHdpbmRvdyBzaG91bGQgbm8gbG9uZ2VyIGJlIGFjdGl2ZS4KICAgICBib29sZWFuIG1TdG9wcGVkID0gZmFsc2U7CiAKKyAgICAvLyBTZXQgdG8gdHJ1ZSBpZiB0aGUgb3duZXIgb2YgdGhpcyB3aW5kb3cgaXMgaW4gYW1iaWVudCBtb2RlLAorICAgIC8vIHdoaWNoIG1lYW5zIGl0IHdvbid0IHJlY2VpdmUgaW5wdXQgZXZlbnRzLgorICAgIGJvb2xlYW4gbUlzQW1iaWVudE1vZGUgPSBmYWxzZTsKKwogICAgIC8vIFNldCB0byB0cnVlIHRvIHN0b3AgaW5wdXQgZHVyaW5nIGFuIEFjdGl2aXR5IFRyYW5zaXRpb24uCiAgICAgYm9vbGVhbiBtUGF1c2VkRm9yVHJhbnNpdGlvbiA9IGZhbHNlOwogCkBAIC0xMDMyLDYgKzEwNDAsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyB2b2lkIHNldElzQW1iaWVudE1vZGUoYm9vbGVhbiBhbWJpZW50KSB7CisgICAgICAgIG1Jc0FtYmllbnRNb2RlID0gYW1iaWVudDsKKyAgICB9CisKICAgICB2b2lkIHNldFdpbmRvd1N0b3BwZWQoYm9vbGVhbiBzdG9wcGVkKSB7CiAgICAgICAgIGlmIChtU3RvcHBlZCAhPSBzdG9wcGVkKSB7CiAgICAgICAgICAgICBtU3RvcHBlZCA9IHN0b3BwZWQ7CkBAIC0zMDA0LDYgKzMwMTYsMzEgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgc2V0UG9pbnRlckNhcHR1cmUoVmlldyB2aWV3KSB7CisgICAgICAgIGlmICghbUF0dGFjaEluZm8ubUhhc1dpbmRvd0ZvY3VzKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJDYW4ndCBzZXQgY2FwdHVyZSBpZiBpdCdzIG5vdCBmb2N1c2VkLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtQ2FwdHVyaW5nVmlldyA9PSB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbUNhcHR1cmluZ1ZpZXcgPSB2aWV3OworICAgICAgICBJbnB1dE1hbmFnZXIuZ2V0SW5zdGFuY2UoKS5zZXRQb2ludGVySWNvbkRldGFjaGVkKHRydWUpOworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZVBvaW50ZXJDYXB0dXJlKFZpZXcgdmlldykgeworICAgICAgICBpZiAobUNhcHR1cmluZ1ZpZXcgIT0gdmlldyB8fCBtQ2FwdHVyaW5nVmlldyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtQ2FwdHVyaW5nVmlldyA9IG51bGw7CisgICAgICAgIElucHV0TWFuYWdlci5nZXRJbnN0YW5jZSgpLnNldFBvaW50ZXJJY29uRGV0YWNoZWQoZmFsc2UpOworICAgIH0KKworICAgIGJvb2xlYW4gaGFzUG9pbnRlckNhcHR1cmUoVmlldyB2aWV3KSB7CisgICAgICAgIHJldHVybiB2aWV3ICE9IG51bGwgJiYgbUNhcHR1cmluZ1ZpZXcgPT0gdmlldzsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCByZXF1ZXN0Q2hpbGRGb2N1cyhWaWV3IGNoaWxkLCBWaWV3IGZvY3VzZWQpIHsKICAgICAgICAgaWYgKERFQlVHX0lOUFVUX1JFU0laRSkgewpAQCAtMzA4MSw2ICszMTE4LDEwIEBACiAgICAgICAgIG1WaWV3ID0gbnVsbDsKICAgICAgICAgbUF0dGFjaEluZm8ubVJvb3RWaWV3ID0gbnVsbDsKIAorICAgICAgICBpZiAobUNhcHR1cmluZ1ZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmVsZWFzZVBvaW50ZXJDYXB0dXJlKG1DYXB0dXJpbmdWaWV3KTsKKyAgICAgICAgfQorCiAgICAgICAgIG1TdXJmYWNlLnJlbGVhc2UoKTsKIAogICAgICAgICBpZiAobUlucHV0UXVldWVDYWxsYmFjayAhPSBudWxsICYmIG1JbnB1dFF1ZXVlICE9IG51bGwpIHsKQEAgLTMzOTAsNiArMzQzMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb2Z0SW5wdXRNb2RlICY9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+V2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuU09GVF9JTlBVVF9JU19GT1JXQVJEX05BVklHQVRJT047CiAgICAgICAgICAgICAgICAgICAgICAgICBtSGFzSGFkV2luZG93Rm9jdXMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1DYXB0dXJpbmdWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VQb2ludGVyQ2FwdHVyZShtQ2FwdHVyaW5nVmlldyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGJyZWFrOwpAQCAtMzY4NSw3ICszNzI4LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCFtQXR0YWNoSW5mby5tSGFzV2luZG93Rm9jdXMKICAgICAgICAgICAgICAgICAgICAgJiYgIXEubUV2ZW50LmlzRnJvbVNvdXJjZShJbnB1dERldmljZS5TT1VSQ0VfQ0xBU1NfUE9JTlRFUikpIHx8IG1TdG9wcGVkCi0gICAgICAgICAgICAgICAgICAgIHx8IChtUGF1c2VkRm9yVHJhbnNpdGlvbiAmJiAhaXNCYWNrKHEubUV2ZW50KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgfHwgbUlzQW1iaWVudE1vZGUgfHwgKG1QYXVzZWRGb3JUcmFuc2l0aW9uICYmICFpc0JhY2socS5tRXZlbnQpKSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBmb2N1cyBldmVudCBhbmQgdGhlIHdpbmRvdyBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGlucHV0IGZvY3VzIG9yCiAgICAgICAgICAgICAgICAgLy8gaGFzIHN0b3BwZWQuIFRoaXMgY291bGQgYmUgYW4gZXZlbnQgdGhhdCBjYW1lIGJhY2sgZnJvbSB0aGUgcHJldmlvdXMgc3RhZ2UKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHdpbmRvdyBoYXMgbG9zdCBmb2N1cyBvciBzdG9wcGVkIGluIHRoZSBtZWFudGltZS4KQEAgLTQyMzYsNyArNDI3OSwxMCBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtQXR0YWNoSW5mby5tVW5idWZmZXJlZERpc3BhdGNoUmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sZWFuIGhhbmRsZWQgPSBtVmlldy5kaXNwYXRjaFBvaW50ZXJFdmVudChldmVudCk7CisgICAgICAgICAgICBmaW5hbCBWaWV3IGV2ZW50VGFyZ2V0ID0KKyAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmlzRnJvbVNvdXJjZShJbnB1dERldmljZS5TT1VSQ0VfTU9VU0UpICYmIG1DYXB0dXJpbmdWaWV3ICE9IG51bGwpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FwdHVyaW5nVmlldyA6IG1WaWV3OworICAgICAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gZXZlbnRUYXJnZXQuZGlzcGF0Y2hQb2ludGVyRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgaWYgKG1BdHRhY2hJbmZvLm1VbmJ1ZmZlcmVkRGlzcGF0Y2hSZXF1ZXN0ZWQgJiYgIW1VbmJ1ZmZlcmVkSW5wdXREaXNwYXRjaCkgewogICAgICAgICAgICAgICAgIG1VbmJ1ZmZlcmVkSW5wdXREaXNwYXRjaCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKG1Db25zdW1lQmF0Y2hlZElucHV0U2NoZWR1bGVkKSB7CkBAIC01NTExLDYgKzU1NTcsOCBAQAogICAgICAgICAgICAgICAgIHdyaXRlci5wcmludGxuKG1Qcm9jZXNzSW5wdXRFdmVudHNTY2hlZHVsZWQpOwogICAgICAgICB3cml0ZXIucHJpbnQoaW5uZXJQcmVmaXgpOyB3cml0ZXIucHJpbnQoIm1UcmF2ZXJzYWxTY2hlZHVsZWQ9Iik7CiAgICAgICAgICAgICAgICAgd3JpdGVyLnByaW50KG1UcmF2ZXJzYWxTY2hlZHVsZWQpOworICAgICAgICB3cml0ZXIucHJpbnQoaW5uZXJQcmVmaXgpOyB3cml0ZXIucHJpbnQoIm1Jc0FtYmllbnRNb2RlPSIpOworICAgICAgICAgICAgICAgIHdyaXRlci5wcmludChtSXNBbWJpZW50TW9kZSk7CiAgICAgICAgIGlmIChtVHJhdmVyc2FsU2NoZWR1bGVkKSB7CiAgICAgICAgICAgICB3cml0ZXIucHJpbnQoIiAoYmFycmllcj0iKTsgd3JpdGVyLnByaW50KG1UcmF2ZXJzYWxCYXJyaWVyKTsgd3JpdGVyLnByaW50bG4oIikiKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvV2luZG93TWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyLmphdmEKaW5kZXggMmU4ODRjYy4uMjUxZjRjOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyLmphdmEKQEAgLTExODMsNiArMTE4MywxMyBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklWQVRFX0ZMQUdfV0lMTF9OT1RfUkVQTEFDRV9PTl9SRUxBVU5DSCA9IDB4MDAwMDgwMDA7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIGNoaWxkIHdpbmRvdyBzaG91bGQgYWx3YXlzIGJlIGxhaWQtb3V0IGluIHRoZSBwYXJlbnQKKyAgICAgICAgICogZnJhbWUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCB3aW5kb3dpbmcgbW9kZSBjb25maWd1cmF0aW9uLgorICAgICAgICAgKiBAaGlkZQorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJJVkFURV9GTEFHX0xBWU9VVF9DSElMRF9XSU5ET1dfSU5fUEFSRU5UX0ZSQU1FID0gMHgwMDAxMDAwMDsKKworICAgICAgICAvKioKICAgICAgICAgICogQ29udHJvbCBmbGFncyB0aGF0IGFyZSBwcml2YXRlIHRvIHRoZSBwbGF0Zm9ybS4KICAgICAgICAgICogQGhpZGUKICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvTGlzdFZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9MaXN0Vmlldy5qYXZhCmluZGV4IDA2NDgwOGIuLmExMTg5N2QgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9MaXN0Vmlldy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9MaXN0Vmlldy5qYXZhCkBAIC0yMTgxLDcgKzIxODEsNyBAQAogICAgICAgICBib29sZWFuIGhhbmRsZWQgPSBmYWxzZTsKICAgICAgICAgaW50IGFjdGlvbiA9IGV2ZW50LmdldEFjdGlvbigpOwogICAgICAgICBpZiAoS2V5RXZlbnQuaXNDb25maXJtS2V5KGtleUNvZGUpCi0gICAgICAgICAgICAgICAgJiYgZXZlbnQuaGFzTm9Nb2RpZmllcnMoKSAmJiBhY3Rpb24gPT0gS2V5RXZlbnQuQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgJiYgZXZlbnQuaGFzTm9Nb2RpZmllcnMoKSAmJiBhY3Rpb24gIT0gS2V5RXZlbnQuQUNUSU9OX1VQKSB7CiAgICAgICAgICAgICBoYW5kbGVkID0gcmVzdXJyZWN0U2VsZWN0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGlmICghaGFuZGxlZCAmJiBldmVudC5nZXRSZXBlYXRDb3VudCgpID09IDAgJiYgZ2V0Q2hpbGRDb3VudCgpID4gMCkgewogICAgICAgICAgICAgICAgIGtleVByZXNzZWQoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9Qb3B1cFdpbmRvdy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1BvcHVwV2luZG93LmphdmEKaW5kZXggZjRjMzQzYS4uMTllMjkwYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1BvcHVwV2luZG93LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1BvcHVwV2luZG93LmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBhbmRyb2lkLndpZGdldDsKIAoraW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuUFJJVkFURV9GTEFHX0xBWU9VVF9DSElMRF9XSU5ET1dfSU5fUEFSRU5UX0ZSQU1FOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuUFJJVkFURV9GTEFHX1dJTExfTk9UX1JFUExBQ0VfT05fUkVMQVVOQ0g7CiAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOwpAQCAtMTMxMyw3ICsxMzE0LDggQEAKICAgICAgICAgICAgIHAud2lkdGggPSBtTGFzdFdpZHRoID0gbVdpZHRoOwogICAgICAgICB9CiAKLSAgICAgICAgcC5wcml2YXRlRmxhZ3MgPSBQUklWQVRFX0ZMQUdfV0lMTF9OT1RfUkVQTEFDRV9PTl9SRUxBVU5DSDsKKyAgICAgICAgcC5wcml2YXRlRmxhZ3MgPSBQUklWQVRFX0ZMQUdfV0lMTF9OT1RfUkVQTEFDRV9PTl9SRUxBVU5DSAorICAgICAgICAgICAgICAgIHwgUFJJVkFURV9GTEFHX0xBWU9VVF9DSElMRF9XSU5ET1dfSU5fUEFSRU5UX0ZSQU1FOwogCiAgICAgICAgIC8vIFVzZWQgZm9yIGRlYnVnZ2luZy4KICAgICAgICAgcC5zZXRUaXRsZSgiUG9wdXBXaW5kb3c6IiArIEludGVnZXIudG9IZXhTdHJpbmcoaGFzaENvZGUoKSkpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9Mb2NhbGVQaWNrZXIuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvTG9jYWxlUGlja2VyLmphdmEKaW5kZXggNGVmZWZhOS4uNmEzNjVlMCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9Mb2NhbGVQaWNrZXIuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0xvY2FsZVBpY2tlci5qYXZhCkBAIC0yOCw2ICsyOCw3IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9jYWxlTGlzdDsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKQEAgLTQ1LDYgKzQ2LDcgQEAKIHB1YmxpYyBjbGFzcyBMb2NhbGVQaWNrZXIgZXh0ZW5kcyBMaXN0RnJhZ21lbnQgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTG9jYWxlUGlja2VyIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gcHNldWRvTG9jYWxlcyA9IHsgImVuLVhBIiwgImFyLVhCIiB9OwogCiAgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgTG9jYWxlU2VsZWN0aW9uTGlzdGVuZXIgewogICAgICAgICAvLyBZb3UgY2FuIGFkZCBhbnkgYXJndW1lbnQgaWYgeW91IHJlYWxseSBuZWVkIGl0Li4uCkBAIC01Nyw3ICs1OSw3IEBACiAgICAgICAgIHN0YXRpYyBmaW5hbCBDb2xsYXRvciBzQ29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOwogCiAgICAgICAgIFN0cmluZyBsYWJlbDsKLSAgICAgICAgTG9jYWxlIGxvY2FsZTsKKyAgICAgICAgZmluYWwgTG9jYWxlIGxvY2FsZTsKIAogICAgICAgICBwdWJsaWMgTG9jYWxlSW5mbyhTdHJpbmcgbGFiZWwsIExvY2FsZSBsb2NhbGUpIHsKICAgICAgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKQEAgLTgzLDE3ICs4NSwzMCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRTeXN0ZW1Bc3NldExvY2FsZXMoKSB7CisgICAgICAgIHJldHVybiBSZXNvdXJjZXMuZ2V0U3lzdGVtKCkuZ2V0QXNzZXRzKCkuZ2V0TG9jYWxlcygpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0U3VwcG9ydGVkTG9jYWxlcyhDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0U3RyaW5nQXJyYXkoUi5hcnJheS5zdXBwb3J0ZWRfbG9jYWxlcyk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRQc2V1ZG9Mb2NhbGVzKCkgeworICAgICAgICByZXR1cm4gcHNldWRvTG9jYWxlczsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIExpc3Q8TG9jYWxlSW5mbz4gZ2V0QWxsQXNzZXRMb2NhbGVzKENvbnRleHQgY29udGV4dCwgYm9vbGVhbiBpc0luRGV2ZWxvcGVyTW9kZSkgewogICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzb3VyY2VzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKIAotICAgICAgICBmaW5hbCBTdHJpbmdbXSBsb2NhbGVzID0gUmVzb3VyY2VzLmdldFN5c3RlbSgpLmdldEFzc2V0cygpLmdldExvY2FsZXMoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gbG9jYWxlcyA9IGdldFN5c3RlbUFzc2V0TG9jYWxlcygpOwogICAgICAgICBMaXN0PFN0cmluZz4gbG9jYWxlTGlzdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPihsb2NhbGVzLmxlbmd0aCk7CiAgICAgICAgIENvbGxlY3Rpb25zLmFkZEFsbChsb2NhbGVMaXN0LCBsb2NhbGVzKTsKIAogICAgICAgICAvLyBEb24ndCBzaG93IHRoZSBwc2V1ZG9sb2NhbGVzIHVubGVzcyB3ZSdyZSBpbiBkZXZlbG9wZXIgbW9kZS4gaHR0cDovL2IvMTcxOTA0MDcuCiAgICAgICAgIGlmICghaXNJbkRldmVsb3Blck1vZGUpIHsKLSAgICAgICAgICAgIGxvY2FsZUxpc3QucmVtb3ZlKCJhci1YQiIpOwotICAgICAgICAgICAgbG9jYWxlTGlzdC5yZW1vdmUoImVuLVhBIik7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBsb2NhbGUgOiBwc2V1ZG9Mb2NhbGVzKSB7CisgICAgICAgICAgICAgICAgbG9jYWxlTGlzdC5yZW1vdmUobG9jYWxlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIENvbGxlY3Rpb25zLnNvcnQobG9jYWxlTGlzdCk7CkBAIC0yNDAsMTMgKzI1NSwyNCBAQAogICAgIC8qKgogICAgICAqIFJlcXVlc3RzIHRoZSBzeXN0ZW0gdG8gdXBkYXRlIHRoZSBzeXN0ZW0gbG9jYWxlLiBOb3RlIHRoYXQgdGhlIHN5c3RlbSBsb29rcyBoYWx0ZWQKICAgICAgKiBmb3IgYSB3aGlsZSBkdXJpbmcgdGhlIExvY2FsZSBtaWdyYXRpb24sIHNvIHRoZSBjYWxsZXIgbmVlZCB0byB0YWtlIGNhcmUgb2YgaXQuCisgICAgICoKKyAgICAgKiBAc2VlICN1cGRhdGVMb2NhbGVzKExvY2FsZUxpc3QpCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIHVwZGF0ZUxvY2FsZShMb2NhbGUgbG9jYWxlKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIGFtID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gYW0uZ2V0Q29uZmlndXJhdGlvbigpOworICAgICAgICB1cGRhdGVMb2NhbGVzKG5ldyBMb2NhbGVMaXN0KGxvY2FsZSkpOworICAgIH0KIAotICAgICAgICAgICAgY29uZmlnLnNldExvY2FsZShsb2NhbGUpOworICAgIC8qKgorICAgICAqIFJlcXVlc3RzIHRoZSBzeXN0ZW0gdG8gdXBkYXRlIHRoZSBsaXN0IG9mIHN5c3RlbSBsb2NhbGVzLgorICAgICAqIE5vdGUgdGhhdCB0aGUgc3lzdGVtIGxvb2tzIGhhbHRlZCBmb3IgYSB3aGlsZSBkdXJpbmcgdGhlIExvY2FsZSBtaWdyYXRpb24sCisgICAgICogc28gdGhlIGNhbGxlciBuZWVkIHRvIHRha2UgY2FyZSBvZiBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdXBkYXRlTG9jYWxlcyhMb2NhbGVMaXN0IGxvY2FsZXMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmFsIElBY3Rpdml0eU1hbmFnZXIgYW0gPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWcgPSBhbS5nZXRDb25maWd1cmF0aW9uKCk7CisKKyAgICAgICAgICAgIGNvbmZpZy5zZXRMb2NhbGVzKGxvY2FsZXMpOwogICAgICAgICAgICAgY29uZmlnLnVzZXJTZXRMb2NhbGUgPSB0cnVlOwogCiAgICAgICAgICAgICBhbS51cGRhdGVDb25maWd1cmF0aW9uKGNvbmZpZyk7CkBAIC0yNTYsNCArMjgyLDE5IEBACiAgICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsKICAgICAgICAgfQogICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgbG9jYWxlIGxpc3QuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBsb2NhbGUgbGlzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIExvY2FsZUxpc3QgZ2V0TG9jYWxlcygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpCisgICAgICAgICAgICAgICAgICAgIC5nZXRDb25maWd1cmF0aW9uKCkuZ2V0TG9jYWxlcygpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gSWYgc29tZXRoaW5nIHdlbnQgd3JvbmcKKyAgICAgICAgICAgIHJldHVybiBMb2NhbGVMaXN0LmdldERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIH0KIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvTG9jYWxlUGlja2VyV2l0aFJlZ2lvbi5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9Mb2NhbGVQaWNrZXJXaXRoUmVnaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I4Zjg2NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvTG9jYWxlUGlja2VyV2l0aFJlZ2lvbi5qYXZhCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHA7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCitpbXBvcnQgYW5kcm9pZC5hcHAuTGlzdEZyYWdtZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQudXRpbC5BcnJheU1hcDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5BcnJheUFkYXB0ZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGlzdFZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CisKK2ltcG9ydCBqYXZhLnRleHQuQ29sbGF0b3I7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitjbGFzcyBMb2NhbGVBZGFwdGVyIGV4dGVuZHMgQXJyYXlBZGFwdGVyPExvY2FsZVBpY2tlci5Mb2NhbGVJbmZvPiB7CisgICAgZmluYWwgcHJpdmF0ZSBNYXA8U3RyaW5nLCBMb2NhbGVQaWNrZXIuTG9jYWxlSW5mbz4gbUxldmVsT25lID0gbmV3IEFycmF5TWFwPD4oKTsKKyAgICBmaW5hbCBwcml2YXRlIE1hcDxTdHJpbmcsIEhhc2hTZXQ8TG9jYWxlUGlja2VyLkxvY2FsZUluZm8+PiBtTGV2ZWxUd28gPSBuZXcgQXJyYXlNYXA8PigpOworICAgIGZpbmFsIHByaXZhdGUgTGF5b3V0SW5mbGF0ZXIgbUluZmxhdGVyOworCisgICAgZmluYWwgc3RhdGljIGNsYXNzIExvY2FsZUF3YXJlQ29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3I8TG9jYWxlUGlja2VyLkxvY2FsZUluZm8+IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBDb2xsYXRvciBtQ29sbGF0b3I7CisKKyAgICAgICAgcHVibGljIExvY2FsZUF3YXJlQ29tcGFyYXRvcihMb2NhbGUgc29ydExvY2FsZSkgeworICAgICAgICAgICAgbUNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2Uoc29ydExvY2FsZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKExvY2FsZVBpY2tlci5Mb2NhbGVJbmZvIGxocywgTG9jYWxlUGlja2VyLkxvY2FsZUluZm8gcmhzKSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbGxhdG9yLmNvbXBhcmUobGhzLmdldExhYmVsKCksIHJocy5nZXRMYWJlbCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBMaXN0PExvY2FsZT4gZ2V0Q3VyYXRlZExvY2FsZUxpc3QoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXNvdXJjZXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICBmaW5hbCBTdHJpbmdbXSBzdXBwb3J0ZWRMb2NhbGVDb2RlcyA9IHJlc291cmNlcy5nZXRTdHJpbmdBcnJheShSLmFycmF5LnN1cHBvcnRlZF9sb2NhbGVzKTsKKworICAgICAgICBmaW5hbCBBcnJheUxpc3Q8TG9jYWxlPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PD4oc3VwcG9ydGVkTG9jYWxlQ29kZXMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChTdHJpbmcgbG9jYWxlSWQgOiBzdXBwb3J0ZWRMb2NhbGVDb2RlcykgeworICAgICAgICAgICAgTG9jYWxlIGxvY2FsZSA9IExvY2FsZS5mb3JMYW5ndWFnZVRhZyhsb2NhbGVJZCk7CisgICAgICAgICAgICBpZiAoIWxvY2FsZS5nZXRDb3VudHJ5KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChMb2NhbGUuZm9yTGFuZ3VhZ2VUYWcobG9jYWxlSWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHB1YmxpYyBMb2NhbGVBZGFwdGVyKENvbnRleHQgY29udGV4dCkgeworICAgICAgICB0aGlzKGNvbnRleHQsIGdldEN1cmF0ZWRMb2NhbGVMaXN0KGNvbnRleHQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTG9jYWxlIGdldEJhc2VMb2NhbGUoTG9jYWxlIGxvY2FsZSkgeworICAgICAgICByZXR1cm4gbmV3IExvY2FsZS5CdWlsZGVyKCkKKyAgICAgICAgICAgICAgICAuc2V0TG9jYWxlKGxvY2FsZSkKKyAgICAgICAgICAgICAgICAuc2V0UmVnaW9uKCIiKQorICAgICAgICAgICAgICAgIC5idWlsZCgpOworICAgIH0KKworICAgIC8vIFRoZXJlIGlzIG5vIGdvb2QgQVBJIGF2YWlsYWJsZSBmb3IgdGhpcywgbm90IGV2ZW4gaW4gSUNVLgorICAgIC8vIFdlIGNhbiByZXZpc2l0IHRoaXMgaWYgd2UgZ2V0IHNvbWUgSUNVIHN1cHBvcnQgbGF0ZXIKKyAgICAvLworICAgIC8vIFRoZXJlIGFyZSBjdXJyZW50bHkgc2V2ZXJhbCB0aWNrZXRzIHJlcXVlc3RpbmcgdGhpcyBmZWF0dXJlOgorICAgIC8vICogSUNVIG5lZWRzIHRvIHByb3ZpZGUgYW4gZWFzeSB3YXkgdG8gdGl0bGVjYXNlIG9ubHkgb25lIGZpcnN0IGxldHRlcgorICAgIC8vICAgaHR0cDovL2J1Z3MuaWN1LXByb2plY3Qub3JnL3RyYWMvdGlja2V0LzExNzI5CisgICAgLy8gKiBBZGQgImluaXRpYWwgY2FzZSIKKyAgICAvLyAgICBodHRwOi8vYnVncy5pY3UtcHJvamVjdC5vcmcvdHJhYy90aWNrZXQvODM5NAorICAgIC8vICogQWRkIGNvZGUgZm9yIGluaXRpYWxDYXNlLCB0b1RpdGxlY2FzZSBkb24ndCBtb2RpZnkgYWZ0ZXIgTHQsCisgICAgLy8gICBhdm9pZCA0OUVycywgbG93LWxldmVsIGxhbmd1YWdlLXNwZWNpZmljIGNhc2luZworICAgIC8vICAgaHR0cDovL2J1Z3MuaWN1LXByb2plY3Qub3JnL3RyYWMvdGlja2V0LzEwNDEwCisgICAgLy8gKiBCcmVha0l0ZXJhdG9yLmdldEZpcnN0SW5zdGFuY2U6IE9mdGVuIHlvdSBuZWVkIHRvIHRpdGxlY2FzZSBqdXN0IHRoZSBmaXJzdAorICAgIC8vICAgd29yZCwgYW5kIGxlYXZlIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgYWxvbmUuICAoY2xvc2VkIGFzIGR1cGxpY2F0ZSkKKyAgICAvLyAgIGh0dHA6Ly9idWdzLmljdS1wcm9qZWN0Lm9yZy90cmFjL3RpY2tldC84OTQ2CisgICAgLy8KKyAgICAvLyBBIChjbHVua3kpIG9wdGlvbiB3aXRoIHRoZSBjdXJyZW50IElDVSBBUEkgaXM6CisgICAgLy8gICBCcmVha0l0ZXJhdG9yIGJyZWFrSXRlcmF0b3IgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UobG9jYWxlKTsKKyAgICAvLyAgIFN0cmluZyByZXN1bHQgPSBVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKGxvY2FsZSwKKyAgICAvLyAgICAgICBzb3VyY2UsIGJyZWFrSXRlcmF0b3IsIFVDaGFyYWN0ZXIuVElUTEVDQVNFX05PX0xPV0VSQ0FTRSk7CisgICAgLy8gVGhhdCBhbHNvIG1lYW5zIGNyZWF0aW5nIEJyZWFrSXRlcmF0b3MgZm9yIGVhY2ggbG9jYWxlLiBFeHBlbnNpdmUuLi4KKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgdG9UaXRsZUNhc2UoU3RyaW5nIHMsIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgaWYgKHMubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IGZpcnN0Q29kZVBvaW50TGVuID0gcy5vZmZzZXRCeUNvZGVQb2ludHMoMCwgMSk7CisgICAgICAgIHJldHVybiBzLnN1YnN0cmluZygwLCBmaXJzdENvZGVQb2ludExlbikudG9VcHBlckNhc2UobG9jYWxlKQorICAgICAgICAgICAgICAgICsgcy5zdWJzdHJpbmcoZmlyc3RDb2RlUG9pbnRMZW4pOworICAgIH0KKworICAgIHB1YmxpYyBMb2NhbGVBZGFwdGVyKENvbnRleHQgY29udGV4dCwgTGlzdDxMb2NhbGU+IGxvY2FsZXMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgUi5sYXlvdXQubG9jYWxlX3BpY2tlcl9pdGVtLCBSLmlkLmxvY2FsZSk7CisgICAgICAgIG1JbmZsYXRlciA9IChMYXlvdXRJbmZsYXRlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTEFZT1VUX0lORkxBVEVSX1NFUlZJQ0UpOworCisgICAgICAgIGZvciAoTG9jYWxlIGxvY2FsZSA6IGxvY2FsZXMpIHsKKyAgICAgICAgICAgIExvY2FsZSBiYXNlTG9jYWxlID0gZ2V0QmFzZUxvY2FsZShsb2NhbGUpOworICAgICAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gYmFzZUxvY2FsZS50b0xhbmd1YWdlVGFnKCk7CisgICAgICAgICAgICBpZiAoIW1MZXZlbE9uZS5jb250YWluc0tleShsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGFiZWwgPSB0b1RpdGxlQ2FzZShiYXNlTG9jYWxlLmdldERpc3BsYXlOYW1lKGJhc2VMb2NhbGUpLCBiYXNlTG9jYWxlKTsKKyAgICAgICAgICAgICAgICBtTGV2ZWxPbmUucHV0KGxhbmd1YWdlLCBuZXcgTG9jYWxlUGlja2VyLkxvY2FsZUluZm8obGFiZWwsIGJhc2VMb2NhbGUpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluYWwgSGFzaFNldDxMb2NhbGVQaWNrZXIuTG9jYWxlSW5mbz4gc3ViTG9jYWxlczsKKyAgICAgICAgICAgIGlmIChtTGV2ZWxUd28uY29udGFpbnNLZXkobGFuZ3VhZ2UpKSB7CisgICAgICAgICAgICAgICAgc3ViTG9jYWxlcyA9IG1MZXZlbFR3by5nZXQobGFuZ3VhZ2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdWJMb2NhbGVzID0gbmV3IEhhc2hTZXQ8PigpOworICAgICAgICAgICAgICAgIG1MZXZlbFR3by5wdXQobGFuZ3VhZ2UsIHN1YkxvY2FsZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIGxhYmVsID0gbG9jYWxlLmdldERpc3BsYXlDb3VudHJ5KGxvY2FsZSk7CisgICAgICAgICAgICBzdWJMb2NhbGVzLmFkZChuZXcgTG9jYWxlUGlja2VyLkxvY2FsZUluZm8obGFiZWwsIGxvY2FsZSkpOworICAgICAgICB9CisKKyAgICAgICAgc2V0QWRhcHRlckxldmVsKG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEFkYXB0ZXJMZXZlbChTdHJpbmcgcGFyZW50TG9jYWxlKSB7CisgICAgICAgIHRoaXMuY2xlYXIoKTsKKworICAgICAgICBpZiAocGFyZW50TG9jYWxlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuYWRkQWxsKG1MZXZlbE9uZS52YWx1ZXMoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmFkZEFsbChtTGV2ZWxUd28uZ2V0KHBhcmVudExvY2FsZSkpOworICAgICAgICB9CisKKyAgICAgICAgTG9jYWxlIHNvcnRMb2NhbGUgPSAocGFyZW50TG9jYWxlID09IG51bGwpCisgICAgICAgICAgICAgICAgPyBMb2NhbGUuZ2V0RGVmYXVsdCgpCisgICAgICAgICAgICAgICAgOiBMb2NhbGUuZm9yTGFuZ3VhZ2VUYWcocGFyZW50TG9jYWxlKTsKKyAgICAgICAgTG9jYWxlQXdhcmVDb21wYXJhdG9yIGNvbXBhcmF0b3IgPSBuZXcgTG9jYWxlQXdhcmVDb21wYXJhdG9yKHNvcnRMb2NhbGUpOworICAgICAgICB0aGlzLnNvcnQoY29tcGFyYXRvcik7CisKKyAgICAgICAgdGhpcy5ub3RpZnlEYXRhU2V0Q2hhbmdlZCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWaWV3IGdldFZpZXcoaW50IHBvc2l0aW9uLCBWaWV3IGNvbnZlcnRWaWV3LCBWaWV3R3JvdXAgcGFyZW50KSB7CisgICAgICAgIFZpZXcgdmlldzsKKyAgICAgICAgVGV4dFZpZXcgdGV4dDsKKyAgICAgICAgaWYgKGNvbnZlcnRWaWV3ID09IG51bGwpIHsKKyAgICAgICAgICAgIHZpZXcgPSBtSW5mbGF0ZXIuaW5mbGF0ZShSLmxheW91dC5sb2NhbGVfcGlja2VyX2l0ZW0sIHBhcmVudCwgZmFsc2UpOworICAgICAgICAgICAgdGV4dCA9IChUZXh0Vmlldykgdmlldy5maW5kVmlld0J5SWQoUi5pZC5sb2NhbGUpOworICAgICAgICAgICAgdmlldy5zZXRUYWcodGV4dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2aWV3ID0gY29udmVydFZpZXc7CisgICAgICAgICAgICB0ZXh0ID0gKFRleHRWaWV3KSB2aWV3LmdldFRhZygpOworICAgICAgICB9CisgICAgICAgIExvY2FsZVBpY2tlci5Mb2NhbGVJbmZvIGl0ZW0gPSBnZXRJdGVtKHBvc2l0aW9uKTsKKyAgICAgICAgdGV4dC5zZXRUZXh0KGl0ZW0uZ2V0TGFiZWwoKSk7CisgICAgICAgIHRleHQuc2V0VGV4dExvY2FsZShpdGVtLmdldExvY2FsZSgpKTsKKyAgICAgICAgcmV0dXJuIHZpZXc7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgTG9jYWxlUGlja2VyV2l0aFJlZ2lvbiBleHRlbmRzIExpc3RGcmFnbWVudCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJU1RfTU9ERV9MQU5HVUFHRSA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJU1RfTU9ERV9DT1VOVFJZID0gMTsKKworICAgIHByaXZhdGUgTG9jYWxlQWRhcHRlciBtQWRhcHRlcjsKKyAgICBwcml2YXRlIGludCBtRGlzcGxheU1vZGUgPSBMSVNUX01PREVfTEFOR1VBR0U7CisKKyAgICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBMb2NhbGVTZWxlY3Rpb25MaXN0ZW5lciB7CisgICAgICAgIC8vIFlvdSBjYW4gYWRkIGFueSBhcmd1bWVudCBpZiB5b3UgcmVhbGx5IG5lZWQgaXQuLi4KKyAgICAgICAgcHVibGljIHZvaWQgb25Mb2NhbGVTZWxlY3RlZChMb2NhbGUgbG9jYWxlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIExvY2FsZVNlbGVjdGlvbkxpc3RlbmVyIG1MaXN0ZW5lciA9IG51bGw7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkFjdGl2aXR5Q3JlYXRlZChmaW5hbCBCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIHN1cGVyLm9uQWN0aXZpdHlDcmVhdGVkKHNhdmVkSW5zdGFuY2VTdGF0ZSk7CisKKyAgICAgICAgbUFkYXB0ZXIgPSBuZXcgTG9jYWxlQWRhcHRlcihnZXRDb250ZXh0KCkpOworICAgICAgICBtQWRhcHRlci5zZXRBZGFwdGVyTGV2ZWwobnVsbCk7CisgICAgICAgIHNldExpc3RBZGFwdGVyKG1BZGFwdGVyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRMb2NhbGVTZWxlY3Rpb25MaXN0ZW5lcihMb2NhbGVTZWxlY3Rpb25MaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBtTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgc3VwZXIub25SZXN1bWUoKTsKKyAgICAgICAgZ2V0TGlzdFZpZXcoKS5yZXF1ZXN0Rm9jdXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFYWNoIGxpc3RlbmVyIG5lZWRzIHRvIGNhbGwge0BsaW5rIExvY2FsZVBpY2tlci51cGRhdGVMb2NhbGUoTG9jYWxlKX0gdG8gYWN0dWFsbHkKKyAgICAgKiBjaGFuZ2UgdGhlIGxvY2FsZS4KKyAgICAgKiA8cC8+CisgICAgICogV2UgZG9uJ3QgY2FsbCB7QGxpbmsgTG9jYWxlUGlja2VyLnVwZGF0ZUxvY2FsZShMb2NhbGUpfSBhdXRvbWF0aWNhbGx5LCBhcyBpdCBoYWx0cworICAgICAqIHRoZSBzeXN0ZW0gZm9yIGEgbW9tZW50IGFuZCBzb21lIGNhbGxlcnMgd29uJ3Qgd2FudCBpdC4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkxpc3RJdGVtQ2xpY2soTGlzdFZpZXcgbCwgVmlldyB2LCBpbnQgcG9zaXRpb24sIGxvbmcgaWQpIHsKKyAgICAgICAgZmluYWwgTG9jYWxlIGxvY2FsZSA9ICgoTG9jYWxlUGlja2VyLkxvY2FsZUluZm8pIGdldExpc3RBZGFwdGVyKCkuZ2V0SXRlbShwb3NpdGlvbikpLmxvY2FsZTsKKyAgICAgICAgLy8gVE9ETzogaGFuZGxlIHRoZSBiYWNrIGJ1dHRvbnMgdG8gcmV0dXJuIHRvIHRoZSBsYW5ndWFnZSBsaXN0CisgICAgICAgIGlmIChtRGlzcGxheU1vZGUgPT0gTElTVF9NT0RFX0xBTkdVQUdFKSB7CisgICAgICAgICAgICBtRGlzcGxheU1vZGUgPSBMSVNUX01PREVfQ09VTlRSWTsKKyAgICAgICAgICAgIG1BZGFwdGVyLnNldEFkYXB0ZXJMZXZlbChsb2NhbGUudG9MYW5ndWFnZVRhZygpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobUxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1MaXN0ZW5lci5vbkxvY2FsZVNlbGVjdGVkKGxvY2FsZSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9nZ2luZy9NZXRyaWNzTG9nZ2VyLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9nZ2luZy9NZXRyaWNzTG9nZ2VyLmphdmEKaW5kZXggZTI3NmJjNi4uYmZjNTZkYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvZ2dpbmcvTWV0cmljc0xvZ2dlci5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2dnaW5nL01ldHJpY3NMb2dnZXIuamF2YQpAQCAtMzUsNiArMzUsNyBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDVElPTl9aRU5fQUxMT1dfTElHSFRTID0gMjYyOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PVElGSUNBVElPTl9UT1BJQ19OT1RJRklDQVRJT04gPSAyNjM7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUNUSU9OX0RFRkFVTFRfU01TX0FQUF9DSEFOR0VEID0gMjY0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFTX0NPTE9SX01BVFJJWCA9IDI2NTsKIAogICAgIC8qKgogICAgICAqIExvZ2dlZCB3aGVuIHRoZSB1c2VyIGRvY2tzIGEgd2luZG93IGZyb20gcmVjZW50cyBieSBsb25ncHJlc3NpbmcgYSB0YXNrIGFuZCBkcmFnZ2luZyBpdCB0bwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1p5Z290ZUluaXQuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9aeWdvdGVJbml0LmphdmEKaW5kZXggOGUzMThhMi4uNGExZjdmNCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1p5Z290ZUluaXQuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvWnlnb3RlSW5pdC5qYXZhCkBAIC01MzQsNyArNTM0LDcgQEAKICAgICAgICAgU3RyaW5nIGFyZ3NbXSA9IHsKICAgICAgICAgICAgICItLXNldHVpZD0xMDAwIiwKICAgICAgICAgICAgICItLXNldGdpZD0xMDAwIiwKLSAgICAgICAgICAgICItLXNldGdyb3Vwcz0xMDAxLDEwMDIsMTAwMywxMDA0LDEwMDUsMTAwNiwxMDA3LDEwMDgsMTAwOSwxMDEwLDEwMTgsMTAyMSwxMDMyLDMwMDEsMzAwMiwzMDAzLDMwMDYsMzAwNywzMDA5IiwKKyAgICAgICAgICAgICItLXNldGdyb3Vwcz0xMDAxLDEwMDIsMTAwMywxMDA0LDEwMDUsMTAwNiwxMDA3LDEwMDgsMTAwOSwxMDEwLDEwMTgsMTAyMSwxMDMyLDMwMDEsMzAwMiwzMDAzLDMwMDYsMzAwNywzMDA5LDMwMTAiLAogICAgICAgICAgICAgIi0tY2FwYWJpbGl0aWVzPSIgKyBjYXBhYmlsaXRpZXMgKyAiLCIgKyBjYXBhYmlsaXRpZXMsCiAgICAgICAgICAgICAiLS1uaWNlLW5hbWU9c3lzdGVtX3NlcnZlciIsCiAgICAgICAgICAgICAiLS1ydW50aW1lLWFyZ3MiLApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9QaG9uZVdpbmRvdy5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9QaG9uZVdpbmRvdy5qYXZhCmluZGV4IDJkOGJmZDQuLmZhZmUzZDEgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvUGhvbmVXaW5kb3cuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L1Bob25lV2luZG93LmphdmEKQEAgLTI3NCw2ICsyNzQsOCBAQAogCiAgICAgcHJpdmF0ZSBpbnQgbURlY29yQ2FwdGlvblNoYWRlID0gREVDT1JfQ0FQVElPTl9TSEFERV9BVVRPOwogCisgICAgcHJpdmF0ZSBib29sZWFuIG1Vc2VEZWNvckNvbnRleHQgPSBmYWxzZTsKKwogICAgIHN0YXRpYyBjbGFzcyBXaW5kb3dNYW5hZ2VySG9sZGVyIHsKICAgICAgICAgc3RhdGljIGZpbmFsIElXaW5kb3dNYW5hZ2VyIHNXaW5kb3dNYW5hZ2VyID0gSVdpbmRvd01hbmFnZXIuU3R1Yi5hc0ludGVyZmFjZSgKICAgICAgICAgICAgICAgICBTZXJ2aWNlTWFuYWdlci5nZXRTZXJ2aWNlKCJ3aW5kb3ciKSk7CkBAIC0yODYsOCArMjg4LDE0IEBACiAgICAgICAgIG1MYXlvdXRJbmZsYXRlciA9IExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIG1haW4gd2luZG93IG9mIGFuIGFjdGl2aXR5LgorICAgICAqLwogICAgIHB1YmxpYyBQaG9uZVdpbmRvdyhDb250ZXh0IGNvbnRleHQsIFdpbmRvdyBwcmVzZXJ2ZWRXaW5kb3cpIHsKICAgICAgICAgdGhpcyhjb250ZXh0KTsKKyAgICAgICAgLy8gT25seSBtYWluIGFjdGl2aXR5IHdpbmRvd3MgdXNlIGRlY29yIGNvbnRleHQsIGFsbCB0aGUgb3RoZXIgd2luZG93cyBkZXBlbmQgb24gd2hhdGV2ZXIKKyAgICAgICAgLy8gY29udGV4dCB0aGF0IHdhcyBnaXZlbiB0byB0aGVtLgorICAgICAgICBtVXNlRGVjb3JDb250ZXh0ID0gdHJ1ZTsKICAgICAgICAgaWYgKHByZXNlcnZlZFdpbmRvdyAhPSBudWxsKSB7CiAgICAgICAgICAgICBtRGVjb3IgPSAoRGVjb3JWaWV3KSBwcmVzZXJ2ZWRXaW5kb3cuZ2V0RGVjb3JWaWV3KCk7CiAgICAgICAgICAgICBtRWxldmF0aW9uID0gcHJlc2VydmVkV2luZG93LmdldEVsZXZhdGlvbigpOwpAQCAtMjI1OSwxNSArMjI2NywxOSBAQAogICAgICAgICAvLyBTeXN0ZW0gcHJvY2VzcyBkb2Vzbid0IGhhdmUgYXBwbGljYXRpb24gY29udGV4dCBhbmQgaW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gZGlyZWN0bHkgdXNlCiAgICAgICAgIC8vIHRoZSBjb250ZXh0IHdlIGhhdmUuIE90aGVyd2lzZSB3ZSB3YW50IHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LCBzbyB3ZSBkb24ndCBjbGluZyB0byB0aGUKICAgICAgICAgLy8gYWN0aXZpdHkuCi0gICAgICAgIENvbnRleHQgYXBwbGljYXRpb25Db250ZXh0ID0gZ2V0Q29udGV4dCgpLmdldEFwcGxpY2F0aW9uQ29udGV4dCgpOwogICAgICAgICBDb250ZXh0IGNvbnRleHQ7Ci0gICAgICAgIGlmIChhcHBsaWNhdGlvbkNvbnRleHQgPT0gbnVsbCkgewotICAgICAgICAgICAgY29udGV4dCA9IGdldENvbnRleHQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnRleHQgPSBuZXcgRGVjb3JDb250ZXh0KGFwcGxpY2F0aW9uQ29udGV4dCk7Ci0gICAgICAgICAgICBpZiAobVRoZW1lICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUaGVtZShtVGhlbWUpOworICAgICAgICBpZiAobVVzZURlY29yQ29udGV4dCkgeworICAgICAgICAgICAgQ29udGV4dCBhcHBsaWNhdGlvbkNvbnRleHQgPSBnZXRDb250ZXh0KCkuZ2V0QXBwbGljYXRpb25Db250ZXh0KCk7CisgICAgICAgICAgICBpZiAoYXBwbGljYXRpb25Db250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Q29udGV4dCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gbmV3IERlY29yQ29udGV4dChhcHBsaWNhdGlvbkNvbnRleHQpOworICAgICAgICAgICAgICAgIGlmIChtVGhlbWUgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRUaGVtZShtVGhlbWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRDb250ZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ldyBEZWNvclZpZXcoY29udGV4dCwgZmVhdHVyZUlkLCB0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9BcnJheVV0aWxzLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9BcnJheVV0aWxzLmphdmEKaW5kZXggZTg5NzBiYy4uMTZiZjlkZCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvQXJyYXlVdGlscy5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC91dGlsL0FycmF5VXRpbHMuamF2YQpAQCAtMTI1LDI4ICsxMjUsMjggQEAKICAgICAvKioKICAgICAgKiBDaGVja3MgaWYgZ2l2ZW4gYXJyYXkgaXMgbnVsbCBvciBoYXMgemVybyBlbGVtZW50cy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIDxUPiBib29sZWFuIGlzRW1wdHkoVFtdIGFycmF5KSB7CisgICAgcHVibGljIHN0YXRpYyA8VD4gYm9vbGVhbiBpc0VtcHR5KEBOdWxsYWJsZSBUW10gYXJyYXkpIHsKICAgICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoID09IDA7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogQ2hlY2tzIGlmIGdpdmVuIGFycmF5IGlzIG51bGwgb3IgaGFzIHplcm8gZWxlbWVudHMuCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRW1wdHkoaW50W10gYXJyYXkpIHsKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNFbXB0eShATnVsbGFibGUgaW50W10gYXJyYXkpIHsKICAgICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoID09IDA7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogQ2hlY2tzIGlmIGdpdmVuIGFycmF5IGlzIG51bGwgb3IgaGFzIHplcm8gZWxlbWVudHMuCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRW1wdHkobG9uZ1tdIGFycmF5KSB7CisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRW1wdHkoQE51bGxhYmxlIGxvbmdbXSBhcnJheSkgewogICAgICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCB8fCBhcnJheS5sZW5ndGggPT0gMDsKICAgICB9CiAKICAgICAvKioKICAgICAgKiBDaGVja3MgaWYgZ2l2ZW4gYXJyYXkgaXMgbnVsbCBvciBoYXMgemVybyBlbGVtZW50cy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNFbXB0eShieXRlW10gYXJyYXkpIHsKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNFbXB0eShATnVsbGFibGUgYnl0ZVtdIGFycmF5KSB7CiAgICAgICAgIHJldHVybiBhcnJheSA9PSBudWxsIHx8IGFycmF5Lmxlbmd0aCA9PSAwOwogICAgIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBACiAgICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBjaGVjayBmb3IKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIHByZXNlbnQgaW4gdGhlIGFycmF5CiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8VD4gYm9vbGVhbiBjb250YWlucyhUW10gYXJyYXksIFQgdmFsdWUpIHsKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBib29sZWFuIGNvbnRhaW5zKEBOdWxsYWJsZSBUW10gYXJyYXksIFQgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIGluZGV4T2YoYXJyYXksIHZhbHVlKSAhPSAtMTsKICAgICB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQAogICAgICAqIFJldHVybiBmaXJzdCBpbmRleCBvZiB7QGNvZGUgdmFsdWV9IGluIHtAY29kZSBhcnJheX0sIG9yIHtAY29kZSAtMX0gaWYKICAgICAgKiBub3QgZm91bmQuCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8VD4gaW50IGluZGV4T2YoVFtdIGFycmF5LCBUIHZhbHVlKSB7CisgICAgcHVibGljIHN0YXRpYyA8VD4gaW50IGluZGV4T2YoQE51bGxhYmxlIFRbXSBhcnJheSwgVCB2YWx1ZSkgewogICAgICAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIC0xOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoT2JqZWN0cy5lcXVhbHMoYXJyYXlbaV0sIHZhbHVlKSkgcmV0dXJuIGk7CkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAvKioKICAgICAgKiBUZXN0IGlmIGFsbCB7QGNvZGUgY2hlY2t9IGl0ZW1zIGFyZSBjb250YWluZWQgaW4ge0Bjb2RlIGFycmF5fS4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIDxUPiBib29sZWFuIGNvbnRhaW5zQWxsKFRbXSBhcnJheSwgVFtdIGNoZWNrKSB7CisgICAgcHVibGljIHN0YXRpYyA8VD4gYm9vbGVhbiBjb250YWluc0FsbChATnVsbGFibGUgVFtdIGFycmF5LCBUW10gY2hlY2spIHsKICAgICAgICAgaWYgKGNoZWNrID09IG51bGwpIHJldHVybiB0cnVlOwogICAgICAgICBmb3IgKFQgY2hlY2tJdGVtIDogY2hlY2spIHsKICAgICAgICAgICAgIGlmICghY29udGFpbnMoYXJyYXksIGNoZWNrSXRlbSkpIHsKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY29udGFpbnMoaW50W10gYXJyYXksIGludCB2YWx1ZSkgeworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjb250YWlucyhATnVsbGFibGUgaW50W10gYXJyYXksIGludCB2YWx1ZSkgewogICAgICAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGludCBlbGVtZW50IDogYXJyYXkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IHZhbHVlKSB7CkBAIC0xOTUsNyArMTk1LDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjb250YWlucyhsb25nW10gYXJyYXksIGxvbmcgdmFsdWUpIHsKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY29udGFpbnMoQE51bGxhYmxlIGxvbmdbXSBhcnJheSwgbG9uZyB2YWx1ZSkgewogICAgICAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxvbmcgZWxlbWVudCA6IGFycmF5KSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSB2YWx1ZSkgewpAQCAtMjA1LDEwICsyMDUsMTIgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHB1YmxpYyBzdGF0aWMgbG9uZyB0b3RhbChsb25nW10gYXJyYXkpIHsKKyAgICBwdWJsaWMgc3RhdGljIGxvbmcgdG90YWwoQE51bGxhYmxlIGxvbmdbXSBhcnJheSkgewogICAgICAgICBsb25nIHRvdGFsID0gMDsKLSAgICAgICAgZm9yIChsb25nIHZhbHVlIDogYXJyYXkpIHsKLSAgICAgICAgICAgIHRvdGFsICs9IHZhbHVlOworICAgICAgICBpZiAoYXJyYXkgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChsb25nIHZhbHVlIDogYXJyYXkpIHsKKyAgICAgICAgICAgICAgICB0b3RhbCArPSB2YWx1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gdG90YWw7CiAgICAgfQpAQCAtMzY2LDExICszNjgsMTEgQEAKICAgICAgICAgcmV0dXJuIGN1cjsKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIGxvbmdbXSBjbG9uZU9yTnVsbChsb25nW10gYXJyYXkpIHsKKyAgICBwdWJsaWMgc3RhdGljIEBOdWxsYWJsZSBsb25nW10gY2xvbmVPck51bGwoQE51bGxhYmxlIGxvbmdbXSBhcnJheSkgewogICAgICAgICByZXR1cm4gKGFycmF5ICE9IG51bGwpID8gYXJyYXkuY2xvbmUoKSA6IG51bGw7CiAgICAgfQogCi0gICAgcHVibGljIHN0YXRpYyA8VD4gQXJyYXlTZXQ8VD4gYWRkKEFycmF5U2V0PFQ+IGN1ciwgVCB2YWwpIHsKKyAgICBwdWJsaWMgc3RhdGljIEBOb25OdWxsIDxUPiBBcnJheVNldDxUPiBhZGQoQE51bGxhYmxlIEFycmF5U2V0PFQ+IGN1ciwgVCB2YWwpIHsKICAgICAgICAgaWYgKGN1ciA9PSBudWxsKSB7CiAgICAgICAgICAgICBjdXIgPSBuZXcgQXJyYXlTZXQ8PigpOwogICAgICAgICB9CkBAIC0zNzgsNyArMzgwLDcgQEAKICAgICAgICAgcmV0dXJuIGN1cjsKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIDxUPiBBcnJheVNldDxUPiByZW1vdmUoQXJyYXlTZXQ8VD4gY3VyLCBUIHZhbCkgeworICAgIHB1YmxpYyBzdGF0aWMgQE51bGxhYmxlIDxUPiBBcnJheVNldDxUPiByZW1vdmUoQE51bGxhYmxlIEFycmF5U2V0PFQ+IGN1ciwgVCB2YWwpIHsKICAgICAgICAgaWYgKGN1ciA9PSBudWxsKSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpAQCAtMzkwLDExICszOTIsMTEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHB1YmxpYyBzdGF0aWMgPFQ+IGJvb2xlYW4gY29udGFpbnMoQXJyYXlTZXQ8VD4gY3VyLCBUIHZhbCkgeworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IGJvb2xlYW4gY29udGFpbnMoQE51bGxhYmxlIEFycmF5U2V0PFQ+IGN1ciwgVCB2YWwpIHsKICAgICAgICAgcmV0dXJuIChjdXIgIT0gbnVsbCkgPyBjdXIuY29udGFpbnModmFsKSA6IGZhbHNlOwogICAgIH0KIAotICAgIHB1YmxpYyBzdGF0aWMgPFQ+IEFycmF5TGlzdDxUPiBhZGQoQXJyYXlMaXN0PFQ+IGN1ciwgVCB2YWwpIHsKKyAgICBwdWJsaWMgc3RhdGljIEBOb25OdWxsIDxUPiBBcnJheUxpc3Q8VD4gYWRkKEBOdWxsYWJsZSBBcnJheUxpc3Q8VD4gY3VyLCBUIHZhbCkgewogICAgICAgICBpZiAoY3VyID09IG51bGwpIHsKICAgICAgICAgICAgIGN1ciA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgICB9CkBAIC00MDIsNyArNDA0LDcgQEAKICAgICAgICAgcmV0dXJuIGN1cjsKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIDxUPiBBcnJheUxpc3Q8VD4gcmVtb3ZlKEFycmF5TGlzdDxUPiBjdXIsIFQgdmFsKSB7CisgICAgcHVibGljIHN0YXRpYyBATnVsbGFibGUgPFQ+IEFycmF5TGlzdDxUPiByZW1vdmUoQE51bGxhYmxlIEFycmF5TGlzdDxUPiBjdXIsIFQgdmFsKSB7CiAgICAgICAgIGlmIChjdXIgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KQEAgLTQxNCw3ICs0MTYsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHVibGljIHN0YXRpYyA8VD4gYm9vbGVhbiBjb250YWlucyhBcnJheUxpc3Q8VD4gY3VyLCBUIHZhbCkgeworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IGJvb2xlYW4gY29udGFpbnMoQE51bGxhYmxlIEFycmF5TGlzdDxUPiBjdXIsIFQgdmFsKSB7CiAgICAgICAgIHJldHVybiAoY3VyICE9IG51bGwpID8gY3VyLmNvbnRhaW5zKHZhbCkgOiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC91dGlsL0xpbmVCcmVha0J1ZmZlcmVkV3JpdGVyLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9MaW5lQnJlYWtCdWZmZXJlZFdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzFlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9MaW5lQnJlYWtCdWZmZXJlZFdyaXRlci5qYXZhCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsOworCitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLldyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCisvKioKKyAqIEEgd3JpdGVyIHRoYXQgYnJlYWtzIHVwIGl0cyBvdXRwdXQgaW50byBjaHVua3MgYmVmb3JlIHdyaXRpbmcgdG8gaXRzIG91dCB3cml0ZXIsCisgKiBhbmQgd2hpY2ggaXMgbGluZWJyZWFrIGF3YXJlLCBpLmUuLCBjaHVua3Mgd2lsbCBjcmVhdGVkIGFsb25nIGxpbmUgYnJlYWtzLCBpZgorICogcG9zc2libGUuCisgKgorICogTm90ZTogdGhpcyBjbGFzcyBpcyBub3QgdGhyZWFkLXNhZmUuCisgKi8KK3B1YmxpYyBjbGFzcyBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlciBleHRlbmRzIFByaW50V3JpdGVyIHsKKworICAgIC8qKgorICAgICAqIEEgYnVmZmVyIHRvIGNvbGxlY3QgZGF0YSB1bnRpbCB0aGUgYnVmZmVyIHNpemUgaXMgcmVhY2hlZC4KKyAgICAgKgorICAgICAqIE5vdGU6IHdlIG1hbmFnZSBhIGNoYXJbXSBvdXJzZWx2ZXMgdG8gYXZvaWQgYW4gYWxsb2NhdGlvbiB3aGVuIHByaW50aW5nIHRvIHRoZQorICAgICAqICAgICAgIG91dCB3cml0ZXIuIE90aGVyd2lzZSBhIFN0cmluZ0J1aWxkZXIgd291bGQgaGF2ZSBiZWVuIHNpbXBsZXIgdG8gdXNlLgorICAgICAqLworICAgIHByaXZhdGUgY2hhcltdIGJ1ZmZlcjsKKworICAgIC8qKgorICAgICAqIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZnJlZSBlbGVtZW50IGluIHRoZSBidWZmZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgYnVmZmVySW5kZXg7CisKKyAgICAvKioKKyAgICAgKiBUaGUgY2h1bmsgc2l6ZSAoPW1heGltdW0gYnVmZmVyIHNpemUpIHRvIHVzZSBmb3IgdGhpcyB3cml0ZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgYnVmZmVyU2l6ZTsKKworCisgICAgLyoqCisgICAgICogSW5kZXggb2YgdGhlIGxhc3QgbmV3bGluZSBjaGFyYWN0ZXIgZGlzY292ZXJlZCBpbiB0aGUgYnVmZmVyLiBUaGUgd3JpdGVyIHdpbGwgdHJ5CisgICAgICogdG8gc3BsaXQgdGhlcmUuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGFzdE5ld2xpbmUgPSAtMTsKKworICAgIC8qKgorICAgICAqIFRoZSBsaW5lIHNlcGFyYXRvciBmb3IgcHJpbnRsbigpLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGxpbmVTZXBhcmF0b3I7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgbGluZWJyZWFrLWF3YXJlIGJ1ZmZlcmVkIHdyaXRlciB3aXRoIHRoZSBnaXZlbiBvdXRwdXQgYW5kIGJ1ZmZlcgorICAgICAqIHNpemUuIFRoZSBpbml0aWFsIGNhcGFjaXR5IHdpbGwgYmUgYSBkZWZhdWx0IHZhbHVlLgorICAgICAqIEBwYXJhbSBvdXQgVGhlIHdyaXRlciB0byB3cml0ZSB0by4KKyAgICAgKiBAcGFyYW0gYnVmZmVyU2l6ZSBUaGUgbWF4aW11bSBidWZmZXIgc2l6ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIoV3JpdGVyIG91dCwgaW50IGJ1ZmZlclNpemUpIHsKKyAgICAgICAgdGhpcyhvdXQsIGJ1ZmZlclNpemUsIDE2KTsgIC8vIDE2IGlzIHRoZSBkZWZhdWx0IHNpemUgb2YgYSBTdHJpbmdCdWlsZGVyIGJ1ZmZlci4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgbGluZWJyZWFrLWF3YXJlIGJ1ZmZlcmVkIHdyaXRlciB3aXRoIHRoZSBnaXZlbiBvdXRwdXQsIGJ1ZmZlcgorICAgICAqIHNpemUgYW5kIGluaXRpYWwgY2FwYWNpdHkuCisgICAgICogQHBhcmFtIG91dCBUaGUgd3JpdGVyIHRvIHdyaXRlIHRvLgorICAgICAqIEBwYXJhbSBidWZmZXJTaXplIFRoZSBtYXhpbXVtIGJ1ZmZlciBzaXplLgorICAgICAqIEBwYXJhbSBpbml0aWFsQ2FwYWNpdHkgVGhlIGluaXRpYWwgY2FwYWNpdHkgb2YgdGhlIGludGVybmFsIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIoV3JpdGVyIG91dCwgaW50IGJ1ZmZlclNpemUsIGludCBpbml0aWFsQ2FwYWNpdHkpIHsKKyAgICAgICAgc3VwZXIob3V0KTsKKyAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgY2hhcltNYXRoLm1pbihpbml0aWFsQ2FwYWNpdHksIGJ1ZmZlclNpemUpXTsKKyAgICAgICAgdGhpcy5idWZmZXJJbmRleCA9IDA7CisgICAgICAgIHRoaXMuYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgICAgIHRoaXMubGluZVNlcGFyYXRvciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgibGluZS5zZXBhcmF0b3IiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGbHVzaCB0aGUgY3VycmVudCBidWZmZXIuIFRoaXMgd2lsbCBpZ25vcmUgbGluZSBicmVha3MuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgZmx1c2goKSB7CisgICAgICAgIHdyaXRlQnVmZmVyKGJ1ZmZlckluZGV4KTsKKyAgICAgICAgYnVmZmVySW5kZXggPSAwOworICAgICAgICBzdXBlci5mbHVzaCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBjKSB7CisgICAgICAgIGlmIChidWZmZXJJbmRleCA8IGJ1ZmZlclNpemUpIHsKKyAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJJbmRleF0gPSAoY2hhciljOworICAgICAgICAgICAgYnVmZmVySW5kZXgrKzsKKyAgICAgICAgICAgIGlmICgoY2hhciljID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICBsYXN0TmV3bGluZSA9IGJ1ZmZlckluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgYW4gdW5jb21tb24gY2FzZSwgd2UgbW9zdGx5IGV4cGVjdCBjaGFyW10gYW5kIFN0cmluZy4gU28KKyAgICAgICAgICAgIC8vIGxldCB0aGUgY2h1bmtpbmcgYmUgaGFuZGxlZCBieSB0aGUgY2hhcltdIGNhc2UuCisgICAgICAgICAgICB3cml0ZShuZXcgY2hhcltdIHsgKGNoYXIpYyB9LCAwICwxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHByaW50bG4oKSB7CisgICAgICAgIHdyaXRlKGxpbmVTZXBhcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdyaXRlKGNoYXJbXSBidWYsIGludCBvZmYsIGludCBsZW4pIHsKKyAgICAgICAgd2hpbGUgKGJ1ZmZlckluZGV4ICsgbGVuID4gYnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgLy8gRmluZCB0aGUgbmV4dCBuZXdsaW5lIGluIHRoZSBidWZmZXIsIHNlZSBpZiB0aGF0J3MgYmVsb3cgdGhlIGxpbWl0LgorICAgICAgICAgICAgLy8gUmVwZWF0LgorICAgICAgICAgICAgaW50IG5leHROZXdMaW5lID0gLTE7CisgICAgICAgICAgICBpbnQgbWF4TGVuZ3RoID0gYnVmZmVyU2l6ZSAtIGJ1ZmZlckluZGV4OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChidWZbb2ZmICsgaV0gPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVySW5kZXggKyBpIDwgYnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5ld0xpbmUgPSBpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChuZXh0TmV3TGluZSAhPSAtMSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBhZGQgc29tZSBtb3JlIGRhdGEuCisgICAgICAgICAgICAgICAgYXBwZW5kVG9CdWZmZXIoYnVmLCBvZmYsIG5leHROZXdMaW5lKTsKKyAgICAgICAgICAgICAgICB3cml0ZUJ1ZmZlcihidWZmZXJJbmRleCk7CisgICAgICAgICAgICAgICAgYnVmZmVySW5kZXggPSAwOworICAgICAgICAgICAgICAgIGxhc3ROZXdsaW5lID0gLTE7CisgICAgICAgICAgICAgICAgb2ZmICs9IG5leHROZXdMaW5lICsgMTsKKyAgICAgICAgICAgICAgICBsZW4gLT0gbmV4dE5ld0xpbmUgKyAxOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0TmV3bGluZSAhPSAtMSkgeworICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgbGFzdCBuZXdsaW5lLgorICAgICAgICAgICAgICAgIHdyaXRlQnVmZmVyKGxhc3ROZXdsaW5lKTsKKyAgICAgICAgICAgICAgICByZW1vdmVGcm9tQnVmZmVyKGxhc3ROZXdsaW5lICsgMSk7CisgICAgICAgICAgICAgICAgbGFzdE5ld2xpbmUgPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT0ssIHRoZXJlIHdhcyBubyBuZXdsaW5lLCBicmVhayBhdCBhIGZ1bGwgYnVmZmVyLgorICAgICAgICAgICAgICAgIGludCByZXN0ID0gYnVmZmVyU2l6ZSAtIGJ1ZmZlckluZGV4OworICAgICAgICAgICAgICAgIGFwcGVuZFRvQnVmZmVyKGJ1Ziwgb2ZmLCByZXN0KTsKKyAgICAgICAgICAgICAgICB3cml0ZUJ1ZmZlcihidWZmZXJJbmRleCk7CisgICAgICAgICAgICAgICAgYnVmZmVySW5kZXggPSAwOworICAgICAgICAgICAgICAgIG9mZiArPSByZXN0OworICAgICAgICAgICAgICAgIGxlbiAtPSByZXN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIHRvIHRoZSBidWZmZXIsIHRoaXMgd2lsbCBmaXQuCisgICAgICAgIGlmIChsZW4gPiAwKSB7CisgICAgICAgICAgICAvLyBBZGQgdGhlIGNoYXJzLCBmaW5kIHRoZSBsYXN0IG5ld2xpbmUuCisgICAgICAgICAgICBhcHBlbmRUb0J1ZmZlcihidWYsIG9mZiwgbGVuKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGlmIChidWZbb2ZmICsgaV0gPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICBsYXN0TmV3bGluZSA9IGJ1ZmZlckluZGV4IC0gbGVuICsgaTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIHMsIGludCBvZmYsIGludCBsZW4pIHsKKyAgICAgICAgd2hpbGUgKGJ1ZmZlckluZGV4ICsgbGVuID4gYnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgLy8gRmluZCB0aGUgbmV4dCBuZXdsaW5lIGluIHRoZSBidWZmZXIsIHNlZSBpZiB0aGF0J3MgYmVsb3cgdGhlIGxpbWl0LgorICAgICAgICAgICAgLy8gUmVwZWF0LgorICAgICAgICAgICAgaW50IG5leHROZXdMaW5lID0gLTE7CisgICAgICAgICAgICBpbnQgbWF4TGVuZ3RoID0gYnVmZmVyU2l6ZSAtIGJ1ZmZlckluZGV4OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChzLmNoYXJBdChvZmYgKyBpKSA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXJJbmRleCArIGkgPCBidWZmZXJTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TmV3TGluZSA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5leHROZXdMaW5lICE9IC0xKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIGFkZCBzb21lIG1vcmUgZGF0YS4KKyAgICAgICAgICAgICAgICBhcHBlbmRUb0J1ZmZlcihzLCBvZmYsIG5leHROZXdMaW5lKTsKKyAgICAgICAgICAgICAgICB3cml0ZUJ1ZmZlcihidWZmZXJJbmRleCk7CisgICAgICAgICAgICAgICAgYnVmZmVySW5kZXggPSAwOworICAgICAgICAgICAgICAgIGxhc3ROZXdsaW5lID0gLTE7CisgICAgICAgICAgICAgICAgb2ZmICs9IG5leHROZXdMaW5lICsgMTsKKyAgICAgICAgICAgICAgICBsZW4gLT0gbmV4dE5ld0xpbmUgKyAxOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0TmV3bGluZSAhPSAtMSkgeworICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgbGFzdCBuZXdsaW5lLgorICAgICAgICAgICAgICAgIHdyaXRlQnVmZmVyKGxhc3ROZXdsaW5lKTsKKyAgICAgICAgICAgICAgICByZW1vdmVGcm9tQnVmZmVyKGxhc3ROZXdsaW5lICsgMSk7CisgICAgICAgICAgICAgICAgbGFzdE5ld2xpbmUgPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT0ssIHRoZXJlIHdhcyBubyBuZXdsaW5lLCBicmVhayBhdCBhIGZ1bGwgYnVmZmVyLgorICAgICAgICAgICAgICAgIGludCByZXN0ID0gYnVmZmVyU2l6ZSAtIGJ1ZmZlckluZGV4OworICAgICAgICAgICAgICAgIGFwcGVuZFRvQnVmZmVyKHMsIG9mZiwgcmVzdCk7CisgICAgICAgICAgICAgICAgd3JpdGVCdWZmZXIoYnVmZmVySW5kZXgpOworICAgICAgICAgICAgICAgIGJ1ZmZlckluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBvZmYgKz0gcmVzdDsKKyAgICAgICAgICAgICAgICBsZW4gLT0gcmVzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEFkZCB0byB0aGUgYnVmZmVyLCB0aGlzIHdpbGwgZml0LgorICAgICAgICBpZiAobGVuID4gMCkgeworICAgICAgICAgICAgLy8gQWRkIHRoZSBjaGFycywgZmluZCB0aGUgbGFzdCBuZXdsaW5lLgorICAgICAgICAgICAgYXBwZW5kVG9CdWZmZXIocywgb2ZmLCBsZW4pOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaWYgKHMuY2hhckF0KG9mZiArIGkpID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgbGFzdE5ld2xpbmUgPSBidWZmZXJJbmRleCAtIGxlbiArIGk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZCB0aGUgY2hhcmFjdGVycyB0byB0aGUgYnVmZmVyLiBUaGlzIHdpbGwgcG90ZW50aWFsbHkgcmVzaXplIHRoZSBidWZmZXIsCisgICAgICogYW5kIG1vdmUgdGhlIGluZGV4IGFsb25nLgorICAgICAqIEBwYXJhbSBidWYgVGhlIGNoYXJbXSBjb250YWluaW5nIHRoZSBkYXRhLgorICAgICAqIEBwYXJhbSBvZmYgVGhlIHN0YXJ0IGluZGV4IHRvIGNvcHkgZnJvbS4KKyAgICAgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb3B5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhcHBlbmRUb0J1ZmZlcihjaGFyW10gYnVmLCBpbnQgb2ZmLCBpbnQgbGVuKSB7CisgICAgICAgIGlmIChidWZmZXJJbmRleCArIGxlbiA+IGJ1ZmZlci5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVuc3VyZUNhcGFjaXR5KGJ1ZmZlckluZGV4ICsgbGVuKTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJ1Ziwgb2ZmLCBidWZmZXIsIGJ1ZmZlckluZGV4LCBsZW4pOworICAgICAgICBidWZmZXJJbmRleCArPSBsZW47CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kIHRoZSBjaGFyYWN0ZXJzIGZyb20gdGhlIGdpdmVuIHN0cmluZyB0byB0aGUgYnVmZmVyLiBUaGlzIHdpbGwgcG90ZW50aWFsbHkKKyAgICAgKiByZXNpemUgdGhlIGJ1ZmZlciwgYW5kIG1vdmUgdGhlIGluZGV4IGFsb25nLgorICAgICAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgc3VwcGx5aW5nIHRoZSBjaGFyYWN0ZXJzLgorICAgICAqIEBwYXJhbSBvZmYgVGhlIHN0YXJ0IGluZGV4IHRvIGNvcHkgZnJvbS4KKyAgICAgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb3B5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhcHBlbmRUb0J1ZmZlcihTdHJpbmcgcywgaW50IG9mZiwgaW50IGxlbikgeworICAgICAgICBpZiAoYnVmZmVySW5kZXggKyBsZW4gPiBidWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICBlbnN1cmVDYXBhY2l0eShidWZmZXJJbmRleCArIGxlbik7CisgICAgICAgIH0KKyAgICAgICAgcy5nZXRDaGFycyhvZmYsIG9mZiArIGxlbiwgYnVmZmVyLCBidWZmZXJJbmRleCk7CisgICAgICAgIGJ1ZmZlckluZGV4ICs9IGxlbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNpemUgdGhlIGJ1ZmZlci4gV2UgdXNlIHRoZSB1c3VhbCBkb3VibGUtdGhlLXNpemUgcGx1cyBjb25zdGFudCBzY2hlbWUgZm9yCisgICAgICogYW1vcnRpemVkIE8oMSkgaW5zZXJ0LiBOb3RlOiB3ZSBleHBlY3Qgc21hbGwgYnVmZmVycywgc28gdGhpcyB3b24ndCBjaGVjayBmb3IKKyAgICAgKiBvdmVyZmxvdy4KKyAgICAgKiBAcGFyYW0gY2FwYWNpdHkgVGhlIHNpemUgdG8gYmUgZW5zdXJlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZW5zdXJlQ2FwYWNpdHkoaW50IGNhcGFjaXR5KSB7CisgICAgICAgIGludCBuZXdTaXplID0gYnVmZmVyLmxlbmd0aCAqIDIgKyAyOworICAgICAgICBpZiAobmV3U2l6ZSA8IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBuZXdTaXplID0gY2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyID0gQXJyYXlzLmNvcHlPZihidWZmZXIsIG5ld1NpemUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgY2hhcmFjdGVycyB1cCB0byAoYW5kIGV4Y2x1ZGluZykgaW5kZXggaSBmcm9tIHRoZSBidWZmZXIuIFRoaXMgd2lsbAorICAgICAqIG5vdCByZXNpemUgdGhlIGJ1ZmZlciwgYnV0IHdpbGwgdXBkYXRlIGJ1ZmZlckluZGV4LgorICAgICAqIEBwYXJhbSBpIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byByZW1vdmUgZnJvbSB0aGUgZnJvbnQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlbW92ZUZyb21CdWZmZXIoaW50IGkpIHsKKyAgICAgICAgaW50IHJlc3QgPSBidWZmZXJJbmRleCAtIGk7CisgICAgICAgIGlmIChyZXN0ID4gMCkgeworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShidWZmZXIsIGJ1ZmZlckluZGV4IC0gcmVzdCwgYnVmZmVyLCAwLCByZXN0KTsKKyAgICAgICAgICAgIGJ1ZmZlckluZGV4ID0gcmVzdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckluZGV4ID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhlbHBlciBtZXRob2QsIHdyaXRlIHRoZSBnaXZlbiBwYXJ0IG9mIHRoZSBidWZmZXIsIFtzdGFydCxsZW5ndGgpLCB0byB0aGUgb3V0cHV0LgorICAgICAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGZsdXNoLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB3cml0ZUJ1ZmZlcihpbnQgbGVuZ3RoKSB7CisgICAgICAgIGlmIChsZW5ndGggPiAwKSB7CisgICAgICAgICAgICBzdXBlci53cml0ZShidWZmZXIsIDAsIGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9JRHJvcFBlcm1pc3Npb25zLmFpZGwgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9JRHJvcFBlcm1pc3Npb25zLmFpZGwKaW5kZXggODZkMjdlNy4uMjQzOGJkYSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSURyb3BQZXJtaXNzaW9ucy5haWRsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0lEcm9wUGVybWlzc2lvbnMuYWlkbApAQCAtMTYsMTEgKzE2LDEzIEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldzsKIAoraW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKKwogLyoqCiAgKiBJbnRlcmZhY2UgdG8gYWxsb3cgYSBkcm9wIHJlY2VpdmVyIHRvIHJlcXVlc3QgcGVybWlzc2lvbnMgZm9yIFVSSXMgcGFzc2VkIGFsb25nIHdpdGggQ2xpcERhdGEKICAqIGNvbnRhaW5lZCBpbiBEcmFnRXZlbnQuCiAgKi8KIGludGVyZmFjZSBJRHJvcFBlcm1pc3Npb25zIHsKLSAgICB2b2lkIHRha2UoKTsKKyAgICB2b2lkIHRha2UoSUJpbmRlciBhY3Rpdml0eVRva2VuKTsKICAgICB2b2lkIHJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvam5pL0FuZHJvaWQubWsgYi9jb3JlL2puaS9BbmRyb2lkLm1rCmluZGV4IGE5YTE5OGIuLmJjM2FjNWYgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL0FuZHJvaWQubWsKKysrIGIvY29yZS9qbmkvQW5kcm9pZC5tawpAQCAtNDMsNiArNDMsNyBAQAogICAgIGFuZHJvaWRfb3BlbmdsX0dMRVMzMC5jcHAgXAogICAgIGFuZHJvaWRfb3BlbmdsX0dMRVMzMS5jcHAgXAogICAgIGFuZHJvaWRfb3BlbmdsX0dMRVMzMUV4dC5jcHAgXAorICAgIGFuZHJvaWRfb3BlbmdsX0dMRVMzMi5jcHAgXAogICAgIGFuZHJvaWRfZGF0YWJhc2VfQ3Vyc29yV2luZG93LmNwcCBcCiAgICAgYW5kcm9pZF9kYXRhYmFzZV9TUUxpdGVDb21tb24uY3BwIFwKICAgICBhbmRyb2lkX2RhdGFiYXNlX1NRTGl0ZUNvbm5lY3Rpb24uY3BwIFwKQEAgLTE4NCw2ICsxODUsOCBAQAogICAgICQoY2FsbCBpbmNsdWRlLXBhdGgtZm9yLCBsaWJoYXJkd2FyZV9sZWdhY3kpL2hhcmR3YXJlX2xlZ2FjeSBcCiAgICAgJChUT1ApL2ZyYW1ld29ya3MvYXYvaW5jbHVkZSBcCiAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9qbmkgXAorICAgICQoVE9QKS9zeXN0ZW0vY29yZS9iYXNlL2luY2x1ZGUgXAorICAgICQoVE9QKS9zeXN0ZW0vY29yZS9pbmNsdWRlIFwKICAgICAkKFRPUCkvc3lzdGVtL21lZGlhL2NhbWVyYS9pbmNsdWRlIFwKICAgICAkKFRPUCkvc3lzdGVtL25ldGQvaW5jbHVkZSBcCiAgICAgZXh0ZXJuYWwvcGRmaXVtL2NvcmUvaW5jbHVkZS9mcGRmYXBpIFwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcCBiL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcAppbmRleCBmNmY0NWI1Li5jNDRhNjJjIDEwMDY0NAotLS0gYS9jb3JlL2puaS9BbmRyb2lkUnVudGltZS5jcHAKKysrIGIvY29yZS9qbmkvQW5kcm9pZFJ1bnRpbWUuY3BwCkBAIC04MCw2ICs4MCw3IEBACiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3BlbmdsX2puaV9HTEVTMzAoSk5JRW52KiBlbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX29wZW5nbF9qbmlfR0xFUzMxKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9vcGVuZ2xfam5pX0dMRVMzMUV4dChKTklFbnYqIGVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3BlbmdsX2puaV9HTEVTMzIoSk5JRW52KiBlbnYpOwogCiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhKEpOSUVudiAqZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEyX0NhbWVyYU1ldGFkYXRhKEpOSUVudiAqZW52KTsKQEAgLTEyODAsNiArMTI4MSw3IEBACiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29wZW5nbF9qbmlfR0xFUzMwKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfb3BlbmdsX2puaV9HTEVTMzEpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9vcGVuZ2xfam5pX0dMRVMzMUV4dCksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29wZW5nbF9qbmlfR0xFUzMyKSwKIAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9ncmFwaGljc19CaXRtYXApLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9ncmFwaGljc19CaXRtYXBGYWN0b3J5KSwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmNwcAppbmRleCA2ZWNiM2ZiLi44OGE1NmQyIDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9hcHBfTmF0aXZlQWN0aXZpdHkuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAKICAgICBib29sIG5lZWROYXRpdmVCcmlkZ2UgPSBmYWxzZTsKIAogICAgIHZvaWQqIGhhbmRsZSA9IE9wZW5OYXRpdmVMaWJyYXJ5KGVudiwgc2RrVmVyc2lvbiwgcGF0aFN0ciwgY2xhc3NMb2FkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeVBhdGgsIGlzb2xhdGlvblBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBsaWJyYXJ5UGF0aCwgaXNvbGF0aW9uUGF0aCk7CiAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChOYXRpdmVCcmlkZ2VJc1N1cHBvcnRlZChwYXRoU3RyKSkgewogICAgICAgICAgICAgaGFuZGxlID0gTmF0aXZlQnJpZGdlTG9hZExpYnJhcnkocGF0aFN0ciwgUlRMRF9MQVpZKTsKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfb3BlbmdsX0dMRVMzMi5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX29wZW5nbF9HTEVTMzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTFhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2puaS9hbmRyb2lkX29wZW5nbF9HTEVTMzIuY3BwCkBAIC0wLDAgKzEsMTk5OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZAorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1idXQtc2V0LXZhcmlhYmxlIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPEdMRVMzL2dsMzIuaD4KKyNpbmNsdWRlIDxqbmkuaD4KKyNpbmNsdWRlIDxKTklIZWxwLmg+CisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSA8dXRpbHMvbWlzYy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCitzdGF0aWMgaW50IGluaXRpYWxpemVkID0gMDsKKworc3RhdGljIGpjbGFzcyBuaW9BY2Nlc3NDbGFzczsKK3N0YXRpYyBqY2xhc3MgYnVmZmVyQ2xhc3M7CitzdGF0aWMgam1ldGhvZElEIGdldEJhc2VQb2ludGVySUQ7CitzdGF0aWMgam1ldGhvZElEIGdldEJhc2VBcnJheUlEOworc3RhdGljIGptZXRob2RJRCBnZXRCYXNlQXJyYXlPZmZzZXRJRDsKK3N0YXRpYyBqZmllbGRJRCBwb3NpdGlvbklEOworc3RhdGljIGpmaWVsZElEIGxpbWl0SUQ7CitzdGF0aWMgamZpZWxkSUQgZWxlbWVudFNpemVTaGlmdElEOworCisKKy8qIHNwZWNpYWwgY2FsbHMgaW1wbGVtZW50ZWQgaW4gQW5kcm9pZCdzIEdMRVMgd3JhcHBlciB1c2VkIHRvIG1vcmUKKyAqIGVmZmljaWVudGx5IGJvdW5kLWNoZWNrIHBhc3NlZCBhcnJheXMgKi8KK2V4dGVybiAiQyIgeworI2lmZGVmIEdMX1ZFUlNJT05fRVNfQ01fMV8xCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbENvbG9yUG9pbnRlckJvdW5kcyhHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsCisgICAgICAgIGNvbnN0IEdMdm9pZCAqcHRyLCBHTHNpemVpIGNvdW50KTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsTm9ybWFsUG9pbnRlckJvdW5kcyhHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsCisgICAgICAgIGNvbnN0IEdMdm9pZCAqcG9pbnRlciwgR0xzaXplaSBjb3VudCk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbFRleENvb3JkUG9pbnRlckJvdW5kcyhHTGludCBzaXplLCBHTGVudW0gdHlwZSwKKyAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlciwgR0xzaXplaSBjb3VudCk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleFBvaW50ZXJCb3VuZHMoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsCisgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIsIEdMc2l6ZWkgY291bnQpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xQb2ludFNpemVQb2ludGVyT0VTQm91bmRzKEdMZW51bSB0eXBlLAorICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyLCBHTHNpemVpIGNvdW50KTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4SW5kZXhQb2ludGVyT0VTQm91bmRzKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAorICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyLCBHTHNpemVpIGNvdW50KTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsV2VpZ2h0UG9pbnRlck9FU0JvdW5kcyhHTGludCBzaXplLCBHTGVudW0gdHlwZSwKKyAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlciwgR0xzaXplaSBjb3VudCk7CisjZW5kaWYKKyNpZmRlZiBHTF9FU19WRVJTSU9OXzJfMAorc3RhdGljIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyQm91bmRzKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKKyAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIsIEdMc2l6ZWkgY291bnQpIHsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5keCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKTsKK30KKyNlbmRpZgorI2lmZGVmIEdMX0VTX1ZFUlNJT05fM18wCitzdGF0aWMgdm9pZCBnbFZlcnRleEF0dHJpYklQb2ludGVyQm91bmRzKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKKyAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlciwgR0xzaXplaSBjb3VudCkgeworICAgIGdsVmVydGV4QXR0cmliSVBvaW50ZXIoaW5keCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKTsKK30KKyNlbmRpZgorfQorCisvKiBDYWNoZSBtZXRob2QgSURzIGVhY2ggdGltZSB0aGUgY2xhc3MgaXMgbG9hZGVkLiAqLworCitzdGF0aWMgdm9pZAorbmF0aXZlQ2xhc3NJbml0KEpOSUVudiAqX2VudiwgamNsYXNzIGdsSW1wbENsYXNzKQoreworICAgIGpjbGFzcyBuaW9BY2Nlc3NDbGFzc0xvY2FsID0gX2Vudi0+RmluZENsYXNzKCJqYXZhL25pby9OSU9BY2Nlc3MiKTsKKyAgICBuaW9BY2Nlc3NDbGFzcyA9IChqY2xhc3MpIF9lbnYtPk5ld0dsb2JhbFJlZihuaW9BY2Nlc3NDbGFzc0xvY2FsKTsKKworICAgIGpjbGFzcyBidWZmZXJDbGFzc0xvY2FsID0gX2Vudi0+RmluZENsYXNzKCJqYXZhL25pby9CdWZmZXIiKTsKKyAgICBidWZmZXJDbGFzcyA9IChqY2xhc3MpIF9lbnYtPk5ld0dsb2JhbFJlZihidWZmZXJDbGFzc0xvY2FsKTsKKworICAgIGdldEJhc2VQb2ludGVySUQgPSBfZW52LT5HZXRTdGF0aWNNZXRob2RJRChuaW9BY2Nlc3NDbGFzcywKKyAgICAgICAgICAgICJnZXRCYXNlUG9pbnRlciIsICIoTGphdmEvbmlvL0J1ZmZlcjspSiIpOworICAgIGdldEJhc2VBcnJheUlEID0gX2Vudi0+R2V0U3RhdGljTWV0aG9kSUQobmlvQWNjZXNzQ2xhc3MsCisgICAgICAgICAgICAiZ2V0QmFzZUFycmF5IiwgIihMamF2YS9uaW8vQnVmZmVyOylMamF2YS9sYW5nL09iamVjdDsiKTsKKyAgICBnZXRCYXNlQXJyYXlPZmZzZXRJRCA9IF9lbnYtPkdldFN0YXRpY01ldGhvZElEKG5pb0FjY2Vzc0NsYXNzLAorICAgICAgICAgICAgImdldEJhc2VBcnJheU9mZnNldCIsICIoTGphdmEvbmlvL0J1ZmZlcjspSSIpOworCisgICAgcG9zaXRpb25JRCA9IF9lbnYtPkdldEZpZWxkSUQoYnVmZmVyQ2xhc3MsICJwb3NpdGlvbiIsICJJIik7CisgICAgbGltaXRJRCA9IF9lbnYtPkdldEZpZWxkSUQoYnVmZmVyQ2xhc3MsICJsaW1pdCIsICJJIik7CisgICAgZWxlbWVudFNpemVTaGlmdElEID0KKyAgICAgICAgX2Vudi0+R2V0RmllbGRJRChidWZmZXJDbGFzcywgIl9lbGVtZW50U2l6ZVNoaWZ0IiwgIkkiKTsKK30KKworc3RhdGljIHZvaWQgKgorZ2V0UG9pbnRlcihKTklFbnYgKl9lbnYsIGpvYmplY3QgYnVmZmVyLCBqYXJyYXkgKmFycmF5LCBqaW50ICpyZW1haW5pbmcsIGppbnQgKm9mZnNldCkKK3sKKyAgICBqaW50IHBvc2l0aW9uOworICAgIGppbnQgbGltaXQ7CisgICAgamludCBlbGVtZW50U2l6ZVNoaWZ0OworICAgIGpsb25nIHBvaW50ZXI7CisKKyAgICBwb3NpdGlvbiA9IF9lbnYtPkdldEludEZpZWxkKGJ1ZmZlciwgcG9zaXRpb25JRCk7CisgICAgbGltaXQgPSBfZW52LT5HZXRJbnRGaWVsZChidWZmZXIsIGxpbWl0SUQpOworICAgIGVsZW1lbnRTaXplU2hpZnQgPSBfZW52LT5HZXRJbnRGaWVsZChidWZmZXIsIGVsZW1lbnRTaXplU2hpZnRJRCk7CisgICAgKnJlbWFpbmluZyA9IChsaW1pdCAtIHBvc2l0aW9uKSA8PCBlbGVtZW50U2l6ZVNoaWZ0OworICAgIHBvaW50ZXIgPSBfZW52LT5DYWxsU3RhdGljTG9uZ01ldGhvZChuaW9BY2Nlc3NDbGFzcywKKyAgICAgICAgICAgIGdldEJhc2VQb2ludGVySUQsIGJ1ZmZlcik7CisgICAgaWYgKHBvaW50ZXIgIT0gMEwpIHsKKyAgICAgICAgKmFycmF5ID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBvaW50ZXIpOworICAgIH0KKworICAgICphcnJheSA9IChqYXJyYXkpIF9lbnYtPkNhbGxTdGF0aWNPYmplY3RNZXRob2QobmlvQWNjZXNzQ2xhc3MsCisgICAgICAgICAgICBnZXRCYXNlQXJyYXlJRCwgYnVmZmVyKTsKKyAgICAqb2Zmc2V0ID0gX2Vudi0+Q2FsbFN0YXRpY0ludE1ldGhvZChuaW9BY2Nlc3NDbGFzcywKKyAgICAgICAgICAgIGdldEJhc2VBcnJheU9mZnNldElELCBidWZmZXIpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NsYXNzIEJ5dGVBcnJheUdldHRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQqIEdldChKTklFbnYqIF9lbnYsIGpieXRlQXJyYXkgYXJyYXksIGpib29sZWFuKiBpc19jb3B5KSB7CisgICAgICAgIHJldHVybiBfZW52LT5HZXRCeXRlQXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIEJvb2xlYW5BcnJheUdldHRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQqIEdldChKTklFbnYqIF9lbnYsIGpib29sZWFuQXJyYXkgYXJyYXksIGpib29sZWFuKiBpc19jb3B5KSB7CisgICAgICAgIHJldHVybiBfZW52LT5HZXRCb29sZWFuQXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIENoYXJBcnJheUdldHRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQqIEdldChKTklFbnYqIF9lbnYsIGpjaGFyQXJyYXkgYXJyYXksIGpib29sZWFuKiBpc19jb3B5KSB7CisgICAgICAgIHJldHVybiBfZW52LT5HZXRDaGFyQXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIFNob3J0QXJyYXlHZXR0ZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkKiBHZXQoSk5JRW52KiBfZW52LCBqc2hvcnRBcnJheSBhcnJheSwgamJvb2xlYW4qIGlzX2NvcHkpIHsKKyAgICAgICAgcmV0dXJuIF9lbnYtPkdldFNob3J0QXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIEludEFycmF5R2V0dGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCogR2V0KEpOSUVudiogX2VudiwgamludEFycmF5IGFycmF5LCBqYm9vbGVhbiogaXNfY29weSkgeworICAgICAgICByZXR1cm4gX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIExvbmdBcnJheUdldHRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQqIEdldChKTklFbnYqIF9lbnYsIGpsb25nQXJyYXkgYXJyYXksIGpib29sZWFuKiBpc19jb3B5KSB7CisgICAgICAgIHJldHVybiBfZW52LT5HZXRMb25nQXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIEZsb2F0QXJyYXlHZXR0ZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkKiBHZXQoSk5JRW52KiBfZW52LCBqZmxvYXRBcnJheSBhcnJheSwgamJvb2xlYW4qIGlzX2NvcHkpIHsKKyAgICAgICAgcmV0dXJuIF9lbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKK2NsYXNzIERvdWJsZUFycmF5R2V0dGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCogR2V0KEpOSUVudiogX2VudiwgamRvdWJsZUFycmF5IGFycmF5LCBqYm9vbGVhbiogaXNfY29weSkgeworICAgICAgICByZXR1cm4gX2Vudi0+R2V0RG91YmxlQXJyYXlFbGVtZW50cyhhcnJheSwgaXNfY29weSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSlRZUEVBUlJBWSwgdHlwZW5hbWUgQVJSQVlHRVRURVI+CitzdGF0aWMgdm9pZCoKK2dldEFycmF5UG9pbnRlcihKTklFbnYgKl9lbnYsIEpUWVBFQVJSQVkgYXJyYXksIGpib29sZWFuKiBpc19jb3B5KSB7CisgICAgcmV0dXJuIEFSUkFZR0VUVEVSOjpHZXQoX2VudiwgYXJyYXksIGlzX2NvcHkpOworfQorCitjbGFzcyBCeXRlQXJyYXlSZWxlYXNlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgUmVsZWFzZShKTklFbnYqIF9lbnYsIGpieXRlQXJyYXkgYXJyYXksIGpieXRlKiBkYXRhLCBqYm9vbGVhbiBjb21taXQpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzKGFycmF5LCBkYXRhLCBjb21taXQgPyAwIDogSk5JX0FCT1JUKTsKKyAgICB9Cit9OworY2xhc3MgQm9vbGVhbkFycmF5UmVsZWFzZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIFJlbGVhc2UoSk5JRW52KiBfZW52LCBqYm9vbGVhbkFycmF5IGFycmF5LCBqYm9vbGVhbiogZGF0YSwgamJvb2xlYW4gY29tbWl0KSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VCb29sZWFuQXJyYXlFbGVtZW50cyhhcnJheSwgZGF0YSwgY29tbWl0ID8gMCA6IEpOSV9BQk9SVCk7CisgICAgfQorfTsKK2NsYXNzIENoYXJBcnJheVJlbGVhc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBSZWxlYXNlKEpOSUVudiogX2VudiwgamNoYXJBcnJheSBhcnJheSwgamNoYXIqIGRhdGEsIGpib29sZWFuIGNvbW1pdCkgeworICAgICAgICBfZW52LT5SZWxlYXNlQ2hhckFycmF5RWxlbWVudHMoYXJyYXksIGRhdGEsIGNvbW1pdCA/IDAgOiBKTklfQUJPUlQpOworICAgIH0KK307CitjbGFzcyBTaG9ydEFycmF5UmVsZWFzZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIFJlbGVhc2UoSk5JRW52KiBfZW52LCBqc2hvcnRBcnJheSBhcnJheSwganNob3J0KiBkYXRhLCBqYm9vbGVhbiBjb21taXQpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZVNob3J0QXJyYXlFbGVtZW50cyhhcnJheSwgZGF0YSwgY29tbWl0ID8gMCA6IEpOSV9BQk9SVCk7CisgICAgfQorfTsKK2NsYXNzIEludEFycmF5UmVsZWFzZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIFJlbGVhc2UoSk5JRW52KiBfZW52LCBqaW50QXJyYXkgYXJyYXksIGppbnQqIGRhdGEsIGpib29sZWFuIGNvbW1pdCkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhhcnJheSwgZGF0YSwgY29tbWl0ID8gMCA6IEpOSV9BQk9SVCk7CisgICAgfQorfTsKK2NsYXNzIExvbmdBcnJheVJlbGVhc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBSZWxlYXNlKEpOSUVudiogX2VudiwgamxvbmdBcnJheSBhcnJheSwgamxvbmcqIGRhdGEsIGpib29sZWFuIGNvbW1pdCkgeworICAgICAgICBfZW52LT5SZWxlYXNlTG9uZ0FycmF5RWxlbWVudHMoYXJyYXksIGRhdGEsIGNvbW1pdCA/IDAgOiBKTklfQUJPUlQpOworICAgIH0KK307CitjbGFzcyBGbG9hdEFycmF5UmVsZWFzZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIFJlbGVhc2UoSk5JRW52KiBfZW52LCBqZmxvYXRBcnJheSBhcnJheSwgamZsb2F0KiBkYXRhLCBqYm9vbGVhbiBjb21taXQpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cyhhcnJheSwgZGF0YSwgY29tbWl0ID8gMCA6IEpOSV9BQk9SVCk7CisgICAgfQorfTsKK2NsYXNzIERvdWJsZUFycmF5UmVsZWFzZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIFJlbGVhc2UoSk5JRW52KiBfZW52LCBqZG91YmxlQXJyYXkgYXJyYXksIGpkb3VibGUqIGRhdGEsIGpib29sZWFuIGNvbW1pdCkgeworICAgICAgICBfZW52LT5SZWxlYXNlRG91YmxlQXJyYXlFbGVtZW50cyhhcnJheSwgZGF0YSwgY29tbWl0ID8gMCA6IEpOSV9BQk9SVCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSlRZUEVBUlJBWSwgdHlwZW5hbWUgTlRZUEVBUlJBWSwgdHlwZW5hbWUgQVJSQVlSRUxFQVNFUj4KK3N0YXRpYyB2b2lkCityZWxlYXNlQXJyYXlQb2ludGVyKEpOSUVudiAqX2VudiwgSlRZUEVBUlJBWSBhcnJheSwgTlRZUEVBUlJBWSBkYXRhLCBqYm9vbGVhbiBjb21taXQpIHsKKyAgICBBUlJBWVJFTEVBU0VSOjpSZWxlYXNlKF9lbnYsIGFycmF5LCBkYXRhLCBjb21taXQpOworfQorCitzdGF0aWMgdm9pZAorcmVsZWFzZVBvaW50ZXIoSk5JRW52ICpfZW52LCBqYXJyYXkgYXJyYXksIHZvaWQgKmRhdGEsIGpib29sZWFuIGNvbW1pdCkKK3sKKyAgICBfZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChhcnJheSwgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0ID8gMCA6IEpOSV9BQk9SVCk7Cit9CisKK3N0YXRpYyB2b2lkICoKK2dldERpcmVjdEJ1ZmZlclBvaW50ZXIoSk5JRW52ICpfZW52LCBqb2JqZWN0IGJ1ZmZlcikgeworICAgIGNoYXIqIGJ1ZiA9IChjaGFyKikgX2Vudi0+R2V0RGlyZWN0QnVmZmVyQWRkcmVzcyhidWZmZXIpOworICAgIGlmIChidWYpIHsKKyAgICAgICAgamludCBwb3NpdGlvbiA9IF9lbnYtPkdldEludEZpZWxkKGJ1ZmZlciwgcG9zaXRpb25JRCk7CisgICAgICAgIGppbnQgZWxlbWVudFNpemVTaGlmdCA9IF9lbnYtPkdldEludEZpZWxkKGJ1ZmZlciwgZWxlbWVudFNpemVTaGlmdElEKTsKKyAgICAgICAgYnVmICs9IHBvc2l0aW9uIDw8IGVsZW1lbnRTaXplU2hpZnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCB1c2UgYSBuYXRpdmUgb3JkZXIgZGlyZWN0IEJ1ZmZlciIpOworICAgIH0KKyAgICByZXR1cm4gKHZvaWQqKSBidWY7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFsdWVzIGdsR2V0IHJldHVybnMgZm9yIGEgZ2l2ZW4gcG5hbWUuCisgKgorICogVGhlIGNvZGUgYmVsb3cgaXMgd3JpdHRlbiBzdWNoIHRoYXQgcG5hbWVzIHJlcXVpcmluZyBvbmx5IG9uZSB2YWx1ZXMKKyAqIGFyZSB0aGUgZGVmYXVsdCAoYW5kIGFyZSBub3QgZXhwbGljaXRlbHkgdGVzdGVkIGZvcikuIFRoaXMgbWFrZXMgdGhlCisgKiBjaGVja2luZyBjb2RlIG11Y2ggc2hvcnRlci9yZWFkYWJsZS9lZmZpY2llbnQuCisgKgorICogVGhpcyBtZWFucyB0aGF0IHVua25vd24gcG5hbWVzIChlLmcuOiBleHRlbnNpb25zKSB3aWxsIGRlZmF1bHQgdG8gMS4gSWYKKyAqIHRoYXQgdW5rbm93biBwbmFtZSBuZWVkcyBtb3JlIHRoYW4gMSB2YWx1ZSwgdGhlbiB0aGUgdmFsaWRhdGlvbiBjaGVjaworICogaXMgaW5jb21wbGV0ZSBhbmQgdGhlIGFwcCBtYXkgY3Jhc2ggaWYgaXQgcGFzc2VkIHRoZSB3cm9uZyBudW1iZXIgcGFyYW1zLgorICovCitzdGF0aWMgaW50IGdldE5lZWRlZENvdW50KEdMaW50IHBuYW1lKSB7CisgICAgaW50IG5lZWRlZCA9IDE7CisjaWZkZWYgR0xfRVNfVkVSU0lPTl8yXzAKKyAgICAvLyBHTEVTIDIueCBwbmFtZXMKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgICAgIGNhc2UgR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgorICAgICAgICBjYXNlIEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRToKKyAgICAgICAgICAgIG5lZWRlZCA9IDI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgorICAgICAgICBjYXNlIEdMX0NPTE9SX0NMRUFSX1ZBTFVFOgorICAgICAgICBjYXNlIEdMX0NPTE9SX1dSSVRFTUFTSzoKKyAgICAgICAgY2FzZSBHTF9TQ0lTU09SX0JPWDoKKyAgICAgICAgY2FzZSBHTF9WSUVXUE9SVDoKKyAgICAgICAgICAgIG5lZWRlZCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMsICZuZWVkZWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6CisgICAgICAgICAgICBnbEdldEludGVnZXJ2KEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMsICZuZWVkZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBHTF9WRVJTSU9OX0VTX0NNXzFfMQorICAgIC8vIEdMRVMgMS54IHBuYW1lcworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6CisgICAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOgorICAgICAgICBjYXNlIEdMX1NNT09USF9MSU5FX1dJRFRIX1JBTkdFOgorICAgICAgICBjYXNlIEdMX1NNT09USF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgICAgICAgbmVlZGVkID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9OT1JNQUw6CisgICAgICAgIGNhc2UgR0xfUE9JTlRfRElTVEFOQ0VfQVRURU5VQVRJT046CisgICAgICAgICAgICBuZWVkZWQgPSAzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6CisgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9DT0xPUjoKKyAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1RFWFRVUkVfQ09PUkRTOgorICAgICAgICBjYXNlIEdMX0ZPR19DT0xPUjoKKyAgICAgICAgY2FzZSBHTF9MSUdIVF9NT0RFTF9BTUJJRU5UOgorICAgICAgICBjYXNlIEdMX1NDSVNTT1JfQk9YOgorICAgICAgICBjYXNlIEdMX1ZJRVdQT1JUOgorICAgICAgICAgICAgbmVlZGVkID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfTU9ERUxWSUVXX01BVFJJWDoKKyAgICAgICAgY2FzZSBHTF9QUk9KRUNUSU9OX01BVFJJWDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BVFJJWDoKKyAgICAgICAgICAgIG5lZWRlZCA9IDE2OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKKyAgICAgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTLCAmbmVlZGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBuZWVkZWQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBKVFlQRUFSUkFZLCB0eXBlbmFtZSBBUlJBWUdFVFRFUiwgdHlwZW5hbWUgTlRZUEVBUlJBWSwKKyAgICAgICAgICB0eXBlbmFtZSBBUlJBWVJFTEVBU0VSLCB0eXBlbmFtZSBDVFlQRSwgdm9pZCBHRVQoR0xlbnVtLCBDVFlQRSopPgorc3RhdGljIHZvaWQKK2dldAorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHBuYW1lLCBKVFlQRUFSUkFZIHBhcmFtc19yZWYsIGppbnQgb2Zmc2V0KSB7CisgICAgamludCBfZXhjZXB0aW9uID0gMDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvblR5cGU7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlOworICAgIENUWVBFICpwYXJhbXNfYmFzZSA9IChDVFlQRSAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBDVFlQRSAqcGFyYW1zID0gKENUWVBFICopIDA7CisgICAgaW50IF9uZWVkZWQgPSAwOworCisgICAgaWYgKCFwYXJhbXNfcmVmKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicGFyYW1zID09IG51bGwiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAib2Zmc2V0IDwgMCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgX3JlbWFpbmluZyA9IF9lbnYtPkdldEFycmF5TGVuZ3RoKHBhcmFtc19yZWYpIC0gb2Zmc2V0OworICAgIF9uZWVkZWQgPSBnZXROZWVkZWRDb3VudChwbmFtZSk7CisgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgdGhpcyBwbmFtZSwgd2UganVzdCBhc3N1bWUgdGhlIHVzZXIgcGFzc2VkCisgICAgLy8gYW4gYXJyYXkgb2YgdGhlIHJpZ2h0IHNpemUgLS0gdGhpcyBtaWdodCBoYXBwZW4gd2l0aCBleHRlbnNpb25zCisgICAgLy8gb3IgaWYgd2UgZm9yZ2V0IGFuIGVudW0gaGVyZS4KKyAgICBpZiAoX3JlbWFpbmluZyA8IF9uZWVkZWQpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJsZW5ndGggLSBvZmZzZXQgPCBuZWVkZWQiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHBhcmFtc19iYXNlID0gKENUWVBFICopIGdldEFycmF5UG9pbnRlcjxKVFlQRUFSUkFZLCBBUlJBWUdFVFRFUj4oCisgICAgICAgIF9lbnYsIHBhcmFtc19yZWYsIChqYm9vbGVhbiAqKTApOworICAgIHBhcmFtcyA9IHBhcmFtc19iYXNlICsgb2Zmc2V0OworCisgICAgR0VUKAorICAgICAgICAoR0xlbnVtKXBuYW1lLAorICAgICAgICAoQ1RZUEUgKilwYXJhbXMKKyAgICApOworCitleGl0OgorICAgIGlmIChwYXJhbXNfYmFzZSkgeworICAgICAgICByZWxlYXNlQXJyYXlQb2ludGVyPEpUWVBFQVJSQVksIE5UWVBFQVJSQVksIEFSUkFZUkVMRUFTRVI+KAorICAgICAgICAgICAgX2VudiwgcGFyYW1zX3JlZiwgcGFyYW1zX2Jhc2UsICFfZXhjZXB0aW9uKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIENUWVBFLCB0eXBlbmFtZSBKVFlQRUFSUkFZLCB0eXBlbmFtZSBBUlJBWUdFVFRFUiwgdHlwZW5hbWUgTlRZUEVBUlJBWSwKKyAgICAgICAgICB0eXBlbmFtZSBBUlJBWVJFTEVBU0VSLCB2b2lkIEdFVChHTGVudW0sIENUWVBFKik+CitzdGF0aWMgdm9pZAorZ2V0YXJyYXkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBwbmFtZSwgam9iamVjdCBwYXJhbXNfYnVmKSB7CisgICAgamludCBfZXhjZXB0aW9uID0gMDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvblR5cGU7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlOworICAgIEpUWVBFQVJSQVkgX2FycmF5ID0gKEpUWVBFQVJSQVkpIDA7CisgICAgamludCBfYnVmZmVyT2Zmc2V0ID0gKGppbnQpIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIENUWVBFICpwYXJhbXMgPSAoQ1RZUEUgKikgMDsKKyAgICBpbnQgX25lZWRlZCA9IDA7CisKKyAgICBwYXJhbXMgPSAoQ1RZUEUgKilnZXRQb2ludGVyKF9lbnYsIHBhcmFtc19idWYsIChqYXJyYXkqKSZfYXJyYXksICZfcmVtYWluaW5nLCAmX2J1ZmZlck9mZnNldCk7CisgICAgX3JlbWFpbmluZyAvPSBzaXplb2YoQ1RZUEUpOyAgICAvLyBjb252ZXJ0IGZyb20gYnl0ZXMgdG8gaXRlbSBjb3VudAorICAgIF9uZWVkZWQgPSBnZXROZWVkZWRDb3VudChwbmFtZSk7CisgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgdGhpcyBwbmFtZSwgd2UganVzdCBhc3N1bWUgdGhlIHVzZXIgcGFzc2VkCisgICAgLy8gYW4gYXJyYXkgb2YgdGhlIHJpZ2h0IHNpemUgLS0gdGhpcyBtaWdodCBoYXBwZW4gd2l0aCBleHRlbnNpb25zCisgICAgLy8gb3IgaWYgd2UgZm9yZ2V0IGFuIGVudW0gaGVyZS4KKyAgICBpZiAoX25lZWRlZD4wICYmIF9yZW1haW5pbmcgPCBfbmVlZGVkKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicmVtYWluaW5nKCkgPCBuZWVkZWQiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChwYXJhbXMgPT0gTlVMTCkgeworICAgICAgICBjaGFyICogX3BhcmFtc0Jhc2UgPSAoY2hhciAqKSBnZXRBcnJheVBvaW50ZXI8SlRZUEVBUlJBWSwgQVJSQVlHRVRURVI+KAorICAgICAgICAgICAgX2VudiwgX2FycmF5LCAoamJvb2xlYW4gKikgMCk7CisgICAgICAgIHBhcmFtcyA9IChDVFlQRSAqKSAoX3BhcmFtc0Jhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgR0VUKAorICAgICAgICAoR0xlbnVtKXBuYW1lLAorICAgICAgICAoQ1RZUEUgKilwYXJhbXMKKyAgICApOworCitleGl0OgorICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgcmVsZWFzZUFycmF5UG9pbnRlcjxKVFlQRUFSUkFZLCBOVFlQRUFSUkFZLCBBUlJBWVJFTEVBU0VSPigKKyAgICAgICAgICAgIF9lbnYsIF9hcnJheSwgKE5UWVBFQVJSQVkpcGFyYW1zLCBfZXhjZXB0aW9uID8gSk5JX0ZBTFNFIDogSk5JX1RSVUUpOworICAgIH0KKyAgICBpZiAoX2V4Y2VwdGlvbikgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCBfZXhjZXB0aW9uVHlwZSwgX2V4Y2VwdGlvbk1lc3NhZ2UpOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8qIHZvaWQgZ2xCbGVuZEJhcnJpZXIgKCB2b2lkICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsQmxlbmRCYXJyaWVyX18KKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcykgeworICAgIGdsQmxlbmRCYXJyaWVyKCk7Cit9CisKKy8qIHZvaWQgZ2xDb3B5SW1hZ2VTdWJEYXRhICggR0x1aW50IHNyY05hbWUsIEdMZW51bSBzcmNUYXJnZXQsIEdMaW50IHNyY0xldmVsLCBHTGludCBzcmNYLCBHTGludCBzcmNZLCBHTGludCBzcmNaLCBHTHVpbnQgZHN0TmFtZSwgR0xlbnVtIGRzdFRhcmdldCwgR0xpbnQgZHN0TGV2ZWwsIEdMaW50IGRzdFgsIEdMaW50IGRzdFksIEdMaW50IGRzdFosIEdMc2l6ZWkgc3JjV2lkdGgsIEdMc2l6ZWkgc3JjSGVpZ2h0LCBHTHNpemVpIHNyY0RlcHRoICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsQ29weUltYWdlU3ViRGF0YV9fSUlJSUlJSUlJSUlJSUlJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgc3JjTmFtZSwgamludCBzcmNUYXJnZXQsIGppbnQgc3JjTGV2ZWwsIGppbnQgc3JjWCwgamludCBzcmNZLCBqaW50IHNyY1osIGppbnQgZHN0TmFtZSwgamludCBkc3RUYXJnZXQsIGppbnQgZHN0TGV2ZWwsIGppbnQgZHN0WCwgamludCBkc3RZLCBqaW50IGRzdFosIGppbnQgc3JjV2lkdGgsIGppbnQgc3JjSGVpZ2h0LCBqaW50IHNyY0RlcHRoKSB7CisgICAgZ2xDb3B5SW1hZ2VTdWJEYXRhKAorICAgICAgICAoR0x1aW50KXNyY05hbWUsCisgICAgICAgIChHTGVudW0pc3JjVGFyZ2V0LAorICAgICAgICAoR0xpbnQpc3JjTGV2ZWwsCisgICAgICAgIChHTGludClzcmNYLAorICAgICAgICAoR0xpbnQpc3JjWSwKKyAgICAgICAgKEdMaW50KXNyY1osCisgICAgICAgIChHTHVpbnQpZHN0TmFtZSwKKyAgICAgICAgKEdMZW51bSlkc3RUYXJnZXQsCisgICAgICAgIChHTGludClkc3RMZXZlbCwKKyAgICAgICAgKEdMaW50KWRzdFgsCisgICAgICAgIChHTGludClkc3RZLAorICAgICAgICAoR0xpbnQpZHN0WiwKKyAgICAgICAgKEdMc2l6ZWkpc3JjV2lkdGgsCisgICAgICAgIChHTHNpemVpKXNyY0hlaWdodCwKKyAgICAgICAgKEdMc2l6ZWkpc3JjRGVwdGgKKyAgICApOworfQorCisvKiB2b2lkIGdsRGVidWdNZXNzYWdlQ29udHJvbCAoIEdMZW51bSBzb3VyY2UsIEdMZW51bSB0eXBlLCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqaWRzLCBHTGJvb2xlYW4gZW5hYmxlZCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbERlYnVnTWVzc2FnZUNvbnRyb2xfX0lJSUlfM0lJWgorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHNvdXJjZSwgamludCB0eXBlLCBqaW50IHNldmVyaXR5LCBqaW50IGNvdW50LCBqaW50QXJyYXkgaWRzX3JlZiwgamludCBvZmZzZXQsIGpib29sZWFuIGVuYWJsZWQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTHVpbnQgKmlkc19iYXNlID0gKEdMdWludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKmlkcyA9IChHTHVpbnQgKikgMDsKKworICAgIGlmICghaWRzX3JlZikgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gImlkcyA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gIm9mZnNldCA8IDAiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIF9yZW1haW5pbmcgPSBfZW52LT5HZXRBcnJheUxlbmd0aChpZHNfcmVmKSAtIG9mZnNldDsKKyAgICBpZiAoX3JlbWFpbmluZyA8IGNvdW50KSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAibGVuZ3RoIC0gb2Zmc2V0IDwgY291bnQgPCBuZWVkZWQiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlkc19iYXNlID0gKEdMdWludCAqKQorICAgICAgICBfZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKGlkc19yZWYsIChqYm9vbGVhbiAqKTApOworICAgIGlkcyA9IGlkc19iYXNlICsgb2Zmc2V0OworCisgICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sKAorICAgICAgICAoR0xlbnVtKXNvdXJjZSwKKyAgICAgICAgKEdMZW51bSl0eXBlLAorICAgICAgICAoR0xlbnVtKXNldmVyaXR5LAorICAgICAgICAoR0xzaXplaSljb3VudCwKKyAgICAgICAgKEdMdWludCAqKWlkcywKKyAgICAgICAgKEdMYm9vbGVhbillbmFibGVkCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAoaWRzX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMoaWRzX3JlZiwgKGppbnQqKWlkc19iYXNlLAorICAgICAgICAgICAgSk5JX0FCT1JUKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sICggR0xlbnVtIHNvdXJjZSwgR0xlbnVtIHR5cGUsIEdMZW51bSBzZXZlcml0eSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICppZHMsIEdMYm9vbGVhbiBlbmFibGVkICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsRGVidWdNZXNzYWdlQ29udHJvbF9fSUlJSUxqYXZhX25pb19JbnRCdWZmZXJfMloKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBzb3VyY2UsIGppbnQgdHlwZSwgamludCBzZXZlcml0eSwgamludCBjb3VudCwgam9iamVjdCBpZHNfYnVmLCBqYm9vbGVhbiBlbmFibGVkKSB7CisgICAgamludCBfZXhjZXB0aW9uID0gMDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvblR5cGUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uTWVzc2FnZSA9IE5VTEw7CisgICAgamludEFycmF5IF9hcnJheSA9IChqaW50QXJyYXkpIDA7CisgICAgamludCBfYnVmZmVyT2Zmc2V0ID0gKGppbnQpIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIEdMdWludCAqaWRzID0gKEdMdWludCAqKSAwOworCisgICAgaWRzID0gKEdMdWludCAqKWdldFBvaW50ZXIoX2VudiwgaWRzX2J1ZiwgKGphcnJheSopJl9hcnJheSwgJl9yZW1haW5pbmcsICZfYnVmZmVyT2Zmc2V0KTsKKyAgICBpZiAoX3JlbWFpbmluZyA8IGNvdW50KSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicmVtYWluaW5nKCkgPCBjb3VudCA8IG5lZWRlZCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKGlkcyA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfaWRzQmFzZSA9IChjaGFyICopX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgaWRzID0gKEdMdWludCAqKSAoX2lkc0Jhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sKAorICAgICAgICAoR0xlbnVtKXNvdXJjZSwKKyAgICAgICAgKEdMZW51bSl0eXBlLAorICAgICAgICAoR0xlbnVtKXNldmVyaXR5LAorICAgICAgICAoR0xzaXplaSljb3VudCwKKyAgICAgICAgKEdMdWludCAqKWlkcywKKyAgICAgICAgKEdMYm9vbGVhbillbmFibGVkCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAoX2FycmF5KSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGppbnQqKWlkcywgSk5JX0FCT1JUKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnQgKCBHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50IGlkLCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmJ1ZiApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbERlYnVnTWVzc2FnZUluc2VydF9fSUlJSUlMamF2YV9sYW5nX1N0cmluZ18yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgc291cmNlLCBqaW50IHR5cGUsIGppbnQgaWQsIGppbnQgc2V2ZXJpdHksIGppbnQgbGVuZ3RoLCBqc3RyaW5nIGJ1ZikgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIGNvbnN0IGNoYXIqIF9uYXRpdmVidWYgPSAwOworCisgICAgaWYgKCFidWYpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJidWYgPT0gbnVsbCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgX25hdGl2ZWJ1ZiA9IF9lbnYtPkdldFN0cmluZ1VURkNoYXJzKGJ1ZiwgMCk7CisKKyAgICBnbERlYnVnTWVzc2FnZUluc2VydCgKKyAgICAgICAgKEdMZW51bSlzb3VyY2UsCisgICAgICAgIChHTGVudW0pdHlwZSwKKyAgICAgICAgKEdMdWludClpZCwKKyAgICAgICAgKEdMZW51bSlzZXZlcml0eSwKKyAgICAgICAgKEdMc2l6ZWkpbGVuZ3RoLAorICAgICAgICAoR0xjaGFyICopX25hdGl2ZWJ1ZgorICAgICk7CisKK2V4aXQ6CisgICAgaWYgKF9uYXRpdmVidWYpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGJ1ZiwgX25hdGl2ZWJ1Zik7CisgICAgfQorCisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayAoIEdMREVCVUdQUk9DIGNhbGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYW0gKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayhKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGpvYmplY3QgY2FsbGJhY2spIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCAiamF2YS9sYW5nL1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiwgIm5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKK30KKy8qIEdMdWludCBnbEdldERlYnVnTWVzc2FnZUxvZyAoIEdMdWludCBjb3VudCwgR0xzaXplaSBidWZTaXplLCBHTGVudW0gKnNvdXJjZXMsIEdMZW51bSAqdHlwZXMsIEdMdWludCAqaWRzLCBHTGVudW0gKnNldmVyaXRpZXMsIEdMc2l6ZWkgKmxlbmd0aHMsIEdMY2hhciAqbWVzc2FnZUxvZyApICovCitzdGF0aWMgamludAorYW5kcm9pZF9nbEdldERlYnVnTWVzc2FnZUxvZ19fSUlfM0lJXzNJSV8zSUlfM0lJXzNJSV8zQkkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBjb3VudCwgamludCBidWZTaXplLCBqaW50QXJyYXkgc291cmNlc19yZWYsIGppbnQgc291cmNlc09mZnNldCwgamludEFycmF5IHR5cGVzX3JlZiwgamludCB0eXBlc09mZnNldCwgamludEFycmF5IGlkc19yZWYsIGppbnQgaWRzT2Zmc2V0LCBqaW50QXJyYXkgc2V2ZXJpdGllc19yZWYsIGppbnQgc2V2ZXJpdGllc09mZnNldCwgamludEFycmF5IGxlbmd0aHNfcmVmLCBqaW50IGxlbmd0aHNPZmZzZXQsIGpieXRlQXJyYXkgbWVzc2FnZUxvZ19yZWYsIGppbnQgbWVzc2FnZUxvZ09mZnNldCkgeworICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsICJqYXZhL2xhbmcvVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iLCAibm90IHlldCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVybiAwOworfQorCisvKiBHTHVpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2cgKCBHTHVpbnQgY291bnQsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBHTHVpbnQgKmlkcywgR0xlbnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIgKm1lc3NhZ2VMb2cgKSAqLworc3RhdGljIHVpbnQKK2FuZHJvaWRfZ2xHZXREZWJ1Z01lc3NhZ2VMb2dfX0lMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fQnl0ZUJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgY291bnQsIGpvYmplY3Qgc291cmNlc19yZWYsIGpvYmplY3QgdHlwZXNfcmVmLCBqb2JqZWN0IGlkc19yZWYsIGpvYmplY3Qgc2V2ZXJpdGllc19yZWYsIGpvYmplY3QgbGVuZ3Roc19yZWYsIGpvYmplY3QgbWVzc2FnZUxvZ19yZWYpIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCAiamF2YS9sYW5nL1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiwgIm5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogR0x1aW50IGdsR2V0RGVidWdNZXNzYWdlTG9nICggR0x1aW50IGNvdW50LCBHTHNpemVpIGJ1ZlNpemUsIEdMZW51bSAqc291cmNlcywgR0xlbnVtICp0eXBlcywgR0x1aW50ICppZHMsIEdMZW51bSAqc2V2ZXJpdGllcywgR0xzaXplaSAqbGVuZ3RocywgR0xjaGFyICptZXNzYWdlTG9nICkgKi8KK3N0YXRpYyBqb2JqZWN0QXJyYXkKK2FuZHJvaWRfZ2xHZXREZWJ1Z01lc3NhZ2VMb2dfX0lfM0lJXzNJSV8zSUlfM0lJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgY291bnQsIGppbnRBcnJheSBzb3VyY2VzX3JlZiwgamludCBzb3VyY2VzT2Zmc2V0LCBqaW50QXJyYXkgdHlwZXNfcmVmLCBqaW50IHR5cGVzT2Zmc2V0LCBqaW50QXJyYXkgaWRzX3JlZiwgamludCBpZHNPZmZzZXQsIGppbnRBcnJheSBzZXZlcml0aWVzX3JlZiwgamludCBzZXZlcml0aWVzT2Zmc2V0KSB7CisgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgImphdmEvbGFuZy9VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIsICJub3QgeWV0IGltcGxlbWVudGVkIik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEdMdWludCBnbEdldERlYnVnTWVzc2FnZUxvZyAoIEdMdWludCBjb3VudCwgR0xzaXplaSBidWZTaXplLCBHTGVudW0gKnNvdXJjZXMsIEdMZW51bSAqdHlwZXMsIEdMdWludCAqaWRzLCBHTGVudW0gKnNldmVyaXRpZXMsIEdMc2l6ZWkgKmxlbmd0aHMsIEdMY2hhciAqbWVzc2FnZUxvZyApICovCitzdGF0aWMgam9iamVjdEFycmF5CithbmRyb2lkX2dsR2V0RGVidWdNZXNzYWdlTG9nX19JTGphdmFfbmlvX0ludEJ1ZmZlcl8yTGphdmFfbmlvX0ludEJ1ZmZlcl8yTGphdmFfbmlvX0ludEJ1ZmZlcl8yTGphdmFfbmlvX0ludEJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgY291bnQsIGpvYmplY3Qgc291cmNlc19yZWYsIGpvYmplY3QgdHlwZXNfcmVmLCBqb2JqZWN0IGlkc19yZWYsIGpvYmplY3Qgc2V2ZXJpdGllc19yZWYpIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCAiamF2YS9sYW5nL1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiwgIm5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKKyAgICByZXR1cm4gMDsKK30KKy8qIHZvaWQgZ2xQdXNoRGVidWdHcm91cCAoIEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWVzc2FnZSApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFB1c2hEZWJ1Z0dyb3VwX19JSUlMamF2YV9sYW5nX1N0cmluZ18yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgc291cmNlLCBqaW50IGlkLCBqaW50IGxlbmd0aCwganN0cmluZyBtZXNzYWdlKSB7CisgICAgamludCBfZXhjZXB0aW9uID0gMDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvblR5cGUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uTWVzc2FnZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciogX25hdGl2ZW1lc3NhZ2UgPSAwOworICAgIGpzaXplIF9zdHJpbmdsZW4gPSAwOworCisgICAgaWYgKCFtZXNzYWdlKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAibWVzc2FnZSA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBfbmF0aXZlbWVzc2FnZSA9IF9lbnYtPkdldFN0cmluZ1VURkNoYXJzKG1lc3NhZ2UsIDApOworICAgIF9zdHJpbmdsZW4gPSBfZW52LT5HZXRTdHJpbmdVVEZMZW5ndGgobWVzc2FnZSk7CisgICAgaWYgKGxlbmd0aCA+IF9zdHJpbmdsZW4pIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJsZW5ndGggb2YgbWVzc2FnZSBpcyBzaG9ydGVyIHRoYW4gbGVuZ3RoIGFyZ3VtZW50IjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGdsUHVzaERlYnVnR3JvdXAoCisgICAgICAgIChHTGVudW0pc291cmNlLAorICAgICAgICAoR0x1aW50KWlkLAorICAgICAgICAoR0xzaXplaSlsZW5ndGgsCisgICAgICAgIChHTGNoYXIgKilfbmF0aXZlbWVzc2FnZQorICAgICk7CisKK2V4aXQ6CisgICAgaWYgKF9uYXRpdmVtZXNzYWdlKSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhtZXNzYWdlLCBfbmF0aXZlbWVzc2FnZSk7CisgICAgfQorCisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xQb3BEZWJ1Z0dyb3VwICggdm9pZCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFBvcERlYnVnR3JvdXBfXworICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzKSB7CisgICAgZ2xQb3BEZWJ1Z0dyb3VwKCk7Cit9CisKKy8qIHZvaWQgZ2xPYmplY3RMYWJlbCAoIEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xPYmplY3RMYWJlbF9fSUlJTGphdmFfbGFuZ19TdHJpbmdfMgorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IGlkZW50aWZpZXIsIGppbnQgbmFtZSwgamludCBsZW5ndGgsIGpzdHJpbmcgbGFiZWwpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyKiBfbmF0aXZlbGFiZWwgPSAwOworICAgIGpzaXplIF9zdHJpbmdsZW4gPSAwOworCisgICAgaWYgKGxhYmVsKSB7CisgICAgICAgIF9uYXRpdmVsYWJlbCA9IF9lbnYtPkdldFN0cmluZ1VURkNoYXJzKGxhYmVsLCAwKTsKKyAgICAgICAgX3N0cmluZ2xlbiA9IF9lbnYtPkdldFN0cmluZ1VURkxlbmd0aChsYWJlbCk7CisgICAgICAgIGlmIChsZW5ndGggPiBfc3RyaW5nbGVuKSB7CisgICAgICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iOworICAgICAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAibGVuZ3RoIG9mIGxhYmVsIGlzIHNob3J0ZXIgdGhhbiBsZW5ndGggYXJndW1lbnQiOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorCisgICAgZ2xPYmplY3RMYWJlbCgKKyAgICAgICAgKEdMZW51bSlpZGVudGlmaWVyLAorICAgICAgICAoR0x1aW50KW5hbWUsCisgICAgICAgIChHTHNpemVpKWxlbmd0aCwKKyAgICAgICAgKEdMY2hhciAqKV9uYXRpdmVsYWJlbAorICAgICk7CisKK2V4aXQ6CisgICAgaWYgKF9uYXRpdmVsYWJlbCkgeworICAgICAgICBfZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMobGFiZWwsIF9uYXRpdmVsYWJlbCk7CisgICAgfQorCisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xHZXRPYmplY3RMYWJlbCAoIEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwgKSAqLworc3RhdGljIGpzdHJpbmcKK2FuZHJvaWRfZ2xHZXRPYmplY3RMYWJlbChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgaWRlbnRpZmllciwgamludCBuYW1lKSB7CisgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgImphdmEvbGFuZy9VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIsICJub3QgeWV0IGltcGxlbWVudGVkIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIHZvaWQgZ2xPYmplY3RQdHJMYWJlbCAoIGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xPYmplY3RQdHJMYWJlbChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGpsb25nIHB0ciwganN0cmluZyBsYWJlbCkgeworICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsICJqYXZhL2xhbmcvVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iLCAibm90IHlldCBpbXBsZW1lbnRlZCIpOworfQorCisvKiB2b2lkIGdsR2V0T2JqZWN0UHRyTGFiZWwgKCBjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsICkgKi8KK3N0YXRpYyBqc3RyaW5nCithbmRyb2lkX2dsR2V0T2JqZWN0UHRyTGFiZWwoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqbG9uZyBwdHIpIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCAiamF2YS9sYW5nL1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiwgIm5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogdm9pZCBnbEdldFBvaW50ZXJ2ICggR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zICkgKi8KK3N0YXRpYyBqbG9uZworYW5kcm9pZF9nbEdldFBvaW50ZXJ2KEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBwbmFtZSkgeworICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsICJqYXZhL2xhbmcvVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iLCAibm90IHlldCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiB2b2lkIGdsRW5hYmxlaSAoIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbEVuYWJsZWlfX0lJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IGluZGV4KSB7CisgICAgZ2xFbmFibGVpKAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMdWludClpbmRleAorICAgICk7Cit9CisKKy8qIHZvaWQgZ2xEaXNhYmxlaSAoIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbERpc2FibGVpX19JSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHRhcmdldCwgamludCBpbmRleCkgeworICAgIGdsRGlzYWJsZWkoCisgICAgICAgIChHTGVudW0pdGFyZ2V0LAorICAgICAgICAoR0x1aW50KWluZGV4CisgICAgKTsKK30KKworLyogdm9pZCBnbEJsZW5kRXF1YXRpb25pICggR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xCbGVuZEVxdWF0aW9uaV9fSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBidWYsIGppbnQgbW9kZSkgeworICAgIGdsQmxlbmRFcXVhdGlvbmkoCisgICAgICAgIChHTHVpbnQpYnVmLAorICAgICAgICAoR0xlbnVtKW1vZGUKKyAgICApOworfQorCisvKiB2b2lkIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaSAoIEdMdWludCBidWYsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaV9fSUlJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgYnVmLCBqaW50IG1vZGVSR0IsIGppbnQgbW9kZUFscGhhKSB7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKAorICAgICAgICAoR0x1aW50KWJ1ZiwKKyAgICAgICAgKEdMZW51bSltb2RlUkdCLAorICAgICAgICAoR0xlbnVtKW1vZGVBbHBoYQorICAgICk7Cit9CisKKy8qIHZvaWQgZ2xCbGVuZEZ1bmNpICggR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbEJsZW5kRnVuY2lfX0lJSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IGJ1ZiwgamludCBzcmMsIGppbnQgZHN0KSB7CisgICAgZ2xCbGVuZEZ1bmNpKAorICAgICAgICAoR0x1aW50KWJ1ZiwKKyAgICAgICAgKEdMZW51bSlzcmMsCisgICAgICAgIChHTGVudW0pZHN0CisgICAgKTsKK30KKworLyogdm9pZCBnbEJsZW5kRnVuY1NlcGFyYXRlaSAoIEdMdWludCBidWYsIEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsQmxlbmRGdW5jU2VwYXJhdGVpX19JSUlJSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IGJ1ZiwgamludCBzcmNSR0IsIGppbnQgZHN0UkdCLCBqaW50IHNyY0FscGhhLCBqaW50IGRzdEFscGhhKSB7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWkoCisgICAgICAgIChHTHVpbnQpYnVmLAorICAgICAgICAoR0xlbnVtKXNyY1JHQiwKKyAgICAgICAgKEdMZW51bSlkc3RSR0IsCisgICAgICAgIChHTGVudW0pc3JjQWxwaGEsCisgICAgICAgIChHTGVudW0pZHN0QWxwaGEKKyAgICApOworfQorCisvKiB2b2lkIGdsQ29sb3JNYXNraSAoIEdMdWludCBpbmRleCwgR0xib29sZWFuIHIsIEdMYm9vbGVhbiBnLCBHTGJvb2xlYW4gYiwgR0xib29sZWFuIGEgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xDb2xvck1hc2tpX19JWlpaWgorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IGluZGV4LCBqYm9vbGVhbiByLCBqYm9vbGVhbiBnLCBqYm9vbGVhbiBiLCBqYm9vbGVhbiBhKSB7CisgICAgZ2xDb2xvck1hc2tpKAorICAgICAgICAoR0x1aW50KWluZGV4LAorICAgICAgICAoR0xib29sZWFuKXIsCisgICAgICAgIChHTGJvb2xlYW4pZywKKyAgICAgICAgKEdMYm9vbGVhbiliLAorICAgICAgICAoR0xib29sZWFuKWEKKyAgICApOworfQorCisvKiBHTGJvb2xlYW4gZ2xJc0VuYWJsZWRpICggR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4ICkgKi8KK3N0YXRpYyBqYm9vbGVhbgorYW5kcm9pZF9nbElzRW5hYmxlZGlfX0lJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IGluZGV4KSB7CisgICAgR0xib29sZWFuIF9yZXR1cm5WYWx1ZTsKKyAgICBfcmV0dXJuVmFsdWUgPSBnbElzRW5hYmxlZGkoCisgICAgICAgIChHTGVudW0pdGFyZ2V0LAorICAgICAgICAoR0x1aW50KWluZGV4CisgICAgKTsKKyAgICByZXR1cm4gKGpib29sZWFuKV9yZXR1cm5WYWx1ZTsKK30KKworLyogdm9pZCBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXggKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMaW50IGJhc2V2ZXJ0ZXggKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4X19JSUlMamF2YV9uaW9fQnVmZmVyXzJJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgbW9kZSwgamludCBjb3VudCwgamludCB0eXBlLCBqb2JqZWN0IGluZGljZXNfYnVmLCBqaW50IGJhc2V2ZXJ0ZXgpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBqYXJyYXkgX2FycmF5ID0gKGphcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgdm9pZCAqaW5kaWNlcyA9ICh2b2lkICopIDA7CisKKyAgICBpbmRpY2VzID0gKHZvaWQgKilnZXRQb2ludGVyKF9lbnYsIGluZGljZXNfYnVmLCAoamFycmF5KikmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChfcmVtYWluaW5nIDwgY291bnQtYmFzZXZlcnRleCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0FycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gInJlbWFpbmluZygpIDwgY291bnQtYmFzZXZlcnRleCA8IG5lZWRlZCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKGluZGljZXMgPT0gTlVMTCkgeworICAgICAgICBjaGFyICogX2luZGljZXNCYXNlID0gKGNoYXIgKilfZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKF9hcnJheSwgKGpib29sZWFuICopIDApOworICAgICAgICBpbmRpY2VzID0gKHZvaWQgKikgKF9pbmRpY2VzQmFzZSArIF9idWZmZXJPZmZzZXQpOworICAgIH0KKyAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoCisgICAgICAgIChHTGVudW0pbW9kZSwKKyAgICAgICAgKEdMc2l6ZWkpY291bnQsCisgICAgICAgIChHTGVudW0pdHlwZSwKKyAgICAgICAgKHZvaWQgKilpbmRpY2VzLAorICAgICAgICAoR0xpbnQpYmFzZXZlcnRleAorICAgICk7CisKK2V4aXQ6CisgICAgaWYgKF9hcnJheSkgeworICAgICAgICByZWxlYXNlUG9pbnRlcihfZW52LCBfYXJyYXksIGluZGljZXMsIEpOSV9GQUxTRSk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4ICggR0xlbnVtIG1vZGUsIEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMaW50IGJhc2V2ZXJ0ZXggKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhfX0lJSUlJTGphdmFfbmlvX0J1ZmZlcl8ySQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IG1vZGUsIGppbnQgc3RhcnQsIGppbnQgZW5kLCBqaW50IGNvdW50LCBqaW50IHR5cGUsIGpvYmplY3QgaW5kaWNlc19idWYsIGppbnQgYmFzZXZlcnRleCkgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIGphcnJheSBfYXJyYXkgPSAoamFycmF5KSAwOworICAgIGppbnQgX2J1ZmZlck9mZnNldCA9IChqaW50KSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICB2b2lkICppbmRpY2VzID0gKHZvaWQgKikgMDsKKworICAgIGluZGljZXMgPSAodm9pZCAqKWdldFBvaW50ZXIoX2VudiwgaW5kaWNlc19idWYsIChqYXJyYXkqKSZfYXJyYXksICZfcmVtYWluaW5nLCAmX2J1ZmZlck9mZnNldCk7CisgICAgaWYgKF9yZW1haW5pbmcgPCBjb3VudC1iYXNldmVydGV4KSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicmVtYWluaW5nKCkgPCBjb3VudC1iYXNldmVydGV4IDwgbmVlZGVkIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfaW5kaWNlc0Jhc2UgPSAoY2hhciAqKV9lbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoX2FycmF5LCAoamJvb2xlYW4gKikgMCk7CisgICAgICAgIGluZGljZXMgPSAodm9pZCAqKSAoX2luZGljZXNCYXNlICsgX2J1ZmZlck9mZnNldCk7CisgICAgfQorICAgIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KAorICAgICAgICAoR0xlbnVtKW1vZGUsCisgICAgICAgIChHTHVpbnQpc3RhcnQsCisgICAgICAgIChHTHVpbnQpZW5kLAorICAgICAgICAoR0xzaXplaSljb3VudCwKKyAgICAgICAgKEdMZW51bSl0eXBlLAorICAgICAgICAodm9pZCAqKWluZGljZXMsCisgICAgICAgIChHTGludCliYXNldmVydGV4CisgICAgKTsKKworZXhpdDoKKyAgICBpZiAoX2FycmF5KSB7CisgICAgICAgIHJlbGVhc2VQb2ludGVyKF9lbnYsIF9hcnJheSwgaW5kaWNlcywgSk5JX0ZBTFNFKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4ICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlQ291bnQsIEdMaW50IGJhc2V2ZXJ0ZXggKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4X19JSUlMamF2YV9uaW9fQnVmZmVyXzJJSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IG1vZGUsIGppbnQgY291bnQsIGppbnQgdHlwZSwgam9iamVjdCBpbmRpY2VzX2J1ZiwgamludCBpbnN0YW5jZUNvdW50LCBqaW50IGJhc2V2ZXJ0ZXgpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBqYXJyYXkgX2FycmF5ID0gKGphcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgdm9pZCAqaW5kaWNlcyA9ICh2b2lkICopIDA7CisKKyAgICBpbmRpY2VzID0gKHZvaWQgKilnZXRQb2ludGVyKF9lbnYsIGluZGljZXNfYnVmLCAmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChfcmVtYWluaW5nIDwgY291bnQtYmFzZXZlcnRleCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0FycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gInJlbWFpbmluZygpIDwgY291bnQtYmFzZXZlcnRleCA8IG5lZWRlZCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKGluZGljZXMgPT0gTlVMTCkgeworICAgICAgICBjaGFyICogX2luZGljZXNCYXNlID0gKGNoYXIgKilfZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKF9hcnJheSwgKGpib29sZWFuICopIDApOworICAgICAgICBpbmRpY2VzID0gKHZvaWQgKikgKF9pbmRpY2VzQmFzZSArIF9idWZmZXJPZmZzZXQpOworICAgIH0KKyAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoCisgICAgICAgIChHTGVudW0pbW9kZSwKKyAgICAgICAgKEdMc2l6ZWkpY291bnQsCisgICAgICAgIChHTGVudW0pdHlwZSwKKyAgICAgICAgKHZvaWQgKilpbmRpY2VzLAorICAgICAgICAoR0xzaXplaSlpbnN0YW5jZUNvdW50LAorICAgICAgICAoR0xpbnQpIGJhc2V2ZXJ0ZXgKKyAgICApOworCitleGl0OgorICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgcmVsZWFzZVBvaW50ZXIoX2VudiwgX2FycmF5LCBpbmRpY2VzLCBKTklfRkFMU0UpOworICAgIH0KK30KKworLyogdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXggKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCwgR0xpbnQgYmFzZXZlcnRleCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhfX0lJSUlJSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IG1vZGUsIGppbnQgY291bnQsIGppbnQgdHlwZSwgamludCBpbmRpY2VzT2Zmc2V0LCBqaW50IGluc3RhbmNlQ291bnQsIGppbnQgYmFzZXZlcnRleCkgeworICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCgKKyAgICAgICAgKEdMZW51bSltb2RlLAorICAgICAgICAoR0xzaXplaSljb3VudCwKKyAgICAgICAgKEdMZW51bSl0eXBlLAorICAgICAgICAodm9pZCAqKXN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaW5kaWNlc09mZnNldCksCisgICAgICAgIChHTHNpemVpKWluc3RhbmNlQ291bnQsCisgICAgICAgIChHTGludCliYXNldmVydGV4CisgICAgKTsKK30KKy8qIHZvaWQgZ2xGcmFtZWJ1ZmZlclRleHR1cmUgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsRnJhbWVidWZmZXJUZXh0dXJlX19JSUlJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IGF0dGFjaG1lbnQsIGppbnQgdGV4dHVyZSwgamludCBsZXZlbCkgeworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlKAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlhdHRhY2htZW50LAorICAgICAgICAoR0x1aW50KXRleHR1cmUsCisgICAgICAgIChHTGludClsZXZlbAorICAgICk7Cit9CisKKy8qIHZvaWQgZ2xQcmltaXRpdmVCb3VuZGluZ0JveCAoIEdMZmxvYXQgbWluWCwgR0xmbG9hdCBtaW5ZLCBHTGZsb2F0IG1pblosIEdMZmxvYXQgbWluVywgR0xmbG9hdCBtYXhYLCBHTGZsb2F0IG1heFksIEdMZmxvYXQgbWF4WiwgR0xmbG9hdCBtYXhXICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsUHJpbWl0aXZlQm91bmRpbmdCb3hfX0ZGRkZGRkZGCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGpmbG9hdCBtaW5YLCBqZmxvYXQgbWluWSwgamZsb2F0IG1pblosIGpmbG9hdCBtaW5XLCBqZmxvYXQgbWF4WCwgamZsb2F0IG1heFksIGpmbG9hdCBtYXhaLCBqZmxvYXQgbWF4VykgeworICAgIGdsUHJpbWl0aXZlQm91bmRpbmdCb3goCisgICAgICAgIChHTGZsb2F0KW1pblgsCisgICAgICAgIChHTGZsb2F0KW1pblksCisgICAgICAgIChHTGZsb2F0KW1pblosCisgICAgICAgIChHTGZsb2F0KW1pblcsCisgICAgICAgIChHTGZsb2F0KW1heFgsCisgICAgICAgIChHTGZsb2F0KW1heFksCisgICAgICAgIChHTGZsb2F0KW1heFosCisgICAgICAgIChHTGZsb2F0KW1heFcKKyAgICApOworfQorCisvKiBHTGVudW0gZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzICggdm9pZCApICovCitzdGF0aWMgamludAorYW5kcm9pZF9nbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNfXworICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzKSB7CisgICAgR0xlbnVtIF9yZXR1cm5WYWx1ZTsKKyAgICBfcmV0dXJuVmFsdWUgPSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKKyAgICByZXR1cm4gKGppbnQpX3JldHVyblZhbHVlOworfQorCisvKiB2b2lkIGdsUmVhZG5QaXhlbHMgKCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFJlYWRuUGl4ZWxzX19JSUlJSUlJTGphdmFfbmlvX0J1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgeCwgamludCB5LCBqaW50IHdpZHRoLCBqaW50IGhlaWdodCwgamludCBmb3JtYXQsIGppbnQgdHlwZSwgamludCBidWZTaXplLCBqb2JqZWN0IGRhdGFfYnVmKSB7CisgICAgamludCBfZXhjZXB0aW9uID0gMDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvblR5cGUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uTWVzc2FnZSA9IE5VTEw7CisgICAgamFycmF5IF9hcnJheSA9IChqYXJyYXkpIDA7CisgICAgamludCBfYnVmZmVyT2Zmc2V0ID0gKGppbnQpIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIHZvaWQgKmRhdGEgPSAodm9pZCAqKSAwOworCisgICAgZGF0YSA9ICh2b2lkICopZ2V0UG9pbnRlcihfZW52LCBkYXRhX2J1ZiwgKGphcnJheSopJl9hcnJheSwgJl9yZW1haW5pbmcsICZfYnVmZmVyT2Zmc2V0KTsKKyAgICBpZiAoX3JlbWFpbmluZyA8IGJ1ZlNpemUpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJyZW1haW5pbmcoKSA8IGJ1ZlNpemUgPCBuZWVkZWQiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgY2hhciAqIF9kYXRhQmFzZSA9IChjaGFyICopX2Vudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgZGF0YSA9ICh2b2lkICopIChfZGF0YUJhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xSZWFkblBpeGVscygKKyAgICAgICAgKEdMaW50KXgsCisgICAgICAgIChHTGludCl5LAorICAgICAgICAoR0xzaXplaSl3aWR0aCwKKyAgICAgICAgKEdMc2l6ZWkpaGVpZ2h0LAorICAgICAgICAoR0xlbnVtKWZvcm1hdCwKKyAgICAgICAgKEdMZW51bSl0eXBlLAorICAgICAgICAoR0xzaXplaSlidWZTaXplLAorICAgICAgICAodm9pZCAqKWRhdGEKKyAgICApOworCitleGl0OgorICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgcmVsZWFzZVBvaW50ZXIoX2VudiwgX2FycmF5LCBkYXRhLCBfZXhjZXB0aW9uID8gSk5JX0ZBTFNFIDogSk5JX1RSVUUpOworICAgIH0KKyAgICBpZiAoX2V4Y2VwdGlvbikgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCBfZXhjZXB0aW9uVHlwZSwgX2V4Y2VwdGlvbk1lc3NhZ2UpOworICAgIH0KK30KKworLyogdm9pZCBnbEdldG5Vbmlmb3JtZnYgKCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsR2V0blVuaWZvcm1mdl9fSUlJXzNGSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHByb2dyYW0sIGppbnQgbG9jYXRpb24sIGppbnQgYnVmU2l6ZSwgamZsb2F0QXJyYXkgcGFyYW1zX3JlZiwgamludCBvZmZzZXQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTGZsb2F0ICpwYXJhbXNfYmFzZSA9IChHTGZsb2F0ICopIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIEdMZmxvYXQgKnBhcmFtcyA9IChHTGZsb2F0ICopIDA7CisKKyAgICBpZiAoIXBhcmFtc19yZWYpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJwYXJhbXMgPT0gbnVsbCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJvZmZzZXQgPCAwIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBfcmVtYWluaW5nID0gX2Vudi0+R2V0QXJyYXlMZW5ndGgocGFyYW1zX3JlZikgLSBvZmZzZXQ7CisgICAgaWYgKF9yZW1haW5pbmcgPCBidWZTaXplKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAibGVuZ3RoIC0gb2Zmc2V0IDwgYnVmU2l6ZSA8IG5lZWRlZCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcGFyYW1zX2Jhc2UgPSAoR0xmbG9hdCAqKQorICAgICAgICBfZW52LT5HZXRGbG9hdEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGpib29sZWFuICopMCk7CisgICAgcGFyYW1zID0gcGFyYW1zX2Jhc2UgKyBvZmZzZXQ7CisKKyAgICBnbEdldG5Vbmlmb3JtZnYoCisgICAgICAgIChHTHVpbnQpcHJvZ3JhbSwKKyAgICAgICAgKEdMaW50KWxvY2F0aW9uLAorICAgICAgICAoR0xzaXplaSlidWZTaXplLAorICAgICAgICAoR0xmbG9hdCAqKXBhcmFtcworICAgICk7CisKK2V4aXQ6CisgICAgaWYgKHBhcmFtc19iYXNlKSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGpmbG9hdCopcGFyYW1zX2Jhc2UsCisgICAgICAgICAgICBfZXhjZXB0aW9uID8gSk5JX0FCT1JUOiAwKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xHZXRuVW5pZm9ybWZ2ICggR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbEdldG5Vbmlmb3JtZnZfX0lJSUxqYXZhX25pb19GbG9hdEJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgcHJvZ3JhbSwgamludCBsb2NhdGlvbiwgamludCBidWZTaXplLCBqb2JqZWN0IHBhcmFtc19idWYpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBqZmxvYXRBcnJheSBfYXJyYXkgPSAoamZsb2F0QXJyYXkpIDA7CisgICAgamludCBfYnVmZmVyT2Zmc2V0ID0gKGppbnQpIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIEdMZmxvYXQgKnBhcmFtcyA9IChHTGZsb2F0ICopIDA7CisKKyAgICBwYXJhbXMgPSAoR0xmbG9hdCAqKWdldFBvaW50ZXIoX2VudiwgcGFyYW1zX2J1ZiwgKGphcnJheSopJl9hcnJheSwgJl9yZW1haW5pbmcsICZfYnVmZmVyT2Zmc2V0KTsKKyAgICBpZiAoX3JlbWFpbmluZyA8IGJ1ZlNpemUpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJyZW1haW5pbmcoKSA8IGJ1ZlNpemUgPCBuZWVkZWQiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChwYXJhbXMgPT0gTlVMTCkgeworICAgICAgICBjaGFyICogX3BhcmFtc0Jhc2UgPSAoY2hhciAqKV9lbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgcGFyYW1zID0gKEdMZmxvYXQgKikgKF9wYXJhbXNCYXNlICsgX2J1ZmZlck9mZnNldCk7CisgICAgfQorICAgIGdsR2V0blVuaWZvcm1mdigKKyAgICAgICAgKEdMdWludClwcm9ncmFtLAorICAgICAgICAoR0xpbnQpbG9jYXRpb24sCisgICAgICAgIChHTHNpemVpKWJ1ZlNpemUsCisgICAgICAgIChHTGZsb2F0ICopcGFyYW1zCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAoX2FycmF5KSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoX2FycmF5LCAoamZsb2F0KilwYXJhbXMsIF9leGNlcHRpb24gPyBKTklfQUJPUlQgOiAwKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xHZXRuVW5pZm9ybWl2ICggR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRuVW5pZm9ybWl2X19JSUlfM0lJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgcHJvZ3JhbSwgamludCBsb2NhdGlvbiwgamludCBidWZTaXplLCBqaW50QXJyYXkgcGFyYW1zX3JlZiwgamludCBvZmZzZXQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTGludCAqcGFyYW1zX2Jhc2UgPSAoR0xpbnQgKikgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0xpbnQgKnBhcmFtcyA9IChHTGludCAqKSAwOworCisgICAgaWYgKCFwYXJhbXNfcmVmKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicGFyYW1zID09IG51bGwiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAib2Zmc2V0IDwgMCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgX3JlbWFpbmluZyA9IF9lbnYtPkdldEFycmF5TGVuZ3RoKHBhcmFtc19yZWYpIC0gb2Zmc2V0OworICAgIGlmIChfcmVtYWluaW5nIDwgYnVmU2l6ZSkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gImxlbmd0aCAtIG9mZnNldCA8IGJ1ZlNpemUgPCBuZWVkZWQiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHBhcmFtc19iYXNlID0gKEdMaW50ICopCisgICAgICAgIF9lbnYtPkdldEludEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGpib29sZWFuICopMCk7CisgICAgcGFyYW1zID0gcGFyYW1zX2Jhc2UgKyBvZmZzZXQ7CisKKyAgICBnbEdldG5Vbmlmb3JtaXYoCisgICAgICAgIChHTHVpbnQpcHJvZ3JhbSwKKyAgICAgICAgKEdMaW50KWxvY2F0aW9uLAorICAgICAgICAoR0xzaXplaSlidWZTaXplLAorICAgICAgICAoR0xpbnQgKilwYXJhbXMKKyAgICApOworCitleGl0OgorICAgIGlmIChwYXJhbXNfYmFzZSkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamludCopcGFyYW1zX2Jhc2UsCisgICAgICAgICAgICBfZXhjZXB0aW9uID8gSk5JX0FCT1JUOiAwKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xHZXRuVW5pZm9ybWl2ICggR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRuVW5pZm9ybWl2X19JSUlMamF2YV9uaW9fSW50QnVmZmVyXzIKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBwcm9ncmFtLCBqaW50IGxvY2F0aW9uLCBqaW50IGJ1ZlNpemUsIGpvYmplY3QgcGFyYW1zX2J1ZikgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIGppbnRBcnJheSBfYXJyYXkgPSAoamludEFycmF5KSAwOworICAgIGppbnQgX2J1ZmZlck9mZnNldCA9IChqaW50KSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTGludCAqcGFyYW1zID0gKEdMaW50ICopIDA7CisKKyAgICBwYXJhbXMgPSAoR0xpbnQgKilnZXRQb2ludGVyKF9lbnYsIHBhcmFtc19idWYsIChqYXJyYXkqKSZfYXJyYXksICZfcmVtYWluaW5nLCAmX2J1ZmZlck9mZnNldCk7CisgICAgaWYgKF9yZW1haW5pbmcgPCBidWZTaXplKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicmVtYWluaW5nKCkgPCBidWZTaXplIDwgbmVlZGVkIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAocGFyYW1zID09IE5VTEwpIHsKKyAgICAgICAgY2hhciAqIF9wYXJhbXNCYXNlID0gKGNoYXIgKilfZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGpib29sZWFuICopIDApOworICAgICAgICBwYXJhbXMgPSAoR0xpbnQgKikgKF9wYXJhbXNCYXNlICsgX2J1ZmZlck9mZnNldCk7CisgICAgfQorICAgIGdsR2V0blVuaWZvcm1pdigKKyAgICAgICAgKEdMdWludClwcm9ncmFtLAorICAgICAgICAoR0xpbnQpbG9jYXRpb24sCisgICAgICAgIChHTHNpemVpKWJ1ZlNpemUsCisgICAgICAgIChHTGludCAqKXBhcmFtcworICAgICk7CisKK2V4aXQ6CisgICAgaWYgKF9hcnJheSkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqaW50KilwYXJhbXMsIF9leGNlcHRpb24gPyBKTklfQUJPUlQgOiAwKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xHZXRuVW5pZm9ybXVpdiAoIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHVpbnQgKnBhcmFtcyApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbEdldG5Vbmlmb3JtdWl2X19JSUlfM0lJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgcHJvZ3JhbSwgamludCBsb2NhdGlvbiwgamludCBidWZTaXplLCBqaW50QXJyYXkgcGFyYW1zX3JlZiwgamludCBvZmZzZXQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTHVpbnQgKnBhcmFtc19iYXNlID0gKEdMdWludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKnBhcmFtcyA9IChHTHVpbnQgKikgMDsKKworICAgIGlmICghcGFyYW1zX3JlZikgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gInBhcmFtcyA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gIm9mZnNldCA8IDAiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIF9yZW1haW5pbmcgPSBfZW52LT5HZXRBcnJheUxlbmd0aChwYXJhbXNfcmVmKSAtIG9mZnNldDsKKyAgICBpZiAoX3JlbWFpbmluZyA8IGJ1ZlNpemUpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJsZW5ndGggLSBvZmZzZXQgPCBidWZTaXplIDwgbmVlZGVkIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBwYXJhbXNfYmFzZSA9IChHTHVpbnQgKikKKyAgICAgICAgX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamJvb2xlYW4gKikwKTsKKyAgICBwYXJhbXMgPSBwYXJhbXNfYmFzZSArIG9mZnNldDsKKworICAgIGdsR2V0blVuaWZvcm11aXYoCisgICAgICAgIChHTHVpbnQpcHJvZ3JhbSwKKyAgICAgICAgKEdMaW50KWxvY2F0aW9uLAorICAgICAgICAoR0xzaXplaSlidWZTaXplLAorICAgICAgICAoR0x1aW50ICopcGFyYW1zCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAocGFyYW1zX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGppbnQqKXBhcmFtc19iYXNlLAorICAgICAgICAgICAgX2V4Y2VwdGlvbiA/IEpOSV9BQk9SVDogMCk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0blVuaWZvcm11aXYgKCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0x1aW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRuVW5pZm9ybXVpdl9fSUlJTGphdmFfbmlvX0ludEJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgcHJvZ3JhbSwgamludCBsb2NhdGlvbiwgamludCBidWZTaXplLCBqb2JqZWN0IHBhcmFtc19idWYpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBqaW50QXJyYXkgX2FycmF5ID0gKGppbnRBcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0x1aW50ICpwYXJhbXMgPSAoR0x1aW50ICopIDA7CisKKyAgICBwYXJhbXMgPSAoR0x1aW50ICopZ2V0UG9pbnRlcihfZW52LCBwYXJhbXNfYnVmLCAoamFycmF5KikmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChfcmVtYWluaW5nIDwgYnVmU2l6ZSkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gInJlbWFpbmluZygpIDwgYnVmU2l6ZSA8IG5lZWRlZCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKHBhcmFtcyA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfcGFyYW1zQmFzZSA9IChjaGFyICopX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgcGFyYW1zID0gKEdMdWludCAqKSAoX3BhcmFtc0Jhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xHZXRuVW5pZm9ybXVpdigKKyAgICAgICAgKEdMdWludClwcm9ncmFtLAorICAgICAgICAoR0xpbnQpbG9jYXRpb24sCisgICAgICAgIChHTHNpemVpKWJ1ZlNpemUsCisgICAgICAgIChHTHVpbnQgKilwYXJhbXMKKyAgICApOworCitleGl0OgorICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMoX2FycmF5LCAoamludCopcGFyYW1zLCBfZXhjZXB0aW9uID8gSk5JX0FCT1JUIDogMCk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsTWluU2FtcGxlU2hhZGluZyAoIEdMZmxvYXQgdmFsdWUgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xNaW5TYW1wbGVTaGFkaW5nX19GCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGpmbG9hdCB2YWx1ZSkgeworICAgIGdsTWluU2FtcGxlU2hhZGluZygKKyAgICAgICAgKEdMZmxvYXQpdmFsdWUKKyAgICApOworfQorCisvKiB2b2lkIGdsUGF0Y2hQYXJhbWV0ZXJpICggR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFBhdGNoUGFyYW1ldGVyaV9fSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBwbmFtZSwgamludCB2YWx1ZSkgeworICAgIGdsUGF0Y2hQYXJhbWV0ZXJpKAorICAgICAgICAoR0xlbnVtKXBuYW1lLAorICAgICAgICAoR0xpbnQpdmFsdWUKKyAgICApOworfQorCisvKiB2b2lkIGdsVGV4UGFyYW1ldGVySWl2ICggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsVGV4UGFyYW1ldGVySWl2X19JSV8zSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCB0YXJnZXQsIGppbnQgcG5hbWUsIGppbnRBcnJheSBwYXJhbXNfcmVmLCBqaW50IG9mZnNldCkgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIEdMaW50ICpwYXJhbXNfYmFzZSA9IChHTGludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTGludCAqcGFyYW1zID0gKEdMaW50ICopIDA7CisKKyAgICBpZiAoIXBhcmFtc19yZWYpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJwYXJhbXMgPT0gbnVsbCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJvZmZzZXQgPCAwIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBfcmVtYWluaW5nID0gX2Vudi0+R2V0QXJyYXlMZW5ndGgocGFyYW1zX3JlZikgLSBvZmZzZXQ7CisgICAgcGFyYW1zX2Jhc2UgPSAoR0xpbnQgKikKKyAgICAgICAgX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamJvb2xlYW4gKikwKTsKKyAgICBwYXJhbXMgPSBwYXJhbXNfYmFzZSArIG9mZnNldDsKKworICAgIGdsVGV4UGFyYW1ldGVySWl2KAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMaW50ICopcGFyYW1zCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAocGFyYW1zX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGppbnQqKXBhcmFtc19iYXNlLAorICAgICAgICAgICAgSk5JX0FCT1JUKTsKKyAgICB9CisgICAgaWYgKF9leGNlcHRpb24pIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oX2VudiwgX2V4Y2VwdGlvblR5cGUsIF9leGNlcHRpb25NZXNzYWdlKTsKKyAgICB9Cit9CisKKy8qIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJaXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xUZXhQYXJhbWV0ZXJJaXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IHBuYW1lLCBqb2JqZWN0IHBhcmFtc19idWYpIHsKKyAgICBqaW50QXJyYXkgX2FycmF5ID0gKGppbnRBcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0xpbnQgKnBhcmFtcyA9IChHTGludCAqKSAwOworCisgICAgcGFyYW1zID0gKEdMaW50ICopZ2V0UG9pbnRlcihfZW52LCBwYXJhbXNfYnVmLCAoamFycmF5KikmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChwYXJhbXMgPT0gTlVMTCkgeworICAgICAgICBjaGFyICogX3BhcmFtc0Jhc2UgPSAoY2hhciAqKV9lbnYtPkdldEludEFycmF5RWxlbWVudHMoX2FycmF5LCAoamJvb2xlYW4gKikgMCk7CisgICAgICAgIHBhcmFtcyA9IChHTGludCAqKSAoX3BhcmFtc0Jhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xUZXhQYXJhbWV0ZXJJaXYoCisgICAgICAgIChHTGVudW0pdGFyZ2V0LAorICAgICAgICAoR0xlbnVtKXBuYW1lLAorICAgICAgICAoR0xpbnQgKilwYXJhbXMKKyAgICApOworICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMoX2FycmF5LCAoamludCopcGFyYW1zLCBKTklfQUJPUlQpOworICAgIH0KK30KKworLyogdm9pZCBnbFRleFBhcmFtZXRlckl1aXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsVGV4UGFyYW1ldGVySXVpdl9fSUlfM0lJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IHBuYW1lLCBqaW50QXJyYXkgcGFyYW1zX3JlZiwgamludCBvZmZzZXQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTHVpbnQgKnBhcmFtc19iYXNlID0gKEdMdWludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKnBhcmFtcyA9IChHTHVpbnQgKikgMDsKKworICAgIGlmICghcGFyYW1zX3JlZikgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gInBhcmFtcyA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gIm9mZnNldCA8IDAiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIF9yZW1haW5pbmcgPSBfZW52LT5HZXRBcnJheUxlbmd0aChwYXJhbXNfcmVmKSAtIG9mZnNldDsKKyAgICBwYXJhbXNfYmFzZSA9IChHTHVpbnQgKikKKyAgICAgICAgX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamJvb2xlYW4gKikwKTsKKyAgICBwYXJhbXMgPSBwYXJhbXNfYmFzZSArIG9mZnNldDsKKworICAgIGdsVGV4UGFyYW1ldGVySXVpdigKKyAgICAgICAgKEdMZW51bSl0YXJnZXQsCisgICAgICAgIChHTGVudW0pcG5hbWUsCisgICAgICAgIChHTHVpbnQgKilwYXJhbXMKKyAgICApOworCitleGl0OgorICAgIGlmIChwYXJhbXNfYmFzZSkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamludCopcGFyYW1zX2Jhc2UsCisgICAgICAgICAgICBKTklfQUJPUlQpOworICAgIH0KKyAgICBpZiAoX2V4Y2VwdGlvbikgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCBfZXhjZXB0aW9uVHlwZSwgX2V4Y2VwdGlvbk1lc3NhZ2UpOworICAgIH0KK30KKworLyogdm9pZCBnbFRleFBhcmFtZXRlckl1aXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsVGV4UGFyYW1ldGVySXVpdl9fSUlMamF2YV9uaW9fSW50QnVmZmVyXzIKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCB0YXJnZXQsIGppbnQgcG5hbWUsIGpvYmplY3QgcGFyYW1zX2J1ZikgeworICAgIGppbnRBcnJheSBfYXJyYXkgPSAoamludEFycmF5KSAwOworICAgIGppbnQgX2J1ZmZlck9mZnNldCA9IChqaW50KSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKnBhcmFtcyA9IChHTHVpbnQgKikgMDsKKworICAgIHBhcmFtcyA9IChHTHVpbnQgKilnZXRQb2ludGVyKF9lbnYsIHBhcmFtc19idWYsIChqYXJyYXkqKSZfYXJyYXksICZfcmVtYWluaW5nLCAmX2J1ZmZlck9mZnNldCk7CisgICAgaWYgKHBhcmFtcyA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfcGFyYW1zQmFzZSA9IChjaGFyICopX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgcGFyYW1zID0gKEdMdWludCAqKSAoX3BhcmFtc0Jhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xUZXhQYXJhbWV0ZXJJdWl2KAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMdWludCAqKXBhcmFtcworICAgICk7CisgICAgaWYgKF9hcnJheSkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqaW50KilwYXJhbXMsIEpOSV9BQk9SVCk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2ICggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsR2V0VGV4UGFyYW1ldGVySWl2X19JSV8zSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCB0YXJnZXQsIGppbnQgcG5hbWUsIGppbnRBcnJheSBwYXJhbXNfcmVmLCBqaW50IG9mZnNldCkgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIEdMaW50ICpwYXJhbXNfYmFzZSA9IChHTGludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTGludCAqcGFyYW1zID0gKEdMaW50ICopIDA7CisKKyAgICBpZiAoIXBhcmFtc19yZWYpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJwYXJhbXMgPT0gbnVsbCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJvZmZzZXQgPCAwIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBfcmVtYWluaW5nID0gX2Vudi0+R2V0QXJyYXlMZW5ndGgocGFyYW1zX3JlZikgLSBvZmZzZXQ7CisgICAgcGFyYW1zX2Jhc2UgPSAoR0xpbnQgKikKKyAgICAgICAgX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamJvb2xlYW4gKikwKTsKKyAgICBwYXJhbXMgPSBwYXJhbXNfYmFzZSArIG9mZnNldDsKKworICAgIGdsR2V0VGV4UGFyYW1ldGVySWl2KAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMaW50ICopcGFyYW1zCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAocGFyYW1zX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGppbnQqKXBhcmFtc19iYXNlLAorICAgICAgICAgICAgX2V4Y2VwdGlvbiA/IEpOSV9BQk9SVDogMCk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2ICggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsR2V0VGV4UGFyYW1ldGVySWl2X19JSUxqYXZhX25pb19JbnRCdWZmZXJfMgorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHRhcmdldCwgamludCBwbmFtZSwgam9iamVjdCBwYXJhbXNfYnVmKSB7CisgICAgamludEFycmF5IF9hcnJheSA9IChqaW50QXJyYXkpIDA7CisgICAgamludCBfYnVmZmVyT2Zmc2V0ID0gKGppbnQpIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIEdMaW50ICpwYXJhbXMgPSAoR0xpbnQgKikgMDsKKworICAgIHBhcmFtcyA9IChHTGludCAqKWdldFBvaW50ZXIoX2VudiwgcGFyYW1zX2J1ZiwgKGphcnJheSopJl9hcnJheSwgJl9yZW1haW5pbmcsICZfYnVmZmVyT2Zmc2V0KTsKKyAgICBpZiAocGFyYW1zID09IE5VTEwpIHsKKyAgICAgICAgY2hhciAqIF9wYXJhbXNCYXNlID0gKGNoYXIgKilfZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGpib29sZWFuICopIDApOworICAgICAgICBwYXJhbXMgPSAoR0xpbnQgKikgKF9wYXJhbXNCYXNlICsgX2J1ZmZlck9mZnNldCk7CisgICAgfQorICAgIGdsR2V0VGV4UGFyYW1ldGVySWl2KAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMaW50ICopcGFyYW1zCisgICAgKTsKKyAgICBpZiAoX2FycmF5KSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGppbnQqKXBhcmFtcywgMCk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySXVpdiAoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2X19JSV8zSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCB0YXJnZXQsIGppbnQgcG5hbWUsIGppbnRBcnJheSBwYXJhbXNfcmVmLCBqaW50IG9mZnNldCkgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIEdMdWludCAqcGFyYW1zX2Jhc2UgPSAoR0x1aW50ICopIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIEdMdWludCAqcGFyYW1zID0gKEdMdWludCAqKSAwOworCisgICAgaWYgKCFwYXJhbXNfcmVmKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicGFyYW1zID09IG51bGwiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAib2Zmc2V0IDwgMCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgX3JlbWFpbmluZyA9IF9lbnYtPkdldEFycmF5TGVuZ3RoKHBhcmFtc19yZWYpIC0gb2Zmc2V0OworICAgIHBhcmFtc19iYXNlID0gKEdMdWludCAqKQorICAgICAgICBfZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKHBhcmFtc19yZWYsIChqYm9vbGVhbiAqKTApOworICAgIHBhcmFtcyA9IHBhcmFtc19iYXNlICsgb2Zmc2V0OworCisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2KAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMdWludCAqKXBhcmFtcworICAgICk7CisKK2V4aXQ6CisgICAgaWYgKHBhcmFtc19iYXNlKSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKHBhcmFtc19yZWYsIChqaW50KilwYXJhbXNfYmFzZSwKKyAgICAgICAgICAgIF9leGNlcHRpb24gPyBKTklfQUJPUlQ6IDApOworICAgIH0KKyAgICBpZiAoX2V4Y2VwdGlvbikgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCBfZXhjZXB0aW9uVHlwZSwgX2V4Y2VwdGlvbk1lc3NhZ2UpOworICAgIH0KK30KKworLyogdm9pZCBnbEdldFRleFBhcmFtZXRlckl1aXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsR2V0VGV4UGFyYW1ldGVySXVpdl9fSUlMamF2YV9uaW9fSW50QnVmZmVyXzIKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCB0YXJnZXQsIGppbnQgcG5hbWUsIGpvYmplY3QgcGFyYW1zX2J1ZikgeworICAgIGppbnRBcnJheSBfYXJyYXkgPSAoamludEFycmF5KSAwOworICAgIGppbnQgX2J1ZmZlck9mZnNldCA9IChqaW50KSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKnBhcmFtcyA9IChHTHVpbnQgKikgMDsKKworICAgIHBhcmFtcyA9IChHTHVpbnQgKilnZXRQb2ludGVyKF9lbnYsIHBhcmFtc19idWYsIChqYXJyYXkqKSZfYXJyYXksICZfcmVtYWluaW5nLCAmX2J1ZmZlck9mZnNldCk7CisgICAgaWYgKHBhcmFtcyA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfcGFyYW1zQmFzZSA9IChjaGFyICopX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgcGFyYW1zID0gKEdMdWludCAqKSAoX3BhcmFtc0Jhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2KAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMdWludCAqKXBhcmFtcworICAgICk7CisgICAgaWYgKF9hcnJheSkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqaW50KilwYXJhbXMsIDApOworICAgIH0KK30KKworLyogdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYgKCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0gKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xTYW1wbGVyUGFyYW1ldGVySWl2X19JSV8zSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBzYW1wbGVyLCBqaW50IHBuYW1lLCBqaW50QXJyYXkgcGFyYW1fcmVmLCBqaW50IG9mZnNldCkgeworICAgIGppbnQgX2V4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25UeXBlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvbk1lc3NhZ2UgPSBOVUxMOworICAgIEdMaW50ICpwYXJhbV9iYXNlID0gKEdMaW50ICopIDA7CisgICAgamludCBfcmVtYWluaW5nOworICAgIEdMaW50ICpwYXJhbSA9IChHTGludCAqKSAwOworCisgICAgaWYgKCFwYXJhbV9yZWYpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJwYXJhbSA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gIm9mZnNldCA8IDAiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIF9yZW1haW5pbmcgPSBfZW52LT5HZXRBcnJheUxlbmd0aChwYXJhbV9yZWYpIC0gb2Zmc2V0OworICAgIHBhcmFtX2Jhc2UgPSAoR0xpbnQgKikKKyAgICAgICAgX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwYXJhbV9yZWYsIChqYm9vbGVhbiAqKTApOworICAgIHBhcmFtID0gcGFyYW1fYmFzZSArIG9mZnNldDsKKworICAgIGdsU2FtcGxlclBhcmFtZXRlcklpdigKKyAgICAgICAgKEdMdWludClzYW1wbGVyLAorICAgICAgICAoR0xlbnVtKXBuYW1lLAorICAgICAgICAoR0xpbnQgKilwYXJhbQorICAgICk7CisKK2V4aXQ6CisgICAgaWYgKHBhcmFtX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMocGFyYW1fcmVmLCAoamludCopcGFyYW1fYmFzZSwKKyAgICAgICAgICAgIEpOSV9BQk9SVCk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsU2FtcGxlclBhcmFtZXRlcklpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFNhbXBsZXJQYXJhbWV0ZXJJaXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgc2FtcGxlciwgamludCBwbmFtZSwgam9iamVjdCBwYXJhbV9idWYpIHsKKyAgICBqaW50QXJyYXkgX2FycmF5ID0gKGppbnRBcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0xpbnQgKnBhcmFtID0gKEdMaW50ICopIDA7CisKKyAgICBwYXJhbSA9IChHTGludCAqKWdldFBvaW50ZXIoX2VudiwgcGFyYW1fYnVmLCAoamFycmF5KikmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChwYXJhbSA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfcGFyYW1CYXNlID0gKGNoYXIgKilfZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGpib29sZWFuICopIDApOworICAgICAgICBwYXJhbSA9IChHTGludCAqKSAoX3BhcmFtQmFzZSArIF9idWZmZXJPZmZzZXQpOworICAgIH0KKyAgICBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYoCisgICAgICAgIChHTHVpbnQpc2FtcGxlciwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMaW50ICopcGFyYW0KKyAgICApOworICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMoX2FycmF5LCAoamludCopcGFyYW0sIEpOSV9BQk9SVCk7CisgICAgfQorfQorCisvKiB2b2lkIGdsU2FtcGxlclBhcmFtZXRlckl1aXYgKCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQgKnBhcmFtICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsU2FtcGxlclBhcmFtZXRlckl1aXZfX0lJXzNJSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHNhbXBsZXIsIGppbnQgcG5hbWUsIGppbnRBcnJheSBwYXJhbV9yZWYsIGppbnQgb2Zmc2V0KSB7CisgICAgamludCBfZXhjZXB0aW9uID0gMDsKKyAgICBjb25zdCBjaGFyICogX2V4Y2VwdGlvblR5cGUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uTWVzc2FnZSA9IE5VTEw7CisgICAgR0x1aW50ICpwYXJhbV9iYXNlID0gKEdMdWludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKnBhcmFtID0gKEdMdWludCAqKSAwOworCisgICAgaWYgKCFwYXJhbV9yZWYpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IDE7CisgICAgICAgIF9leGNlcHRpb25UeXBlID0gImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iOworICAgICAgICBfZXhjZXB0aW9uTWVzc2FnZSA9ICJwYXJhbSA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gIm9mZnNldCA8IDAiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIF9yZW1haW5pbmcgPSBfZW52LT5HZXRBcnJheUxlbmd0aChwYXJhbV9yZWYpIC0gb2Zmc2V0OworICAgIHBhcmFtX2Jhc2UgPSAoR0x1aW50ICopCisgICAgICAgIF9lbnYtPkdldEludEFycmF5RWxlbWVudHMocGFyYW1fcmVmLCAoamJvb2xlYW4gKikwKTsKKyAgICBwYXJhbSA9IHBhcmFtX2Jhc2UgKyBvZmZzZXQ7CisKKyAgICBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2KAorICAgICAgICAoR0x1aW50KXNhbXBsZXIsCisgICAgICAgIChHTGVudW0pcG5hbWUsCisgICAgICAgIChHTHVpbnQgKilwYXJhbQorICAgICk7CisKK2V4aXQ6CisgICAgaWYgKHBhcmFtX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMocGFyYW1fcmVmLCAoamludCopcGFyYW1fYmFzZSwKKyAgICAgICAgICAgIEpOSV9BQk9SVCk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsU2FtcGxlclBhcmFtZXRlckl1aXYgKCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQgKnBhcmFtICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsU2FtcGxlclBhcmFtZXRlckl1aXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgc2FtcGxlciwgamludCBwbmFtZSwgam9iamVjdCBwYXJhbV9idWYpIHsKKyAgICBqaW50QXJyYXkgX2FycmF5ID0gKGppbnRBcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0x1aW50ICpwYXJhbSA9IChHTHVpbnQgKikgMDsKKworICAgIHBhcmFtID0gKEdMdWludCAqKWdldFBvaW50ZXIoX2VudiwgcGFyYW1fYnVmLCAoamFycmF5KikmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChwYXJhbSA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfcGFyYW1CYXNlID0gKGNoYXIgKilfZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGpib29sZWFuICopIDApOworICAgICAgICBwYXJhbSA9IChHTHVpbnQgKikgKF9wYXJhbUJhc2UgKyBfYnVmZmVyT2Zmc2V0KTsKKyAgICB9CisgICAgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdigKKyAgICAgICAgKEdMdWludClzYW1wbGVyLAorICAgICAgICAoR0xlbnVtKXBuYW1lLAorICAgICAgICAoR0x1aW50ICopcGFyYW0KKyAgICApOworICAgIGlmIChfYXJyYXkpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMoX2FycmF5LCAoamludCopcGFyYW0sIEpOSV9BQk9SVCk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2X19JSV8zSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBzYW1wbGVyLCBqaW50IHBuYW1lLCBqaW50QXJyYXkgcGFyYW1zX3JlZiwgamludCBvZmZzZXQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTGludCAqcGFyYW1zX2Jhc2UgPSAoR0xpbnQgKikgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0xpbnQgKnBhcmFtcyA9IChHTGludCAqKSAwOworCisgICAgaWYgKCFwYXJhbXNfcmVmKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAicGFyYW1zID09IG51bGwiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwKSB7CisgICAgICAgIF9leGNlcHRpb24gPSAxOworICAgICAgICBfZXhjZXB0aW9uVHlwZSA9ICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIjsKKyAgICAgICAgX2V4Y2VwdGlvbk1lc3NhZ2UgPSAib2Zmc2V0IDwgMCI7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgX3JlbWFpbmluZyA9IF9lbnYtPkdldEFycmF5TGVuZ3RoKHBhcmFtc19yZWYpIC0gb2Zmc2V0OworICAgIHBhcmFtc19iYXNlID0gKEdMaW50ICopCisgICAgICAgIF9lbnYtPkdldEludEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGpib29sZWFuICopMCk7CisgICAgcGFyYW1zID0gcGFyYW1zX2Jhc2UgKyBvZmZzZXQ7CisKKyAgICBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoCisgICAgICAgIChHTHVpbnQpc2FtcGxlciwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMaW50ICopcGFyYW1zCisgICAgKTsKKworZXhpdDoKKyAgICBpZiAocGFyYW1zX2Jhc2UpIHsKKyAgICAgICAgX2Vudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMocGFyYW1zX3JlZiwgKGppbnQqKXBhcmFtc19iYXNlLAorICAgICAgICAgICAgX2V4Y2VwdGlvbiA/IEpOSV9BQk9SVDogMCk7CisgICAgfQorICAgIGlmIChfZXhjZXB0aW9uKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKF9lbnYsIF9leGNlcHRpb25UeXBlLCBfZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2X19JSUxqYXZhX25pb19JbnRCdWZmZXJfMgorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IHNhbXBsZXIsIGppbnQgcG5hbWUsIGpvYmplY3QgcGFyYW1zX2J1ZikgeworICAgIGppbnRBcnJheSBfYXJyYXkgPSAoamludEFycmF5KSAwOworICAgIGppbnQgX2J1ZmZlck9mZnNldCA9IChqaW50KSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTGludCAqcGFyYW1zID0gKEdMaW50ICopIDA7CisKKyAgICBwYXJhbXMgPSAoR0xpbnQgKilnZXRQb2ludGVyKF9lbnYsIHBhcmFtc19idWYsIChqYXJyYXkqKSZfYXJyYXksICZfcmVtYWluaW5nLCAmX2J1ZmZlck9mZnNldCk7CisgICAgaWYgKHBhcmFtcyA9PSBOVUxMKSB7CisgICAgICAgIGNoYXIgKiBfcGFyYW1zQmFzZSA9IChjaGFyICopX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqYm9vbGVhbiAqKSAwKTsKKyAgICAgICAgcGFyYW1zID0gKEdMaW50ICopIChfcGFyYW1zQmFzZSArIF9idWZmZXJPZmZzZXQpOworICAgIH0KKyAgICBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoCisgICAgICAgIChHTHVpbnQpc2FtcGxlciwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMaW50ICopcGFyYW1zCisgICAgKTsKKyAgICBpZiAoX2FycmF5KSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKF9hcnJheSwgKGppbnQqKXBhcmFtcywgMCk7CisgICAgfQorfQorCisvKiB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYgKCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2X19JSV8zSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBzYW1wbGVyLCBqaW50IHBuYW1lLCBqaW50QXJyYXkgcGFyYW1zX3JlZiwgamludCBvZmZzZXQpIHsKKyAgICBqaW50IF9leGNlcHRpb24gPSAwOworICAgIGNvbnN0IGNoYXIgKiBfZXhjZXB0aW9uVHlwZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqIF9leGNlcHRpb25NZXNzYWdlID0gTlVMTDsKKyAgICBHTHVpbnQgKnBhcmFtc19iYXNlID0gKEdMdWludCAqKSAwOworICAgIGppbnQgX3JlbWFpbmluZzsKKyAgICBHTHVpbnQgKnBhcmFtcyA9IChHTHVpbnQgKikgMDsKKworICAgIGlmICghcGFyYW1zX3JlZikgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gInBhcmFtcyA9PSBudWxsIjsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICBfZXhjZXB0aW9uID0gMTsKKyAgICAgICAgX2V4Y2VwdGlvblR5cGUgPSAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI7CisgICAgICAgIF9leGNlcHRpb25NZXNzYWdlID0gIm9mZnNldCA8IDAiOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIF9yZW1haW5pbmcgPSBfZW52LT5HZXRBcnJheUxlbmd0aChwYXJhbXNfcmVmKSAtIG9mZnNldDsKKyAgICBwYXJhbXNfYmFzZSA9IChHTHVpbnQgKikKKyAgICAgICAgX2Vudi0+R2V0SW50QXJyYXlFbGVtZW50cyhwYXJhbXNfcmVmLCAoamJvb2xlYW4gKikwKTsKKyAgICBwYXJhbXMgPSBwYXJhbXNfYmFzZSArIG9mZnNldDsKKworICAgIGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoCisgICAgICAgIChHTHVpbnQpc2FtcGxlciwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMdWludCAqKXBhcmFtcworICAgICk7CisKK2V4aXQ6CisgICAgaWYgKHBhcmFtc19iYXNlKSB7CisgICAgICAgIF9lbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKHBhcmFtc19yZWYsIChqaW50KilwYXJhbXNfYmFzZSwKKyAgICAgICAgICAgIF9leGNlcHRpb24gPyBKTklfQUJPUlQ6IDApOworICAgIH0KKyAgICBpZiAoX2V4Y2VwdGlvbikgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihfZW52LCBfZXhjZXB0aW9uVHlwZSwgX2V4Y2VwdGlvbk1lc3NhZ2UpOworICAgIH0KK30KKworLyogdm9pZCBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2ICggR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdl9fSUlMamF2YV9uaW9fSW50QnVmZmVyXzIKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBzYW1wbGVyLCBqaW50IHBuYW1lLCBqb2JqZWN0IHBhcmFtc19idWYpIHsKKyAgICBqaW50QXJyYXkgX2FycmF5ID0gKGppbnRBcnJheSkgMDsKKyAgICBqaW50IF9idWZmZXJPZmZzZXQgPSAoamludCkgMDsKKyAgICBqaW50IF9yZW1haW5pbmc7CisgICAgR0x1aW50ICpwYXJhbXMgPSAoR0x1aW50ICopIDA7CisKKyAgICBwYXJhbXMgPSAoR0x1aW50ICopZ2V0UG9pbnRlcihfZW52LCBwYXJhbXNfYnVmLCAoamFycmF5KikmX2FycmF5LCAmX3JlbWFpbmluZywgJl9idWZmZXJPZmZzZXQpOworICAgIGlmIChwYXJhbXMgPT0gTlVMTCkgeworICAgICAgICBjaGFyICogX3BhcmFtc0Jhc2UgPSAoY2hhciAqKV9lbnYtPkdldEludEFycmF5RWxlbWVudHMoX2FycmF5LCAoamJvb2xlYW4gKikgMCk7CisgICAgICAgIHBhcmFtcyA9IChHTHVpbnQgKikgKF9wYXJhbXNCYXNlICsgX2J1ZmZlck9mZnNldCk7CisgICAgfQorICAgIGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoCisgICAgICAgIChHTHVpbnQpc2FtcGxlciwKKyAgICAgICAgKEdMZW51bSlwbmFtZSwKKyAgICAgICAgKEdMdWludCAqKXBhcmFtcworICAgICk7CisgICAgaWYgKF9hcnJheSkgeworICAgICAgICBfZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhfYXJyYXksIChqaW50KilwYXJhbXMsIDApOworICAgIH0KK30KKworLyogdm9pZCBnbFRleEJ1ZmZlciAoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlciApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFRleEJ1ZmZlcl9fSUlJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IGludGVybmFsZm9ybWF0LCBqaW50IGJ1ZmZlcikgeworICAgIGdsVGV4QnVmZmVyKAorICAgICAgICAoR0xlbnVtKXRhcmdldCwKKyAgICAgICAgKEdMZW51bSlpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgKEdMdWludClidWZmZXIKKyAgICApOworfQorCisvKiB2b2lkIGdsVGV4QnVmZmVyUmFuZ2UgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsVGV4QnVmZmVyUmFuZ2VfX0lJSUlJCisgIChKTklFbnYgKl9lbnYsIGpvYmplY3QgX3RoaXMsIGppbnQgdGFyZ2V0LCBqaW50IGludGVybmFsZm9ybWF0LCBqaW50IGJ1ZmZlciwgamludCBvZmZzZXQsIGppbnQgc2l6ZSkgeworICAgIGdsVGV4QnVmZmVyUmFuZ2UoCisgICAgICAgIChHTGVudW0pdGFyZ2V0LAorICAgICAgICAoR0xlbnVtKWludGVybmFsZm9ybWF0LAorICAgICAgICAoR0x1aW50KWJ1ZmZlciwKKyAgICAgICAgKEdMaW50cHRyKW9mZnNldCwKKyAgICAgICAgKEdMc2l6ZWlwdHIpc2l6ZQorICAgICk7Cit9CisKKy8qIHZvaWQgZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSAoIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zICkgKi8KK3N0YXRpYyB2b2lkCithbmRyb2lkX2dsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVfX0lJSUlJSVoKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCB0YXJnZXQsIGppbnQgc2FtcGxlcywgamludCBpbnRlcm5hbGZvcm1hdCwgamludCB3aWR0aCwgamludCBoZWlnaHQsIGppbnQgZGVwdGgsIGpib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKSB7CisgICAgZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSgKKyAgICAgICAgKEdMZW51bSl0YXJnZXQsCisgICAgICAgIChHTHNpemVpKXNhbXBsZXMsCisgICAgICAgIChHTGVudW0paW50ZXJuYWxmb3JtYXQsCisgICAgICAgIChHTHNpemVpKXdpZHRoLAorICAgICAgICAoR0xzaXplaSloZWlnaHQsCisgICAgICAgIChHTHNpemVpKWRlcHRoLAorICAgICAgICAoR0xib29sZWFuKWZpeGVkc2FtcGxlbG9jYXRpb25zCisgICAgKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmNsYXNzUGF0aE5hbWUgPSAiYW5kcm9pZC9vcGVuZ2wvR0xFUzMyIjsKKworc3RhdGljIGNvbnN0IEpOSU5hdGl2ZU1ldGhvZCBtZXRob2RzW10gPSB7Cit7Il9uYXRpdmVDbGFzc0luaXQiLCAiKClWIiwgKHZvaWQqKW5hdGl2ZUNsYXNzSW5pdCB9LAoreyJnbEJsZW5kQmFycmllciIsICIoKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsQmxlbmRCYXJyaWVyX18gfSwKK3siZ2xDb3B5SW1hZ2VTdWJEYXRhIiwgIihJSUlJSUlJSUlJSUlJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xDb3B5SW1hZ2VTdWJEYXRhX19JSUlJSUlJSUlJSUlJSUkgfSwKK3siZ2xEZWJ1Z01lc3NhZ2VDb250cm9sIiwgIihJSUlJW0lJWilWIiwgKHZvaWQgKikgYW5kcm9pZF9nbERlYnVnTWVzc2FnZUNvbnRyb2xfX0lJSUlfM0lJWiB9LAoreyJnbERlYnVnTWVzc2FnZUNvbnRyb2wiLCAiKElJSUlMamF2YS9uaW8vSW50QnVmZmVyO1opViIsICh2b2lkICopIGFuZHJvaWRfZ2xEZWJ1Z01lc3NhZ2VDb250cm9sX19JSUlJTGphdmFfbmlvX0ludEJ1ZmZlcl8yWiB9LAoreyJnbERlYnVnTWVzc2FnZUluc2VydCIsICIoSUlJSUlMamF2YS9sYW5nL1N0cmluZzspViIsICh2b2lkICopIGFuZHJvaWRfZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRfX0lJSUlJTGphdmFfbGFuZ19TdHJpbmdfMiB9LAoreyJnbERlYnVnTWVzc2FnZUNhbGxiYWNrIiwgIihMYW5kcm9pZC9vcGVuZ2wvR0xFUzMyJERlYnVnUHJvYzspViIsICh2b2lkICopIGFuZHJvaWRfZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayB9LAoreyJnbEdldERlYnVnTWVzc2FnZUxvZyIsICIoSUlbSUlbSUlbSUlbSUlbSUlbQkkpSSIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXREZWJ1Z01lc3NhZ2VMb2dfX0lJXzNJSV8zSUlfM0lJXzNJSV8zSUlfM0JJIH0sCit7ImdsR2V0RGVidWdNZXNzYWdlTG9nIiwgIihJTGphdmEvbmlvL0ludEJ1ZmZlcjtMamF2YS9uaW8vSW50QnVmZmVyO0xqYXZhL25pby9JbnRCdWZmZXI7TGphdmEvbmlvL0ludEJ1ZmZlcjtMamF2YS9uaW8vSW50QnVmZmVyO0xqYXZhL25pby9CeXRlQnVmZmVyOylJIiwgKHZvaWQgKikgYW5kcm9pZF9nbEdldERlYnVnTWVzc2FnZUxvZ19fSUxqYXZhX25pb19JbnRCdWZmZXJfMkxqYXZhX25pb19JbnRCdWZmZXJfMkxqYXZhX25pb19JbnRCdWZmZXJfMkxqYXZhX25pb19JbnRCdWZmZXJfMkxqYXZhX25pb19JbnRCdWZmZXJfMkxqYXZhX25pb19CeXRlQnVmZmVyXzIgfSwKK3siZ2xHZXREZWJ1Z01lc3NhZ2VMb2ciLCAiKElbSUlbSUlbSUlbSUkpW0xqYXZhL2xhbmcvU3RyaW5nOyIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXREZWJ1Z01lc3NhZ2VMb2dfX0lfM0lJXzNJSV8zSUlfM0lJIH0sCit7ImdsR2V0RGVidWdNZXNzYWdlTG9nIiwgIihJTGphdmEvbmlvL0ludEJ1ZmZlcjtMamF2YS9uaW8vSW50QnVmZmVyO0xqYXZhL25pby9JbnRCdWZmZXI7TGphdmEvbmlvL0ludEJ1ZmZlcjspW0xqYXZhL2xhbmcvU3RyaW5nOyIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXREZWJ1Z01lc3NhZ2VMb2dfX0lMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzJMamF2YV9uaW9fSW50QnVmZmVyXzIgfSwKK3siZ2xQdXNoRGVidWdHcm91cCIsICIoSUlJTGphdmEvbGFuZy9TdHJpbmc7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsUHVzaERlYnVnR3JvdXBfX0lJSUxqYXZhX2xhbmdfU3RyaW5nXzIgfSwKK3siZ2xQb3BEZWJ1Z0dyb3VwIiwgIigpViIsICh2b2lkICopIGFuZHJvaWRfZ2xQb3BEZWJ1Z0dyb3VwX18gfSwKK3siZ2xPYmplY3RMYWJlbCIsICIoSUlJTGphdmEvbGFuZy9TdHJpbmc7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsT2JqZWN0TGFiZWxfX0lJSUxqYXZhX2xhbmdfU3RyaW5nXzIgfSwKK3siZ2xHZXRPYmplY3RMYWJlbCIsICIoSUkpTGphdmEvbGFuZy9TdHJpbmc7IiwgKHZvaWQgKikgYW5kcm9pZF9nbEdldE9iamVjdExhYmVsIH0sCit7ImdsT2JqZWN0UHRyTGFiZWwiLCAiKEpMamF2YS9sYW5nL1N0cmluZzspViIsICh2b2lkICopIGFuZHJvaWRfZ2xPYmplY3RQdHJMYWJlbCB9LAoreyJnbEdldE9iamVjdFB0ckxhYmVsIiwgIihKKUxqYXZhL2xhbmcvU3RyaW5nOyIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXRPYmplY3RQdHJMYWJlbCB9LAoreyJnbEdldFBvaW50ZXJ2IiwgIihJKUoiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0UG9pbnRlcnYgfSwKK3siZ2xFbmFibGVpIiwgIihJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEVuYWJsZWlfX0lJIH0sCit7ImdsRGlzYWJsZWkiLCAiKElJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsRGlzYWJsZWlfX0lJIH0sCit7ImdsQmxlbmRFcXVhdGlvbmkiLCAiKElJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsQmxlbmRFcXVhdGlvbmlfX0lJIH0sCit7ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaSIsICIoSUlJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaV9fSUlJIH0sCit7ImdsQmxlbmRGdW5jaSIsICIoSUlJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsQmxlbmRGdW5jaV9fSUlJIH0sCit7ImdsQmxlbmRGdW5jU2VwYXJhdGVpIiwgIihJSUlJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEJsZW5kRnVuY1NlcGFyYXRlaV9fSUlJSUkgfSwKK3siZ2xDb2xvck1hc2tpIiwgIihJWlpaWilWIiwgKHZvaWQgKikgYW5kcm9pZF9nbENvbG9yTWFza2lfX0laWlpaIH0sCit7ImdsSXNFbmFibGVkaSIsICIoSUkpWiIsICh2b2lkICopIGFuZHJvaWRfZ2xJc0VuYWJsZWRpX19JSSB9LAoreyJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgiLCAiKElJSUxqYXZhL25pby9CdWZmZXI7SSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhfX0lJSUxqYXZhX25pb19CdWZmZXJfMkkgfSwKK3siZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgiLCAiKElJSUlJTGphdmEvbmlvL0J1ZmZlcjtJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4X19JSUlJSUxqYXZhX25pb19CdWZmZXJfMkkgfSwKK3siZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4IiwgIihJSUlMamF2YS9uaW8vQnVmZmVyO0lJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleF9fSUlJTGphdmFfbmlvX0J1ZmZlcl8ySUkgfSwKK3siZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4IiwgIihJSUlJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4X19JSUlJSUkgfSwKK3siZ2xGcmFtZWJ1ZmZlclRleHR1cmUiLCAiKElJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xGcmFtZWJ1ZmZlclRleHR1cmVfX0lJSUkgfSwKK3siZ2xQcmltaXRpdmVCb3VuZGluZ0JveCIsICIoRkZGRkZGRkYpViIsICh2b2lkICopIGFuZHJvaWRfZ2xQcmltaXRpdmVCb3VuZGluZ0JveF9fRkZGRkZGRkYgfSwKK3siZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzIiwgIigpSSIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzX18gfSwKK3siZ2xSZWFkblBpeGVscyIsICIoSUlJSUlJSUxqYXZhL25pby9CdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsUmVhZG5QaXhlbHNfX0lJSUlJSUlMamF2YV9uaW9fQnVmZmVyXzIgfSwKK3siZ2xHZXRuVW5pZm9ybWZ2IiwgIihJSUlbRkkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXRuVW5pZm9ybWZ2X19JSUlfM0ZJIH0sCit7ImdsR2V0blVuaWZvcm1mdiIsICIoSUlJTGphdmEvbmlvL0Zsb2F0QnVmZmVyOylWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEdldG5Vbmlmb3JtZnZfX0lJSUxqYXZhX25pb19GbG9hdEJ1ZmZlcl8yIH0sCit7ImdsR2V0blVuaWZvcm1pdiIsICIoSUlJW0lJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0blVuaWZvcm1pdl9fSUlJXzNJSSB9LAoreyJnbEdldG5Vbmlmb3JtaXYiLCAiKElJSUxqYXZhL25pby9JbnRCdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0blVuaWZvcm1pdl9fSUlJTGphdmFfbmlvX0ludEJ1ZmZlcl8yIH0sCit7ImdsR2V0blVuaWZvcm11aXYiLCAiKElJSVtJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEdldG5Vbmlmb3JtdWl2X19JSUlfM0lJIH0sCit7ImdsR2V0blVuaWZvcm11aXYiLCAiKElJSUxqYXZhL25pby9JbnRCdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0blVuaWZvcm11aXZfX0lJSUxqYXZhX25pb19JbnRCdWZmZXJfMiB9LAoreyJnbE1pblNhbXBsZVNoYWRpbmciLCAiKEYpViIsICh2b2lkICopIGFuZHJvaWRfZ2xNaW5TYW1wbGVTaGFkaW5nX19GIH0sCit7ImdsUGF0Y2hQYXJhbWV0ZXJpIiwgIihJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFBhdGNoUGFyYW1ldGVyaV9fSUkgfSwKK3siZ2xUZXhQYXJhbWV0ZXJJaXYiLCAiKElJW0lJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVGV4UGFyYW1ldGVySWl2X19JSV8zSUkgfSwKK3siZ2xUZXhQYXJhbWV0ZXJJaXYiLCAiKElJTGphdmEvbmlvL0ludEJ1ZmZlcjspViIsICh2b2lkICopIGFuZHJvaWRfZ2xUZXhQYXJhbWV0ZXJJaXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yIH0sCit7ImdsVGV4UGFyYW1ldGVySXVpdiIsICIoSUlbSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xUZXhQYXJhbWV0ZXJJdWl2X19JSV8zSUkgfSwKK3siZ2xUZXhQYXJhbWV0ZXJJdWl2IiwgIihJSUxqYXZhL25pby9JbnRCdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVGV4UGFyYW1ldGVySXVpdl9fSUlMamF2YV9uaW9fSW50QnVmZmVyXzIgfSwKK3siZ2xHZXRUZXhQYXJhbWV0ZXJJaXYiLCAiKElJW0lJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0VGV4UGFyYW1ldGVySWl2X19JSV8zSUkgfSwKK3siZ2xHZXRUZXhQYXJhbWV0ZXJJaXYiLCAiKElJTGphdmEvbmlvL0ludEJ1ZmZlcjspViIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXRUZXhQYXJhbWV0ZXJJaXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yIH0sCit7ImdsR2V0VGV4UGFyYW1ldGVySXVpdiIsICIoSUlbSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2X19JSV8zSUkgfSwKK3siZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2IiwgIihJSUxqYXZhL25pby9JbnRCdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0VGV4UGFyYW1ldGVySXVpdl9fSUlMamF2YV9uaW9fSW50QnVmZmVyXzIgfSwKK3siZ2xTYW1wbGVyUGFyYW1ldGVySWl2IiwgIihJSVtJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFNhbXBsZXJQYXJhbWV0ZXJJaXZfX0lJXzNJSSB9LAoreyJnbFNhbXBsZXJQYXJhbWV0ZXJJaXYiLCAiKElJTGphdmEvbmlvL0ludEJ1ZmZlcjspViIsICh2b2lkICopIGFuZHJvaWRfZ2xTYW1wbGVyUGFyYW1ldGVySWl2X19JSUxqYXZhX25pb19JbnRCdWZmZXJfMiB9LAoreyJnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2IiwgIihJSVtJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFNhbXBsZXJQYXJhbWV0ZXJJdWl2X19JSV8zSUkgfSwKK3siZ2xTYW1wbGVyUGFyYW1ldGVySXVpdiIsICIoSUlMamF2YS9uaW8vSW50QnVmZmVyOylWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFNhbXBsZXJQYXJhbWV0ZXJJdWl2X19JSUxqYXZhX25pb19JbnRCdWZmZXJfMiB9LAoreyJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYiLCAiKElJW0lJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0U2FtcGxlclBhcmFtZXRlcklpdl9fSUlfM0lJIH0sCit7ImdsR2V0U2FtcGxlclBhcmFtZXRlcklpdiIsICIoSUlMamF2YS9uaW8vSW50QnVmZmVyOylWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yIH0sCit7ImdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYiLCAiKElJW0lJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZfX0lJXzNJSSB9LAoreyJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2IiwgIihJSUxqYXZhL25pby9JbnRCdWZmZXI7KVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZfX0lJTGphdmFfbmlvX0ludEJ1ZmZlcl8yIH0sCit7ImdsVGV4QnVmZmVyIiwgIihJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xUZXhCdWZmZXJfX0lJSSB9LAoreyJnbFRleEJ1ZmZlclJhbmdlIiwgIihJSUlJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFRleEJ1ZmZlclJhbmdlX19JSUlJSSB9LAoreyJnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlIiwgIihJSUlJSUlaKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVfX0lJSUlJSVogfSwKK307CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX29wZW5nbF9qbmlfR0xFUzMyKEpOSUVudiAqX2VudikKK3sKKyAgICBpbnQgZXJyOworICAgIGVyciA9IGFuZHJvaWQ6OkFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoX2VudiwgY2xhc3NQYXRoTmFtZSwgbWV0aG9kcywgTkVMRU0obWV0aG9kcykpOworICAgIHJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3V0aWxfTG9nLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Mb2cuY3BwCmluZGV4IDJkMjNjZGEuLjc3MTllMzEgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Mb2cuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Mb2cuY3BwCkBAIC0xOCw4ICsxOCwxMCBAQAogI2RlZmluZSBMT0dfTkFNRVNQQUNFICJsb2cudGFnLiIKICNkZWZpbmUgTE9HX1RBRyAiTG9nX3ByaW50bG4iCiAKKyNpbmNsdWRlIDxhbmRyb2lkLWJhc2UvbWFjcm9zLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxsb2cvbG9nZ2VyLmg+ICAgICAgICAgICAgICAgLy8gRm9yIExPR0dFUl9FTlRSWV9NQVhfUEFZTE9BRC4KICNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KICNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CiAKQEAgLTEwOSwxMiArMTExLDIzIEBACiB9CiAKIC8qCisgKiBJbiBjbGFzcyBhbmRyb2lkLnV0aWwuTG9nOgorICogIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbG9nZ2VyX2VudHJ5X21heF9wYXlsb2FkX25hdGl2ZSgpCisgKi8KK3N0YXRpYyBqaW50IGFuZHJvaWRfdXRpbF9Mb2dfbG9nZ2VyX2VudHJ5X21heF9wYXlsb2FkX25hdGl2ZShKTklFbnYqIGVudiBBVFRSSUJVVEVfVU5VU0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYmplY3QgY2xhenogQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8amludD4oTE9HR0VSX0VOVFJZX01BWF9QQVlMT0FEKTsKK30KKworLyoKICAqIEpOSSByZWdpc3RyYXRpb24uCiAgKi8KIHN0YXRpYyBjb25zdCBKTklOYXRpdmVNZXRob2QgZ01ldGhvZHNbXSA9IHsKICAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KICAgICB7ICJpc0xvZ2dhYmxlIiwgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nO0kpWiIsICh2b2lkKikgYW5kcm9pZF91dGlsX0xvZ19pc0xvZ2dhYmxlIH0sCiAgICAgeyAicHJpbnRsbl9uYXRpdmUiLCAgIihJSUxqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nOylJIiwgKHZvaWQqKSBhbmRyb2lkX3V0aWxfTG9nX3ByaW50bG5fbmF0aXZlIH0sCisgICAgeyAibG9nZ2VyX2VudHJ5X21heF9wYXlsb2FkX25hdGl2ZSIsICAiKClJIiwgKHZvaWQqKSBhbmRyb2lkX3V0aWxfTG9nX2xvZ2dlcl9lbnRyeV9tYXhfcGF5bG9hZF9uYXRpdmUgfSwKIH07CiAKIGludCByZWdpc3Rlcl9hbmRyb2lkX3V0aWxfTG9nKEpOSUVudiogZW52KQpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF92aWV3X1N1cmZhY2UuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X1N1cmZhY2UuY3BwCmluZGV4IGY2ZTY4YzQuLmNmNjg0NDkgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19TdXJmYWNlLmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5jcHAKQEAgLTQ2NSwxMSArNDY1LDE3IEBACiAgICAgYW53LT5xdWVyeShhbncsIE5BVElWRV9XSU5ET1dfSEVJR0hULCAmdmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KKwogc3RhdGljIGpsb25nIG5hdGl2ZUdldE5leHRGcmFtZU51bWJlcihKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqbG9uZyBuYXRpdmVPYmplY3QpIHsKICAgICBTdXJmYWNlKiBzdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxTdXJmYWNlKj4obmF0aXZlT2JqZWN0KTsKICAgICByZXR1cm4gc3VyZmFjZS0+Z2V0TmV4dEZyYW1lTnVtYmVyKCk7CiB9CiAKK3N0YXRpYyBqaW50IG5hdGl2ZVNldFNjYWxpbmdNb2RlKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGpsb25nIG5hdGl2ZU9iamVjdCwgamludCBzY2FsaW5nTW9kZSkgeworICAgIFN1cmZhY2UqIHN1cmZhY2UgPSByZWludGVycHJldF9jYXN0PFN1cmZhY2UqPihuYXRpdmVPYmplY3QpOworICAgIHJldHVybiBzdXJmYWNlLT5zZXRTY2FsaW5nTW9kZShzY2FsaW5nTW9kZSk7Cit9CisKIG5hbWVzcGFjZSB1aXJlbmRlcmVyIHsKIAogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ6OnVpcmVuZGVyZXI6OnJlbmRlcnRocmVhZDsKQEAgLTU0Niw2ICs1NTIsNyBAQAogICAgIHsibmF0aXZlR2V0V2lkdGgiLCAiKEopSSIsICh2b2lkKiluYXRpdmVHZXRXaWR0aCB9LAogICAgIHsibmF0aXZlR2V0SGVpZ2h0IiwgIihKKUkiLCAodm9pZCopbmF0aXZlR2V0SGVpZ2h0IH0sCiAgICAgeyJuYXRpdmVHZXROZXh0RnJhbWVOdW1iZXIiLCAiKEopSiIsICh2b2lkKiluYXRpdmVHZXROZXh0RnJhbWVOdW1iZXIgfSwKKyAgICB7Im5hdGl2ZVNldFNjYWxpbmdNb2RlIiwgIihKSSlJIiwgKHZvaWQqKW5hdGl2ZVNldFNjYWxpbmdNb2RlIH0sCiAKICAgICAvLyBIV1VJIGNvbnRleHQKICAgICB7Im5Id3VpQ3JlYXRlIiwgIihKSilKIiwgKHZvaWQqKSBod3VpOjpjcmVhdGUgfSwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2NvbV9hbmRyb2lkX2ludGVybmFsX29zX1p5Z290ZS5jcHAgYi9jb3JlL2puaS9jb21fYW5kcm9pZF9pbnRlcm5hbF9vc19aeWdvdGUuY3BwCmluZGV4IDk2ZDE1MGIuLjA0MWU2OTMgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2NvbV9hbmRyb2lkX2ludGVybmFsX29zX1p5Z290ZS5jcHAKKysrIGIvY29yZS9qbmkvY29tX2FuZHJvaWRfaW50ZXJuYWxfb3NfWnlnb3RlLmNwcApAQCAtNjA1LDEwICs2MDUsMzIgQEAKICAgICAgICAgamludCBkZWJ1Z19mbGFncywgam9iamVjdEFycmF5IHJsaW1pdHMsCiAgICAgICAgIGppbnQgbW91bnRfZXh0ZXJuYWwsIGpzdHJpbmcgc2VfaW5mbywganN0cmluZyBzZV9uYW1lLAogICAgICAgICBqaW50QXJyYXkgZmRzVG9DbG9zZSwganN0cmluZyBpbnN0cnVjdGlvblNldCwganN0cmluZyBhcHBEYXRhRGlyKSB7Ci0gICAgLy8gR3JhbnQgQ0FQX1dBS0VfQUxBUk0gdG8gdGhlIEJsdWV0b290aCBwcm9jZXNzLgogICAgIGpsb25nIGNhcGFiaWxpdGllcyA9IDA7CisKKyAgICAvLyBHcmFudCBDQVBfV0FLRV9BTEFSTSB0byB0aGUgQmx1ZXRvb3RoIHByb2Nlc3MuCiAgICAgaWYgKHVpZCA9PSBBSURfQkxVRVRPT1RIKSB7Ci0gICAgICAgIGNhcGFiaWxpdGllcyB8PSAoMUxMIDw8IENBUF9XQUtFX0FMQVJNKTsKKyAgICAgIGNhcGFiaWxpdGllcyB8PSAoMUxMIDw8IENBUF9XQUtFX0FMQVJNKTsKKyAgICB9CisKKyAgICAvLyBHcmFudCBDQVBfQkxPQ0tfU1VTUEVORCB0byBwcm9jZXNzZXMgdGhhdCBiZWxvbmcgdG8gR0lEICJ3YWtlbG9jayIKKyAgICBib29sIGdpZF93YWtlbG9ja19mb3VuZCA9IGZhbHNlOworICAgIGlmIChnaWQgPT0gQUlEX1dBS0VMT0NLKSB7CisgICAgICBnaWRfd2FrZWxvY2tfZm91bmQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoZ2lkcyAhPSBOVUxMKSB7CisgICAgICBqc2l6ZSBnaWRzX251bSA9IGVudi0+R2V0QXJyYXlMZW5ndGgoZ2lkcyk7CisgICAgICBTY29wZWRJbnRBcnJheVJPIGFyKGVudiwgZ2lkcyk7CisgICAgICBpZiAoYXIuZ2V0KCkgPT0gTlVMTCkgeworICAgICAgICBSdW50aW1lQWJvcnQoZW52LCBfX0xJTkVfXywgIkJhZCBnaWRzIGFycmF5Iik7CisgICAgICB9CisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGdpZHNfbnVtOyBpKyspIHsKKyAgICAgICAgaWYgKGFyW2ldID09IEFJRF9XQUtFTE9DSykgeworICAgICAgICAgIGdpZF93YWtlbG9ja19mb3VuZCA9IHRydWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGdpZF93YWtlbG9ja19mb3VuZCkgeworICAgICAgY2FwYWJpbGl0aWVzIHw9ICgxTEwgPDwgQ0FQX0JMT0NLX1NVU1BFTkQpOwogICAgIH0KIAogICAgIHJldHVybiBGb3JrQW5kU3BlY2lhbGl6ZUNvbW1vbihlbnYsIHVpZCwgZ2lkLCBnaWRzLCBkZWJ1Z19mbGFncywKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX2Jhc2UueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmFzZS54bWwKaW5kZXggYjY5ZWIyNC4uZmRiYmJkNiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmFzZS54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmFzZS54bWwKQEAgLTI1LDEyICsyNSwxMiBAQAogICAgIDxMaW5lYXJMYXlvdXQKICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9ub3RpZmljYXRpb25fbWFpbl9jb2x1bW4iCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0idG9wIgogICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5TdGFydD0iQGRpbWVuL25vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9zdGFydCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luRW5kPSJAZGltZW4vbm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX2VuZCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSJAZGltZW4vbm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX3RvcCIKLSAgICAgICAgYW5kcm9pZDptaW5IZWlnaHQ9IkBkaW1lbi9ub3RpZmljYXRpb25fbWluX2NvbnRlbnRfaGVpZ2h0IgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Cb3R0b209IkBkaW1lbi9ub3RpZmljYXRpb25fY29udGVudF9tYXJnaW5fYm90dG9tIgogICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKICAgICAgICAgPgogICAgICAgICA8aW5jbHVkZSBsYXlvdXQ9IkBsYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX3BhcnRfbGluZTEiIC8+CkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImJvdHRvbSIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IkBkaW1lbi9ub3RpZmljYXRpb25fY29udGVudF9tYXJnaW5fc3RhcnQiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMTFkcCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luRW5kPSJAZGltZW4vbm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX2VuZCI+CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkVuZD0iQGRpbWVuL25vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9lbmQiID4KICAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9wcm9ncmVzcyIgLz4KICAgICA8L0ZyYW1lTGF5b3V0PgogICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfcmlnaHRfaWNvbiIgLz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX2JpZ19iYXNlLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX2JpZ19iYXNlLnhtbAppbmRleCBlYjAyZThiLi45MWE1Y2ViIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9iaWdfYmFzZS54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmlnX2Jhc2UueG1sCkBAIC0yNSw3ICsyNSw3IEBACiAgICAgPEZyYW1lTGF5b3V0CiAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnRfY29udGVudCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJAZGltZW4vbm90aWZpY2F0aW9uX21pbl9oZWlnaHQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJ0b3AiCiAgICAgICAgIGFuZHJvaWQ6dGFnPSJiYXNlIgogICAgICAgICA+CkBAIC0zOCw3ICszOCw3IEBACiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5TdGFydD0iQGRpbWVuL25vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9zdGFydCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkVuZD0iQGRpbWVuL25vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9lbmQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IkBkaW1lbi9ub3RpZmljYXRpb25fY29udGVudF9tYXJnaW5fdG9wIgotICAgICAgICAgICAgYW5kcm9pZDptaW5IZWlnaHQ9IkBkaW1lbi9ub3RpZmljYXRpb25fbWluX2NvbnRlbnRfaGVpZ2h0IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSJAZGltZW4vbm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX2JvdHRvbSIKICAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgogICAgICAgICAgICAgPgogICAgICAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9wYXJ0X2xpbmUxIiAvPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmlnX21lZGlhLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX2JpZ19tZWRpYS54bWwKaW5kZXggMDQyN2M4YS4uYzNkYjdjNSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmlnX21lZGlhLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9iaWdfbWVkaWEueG1sCkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IkBkaW1lbi9ub3RpZmljYXRpb25fY29udGVudF9tYXJnaW5fdG9wIgogICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5TdGFydD0iQGRpbWVuL25vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9zdGFydCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSJAZGltZW4vbm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX2JvdHRvbSIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luRW5kPSIyNGRwIgogICAgICAgICBhbmRyb2lkOmxheW91dF90b1N0YXJ0T2Y9IkBpZC9yaWdodF9pY29uIgogICAgICAgICBhbmRyb2lkOm1pbkhlaWdodD0iQGRpbWVuL25vdGlmaWNhdGlvbl9taW5fY29udGVudF9oZWlnaHQiCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9iaWdfdGV4dC54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9iaWdfdGV4dC54bWwKaW5kZXggOWUwMTBmMi4uZGU5ZjU3MiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfYmlnX3RleHQueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX2JpZ190ZXh0LnhtbApAQCAtMzksMTAgKzM5LDExIEBACiAgICAgICAgIDxMaW5lYXJMYXlvdXQKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjBkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iMTNkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iQGRpbWVuL25vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9ib3R0b20iCiAgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgogICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJ0b3AiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjEuNWRwIgogICAgICAgICAgICAgPgogICAgICAgICAgICAgPGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5JbWFnZUZsb2F0aW5nVGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9iaWdfdGV4dCIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuTWF0ZXJpYWwuTm90aWZpY2F0aW9uIgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfaW5ib3gueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfaW5ib3gueG1sCmluZGV4IDhjMGFiYzkuLjE0YmY4OTkgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX2luYm94LnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9pbmJveC54bWwKQEAgLTEyMywxMyArMTIzLDYgQEAKICAgICAgICAgICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKICAgICAgICAgICAgIC8+Ci0gICAgICAgIDxGcmFtZUxheW91dAotICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9pbmJveF9lbmRfcGFkIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMTNkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMCIKLSAgICAgICAgLz4KICAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L25vdGlmaWNhdGlvbl9tYXRlcmlhbF9hY3Rpb25fbGlzdCIgLz4KICAgICA8L0xpbmVhckxheW91dD4KICAgICA8aW5jbHVkZSBsYXlvdXQ9IkBsYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX3JpZ2h0X2ljb24iIC8+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9tZWRpYS54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9tYXRlcmlhbF9tZWRpYS54bWwKaW5kZXggZGM0YWZiOC4uZjBjZWQ1ZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfbWF0ZXJpYWxfbWVkaWEueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX21hdGVyaWFsX21lZGlhLnhtbApAQCAtMjksNyArMjksNyBAQAogICAgIDxMaW5lYXJMYXlvdXQKICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9ub3RpZmljYXRpb25fbWFpbl9jb2x1bW4iCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iQGRpbWVuL25vdGlmaWNhdGlvbl9taW5fY29udGVudF9oZWlnaHQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IiMwMDAwMDAwMCIKICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IkBkaW1lbi9ub3RpZmljYXRpb25fY29udGVudF9tYXJnaW5fc3RhcnQiCkBAIC00Myw2ICs0Myw3IEBACiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJmaWxsX3ZlcnRpY2FsIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgogICAgICAgICAgICAgYW5kcm9pZDptaW5IZWlnaHQ9IkBkaW1lbi9ub3RpZmljYXRpb25fbWluX2NvbnRlbnRfaGVpZ2h0IgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSJAZGltZW4vbm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX2JvdHRvbSIKICAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgogICAgICAgICAgICAgPgogICAgICAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9wYXJ0X2xpbmUxIi8+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9wYXJ0X2xpbmUxLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX3BhcnRfbGluZTEueG1sCmluZGV4IGU3YWM0MDguLjMwOGIzMGYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX3BhcnRfbGluZTEueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX3BhcnRfbGluZTEueG1sCkBAIC0yMCw3ICsyMCw2IEBACiAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgotICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMWRwIgogICAgID4KICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90aXRsZSIKICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iQHN0eWxlL1RleHRBcHBlYXJhbmNlLk1hdGVyaWFsLk5vdGlmaWNhdGlvbi5UaXRsZSIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvbm90aWZpY2F0aW9uX3RlbXBsYXRlX3BhcnRfbGluZTMueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfcGFydF9saW5lMy54bWwKaW5kZXggNzYzMzdhYy4uZGM0N2E0OCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfcGFydF9saW5lMy54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9ub3RpZmljYXRpb25fdGVtcGxhdGVfcGFydF9saW5lMy54bWwKQEAgLTIwLDE3ICsyMCwxOCBAQAogICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCiAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCiAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKLSAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICBhbmRyb2lkOmdyYXZpdHk9InRvcCIKICAgICA+CiAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvdGV4dCIKICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iQHN0eWxlL1RleHRBcHBlYXJhbmNlLk1hdGVyaWFsLk5vdGlmaWNhdGlvbiIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJ0b3AiCiAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgIGFuZHJvaWQ6ZmFkaW5nRWRnZT0iaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSIxLjVkcCIKICAgICAgICAgLz4KICAgICA8SW1hZ2VWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvcHJvZmlsZV9iYWRnZV9saW5lMyIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IkBkaW1lbi9ub3RpZmljYXRpb25fYmFkZ2Vfc2l6ZSIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCmluZGV4IDFhYzdlOTguLjA0NDY2ZTUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1hZi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IlNsdWl0IG5vdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJJbmhvdWQgdmVyc3RlZWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJWZWlsaWdtb2R1cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQtc3RlbHNlbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29vbmxpayI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iU255Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3BpZWVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iUGxhayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iUGxhayBhcyBza29vbnRla3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IlZlcnZhbmcuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iVmVlIHVpdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iS29waWVlciBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJLaWVzIHRla3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+Ik9udGRvZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IkhlcmRvZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVGVrc2tldXNlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IlZvZWcgYnkgd29vcmRlYm9layI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iVmVlIHVpdCI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJWZXJhbmRlciBtdXVycGFwaWVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iS2VubmlzZ2V3aW5nbHVpc3RlcmFhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iVG9lc3RhbmR2ZXJza2FmZmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iS2VubmlzZ2V3aW5nYXNzaXN0ZW50Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gZ2Vha3RpdmVlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBpcyBnZWFrdGl2ZWVyIGRldXIgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iUmFhayBvbSBkaWUgbmV0d2VyayB0ZSBiZXN0dXVyLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJPcGdlZGF0ZWVyIGRldXIgam91IGFkbWluaXN0cmF0ZXVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJEZXVyIGpvdSBhZG1pbmlzdHJhdGV1ciB1aXRnZXZlZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iT20gYmF0dGVyeWxld2UgdGUgaGVscCB2ZXJiZXRlciwgdmVybWluZGVyIGJhdHRlcnliZXNwYWFyZGVyIGpvdSB0b2VzdGVsIHNlIHdlcmt2ZXJyaWd0aW5nIGVuIGJlcGVyayB2aWJyYXNpZSwgbGlnZ2luZ2RpZW5zdGUgZW4gZGllIG1lZXN0ZSBhZ3Rlcmdyb25kZGF0YS4gRS1wb3MsIGJvb2Rza2FwcGUgZW4gYW5kZXIgcHJvZ3JhbW1lIHdhdCBvcCBzaW5rcm9uaXNlcmluZyBzdGFhdG1hYWssIHNhbCBkYWxrIG5pZSBvcGRhdGVlciB0ZW5zeSBqeSBodWxsZSBvb3BtYWFrIG5pZS5cblxuQmF0dGVyeWJlc3BhYXJkZXIgc2tha2VsIG91dG9tYXRpZXMgYWYgd2FubmVlciBqb3UgdG9lc3RlbCBiZXNpZyBpcyBvbSB0ZSBsYWFpLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkJlbGFuZ3Jpa2hlaWQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkdlYmxva2tlZXI6IE1vZXQgbm9vaXQgaGllcmRpZSBrZW5uaXNnZXdpbmdzIHd5cyBuaWUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTGFhZzogV3lzIHNvbmRlciBrbGFuayBhYW4gZGllIG9uZGVya2FudCB2YW4gZGllIGtlbm5pc2dld2luZ2x5cyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFhbDogV3lzIGhpZXJkaWUga2VubmlzZ2V3aW5ncyBzb25kZXIga2xhbmsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Ikhvb2c6IFd5cyBhYW4gZGllIGJva2FudCB2YW4gZGllIGtlbm5pc2dld2luZ3NseXMgZW4gbWFhayBcJ24gZ2VsdWlkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IkRyaW5nZW5kOiBWZXJza3luIHZsdWd0aWcgb3AgZGllIHNrZXJtIGVuIG1hYWsgXCduIGdlbHVpZCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCBtaW51dGUgbGFuayAodG90IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkVlbiBtaW51dXQgbGFuayAodG90IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYW0vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCmluZGV4IGQ3YjA4ZWIuLmIyNjIzMjUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYW0vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuGKoOGIgeGKlSDhiYbhiI3hjY0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4Yut4YuY4Ym24Ym9IOGJsOGLsOGJpeGJgOGLi+GIjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuGLqOGImuGLq+GIteGJsOGIm+GIneGKlSDhiIHhipDhibMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIOGIteGIreGLk+GJtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i4Yuo4YyN4YiNIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLhiYHhiKjhjKUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuGMjeGIi+GJo+GMrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuGIiOGMpeGNjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4Yql4YqV4YuwIOGIteGKkOGMoyDhiqDhiI3hiaMg4Yy94YiB4Y2NIOGIiOGMpeGNjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i4Ymw4YqrLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuGIsOGIreGLnSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i4YuoVVJMIOGJheGMgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuGNheGIgeGNjSDhiJ3hiKjhjKUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuGJgOGIjeGJpeGItSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i4Yu14YyI4YidIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IuGLqOGNheGIgeGNjSDhiJ3hiK3hjKsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4YuI4YuwIOGImOGLneGMiOGJoCDhiYPhiIvhibUg4Yqg4Yqt4YiNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLhiLDhiK3hi50iPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4YiN4Yyj4Y2NIOGIiOGLjeGMpSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuGIm+GIs+GLiOGJguGLqyDhiqDhi7PhiJvhjK0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuGLqOGIgeGKlOGJsyDhiqDhiYXhiKvhiaIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLhi6jhiJvhiLPhi4jhiYLhi6sg4Yio4Yuz4Ym1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4YqQ4YmF4Ym34YiN4Y2iIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIOGJoDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPuGMiOGJpeGIr+GIjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuGKoOGLjeGJs+GIqOGImOGIqOGJpSDhiIjhiJvhi7DhiKvhjIDhibUgIOGKleGKq+GNoiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLhiaDhiqDhiLXhibDhi7Phi7PhiKrhi44g4Ymw4YuY4Yid4YqX4YiNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLhiaDhiqXhiK3hiLXhi44g4Yqg4Yi14Ymw4Yuz4Yuz4YiqIOGJsOGIsOGIreGLn+GIjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i4Yuo4Ymj4Ym14YiqIOGLleGLteGInOGKlSDhiIjhiJvhiLvhiLvhiI0g4Yib4YyI4YudIOGKpeGKleGLsuGJu+GIjeGNoyDhiqLhiJzhi63hiI3hjaMg4YiY4YiN4YuV4Yqt4Ym1IOGKoOGIi+GIi+GKrSDhiqXhipMg4YiM4YiO4Ym9IOGJoOGIm+GImOGIs+GIsOGIjSDhiIvhi60g4Yuo4Yia4YiY4Yio4Yqu4YuZIOGImOGJsOGMjeGJoOGIquGLq+GLjuGJvSDhiqXhiK3hiLXhi44g4Yqr4YiN4Yqo4Y2I4Ymx4YuL4Ym44YuNIOGJoOGJgOGIrSDhiqDhi63hi5jhiJ3hipHhiJ3hjaJcblxu4Yuo4Ymj4Ym14YiqIOGKg+GLreGIjSDhiYbhjKPhiaIg4Yuo4Yql4Yit4Yi14YuOIOGImOGIo+GIquGLqyDhioPhi63hiI0g4Ymg4Yia4Yie4YiL4Ymg4Ym1IOGMiuGLnCDhiaDhiKvhiLUt4Yiw4YitIOGLreGMoOGNi+GIjeGNoiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IuGKoOGIteGNiOGIi+GMiuGKkOGJtSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i4Yuo4Ymz4YyI4Yuw4Y2mIOGKpeGKkOGKneGIheGKlSDhiJvhiLPhi4jhiYLhi6vhi47hib0g4Y2I4Y2F4YieIOGKoOGJs+GIs+GLrSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLhi53hiYXhibDhipvhjaYg4Ymg4Yy44Yyl4YmzIOGLqOGIm+GIs+GLiOGJguGLqyDhi53hiK3hi53hiK0g4Yuo4Ymz4Ym94Yqb4YuN4YqVIOGKreGNjeGIjSDhiqDhiLPhi60iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+IuGImOGLsOGJoOGKm+GNpiDhiaDhjLjhjKXhibMg4Yql4YqQ4Yqd4YiF4YqVIOGIm+GIs+GLiOGJguGLq+GLjuGJvSDhiqDhiLPhi60iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuGKqOGNjeGJsOGKm+GNpiDhi6jhiJvhiLPhi4jhiYLhi6vhi47hib3hipUg4Yud4Yit4Yud4YitIOGLqOGIi+GLreGKm+GLjeGKlSDhiq3hjY3hiI0g4Yqg4Yiz4YutIOGKpeGKkyDhi7XhiJ3hjYUg4Yqg4Yiw4YibIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuGKoOGIteGJuOGKs+GLreGNpiDhi4jhi7Ag4YyI4Yy4IOGIm+GLq+GLjSDhiqDhipXhiLMg4Yql4YqTIOGLteGIneGNhSDhiYXhi7MiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7hiIglMSRkIOGLsOGJguGJg+GLjuGJvSAo4Yql4Yi14YqoIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOGLteGIqOGItSk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPuGIiCUxJGQg4Yuw4YmC4YmD4YuO4Ym9ICjhiqXhiLXhiqggPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g4Yu14Yio4Yi1KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWFyL3N0cmluZ3MueG1sCmluZGV4IGMxOGZjNGEuLjZlYjAwNWMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbApAQCAtMjI3LDYgKzIyNyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+ItmC2YHZhCDYp9mE2KLZhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLYp9mE2YXYrdiq2YjZitin2Kog2YXYrtmB2YrYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Itin2YTZiNi22Lkg2KfZhNii2YXZhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IuKAj9mG2LjYp9mFIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+Iti02K7YtdmKIjwvc3RyaW5nPgpAQCAtODc4LDEwICs4NzksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLZgti1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLZhtiz2K4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLZhNi12YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+Itin2YTZhNi12YIg2YPZhti1INi52KfYr9mKIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLYp9iz2KrYqNiv2KfZhC4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLYrdiw2YEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IuKAj9mG2LPYriDYudmG2YjYp9mGIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+Itiq2K3Yr9mK2K8g2YbYtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i2KrYsdin2KzYuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i2KXYudin2K/YqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLYqtit2K/ZitivINin2YTZhti1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+Itil2LbYp9mB2Kkg2KXZhNmJINin2YTZgtin2YXZiNizIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLYrdiw2YEiPC9zdHJpbmc+CkBAIC0xMTM1LDYgKzExMzksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i2KrYutmK2YrYsSDYp9mE2K7ZhNmB2YrYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Itio2LHZhtin2YXYrCDYqtmE2YLZkdmKINin2YTYpdi02LnYp9ix2KfYqiDYp9mE2LXZiNiq2YrYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i2YXZiNmB2LEg2KfZhNit2KfZhNipIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i2YXYs9in2LnYryDYp9mE2KXYtNi52KfYsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4i4oCP2KrZhSDYqtmG2LTZiti3INin2YTYtNio2YPYqSDYp9mE2LjYp9mH2LHZitipINin2YTYrtin2LXYqSAoVlBOKSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IuKAj9iq2YUg2KrZhti02YrYtyBWUE4g2KjZiNin2LPYt9ipIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+Itin2YTZhdizINmE2KXYr9in2LHYqSDYp9mE2LTYqNmD2KkuIjwvc3RyaW5nPgpAQCAtMTQ3NiwxMiArMTQ4MSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+Itiq2YUg2KfZhNiq2K3Yr9mK2Ksg2KjZiNin2LPYt9ipINin2YTZhdi02LHZgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i2KrZhSDYrdiw2YEg2KfZhNit2LLZhdipINi52YYg2LfYsdmK2YIg2KfZhNmF2LTYsdmBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLZhNmE2YXYs9in2LnYr9ipINmB2Yog2KrYrdiz2YrZhiDYudmF2LEg2KfZhNio2LfYp9ix2YrYqdiMINmK2LPYp9i52K8g2YXZiNmB2LEg2KfZhNio2LfYp9ix2YrYqSDZgdmKINiq2YLZhNmK2YQg2KPYr9in2KEg2KfZhNis2YfYp9iyINmI2YrZgdix2LYg2YLZitiv2YvYpyDYudmE2Ykg2KfZhNin2YfYqtiy2KfYsiDZiNiu2K/Zhdin2Kog2KfZhNmF2YjZgti5INmI2YXYudi42YUg2KjZitin2YbYp9iqINin2YTYrtmE2YHZitipLiDZgtivINmE2Kcg2YrYqtmFINiq2K3Yr9mK2Ksg2KfZhNio2LHZitivINin2YTYpdmE2YPYqtix2YjZhtmKINmI2KfZhNmF2LHYp9iz2YTYqSDZiNin2YTYqti32KjZitmC2KfYqiDYp9mE2KPYrtix2Ykg2KfZhNiq2Yog2KrYudiq2YXYryDYudmE2Ykg2KfZhNmF2LLYp9mF2YbYqSDZhdinINmE2YUg2KrZgdiq2K3Zh9inLlxuXG7Zitiq2YUg2KXZitmC2KfZgSDZhdmI2YHYsSDYp9mE2KjYt9in2LHZitipINiq2YTZgtin2KbZitmL2Kcg2KPYq9mG2KfYoSDYtNit2YYg2KfZhNis2YfYp9iyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+Itin2YTYo9mH2YXZitipIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLZhdit2LjZiNixOiDYudiv2YUg2LnYsdi2INmH2LDZhyDYp9mE2KXYtNi52KfYsdin2Kog2YXYt9mE2YLZi9inIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+ItmF2YbYrtmB2LYg2KfZhNij2YfZhdmK2Kk6INi52LHYtiDYqNij2LPZgdmEINmC2KfYptmF2Kkg2KfZhNil2LTYudin2LHYp9iqINmI2KjYr9mI2YYg2KrZhtio2YrZhyDYtdmI2KrZiiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i2LnYp9iv2Yo6INi52LHYtiDZh9iw2Ycg2KfZhNil2LTYudin2LHYp9iqINio2K/ZiNmGINiq2YbYqNmK2Ycg2LXZiNiq2YoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Iti52KfZhNmKINin2YTYo9mH2YXZitipOiDYudix2LYg2KjYo9i52YTZiSDZgtin2KbZhdipINin2YTYpdi02LnYp9ix2KfYqiDZhdi5INil2LXYr9in2LEg2KrZhtio2YrZhyDYtdmI2KrZiiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLYudin2KzZhDog2KfZhNi42YfZiNixINiz2LHZiti52YvYpyDYudmE2Ykg2KfZhNi02KfYtNipINmF2Lkg2KXYtdiv2KfYsSDYqtmG2KjZitmHINi12YjYqtmKIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Inplcm8iPuKAj9mE2YXYr9ipINij2YLZhCDZhdmGINiv2YLZitmC2KkgKCUxJGQpwqAo2K3YqtmJIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJ0d28iPuKAj9mE2YXYr9ipINiv2YLZitmC2KrZitmGwqAoJTEkZCkgKNit2KrZiSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWF6LXJBWi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCmluZGV4IDVkZTBiNTkuLjMwYjZlNzcgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4ixLBuZGkga2lsaWRsyZl5aW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iTcmZem11biBnaXpsaWRpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlTJmWhsw7xryZlzaXogcmVqaW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIHNpc3RlbWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IsWeyZl4c2kiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IkvJmXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcHlhbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJZZXJsyZnFn2RpciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iQWRpIG3JmXRuIGtpbWkga8O2w6fDvHLDvG4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IsaPdsmZeiBldC4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJTaWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCBrb3B5YWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iTcmZdG4gc2XDp2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJMyZnEn3YgZWRpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iWWVuaWTJmW4gZWRpbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJNyZl0biBzZcOnaW1pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkzDvMSfyZl0yZkgyZlsYXbJmSBldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iU2lsIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IkRpdmFyIGthxJ/EsXrEsW7EsSBkyZl5acWfaW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJCaWxkaXJpxZ8gZGlubMmZecmZbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4ixZ7JmXJhaXQgcHJvdmF5ZGVyaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IkJpbGRpcmnFnyBrw7ZtyZlrw6dpc2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBha3RpdmzJmcWfZGlyaWxkaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gdMmZcsmZZmluZMmZbiBha3RpdmzJmcWfZGlyaWxpYiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IsWeyZliyZlryZluaSBpZGFyyZkgZXRtyZlrIMO8w6fDvG4gdG94dW51bi4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iU2l6aW4gYWRtaW5pc3RyYXRvciB0yZlyyZlmaW5kyZluIHllbmlsyZluZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkFkbWluaXN0cmF0b3J1bnV6IHTJmXLJmWZpbmTJmW4gc2lsaW5pYiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iQmF0YXJleWFuxLFuIGlzdGlzbWFyIG3DvGRkyZl0aW5pIHTJmWttaWxsyZnFn2Rpcm3JmWsgw7zDp8O8biBiYXRhcmV5YSBxyZluYcmZdGkgY2loYXrEsW7EsXrEsW4gbcmZaHN1bGRhcmzEscSfxLFuxLEgYXphbGTEsXIgdsmZIHRpdHLJmXRtyZksIG3JmWthbiB4aWRtyZl0bMmZcmkgdsmZIMmZbiBzb24gZm9uIG3JmWx1bWF0bGFyxLFuxLEgbcmZaGR1ZGxhxZ9kxLFyxLFyLiBTaW54cm9ubGHFn21heWEgYXJ4YXnEsW4gb2xhbiBlLXBvw6d0LCBtZXNhamxhxZ9tYSB2yZkgZGlnyZlyIHByb3FyYW1sYXIgc2l6IG9ubGFyxLEgYcOnbWF5YW5hIGtpbWkgeWVuaWzJmW5tyZl5yZkgYmlsyZlyLlxuXG5DaWhhesSxbsSxeiBkb2xkdXJ1bGFuIHphbWFuIGJhdGFyZXlhIHHJmW5hyZl0aSBhdnRvbWF0aWsgb2xhcmFxIHPDtm7DvHIuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4ixo9oyZltaXl5yZl0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9rIGVkaWxkaTogQnUgYmlsZGlyacWfbMmZcmkgaGXDpyB2YXh0IGfDtnN0yZlybcmZeWluIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkFsw6dhcTogQmlsZGlyacWfbMmZciBzaXlhaMSxc8SxbsSxbiBhxZ9hxJ/EsXPEsW5kYSBzyZlzc2l6IGfDtnN0yZlyaW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbDogQnUgYmlsZGnFn2zJmXJpIHPJmXNzaXogZ8O2c3TJmXJpbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iWcO8a3PJmWs6IEJpbGRpcmnFn2zJmXIgc2l5YWjEsXPEsW5kYSB5dXhhcsSxZGEgZ8O2c3TJmXJpbiB2yZkgc8mZc2xpIGVkaW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iVMmZY2lsaTogRWtyYW5kYSBuyZl6yZlyIHNhbMSxbiB2yZkgc8mZc2xpIGVkaW4iPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiAlMSRkIGTJmXFpccmZbGlrIChzYWF0IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IHJhZMmZc2luyZkgccmZZMmZcik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5CaXIgZMmZcWlxyZlsaWsgKHNhYXQgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4gcmFkyZlzaW7JmSBxyZlkyZlyKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYitzcitMYXRuL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKaW5kZXggODg3MWJiYy4uMGY1MWYwZCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKQEAgLTIyNCw2ICsyMjQsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJaYWtsanXEjWFqIG9kbWFoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNhZHLFvmFqIGplIHNha3JpdmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iQmV6YmVkbmkgcmXFvmltIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCBzaXN0ZW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IkxpxI1ubyI8L3N0cmluZz4KQEAgLTg2MywxMCArODY0LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iSXNlY2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcGlyYWoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJOYWxlcGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+Ik5hbGVwaSBrYW8gb2JpxI1hbiB0ZWtzdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iWmFtZW5pLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+Ikl6YnJpxaFpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJLb3BpcmFqIFVSTCBhZHJlc3UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJJemFiZXJpIHRla3N0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJPcG96b3ZpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJQb25vdmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iSXpib3IgdGVrc3RhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkRvZGFqIHUgcmXEjW5payI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iSXpicmnFoWkiPC9zdHJpbmc+CkBAIC0xMTE0LDYgKzExMTgsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iUHJvbWVuYSBwb3phZGluZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ik1vbml0b3Igb2JhdmXFoXRlbmphIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJEb2JhdmxqYcSNIHVzbG92YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IlBvbW/Eh25payB6YSBvYmF2ZcWhdGVuamEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBqZSBha3RpdmlyYW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJBcGxpa2FjaWphIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBqZSBha3RpdmlyYWxhIFZQTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IkRvZGlybml0ZSBkYSBiaXN0ZSB1cHJhdmxqYWxpIG1yZcW+b20uIjwvc3RyaW5nPgpAQCAtMTQ0OSwxMiArMTQ1NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkHFvnVyaXJhbyBqZSBhZG1pbmlzdHJhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJJemJyaXNhbyBqZSB2YcWhIGFkbWlpc3RyYXRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iRGEgYmkgcHJvZHXFvmlsYSB2cmVtZSB0cmFqYW5qYSBiYXRlcmlqZSwgdcWhdGVkYSBiYXRlcmlqZSBzbWFuanVqZSBwZXJmb3JtYW5zZSB1cmXEkWFqYSBpIG9ncmFuacSNYXZhIHZpYnJhY2lqdSwgdXNsdWdlIGxva2FjaWplIGkgdmXEh2ludSBwb3phZGluc2tpaCBwb2RhdGFrYS4gSW1lamwsIHJhem1lbmEgcG9ydWthIGkgZHJ1Z2UgYXBsaWthY2lqZSBrb2plIHNlIG9zbGFuamFqdSBuYSBzaW5ocm9uaXphY2lqdSBtb8W+ZGEgbmXEh2UgZGEgc2UgYcW+dXJpcmFqdSBha28gaWggbmUgb3R2b3JpdGUuXG5cblXFoXRlZGEgYmF0ZXJpamUgc2UgYXV0b21hdHNraSBpc2tsanXEjXVqZSBrYWRhIHNlIHVyZcSRYWogcHVuaS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJWYcW+bm9zdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxva2lyYW5hOiBPdmEgb2JhdmXFoXRlbmphIHNlIG5pa2FkYSBuZSBwcmlrYXp1anUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTmlza2E6IFByaWthenVqdSBzZSB1IGRudSBsaXN0ZSBvYmF2ZcWhdGVuamEgYmV6IHp2dWthIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJVb2JpxI1hamVuYTogT3ZhIG9iYXZlxaF0ZW5qYSBzZSBwcmlrYXp1anUgYmV6IHp2dWthIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJWaXNva2E6IFByaWthenVqdSBzZSB1IHZyaHUgbGlzdGUgb2JhdmXFoXRlbmphIGkgYWt0aXZpcmEgc2UgenZ1xI1uaSBzaWduYWwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iSGl0bmE6IE5ha3JhdGtvIHNlIHByaWthenVqdSBuYSBla3JhbnUgaSBha3RpdmlyYSBzZSB6dnXEjW5pIHNpZ25hbCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQgbWludXQgKGRvIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPiUxJGQgbWludXRhIChkbyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbAppbmRleCBmYzAzMTdhLi5kNzBmOTVmIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLQl9Cw0LrQu9GO0YfQstCw0L3QtSDRgdC10LPQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLQodC60YDQuNGC0L4g0YHRitC00YrRgNC20LDQvdC40LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLQkdC10LfQvtC/0LDRgdC10L0g0YDQtdC20LjQvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+ItCh0LjRgdGC0LXQvNC90L4g0L7RgiBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLQm9C40YfQtdC9Ijwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLQmNC30YDRj9C30LLQsNC90LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+ItCa0L7Qv9C40YDQsNC90LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLQn9C+0YHRgtCw0LLRj9C90LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+ItCf0L7RgdGC0LDQstGP0L3QtSDQutCw0YLQviDQvdC10YTQvtGA0LzQsNGC0LjRgNCw0L0g0YLQtdC60YHRgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i0JfQsNC80Y/QvdCwLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+ItCY0LfRgtGA0LjQstCw0L3QtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i0JrQvtC/0LjRgNCw0L3QtSDQvdCwIFVSTCDQsNC00YDQtdGB0LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLQmNC30LHQvtGAINC90LAg0YLQtdC60YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i0J7RgtC80Y/QvdCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLQktGK0LfRgdGC0LDQvdC+0LLRj9Cy0LDQvdC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+ItCY0LfQsdC40YDQsNC90LUg0L3QsCDRgtC10LrRgdGCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+ItCU0L7QsdCw0LLRj9C90LUg0LIg0YDQtdGH0L3QuNC60LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+ItCY0LfRgtGA0LjQstCw0L3QtSI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLQn9GA0L7QvNGP0L3QsCDQvdCwINGC0LDQv9C10YLQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+ItCh0LvRg9GI0LDRgtC10Lsg0L3QsCDQuNC30LLQtdGB0YLQuNGPIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLQlNC+0YHRgtCw0LLRh9C40Log0L3QsCDRg9GB0LvQvtCy0LjRjyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+ItCf0L7QvNC+0YnQvdC40Log0LfQsCDQuNC30LLQtdGB0YLQuNGPIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g0LUg0LDQutGC0LjQstC40YDQsNC90LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4g0LUg0LDQutGC0LjQstC40YDQsNC90LAg0L7RgiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLQlNC+0LrQvtGB0L3QtdGC0LUg0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC80YDQtdC20LDRgtCwLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLQkNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviDQvtGCINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAg0LLQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i0JjQt9GC0YDQuNGC0L4g0L7RgiDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNCwINCy0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+ItChINGG0LXQuyDRg9C00YrQu9C20LDQstCw0L3QtSDQvdCwINC20LjQstC+0YLQsCDQvdCwINCx0LDRgtC10YDQuNGP0YLQsCDRgNC10LbQuNC80YrRgiDQt9CwINC30LDQv9Cw0LfQstCw0L3QtdGC0L4g0Lkg0L3QsNC80LDQu9GP0LLQsCDQtdGE0LXQutGC0LjQstC90L7RgdGC0YLQsCDQvdCwINGD0YHRgtGA0L7QudGB0YLQstC+0YLQviDQstC4INC4INC+0LPRgNCw0L3QuNGH0LDQstCwINCy0LjQsdGA0LjRgNCw0L3QtdGC0L4sINGD0YHQu9GD0LPQuNGC0LUg0LfQsCDQvNC10YHRgtC+0L/QvtC70L7QttC10L3QuNC1INC4INC/0L7QstC10YfQtdGC0L4g0LTQsNC90L3QuCDQvdCwINC30LDQtNC10L0g0L/Qu9Cw0L0uINCf0YDQuNC70L7QttC10L3QuNGP0YLQsCDQt9CwINC10LvQtdC60YLRgNC+0L3QvdCwINC/0L7RidCwLCDRgdGK0L7QsdGJ0LXQvdC40Y8g0Lgg0LTRgC4sINC60L7QuNGC0L4g0YDQsNC30YfQuNGC0LDRgiDQvdCwINGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LUsINC80L7QttC1INC00LAg0L3QtSDRgdC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDRgiwg0L7RgdCy0LXQvSDQsNC60L4g0L3QtSDQs9C4INC+0YLQstC+0YDQuNGC0LUuXG5cbtCg0LXQttC40LzRitGCINC30LAg0LfQsNC/0LDQt9Cy0LDQvdC1INC90LAg0LHQsNGC0LXRgNC40Y/RgtCwINGB0LUg0LjQt9C60LvRjtGH0LLQsCDQsNCy0YLQvtC80LDRgtC40YfQvdC+LCDQutC+0LPQsNGC0L4g0YPRgdGC0YDQvtC50YHRgtCy0L7RgtC+INCy0Lgg0YHQtSDQt9Cw0YDQtdC20LTQsC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLQktCw0LbQvdC+0YHRgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i0JHQu9C+0LrQuNGA0LDQvdC+OiDQotC10LfQuCDQuNC30LLQtdGB0YLQuNGPINC90LjQutC+0LPQsCDQtNCwINC90LUg0YHQtSDQv9C+0LrQsNC30LLQsNGCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+ItCc0LDQu9C+0LLQsNC20L3Qvjog0J/QvtC60LDQt9Cy0LDQvdC1INCx0LXQtyDQt9Cy0YPQutC+0LIg0YHQuNCz0L3QsNC7INCyINC00L7Qu9C90LDRgtCwINGH0LDRgdGCINC90LAg0YHQv9C40YHRitC60LAg0YEg0LjQt9Cy0LXRgdGC0LjRjyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i0J3QvtGA0LzQsNC70L3Qvjog0KLQtdC30Lgg0LjQt9Cy0LXRgdGC0LjRjyDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQsdC10Lcg0LfQstGD0LrQvtCyINGB0LjQs9C90LDQuyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i0JLQsNC20L3Qvjog0J/QvtC60LDQt9Cy0LDQvdC1INCyINCz0L7RgNC90LDRgtCwINGH0LDRgdGCINC90LAg0YHQv9C40YHRitC60LAg0YEg0LjQt9Cy0LXRgdGC0LjRjyDQuCDQuNC30LTQsNCy0LDQvdC1INC90LAg0LfQstGD0LrQvtCyINGB0LjQs9C90LDQuyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLQodC/0LXRiNC90L46INCf0L7QutCw0LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQuCDQuNC30LTQsNCy0LDQvdC1INC90LAg0LfQstGD0LrQvtCyINGB0LjQs9C90LDQuyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+0JfQsCAlMSRkINC80LjQvdGD0YLQuCAo0LTQviA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7Ql9CwINC10LTQvdCwINC80LjQvdGD0YLQsCAo0LTQviA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWJuLXJCRC9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sCmluZGV4IGRlMTBjNjEuLjY4M2UyZWMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i4KaP4KaW4Kao4KaHIOCmsuCmlSDgppXgprDgp4HgpqgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IuCnr+Cnr+CnrysiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPuCmn+CmvykiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4Kay4KeB4KaV4Ka+4Kao4KeLIOCmrOCmv+Cmt+Cmr+CmvOCmrOCmuOCnjeCmpOCngSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuCmqOCmv+CmsOCmvuCmquCmpiDgpq7gp4vgpqEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIOCmuOCmv+CmuOCnjeCmn+Cnh+CmriI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i4Kas4KeN4Kav4KaV4KeN4Kak4Ka/4KaX4KakIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLgppXgpr7gpp/gp4HgpqgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuCmheCmqOCngeCmsuCmv+CmquCmvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuCmhuCmn+CmleCmvuCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4Kaq4KeN4Kay4KeH4KaH4KaoIOCmn+Cnh+CmleCnjeCmuOCmnyDgprngpr/gprjgpr7gpqzgp4cg4KaG4Kaf4KaV4Ka+4KaoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLgpqrgp43gprDgpqTgpr/gprjgp43gpqXgpr7gpqrgpqgg4KaV4Kaw4KeB4KaoLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuCmruCngeCmm+CngeCmqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMIOCmheCmqOCngeCmsuCmv+CmquCmvyDgppXgprDgp4HgpqgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLgpqrgpr7gpqDgp43gpq8g4Kao4Ka/4Kaw4KeN4Kas4Ka+4Kaa4KaoIOCmleCmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i4Kaq4KeC4Kaw4KeN4Kas4Ka+4Kas4Ka44KeN4Kal4Ka+4Kav4Ka8IOCmq+Cmv+CmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i4Kaq4KeB4Kao4Kaw4Ka+4Kav4Ka8IOCmleCmsOCngeCmqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLgpqrgpr7gpqDgp43gpq8g4Kao4Ka/4Kaw4KeN4Kas4Ka+4Kaa4KaoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IuCmheCmreCmv+Cmp+CmvuCmqOCnhyDgpq/gp4HgppXgp43gpqQg4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLgpq7gp4Hgppvgp4HgpqgiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4KaT4Kav4Ka84Ka+4Kay4Kaq4KeH4Kaq4Ka+4KawIOCmquCmsOCmv+CmrOCmsOCnjeCmpOCmqCDgppXgprDgp4HgpqgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLgpqzgpr/gppzgp43gpp7gpqrgp43gpqTgpr/gprAg4Ka24KeN4Kaw4KeL4Kak4Ka+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLgprbgprDgp43gpqQg4Kaq4KeN4Kaw4Kam4Ka+4Kao4KaV4Ka+4Kaw4KeAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4Kas4Ka/4Kac4KeN4Kae4Kaq4KeN4Kak4Ka/IOCmuOCmueCmvuCmr+CmvOCmlSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIOCmuOCmleCnjeCmsOCmv+Cmr+CmvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDgpo/gprAg4Kam4KeN4Kas4Ka+4Kaw4Ka+IFZQTiDgprjgppXgp43gprDgpr/gpq/gprwg4KaV4Kaw4Ka+IOCmueCmr+CmvOCnh+Cmm+CnhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuCmqOCnh+Cmn+Cmk+Cmr+CmvOCmvuCmsOCnjeCmlSDgpqrgprDgpr/gpprgpr7gprLgpqjgpr4g4KaV4Kaw4Kak4KeHIOCmuOCnjeCmquCmsOCnjeCmtiDgppXgprDgp4Hgpqjgp7ciPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4KaG4Kaq4Kao4Ka+4KawIOCmquCnjeCmsOCmtuCmvuCmuOCmlSDgpqbgp43gpqzgpr7gprDgpr4g4KaG4Kaq4Kah4KeH4KafIOCmleCmsOCmviDgprngpq/gprzgp4fgppvgp4ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IuCmhuCmquCmqOCmvuCmsCDgpqrgp43gprDgprbgpr7gprjgppUg4Kam4KeN4Kas4Ka+4Kaw4Ka+IOCmruCngeCmm+CnhyDgpqvgp4fgprLgpr4g4Ka54Kav4Ka84KeH4Kab4KeHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLgpqzgp43gpq/gpr7gpp/gprDgpr/gprAg4Kay4Ka+4KaH4KarIOCmieCmqOCnjeCmqOCmpCDgppXgprDgpqTgp4cg4Ka44Ka54Ka+4Kav4Ka84Kak4Ka+IOCmleCmsOCmpOCnhywg4Kas4KeN4Kav4Ka+4Kaf4Ka+4Kaw4Ka/IOCmuOCmvuCmtuCnjeCmsOCmr+CmvOCmleCmvuCmsOCngCDgpobgpqrgpqjgpr7gprAg4Kah4Ka/4Kat4Ka+4KaH4Ka44KeH4KawIOCmleCmvuCmsOCnjeCmr+CmuOCmruCnjeCmquCmvuCmpuCmqOCmviDgprngp43gprDgpr7gprgg4KaV4Kaw4KeHIOCmj+CmrOCmgiDgppXgpq7gp43gpqrgpqgsIOCmheCmrOCmuOCnjeCmpeCmvuCmqCDgpqrgprDgpr/gprfgp4fgpqzgpr7gprjgpq7gp4Lgprkg4KaP4Kas4KaCIOCmheCmp+Cmv+CmleCmvuCmguCmtiDgpqzgp43gpq/gpr7gppXgppfgp43gprDgpr7gpongpqjgp43gpqEg4Kah4KeH4Kaf4Ka+IOCmuOCngOCmruCmv+CmpCDgppXgprDgp4fgp7cg4KaH4Kau4KeH4KayLCDgpqzgpr7gprDgp43gpqTgpr7gpqrgp43gprDgp4fgprDgpqMg4KaP4Kas4KaCIOCmheCmqOCnjeCmr+CmvuCmqOCnjeCmryDgpoXgp43gpq/gpr7gpqrgp43gprLgpr/gppXgp4fgprbgpr7gpqjgppfgp4HgprLgpr/gppXgp4cg4Kav4KeH4KaX4KeB4Kay4Ka/IOCmuOCmv+CmmeCnjeCmleCnh+CmsCDgpongpqrgprAg4Kao4Ka/4Kaw4KeN4Kat4KawIOCmleCmsOCnhyDgprjgp4fgppfgp4HgprLgpr/gppXgp4cg4KaG4Kaq4Kao4Ka/IOCmqOCmviDgppbgp4vgprLgpr4g4Kaq4Kaw4KeN4Kav4Kao4KeN4KakIOCmqOCmvuCmkyDgpobgpqrgpqHgp4fgpp8g4Ka54Kak4KeHIOCmquCmvuCmsOCnh+Cnt1xuXG7gpobgpqrgpqjgpr7gprAg4Kah4Ka/4Kat4Ka+4KaH4Ka44Kaf4Ka/4KaV4KeHIOCmr+CmluCmqCDgpprgpr7gprDgp43gppwg4KaV4Kaw4Ka+IOCmueCmr+CmvCDgpqTgppbgpqgg4Kas4KeN4Kav4Ka+4Kaf4Ka+4Kaw4Ka/IOCmuOCmvuCmtuCnjeCmsOCmr+CmvOCmleCmvuCmsOCngCDgprjgp43gpqzgpq/gprzgpoLgppXgp43gprDgpr/gpq/gprzgpq3gpr7gpqzgp4cg4Kas4Kao4KeN4KanIOCmueCmr+CmvOCnhyDgpq/gpr7gpq/gprzgp7ciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgppfgp4HgprDgp4HgpqTgp43gpqwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuCmheCmrOCmsOCngeCmpuCnjeCmpzog4KaP4KaHIOCmrOCmv+CmnOCnjeCmnuCmquCnjeCmpOCmv+Cml+CngeCmsuCmvyDgppXgppbgpqjgpocg4Kam4KeH4KaW4Ka+4Kao4KeLIOCmueCmrOCnhyDgpqjgpr4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i4Kao4Ka/4Kau4KeN4KaoOiDgpqzgpr/gppzgp43gpp7gpqrgp43gpqTgpr8g4Kak4Ka+4Kay4Ka/4KaV4Ka+4KawIOCmqOCngOCmmuCnh+CmsCDgpoXgpoLgprbgp4cg4Kao4Ka/4KaD4Ka24Kas4KeN4Kam4KeHIOCmquCnjeCmsOCmpuCmsOCnjeCmtuCmqCDgppXgprDgpr4g4Ka54Kav4Ka8Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLgprjgpr7gpqfgpr7gprDgpqg6IOCmj+CmhyDgpqzgpr/gppzgp43gpp7gpqrgp43gpqTgpr/gppfgp4HgprLgpr8g4Kao4Ka/4KaD4Ka24Kas4KeN4Kam4KeHIOCmquCnjeCmsOCmpuCmsOCnjeCmtuCmqCDgppXgprDgpr4g4Ka54Kav4Ka8Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLgpongpprgp43gppo6IOCmrOCmv+CmnOCnjeCmnuCmquCnjeCmpOCmvyDgpqTgpr7gprLgpr/gppXgpr7gprAg4Ka24KeA4Kaw4KeN4Ka34KeHIOCmpuCnh+CmluCmvuCmqOCniyDgprngpq/gprwg4KaP4Kas4KaCIOCmtuCmrOCnjeCmpiDgppXgprDgp4ciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i4Kac4Kaw4KeB4Kaw4KeAOiDgprjgp43gppXgp43gprDgp4Dgpqjgp4fgprAg4KaJ4Kaq4Kaw4KeHIOCmquCnjeCmsOCmpuCmsOCnjeCmtuCmv+CmpCDgprngpq/gprwg4KaP4Kas4KaCIOCmtuCmrOCnjeCmpiDgppXgprDgp4ciPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj4lMSRkIOCmruCmv+CmqOCmv+Cmn+Cnh+CmsCDgppzgpqjgp43gpq8gKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCmquCmsOCnjeCmr+CmqOCnjeCmpCk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQg4Kau4Ka/4Kao4Ka/4Kaf4KeH4KawIOCmnOCmqOCnjeCmryAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g4Kaq4Kaw4KeN4Kav4Kao4KeN4KakKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCmluZGV4IGRmN2NmNzkuLjc4NmZlYTEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkJsb3F1ZWphIGFyYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iKzk5OSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250aW5ndXQgYW1hZ2F0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iTW9kZSBzZWd1ciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlNpc3RlbWEgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29uYWwiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IlJldGFsbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IkNvcGlhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iRW5nYW54YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iRW5nYW54YSBjb20gYSB0ZXh0IHNlbnNlIGZvcm1hdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iVm9scyBzdWJzdGl0dWlyLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IlN1cHJpbWVpeCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQ29waWEgbFwnVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZWNjaW9uYSBlbCB0ZXh0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJEZXNmw6lzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJSZWbDqXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iU2VsZWNjacOzIGRlIHRleHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iQWZlZ2VpeCBhbCBkaWNjaW9uYXJpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJTdXByaW1laXgiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQ2FudmlhIGVsIGZvbnMgZGUgcGFudGFsbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJPaWVudCBkZSBub3RpZmljYWNpb25zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJQcm92ZcOvZG9yIGRlIGNvbmRpY2lvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc3Npc3RlbnQgZGUgbm90aWZpY2FjaW9ucyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGFjdGl2YWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IGhhIGFjdGl2YXQgVlBOIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVG9jYSBwZXIgZ2VzdGlvbmFyIGxhIHhhcnhhLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJMXCdhZG1pbmlzdHJhZG9yIGxcJ2hhIGFjdHVhbGl0emF0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJMXCdhZG1pbmlzdHJhZG9yIGhvIGhhIHN1cHJpbWl0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQZXIgdGFsIGRcJ2F1Z21lbnRhciBsYSBkdXJhZGEgZGUgbGEgYmF0ZXJpYSwgbGEgZnVuY2nDsyBkXCdlc3RhbHZpIGRlIGJhdGVyaWEgcmVkdWVpeCBlbCByZW5kaW1lbnQgZGVsIGRpc3Bvc2l0aXUgaSBlbiBsaW1pdGEgbGEgdmlicmFjacOzIGkgbGEgbWFqb3JpYSBkZSBkYWRlcyBlbiBzZWdvbiBwbGEuIMOJcyBwb3NzaWJsZSBxdWUgZWwgY29ycmV1IGVsZWN0csOybmljLCBsYSBtaXNzYXRnZXJpYSBpIGxhIHJlc3RhIGRcJ2FwbGljYWNpb25zIHF1ZSBzZSBzaW5jcm9uaXR6ZW4gYW1iIGZyZXHDvMOobmNpYSBubyBzXCdhY3R1YWxpdHppbiBsbGV2YXQgcXVlIGxlcyBvYnJpcy5cblxuTFwnZXN0YWx2aSBkZSBiYXRlcmlhIGVzIGRlc2FjdGl2YSBhdXRvbcOgdGljYW1lbnQgbWVudHJlIGVsIGRpc3Bvc2l0aXUgc1wnZXN0w6AgY2FycmVnYW50LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkltcG9ydMOgbmNpYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxvcXVlamFkYTogbm8gbW9zdHJhIG1haSBhcXVlc3RlcyBub3RpZmljYWNpb25zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkJhaXhhOiBtb3N0cmEgZGUgbWFuZXJhIHNpbGVuY2lvc2EgYSBsYSBwYXJ0IGluZmVyaW9yIGRlIGxhIGxsaXN0YSBkZSBub3RpZmljYWNpb25zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IG1vc3RyYSBhcXVlc3RlcyBub3RpZmljYWNpb25zIGRlIG1hbmVyYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJBbHRhOiBtb3N0cmEgYSBsYSBwYXJ0IHN1cGVyaW9yIGRlIGxhIGxsaXN0YSBkZSBub3RpZmljYWNpb25zIGkgZW1ldCB1biBzbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnQ6IG1vc3RyYSBhIGxhIHBhbnRhbGxhIGkgZW1ldCB1biBzbyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+RHVyYW50ICUxJGQgbWludXRzIChmaW5zIGEgbGVzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkR1cmFudCAxIG1pbnV0IChmaW5zIGEgbGVzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KQEAgLTE1MTIsNSArMTUxMSw1IEBACiAgICAgPC9wbHVyYWxzPgogICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9ub3RpZmljYXRpb25fdG9waWNfbGFiZWwiIG1zZ2lkPSIyMjc1ODYxNDU3OTE4NzA4MjkiPiJBbHRyZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJpbXBvcnRhbmNlX2Zyb21fdG9waWMiIG1zZ2lkPSIzNTcyMjgwNDM5ODgwMDIzMjMzIj4iVHUgaGFzIGRlZmluaXQgbGEgaW1wb3J0w6BuY2lhIGRcJ2FxdWVzdGVzIG5vdGlmaWNhY2lvbnMuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3BlcnNvbiIgbXNnaWQ9IjkxNjAxMzM1OTcyNjI5MzgyOTYiPiJBcXVlc3QgbWlzc2F0Z2Ugw6lzIGltcG9ydGFudCBwZXIgbGVzIHBlcnNvbmVzIHF1ZSBoaSBoYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJpbXBvcnRhbmNlX2Zyb21fcGVyc29uIiBtc2dpZD0iOTE2MDEzMzU5NzI2MjkzODI5NiI+IkFxdWVzdCBtaXNzYXRnZSDDqXMgaW1wb3J0YW50IHBlciBsZXMgcGVyc29uZXMgaW1wbGljYWRlcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sCmluZGV4IGI0YzE5YTQuLmEyZTEyYTMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbApAQCAtMjI1LDYgKzIyNSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IlphbWtub3V0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNrcnl0w70gb2JzYWgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJOb3V6b3bDvSByZcW+aW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJTeXN0w6ltIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+Ik9zb2Juw60iPC9zdHJpbmc+CkBAIC04NjgsMTAgKzg2OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IlZ5am1vdXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcMOtcm92YXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJWbG/Fvml0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJWbG/Fvml0IGpha28gcHJvc3TDvSB0ZXh0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJOYWhyYWRpdOKAoiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJTbWF6YXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcMOtcm92YXQgYWRyZXN1IFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlZ5YnJhdCB0ZXh0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJWcsOhdGl0IHpwxJt0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJPcGFrb3ZhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJWw71ixJtyIHRleHR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IlDFmWlkYXQgZG8gc2xvdm7DrWt1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJTbWF6YXQiPC9zdHJpbmc+CkBAIC0xMTIxLDYgKzExMjUsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iWm3Em25pdCB0YXBldHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJBcGxpa2FjZSBwb3Nsb3VjaGFqw61jw60gb3puw6FtZW7DrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iUG9za3l0b3ZhdGVsIHBvZG3DrW5reSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IkFzaXN0ZW50IG96bsOhbWVuw60iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlPDrcWlIFZQTiBqZSBha3Rpdm92w6FuYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IkFwbGlrYWNlIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBha3Rpdm92YWxhIHPDrcWlIFZQTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IkRvdHlrZW0gem9icmF6w610ZSBzcHLDoXZ1IHPDrXTEmy4iPC9zdHJpbmc+CkBAIC0xNDU4LDEyICsxNDYzLDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iQWt0dWFsaXpvdsOhbm8gYWRtaW5pc3Ryw6F0b3JlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iU21hesOhbm8gYWRtaW5pc3Ryw6F0b3JlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iU3BvxZlpxI0gYmF0ZXJpZSB6YSDDusSNZWxlbSBwcm9kbG91xb5lbsOtIHbDvWRyxb5lIGJhdGVyaWUgc25pxb51amUgdsO9a29uIHphxZnDrXplbsOtIGEgb21lenVqZSB2aWJyYWNlLCBzbHXFvmJ5IHVyxI1vdsOhbsOtIHBvbG9oeSBhIHbEm3TFoWludSBkYXQgbmEgcG96YWTDrS4gRS1tYWlsLCBhcGxpa2FjZSBwcm8gemFzw61sw6Fuw60genByw6F2IGEgZGFsxaHDrSBhcGxpa2FjZSwga3RlcsOpIHBvdcW+w612YWrDrSBzeW5jaHJvbml6YWNpLCBzZSBuZW11c2Vqw60gYWt0dWFsaXpvdmF0LCBkb2t1ZCBqZSBuZW90ZXbFmWV0ZS5cblxuUMWZaSBuYWLDrWplbsOtIHphxZnDrXplbsOtIHNlIHNwb8WZacSNIGJhdGVyaWUgYXV0b21hdGlja3kgdnlwbmUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iRMWvbGXFvml0b3N0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9rb3bDoW5vOiBUYXRvIG96bsOhbWVuw60gbmlrZHkgbmV6b2JyYXpvdmF0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+Ik7DrXprw6E6IFRhdG8gb3puw6FtZW7DrSB6b2JyYXpvdmF0IG5hIGtvbmNpIHNlem5hbXUgYmV6IHp2dWtvdsOpaG8gdXBvem9ybsSbbsOtIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3Jtw6FsbsOtOiBUYXRvIG96bsOhbWVuw60gem9icmF6b3ZhdCBiZXogenZ1a292w6lobyB1cG96b3JuxJtuw60iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IlZ5c29rw6E6IFRhdG8gb3puw6FtZW7DrSB6b2JyYXpvdmF0IG5hIHphxI3DoXRrdSBzZXpuYW11IGHCoHVwb3pvcm5pdCBuYSBuxJsgenZ1a2VtIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlVyZ2VudG7DrTogVGF0byBvem7DoW1lbsOtIHpvYnJhem92YXQgcMWZw61tbyBuYSBvYnJhem92Y2UgYcKgdXBvem9ybml0IG5hIG7EmyB6dnVrZW0iPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0iZmV3Ij4lMSRkIG1pbnV0eSAoZG8gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im1hbnkiPiUxJGQgbWludXR5IChkbyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbAppbmRleCAyZDVlYzA5Li42N2I4ZWU5IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJMw6VzIG51Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkluZGhvbGRldCBlciBza2p1bHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJTaWtrZXIgdGlsc3RhbmQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkLXN5c3RlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29ubGlnIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJLbGlwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3BpZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJJbmRzw6Z0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJJbmRzw6Z0IHNvbSBhbG1pbmRlbGlnIHRla3N0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJFcnN0YXQuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iU2xldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iS29waWVyIHdlYmFkcmVzc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJNYXJrw6lyIHRla3N0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJGb3J0cnlkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJBbm51bGxlciBmb3J0cnlkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlRla3N0bWFya2VyaW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkbDuGogdGlsIG9yZGJvZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iU2xldCI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJTa2lmdCBiYWdncnVuZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IlVuZGVycmV0bmluZ3NseXR0ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlRqZW5lc3RlIHRpbCBmb3JtaWRsaW5nIGFmIGJldGluZ2Vsc2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iVW5kZXJyZXRuaW5nc2Fzc2lzdGVudCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGVyIGFrdGl2ZXJldC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gYWt0aXZlcmVzIGFmIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlRyeWsgZm9yIGF0IGFkbWluaXN0cmVyZSBuZXR2w6Zya2V0LiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJPcGRhdGVyZXQgYWYgYWRtaW5pc3RyYXRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iU2xldHRldCBhZiBkaW4gYWRtaW5pc3RyYXRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iQmF0dGVyaXNwYXJlZnVua3Rpb25lbiBoasOmbHBlciBtZWQgYXQgZm9ybMOmbmdlIGJhdHRlcmlldHMgbGV2ZXRpZCB2ZWQgYXQgcmVkdWNlcmUgZW5oZWRlbnMgeWRlZXZuZSBvZyBiZWdyw6Zuc2UgdmlicmF0aW9uLCBwbGFjZXJpbmdzdGplbmVzdGVyIG9nIGRldCBtZXN0ZSBiYWdncnVuZHNkYXRhLiBFLW1haWwsIGJlc2tlZGZ1bmt0aW9uZXIgb2cgYW5kcmUgYXBwcywgZGVyIGJlbnl0dGVyIHN5bmtyb25pc2VyaW5nLCBvcGRhdGVyZXMgbXVsaWd2aXMgaWtrZSwgbWVkbWluZHJlIGR1IMOlYm5lciBkZW0uXG5cbkJhdHRlcmlzcGFyZWZ1bmt0aW9uZW4gc2x1a2tlciBhdXRvbWF0aXNrLCBuw6VyIGVuaGVkZW4gb3BsYWRlci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJWaWd0aWdoZWQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb2tlcmV0OiBWaXMgYWxkcmlnIGRpc3NlIHVuZGVycmV0bmluZ2VyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkxhdjogVmlzIGx5ZGzDuHN0IG5lZGVyc3QgcMOlIGxpc3RlbiBvdmVyIHVuZGVycmV0bmluZ2VyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IFZpcyBkaXNzZSB1bmRlcnJldG5pbmdlciBseWRsw7hzdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iSMO4ajogVmlzIMO4dmVyc3QgcMOlIGxpc3RlbiBvdmVyIHVuZGVycmV0bmluZ2VyLCBvZyBnaXYgbHlkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlByZXNzZXJlbmRlOiBWaXMgcMOlIHNrw6ZybWVuLCBvZyBnaXYgbHlkIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+SSAlMSRkIG1pbnV0dGVyIChpbmR0aWwgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5JICUxJGQgbWludXR0ZXIgKGluZHRpbCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbAppbmRleCA3N2YwNDliLi4yZDY0YWVlIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJKZXR6dCBzcGVycmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkluaGFsdGUgYXVzZ2VibGVuZGV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iQWJnZXNpY2hlcnRlciBNb2R1cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQtU3lzdGVtIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQcml2YXQiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IkF1c3NjaG5laWRlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iS29waWVyZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJFaW5mw7xnZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+Ik51ciBUZXh0IGVpbmbDvGdlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iRXJzZXR6ZW4uLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iTMO2c2NoZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCBrb3BpZXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlRleHQgYXVzd8OkaGxlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iUsO8Y2tnw6RuZ2lnIG1hY2hlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iV2llZGVyaG9sZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVGV4dGF1c3dhaGwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iWnVtIFfDtnJ0ZXJidWNoIGhpbnp1ZsO8Z2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJMw7ZzY2hlbiI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJIaW50ZXJncnVuZCDDpG5kZXJuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iQmVuYWNocmljaHRpZ3VuZ3MtTGlzdGVuZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IkJlZGluZ3VuZ3Nwcm92aWRlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IkJlbmFjaHJpY2h0aWd1bmdzYXNzaXN0ZW50Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gYWt0aXZpZXJ0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIHd1cmRlIHZvbiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gYWt0aXZpZXJ0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+Ilp1bSBWZXJ3YWx0ZW4gZGVzIE5ldHp3ZXJrcyBiZXLDvGhyZW4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iVm9uIElocmVtIEFkbWluaXN0cmF0b3IgYWt0dWFsaXNpZXJ0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJWb24gSWhyZW0gQWRtaW5pc3RyYXRvciBnZWzDtnNjaHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IkRlciBFbmVyZ2llc3Bhcm1vZHVzIHNjaG9udCBkZW4gQWtrdSwgaW5kZW0gZXIgZGllIExlaXN0dW5nIGRlcyBHZXLDpHRzIHJlZHV6aWVydCB1bmQgZGllIFZpYnJhdGlvbnNmdW5rdGlvbiBzb3dpZSBkaWUgbWVpc3RlbiBIaW50ZXJncnVuZGRhdGVuYWt0aXZpdMOkdGVuIGVpbnNjaHLDpG5rdC4gRS1NYWlsLCBTTVMvTU1TIHVuZCBhbmRlcmUgQXBwcywgZGllIGF1ZiBJaHJlbSBHZXLDpHQgc3luY2hyb25pc2llcnQgd2VyZGVuLCB3ZXJkZW4gbcO2Z2xpY2hlcndlaXNlIGVyc3QgbmFjaCBkZW0gw5ZmZm5lbiBha3R1YWxpc2llcnQuXG5cbkRlciBFbmVyZ2llc3Bhcm1vZHVzIHdpcmQgYXV0b21hdGlzY2ggZGVha3RpdmllcnQsIHdlbm4gSWhyIEdlcsOkdCBhdWZnZWxhZGVuIHdpcmQuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iV2ljaHRpZ2tlaXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb2NraWVydDogS2VpbmUgQmVuYWNocmljaHRpZ3VuZ2VuIGFuemVpZ2VuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+Ik5pZWRyaWc6IEJlbmFjaHJpY2h0aWd1bmdlbiBnYW56IHVudGVuIGluIGRlciBCZW5hY2hyaWNodGlndW5nc2xpc3RlIHVuZCBvaG5lIFRvbiBhbnplaWdlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsOiBCZW5hY2hyaWNodGlndW5nZW4gb2huZSBUb24gYW56ZWlnZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IkhvY2g6IEJlbmFjaHJpY2h0aWd1bmdlbiBnYW56IG9iZW4gaW4gZGVyIEJlbmFjaHJpY2h0aWd1bmdzbGlzdGUgdW5kIG1pdCBUb24gYW56ZWlnZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iRHJpbmdlbmQ6IE1pdCBUb24gYXVmIGRlbSBEaXNwbGF5IGVpbmJsZW5kZW4iPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGTCoE1pbnV0ZW4gKGJpcyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj4xwqBNaW51dGUgKGJpcyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbAppbmRleCA2NjZiNjViLi5hMWE2Y2VkIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLOms67zrXOr860z4nOvM6xIM+Ez47Pgc6xIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+Is6az4HPhc+Gz4wgz4DOtc+BzrnOtc+Hz4zOvM61zr3OvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Is6Rz4PPhs6xzrvOrs+CIM67zrXOuc+Ezr/Phc+BzrPOr86xIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4izqPPjc+Dz4TOt868zrEgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4izqDPgc6/z4PPic+AzrnOus+MIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLOkc+Azr/Ous6/z4DOriI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4izpHOvc+EzrnOs8+BzrHPhs6uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4izpXPgM65zrrPjM67zrvOt8+DzrciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+Is6Vz4DOuc66z4zOu867zrfPg863IM+Jz4IgzrHPgM67z4wgzrrOtc6vzrzOtc69zr8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+Is6Rzr3PhM65zrrOsc+EzqzPg8+EzrHPg863Li4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+Is6UzrnOsc6zz4HOsc+Gzq4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+Is6Rzr3PhM65zrPPgc6xz4bOriDOtM65zrXPjc64z4XOvc+DzrfPgiBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLOlc+AzrnOu86/zrPOriDOus61zrnOvM6tzr3Ov8+FIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLOkc69zrHOr8+BzrXPg863Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLOlc+AzrHOvc6szrvOt8+IzrciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4izpXPgM65zrvOv86zzq4gzrrOtc65zrzOrc69zr/PhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLOoM+Bzr/Pg864zq7Ous63IM+Dz4TOvyDOu861zr7Ouc66z4wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+Is6UzrnOsc6zz4HOsc+Gzq4iPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4izpHOu867zrHOs86uIM+EzrHPgM61z4TPg86xz4HOr86xz4IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLOpc+AzrfPgc61z4POr86xIM6xzrrPgc+MzrHPg863z4IgzrXOuc60zr/PgM6/zq/Ot8+DzrfPgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4izqDOrM+Bzr/Ph86/z4Igz4PPhc69zrjOt866z47OvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+Is6Szr/Ot864z4zPgiDOtc65zrTOv8+Azr/Ouc6uz4POtc+Jzr0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+Is6kzr8gVlBOIM61zr3Otc+BzrPOv8+Azr/Ouc6uzrjOt866zrUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiLOpM6/IFZQTiDOtc69zrXPgc6zzr/PgM6/zrnOrs64zrfOus61IM6xz4DPjCDPhM63zr0gzrXPhs6xz4HOvM6/zrPOriA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLOkc6zzrPOr86+z4TOtSDOs865zrEgz4TOtyDOtM65zrHPh861zq/Pgc65z4POtyDPhM6/z4UgzrTOuc66z4TPjc6/z4UuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+Is6Vzr3Ot868zrXPgc+OzrjOt866zrUgzrHPgM+MIM+Ezr8gzrTOuc6xz4fOtc65z4HOuc+Dz4TOriDPg86xz4IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+Is6UzrnOsc6zz4HOrM+GzrfOus61IM6xz4DPjCDPhM6/IM60zrnOsc+HzrXOuc+BzrnPg8+Ezq4gz4POsc+CIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLOoM+Bzr/Ous61zrnOvM6tzr3Ov8+FIM69zrEgzrLOtc67z4TOuc+Oz4POtc65IM+EzrcgzrTOuc6sz4HOus61zrnOsSDOts+Jzq7PgiDPhM63z4IgzrzPgM6xz4TOsc+Bzq/Osc+CIM+DzrHPgiwgzrcgzpXOvs6/zrnOus6/zr3PjM68zrfPg863IM68z4DOsc+EzrHPgc6vzrHPgiDOvM61zrnPjs69zrXOuSDPhM63zr0gzrHPgM+MzrTOv8+Dzrcgz4TOt8+CIM+Dz4XPg866zrXPhc6uz4Igz4POsc+CIM66zrHOuSDPgM61z4HOuc6/z4HOr862zrXOuSDOu861zrnPhM6/z4XPgc6zzq/Otc+CIM+Mz4DPic+CIM63IM60z4zOvc63z4POtywgzr/OuSDPhc+AzrfPgc61z4POr861z4Igz4TOv8+Azr/OuM61z4POr86xz4IgzrrOsc65IM+EzrEgz4DOtc+BzrnPg8+Dz4zPhM61z4HOsSDOtM61zrTOv868zq3Ovc6xIM+AzrHPgc6xz4POus63zr3Or86/z4UuIM6kzr8gzrfOu861zrrPhM+Bzr/Ovc65zrrPjCDPhM6xz4fPhc60z4HOv868zrXOr86/LCDOtyDOsc69z4TOsc67zrvOsc6zzq4gzrzOt869z4XOvM6sz4TPic69IM66zrHOuSDOrM67zrvOtc+CIM61z4bOsc+BzrzOv86zzq3PgiDPgM6/z4UgzrLOsc+Dzq/Ots6/zr3PhM6xzrkgz4PPhM6/IM+Dz4XOs8+Hz4HOv869zrnPg868z4wgzrXOvc60zq3Ph861z4TOsc65IM69zrEgzrzOt869IM61zr3Ot868zrXPgc+Ozr3Ov869z4TOsc65IM6tz4nPgiDPjM+Ezr/PhSDPhM65z4IgzrHOvc6/zq/Ovs61z4TOtS5cblxuzpcgzpXOvs6/zrnOus6/zr3PjM68zrfPg863IM68z4DOsc+EzrHPgc6vzrHPgiDOsc+AzrXOvc61z4HOs86/z4DOv865zrXOr8+EzrHOuSDOsc+Fz4TPjM68zrHPhM6xIM+Mz4TOsc69IM63IM+Dz4XPg866zrXPhc6uIM+DzrHPgiDPhs6/z4HPhM6vzrbOtc65LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+Is6SzrHPgc+Nz4TOt8+EzrEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+Is6Rz4DOv866zrvOtc65z4POvM6tzr3Otc+COiDOnc6xIM68zrfOvSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4DOv8+Ezq0gzrHPhc+Ezq3PgiDOv865IM61zrnOtM6/z4DOv865zq7Pg861zrnPgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLOp86xzrzOt867zq7PgiDOss6xz4HPjc+EzrfPhM6xz4I6IM6dzrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOvyDOus6sz4TPiSDPhM68zq7OvM6xIM+EzrfPgiDOu86vz4PPhM6xz4IgzrXOuc60zr/PgM6/zrnOrs+DzrXPic69IM+Hz4nPgc6vz4Igz4TOtyDPg8+Fzr3Ov860zrXOr86xIM6uz4fOv8+FIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLOms6xzr3Ov869zrnOus6uIM6yzrHPgc+Nz4TOt8+EzrE6IM6dzrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM6xz4XPhM6tz4Igzr/OuSDOtc65zrTOv8+Azr/Ouc6uz4POtc65z4Igz4fPic+Bzq/PgiDOrs+Hzr8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Is6lz4jOt867zq7PgiDOss6xz4HPjc+EzrfPhM6xz4I6IM6dzrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOt869IM66zr/Pgc+Fz4bOriDPhM63z4IgzrvOr8+Dz4TOsc+CIM61zrnOtM6/z4DOv865zq7Pg861z4nOvSDPg8+Fzr3Ov860zrXPhc+MzrzOtc69zrXPgiDOsc+Az4wgzrrOrM+Azr/Ouc6/zr0gzq7Ph86/Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+Is6Vz4DOtc6vzrPOv8+Fz4POtc+COiDOnc6xIM+Az4HOv86yzqzOu867zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM66zrHOuSDOvc6xIM+Dz4XOvc6/zrTOtc+Nzr/Ovc+EzrHOuSDOsc+Az4wgzrrOrM+Azr/Ouc6/zr0gzq7Ph86/Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7Ok865zrEgJTEkZCDOu861z4DPhM6sICjOrc+Jz4Igz4TOuc+CIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPs6TzrnOsSDOrc69zrEgzrvOtc+Az4TPjCAozq3Pic+CIM+EzrnPgiA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCmluZGV4IDkzNTBlZjcuLmNkMmRjMjMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iTG9jayBub3ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVudHMgaGlkZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iU2FmZSBtb2RlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCBzeXN0ZW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlBlcnNvbmFsIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJDdXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IkNvcHkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJQYXN0ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iUGFzdGUgYXMgcGxhaW4gdGV4dCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iUmVwbGFjZS4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJEZWxldGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IkNvcHkgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZWN0IHRleHQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IlVuZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IlJlZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVGV4dCBzZWxlY3Rpb24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iQWRkIHRvIGRpY3Rpb25hcnkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IkRlbGV0ZSI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJDaGFuZ2Ugd2FsbHBhcGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iTm90aWZpY2F0aW9uIGxpc3RlbmVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJDb25kaXRpb24gcHJvdmlkZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJOb3RpZmljYXRpb24gYXNzaXN0YW50Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gYWN0aXZhdGVkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIGlzIGFjdGl2YXRlZCBieSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJUb3VjaCB0byBtYW5hZ2UgdGhlIG5ldHdvcmsuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IlVwZGF0ZWQgYnkgeW91ciBhZG1pbmlzdHJhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJEZWxldGVkIGJ5IHlvdXIgYWRtaW5pc3RyYXRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iVG8gaGVscCBpbXByb3ZlIGJhdHRlcnkgbGlmZSwgYmF0dGVyeSBzYXZlciByZWR1Y2VzIHlvdXIgZGV2aWNl4oCZcyBwZXJmb3JtYW5jZSBhbmQgbGltaXRzIHZpYnJhdGlvbiwgbG9jYXRpb24gc2VydmljZXMgYW5kIG1vc3QgYmFja2dyb3VuZCBkYXRhLiBFbWFpbCwgbWVzc2FnaW5nLCBhbmQgb3RoZXIgYXBwcyB0aGF0IHJlbHkgb24gc3luY2luZyBtYXkgbm90IHVwZGF0ZSB1bmxlc3MgeW91IG9wZW4gdGhlbS5cblxuQmF0dGVyeSBzYXZlciB0dXJucyBvZmYgYXV0b21hdGljYWxseSB3aGVuIHlvdXIgZGV2aWNlIGlzIGNoYXJnaW5nLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkltcG9ydGFuY2UiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb2NrZWQ6IE5ldmVyIHNob3cgdGhlc2Ugbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJMb3c6IFNpbGVudGx5IHNob3cgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbm90aWZpY2F0aW9uIGxpc3QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbDogU2lsZW50bHkgc2hvdyB0aGVzZSBub3RpZmljYXRpb25zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJIaWdoOiBTaG93IGF0IHRoZSB0b3Agb2YgdGhlIG5vdGlmaWNhdGlvbnMgbGlzdCBhbmQgbWFrZSBzb3VuZCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnQ6IFBlZWsgb250byB0aGUgc2NyZWVuIGFuZCBtYWtlIHNvdW5kIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5Gb3IgJTEkZCBtaW51dGVzICh1bnRpbCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5Gb3Igb25lIG1pbnV0ZSAodW50aWwgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnhtbAppbmRleCA5MzUwZWY3Li5jZDJkYzIzIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkxvY2sgbm93Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkNvbnRlbnRzIGhpZGRlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlNhZmUgbW9kZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQgc3lzdGVtIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXJzb25hbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iQ3V0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJDb3B5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iUGFzdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IlBhc3RlIGFzIHBsYWluIHRleHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IlJlcGxhY2UuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iRGVsZXRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJDb3B5IFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlNlbGVjdCB0ZXh0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJVbmRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJSZWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlRleHQgc2VsZWN0aW9uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkFkZCB0byBkaWN0aW9uYXJ5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJEZWxldGUiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQ2hhbmdlIHdhbGxwYXBlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ik5vdGlmaWNhdGlvbiBsaXN0ZW5lciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iQ29uZGl0aW9uIHByb3ZpZGVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iTm90aWZpY2F0aW9uIGFzc2lzdGFudCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGFjdGl2YXRlZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBpcyBhY3RpdmF0ZWQgYnkgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVG91Y2ggdG8gbWFuYWdlIHRoZSBuZXR3b3JrLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJVcGRhdGVkIGJ5IHlvdXIgYWRtaW5pc3RyYXRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iRGVsZXRlZCBieSB5b3VyIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IlRvIGhlbHAgaW1wcm92ZSBiYXR0ZXJ5IGxpZmUsIGJhdHRlcnkgc2F2ZXIgcmVkdWNlcyB5b3VyIGRldmljZeKAmXMgcGVyZm9ybWFuY2UgYW5kIGxpbWl0cyB2aWJyYXRpb24sIGxvY2F0aW9uIHNlcnZpY2VzIGFuZCBtb3N0IGJhY2tncm91bmQgZGF0YS4gRW1haWwsIG1lc3NhZ2luZywgYW5kIG90aGVyIGFwcHMgdGhhdCByZWx5IG9uIHN5bmNpbmcgbWF5IG5vdCB1cGRhdGUgdW5sZXNzIHlvdSBvcGVuIHRoZW0uXG5cbkJhdHRlcnkgc2F2ZXIgdHVybnMgb2ZmIGF1dG9tYXRpY2FsbHkgd2hlbiB5b3VyIGRldmljZSBpcyBjaGFyZ2luZy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJJbXBvcnRhbmNlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9ja2VkOiBOZXZlciBzaG93IHRoZXNlIG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTG93OiBTaWxlbnRseSBzaG93IGF0IHRoZSBib3R0b20gb2YgdGhlIG5vdGlmaWNhdGlvbiBsaXN0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IFNpbGVudGx5IHNob3cgdGhlc2Ugbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iSGlnaDogU2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RpZmljYXRpb25zIGxpc3QgYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iVXJnZW50OiBQZWVrIG9udG8gdGhlIHNjcmVlbiBhbmQgbWFrZSBzb3VuZCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+Rm9yICUxJGQgbWludXRlcyAodW50aWwgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+Rm9yIG9uZSBtaW51dGUgKHVudGlsIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1lbi1ySU4vc3RyaW5ncy54bWwKaW5kZXggOTM1MGVmNy4uY2QyZGMyMyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1lbi1ySU4vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1lbi1ySU4vc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJMb2NrIG5vdyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250ZW50cyBoaWRkZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJTYWZlIG1vZGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIHN5c3RlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29uYWwiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IkN1dCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iQ29weSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IlBhc3RlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJQYXN0ZSBhcyBwbGFpbiB0ZXh0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJSZXBsYWNlLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkRlbGV0ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQ29weSBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJTZWxlY3QgdGV4dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iVW5kbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUmVkbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJUZXh0IHNlbGVjdGlvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJBZGQgdG8gZGljdGlvbmFyeSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iRGVsZXRlIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IkNoYW5nZSB3YWxscGFwZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJOb3RpZmljYXRpb24gbGlzdGVuZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IkNvbmRpdGlvbiBwcm92aWRlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+Ik5vdGlmaWNhdGlvbiBhc3Npc3RhbnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBhY3RpdmF0ZWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gaXMgYWN0aXZhdGVkIGJ5IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlRvdWNoIHRvIG1hbmFnZSB0aGUgbmV0d29yay4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iVXBkYXRlZCBieSB5b3VyIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkRlbGV0ZWQgYnkgeW91ciBhZG1pbmlzdHJhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJUbyBoZWxwIGltcHJvdmUgYmF0dGVyeSBsaWZlLCBiYXR0ZXJ5IHNhdmVyIHJlZHVjZXMgeW91ciBkZXZpY2XigJlzIHBlcmZvcm1hbmNlIGFuZCBsaW1pdHMgdmlicmF0aW9uLCBsb2NhdGlvbiBzZXJ2aWNlcyBhbmQgbW9zdCBiYWNrZ3JvdW5kIGRhdGEuIEVtYWlsLCBtZXNzYWdpbmcsIGFuZCBvdGhlciBhcHBzIHRoYXQgcmVseSBvbiBzeW5jaW5nIG1heSBub3QgdXBkYXRlIHVubGVzcyB5b3Ugb3BlbiB0aGVtLlxuXG5CYXR0ZXJ5IHNhdmVyIHR1cm5zIG9mZiBhdXRvbWF0aWNhbGx5IHdoZW4geW91ciBkZXZpY2UgaXMgY2hhcmdpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iSW1wb3J0YW5jZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxvY2tlZDogTmV2ZXIgc2hvdyB0aGVzZSBub3RpZmljYXRpb25zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkxvdzogU2lsZW50bHkgc2hvdyBhdCB0aGUgYm90dG9tIG9mIHRoZSBub3RpZmljYXRpb24gbGlzdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsOiBTaWxlbnRseSBzaG93IHRoZXNlIG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IkhpZ2g6IFNob3cgYXQgdGhlIHRvcCBvZiB0aGUgbm90aWZpY2F0aW9ucyBsaXN0IGFuZCBtYWtlIHNvdW5kIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlVyZ2VudDogUGVlayBvbnRvIHRoZSBzY3JlZW4gYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPkZvciAlMSRkIG1pbnV0ZXMgKHVudGlsIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkZvciBvbmUgbWludXRlICh1bnRpbCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sCmluZGV4IDMzOWMzMTUuLmE2Zjc2YWMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iQmxvcXVlYXIgYWhvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVuaWRvcyBvY3VsdG9zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iTW9kbyBzZWd1cm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJTaXN0ZW1hIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlBlcnNvbmFsIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJDb3J0YXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IkNvcGlhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IlBlZ2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJQZWdhciBjb21vIHRleHRvIHNpbiBmb3JtYXRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJSZWVtcGxhemFyLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkVsaW1pbmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJDb3BpYXIgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZWNjaW9uYXIgdGV4dG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkRlc2hhY2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJSZWhhY2VyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlNlbGVjY2nDs24gZGUgdGV4dG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iQWdyZWdhciBhbCBkaWNjaW9uYXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iRWxpbWluYXIiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQ2FtYmlhciBmb25kbyBkZSBwYW50YWxsYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IkFnZW50ZSBkZSBlc2N1Y2hhIGRlIG5vdGlmaWNhY2lvbmVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJQcm92ZWVkb3IgZGUgY29uZGljaW9uZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc2lzdGVudGUgZGUgbm90aWZpY2FjaW9uZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBhY3RpdmFkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBlc3TDoSBhY3RpdmFkbyBwb3IgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVG9jYSBwYXJhIGFkbWluaXN0cmFyIGxhIHJlZC4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iQWN0dWFsaXphZG8gcG9yIGVsIGFkbWluaXN0cmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkxvIGVsaW1pbsOzIGVsIGFkbWluaXN0cmFkb3IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQYXJhIGF5dWRhciBhIG1lam9yYXIgbGEgZHVyYWNpw7NuIGRlIGxhIGJhdGVyw61hLCBlbCBhaG9ycm8gZGUgYmF0ZXLDrWEgcmVkdWNlIGVsIHJlbmRpbWllbnRvIGRlbCBkaXNwb3NpdGl2byB5IGxpbWl0YSBsYSB2aWJyYWNpw7NuLCBsb3Mgc2VydmljaW9zIGRlIHViaWNhY2nDs24geSBsYSBtYXlvcsOtYSBkZSBsb3MgZGF0b3MgZW4gc2VndW5kbyBwbGFuby4gRXMgcG9zaWJsZSBxdWUgZWwgY29ycmVvIGVsZWN0csOzbmljbywgbGEgbWVuc2FqZXLDrWEgeSBvdHJhcyBhcGxpY2FjaW9uZXMgcXVlIHNlIGJhc2FuIGVuIGxhIHNpbmNyb25pemFjacOzbiBubyBwdWVkYW4gYWN0dWFsaXphcnNlLCBhIG1lbm9zIHF1ZSBsb3MgYWJyYXMuXG5cbkVsIGFob3JybyBkZSBiYXRlcsOtYSBzZSBkZXNhY3RpdmEgZGUgZm9ybWEgYXV0b23DoXRpY2EgY3VhbmRvIGVsIGRpc3Bvc2l0aXZvIHNlIGVzdMOhIGNhcmdhbmRvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkltcG9ydGFuY2lhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9xdWVhZGE6IG5vIG1vc3RyYXIgbnVuY2EgZXN0YXMgbm90aWZpY2FjaW9uZXMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iQmFqYTogbW9zdHJhciBlbiBsYSBwYXJ0ZSBpbmZlcmlvciBkZSBsYSBsaXN0YSBkZSBub3RpZmljYWNpw7NuIHNpbiBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IG1vc3RyYXIgZXN0YXMgbm90aWZpY2FjaW9uZXMgZGUgbWFuZXJhIHNpbGVuY2lvc2EiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IkFsdGE6IG1vc3RyYXIgZW4gbGEgcGFydGUgc3VwZXJpb3IgZGUgbGEgbGlzdGEgZGUgbm90aWZpY2FjaW9uZXMgeSBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlVyZ2VudGU6IG1vc3RyYXIgZW4gbGEgcGFudGFsbGEgeSBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5EdXJhbnRlICUxJGQgbWludXRvcyBoYXN0YSBsYShzKSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkR1cmFudGUgMSBtaW51dG87IGhhc3RhIGxhKHMpIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+PC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54bWwKaW5kZXggNWI4MmEwOC4uNTk0ZmE1MCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iQmxvcXVlYXIgYWhvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IiZndDsgOTk5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkNvbnRlbmlkb3Mgb2N1bHRvcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Ik1vZG8gc2VndXJvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iU2lzdGVtYSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXJzb25hbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iQ29ydGFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJDb3BpYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJQZWdhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iUGVnYXIgY29tbyB0ZXh0byBzaW4gZm9ybWF0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iU3VzdGl0dWlyLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkVsaW1pbmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJDb3BpYXIgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZWNjaW9uYXIgdGV4dG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkRlc2hhY2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJSZWhhY2VyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlNlbGVjY2nDs24gZGUgdGV4dG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iQcOxYWRpciBhbCBkaWNjaW9uYXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iRWxpbWluYXIiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQ2FtYmlhciBmb25kbyBkZSBwYW50YWxsYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IkRldGVjdG9yIGRlIG5vdGlmaWNhY2lvbmVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJQcm92ZWVkb3IgZGUgY29uZGljaW9uZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc2lzdGVudGUgZGUgbm90aWZpY2FjaW9uZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBhY3RpdmFkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBhY3RpdmFkYSBwb3IgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVG9jYSBwYXJhIGFkbWluaXN0cmFyIGxhIHJlZC4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iQWN0dWFsaXphZG8gcG9yIHR1IGFkbWluaXN0cmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkVsaW1pbmFkbyBwb3IgdHUgYWRtaW5pc3RyYWRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iUGFyYSBheXVkYXIgYSBtZWpvcmFyIGxhIGR1cmFjacOzbiBkZSBsYSBiYXRlcsOtYSwgbGEgZnVuY2nDs24gZGUgYWhvcnJvIGRlIGVuZXJnw61hIHJlZHVjZSBlbCByZW5kaW1pZW50byBkZWwgZGlzcG9zaXRpdm8geSBsaW1pdGEgbGEgdmlicmFjacOzbiwgbG9zIHNlcnZpY2lvcyBkZSB1YmljYWNpw7NuIHkgbGEgbWF5b3IgcGFydGUgZGUgbGEgdHJhbnNtaXNpw7NuIGRlIGRhdG9zIGVuIHNlZ3VuZG8gcGxhbm8uIEVzIHBvc2libGUgcXVlIGxhcyBhcGxpY2FjaW9uZXMgcXVlIHNlIHNpbmNyb25pemFuLCBjb21vIGxhcyBkZSBjb3JyZW8geSBtZW5zYWplcywgbm8gc2UgYWN0dWFsaWNlbiBhIG1lbm9zIHF1ZSBsYXMgYWJyYXMuXG5cbkxhIGZ1bmNpw7NuIGRlIGFob3JybyBkZSBlbmVyZ8OtYSBzZSBkZXNhY3RpdmEgYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gZWwgZGlzcG9zaXRpdm8gc2UgZXN0w6EgY2FyZ2FuZG8uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iSW1wb3J0YW5jaWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb3F1ZWFkYTogbm8gbW9zdHJhciBlc3RhcyBub3RpZmljYWNpb25lcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJCYWphOiBtb3N0cmFyIGVuIGxhIHBhcnRlIGluZmVyaW9yIGRlIGxhIGxpc3RhIGRlIG5vdGlmaWNhY2lvbmVzIGRlIGZvcm1hIHNpbGVuY2lvc2EiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbDogbW9zdHJhciBlc3RhcyBub3RpZmljYWNpb25lcyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJBbHRhOiBtb3N0cmFyIGVuIGxhIHBhcnRlIHN1cGVyaW9yIGRlIGxhIGxpc3RhIGRlIG5vdGlmaWNhY2lvbmVzIHkgZW1pdGlyIHNvbmlkbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnRlOiBtb3N0cmFyIGVuIGxhIHBhbnRhbGxhIHkgZW1pdGlyIHNvbmlkbyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+RHVyYW50ZSAlMSRkIG1pbnV0b3MgKGhhc3RhIGxhcyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5EdXJhbnRlIHVuIG1pbnV0byAoaGFzdGEgbGFzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXQtckVFL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKaW5kZXggOWJiOTU1Yi4uOGVlODkwNCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJMdWt1c3RhIGtvaGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iU2lzdSBvbiBwZWlkZXR1ZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlR1cnZhcmXFvmlpbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQtc8O8c3RlZW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IklzaWtsaWsiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IkzDtWlrYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iS29wZWVyaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IktsZWViaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iS2xlZWJpIGxpaHR0ZWtzdGluYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iQXNlbmRhLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+Ikt1c3R1dGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGVlcmkgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iVmFsaWdlIHRla3N0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJWw7V0YSB0YWdhc2kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IlRlZSB1dWVzdGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVGVrc3RpIHZhbGltaW5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+Ikxpc2Egc8O1bmFzdGlra3UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+Ikt1c3R1dGEiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iTXV1dGtlIHRhdXN0YXBpbHRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iTcOkcmd1YW5uZXRlIGt1dWxhbWlzdGVlbnVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJUaW5naW11c2UgcGFra3VqYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+Ik3DpHJndWFubmV0ZSBhYmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBvbiBha3RpdmVlcml0dWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4taSBha3RpdmVlcmlzIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlbDtXJndSBoYWxkYW1pc2VrcyBwdXVkdXRhZ2UuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IlbDpHJza2VuZGFzIGFkbWluaXN0cmFhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJLdXN0dXRhcyB0ZWllIGFkbWluaXN0cmFhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJBa3Uga2VzdHVzZSBwYXJhbmRhbWlzZWtzIHbDpGhlbmRhYiBha3Vzw6TDpHN0amEgdGVpZSBzZWFkbWUgdG9pbWl2dXN0IG5pbmcgcGlpcmFiIHZpYnJhdHNpb29uaSwgYXN1a29oYXRlZW51c2VpZCBqYSBzdXVyZW1hdCBvc2EgdGF1c3RhYW5kbWV0ZXN0LiBFLXBvc3RpLCBzw7VudW1zaWRldCBqYSBtdWlkIHPDvG5rcm9vbmltaXNlbGUgdHVnaW5ldmFpZCByYWtlbmR1c2kgdsO1aWRha3NlIHbDpHJza2VuZGFkYSBhaW51bHQgc2lpcywga3VpIHRlIG5lZWQgYXZhdGUuXG5cbkFrdXPDpMOkc3RqYSBsw7xsaXRhdGFrc2Ugc2VhZG1lIGxhYWRpbWlzZSBhamFsIGF1dG9tYWF0c2VsdCB2w6RsamEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iVMOkaHRzdXMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb2tlZXJpdHVkOiDDpHJhIGt1bmFnaSBuw6RpdGEgbmVpZCBtw6RyZ3VhbmRlaWQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTWFkYWw6IGt1dmEgdmFpa3NlbHQgbcOkcmd1YW5uZXRlIGxvZW5kaSBhbGxvc2FzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJUYXZhbGluZToga3V2YSBuZWVkIG3DpHJndWFuZGVkIHZhaWtzZWx0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJLw7VyZ2U6IGt1dmEgbcOkcmd1YW5uZXRlIGxvZW5kaSDDvGxhb3NhcyBrb29zIGhlbGlnYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJLaWlyZWxvb211bGluZToga3V2YSBla3JhYW5pIHNlcnZhcyBrb29zIGhlbGlnYSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCBtaW51dGlrcyAoa3VuaSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7DnGhla3MgbWludXRpa3MgKGt1bmkgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ldS1yRVMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWV1LXJFUy9zdHJpbmdzLnhtbAppbmRleCBlZmZmNTg5Li5lMjU3ZmU5IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWV1LXJFUy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWV1LXJFUy9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkJsb2tlYXR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkVkdWtpYWsgZXprdXRhdHV0YSBkYXVkZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Ik1vZHUgc2VndXJ1YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQgc2lzdGVtYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVydHNvbmFsYWsiPC9zdHJpbmc+CkBAIC0zODMsOCArMzg0LDggQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2dldEFjY291bnRzIiBwcm9kdWN0PSJ0YWJsZXQiIG1zZ2lkPSIyNzQxNDk2NTM0NzY5NjYwMDI3Ij4iVGFibGV0YWsgZXphZ3V0emVuIGRpdHVlbiBrb250dWVuIHplcnJlbmRhIGxvcnR6ZWtvIGJhaW1lbmEgZW1hdGVuIGRpZSBhcGxpa2F6aW9laS4gSW5zdGFsYXR1dGEgZGl0dXp1biBhcGxpa2F6aW9layBzb3J0dXRha28ga29udHVhayBoYXIgZGFpdGV6a2UgYmFybmUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfZ2V0QWNjb3VudHMiIHByb2R1Y3Q9InR2IiBtc2dpZD0iNDE5MDYzMzM5NTYzMzkwNzU0MyI+IlRlbGViaXN0YWsgZXphZ3V0emVuIGRpdHVlbiBrb250dWVuIHplcnJlbmRhIGxvcnR6ZWEgYmFpbWVudHplbiBkaWUgYXBsaWthemlvZWkuIEluc3RhbGF0dXRhIGRpdHV6dW4gYXBsaWthemlvZWsgc29ydHV0YWtvIGtvbnR1YWsgc2FyIGRhaXRlemtlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2dldEFjY291bnRzIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzQ0ODMxNjgyMjQ1MTgwNzM4MiI+IlRlbGVmb25vYWsgZXphZ3V0emVuIGRpdHVlbiBrb250dWVuIHplcnJlbmRhIGxvcnR6ZWtvIGJhaW1lbmEgZW1hdGVuIGRpZSBhcGxpa2F6aW9laS4gSW5zdGFsYXR1dGEgZGl0dXp1biBhcGxpa2F6aW9layBzb3J0dXRha28ga29udHVhayBoYXIgZGFpdGV6a2UgYmFybmUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hY2Nlc3NOZXR3b3JrU3RhdGUiIG1zZ2lkPSI0OTUxMDI3OTY0MzQ4OTc0NzczIj4ic2FyZS1rb25leGlvYWsgaWt1c3RlYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FjY2Vzc05ldHdvcmtTdGF0ZSIgbXNnaWQ9IjgzMTg5NjQ0MjQ2NzU5NjA5NzUiPiJTYXJlLWtvbmV4aW9laSBidXJ1emtvIGluZm9ybWF6aW9hIGlrdXN0ZWtvIGJhaW1lbmEgZW1hdGVuIGRpZSBhcGxpa2F6aW9laTsgYWRpYmlkZXosIHplciBzYXJlIGRhdWRlbiBldGEgemVpbnR6dWsgZGF1ZGVuIGtvbmVrdGF0dXRhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYWNjZXNzTmV0d29ya1N0YXRlIiBtc2dpZD0iNDk1MTAyNzk2NDM0ODk3NDc3MyI+InNhcmVrbyBrb25leGlvYWsgaWt1c3RlYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FjY2Vzc05ldHdvcmtTdGF0ZSIgbXNnaWQ9IjgzMTg5NjQ0MjQ2NzU5NjA5NzUiPiJTYXJla28ga29uZXhpb2VpIGJ1cnV6a28gaW5mb3JtYXppb2EgaWt1c3Rla28gYmFpbWVuYSBlbWF0ZW4gZGllIGFwbGlrYXppb2VpOyBhZGliaWRleiwgemVyIHNhcmUgZGF1ZGVuIGV0YSB6ZWludHp1ayBkYXVkZW4ga29uZWt0YXR1dGEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9jcmVhdGVOZXR3b3JrU29ja2V0cyIgbXNnaWQ9Ijc5MzQ1MTY2MzEzODQxNjgxMDciPiJJemFuIHNhcmVyYWtvIHNhcmJpZGUgb3NvYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2NyZWF0ZU5ldHdvcmtTb2NrZXRzIiBtc2dpZD0iMzQwMzA2MjE4Nzc3OTcyNDE4NSI+IlNhcmUtc29ja2V0YWsgc29ydHpla28gZXRhIHNhcmUtcHJvdG9rb2xvIHBlcnRzb25hbGl6YXR1YWsgZXJhYmlsdHpla28gYmFpbWVuYSBlbWF0ZW4gZGllIGFwbGlrYXppb2VpLiBBcmFrYXR6YWlsZWFrIGV0YSBiZXN0ZSBhcGxpa2F6aW8gYmF0enVlayBJbnRlcm5ldGVyYSBrb25la3RhdHpla28gbW9kdWFrIGVza2FpbnR6ZW4gZGl0dXp0ZSwgYmVyYXosIGJhaW1lbiBob3JpIGV6IGRhIGJlaGFycmV6a29hIGRhdHVhayBJbnRlcm5ldGVyYSBiaWRhbHR6ZWtvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2hhbmdlTmV0d29ya1N0YXRlIiBtc2dpZD0iOTU4ODg0MjkxNDU0MzI3MzA5Ij4iYWxkYXR1IHNhcmVhcmVuIGtvbmVrdGFnYXJyaXRhc3VuYSI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iRWJha2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcGlhdHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJJdHNhdHNpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJJdHNhdHNpIHRlc3R1IGFycnVudCBnaXNhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJPcmRlenR14oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkV6YWJhdHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGlhdHUgVVJMYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IkhhdXRhdHUgdGVzdHVhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJEZXNlZ2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJCZXJyZWdpbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJUZXN0dWEgaGF1dGF0emVhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkdlaGl0dSBoaXp0ZWdpYW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IkV6YWJhdHUiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQWxkYXR1IGhvcm1hLXBhcGVyYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ikpha2luYXJhenBlbmFrIGhhdXRlbWF0ZWtvIHplcmJpdHp1YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iQmFsZGludHphLWhvcm5pdHphaWxlYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+Ikpha2luYXJhenBlbmVuIGxhZ3VudHphaWxlYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGVnaW5iaWRlYSBha3RpYmF0dXRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IGFwbGlrYXppb2FrIFZQTiBrb25leGlvYSBha3RpYmF0dSBkdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlVraXR1IHNhcmVhIGt1ZGVhdHpla28uIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkFkbWluaXN0cmF0emFpbGVhayBlZ3VuZXJhdHUgZHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkFkbWluaXN0cmF0emFpbGVhayBlemFiYXR1IGR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJCYXRlcmlhayBnZWhpYWdvIGlyYXVuIGRlemFuLCBiYXRlcmlhLWF1cnJlemxlYWsgZ2FpbHVhcmVuIGZ1bnR6aW9uYW1lbmR1YSwgZGFyZGFyYSwgIGtva2FwZW4temVyYml0enVhayBldGEgYXR6ZWtvIHBsYW5va28gZGF0dWVuIGVyYWJpbGVyYSBnZWhpZW5hIG11Z2F0emVuIGRpdHUuIFBvc3RhIGVsZWt0cm9uaWtvYSwgbWV6dWFrIGV0YSBzaW5rcm9uaXphdHplbiBkaXJlbiBnYWluZXJha28gemVyYml0enVhayBleiBkaXJhIGVndW5lcmF0dWtvIGlyZWtpIGV6ZWFuLlxuXG5HYWlsdWEga2FyZ2F0emVuIGV6YXJyaSBvcmR1a28gZGVzYWt0aWJhdHplbiBkYSBiYXRlcmlhLWF1cnJlemxlYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJHYXJyYW50emlhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9rZWF0dXRhOiBleiBlcmFrdXRzaSBqYWtpbmFyYXpwZW4gaGF1ZWsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iVHhpa2lhOiBlcmFrdXRzaSBqYWtpbmFyYXpwZW4gaGF1ZWsgemVycmVuZGFyZW4gYmVoZWFsZGVhbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsYTogZXJha3V0c2kgamFraW5hcmF6cGVuIGhhdWVrLCBiYWluYSBzb2ludXJpayBlZ2luIGdhYmUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IkhhbmRpYTogZXJha3V0c2kgamFraW5hcmF6cGVuIGhhdWVrIHplcnJlbmRhcmVuIGdvaWFsZGVhbiBldGEgZWdpbiBzb2ludWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iUHJlbWlhemtvYTogYWdlcnJhcmF6aSBqYWtpbmFyYXpwZW4gaGF1ZWsgcGFudGFpbGFuIGV0YSBlZ2luIHNvaW51YSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCBtaW51dHV6ICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiBhcnRlKTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPk1pbnV0dSBiYXRleiAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4gYXJ0ZSk8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbAppbmRleCBkNWVkNWRiLi5iNmI2NjllIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLYp9qp2YbZiNmGINmC2YHZhCDYtNmI2K8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Itio24zYtNiq2LEg2KfYsiA5OTkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i2YXYrdiq2YjYp9mH2Kcg2b7ZhtmH2KfZhiDZh9iz2KrZhtivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i2K3Yp9mE2Kog2KfbjNmF2YYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiLigI/Ys9uM2LPYqtmFIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+Iti02K7YtduMIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLYqNix2LQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+Itqp2b7bjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+Itis2KfbjCDar9iw2KfYsduMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLYrNin24zigIzar9iw2KfYsduMINio2Ycg2LnZhtmI2KfZhiDZhdiq2YYg2LPYp9iv2YciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+Itis2KfbjNqv2LLbjNmGINi02YjYry4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLYrdiw2YEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IuKAj9qp2b7bjCBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLYp9mG2KrYrtin2Kgg2YXYqtmGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLZhNi62YgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+Itin2YbYrNin2YUg2YXYrNiv2K8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i2KfZhtiq2K7Yp9ioINmF2KrZhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLYp9mB2LLZiNiv2YYg2KjZhyDZgdix2YfZhtqv4oCM2YTYutiqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLYrdiw2YEiPC9zdHJpbmc+CkBAIC04OTIsNyArODk2LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9IndoaWNoSG9tZUFwcGxpY2F0aW9uTmFtZWQiIG1zZ2lkPSI0NDkzNDM4NTkzMjE0NzYwOTc5Ij4i4oCP2KfYs9iq2YHYp9iv2Ycg2KfYsiAlMSRzINio2Ycg2LnZhtmI2KfZhiDYqNix2YbYp9mF2Ycg2LXZgdit2Ycg2KfYtdmE24wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbHdheXNVc2UiIG1zZ2lkPSI0NTgzMDE4MzY4MDAwNjEwNDM4Ij4i2KfYs9iq2YHYp9iv2Ycg2KjZhyDYtdmI2LHYqiDZvtuM2LTigIzZgdix2LYg2KjYsdin24wg2KfbjNmGINi52YXZhNqp2LHYry4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfYV9kaWZmZXJlbnRfYXBwIiBtc2dpZD0iODEzNDkyNjIzMDU4NTcxMDI0MyI+Itin2LPYqtiq2YHYp9iv2Ycg2KfYsiDbjNqpINio2LHZhtin2YXZhyDYr9uM2q/YsSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImNsZWFyRGVmYXVsdEhpbnRNc2ciIG1zZ2lkPSIzMjUyNTg0Njg5NTEyMDc3MjU3Ij4i4oCP2b7bjNi04oCM2YHYsdi2INix2Kcg2K/YsSDYqtmG2LjbjNmF2KfYqiDYs9uM2LPYqtmFJmd0OyDYqNix2YbYp9mF2YfigI7Zh9inJmd0OyDZhdmI2LHYryDYr9in2YbZhNmI2K8g2LTYr9mHINm+2KfaqSDaqdmG24zYry4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjbGVhckRlZmF1bHRIaW50TXNnIiBtc2dpZD0iMzI1MjU4NDY4OTUxMjA3NzI1NyI+IuKAj9m+24zYtOKAjNmB2LHYtiDYsdinINiv2LEg2KrZhti424zZhdin2Kog2LPbjNiz2KrZhSZndDsg2KjYsdmG2KfZhdmH4oCO2YfYpyZndDsg2YXZiNix2K8g2KjYp9ix2q/bjNix24wg2LTYr9mHINm+2KfaqSDaqdmG24zYry4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VBY3Rpdml0eSIgbXNnaWQ9Ijc0ODY4NzYxNDc3NTE4MDMzMzMiPiLYp9mG2KrYrtin2Kgg2LnZhdmE2qnYsdivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlVXNiQWN0aXZpdHkiIG1zZ2lkPSI2ODk0NzQ4NDE2MDczNTgzNTA5Ij4i4oCP2KfZhtiq2K7Yp9ioINio2LHZhtin2YXZhyDYqNix2KfbjCDYr9iz2Krar9in2YcgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm9BcHBsaWNhdGlvbnMiIG1zZ2lkPSIyOTkxODE0MjczOTM2NTA0Njg5Ij4i4oCP2YfbjNqGINio2LHZhtin2YXZh+KAjNin24wg2YbZhduM4oCM4oCO2KrZiNin2YbYryDYp9uM2YYg2qnYp9ixINix2Kcg2KfZhtis2KfZhSDYr9mH2K8uIjwvc3RyaW5nPgpAQCAtOTE0LDcgKzkxOCw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJsYXVuY2hfd2FybmluZ19vcmlnaW5hbCIgbXNnaWQ9IjE4ODEwMjAyMzAyMTY2ODY4MyI+Ijx4bGlmZjpnIGlkPSJBUFBfTkFNRSI+JTEkczwveGxpZmY6Zz4g2KfYsiDYp9io2KrYr9inINix2KfZh+KAjNin2YbYr9in2LLbjCDYtNivLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNjcmVlbl9jb21wYXRfbW9kZV9zY2FsZSIgbXNnaWQ9IjMyMDI5NTU2Njc2NzU5NDQ0OTkiPiLZhdmC24zYp9izIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2NyZWVuX2NvbXBhdF9tb2RlX3Nob3ciIG1zZ2lkPSI0MDEzODc4ODc2NDg2NjU1ODkyIj4i2YfZhduM2LTZhyDZhti02KfZhiDYr9in2K/ZhyDYtNmI2K8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzY3JlZW5fY29tcGF0X21vZGVfaGludCIgbXNnaWQ9IjEwNjQ1MjQwODQ1NDMzMDQ0NTkiPiLigI/Yr9ixINiq2YbYuNuM2YXYp9iqINiz24zYs9iq2YUgJmd0O9io2LHZhtin2YXZh+KAjtmH2KcgJmd0OyDZhdmI2LHYryDYr9in2YbZhNmI2K8g2LTYr9mHINii2YYg2LHYpyDYr9mI2KjYp9ix2Ycg2YHYudin2YQg2qnZhtuM2K8uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2NyZWVuX2NvbXBhdF9tb2RlX2hpbnQiIG1zZ2lkPSIxMDY0NTI0MDg0NTQzMzA0NDU5Ij4i4oCP2K/YsSDYqtmG2LjbjNmF2KfYqiDYs9uM2LPYqtmFICZndDvYqNix2YbYp9mF2YfigI7Zh9inICZndDsg2YXZiNix2K8g2KjYp9ix2q/bjNix24wg2LTYr9mHINii2YYg2LHYpyDYr9mI2KjYp9ix2Ycg2YHYudin2YQg2qnZhtuM2K8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic212X2FwcGxpY2F0aW9uIiBtc2dpZD0iMzMwNzIwOTE5MjE1NTQ0MjgyOSI+IuKAj9io2LHZhtin2YXZhyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT04iPiUxJHM8L3hsaWZmOmc+ICjZvtix2K/Yp9iy2LQgPHhsaWZmOmcgaWQ9IlBST0NFU1MiPiUyJHM8L3hsaWZmOmc+KSDYrti34oCM2YXYtNuMIFN0cmljdE1vZGUg2KfYrNix2KfbjNuMINiu2YjYryDYsdinINmG2YLYtiDaqdix2K/ZhyDYp9iz2KouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic212X3Byb2Nlc3MiIG1zZ2lkPSI1MTIwMzk3MDEyMDQ3NDYyNDQ2Ij4i4oCP2YHYsdii24zZhtivIDx4bGlmZjpnIGlkPSJQUk9DRVNTIj4lMSRzPC94bGlmZjpnPiDYrti34oCM2YXYtNuMIFN0cmljdE1vZGUg2KfYrNix2KfbjCDYrtmI2K/aqdin2LEg2K7ZiNivINix2Kcg2YbZgti2INqp2LHYr9mHINin2LPYqi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3VwZ3JhZGluZ190aXRsZSIgbXNnaWQ9IjE1ODQxOTIyODU0NDE0MDU3NDYiPiLigI9BbmRyb2lkINiv2LEg2K3Yp9mEINin2LHYqtmC2Kcg2KfYs9iqLi4uIjwvc3RyaW5nPgpAQCAtOTI3LDcgKzkzMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJoZWF2eV93ZWlnaHRfbm90aWZpY2F0aW9uIiBtc2dpZD0iOTA4NzA2Mzk4NTc3NjYyNjE2NiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiUxJHM8L3hsaWZmOmc+INiv2LEg2K3Yp9mEINin2KzYsdinIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbl9kZXRhaWwiIG1zZ2lkPSIxNzIxNjgxNzQxNjE3ODk4ODY1Ij4i2YTZhdizINqp2LHYr9mGINio2LHYp9uMINio2KfYstqp2LHYr9mGINio2LHZhtin2YXZhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImhlYXZ5X3dlaWdodF9zd2l0Y2hlcl90aXRsZSIgbXNnaWQ9IjcxNTMxNjcwODU0MDMyOTgxNjkiPiLYqNix2YbYp9mF2Ycg2LnZiNi2INi02YjYr9ifIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X3N3aXRjaGVyX3RleHQiIG1zZ2lkPSI3MDIyNjMxOTI0NTM0NDA2NDAzIj4i2KjYsdmG2KfZhdmHINiv24zar9ix24wg2KfYsiDZgtio2YQg2K/YsSDYrdin2YQg2KfYrNix2Kcg2KfYs9iqINqp2Ycg2KjYp9uM2K8g2YLYqNmEINin2LIg2KfbjNmG2qnZhyDYqNix2YbYp9mF2Ycg2KzYr9uM2K/bjCDYsdinINi02LHZiNi5INqp2YbbjNivINmF2KrZiNmC2YEg2LTZiNivLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhlYXZ5X3dlaWdodF9zd2l0Y2hlcl90ZXh0IiBtc2dpZD0iNzAyMjYzMTkyNDUzNDQwNjQwMyI+Itio2LHZhtin2YXZhyDYr9uM2q/YsduMINin2LIg2YLYqNmEINiv2LEg2K3Yp9mEINin2KzYsdin2LPYqiDaqdmHINio2KfbjNivINmF2KrZiNmC2YEg2LTZiNivINiq2Kcg2KjYqtmI2KfZhtuM2K8g2KjYsdmG2KfZhdmHINis2K/bjNivINix2Kcg2LTYsdmI2Lkg2qnZhtuM2K8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ib2xkX2FwcF9hY3Rpb24iIG1zZ2lkPSI0OTMxMjkxNzIyMzg1NjYyODIiPiLYqNin2LLar9i02Kog2KjZhyA8eGxpZmY6ZyBpZD0iT0xEX0FQUCI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJvbGRfYXBwX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMjA4MjA5NDI3NTU4MDM1ODA0OSI+Itio2LHZhtin2YXZhyDYrNiv24zYryDYtNix2YjYuSDZhti02YjYry4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJuZXdfYXBwX2FjdGlvbiIgbXNnaWQ9IjU0NzI3NTY5MjY5NDU0NDA3MDYiPiLYtNix2YjYuSA8eGxpZmY6ZyBpZD0iT0xEX0FQUCI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i2KrYutuM24zYsSDaqdin2LrYsNiv24zZiNin2LHbjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Iti02YbZiNmG2K/ZhyDYp9i52YTYp9mGIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLYp9ix2KfYptmH4oCM2K/Zh9mG2K/ZhyDZiNi22LnbjNiqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i2K/Ys9iq24zYp9ixINin2LnZhNin2YYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IuKAj1ZQTiDZgdi52KfZhCDYtNivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4i4oCPVlBOINiq2YjYs9i3IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDZgdi52KfZhCDYtNiv2Ycg2KfYs9iqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i2KjYsdin24wg2YXYr9uM2LHbjNiqINi02KjaqdmHINmE2YXYsyDaqdmG24zYry4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i2KrZiNiz2Lcg2LPYsdm+2LHYs9iqINi02YXYpyDYqNmH4oCM2LHZiNiy2LHYs9in2YbbjCDYtNivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLYqtmI2LPYtyDYs9ix2b7Ysdiz2KrYqtin2YYg2K3YsNmBINi02K8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+Itio2LHYp9uMINqp2YXaqSDYqNmHINio2YfYqNmI2K8g2LnZhdixINio2KfYqtix24zYjCDYqNmH24zZhtmH4oCM2LPYp9iy24wg2KjYp9iq2LHbjCDYudmF2YTaqdix2K8g2K/Ys9iq2q/Yp9mH2KrYp9mGINix2Kcg2qnYp9mH2LQg2YXbjOKAjNiv2YfYryDZiCDZhNix2LLYtNiMINiz2LHZiNuM2LPigIzZh9in24wg2YXYqNiq2YbbjCDYqNixINmF2qnYp9mG2Iwg2Ygg2K/Ys9iq2LHYs9uMINio2Ycg2Kfaqdir2LEg2K/Yp9iv2YfigIzZh9inINiv2LEg2b7Ys+KAjNiy2YXbjNmG2Ycg2LHYpyDZhdit2K/ZiNivINmF24zigIzaqdmG2K8uINin24zZhduM2YTYjCDZvtuM2KfZheKAjNix2LPYp9mG24wg2Ygg2KjYsdmG2KfZhdmH4oCM2YfYp9uMINiv24zar9ix24wg2qnZhyDYqNmHINmH2YXar9in2YXigIzYs9in2LLbjCDZiNin2KjYs9iq2YfigIzYp9mG2K/YjCDYqtinINiy2YXYp9mG24zigIzaqdmHINii2YbigIzZh9inINix2Kcg2KjYp9iyINmG2qnZhtuM2K8g2YbZhduM4oCM2KrZiNin2YbZhtivINio2YfigIzYsdmI2LIg2LTZiNmG2K8uXG5cbtio2YfbjNmG2YfigIzYs9in2LLbjCDYqNin2KrYsduMINio2YfigIzYtdmI2LHYqiDYrtmI2K/aqdin2LEg2K/YsSDZh9mG2q/Yp9mFINi02KfYsdqYINi02K/ZhiDYr9iz2Krar9in2Ycg2K7Yp9mF2YjYtCDZhduM4oCM2LTZiNivLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+Itin2YfZhduM2KoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+ItmF2LPYr9mI2K86INmH2LHar9iyINin24zZhiDYp9i52YTYp9mG4oCM2YfYpyDZhti02KfZhiDYr9in2K/ZhyDZhti02YjYryI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLZvtin24zbjNmGOiDYqNiv2YjZhiDYtdiv2Kcg2K/YsSDZvtin24zbjNmGINmB2YfYsdiz2Kog2KfYudmE2KfZhiDZhti02KfZhiDYr9in2K/ZhyDYtNmI2K8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Iti52KfYr9uMOiDYp9uM2YYg2KfYudmE2KfZhuKAjNmH2Kcg2KjYr9mI2YYg2LXYr9inINmG2LTYp9mGINiv2KfYr9mHINi02YjYryI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i2KjYp9mE2Kc6INiv2LEg2KjYp9mE2KfbjCDZgdmH2LHYs9iqINin2LnZhNin2YbigIzZh9inINmIINio2Ycg2YfZhdix2KfZhyDYtdiv2Kcg2YbYtNin2YYg2K/Yp9iv2Ycg2LTZiNivIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+Iti22LHZiNix24w6INmG2YXYp9uMINqp2YTbjCDYqNmHINmH2YXYsdin2Ycg2LXYr9inINiv2LEg2LXZgdit2Ycg2YbYtNin2YYg2K/Yp9iv2Ycg2LTZiNivIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+4oCP2KjZhyDZhdiv2KogJTEkZCDYr9mC24zZgtmHICjYqtinIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+4oCP2KjZhyDZhdiv2KogJTEkZCDYr9mC24zZgtmHICjYqtinIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sCmluZGV4IDdiNDJhMWEuLmIwZWZkOTYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+Ikx1a2l0c2Ugbnl0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNpc8OkbHTDtiBwaWlsb3RldHR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iU3VvamF0dHUgdGlsYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQtasOkcmplc3RlbG3DpCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iSGVua2lsw7Zrb2h0LiI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iTGVpa2thYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iS29waW9pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iTGlpdMOkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJMaWl0w6QgcGVsa2vDpG7DpCB0ZWtzdGluw6QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IktvcnZhYS4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJQb2lzdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGlvaSBVUkwtb3NvaXRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iVmFsaXRzZSB0ZWtzdGnDpCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iS3Vtb2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IlRvaXN0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJUZWtzdGluIHZhbGludGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iTGlzw6TDpCBzYW5ha2lyamFhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iUG9pc3RhIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IlZhaWhkYSB0YXVzdGFrdXZhYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IklsbW9pdHVza3V1bnRlbGlqYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iRWh0b2plbiB0b2ltaXR1c3BhbHZlbHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJJbG1vaXR1c2FwdXJpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gb24gYWt0aXZvaXR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IG9uIGFrdGl2b2ludXQgVlBOLXlodGV5ZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVm9pdCBoYWxsaW5ub2lkYSB2ZXJra29hIGtvc2tldHRhbWFsbGEuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkrDpHJqZXN0ZWxtw6RudmFsdm9qYXNpIG9uIHDDpGl2aXR0w6RueXQgcGFrZXRpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkrDpHJqZXN0ZWxtw6RudmFsdm9qYSBvbiBwb2lzdGFudXQgcGFrZXRpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IkpvcyBoYWx1YXQgcGFyYW50YWEgYWt1biBrZXN0b2EsIHZpcnJhbnPDpMOkc3TDtiB2w6RoZW50w6TDpCBsYWl0dGVlc2kgc3Vvcml0dXNreWt5w6QgamEgcmFqb2l0dGFhIHbDpHJpbsOkw6QsIHNpamFpbnRpcGFsdmVsdWl0YSBqYSB1c2VpbXBpYSB0YXVzdGF0aWV0b2phLiBTw6Roa8O2cG9zdGksIHZpZXN0aXQgamEgbXV1dCBzeW5rcm9ub2ludGlpbiBwZXJ1c3R1dmF0IHNvdmVsbHVrc2V0IGVpdsOkdCB2w6RsdHTDpG3DpHR0w6QgcMOkaXZpdHksIGVsbGV0IGF2YWEgbmlpdMOkLlxuXG5WaXJyYW5zw6TDpHN0w7YgcG9pc3R1dSBrw6R5dMO2c3TDpCBhdXRvbWFhdHRpc2VzdGksIGt1biBsYWl0dGVlc2kgbGF0YXV0dXUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iVMOkcmtleXMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkVzdGV0dHk6IMOkbMOkIGtvc2thYW4gbsOkeXTDpCBuw6RpdMOkIGlsbW9pdHVrc2lhLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJNYXRhbGE6IG7DpHl0w6QgbsOkbcOkIGlsbW9pdHVrc2V0IGh1b21hYW1hdHRvbWFzdGkgbHVldHRlbG9uIGFsYW9zYXNzYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+IlRhdmFsbGluZW46IG7DpHl0w6QgbsOkbcOkIGlsbW9pdHVrc2V0IGh1b21hYW1hdHRvbWFzdGkuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJLb3JrZWE6IG7DpHl0w6QgbsOkbcOkIGlsbW9pdHVrc2V0IGx1ZXR0ZWxvbiB5bMOkb3Nhc3NhIGphIHRvaXN0YSDDpMOkbmltZXJra2kuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IktpaXJlZWxsaW5lbjogbsOkeXTDpCBpbG1vaXR1cyBuw6R5dMO2bGzDpCBqYSB0b2lzdGEgw6TDpG5pbWVya2tpLiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCBtaW51dXRpa3NpIChrdW5uZXMga2VsbG8gb24gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+WWhkZWtzaSBtaW51dXRpa3NpIChrdW5uZXMga2VsbG8gb24gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWZyLXJDQS9zdHJpbmdzLnhtbAppbmRleCA1ZGViYzljLi41MmE0NzU4NyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJWZXJyb3VpbGxlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iJmd0Ozk5OSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250ZW51cyBtYXNxdcOpcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Ik1vZGUgc8OpY3VyaXPDqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlN5c3TDqG1lIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlBlcnNvbm5lbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iQ291cGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJDb3BpZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJDb2xsZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IkNvbGxlciBlbiB0ZXh0ZSBicnV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJSZW1wbGFjZXIuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iU3VwcHJpbWVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJDb3BpZXIgbFwnVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU8OpbGVjdGlvbm5lciBkdSB0ZXh0ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iQW5udWxlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUsOpcMOpdGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlPDqWxlY3Rpb24gZGUgdGV4dGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iQWpvdXRlciBhdSBkaWN0aW9ubmFpcmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IlN1cHByaW1lciI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJDaGFuZ2VyIGRlIGZvbmQgZFwnw6ljcmFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iT3V0aWwgZFwnw6ljb3V0ZSBkZXMgbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iRm91cm5pc3NldXIgZGUgY29uZGl0aW9ucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IkFzc2lzdGFudCBkZXMgbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGFjdGl2w6kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gYWN0aXbDqSBwYXIgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iQXBwdXlleiBpY2kgcG91ciBnw6lyZXIgbGUgcsOpc2VhdS4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iTWlzIMOgIGpvdXIgcGFyIHZvdHJlIGFkbWluaXN0cmF0ZXVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJTdXBwcmltw6kgcGFyIHZvdHJlIGFkbWluaXN0cmF0ZXVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQb3VyIGFtw6lsaW9yZXIgbFwnYXV0b25vbWllIGRlIGxhIHBpbGUsIGxhIGZvbmN0aW9uIGRcJ8OpY29ub21pZSBkXCfDqW5lcmdpZSByw6lkdWl0IGxlcyBwZXJmb3JtYW5jZXMgZGUgdm90cmUgYXBwYXJlaWwgZXQgbGltaXRlIGxhIHZpYnJhdGlvbiwgbGVzIHNlcnZpY2VzIGRlIGxvY2FsaXNhdGlvbiBhaW5zaSBxdWUgbGEgcGx1cGFydCBkZXMgZG9ubsOpZXMgZW4gYXJyacOocmUtcGxhbi4gTGVzIGFwcGxpY2F0aW9ucyBDb3VycmllbCwgTWVzc2FnZXMgZXQgZFwnYXV0cmVzIHF1aSByZXBvc2VudCBzdXIgbGEgc3luY2hyb25pc2F0aW9uIG5lIHBldXZlbnQgcGFzIHNlIG1ldHRyZSDDoCBqb3VyLCBzYXVmIHNpIHZvdXMgbGVzIG91dnJlei4gXG5cbiBMXCfDqWNvbm9taXNldXIgZFwnw6luZXJnaWUgc2UgZMOpc2FjdGl2ZSBhdXRvbWF0aXF1ZW1lbnQgbG9yc3F1ZSB2b3RyZSBhcHBhcmVpbCBlc3QgZW4gY2hhcmdlLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkltcG9ydGFuY2UiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb3F1w6llIDogbmUgamFtYWlzIGFmZmljaGVyIGNlcyBub3RpZmljYXRpb25zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkZhaWJsZSA6IGFmZmljaGVyIGVuIG1vZGUgc2lsZW5jaWV1eCBhdSBiYXMgZGUgbGEgbGlzdGUgZGUgbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsZSA6IGFmZmljaGVyIGNlcyBub3RpZmljYXRpb25zIGVuIG1vZGUgc2lsZW5jaWV1eCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iw4lsZXbDqWUgOiBhZmZpY2hlciBlbiBoYXV0IGRlIGxhIGxpc3RlIGRlcyBub3RpZmljYXRpb25zIGV0IMOpbWV0dHJlIHVuIHNvbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnQgOiBhZmZpY2hlciBzdXIgbFwnw6ljcmFuIGV0IMOpbWV0dHJlIHVuIHNvbiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlBlbmRhbnQgJTEkZCBtaW51dGUgKGp1c3F1XCfDoCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlBlbmRhbnQgJTEkZCBtaW51dGVzIChqdXNxdVwnw6AgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZnIvc3RyaW5ncy54bWwKaW5kZXggNmMxYWY4Ny4uMjc0MGYzZCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCkBAIC0xODksNyArMTg5LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InNpbGVudF9tb2RlX3JpbmciIG1zZ2lkPSI4NTkyMjQxODE2MTk0MDc0MzUzIj4iU29ubmVyaWUgYWN0aXbDqWUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWJvb3RfdG9fdXBkYXRlX3RpdGxlIiBtc2dpZD0iNjIxMjYzNjgwMjUzNjgyMzg1MCI+Ik1pc2Ugw6Agam91ciBkdSBzeXN0w6htZSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVib290X3RvX3VwZGF0ZV9wcmVwYXJlIiBtc2dpZD0iNjMwNTg1MzgzMTk1NTMxMDg5MCI+IlByw6lwYXJhdGlvbiBkZSBsYSBtaXNlIMOgIGpvdXIgZW4gY291cnPigKYiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJyZWJvb3RfdG9fdXBkYXRlX3BhY2thZ2UiIG1zZ2lkPSIzODcxMzAyMzI0NTAwOTI3MjkxIj4iVHJhaXRlbWVudCBkdSBwYWNrYWdlIGRlIG1pc2VzIMOgIGpvdXIgZW4gY291cnPigKYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWJvb3RfdG9fdXBkYXRlX3BhY2thZ2UiIG1zZ2lkPSIzODcxMzAyMzI0NTAwOTI3MjkxIj4iVHJhaXRlbWVudCBkdSBwYWNrYWdlIGRlIG1pc2Ugw6Agam91cuKApiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlYm9vdF90b191cGRhdGVfcmVib290IiBtc2dpZD0iNjQyODQ0MTAwMDk1MTU2NTE4NSI+IlJlZMOpbWFycmFnZSBlbiBjb3Vyc+KApiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlYm9vdF90b19yZXNldF90aXRsZSIgbXNnaWQ9IjQxNDIzNTU5MTUzNDA2Mjc0OTAiPiJSw6l0YWJsaXIgbGEgY29uZmlndXJhdGlvbiBkXCd1c2luZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlYm9vdF90b19yZXNldF9tZXNzYWdlIiBtc2dpZD0iMjQzMjA3NzQ5MTEwMTQxNjM0NSI+IlJlZMOpbWFycmFnZSBlbiBjb3Vyc+KApiI8L3N0cmluZz4KQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJWZXJyb3VpbGxlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iJmd0Ozk5OSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250ZW51cyBtYXNxdcOpcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Ik1vZGUgc8OpY3VyaXPDqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlN5c3TDqG1lIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlBlcnNvbm5lbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iQ291cGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJDb3BpZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJDb2xsZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IkNvbGxlciBhdSBmb3JtYXQgdGV4dGUgYnJ1dCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iUmVtcGxhY2VyLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IlN1cHByaW1lciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQ29waWVyIGxcJ1VSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlPDqWxlY3Rpb25uZXIgdGV4dGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkFubnVsZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IlLDqXRhYmxpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJTw6lsZWN0aW9uIGRlIHRleHRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkFqb3V0ZXIgYXUgZGljdGlvbm5haXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJTdXBwcmltZXIiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQ2hhbmdlciBkZSBmb25kIGRcJ8OpY3JhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ik91dGlsIGRcJ8OpY291dGUgZGVzIG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IkZvdXJuaXNzZXVyIGRlIGNvbmRpdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc3Npc3RhbnQgZGUgbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGFjdGl2w6kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gYWN0aXbDqSBwYXIgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iQXBwdXlleiBpY2kgcG91ciBnw6lyZXIgbGUgcsOpc2VhdS4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iTWlzIMOgIGpvdXIgcGFyIHZvdHJlIGFkbWluaXN0cmF0ZXVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJTdXBwcmltw6kgcGFyIHZvdHJlIGFkbWluaXN0cmF0ZXVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQb3VyIGFtw6lsaW9yZXIgbFwnYXV0b25vbWllIGRlIGxhIGJhdHRlcmllLCBsXCfDqWNvbm9taXNldXIgZGUgYmF0dGVyaWUgcsOpZHVpdCBsZXMgcGVyZm9ybWFuY2VzIGV0IGTDqXNhY3RpdmUgbGUgdmlicmV1ciwgbGVzIHNlcnZpY2VzIGRlIGxvY2FsaXNhdGlvbiBldCBsYSBwbHVwYXJ0IGRlcyBkb25uw6llcyBlbiBhcnJpw6hyZS1wbGFuLiBMZXMgbWVzc2FnZXJpZXMgw6lsZWN0cm9uaXF1ZXMgb3UgYXV0cmVzIGFwcGxpY2F0aW9ucyB1dGlsaXNhbnQgbGEgc3luY2hyb25pc2F0aW9uIHBvdXJyYWllbnQgbmUgcGFzIHNlIG1ldHRyZSDDoCBqb3VyLCBzYXVmIHNpIHZvdXMgbGVzIG91dnJlei5cblxuTFwnw6ljb25vbWlzZXVyIGRlIGJhdHRlcmllIHNcJ8OpdGVpbnQgYXV0b21hdGlxdWVtZW50IGxvcnNxdWUgbFwnYXBwYXJlaWwgZXN0IGVuIGNoYXJnZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJJbXBvcnRhbmNlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9xdcOpZcKgOiBuZSBqYW1haXMgYWZmaWNoZXIgY2VzIG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iRmFpYmxlwqA6IGFmZmljaGVyIGVuIG1vZGUgc2lsZW5jaWV1eCBhdSBiYXMgZGUgbGEgbGlzdGUgZGUgbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsZcKgOiBhZmZpY2hlciBjZXMgbm90aWZpY2F0aW9ucyBlbiBtb2RlIHNpbGVuY2lldXgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IsOJbGV2w6llwqA6IGFmZmljaGVyIGVuIGhhdXQgZGUgbGEgbGlzdGUgZGVzIG5vdGlmaWNhdGlvbnMgZXQgw6ltZXR0cmUgdW4gc29uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlVyZ2VudMKgOiBhZmZpY2hlciBzdXIgbFwnw6ljcmFuIGV0IMOpbWV0dHJlIHVuIHNvbiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlBlbmRhbnQgJTEkZMKgbWludXRlIChqdXNxdVwnw6AgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5QZW5kYW50ICUxJGTCoG1pbnV0ZXMgKGp1c3F1XCfDoCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CkBAIC0xNTExLDYgKzE1MTAsNiBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkZDwveGxpZmY6Zz7CoMOpbMOpbWVudHMgc8OpbGVjdGlvbm7DqXM8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgogICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9ub3RpZmljYXRpb25fdG9waWNfbGFiZWwiIG1zZ2lkPSIyMjc1ODYxNDU3OTE4NzA4MjkiPiJEaXZlcnMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJpbXBvcnRhbmNlX2Zyb21fdG9waWMiIG1zZ2lkPSIzNTcyMjgwNDM5ODgwMDIzMjMzIj4iVm91cyBhdmV6IGTDqWZpbmkgbFwnaW1wb3J0YW5jZSBkZSBjZXMgbm90aWZpY2F0aW9ucy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJpbXBvcnRhbmNlX2Zyb21fdG9waWMiIG1zZ2lkPSIzNTcyMjgwNDM5ODgwMDIzMjMzIj4iVm91cyBkw6lmaW5pc3NleiBsXCdpbXBvcnRhbmNlIGRlIGNlcyBub3RpZmljYXRpb25zLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV9wZXJzb24iIG1zZ2lkPSI5MTYwMTMzNTk3MjYyOTM4Mjk2Ij4iQ2VzIG5vdGlmaWNhdGlvbnMgc29udCBpbXBvcnRhbnRlcyBlbiByYWlzb24gZGVzIHBhcnRpY2lwYW50cy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1nbC1yRVMvc3RyaW5ncy54bWwKaW5kZXggMjdhYzQ5MC4uNzFjZTZlOWIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iQmxvcXVlYXIgYWdvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IiZndDs5OTkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGlkbyBvY3VsdG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJNb2RvIHNlZ3VybyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlNpc3RlbWEgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29hbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iQ29ydGFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJDb3BpYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJQZWdhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iUGVnYXIgY29tbyB0ZXh0byBzZW4gZm9ybWF0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iU3Vic3RpdHXDrXLigKYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iRWxpbWluYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IkNvcGlhciBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJTZWxlY2Npb25hciB0ZXh0byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iRGVzZmFjZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IlJlZmFjZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iU2VsZWNjacOzbiBkZSB0ZXh0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJFbmdhZGlyIGFvIGRpY2lvbmFyaW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IkVsaW1pbmFyIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IkNhbWJpYXIgZm9uZG8gZGUgcGFudGFsbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJBeGVudGUgZGUgZXNjb2l0YSBkZSBub3RpZmljYWNpw7NucyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iUHJvdmVkb3IgZGUgY29uZGljacOzbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc2lzdGVudGUgZGUgbm90aWZpY2FjacOzbnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBhY3RpdmFkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBhY3Rpdm91IGEgVlBOIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVG9jYSBhcXXDrSBwYXJhIHhlc3Rpb25hciBhIHJlZGUuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkFjdHVhbGl6YWRvIHBvbG8gYWRtaW5pc3RyYWRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iRWxpbWluYWRvIHBvbG8gYWRtaW5pc3RyYWRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iUGFyYSBheHVkYXIgYSBtZWxsb3JhciBhIGR1cmFjacOzbiBkYSBiYXRlcsOtYSwgYSBmdW5jacOzbiBhZm9ycm8gZGUgYmF0ZXLDrWEgcmVkdWNlIG8gcmVuZGVtZW50byBkbyB0ZXUgZGlzcG9zaXRpdm8gZSBsaW1pdGEgYSB2aWJyYWNpw7NuLCBvcyBzZXJ2aXpvcyBkZSBsb2NhbGl6YWNpw7NuIGUgYSBtYWlvcsOtYSBkb3MgZGF0b3MgZW4gc2VndW5kbyBwbGFuby4gw4kgcG9zaWJsZSBxdWUgbyBjb3JyZW8gZWxlY3Ryw7NuaWNvLCBhcyBtZW5zYXhlcyBlIG91dHJhcyBhcGxpY2FjacOzbnMgcXVlIGRlcGVuZGVuIGRhIHNpbmNyb25pemFjacOzbiBub24gc2UgYWN0dWFsaWNlbiBhIG1lbm9zIHF1ZSBvcyBhYnJhcy4gXG5cbkEgZnVuY2nDs24gYWZvcnJvIGRlIGJhdGVyw61hIGRlc2FjdMOtdmFzZSBhdXRvbWF0aWNhbWVudGUgY2FuZG8gcG9zIGEgY2FyZ2FyIG8gdGV1IGRpc3Bvc2l0aXZvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkltcG9ydGFuY2lhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9xdWVhZGE6IG5vbiBtb3N0cmFyIG51bmNhIGVzdGFzIG5vdGlmaWNhY2nDs25zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkJhaXhhOiBtb3N0cmFyIGRlIGZvcm1hIHNpbGVuY2lvc2EgbmEgcGFydGUgaW5mZXJpb3IgZGEgbGlzdGEgZGUgbm90aWZpY2FjacOzbnMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbDogbW9zdHJhciBlc3RhcyBub3RpZmljYWNpw7NucyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJBbHRhOiBtb3N0cmFyIG5hIHBhcnRlIHN1cGVyaW9yIGRhIGxpc3RhIGRlIG5vdGlmaWNhY2nDs25zIGUgZW1pdGlyIHNvbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcnhlbnRlOiBtb3N0cmFyIG5hIHBhbnRhbGxhIGUgZW1pdGlyIHNvbiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+RHVyYW50ZSAlMSRkIG1pbnV0b3MgKGF0YSBhcyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5EdXJhbnRlIHVuIG1pbnV0byAoYXRhIGFzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZ3UtcklOL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKaW5kZXggYmNiMzMyMS4uODI1OGRjMiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLgqrngqrXgq4cg4Kqy4KuJ4KqVIOCqleCqsOCriyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgqrjgqr7gqq7gqpfgq43gqrDgq4DgqpMg4Kqb4KuB4Kqq4Kq+4Kq14KuH4KqyIOCqm+CrhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuCquOCrgeCqsOCqleCrjeCqt+Cqv+CqpCDgqq7gq4vgqqEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIOCquOCqv+CquOCrjeCqn+CqriI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i4Kq14KuN4Kqv4KqV4KuN4Kqk4Kq/4KqX4KqkIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLgqpXgqr7gqqrgq4siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuCqleCrieCqquCqvyDgqpXgqrDgq4siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLgqqrgq4fgqrjgq43gqp8g4KqV4Kqw4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLgqrjgqr7gqqbgq4Ag4Kqf4KuH4KqV4KuN4Kq44KuN4KqfIOCqpOCqsOCrgOCqleCrhyDgqqrgq4fgqrjgq43gqp8g4KqV4Kqw4KuLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLgqqzgqqbgqrLgq4vigKYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i4KqV4Kq+4Kqi4KuAIOCqqOCqvuCqluCriyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMIOCqqOCrgCDgqpXgq4ngqqrgqr8g4KqV4Kqw4KuLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i4Kqf4KuH4KqV4KuN4Kq44KuN4KqfIOCqquCquOCqguCqpiDgqpXgqrDgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuCqquCrguCqsOCrjeCqteCqteCqpOCrjSDgqpXgqrDgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuCqq+CqsOCrgCDgqpXgqrDgq4siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i4Kqf4KuH4KqV4KuN4Kq44KuN4KqfIOCqquCquOCqguCqpuCql+CrgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLgqrbgqqzgq43gqqbgqpXgq4vgqrbgqq7gqr7gqoIg4KqJ4Kqu4KuH4Kqw4KuLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLgqpXgqr7gqqLgq4Ag4Kqo4Kq+4KqW4KuLIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuCqteCrieCqsuCqquCrh+CqquCqsCDgqqzgqqbgqrLgq4siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLgqrjgq4Lgqprgqqjgqr4g4Kq44Kq+4KqC4Kqt4Kqz4Kqo4Kq+4KqwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLgqrbgqrDgqqQg4Kqq4KuN4Kqw4Kqm4Kq+4Kqk4Kq+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4Kq44KuC4Kqa4Kqo4Kq+IOCquOCqueCqvuCqr+CqlSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIOCquOCqleCrjeCqsOCqv+CqryDgqpXgqrDgq43gqq/gq4HgqoIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g4Kqm4KuN4Kq14Kq+4Kqw4Kq+IFZQTiDgqrjgqpXgq43gqrDgqr/gqq8g4Kql4Kqv4KuB4KqCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4Kqo4KuH4Kqf4Kq14Kqw4KuN4KqV4Kqo4KuHIOCquOCqguCqmuCqvuCqsuCqv+CqpCDgqpXgqrDgqrXgqr4g4Kqu4Kq+4Kqf4KuHIOCqn+CqmiDgqpXgqrDgq4suIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IuCqpOCqruCqvuCqsOCqviDgqrXgq43gqq/gqrXgqrjgq43gqqXgqr7gqqrgqpUg4Kqm4KuN4Kq14Kq+4Kqw4Kq+IOCqheCqquCqoeCrh+CqnyDgqqXgqq/gq4fgqrIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IuCqpOCqruCqvuCqsOCqviDgqrXgq43gqq/gqrXgqrjgq43gqqXgqr7gqqrgqpUg4Kqm4KuN4Kq14Kq+4Kqw4Kq+IOCqleCqvuCqouCrgCDgqqjgqr7gqpbgq4fgqrIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuCqrOCrheCqn+CqsOCrgCDgqobgqrXgqrDgqqbgqr4g4Kq14Kqn4KuBIOCquOCqvuCqsOCrgCDgqpXgqrDgqrXgqr7gqq7gqr7gqoIg4Kq44Kq54Kq+4KqvIOCqruCqvuCqn+Crhywg4Kqs4KuF4Kqf4Kqw4KuAIOCquOCrh+CqteCqsCDgqqTgqq7gqr7gqrDgqr4g4KqJ4Kqq4KqV4Kqw4Kqj4Kqo4Kq+IOCqquCrjeCqsOCqpuCqsOCrjeCqtuCqqOCqqOCrhyDgqpjgqp/gqr7gqqHgq4cg4Kqb4KuHIOCqheCqqOCrhyDgqrXgqr7gqofgqqzgq43gqrDgq4fgqrbgqqgsIOCquOCrjeCqpeCqvuCqqCDgqrjgq4fgqrXgqr7gqpMg4KqF4Kqo4KuHIOCqruCri+Cqn+CqvuCqreCqvuCql+CqqOCqviDgqqrgq4Pgqrfgq43gqqDgqq3gq4Lgqq7gqr8g4Kqh4KuH4Kqf4Kq+4Kqo4KuHIOCquOCrgOCqruCqv+CqpCDgqpXgqrDgq4cg4Kqb4KuHLiDgqofgqq7gq4fgqofgqrIsIOCqruCrh+CquOCrh+CqnOCqv+CqguCqlyDgqoXgqqjgq4cg4KqF4Kqo4KuN4KqvIOCqj+CqquCrjeCqsuCqv+CqleCrh+CqtuCqqOCriyDgqpzgq4cg4Kq44Kqu4Kqo4KuN4Kq14Kqv4KqoIOCqquCqsCDgqobgqqfgqr7gqrAg4Kqw4Kq+4KqW4KuHIOCqm+CrhyDgqqTgq4cg4Kqk4Kqu4KuHIOCqpOCrh+CqruCqqOCrhyDgqpbgq4vgqrLgqrbgq4sg4Kqo4Kq54KuA4KqCIOCqpOCrjeCqr+CqvuCqgiDgqrjgq4Hgqqfgq4Ag4KqF4Kqq4Kqh4KuH4KqfIOCqpeCqiCDgqrbgqpXgqqTgq4Ag4Kqo4Kql4KuALlxuXG7gqpzgq43gqq/gqr7gqrDgq4cg4Kqk4Kqu4Kq+4Kqw4KuB4KqCIOCqieCqquCqleCqsOCqoyDgqprgqr7gqrDgq43gqpwg4Kql4KqIIOCqsOCqueCrjeCqr+CrgeCqgiDgqrngq4vgqq8g4Kqk4KuN4Kqv4Kq+4Kqw4KuHIOCqrOCrheCqn+CqsOCrgCDgqrjgq4fgqrXgqrAg4KqG4Kqq4Kqu4KuH4Kqz4KuHIOCqrOCqguCqpyDgqqXgqogg4Kqc4Kq+4KqvIOCqm+Crhy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgqq7gqrngqqTgq43gqrUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuCqheCqteCqsOCri+Cqp+Cqv+CqpDog4KqGIOCquOCrguCqmuCqqOCqvuCqkyDgqpXgq43gqq/gqr7gqrDgq4fgqq8g4Kqs4Kqk4Kq+4Kq14Kq24KuLIOCqqOCqueCrgOCqgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLgqqjgqr/gqq7gq43gqqg6IOCquOCrguCqmuCqqOCqvuCqqOCrgCDgqrjgq4Lgqprgqr/gqqjgq4Ag4Kqo4KuA4Kqa4KuHIOCqmuCrgeCqquCqmuCqvuCqqiDgqqzgqqTgqr7gqrXgq4siPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+IuCquOCqvuCqruCqvuCqqOCrjeCqrzog4KqGIOCquOCrguCqmuCqqOCqvuCqkyDgqprgq4Hgqqrgqprgqr7gqqog4Kqs4Kqk4Kq+4Kq14KuLIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLgqongqprgq43gqpo6IOCquOCrguCqmuCqqOCqvuCqk+CqqOCrgCDgqrjgq4Lgqprgqr/gqqjgq4Ag4Kqf4KuL4KqaIOCqquCqsCDgqqzgqqTgqr7gqrXgq4sg4KqF4Kqo4KuHIOCqheCqteCqvuCqnCDgqpXgqrDgq4siPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i4Kqk4Kq+4Kqk4KuN4KqV4Kq+4Kqy4Kq/4KqVIDog4Kq44KuN4KqV4KuN4Kqw4KuA4KqoIOCqquCqsCDgqqTgq43gqrXgqrDgqr/gqqQg4Kqm4KuN4Kqw4Kq34KuN4Kqf4Kq/IOCqleCqsOCriyDgqoXgqqjgq4cg4KqF4Kq14Kq+4KqcIOCqleCqsOCriyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQg4Kqu4Kq/4Kqo4Kq/4KqfIOCqruCqvuCqn+CrhyAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g4Kq44KuB4Kqn4KuAKTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCDgqq7gqr/gqqjgqr/gqp8g4Kqu4Kq+4Kqf4KuHICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiDgqrjgq4Hgqqfgq4ApPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKaW5kZXggZWY4YmU2NC4uM2YzNzRhYzYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuCkheCkreClgCDgpLLgpYngpJUg4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuCkm+Ckv+CkquClgCDgpLngpYHgpIgg4KS44KS+4KSu4KSX4KWN4KSw4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i4KS44KWB4KSw4KSV4KWN4KS34KS/4KSkIOCkruCli+CkoSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQg4KS44KS/4KS44KWN4oCN4KSf4KSuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLgpLXgpY3gpK/gpJXgpY3gpKTgpL/gpJfgpKQiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuCkleCkvuCkn+Clh+CkgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i4KSq4KWN4KSw4KSk4KS/4KSy4KS/4KSq4KS/IOCkrOCkqOCkvuCkj+CkgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuCkmuCkv+CkquCkleCkvuCkj+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4KS44KS+4KSm4KWHIOCkquCkvuCkoCDgpJXgpYcg4KSw4KWC4KSqIOCkruClh+CkgiDgpJrgpL/gpKrgpJXgpL7gpI/gpIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuCkrOCkpuCksuClh+CkguKAoiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLgpLngpJ/gpL7gpI/gpIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCDgpJXgpYAg4KSq4KWN4KSw4KSk4KS/4KSy4KS/4KSq4KS/IOCkrOCkqOCkvuCkj+CkgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuCksuClh+CkliDgpJXgpYsg4KSa4KWB4KSo4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLgpLXgpL7gpKrgpLgg4KSy4KS+4KSP4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLgpKvgpL/gpLAg4KS44KWHIOCkleCksOClh+CkgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLgpLLgpYfgpJYg4KSa4KSv4KSoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IuCktuCkrOCljeCkpuCkleCli+CktiDgpK7gpYfgpIIg4KSc4KWL4KSh4KS84KWH4KSCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLgpLngpJ/gpL7gpI/gpIIiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4KS14KWJ4KSy4KSq4KWH4KSq4KSwIOCkrOCkpuCksuClh+CkgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuCkqOCli+Ckn+Ckv+Ckq+Ckv+CkleClh+CktuCkqCDgpLbgpY3gpLDgpLXgpKPgpJXgpLDgpY3gpKTgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuCkuOCljeCkpeCkv+CkpOCkvyDgpKrgpY3gpLDgpKbgpL7gpKTgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLgpKjgpYvgpJ/gpL/gpKvgpL/gpJXgpYfgpLbgpKgg4KS44KS54KS+4KSv4KSVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4KS44KSV4KWN4KSw4KS/4KSvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIOCkleCliyA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g4KSm4KWN4KS14KS+4KSw4KS+IOCkuOCkleCljeCksOCkv+CkryDgpJXgpL/gpK/gpL4g4KSX4KSv4KS+IOCkueCliCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuCkqOClh+Ckn+CkteCksOCljeCklSDgpKrgpY3gpLDgpKzgpILgpKfgpL/gpKQg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS44KWN4oCN4KSq4KSw4KWN4KS2IOCkleCksOClh+Ckgi4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4KSG4KSq4KSV4KWHIOCkqOCkv+Ckr+CkguCkpOCljeCksOCklSDgpKbgpY3gpLXgpL7gpLDgpL4g4KSF4KSq4KSh4KWH4KSfIOCkleCkv+Ckr+CkviDgpJfgpK/gpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IuCkhuCkquCkleClhyDgpKjgpL/gpK/gpILgpKTgpY3gpLDgpJUg4KSm4KWN4KS14KS+4KSw4KS+IOCkueCkn+CkvuCkr+CkviDgpJfgpK/gpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuCkrOCliOCkn+CksOClgCDgpJzgpYDgpLXgpKgg4KSV4KS+4KSyIOCkleCliyDgpKzgpYfgpLngpKTgpLAg4KSs4KSo4KS+4KSo4KWHIOCkruClh+CkgiDgpLjgpLngpL7gpK/gpKTgpL4g4KSV4KWHIOCksuCkv+Ckjywg4KSs4KWI4KSf4KSw4KWAIOCkuOClh+CkteCksCDgpIbgpKrgpJXgpYcg4KSh4KS/4KS14KS+4KSH4KS4IOCkleClhyDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpKgg4KSV4KWLIOCkleCkriDgpJXgpLAg4KSm4KWH4KSk4KS+IOCkueCliCDgpJTgpLAg4KSV4KSC4KSq4KSoLCDgpLjgpY3igI3gpKXgpL7gpKgg4KS44KWH4KS14KS+4KST4KSCIOCklOCksCDgpIXgpKfgpL/gpJXgpL7gpILgpLYg4KSq4KWD4KS34KWN4oCN4KSg4KSt4KWC4KSu4KS/IOCkoeClh+Ckn+CkviDgpJXgpYsg4KS44KWA4KSu4KS/4KSkIOCkleCksCDgpKbgpYfgpKTgpL4g4KS54KWILiDgpLngpYsg4KS44KSV4KSk4KS+IOCkueCliCDgpJXgpL8g4KSI4KSu4KWH4KSyLCDgpLjgpILgpKbgpYfgpLYg4KS44KWH4KS14KS+IOCkpOCkpeCkviDgpLjgpK7gpKjgpY3igI3gpLXgpK/gpKgg4KSq4KSwIOCkhuCkp+CkvuCksOCkv+CkpCDgpIXgpKjgpY3igI3gpK8g4KSQ4KSq4KWN4oCN4KS4IOCkpOCkrCDgpKTgpJUg4KSo4KS+IOCkluClgeCksuClh+CkgiDgpJzgpKwg4KSk4KSVIOCkleCkvyDgpIbgpKog4KSJ4KSo4KWN4oCN4KS54KWH4KSCIOCkqOCkueClgOCkgiDgpJbgpYvgpLLgpKTgpYcuXG5cbuCknOCkrCDgpIbgpKrgpJXgpL4g4KSh4KS/4KS14KS+4KSH4KS4IOCkmuCkvuCksOCljeCknCDgpLngpYsg4KSw4KS54KS+IOCkueCli+CkpOCkviDgpLngpYgg4KSk4KWLIOCkrOCliOCkn+CksOClgCDgpLjgpYfgpLXgpLAg4KSF4KSq4KSo4KWHIOCkhuCkqiDgpKzgpILgpKYg4KS54KWLIOCknOCkvuCkpOCkviDgpLngpYguIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i4KSu4KS54KSk4KWN4oCN4KS1Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLgpIXgpLXgpLDgpYvgpKfgpL/gpKQ6IOCkr+ClhyDgpKjgpYvgpJ/gpL/gpKvgpL/gpJXgpYfgpLbgpKgg4KSV4KSt4KWAIOCkqOCkviDgpKbgpL/gpJbgpL7gpI/gpIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i4KSo4KS/4KSu4KWN4oCN4KSoOiDgpKjgpYvgpJ/gpL/gpKvgpL/gpJXgpYfgpLbgpKgg4KS44KWC4KSa4KWAIOCkleClhyDgpKjgpYDgpJrgpYcg4KSu4KWM4KSoIOCksOClguCkqiDgpLjgpYcg4KSm4KS/4KSW4KS+4KSP4KSCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLgpLjgpL7gpK7gpL7gpKjgpY3igI3gpK86IOCkr+ClhyDgpKjgpYvgpJ/gpL/gpKvgpL/gpJXgpYfgpLbgpKgg4KSu4KWM4KSoIOCksOClguCkqiDgpLjgpYcg4KSm4KS/4KSW4KS+4KSP4KSCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLgpIngpJrgpY3igI3gpJo6IOCkqOCli+Ckn+Ckv+Ckq+Ckv+CkleClh+CktuCkqCDgpLjgpYLgpJrgpYAg4KSV4KWHIOCktuClgOCksOCljeCktyDgpKrgpLAg4KSm4KS/4KSW4KS+4KSP4KSCIOCklOCksCDgpKfgpY3igI3gpLXgpKjgpL8g4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuCkpOCkpOCljeKAjeCkleCkvuCksjog4KS44KWN4oCN4KSV4KWN4KSw4KWA4KSoIOCkquCksCDgpI/gpJUg4KSd4KSy4KSVIOCkpuClh+CkluClh+CkgiDgpJTgpLAg4KSn4KWN4oCN4KS14KSo4KS/IOCkleCksOClh+CkgiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQg4KSu4KS/4KSo4KSfIOCkleClhyDgpLLgpL/gpI8gKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCkpOCklSk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQg4KSu4KS/4KSo4KSfIOCkleClhyDgpLLgpL/gpI8gKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCkpOCklSk8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbAppbmRleCBiZDBiMWZhLi5iZjg5MzY2IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKQEAgLTIyNCw2ICsyMjQsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJaYWtsanXEjWFqIHNhZGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iU2FkcsW+YWogamUgc2tyaXZlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlNpZ3VyYW4gbmHEjWluIHJhZGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJTdXN0YXYgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iT3NvYm5vIjwvc3RyaW5nPgpAQCAtODYzLDEwICs4NjQsMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJJenJlxb5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3BpcmFqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iWmFsaWplcGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IlphbGlqZXBpIGthbyBvYmnEjW5pIHRla3N0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJaYW1pamVuaeKApiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJJemJyacWhaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iS29waXJhaiBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJPZGFiaXIgdGVrc3RhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJQb25pxaF0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUG9ub3ZpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+Ik9kYWJpciB0ZWtzdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iRG9kYWogdSByamXEjW5payI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iSXpicmnFoWkiPC9zdHJpbmc+CkBAIC0xMTE0LDYgKzExMTgsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iUHJvbWplbmEgcG96YWRpbnNrZSBzbGlrZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IlNsdcWhYXRlbGogb2JhdmlqZXN0aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iRGF2YXRhbGogdXZqZXRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iUG9tb8SHbmlrIHphIG9iYXZpamVzdGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBha3RpdmlyYW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJBcGxpa2FjaWphIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBha3RpdmlyYWxhIGplIFZQTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IkRvZGlybml0ZSB6YSB1cHJhdmxqYW5qZSBtcmXFvm9tLiI8L3N0cmluZz4KQEAgLTE0NDksMTIgKzE0NTQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBxb51cmlyYSB2YcWhIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+Ikl6YnJpc2FvIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IkRhIGJpIHNlIHByb2R1bGppbG8gdHJhamFuamUgYmF0ZXJpamUsIHXFoXRlZGEgYmF0ZXJpamUgc21hbmp1amUgcmFkIHVyZcSRYWphIGkgb2dyYW5pxI1hdmEgdmlicmFjaWp1LCB1c2x1Z2UgbG9rYWNpamUgaSB2ZcSHaW51IHBvemFkaW5za2loIHBvZGF0YWthLiBBcGxpa2FjaWplIHphIGUtcG/FoXR1LCBzbGFuamUgcG9ydWthIGkgZHJ1Z2UgYXBsaWthY2lqZSBrb2plIHNlIG9zbGFuamFqdSBuYSBzaW5rcm9uaXphY2lqdSBtb8W+ZGEgc2UgbmXEh2UgYcW+dXJpcmF0aSBha28gaWggbmUgb3R2b3JpdGUuXG5cblXFoXRlZGEgYmF0ZXJpamUgaXNrbGp1xI11amUgc2UgYXV0b21hdHNraSBkb2sgc2UgdXJlxJFhaiBwdW5pLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IlZhxb5ub3N0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9raXJhbm86IG5pa2FkIG5lIHByaWthenVqIHRlIG9iYXZpamVzdGkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTmlza286IHRpaG8gcHJpa2HFvmkgbmEgZG51IHBvcGlzYSBvYmF2aWplc3RpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJVb2JpxI1hamVubzogcHJpa2F6dWogdGUgb2JhdmlqZXN0aSB0aWhvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJWaXNva286IHByaWthxb5pIG5hIHZyaHUgcG9waXNhIG9iYXZpamVzdGkgaSBlbWl0aXJhaiB6dnXEjW5pIHNpZ25hbCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJIaXRubzogcHJpa2HFvmkgbmEgemFzbG9udSBpIGVtaXRpcmFqIHp2dcSNbmkgc2lnbmFsIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+JTEkZCBtaW51dHUgKGRvIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPiUxJGQgbWludXRlIChkbyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbAppbmRleCAwZjNiODQ5Li42NGUyMjI5IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJaw6Fyb2zDoXMgbW9zdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJUYXJ0YWxvbSBlbHJlanR2ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IkJpenRvbnPDoWdpIMO8emVtbcOzZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQgcmVuZHN6ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlN6ZW3DqWx5ZXMiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IktpdsOhZ8OhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iTcOhc29sw6FzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iQmVpbGxlc3p0w6lzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJCZWlsbGVzenTDqXMgZWd5c3plcsWxIHN6w7Z2ZWdrw6ludCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iQ3NlcmUuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iVMO2cmzDqXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCBtw6Fzb2zDoXNhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU3rDtnZlZyBraWplbMO2bMOpc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IlZpc3N6YXZvbsOhcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iw5pqcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iU3rDtnZlZyBraWplbMO2bMOpc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iSG96esOhYWTDoXMgYSBzesOzdMOhcmhveiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iVMO2cmzDqXMiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iSMOhdHTDqXJrw6lwIG1lZ3bDoWx0b3p0YXTDoXNhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iw4lydGVzw610w6lzZmlneWVsxZEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IkZlbHTDqXRlbGJpenRvc8OtdMOzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iw4lydGVzw610w6lzaSBzZWfDqWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBha3RpdsOhbHZhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iQSh6KSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gYWt0aXbDoWx0YSBhIFZQTi10Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iw4lyaW50c2UgbWVnIGEgaMOhbMOzemF0IGtlemVsw6lzw6loZXouIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkZyaXNzw610ZXR0ZSBhIHJlbmRzemVyZ2F6ZGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkEgcmVuZHN6ZXJnYXpkYSB0w7Zyw7ZsdGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IkF6IGFra3VtdWzDoXRvcmlkxZEgbsO2dmVsw6lzZSDDqXJkZWvDqWJlbiBheiBlbmVyZ2lhdGFrYXLDqWtvcyBtw7NkIGNzw7Zra2VudGkgYXogZXN6a8O2eiB0ZWxqZXPDrXRtw6luecOpdCwgw6lzIGtvcmzDoXRvenphIGEgcmV6Z8Opc3QsIGEgaGVseXN6b2xnw6FsdGF0w6Fzb2thdCwgdmFsYW1pbnQgYSBsZWd0w7ZiYiBow6F0dMOpcmFkYXRvdCBpcy4gRWzFkWZvcmR1bGhhdCwgaG9neSBhem9rIGF6IGUtbWFpbC0sIMO8emVuZXRrw7xsZMWRIMOpcyBlZ3nDqWIgYWxrYWxtYXrDoXNvaywgYW1lbHllayBzemlua3Jvbml6w6Fsw6Fzw6FyYSBzesOhbcOtdCwgY3NhayBha2tvciBmcmlzc8OtdGVuZWssIGhhIG1lZ255aXRqYSBhem9rYXQuXG5cbkF6IGVuZXJnaWF0YWthcsOpa29zIG3Ds2QgYXV0b21hdGlrdXNhbiBraWthcGNzb2wsIGhhIGVzemvDtnplIHTDtmx0xZFuIHZhbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJGb250b3Nzw6FnIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJMZXRpbHR2YTogc29oYSBuZW0gamVsZW5uZWsgbWVnIGV6ZWsgYXogw6lydGVzw610w6lzZWsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iQWxhY3Nvbnk6IGF6IMOpcnRlc8OtdMOpc2VrIGF6IMOpcnRlc8OtdMOpc2kgbGlzdGEgdsOpZ8OpbiBqZWxlbm5layBtZWcgaGFuZ2plbHrDqXMgbsOpbGvDvGwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm3DoWw6IGhhbmcgbsOpbGvDvGwgamVsZW5uZWsgbWVnIGV6ZWsgYXogw6lydGVzw610w6lzZWsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Ik1hZ2FzOiBheiDDqXJ0ZXPDrXTDqXNlayBheiDDqXJ0ZXPDrXTDqXNpIGxpc3RhIGVsZWrDqW4gamVsZW5uZWsgbWVnIGhhbmdqZWx6w6lzc2VsIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlPDvHJnxZFzOiBheiDDqXJ0ZXPDrXTDqXNlayBmZWx1Z3JhbmFrIGEga8OpcGVybnnFkW4gaGFuZ2plbHrDqXNzZWwiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQgcGVyY2VuIMOhdCAoZWRkaWc6IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkVneSBwZXJjZW4gw6F0IChlZGRpZzogPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1oeS1yQU0vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWh5LXJBTS9zdHJpbmdzLnhtbAppbmRleCBkYzY3ZTJkLi42ZmRjY2QzIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWh5LXJBTS9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWh5LXJBTS9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+ItS/1bjVstW61aXVrCDVsNWr1bTVoSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLUstW41b7VodW21aTVodWv1bjWgtWp1bXVuNaC1bbVqCDVqdWh1oTWgdW+1aHVriDVpyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+ItSx1bbVvtW/1aHVttWjINW81aXVqtWr1bQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkINWw1aHVtNWh1a/VodaA1aMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+ItSx1bbVsdW21aHVr9Wh1bYiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItS/1b/WgNWl1awiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+ItWK1aHVv9Wz1aXVttWl1awiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLVj9Wl1bLVodWk1oDVpdWsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLVj9Wl1bLVodWk1oDVpdWsINW41oDVutWl1b0g1b3VuNW+1bjWgNWh1a/VodW2INW/1aXWhNW91b8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+ItWT1bjVrdWh1oDVq9W21aXVrC4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLVi9W21bvVpdWsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiLVitWh1b/Vs9Wl1bbVpdWsIFVSTC3VqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+ItS41bbVv9aA1aXVrCDVv9Wl1oTVvdW/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLVgNWl1b/VodaA1a/VpdWsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLUv9aA1a/VttWl1awiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i1Y/VpdaE1b3Vv9WrINWo1bbVv9aA1bjWgtWp1bXVuNaC1bYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i1LHVvtWl1azVodaB1bbVpdWsINWi1aHVvNWh1oDVodW21bjWgtW0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLVi9W21bvVpdWsIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+ItWT1bjVrdWl1awg1brVodW91b/VodW81agiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLUvtWh1bbVuNaC1oHVtNWh1bYg1bjWgtW21a/VttWk1avWgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i1YrVodW11bTVodW21bbVpdaA1asg1bTVodW/1aHVr9Wh1oDVodaAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i1L7VodW21bjWgtaB1bjWgtW01bbVpdaA1asg1oXVo9W21aHVr9Wh1bYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTi3VqCDVodWv1b/Vq9W+1aHWgdW+1aHVriDVpyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTi3VtiDVodWv1b/Vq9W+1aHWgdW+1aHVriDVpyA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4t1asg1a/VuNWy1bTVq9aBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i1YDVutWl1oRgwqDWgdWh1bbWgdWrINWv1aHVvNWh1b7VodaA1bTVodW2INWw1aHVtNWh1oA6Ijwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+ItSx1aTVtNWr1bbVq9W91b/WgNWh1b/VuNaA1agg1anVodaA1bTVodaB1oDVpdWsINWnINWh1bXVtiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i1LHVpNW01avVttWr1b3Vv9aA1aHVv9W41oDVqCDVu9W21bvVpdWsINWnINWh1bXVtiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i1YTVodaA1b/Vr9W41oHVqyDVodW31a3VodW/1aHVttaE1asg1arVodW01a/VpdW/1agg1aXWgNWv1aHWgNWh1oHVttWl1azVuNaCINW21brVodW/1aHVr9W41b4sINW01aHWgNW/1a/VuNaB1asg1afVttWl1oDVo9Wr1aHVtdWrINWt1bbVodW11bTVodW2INWj1bjWgNWu1aHVvNW41oLVtdWp1agg1b3VodWw1bTVodW21aHWg9Wh1a/VuNaC1bQg1acg1b3VodaA1oTVqyDVodW31a3VodW/1aHVttaE1agsINWp1oDVqdW81bjWgdWoLCDVv9Wl1bLVodWk1oDVuNaC1anVtdWh1bYg1a7VodW81aHVtdW41oLVqdW11bjWgtW21bbVpdaA1agg1ocg1bDVpdW/1bbVodW31aXWgNW/1bjWgtW0INWh1bfVrdWh1b/VuNWyINW31aHVvyDVo9W41oDVrtWo1bbVqdWh1oHVttWl1oA6INS31azWg9W41b3Vv9WoLCDVsNWh1bLVuNaA1aTVodWj1oDVuNaC1anVtdW41oLVttW21aXWgNWrINaD1bjVrdWh1bbVodWv1bjWgtW01agg1ocg1b/VvtW11aHVrNW21aXWgNWrINWw1aHVtNWh1arVodW01aXWgdW41oLVtNWr1oEg1a/VodWt1b7VodWuINWh1bXVrCDVsNWh1b7VpdWs1b7VodWu1bbVpdaA1agg1a/VodaA1bjVsiDVpdW2INW51anVodaA1bTVodaB1b7VpdWsLCDVpdWp1aUg1aTVuNaC1oQg1aTWgNWh1bbWhCDVudWj1bjWgNWu1aHWgNWv1aXWhDpcblxu1LXWgNWiINWx1aXWgCDVvdWh1oDWhNWoINWs1avWgdaE1aHVvtW41oDVvtW41oLVtCDVpywg1bTVodaA1b/Vr9W41oHVqyDVp9W21aXWgNWj1avVodW11asg1a3VttWh1bXVtNWh1bYg1aPVuNaA1a7VodW81bjWgtW11anVtiDVq9W21oTVttWh1bfVrdWh1b/VuNaA1aXVtiDVodW21bvVodW/1b7VuNaC1bQg1ac6Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i1L/VodaA1ofVuNaA1bjWgtWp1bXVuNaC1bYiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+ItSx1oDVo9Wl1azVodaD1aHVr9W+1aHVriDVpy4g1LXWgNWi1aXWhCDVudaB1bjWgtaB1aHVpNaA1aXVrCDVodW11b0g1a7VodW21bjWgtaB1bjWgtW01bbVpdaA1agiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i1ZHVodWu1oAuINWR1bjWgtaB1aHVpNaA1aXVrCDVrtWh1bbVuNaC1oHVuNaC1bTVttWl1oDVqyDWgdWh1bbVr9WrINW21aXWgNaE1ofVuNaC1bQg1aHVvNWh1bbWgSDVsdWh1bXVttWh1bXVq9W2INWh1abVpNWh1bbVt9Wh1bbVqyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i1YbVuNaA1bTVodWsLiDVkdW41oLWgdWh1aTWgNWl1awg1aHVtdW9INWu1aHVttW41oLWgdW41oLVtNW21aXWgNW2INWh1bzVodW21oEg1bHVodW11bbVodW11avVtiDVodWm1aTVodW21bfVodW21asiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+ItSy1aHWgNWx1oAuINWR1bjWgtaB1aHVpNaA1aXVrCDVrtWh1bbVuNaC1oHVuNaC1bTVttWl1oDVqyDWgdWh1bbVr9WrINW+1aXWgNaH1bjWgtW0INaHINWw1bbVudWl1oHVttWl1awg1bHVodW11bbVodW11avVtiDVodWm1aTVodW21bfVodW2Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+ItWA1oDVodW/1aHVui4g1ZHVuNaC1oHVodWk1oDVpdWsINWn1a/WgNWh1bbVq9W2INaHINWw1bbVudWl1oHVttWl1awg1bHVodW11bbVodW11avVtiDVodWm1aTVodW21bfVodW2Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+JTEkZCDWgNW41brVpSAo1bTVq9W21bnWhyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQg1oDVuNW61aUgKNW01avVttW51ocgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKaW5kZXggZDEzMTY4YS4uNDk2MDI2NyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iS3VuY2kgc2VrYXJhbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iS29udGVuIHRlcnNlbWJ1bnlpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iTW9kZSBhbWFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iU2lzdGVtIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlByaWJhZGkiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IlBvdG9uZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iU2FsaW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJUZW1wZWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IlRlbXBlbCBzZWJhZ2FpIHRla3MgYmlhc2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IkdhbnRpLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkhhcHVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJTYWxpbiBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJQaWxpaCB0ZWtzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJVcnVuZ2thbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iVWxhbmdpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlBlbWlsaWhhbiB0ZWtzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IlRhbWJhaGthbiBrZSBrYW11cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iSGFwdXMiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iVWJhaCB3YWxscGFwZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJQZW5kZW5nYXIgcGVtYmVyaXRhaHVhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iUGVueWVkaWEga2V0ZW50dWFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iQXNpc3RlbiBub3RpZmlrYXNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gZGlha3RpZmthbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBkaWFrdGlma2FuIG9sZWggPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iU2VudHVoIHVudHVrIG1lbmdlbG9sYSBqYXJpbmdhbi4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iRGlwZXJiYXJ1aSBvbGVoIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkRpaGFwdXMgb2xlaCBhZG1pbmlzdHJhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJVbnR1ayBtZW1iYW50dSBtZW5pbmdrYXRrYW4gbWFzYSBwYWthaSBiYXRlcmFpLCBwZW5naGVtYXQgYmF0ZXJhaSBtZW5ndXJhbmdpIGtpbmVyamEgcGVyYW5na2F0IGRhbiBtZW1iYXRhc2kgZ2V0YXJhbiwgbGF5YW5hbiBsb2thc2ksIGRhbiBrZWJhbnlha2FuIGRhdGEgbGF0YXIgYmVsYWthbmcuIEVtYWlsLCBwZXJwZXNhbmFuLCBkYW4gYXBsaWthc2kgbGFpbiB5YW5nIG1lbmdhbmRhbGthbiBzaW5rcm9uaXNhc2kgbXVuZ2tpbiB0aWRhayBkaXBlcmJhcnVpIGtlY3VhbGkgamlrYSBkaWJ1a2EuXG5cblBlbmdoZW1hdCBiYXRlcmFpIG90b21hdGlzIG5vbmFrdGlmIGppa2EgcGVyYW5na2F0IGRpaXNpIGRheWFueWEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iVGluZ2thdCBLZXBlbnRpbmdhbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iRGlibG9raXI6IEphbmdhbiBwZXJuYWggbWVuYW1waWxrYW4gbm90aWZpa2FzaSBpbmkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iUmVuZGFoOiBNZW5hbXBpbGthbiBkaSBiYWdpYW4gYmF3YWggZGFmdGFyIG5vdGlmaWthc2kgc2VjYXJhIGRpYW0tZGlhbSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsOiBNZW5hbXBpbGthbiBub3RpZmlrYXNpIGluaSBzZWNhcmEgZGlhbS1kaWFtIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJUaW5nZ2k6IE1lbmFtcGlsa2FuIGRpIGJhZ2lhbiBhdGFzIGRhZnRhciBub3RpZmlrYXNpIGRhbiBtZW1idW55aWthbiBzdWFyYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJEYXJ1cmF0OiBNdW5jdWwgZGkgbGF5YXIgZGFuIG1lbWJ1bnlpa2FuIHN1YXJhIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5TZWxhbWEgJTEkZCBtZW5pdCAoaGluZ2dhIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlNlbGFtYSBzYXR1IG1lbml0IChoaW5nZ2EgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1pcy1ySVMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAppbmRleCAwYzQyMjkzLi4zNWFlNTNkIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkzDpnNhIG7Dum5hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IklubmloYWxkIGZhbGnDsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IsOWcnVnZyBzdGlsbGluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQga2VyZmnDsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc8OzbnVsZWd0Ijwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJLbGlwcGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IkFmcml0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IkzDrW1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJMw61tYSBzZW0gw7NzbmnDsGlubiB0ZXh0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iU2tpcHRhIMO6dOKApiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJFecOwYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQWZyaXRhIHZlZnNsw7PDsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlZlbGphIHRleHRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJBZnR1cmthbGxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJFbmR1cmdlcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVGV4dGF2YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iQsOmdGEgdmnDsCBvcsOwYWLDs2siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IkV5w7BhIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IlNraXB0YSB1bSB2ZWdnZsOzw7B1ciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IlRpbGt5bm5pbmdhaGx1c3R1biI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iU2tpbHlyw7BhdmVpdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJUaWxreW5uaW5nYWHDsHN0b8OwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gdmlya2phw7AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gZXIgdmlya2phw7AgbWXDsCA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJTbmVydHUgdGlsIGHDsCBoYWZhIHVtc2rDs24gbWXDsCBuZXRpbnUuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IlVwcGbDpnJ0IGFmIGtlcmZpc3N0asOzcmFudW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkV5dHQgYWYga2VyZmlzc3Rqw7NyYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iVGlsIGHDsCBhdWthIGVuZGluZ3UgcmFmaGzDtsOwdW5uYXIgbXVuIG9ya3VzcGFybmHDsHVyIGRyYWdhIMO6ciBhZmvDtnN0dW0gdMOma2lzaW5zIG9nIHRha21hcmthIHRpdHJpbmcsIHN0YcOwc2V0bmluZ2Fyw75qw7NudXN0dSBvZyBtZWduacOwIGFmIGJha2dydW5uc2fDtmdudW0uIEVra2kgZXIgdsOtc3QgYcOwIHTDtmx2dXDDs3N0dXIsIHNraWxhYm/DsCBvZyDDtm5udXIgZm9ycml0IHNlbSByZWnDsGEgc2lnIMOhIHNhbXN0aWxsaW5ndSB1cHBmw6ZyaXN0IG5lbWEgw77DuiBvcG5pciDDvmF1LlxuXG5TasOhbGZrcmFmYSBlciBzbMO2a2t0IMOhIG9ya3VzcGFybmHDsGkgw75lZ2FyIHTDpmtpw7AgZXIgw60gaGxlw7BzbHUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iTWlraWx2w6ZnaSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iw5p0aWxva2HDsGFyOiBBbGRyZWkgc8O9bmEgw75lc3NhciB0aWxreW5uaW5nYXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTMOpdHR2w6ZnYXI6IFPDvW5hIG5lw7BzdCDDoSB0aWxreW5uaW5nYWxpc3RhbnVtIMOhbiBobGrDs8OwcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iVmVuanVsZWdhcjogU8O9bmEgw75lc3NhciB0aWxreW5uaW5nYXIgw6FuIGhsasOzw7BzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJNaWtpbHbDpmdhcjogU8O9bmEgZWZzdCDDoSB0aWxreW5uaW5nYWxpc3RhbnVtIG9nIHNwaWxhIGhsasOzw7AiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iw4Fyw63DsGFuZGk6IEJpcnRhIMOhIHNrasOhbnVtIG9nIHNwaWxhIGhsasOzw7AiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7DjSAlMSRkIG3DrW7DunR1ICh0aWwgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7DjSAlMSRkIG3DrW7DunR1ciAodGlsIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCmluZGV4IDU4MTc2Y2UuLmVlMWI2N2QgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkJsb2NjYSBvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVudXRpIG5hc2Nvc3RpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iTW9kYWxpdMOgIHByb3Z2aXNvcmlhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iU2lzdGVtYSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXJzb25hbGUiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IlRhZ2xpYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iQ29waWEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJJbmNvbGxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJJbmNvbGxhIGNvbWUgdGVzdG8gbm9ybWFsZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iU29zdGl0dWlzY2kuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iRWxpbWluYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQ29waWEgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZXppb25hIHRlc3RvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJBbm51bGxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJSaXBldGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iU2VsZXppb25lIHRlc3RvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkFnZ2l1bmdpIGFsIGRpemlvbmFyaW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IkVsaW1pbmEiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQ2FtYmlhIHNmb25kbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ikxpc3RlbmVyIGRpIG5vdGlmaWNhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJQcm92aWRlciBjb25kaXppb25pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iQXNzaXN0ZW50ZSBub3RpZmljYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGF0dGl2YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBhdHRpdmF0YSBkYSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJUb2NjYSBwZXIgZ2VzdGlyZSBsYSByZXRlLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBZ2dpb3JuYXRvIGRhbGxcJ2FtbWluaXN0cmF0b3JlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJFbGltaW5hdG8gZGFsbFwnYW1taW5pc3RyYXRvcmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IlBlciBhdW1lbnRhcmUgbGEgZHVyYXRhIGRlbGxhIGJhdHRlcmlhLCBsYSBmdW56aW9uZSBkaSByaXNwYXJtaW8gZW5lcmdldGljbyByaWR1Y2UgbGUgcHJlc3RhemlvbmkgZGVsIGRpc3Bvc2l0aXZvIGUgbGltaXRhIHZpYnJhemlvbmUsIHNlcnZpemkgZGkgbG9jYWxpenphemlvbmUgZSBsYSBtYWdnaW9yIHBhcnRlIGRlaSBkYXRpIGluIGJhY2tncm91bmQuIEFwcCBkaSBlbWFpbCwgbWVzc2FnZ2kgZSBhbHRyZSBhcHAgY2hlIHNpIGJhc2FubyBzdWxsYSBzaW5jcm9uaXp6YXppb25lIHBvdHJlYmJlcm8gZXNzZXJlIGFnZ2lvcm5hdGUgc29sdGFudG8gYWxsXCdhcGVydHVyYS5cblxuTGEgZnVuemlvbmUgZGkgcmlzcGFybWlvIGVuZXJnZXRpY28gdmllbmUgZGlzYXR0aXZhdGEgYXV0b21hdGljYW1lbnRlIHF1YW5kbyBpbCBkaXNwb3NpdGl2byDDqCBpbiBjYXJpY2EuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iSW1wb3J0YW56YSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxvY2NhdG86IG5vbiBtb3N0cmFyZSBtYWkgcXVlc3RlIG5vdGlmaWNoZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJCYXNzYTogbW9zdHJhIHNpbGVuemlvc2FtZW50ZSBhbGxhIGZpbmUgZGVsbFwnZWxlbmNvIGRpIG5vdGlmaWNoZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsZTogbW9zdHJhIHNpbGVuemlvc2FtZW50ZSBxdWVzdGUgbm90aWZpY2hlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJBbHRhOiBtb3N0cmEgYWxsXCdpbml6aW8gZGVsbFwnZWxlbmNvIGRpIG5vdGlmaWNoZSBlIHJpcHJvZHVjaSBzdW9ubyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnRlOiBhcHJpIHN1bGxvIHNjaGVybW8gZSByaXByb2R1Y2kgc3Vvbm8iPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlBlciAlMSRkIG1pbnV0aSAoZmlubyBhbGxlIG9yZSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5QZXIgdW4gbWludXRvIChmaW5vIGFsbGUgb3JlIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KQEAgLTE0NzgsOCArMTQ3Nyw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlBlciAlZCBvcmU8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5QZXIgMSBvcmE8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgotICAgIDxzdHJpbmcgbmFtZT0iemVuX21vZGVfdW50aWwiIG1zZ2lkPSI3MzM2MzA4NDkyMjg5ODc1MDg4Ij4iRmlubyBhbGxlIG9yZSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ6ZW5fbW9kZV9hbGFybSIgbXNnaWQ9IjkxMjgyMDU3MjEzMDEzMzA3OTciPiJGaW5vIGFsbGUgb3JlIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FIj4lMSRzPC94bGlmZjpnPiAocHJvc3NpbWEgc3ZlZ2xpYSkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ6ZW5fbW9kZV91bnRpbCIgbXNnaWQ9IjczMzYzMDg0OTIyODk4NzUwODgiPiJGaW5vIGEgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iemVuX21vZGVfYWxhcm0iIG1zZ2lkPSI5MTI4MjA1NzIxMzAxMzMwNzk3Ij4iRmlubyBhIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FIj4lMSRzPC94bGlmZjpnPiAocHJvc3NpbWEgc3ZlZ2xpYSkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ6ZW5fbW9kZV9mb3JldmVyIiBtc2dpZD0iNzQyMDAxMTkzNjc3MDA4Njk5MyI+IkZpbm8gYWxsYSBkaXNhdHRpdmF6aW9uZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Inplbl9tb2RlX2ZvcmV2ZXJfZG5kIiBtc2dpZD0iMzc5MjEzMjY5NjU3MjE4OTA4MSI+IkZpbm8gYWxsYSBkaXNhdHRpdmF6aW9uZSBkaSBOb24gZGlzdHVyYmFyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Inplbl9tb2RlX3J1bGVfbmFtZV9jb21iaW5hdGlvbiIgbXNnaWQ9IjE5MTEwOTkzOTk2ODA3NjQ3NyI+Ijx4bGlmZjpnIGlkPSJGSVJTVCI+JTEkczwveGxpZmY6Zz4vPHhsaWZmOmcgaWQ9IlJFU1QiPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwKaW5kZXggYjBjNzQzNy4uZGYwNDcxZSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sCkBAIC0yMjUsNiArMjI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i16DXotecINei15vXqdeZ15UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i15TXqteV15vXnyDXnteV16HXqteoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i157XpteRINeR15jXldeXIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4i4oCP157Xoteo15vXqiBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLXkNeZ16nXmSI8L3N0cmluZz4KQEAgLTg2OCwxMCArODY5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i15fXqteV15oiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IteU16LXqtenIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i15TXk9eR16ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IteU15PXkdenINeb15jXp9eh15gg16TXqdeV15giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IteU15fXnNejLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+Itee15fXpyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i15TXoteq16cg15vXqteV15HXqiDXkNeq16giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLXkdeX16gg15jXp9eh15giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IteR15jXnCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i15HXpteiINee15fXk9epIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IteR15fXmdeo16og15jXp9eh15giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i15TXldeh16Mg15zXnteZ15zXldefIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLXnteX16ciPC9zdHJpbmc+CkBAIC0xMTIxLDYgKzExMjUsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i16nXoNeUINeY16TXmCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Itee15DXlteZ158g15zXlNeq16jXkNeV16oiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+Iteh16TXpyDXqteg15DXmSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IteQ16HXmdeh15jXoNeYINeU15TXldeT16LXldeqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiLigI9WUE4g157Xldek16LXnCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IuKAj1ZQTiDXnteV16TXotecINei15wg15nXk9eZIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IteS16Ig15vXk9eZINec16DXlNecINeQ16og15TXqNep16ouIjwvc3RyaW5nPgpAQCAtMTQ1OCwxMiArMTQ2Myw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+Itei15XXk9eb158g16LXnCDXmdeT15kg157XoNeU15wg15TXntei16jXm9eqINep15zXmiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i16DXnteX16fXlCDXotecINeZ15PXmSDXnteg15TXnCDXlNee16LXqNeb16og16nXnNeaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLXm9eT15kg15zXoteW15XXqCDXkdep15nXpNeV16gg15fXmdeZINeU16HXldec15zXlCwg16rXm9eV16DXqiDXlNeX15nXodeb15XXnyDXkdeh15XXnNec15Qg157Xptee16bXnteqINeQ16og16TXoteV15zXldeqINeU157Xm9ep15nXqCDXldee15LXkdeZ15zXlCDXqNeY15gsINep15nXqNeV16rXmSDXnteZ16fXldedINeV15DXqiDXqNeV15Eg16DXqteV16DXmSDXlNeo16fXoi4g15DXmdee15nXmdecLCDXlNei15HXqNeqINeU15XXk9ei15XXqiDXldeQ16TXnNeZ16fXpteZ15XXqiDXkNeX16jXldeqINeU157Xodeq157Xm9eV16og16LXnCDXodeg15vXqNeV158g16LXqdeV15nXldeqINep15zXkCDXnNeU16rXoteT15vXnywg15DXnNeQINeQ150g16rXpNeq15cg15DXldeq158uXG5cbteq15vXldeg16og15TXl9eZ16HXm9eV158g15HXodeV15zXnNeUINee15XXqdeR16rXqiDXkNeV15jXldee15jXmdeqINeb16nXlNee15vXqdeZ16gg15HXmNei15nXoNeULiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IteX16nXmdeR15XXqiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i15fXodeZ157XlDog15zXoteV15zXnSDXkNecINeq16bXmdeSINeU15XXk9ei15XXqiDXkNec15QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i16DXnteV15vXlDog15TXpteSINeR16rXl9eq15nXqiDXqNep15nXnteqINeU15TXldeT16LXldeqINeR15zXmSDXnNeU16nXnteZ16Ig16bXnNeZ15wiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Iteo15LXmdec15Q6INeU16bXkiDXlNeV15PXoteV16og15DXnNeUINeR15zXmSDXnNeU16nXnteZ16Ig16bXnNeZ15wiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IteS15HXldeU15Q6INeU16bXkiDXkdeo15DXqSDXqNep15nXnteqINeU15TXldeT16LXldeqINeV15TXqdee16Ig16bXnNeZ15wiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i15PXl9eV16TXlDog15TXpteSINec16jXkteiINei15wg15TXnteh15og15XXlNep157XoiDXptec15nXnCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJ0d28iPuKAj9ec157XqdeaICVkINeT16fXldeqICjXoteTIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJtYW55Ij7igI/XnNee16nXmiAlMSRkINeT16fXldeqICjXoteTIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KQEAgLTE1NDcsNiArMTU0Niw2IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7XkdeX16jXqiA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkZDwveGxpZmY6Zz48L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgogICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9ub3RpZmljYXRpb25fdG9waWNfbGFiZWwiIG1zZ2lkPSIyMjc1ODYxNDU3OTE4NzA4MjkiPiLXqdeV16DXldeqIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+IteQ16rXlCDXnteS15PXmdeoINeQ16og15fXqdeZ15HXldeq158g16nXnCDXlNeV15PXoteV16og15DXnNeULiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV90b3BpYyIgbXNnaWQ9IjM1NzIyODA0Mzk4ODAwMjMyMzMiPiLXkNeq15Qg157XkteT15nXqCDXkNeqINeU15fXqdeZ15HXldeqINep15wg15TXlNeV15PXoteV16og15TXkNec15QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3BlcnNvbiIgbXNnaWQ9IjkxNjAxMzM1OTcyNjI5MzgyOTYiPiLXlNeU15XXk9ei15Qg15fXqdeV15HXlCDXkdep15wg15TXkNeg16nXmdedINeU157XoteV16jXkdeZ150uIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbAppbmRleCBhODFiOGI0Li43NjRlMGNmIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLku4rjgZnjgZDjg63jg4Pjgq8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iu+8iDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+IOS7tu+8iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLjgrPjg7Pjg4bjg7Pjg4TjgYzpnZ7ooajnpLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLjgrvjg7zjg5Xjg6Ljg7zjg4kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lk44K344K544OG44OgIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLlgIvkurrnlKgiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuWIh+OCiuWPluOCiiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i44Kz44OU44O8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i6LK844KK5LuY44GRIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLmm7jlvI/jgarjgZfjg4bjgq3jgrnjg4jjgajjgZfjgabosrzjgorku5jjgZEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+Iue9ruaPmy4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLliYrpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTOOCkuOCs+ODlOODvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuODhuOCreOCueODiOOCkumBuOaKniI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i5YWD44Gr5oi744GZIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLjgoTjgornm7TjgZciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i44OG44Kt44K544OI6YG45oqeIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+Iui+nuabuOOBq+i/veWKoCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i5YmK6ZmkIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuWjgee0meOCkuWkieabtCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IumAmuefpeODquOCueODiuODvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i44Kz44Oz44OH44Kj44K344On44Oz44OX44Ot44OQ44Kk44OAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i6YCa55+l44Ki44K344K544K/44Oz44OIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE7jgYzmnInlirnjgavjgarjgorjgb7jgZfjgZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE7jgYw8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz7jgavjgojjgormnInlirnljJbjgZXjgozjgb7jgZfjgZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLjgr/jg4Pjg5fjgZfjgabjg43jg4Pjg4jjg6/jg7zjgq/jgpLnrqHnkIbjgZfjgb7jgZnjgIIiPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i566h55CG6ICF44Gr44KI44Gj44Gm5pu05paw44GV44KM44Gm44GE44G+44GZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLnrqHnkIbogIXjgavjgojjgaPjgabliYrpmaTjgZXjgozjgb7jgZfjgZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuODkOODg+ODhuODquODvOOCkumVt+aMgeOBoeOBleOBm+OCi+OBn+OCgeOAgeODkOODg+ODhuODquODvOOCu+ODvOODkOODvOOBr+err+acq+OBruODkeODleOCqeODvOODnuODs+OCueOCkuaKkeOBiOOAgeODkOOCpOODluODrOODvOOCt+ODp+ODs+OAgeS9jee9ruaDheWgseOCteODvOODk+OCueOAgeWkp+WNiuOBruODkOODg+OCr+OCsOODqeOCpuODs+ODieODh+ODvOOCv+OCkuWItumZkOOBl+OBvuOBmeOAguODoeODvOODq+OAgVNNU+OChOOAgeWQjOacn+OCkuS9v+eUqOOBmeOCi+OBneOBruS7luOBruOCouODl+ODquOBr+OAgei1t+WLleOBl+OBpuOCguabtOaWsOOBleOCjOOBquOBhOOBk+OBqOOBjOOBguOCiuOBvuOBmeOAglxuXG7jg5Djg4Pjg4bjg6rjg7zjgrvjg7zjg5Djg7zjga/nq6/mnKvjga7lhYXpm7vkuK3jga/oh6rli5XnmoTjgatPRkbjgavjgarjgorjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLph43opoHluqYiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuODluODreODg+OCrzog5LuK5b6M44Gv44GT44Gu6YCa55+l44KS6KGo56S644GX44Gq44GEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuS9jjog6YCa55+l44Oq44K544OI44Gu5LiL44Gr44Oe44OK44O844Oi44O844OJ44Gn6KGo56S644GZ44KLIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLmqJnmupY6IOOBk+OBrumAmuefpeOCkuODnuODiuODvOODouODvOODieOBp+ihqOekuuOBmeOCiyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i6auYOiDpgJrnn6Xjg6rjgrnjg4jjga7kuIrjgavooajnpLrjgZfjgIHpn7Plo7DjgafjgoLnn6XjgonjgZvjgosiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i57eK5oClOiDnlLvpnaLjgavjg5fjg6zjg5Pjg6Xjg7zjgpLooajnpLrjgZfjgIHpn7Plo7DjgafjgoLnn6XjgonjgZvjgosiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGTliIbplpPvvIg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPuOBvuOBp++8iTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjHliIbplpPvvIg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPuOBvuOBp++8iTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta2EtckdFL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKaW5kZXggMjY5YWY2MS4uMGZhNzg2YyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLhg5Dhg67hg5rhg5Ag4YOp4YOQ4YOZ4YOU4YOi4YOV4YOQIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuGDqOGDmOGDkuGDl+GDkOGDleGDoeGDmCDhg5Phg5Dhg5vhg5Dhg5rhg6Phg5rhg5jhg5AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLhg6Phg6Hhg5Dhg6Thg6Dhg5fhg67hg50g4YOg4YOU4YOf4YOY4YOb4YOYIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZC3hg5jhg6Eg4YOh4YOY4YOh4YOi4YOU4YOb4YOQIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLhg57hg5jhg6Dhg5Dhg5Phg5giPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuGDkOGDm+GDneGDreGDoOGDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i4YOZ4YOd4YOe4YOY4YOg4YOU4YOR4YOQIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i4YOp4YOQ4YOh4YOb4YOQIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLhg6nhg5Xhg5Thg6Phg5rhg5Thg5Hhg6Dhg5jhg5Ug4YOi4YOU4YOl4YOh4YOi4YOQ4YOTIOGDqeGDkOGDoeGDm+GDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i4YOp4YOQ4YOc4YOQ4YOq4YOV4YOa4YOU4YOR4YOQ4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuGDrOGDkOGDqOGDmuGDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMIOGDmeGDneGDnuGDmOGDoOGDlOGDkeGDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuGDouGDlOGDpeGDoeGDouGDmOGDoSDhg5vhg53hg5zhg5jhg6jhg5Xhg5zhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuGDk+GDkOGDkeGDoOGDo+GDnOGDlOGDkeGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i4YOS4YOQ4YOb4YOU4YOd4YOg4YOU4YOR4YOQIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IuGDouGDlOGDpeGDoeGDouGDmOGDoSDhg5vhg53hg5zhg5jhg6jhg5Xhg5zhg5AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4YOa4YOU4YOl4YOh4YOY4YOZ4YOd4YOc4YOo4YOYIOGDk+GDkOGDm+GDkOGDouGDlOGDkeGDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i4YOs4YOQ4YOo4YOa4YOQIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuGDpOGDneGDnOGDmOGDoSDhg6jhg5Thg6rhg5Xhg5rhg5AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5jhg6Eg4YOb4YOh4YOb4YOU4YOc4YOU4YOa4YOYIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLhg5vhg5Phg5Lhg53hg5vhg5Dhg6Dhg5Thg53hg5Hhg5jhg6Eg4YOe4YOg4YOd4YOV4YOQ4YOY4YOT4YOU4YOg4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4YOo4YOU4YOi4YOn4YOd4YOR4YOY4YOc4YOU4YOR4YOQ4YOX4YOQIOGDkOGDoeGDmOGDoeGDouGDlOGDnOGDouGDmCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIOGDkuGDkOGDkOGDpeGDouGDmOGDo+GDoOGDlOGDkeGDo+GDmuGDmOGDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiDhg5Lhg5Dhg5Dhg6Xhg6Lhg5jhg6Phg6Dhg5Thg5Hhg6Phg5rhg5jhg5AgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LeGDmOGDoSDhg5vhg5jhg5Thg6AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLhg6jhg5Thg5Thg67hg5Thg5cg4YOl4YOh4YOU4YOa4YOY4YOhIOGDoeGDkOGDm+GDkOGDoOGDl+GDkOGDleGDkOGDky4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4YOS4YOQ4YOc4YOQ4YOu4YOa4YOU4YOR4YOj4YOa4YOY4YOQIOGDl+GDpeGDleGDlOGDnOGDmCDhg5Dhg5Phg5vhg5jhg5zhg5jhg6Hhg6Lhg6Dhg5Dhg6Lhg53hg6Dhg5jhg6Eg4YOb4YOY4YOU4YOgIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLhg5fhg6Xhg5Xhg5Thg5zhg5gg4YOQ4YOT4YOb4YOY4YOc4YOY4YOh4YOi4YOg4YOQ4YOi4YOd4YOg4YOY4YOhIOGDm+GDmOGDlOGDoCDhg6zhg5Dhg6jhg5rhg5jhg5rhg5giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmOGDoSDhg5vhg53hg6Xhg5vhg5Thg5Phg5Thg5Hhg5jhg6Eg4YOV4YOQ4YOT4YOY4YOhIOGDkuGDkOGDo+GDm+GDr+GDneGDkeGDlOGDoeGDlOGDkeGDmOGDoeGDkOGDl+GDleGDmOGDoSwg4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOY4YOhIOGDk+GDkOGDm+GDluGDneGDkuGDmCDhg5Dhg5vhg6rhg5jhg6Dhg5Thg5Hhg6Eg4YOX4YOl4YOV4YOU4YOc4YOYIOGDm+GDneGDrOGDp+GDneGDkeGDmOGDmuGDneGDkeGDmOGDoSDhg6jhg5Thg6Hhg6Dhg6Phg5rhg5Thg5Hhg5Dhg6Eg4YOT4YOQIOGDluGDpuGDo+GDk+GDkOGDleGDoSDhg5Xhg5jhg5Hhg6Dhg5Dhg6rhg5jhg5Dhg6EsIOGDkOGDk+GDkuGDmOGDmuGDm+GDk+GDlOGDkeGDkOGDoOGDlOGDneGDkeGDmOGDoSDhg5vhg53hg5vhg6Hhg5Dhg67hg6Phg6Dhg5Thg5Hhg5Thg5Hhg6Eg4YOT4YOQIOGDq+GDmOGDoOGDmOGDl+GDkOGDkyDhg6Thg53hg5zhg6Phg6Ag4YOb4YOd4YOc4YOQ4YOq4YOU4YOb4YOU4YOR4YOhLiDhg5Thg5ot4YOk4YOd4YOh4YOi4YOQLCDhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5gg4YOT4YOQIOGDoeGDruGDleGDkCDhg6Hhg5jhg5zhg6Xhg6Dhg53hg5zhg5jhg5bhg5Dhg6rhg5jhg5Dhg5bhg5Qg4YOT4YOQ4YOn4YOg4YOT4YOc4YOd4YOR4YOY4YOa4YOYIOGDkOGDnuGDmuGDmOGDmeGDkOGDquGDmOGDlOGDkeGDmOGDoSDhg5Lhg5Dhg5zhg5Dhg67hg5rhg5Thg5Hhg5Ag4YOQ4YOgIOGDm+GDneGDruGDk+GDlOGDkeGDkCDhg5vhg5Dhg5cg4YOS4YOQ4YOu4YOh4YOc4YOU4YOQ4YOb4YOT4YOULiBcblxuIOGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmOGDoSDhg5Phg5Dhg5vhg5bhg53hg5Lhg5Xhg5Thg5rhg5gg4YOQ4YOV4YOi4YOd4YOb4YOQ4YOi4YOj4YOg4YOQ4YOTIOGDkuGDkOGDm+GDneGDmOGDoOGDl+GDleGDlOGDkeGDkCwg4YOg4YOd4YOT4YOU4YOh4YOQ4YOqIOGDl+GDpeGDleGDlOGDnOGDoSDhg5vhg53hg6zhg6fhg53hg5Hhg5jhg5rhg53hg5Hhg5Dhg6Eg4YOT4YOQ4YOb4YOi4YOU4YOc4YOX4YOQ4YOcIOGDqOGDlOGDkOGDlOGDoOGDl+GDlOGDkeGDly4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5jhg6Eg4YOT4YOd4YOc4YOUIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLhg5Phg5Dhg5Hhg5rhg53hg5nhg5jhg5rhg5g6IOGDlOGDoSDhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5gg4YOQ4YOm4YOQ4YOg4YOQ4YOh4YOd4YOT4YOU4YOhIOGDkuGDkOGDm+GDneGDqeGDnOGDk+GDlOGDkeGDkCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLhg5Phg5Dhg5Hhg5Dhg5rhg5g6IOGDlOGDoSDhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5gg4YOh4YOY4YOY4YOhIOGDkeGDneGDmuGDneGDqOGDmCwg4YOj4YOu4YOb4YOd4YOTIOGDkuGDkOGDm+GDneGDqeGDnOGDk+GDlOGDkeGDkCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4YOc4YOd4YOg4YOb4YOQ4YOa4YOj4YOg4YOYOiDhg5Thg6Eg4YOo4YOU4YOi4YOn4YOd4YOR4YOY4YOc4YOU4YOR4YOU4YOR4YOYIOGDo+GDruGDm+GDneGDkyDhg5Lhg5Dhg5vhg53hg6nhg5zhg5Phg5Thg5Hhg5AiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuGDm+GDkOGDpuGDkOGDmuGDmDog4YOU4YOhIOGDqOGDlOGDouGDp+GDneGDkeGDmOGDnOGDlOGDkeGDlOGDkeGDmCDhg6Hhg5jhg5jhg6Eg4YOX4YOQ4YOV4YOo4YOYLCDhg67hg5vhg53hg5Xhg5Dhg5wg4YOh4YOY4YOS4YOc4YOQ4YOa4YOX4YOQ4YOcIOGDlOGDoOGDl+GDkOGDkyDhg5Lhg5Dhg5vhg53hg6nhg5zhg5Phg5Thg5Hhg5AiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i4YOS4YOQ4YOT4YOQ4YOj4YOT4YOU4YOR4YOU4YOa4YOYOiDhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5gg4YOe4YOY4YOg4YOT4YOQ4YOe4YOY4YOgIOGDlOGDmeGDoOGDkOGDnOGDluGDlCwg4YOu4YOb4YOd4YOV4YOQ4YOcIOGDoeGDmOGDkuGDnOGDkOGDmuGDl+GDkOGDnCDhg5Thg6Dhg5fhg5Dhg5Mg4YOS4YOQ4YOb4YOd4YOp4YOc4YOT4YOU4YOR4YOQIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkIOGDrOGDo+GDl+GDmOGDoSDhg5Lhg5Dhg5zhg5vhg5Dhg5Xhg5rhg53hg5Hhg5Dhg6jhg5ggKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+LeGDm+GDk+GDlCk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7hg5Thg6Dhg5fhg5gg4YOs4YOj4YOX4YOY4YOhIOGDkuGDkOGDnOGDm+GDkOGDleGDmuGDneGDkeGDkOGDqOGDmCAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4t4YOb4YOT4YOUKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ray1yS1ovc3RyaW5ncy54bWwKaW5kZXggNmUyNjI5Mi4uMjc1ZTViYyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ray1yS1ovc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ray1yS1ovc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLSmtCw0LfRltGAINCx0LXQutGW0YLRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLQnNCw0LfQvNKx0L0g0LbQsNGB0YvRgNGL0LvSk9Cw0L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLSmtCw0YPRltC/0YHRltC3INGA0LXQttC40LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkINC20q/QudC10YHRliI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i0JbQtdC60LUiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItKa0LjRi9C/INCw0LvRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i0JrTqdGI0ZbRgNGDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i0prQvtGOIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLQmtOZ0LTRltC80LPRliDQvNOZ0YLRltC9INGA0LXRgtGW0L3QtNC1INKb0L7RjiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i4oCmINGB06nQt9GW0L0g0LDQu9C80LDRgdGC0YvRgNGDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+ItCW0L7RjiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMINC80LXQutC10L3QttCw0LnRi9C9INC606nRiNGW0YDRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+ItCc05nRgtGW0L3QtNGWINCx06nQu9C10LrRgtC10YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+ItCa0LXRgNGWINKb0LDQudGC0LDRgNGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLSmtCw0LnRgtCw0YDRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLQnNOZ0YLRltC9INGC0LDSo9C00LDRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLQodOp0LfQtNGW0LrQutC1INKb0L7RgdGDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLQltC+0Y4iPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i0JDRgNGC0pvRiyDRhNC+0L3Ri9C9INOp0LfQs9C10YDRgtGDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i0KXQsNCx0LDRgCDQsdCw0pvRi9C70LDSk9GL0YgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+ItCo0LDRgNGCINC/0YDQvtCy0LDQudC00LXRgNGWIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i0KXQsNCx0LDRgNC70LDQvdC00YvRgNGDINC606nQvNC10LrRiNGW0YHRliI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOINCx0LXQu9GB0LXQvdC00ZYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiLQktCW0K0gPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+INCw0YDSm9GL0LvRiyDSm9C+0YHRi9C70pPQsNC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i0JbQtdC70ZbQvdGWINCx0LDRgdKb0LDRgNGDINKv0YjRltC9INGC0q/RgNGC0YMuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+ItOY0LrRltC80YjRliDQttCw0qPQsNGA0YLRgtGLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLTmNC60ZbQvNGI0ZYg0LbQvtC50pPQsNC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLQkdCw0YLQsNGA0LXRj9C90YvSoyDSm9GL0LfQvNC10YIg0LrTqdGA0YHQtdGC0YMg0LzQtdGA0LfRltC80ZbQvSDQttCw0pvRgdCw0YDRgtGDINKv0YjRltC9INCx0LDRgtCw0YDQtdGPINKv0L3QtdC80LTQtdCz0ZbRiCDSm9Kx0YDRi9C70pPRi9C90YvSoyDTqdC90ZbQvNC00ZbQu9GW0LPRltC9INGC06nQvNC10L3QtNC10YLQtdC00ZYg0LbTmdC90LUg0LTRltGA0ZbQu9C00ZYsINC+0YDRi9C90LTRiyDQsNC90YvSm9GC0LDRgyDSm9GL0LfQvNC10YLRgtC10YDRltC9INC205nQvdC1INGE0L7QvdC00YvSmyDQtNC10YDQtdC60YLQtdGA0LTRltKjINC606nQv9GI0ZbQu9GW0LPRltC9INGI0LXQutGC0LXQudC00ZYuINCt0LvQtdC60YLRgNC+0L3QtNGL0psg0L/QvtGI0YLQsCwg0YXQsNCx0LDRgCDQsNC70LzQsNGB0YMg0LbTmdC90LUg0YHQuNC90YXRgNC+0L3QtNCw0YPSk9CwINC90LXQs9GW0LfQtNC10LvQs9C10L0g0LHQsNGB0pvQsCDSm9C+0LvQtNCw0L3QsdCw0LvQsNGAINCw0YjSm9Cw0L3RiNCwINC20LDSo9Cw0YDRgtGL0LvQvNCw0YPRiyDQvNKv0LzQutGW0L0uXG5cbtCR0LDRgtCw0YDQtdGPINKv0L3QtdC80LTQtdCz0ZbRiCDSm9Kx0YDRi9C70pPRiyDQt9Cw0YDRj9C00YLQsNC70YvQvyDQttCw0YLSm9Cw0L3QtNCwINCw0LLRgtC+0LzQsNGC0YLRiyDRgtKv0YDQtNC1INOp0YjQtdC00ZYuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i0JzQsNKj0YvQt9C00YvQu9GL0psiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+ItCR0rHSk9Cw0YLRgtCw0LvSk9Cw0L06INC+0YHRiyDRhdCw0LHQsNGA0LvQsNC90LTRi9GA0YPQu9Cw0YDQtNGLINC10YjSm9Cw0YjQsNC9INC606nRgNGB0LXRgtC/0LXRgyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLQotOp0LzQtdC9OiDRhdCw0LHQsNGA0LvQsNC90LTRi9GA0YPQu9Cw0YAg0YLRltC30ZbQvNC90ZbSoyDRgtOp0LzQtdC90LPRliDQttCw0pPRi9C90LTQsCDSr9C90YHRltC3INC606nRgNGB0LXRgtGDIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLSmtCw0LvRi9C/0YLRizog0L7RgdGLINGF0LDQsdCw0YDQu9Cw0L3QtNGL0YDRg9C70LDRgNC00Ysg0q/QvdGB0ZbQtyDQutOp0YDRgdC10YLRgyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i0JbQvtKT0LDRgNGLOiDRhdCw0LHQsNGA0LvQsNC90LTRi9GA0YPQu9Cw0YAg0YLRltC30ZbQvNGW0L3RltKjINC20L7Sk9Cw0YDSk9GLINC20LDSk9GL0L3QtNCwINC606nRgNGB0LXRgtGDINC205nQvdC1INC00YvQsdGL0YEg0YjRi9KT0LDRgNGDIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+ItCo0rHSk9GL0Ls6INGN0LrRgNCw0L3Sk9CwINCx0LXQutGW0YLRgyDQttOZ0L3QtSDQtNGL0LHRi9GBINGI0YvSk9Cw0YDRgyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCDQvNC40L3Rg9GCINCx0L7QudGLICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiDQtNC10LnRltC9KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPtCR0ZbRgCDQvNC40L3Rg9GCINCx0L7QudGLICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPiDQtNC10LnRltC9KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta20tcktIL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKaW5kZXggMTY3ZmExNy4uOTZhYmY0NSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLhnoXhnrbhnoDhn4vhnp/hn4TigIvhnqXhnqHhnrzhnpzhnpPhn4Hhn4ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4Z6U4Z624Z6T4oCL4Z6b4Z624Z6A4Z+L4oCL4Z6Y4Z624Z6P4Z634Z6A4Z62Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i4Z6a4Z6U4Z+A4Z6U4oCL4oCL4oCL4Z6f4Z674Z6c4Z6P4Z+S4Z6Q4Z634Z6X4Z624Z6WIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4i4Z6U4Z+S4Z6a4Z6W4Z+Q4Z6T4Z+S4Z6S4oCL4oCLIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IuGeleGfkuGekeGetuGem+Gfi+GegeGfkuGem+GeveGekyI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i4Z6A4Z624Z6P4Z+LIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLhnoXhnpjhn5LhnpvhnoQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLhnpThnrfhnpHigIvhnpfhn5LhnofhnrbhnpThn4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IuGelOGet+GekeGel+GfkuGeh+GetuGelOGfi+Geh+GetuGeouGej+GfkuGekOGelOGekeGekuGemOGfkuGemOGej+GetiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i4Z6H4Z+G4Z6T4Z694Z6fLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuGem+Geu+GelCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i4Z6F4Z6Y4Z+S4Z6b4Z6EIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuGeh+GfkuGemuGevuGen+KAi+GeouGej+GfkuGekOGelOGekSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i4Z6Y4Z634Z6T4Z6S4Z+S4Z6c4Z6+4Z6c4Z634Z6JIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLhnpLhn5Lhnpzhnr7hnpzhnrfhnokiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i4Z6A4Z624Z6a4oCL4Z6H4Z+S4Z6a4Z6+4Z6f4oCL4Z6i4Z6P4Z+S4Z6Q4Z6U4Z6RIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IuGelOGek+GfkuGekOGfguGemOKAi+GekeGfheKAi+GenOGeheGek+GetuGek+Geu+GegOGfkuGemuGemCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i4Z6b4Z674Z6UIjwvc3RyaW5nPgpAQCAtMTEwOSw2ICsxMTEzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuGelOGfkuGeiuGevOGemuKAi+GeleGfkuGekeGetuGfhuGehOKAi+GemuGevOGelOGel+GetuGeliI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuGegOGemOGfkuGemOGenOGet+GekuGeuOKAi+Gen+GfkuGeiuGetuGelOGfi+KAi+GegOGetuGemuKAi+Geh+GevOGek+KAi+GeiuGfhuGejuGeueGehCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i4Z6A4Z+S4Z6a4Z674Z6Y4Z6g4Z+K4Z674Z6T4oCL4Z6V4Z+S4Z6K4Z6b4Z+L4oCL4Z6b4Z6A4Z+S4Z6B4Z6B4Z6O4Z+S4Z6MIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4Z6H4Z+G4Z6T4Z694Z6Z4Z6A4Z624Z6a4Z6H4Z684Z6T4Z6K4Z+G4Z6O4Z654Z6EIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiLhnpThnrbhnpPigIvhnpLhn5Lhnpzhnr7igIvhnrLhn5LhnpkgVlBOIOGen+GegOGemOGfkuGemCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IuGelOGetuGek+KAi+GekuGfkuGenOGevuKAi+GesuGfkuGemSBWUE4g4Z6f4Z6A4Z6Y4Z+S4Z6Y4oCL4Z6K4Z+E4Z6ZIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuGelOGfieGfhyDhnorhnr7hnpjhn5LhnpThnrjigIvhnoLhn5LhnprhnpThn4vhnoLhn5LhnprhnoTigIvhnpThno7hn5Lhnorhnrbhnonhn5QiPC9zdHJpbmc+CkBAIC0xNDQyLDEyICsxNDQ3LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4Z6U4Z624Z6T4Z6S4Z+S4Z6c4Z6+4Z6U4Z6F4Z+S4Z6F4Z674Z6U4Z+S4Z6U4Z6T4Z+S4Z6T4Z6X4Z624Z6W4Z6K4Z+E4Z6Z4Z6i4Z+S4Z6T4Z6A4Z6C4Z+S4Z6a4Z6U4Z+L4Z6C4Z+S4Z6a4Z6E4Z6a4Z6U4Z6f4Z+L4Z6i4Z+S4Z6T4Z6AIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLhnpThnrbhnpPhnpvhnrvhnpThnorhn4ThnpnhnqLhn5LhnpPhnoDhnoLhn5LhnprhnpThn4vhnoLhn5LhnprhnoThnprhnpThnp/hn4vhnqLhn5LhnpPhnoAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuGeiuGevuGemOGfkuGelOGeuOGeh+GeveGemeGesuGfkuGemeGekOGetuGemOGeluGem+GekOGfkuGemOGelOGfkuGemuGen+GevuGemuGeoeGevuGehCDhnoDhnpjhn5LhnpjhnpzhnrfhnpLhnrjhnp/hnpPhn5Lhnp/hn4bhnp/hn4bhnoXhn4PhnpDhnrbhnpjhnpbhnpvhnpDhn5LhnpjhnoDhnrbhno/hn4vhnpThnpPhn5LhnpDhnpnhnpThn5Lhnprhno/hnrfhnpThno/hn5Lhno/hnrfhnoDhnrbhnprhnqfhnpThnoDhnprhno7hn43hnprhnpThnp/hn4vhnqLhn5LhnpPhnoAg4Z6T4Z634Z6E4Z6A4Z6Y4Z+S4Z6a4Z634Z6P4Z6X4Z624Z6W4Z6J4Z+Q4Z6aIOGen+GfgeGenOGetuGegOGemOGfkuGemOGekeGeuOGej+GetuGfhuGehCDhnpPhnrfhnoThnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpXhn5LhnpHhn4PhnoHhnrbhnoThnoDhn5Lhnprhn4Thnpnhnp/hn5LhnpHhnr7hnprhno/hn4LhnpHhnrbhn4bhnoThnqLhnp/hn4vhn5Qg4Z6A4Z624Z6a4Z6V4Z+S4Z6J4Z6+4Z6f4Z624Z6a4Z6i4Z+K4Z644Z6Y4Z+J4Z+C4Z6bIOGek+Get+GehOGegOGemOGfkuGemOGenOGet+GekuGeuOGeleGfkuGen+GfgeGehOGekeGfgOGej+GeiuGfguGem+GeluGeueGehOGeleGfkuGeouGfguGegOGem+GevuGegOGetuGemuGekuGfkuGenOGevuGen+GemOGegOGetuGem+GegOGemOGfkuGemOGeouGetuGeheGek+GeueGehOGemOGet+Gek+GekuGfkuGenOGevuGelOGeheGfkuGeheGeu+GelOGfkuGelOGek+GfkuGek+Gel+GetuGeluGekeGfgSDhnpvhnrvhn4fhno/hn5Lhnprhnrbhno/hn4LhnqLhn5LhnpPhnoDhnpThnr7hnoDhnpbhnr3hnoDhnpzhnrbhn5Rcblxu4Z6A4Z6Y4Z+S4Z6Y4Z6c4Z634Z6S4Z644Z6f4Z6T4Z+S4Z6f4Z+G4Z6f4Z+G4Z6F4Z+D4Z6U4Z634Z6R4Z6K4Z+E4Z6Z4Z6f4Z+S4Z6c4Z+Q4Z6Z4Z6U4Z+S4Z6a4Z6c4Z6P4Z+S4Z6P4Z63IOGek+GfheGeluGfgeGem+GeiuGfguGem+Gep+GelOGegOGemuGejuGfjeGemuGelOGen+Gfi+GeouGfkuGek+GegOGegOGfhuGeluGeu+GehOGen+GetuGegOGekOGfkuGemOGflCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IuGen+GetuGemuGfiOGen+GfhuGegeGetuGek+GfiyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i4Z6U4Z624Z6T4Z6a4Z624Z6a4Z624Z+G4Z6E4Z+WIOGegOGeu+GfhuGelOGehOGfkuGeoOGetuGeieGegOGetuGemuGeh+GevOGek+GeiuGfhuGejuGeueGehOGekeGetuGfhuGehOGek+GfgeGfhyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLhnoDhnpjhn5Lhnprhnrfhno/hnpHhnrbhnpThn5Yg4Z6U4Z6E4Z+S4Z6g4Z624Z6J4Z6f4Z+S4Z6E4Z624Z6P4Z+L4Z+X4Z6T4Z+F4Z6V4Z+S4Z6T4Z+C4Z6A4Z6B4Z624Z6E4Z6A4Z+S4Z6a4Z+E4Z6Y4Z6U4Z6J4Z+S4Z6H4Z644Z6T4Z+D4Z6A4Z624Z6a4Z6H4Z684Z6T4Z6K4Z+G4Z6O4Z654Z6EIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLhnpLhnpjhn5Lhnpjhno/hnrbhn5Yg4Z6U4Z6E4Z+S4Z6g4Z624Z6J4Z6A4Z624Z6a4Z6H4Z684Z6T4Z6K4Z+G4Z6O4Z654Z6E4Z6R4Z624Z+G4Z6E4Z6T4Z+B4Z+H4Z6f4Z+S4Z6E4Z624Z6P4Z+L4Z+XIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLhnoDhnpjhn5Lhnprhnrfhno/hnoHhn5Lhnpbhnp/hn4vhn5Yg4Z6U4Z6E4Z+S4Z6g4Z624Z6J4Z6T4Z+F4Z6V4Z+S4Z6T4Z+C4Z6A4Z6B4Z624Z6E4Z6b4Z6+4Z6U4Z6J4Z+S4Z6H4Z644Z6T4Z+D4Z6A4Z624Z6a4Z6H4Z684Z6T4Z6K4Z+G4Z6O4Z654Z6EIOGek+Get+GehOGelOGek+GfkuGem+GeuuGen+GfhuGeoeGfgeGehCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLhnpThnpPhn5LhnpHhnrbhnpPhn4vhn5Yg4Z6b4Z+E4Z6P4Z6U4Z6E4Z+S4Z6g4Z624Z6J4Z6T4Z+F4Z6b4Z6+4Z6i4Z+B4Z6A4Z+S4Z6a4Z6E4Z+LIOGek+Get+GehOGelOGek+GfkuGem+GeuuGen+GfhuGeoeGfgeGehCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+4Z6a4Z6Z4Z+I4Z6W4Z+B4Z6bICUxJGQg4Z6T4Z624Z6R4Z64ICjhnprhnqDhnrzhno/hnorhnpvhn4sgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+4Z6a4Z6Z4Z+I4Z6W4Z+B4Z6b4Z6Y4Z694Z6Z4Z6T4Z624Z6R4Z64ICjhnprhnqDhnrzhno/hnorhnpvhn4sgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbAppbmRleCAxN2NjYmQxLi5kMGRhYzIzIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuCyiOCylyDgsrLgsr7gspXgs40g4LKu4LK+4LKh4LK/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuCyteCyv+Cyt+Cyr+Cyl+Cys+CyqOCzjeCyqOCzgSDgsq7gsrDgs4bgsq7gsr7gsqHgsrLgsr7gspfgsr/gsqbgs4YiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLgsrjgs4HgsrDgspXgs43gsrfgsr/gsqQg4LKu4LOL4LKh4LONIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCDgsrjgsr/gsrjgs43gsp/gsoIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IuCyteCziOCyr+CyleCzjeCypOCyv+CylSI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i4LKV4LKk4LON4LKk4LKw4LK/4LK44LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLgsqjgspXgsrLgsr/gsrjgs4EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLgsoXgsoLgsp/gsr/gsrjgsr8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IuCyuOCysOCysyDgsqrgsqDgs43gsq/gsqbgsoLgsqTgs4Yg4LKF4LKC4LKf4LK/4LK44LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLgsrjgs43gsqXgsr7gsqjgsr7gsoLgsqTgsrDgsr/gsrjgs4EuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i4LKF4LKz4LK/4LK44LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJVUkwg4LKo4LKV4LKy4LK/4LK44LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i4LKq4LKg4LON4LKv4LK14LKo4LON4LKo4LOBIOCyhuCyr+CzjeCyleCzhuCyruCyvuCyoeCyvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i4LKw4LKm4LON4LKm4LOB4LKX4LOK4LKz4LK/4LK44LK/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLgsqrgs4HgsqjgsoMg4LKu4LK+4LKh4LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IuCyquCyoOCzjeCyr+CypiDgsobgsq/gs43gspXgs4YiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4LKo4LK/4LKY4LKC4LKf4LK/4LKX4LOGIOCyuOCzh+CysOCyv+CyuOCyvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i4LKF4LKz4LK/4LK44LOBIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuCyteCyvuCysuCzjeKAjOCyquCzh+CyquCysOCzjSDgsqzgsqbgsrLgsr/gsrjgsr8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLgsoXgsqfgsr/gsrjgs4Lgsprgsqjgs4Yg4LKV4LOH4LKz4LOB4LKXIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLgspXgsoLgsqHgs4Dgsrbgsqjgs40g4LKq4LOC4LKw4LOI4LKV4LOG4LKm4LK+4LKw4LKw4LOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOGIOCyuOCyueCyvuCyr+CylSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIOCyuOCyleCzjeCysOCyv+Cyr+Cyl+CziuCyguCyoeCyv+CypuCzhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDgsq7gs4LgsrLgspUgVlBOIOCyuOCyleCzjeCysOCyv+Cyr+Cyl+CziuCyguCyoeCyv+CypuCzhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuCyqOCzhuCyn+CzjeKAjeCyteCysOCzjeCyleCzjSDgsqjgsr/gsrDgs43gsrXgsrngsr/gsrjgsrLgs4Eg4LK44LON4LKq4LKw4LON4LK24LK/4LK44LK/Ijwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IuCyqOCyv+CyruCzjeCyriDgsqjgsr/gsrDgs43gsrXgsr7gsrngspXgsrDgsr/gsoLgsqYg4LKo4LK14LOA4LKV4LKw4LK/4LK44LKy4LK+4LKX4LK/4LKm4LOGIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLgsqjgsr/gsq7gs43gsq4g4LKo4LK/4LKw4LON4LK14LK+4LK54LKV4LKw4LK/4LKC4LKmIOCyheCys+Cyv+CyuOCysuCyvuCyl+Cyv+CypuCzhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i4LKo4LK/4LKu4LON4LKuIOCyrOCzjeCyr+CyvuCyn+CysOCyv+CyryDgsqzgsr7gsrPgsr/gspXgs4bgsq/gsqjgs43gsqjgs4Eg4LK44LOB4LKn4LK+4LKw4LK/4LK44LKy4LOBIOCyuOCyueCyvuCyryDgsq7gsr7gsqHgsrLgs4EsIOCyrOCzjeCyr+CyvuCyn+CysOCyvyDgsongsrPgsr/gspXgs4bgsq/gs4Eg4LKo4LK/4LKu4LON4LKuIOCyuOCyvuCyp+CyqOCypiDgspXgsr7gsrDgs43gsq/gspXgs43gsrfgsq7gsqTgs4bgsq/gsqjgs43gsqjgs4Eg4LKV4LKh4LK/4LKu4LOGIOCyruCyvuCyoeCzgeCypOCzjeCypOCypuCzhiDgsq7gsqTgs43gsqTgs4Eg4LK14LOI4LKs4LON4LKw4LOH4LK34LKo4LONLCDgsrjgs43gsqXgsrMg4LK44LOH4LK14LOG4LKX4LKz4LOBIOCyueCyvuCyl+CzgiDgsrngs4bgsprgs43gsprgsr/gsqgg4LK54LK/4LKo4LON4LKo4LOG4LKy4LOGIOCyoeCzh+Cyn+CyvuCyteCyqOCzjeCyqOCzgSDgsq7gsr/gsqTgsr/gspfgs4rgsrPgsr/gsrjgs4HgsqTgs43gsqTgsqbgs4YuIOCyuOCyv+CyguCyleCzjSDgsq7gsr7gsqHgs4HgsrXgs4Hgsqbgsqjgs43gsqjgs4Eg4LKF4LK14LKy4LKC4LKs4LK/4LK44LK/4LKw4LOB4LK1IOCyh+CyruCzh+CysuCzjSwg4LK44LKC4LKm4LOH4LK2IOCyleCys+CzgeCyueCyv+CyuOCzgeCyteCyv+CyleCzhiwg4LKu4LKk4LON4LKk4LOBIOCyh+CypOCysCDgsoXgsqrgs43gsrLgsr/gspXgs4fgsrbgsqjgs43igIzgspfgsrPgs4Eg4LKo4LOA4LK14LOBIOCypOCzhuCysOCzhuCyr+CypiDgsrngs4rgsrDgsqTgs4Eg4LKo4LK14LOA4LKV4LKw4LKj4LKX4LOK4LKz4LON4LKz4LOB4LK14LOB4LKm4LK/4LKy4LON4LKyLlxuXG7gsqjgsr/gsq7gs43gsq4g4LK44LK+4LKn4LKo4LK14LOBIOCymuCyvuCysOCzjeCynOCzjSDgsobgspfgs4HgsqTgs43gsqTgsr/gsrDgs4HgsrUg4LK44LKu4LKv4LKm4LKy4LON4LKy4LK/IOCyrOCzjeCyr+CyvuCyn+CysOCyvyDgsongsrPgsr/gspXgs4bgsq/gs4Eg4LKG4LKr4LONIOCyhuCyl+CzgeCypOCzjeCypOCypuCzhi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgsqrgs43gsrDgsr7gsq7gs4Hgspbgs43gsq/gsqTgs4YiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuCyqOCyv+CysOCzjeCyrOCyguCyp+Cyv+CyuOCysuCyvuCyl+Cyv+CypuCzhjog4LKIIOCyheCyp+Cyv+CyuOCzguCymuCyqOCzhuCyl+Cys+CyqOCzjeCyqOCzgSDgso7gsoLgsqbgsr/gspfgs4Ig4LKk4LOL4LKw4LK/4LK44LKs4LOH4LKhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuCyleCyoeCyv+CyruCzhjog4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOGIOCyquCyn+CzjeCyn+Cyv+CyryDgspXgs4bgsrPgsq3gsr7gspfgsqbgsrLgs43gsrLgsr8g4LK44LON4LKl4LKs4LON4LKn4LK14LK+4LKX4LK/IOCypOCzi+CysOCyv+CyuOCzgSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4LK44LK+4LKu4LK+4LKo4LON4LKvOiDgsogg4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOG4LKX4LKz4LKo4LON4LKo4LOBIOCyuOCzjeCypeCyrOCzjeCyp+CyteCyvuCyl+CyvyDgsqTgs4vgsrDgsr/gsrjgs4EiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuCyheCyp+Cyv+CylTog4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOG4LKX4LKzIOCyquCyn+CzjeCyn+Cyv+CyryDgsq7gs4fgsrLgs43gsq3gsr7gspfgsqbgsrLgs43gsrLgsr8g4LKk4LOL4LKw4LK/4LK44LOBIOCyruCypOCzjeCypOCzgSDgsqfgs43gsrXgsqjgsr8g4LKu4LK+4LKh4LOBIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuCypOCzgeCysOCzjeCypOCzgTog4LKq4LKw4LKm4LOG4LKv4LKo4LON4LKo4LOBIOCyteCzgOCyleCzjeCyt+Cyv+CyuOCyvyDgsq7gsqTgs43gsqTgs4Eg4LKn4LON4LK14LKo4LK/IOCyruCyvuCyoeCzgSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQg4LKo4LK/4LKu4LK/4LK34LKX4LKz4LK14LKw4LOG4LKX4LOGICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiDgsrXgsrDgs4bgspfgs4YpPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkIOCyqOCyv+CyruCyv+Cyt+Cyl+Cys+CyteCysOCzhuCyl+CzhiAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g4LK14LKw4LOG4LKX4LOGKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCmluZGV4IGE3ODAzN2YuLmIxYjQ1ODggMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuyngOq4iCDsnqDqt7jquLAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPuqwnCkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i7Iio6rKo7KeEIOy9mO2FkOy4oCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuyViOyghCDrqqjrk5wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIOyLnOyKpO2FnCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i6rCc7J24Ijwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLsnpjrnbzrgrTquLAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuuzteyCrCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+Iuu2meyXrOuEo+q4sCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i7J2867CYIO2FjeyKpO2KuOuhnCDrtpnsl6zrhKPquLAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuuwlOq+uOq4sC4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLsgq3soJwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCDrs7XsgqwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLthY3siqTtirgg7ISg7YOdIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLsi6Ttlonst6jshowiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuuLpOyLnCDsi6TtlokiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i7YWN7Iqk7Yq4IOyEoO2DnSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLsgqzsoITsl5Ag7LaU6rCAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLsgq3soJwiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i67Cw6rK97ZmU66m0IOuzgOqyvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuyVjOumvCDsiJjsi6DquLAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuyhsOqxtCDsoJzqs7XsnpAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLslYzrprwg7Ja07Iuc7Iqk7YS07Yq4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE7snbQg7Zmc7ISx7ZmU65CoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBO7J20IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPuyXkCDsnZjtlbQg7Zmc7ISx7ZmU65CoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i64Sk7Yq47JuM7YGs66W8IOq0gOumrO2VmOugpOuptCDthLDsuZjtlZjshLjsmpQuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+Iuq0gOumrOyekOyXkCDsnZjtlbQg7JeF642w7J207Yq465CoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLqtIDrpqzsnpDqsIAg7IKt7KCc7ZWoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLrsLDthLDrpqwg7IiY66qFIOqwnOyEoOydhCDsnITtlbQsIOuwsO2EsOumrCDshLjsnbTrsoTripQg6riw6riw7J2YIOyEseuKpeydhCDspITsnbTqs6Ag7KeE64+ZLCDsnITsuZgg7ISc67mE7IqkIOuwjyDrjIDrtoDrtoTsnZgg67Cx6re465287Jq065OcIOuNsOydtO2EsOulvCDsoJztlZztlanri4jri6QuIOydtOuplOydvCwg66mU7Iuc7KeAIOuwjyDrj5nquLDtmZTsl5Ag7J2Y7KG07ZWY64qUIOq4sO2DgCDslbHsnYAg7JWx7J2EIOyXtCDrlYzquYzsp4Ag7JeF642w7J207Yq465CY7KeAIOyViuydhCDsiJgg7J6I7Iq164uI64ukLlxuXG7rsLDthLDrpqwg7IS47J2067KE64qUIOq4sOq4sOulvCDstqnsoIQg7KSR7J28IOuVjOuKlCDsnpDrj5nsnLzroZwg7IKs7JqpIOykkeyngOuQqeuLiOuLpC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLspJHsmpTrj4QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuywqOuLqDog7JWM66a8IOuLpOyLnCDtkZzsi5wg7JWI7ZWoIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuuCruydjDog7JWM66a8IOuqqeuhnSDtlZjri6jsl5Ag66y07J2M7Jy866GcIO2RnOyLnCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i7J2867CYOiDrrLTsnYzsnLzroZwg7JWM66a8IO2RnOyLnCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i64aS7J2MOiDslYzrprwg66qp66GdIOyDgeuLqOyXkCDtkZzsi5ztlZjqs6Ag7IaM66as66GcIOyVjOumvCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLquLTquIk6IO2ZlOuptOyXkCDtkZzsi5ztlZjqs6Ag7IaM66as66GcIOyVjOumvCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZOu2hCDrj5nslYgoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz7quYzsp4ApPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+Meu2hCDrj5nslYgoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz7quYzsp4ApPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWt5LXJLRy9zdHJpbmdzLnhtbAppbmRleCA5ZDJjODBjMy4uNzY0NGE5YiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLQkNC30YvRgCDQutGD0LvQv9GD0LvQvtC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+ItCc0LDQt9C80YPQvdC00LDRgCDQttCw0YjRi9GA0YvQu9Cz0LDQvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+ItCa0L7QvtC/0YHRg9C3INGA0LXQttC40LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkINCi0YPRgtGD0LzRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i0JbQtdC60LUiPC9zdHJpbmc+CkBAIC04NTksMTAgKzg2MCwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItCa0LXRgdKv0q8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+ItCa06nRh9Kv0YDSr9KvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i0KfQsNC/0YLQvtC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLQltOp0L3TqdC606nQuSDRgtC10LrRgdGCINC60LDRgtCw0YDRiyDRh9Cw0L/RgtC+0L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+ItCQ0LvQvNCw0YjRgtGL0YDRg9GD4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+ItCW0L7QuiDQutGL0LvRg9GDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJVUkwg0LrTqdGH0q/RgNC806nQu9Op06kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLQotC10LrRgdGCINGC0LDQvdC00L7QviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i0JDRgNGC0LrQsCDQutCw0LnRgtCw0YDRg9GDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLQmtCw0LnRgtCw0LvQvtC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+ItCi0LXQutGB0YIg0YLQsNC90LTQvtC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+ItCh06nQt9C00q/QutC606kg0LrQvtGI0YPRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i0JbQvtC6INC60YvQu9GD0YMiPC9zdHJpbmc+CkBAIC0xMTA4LDYgKzExMTIsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i0KLRg9GI0LrQsNCz0LDQt9C00Ysg06nQt9Cz06nRgNGC0q/SryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+ItCt0YHQutC10YDRgtKv0q8g0YLRi9Kj0YjQsNCz0YvRh9GLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLQqNCw0YDRgiDRgtKv0LfSr9Kv0YfSryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+ItCt0YHQutC10YDRgtC80LUg0LbQsNGA0LTQsNC80YfRi9GB0YsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiDQuNGI0YLQtdGC0LjQu9C00LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+INCw0YDQutGL0LvRg9GDINC20LDQvdC00YvRgNGL0LvQtNGLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i0LbQtdC70LXQvdC4INCx0LDRiNC60LDRgNGD0YMg0q/Rh9Kv0L0g0LHQsNGB0YvSo9GL0LcuIjwvc3RyaW5nPgpAQCAtMTQ0MSwxMiArMTQ0Niw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+ItCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0YPSo9GD0Lcg0LbQsNKj0YvRgNGC0LrQsNC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNGD0qPRg9C3INGC0LDRgNCw0LHRi9C90LDQvSDQttC+0Log0LrRi9C70YvQvdCz0LDQvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i0JHQsNGC0LDRgNC10Y/QvdGL0L0g06nQvNKv0YDSr9C9INGD0LfQsNGA0YLRg9GDINKv0YfSr9C9LCDQsdCw0YLQsNGA0LXRj9C90Ysg0q/QvdOp0LzQtNOp0LPSr9GHINGC0q/Qt9C806nQs9Kv0qPSr9C30LTSr9C9INC40YjQuNC90LjQvSDQvNCw0LnQvdCw0L/RgtGD0YPQu9GD0LPRg9C9INCw0LfQsNC50YLRi9C/LCDQtNC40YDQuNC70LTTqdOpLCDQttCw0LnQs9Cw0YjQutCw0L0g0LbQtdGA0LTQuCDQsNC90YvQutGC0L7QviDQutGL0LfQvNCw0YLRgtCw0YDRiyDQttCw0L3QsCDRhNC+0L3QtNGD0Log0LTQsNC50YvQvdC00LDRgNC00YvQvSDQutOp0L/Rh9Kv0LvSr9Cz0q/QvSDRh9C10LrRgtC10L8g0LrQvtGR0YIuINCt0LvQtdC60YLRgNC+0L3QtNGD0Log0L/QvtGH0YLQsCwg0LHQuNC70LTQuNGA0q/SryDQttCw0LfRi9GI0YPRgyDQttCw0L3QsCDQsdCw0YjQutCwINGI0LDQudC60LXRiNGC0LXRiNGC0LjRgNKv0q/Qs9OpINCx0LDQudC70LDQvdGL0YjRgtGD0YMg0LrQvtC70LTQvtC90LzQvtC70L7RgCDQsNGH0YvQu9C80LDQudGL0L3Rh9CwINC20LDSo9GL0YDRgtGL0LvQsdCw0Lkg0LrQsNC70YvRiNGLINC80q/QvNC60q/QvS5cblxu0JHQsNGC0LDRgNC10Y8g0q/QvdOp0LzQtNOp0LPSr9GHINGC0q/Qt9C806nQs9Kv0qPSr9C3INC60YPQsdCw0YLRgtCw0LvRi9C/INC20LDRgtC60LDQvdC00LAg0LDQstGC0L7QvNCw0YLRgtGL0Log0YLSr9GA0LTTqSDTqdGH0q/QvyDQutCw0LvQsNGCLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+ItCc0LDQsNC90LjQu9Kv0q/Qu9Kv0LPSryI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i0JHTqdCz06nRgtGC06nQu9Cz06nQvTog0JHRg9C7INGN0YHQutC10YDRgtC80LXQu9C10YAg0Y3RhyDQutCw0YfQsNC9INC606nRgNGB06nRgtKv0LvQsdOp0YHSr9C9Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+ItCi06nQvNOp0L06INCt0YHQutC10YDRgtC80LXQu9C10YAg0YLQuNC30LzQtdGB0LjQvdC40L0g0Y3SoyDRi9C70LTRi9C50YvQvdC00LAg0q/QvdGB0q/QtyDQutOp0YDRgdOp0YLSr9C70YHSr9C9Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLQmtCw0LTQuNC80LrQuDog0JHRg9C7INGN0YHQutC10YDRgtC80LXQu9C10YAg0q/QvdGB0q/QtyDQutOp0YDRgdOp0YLSr9C70YHSr9C9Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLQltC+0LPQvtGA0YM6INCt0YHQutC10YDRgtC80LXQu9C10YAg0YLQuNC30LzQtdGB0LjQvdC40L0g0Y3SoyDQttC+0LPQvtGA0YPRgdGD0L3QtNCwINKv0L0g0YfRi9Cz0LDRgNGL0L8g0LrTqdGA0YHTqdGC0q/Qu9GB0q/QvSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLQqNCw0YjRi9C70YvRiDog0q7QvSDQvNC10L3QtdC9INC60L7RiNGC0L7Qu9GD0L8sINGN0LrRgNCw0L3Qs9CwINGH0YvQs9Cw0YDRi9C70YHRi9C9Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkINC80q/QvdOp0YLQutOpICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiDRh9C10LnQuNC9KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPtCR0LjRgCDQvNKv0L3TqdGC0LrTqSAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4g0YfQtdC50LjQvSk8L2l0ZW0+CkBAIC0xNTEyLDYgKzE1MTEsNiBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJGQ8L3hsaWZmOmc+INGC0LDQvdC00LDQu9C00Ys8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgogICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9ub3RpZmljYXRpb25fdG9waWNfbGFiZWwiIG1zZ2lkPSIyMjc1ODYxNDU3OTE4NzA4MjkiPiLQmtCw0LvQs9Cw0L0t0LrQsNGC0LrQsNC90LTQsNGAIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+ItCR0YPQuyDRjdGB0LrQtdGA0YLQvNC10LvQtdGA0LTQuNC9INC80LDQsNC90LjQu9Kv0q/Qu9Kv0LPSr9C9INGB0LjQtyDQutC+0LnQtNGD0qPRg9C3LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV9wZXJzb24iIG1zZ2lkPSI5MTYwMTMzNTk3MjYyOTM4Mjk2Ij4i0JDQs9CwINC60LDRgtGL0YjQutCw0L0g0LDQtNCw0LzQtNCw0YDQtNCw0L0g0YPQu9Cw0Lwg0LDQuyDQvNCw0LDQvdC40LvSr9KvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV90b3BpYyIgbXNnaWQ9IjM1NzIyODA0Mzk4ODAwMjMyMzMiPiLQkdGD0Lsg0Y3RgdC60LXRgNGC0LzQtdC70LXRgNC00LjQvSDQvNCw0LDQvdC40LvSr9Kv0LvSr9Cz0q/QvSDQsdC10LvQs9C40LvQtdC00LjSo9C40LcuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3BlcnNvbiIgbXNnaWQ9IjkxNjAxMzM1OTcyNjI5MzgyOTYiPiLQkdGD0LvQsNGAINGB0LjQtyDSr9GH0q/QvSDQvNCw0LDQvdC40LvSr9KvINCw0LTQsNC80LTQsNGALiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWxvLXJMQS9zdHJpbmdzLnhtbAppbmRleCAwNTEwYTI1Li5hNWZmOGQxIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWxvLXJMQS9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWxvLXJMQS9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuC6peC6seC6reC6geKAi+C6lOC6veC6p+KAi+C6meC6teC7iSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgu4Dgupngurfgu4nguq3guqvgurLigIvgupbgurfguoHigIvgu4Dguorgurfgu4jguq3guofigIvgu4Tguqfgu4kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJTYWZlIG1vZGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiLguqXgurDguprgurvgupogQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i4oCL4Lqq4LuI4Lqn4LqZ4oCL4LuC4LqVIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLgupXgurHgupQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuC6quC6s+C7gOC6meC6u+C6siI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuC6p+C6suC6hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4Lqn4Lqy4LqH4LuA4Lqb4Lqx4LqZ4LqC4LuN4LuJ4LqE4Lqn4Lqy4Lqh4LqX4Lqz4Lqh4Lqw4LqU4LqyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLgu4HgupfgupngupfgurXgu4jigKYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i4Lql4Lq24LqaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiLguqrgurPgu4DgupngurvgurIgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i4LuA4Lql4Lq34Lqt4LqB4LqC4LuN4LuJ4LqE4Lqn4Lqy4LqhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLguprgu43gu4jigIvgu4Dguq7gurHgupQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuC7gOC6ruC6seC6lOC7g+C7neC7iCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLguoHgurLgupngu4DguqXgurfguq3guoHguoLgu43gu4nguoTguqfgurLguqEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4LuA4Lqe4Lq14LuI4Lqh4LuE4Lqb4LqX4Lq14LuI4Lqn4Lqx4LqU4LqI4Lqw4LqZ4Lqy4LqZ4Lq44LqB4Lq74LqhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLguqXgurbgupoiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4Lqb4LuI4Lq94LqZ4Lqe4Lqy4Lqa4Lqe4Lq34LuJ4LqZ4Lqr4Lq84Lqx4LqHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i4LuC4LqV4Lqf4Lqx4LqH4LqB4Lqy4LqZ4LuB4LqI4LuJ4LqH4LuA4LqV4Lq34Lqt4LqZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLigIvgupzgurngu4jigIvguqrgurDigIvgu5zguq3guofigIvgu4Dguofgurfgu4jguq3gupnigIvgu4TguoIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLgupXgurvguqfguorgu4jguqfguo3igIvguoHgurLgupnigIvgu4Hguojgu4nguofigIvgu4DgupXgurfguq3gupkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IuC7gOC6m+C6teC6lOC6meC6s+C7g+C6iuC7iSBWUE4g4LuB4Lql4LuJ4LqnIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4i4LuA4Lqb4Lq14LqU4LuD4LqK4LuJIFZQTiDgu4LgupTguo0gPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4LuB4LqV4Lqw4LuA4Lqe4Lq34LuI4Lqt4LqI4Lqx4LqU4LqB4Lqy4LqZ4LuA4LqE4Lq34Lqt4LqC4LuI4Lqy4LqNLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLguq3gurHguprigIvgu4DgupTgupTigIvgu4LgupTguo3igIvgupzgurngu4nigIvguoTguqfguprigIvguoTgurjguqHigIvguoLguq3guofigIvgupfgu4jgurLgupnigIvgu4HguqXgu4nguqciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IuC6luC6t+C6geKAi+C6nOC6ueC7ieKAi+C6hOC6p+C6muKAi+C6hOC6uOC6oeKAi+C6guC6reC6h+KAi+C6l+C7iOC6suC6meKAi+C6peC6tuC6muKAi+C7hOC6m+KAi+C7geC6peC7ieC6pyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i4LuA4Lqe4Lq34LuI4Lqt4oCL4LqK4LuI4Lqn4LqN4oCL4LuA4Lqe4Lq14LuI4Lqh4oCL4Lqt4Lqy4oCL4LqN4Lq44oCL4LuB4Lqa4Lqx4LqU4oCL4LuA4LqV4Lq14oCL4Lqj4Lq1LCDgupXgurvguqfigIvgupvgurDigIvguqLgurHgupTigIvgu4Tgup/igIvgu4HguprgurHgupTigIvgu4DgupXgurXigIvguqPgurXigIvguqvgurzgurjgupTigIvgupvgurDigIvguqrgurTgupTigIvgupfgurTigIvgup7gurLguprigIvguoHgurLgupnigIvgu4Dguq7gurHgupTigIvguqfgur3guoHigIvguoLguq3guofigIvguq3gurjigIvgupvgurDigIvguoHguq3gupnigIvguoLguq3guofigIvgupfgu4jgurLgupnigIvguqXgurvguocg4LuB4Lql4Lqw4oCL4LqI4Lqz4oCL4LqB4Lqx4LqU4oCL4LqB4Lqy4LqZ4oCL4Lqq4Lqx4LuI4LqZLCDguoHgurLgupnigIvguprgu43igIvguqXgurTigIvguoHgurLgupnigIvguqvgurLgupfgurXgu4jgupXgurHgu4nguocsIOC7geC6peC6sOKAi+C6guC7jeC7ieKAi+C6oeC6ueC6meKAi+C6nuC6t+C7ieC6meKAi+C6q+C6vOC6seC6h+KAi+C7gOC6geC6t+C6reC6muKAi+C6l+C6seC6h+KAi+C7neC6u+C6lC4g4Lqt4Lq14oCL4LuA4Lqh4LqnLCDguoHgurLgupnigIvguqrgurvgu4jguofigIvguoLgu43gu4nigIvguoTguqfgurLguqEsIOC7geC6peC6sOKAi+C7geC6reC6seC6muC6reC6t+C7iOC6meC7huKAi+C6l+C6teC7iOC6reC6suKAi+C7hOC6quC6geC6suC6meKAi+C6iuC6tOC6h+KAi+C6hOC7jOKAi+C6reC6suC6lOKAi+C6iOC6sOKAi+C6muC7jeC7iOKAi+C6reC6seC6muKAi+C7gOC6lOC6lCDgupnguq3guoHigIvguojgurLguoHguqfgu4jgurLigIvgupfgu4jgurLgupnigIvgu4DgupvgurXgupTigIvguqHgurHgupkuXG5cbuC6leC6u+C6p+KAi+C6m+C6sOKAi+C6ouC6seC6lOKAi+C7hOC6n+KAi+C7geC6muC6seC6lOKAi+C7gOC6leC6teKAi+C6o+C6teC6iOC6sOKAi+C6m+C6tOC6lOKAi+C6reC6seC6lOKAi+C6leC6sOKAi+C7guC6meKAi+C6oeC6seC6lCDgu4DguqHgurfgu4jguq3igIvguq3gurjigIvgupvgurDigIvguoHguq3gupnigIvguoLguq3guofigIvgupfgu4jgurLgupnigIvguoHgurPigIvguqXgurHguofigIvguqrgurLguoHguqLgurngu4guIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i4LqE4Lqn4Lqy4Lqh4Lqq4LuN4Lqy4LqE4Lqx4LqZIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLguprguqXgurHguq3guoHgu4HguqXgu4nguqc6IOC6ouC7iOC6suC6quC6sOC7geC6lOC6h+C6geC6suC6meC7geC6iOC7ieC6h+C7gOC6leC6t+C6reC6meC7gOC6q+C6vOC6u+C7iOC6suC6meC6teC7iSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLgupXgu43gu4jgurI6IOC6quC6sOC7geC6lOC6h+C6ouC6ueC7iOC6quC7iOC6p+C6meC6peC6uOC7iOC6oeC6guC6reC6h+C6peC6suC6jeC6geC6suC6meC7geC6iOC7ieC6h+C7gOC6leC6t+C6reC6meC7geC6muC6muC6oeC6teC6muC7jeC7iOC6quC6veC6hyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4Lqb4Lq74LqB4LqB4Lqw4LqV4Lq0OiDguqrgurDgu4HgupTguofguoHgurLgupngu4Hguojgu4nguofgu4DgupXgurfguq3gupngu4Dguqvgurzgurvgu4jgurLgupngurXgu4ngu4Hguprguprguprgu43gu4jguqHgurXguqrgur3guociPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuC6quC6ueC6hzog4Lqq4Lqw4LuB4LqU4LqH4Lqi4Lq54LuI4Lqq4LuI4Lqn4LqZ4LuA4LqX4Lq04LqH4LqC4Lqt4LqH4Lql4Lqy4LqN4LqB4Lqy4LqZ4LuB4LqI4LuJ4LqH4LuA4LqV4Lq34Lqt4LqZIOC7geC6peC6sOC6quC6u+C7iOC6h+C6quC6veC6h+C6lOC6seC6hyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLgupTgu4jguqfgupk6IOC7gOC6lOC6seC7ieC6h+C6guC6tuC7ieC6meC7gOC6l+C6tOC6h+C6q+C6meC7ieC6suC6iOC7jSDgu4HguqXgurDguqrgurvgu4jguofguqrgur3guofgupTgurHguociPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPuC7gOC6m+C6seC6meKAi+C7gOC6p+KAi+C6peC6siAlMSRkIOC6meC6suKAi+C6l+C6tSAo4LqI4Lq74LqZ4oCL4Lqu4Lqt4LqUIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuKAi+C7gOC6m+C6seC6meKAi+C7gOC6p+KAi+C6peC6siAxIOC6meC6suKAi+C6l+C6tSAo4LqI4Lq74LqZ4oCL4Lqu4Lqt4LqUIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sCmluZGV4IDY3ZWZmNjMuLmY1OWU3NTQgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1sdC9zdHJpbmdzLnhtbApAQCAtMjI1LDYgKzIyNSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IlXFvnJha2ludGkgZGFiYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iVHVyaW55cyBwYXNsxJdwdGFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iU2F1Z29zIHJlxb5pbWFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4i4oCeQW5kcm9pZOKAnCBzaXN0ZW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJBc21lbmluxJciPC9zdHJpbmc+CkBAIC04NjgsMTAgKzg2OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IknFoWtpcnB0aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iS29waWp1b3RpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4ixK5rbGlqdW90aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4ixK5rbGlqdW90aSBrYWlwIGdyeW7EhWrEryB0ZWtzdMSFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJQYWtlaXN0aeKAoiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJJxaF0cmludGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGlqdW90aSBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJQYXNpcmlua3RpIHRla3N0xIUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkFudWxpdW90aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iR3LEhcW+aW50aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJUZWtzdG8gcGFzaXJpbmtpbWFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IlByaWTEl3RpIHByaWUgxb5vZHlubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iScWhdHJpbnRpIjwvc3RyaW5nPgpAQCAtMTEyMSw2ICsxMTI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IktlaXN0aSBkYXJiYWxhdWtpbyBmb27EhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IlByYW5lxaFpbcWzIHNrYWl0eW1vIHByaWVtb27ElyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iU8SFbHlnb3MgdGVpa8SXamFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iUHJhbmXFoWltxbMgcGFnZWxiaWtsaXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBzdWFrdHl2aW50YXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gc3Vha3R5dmlubyDigJ48eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz7igJwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJQYWxpZXNraXRlLCBrYWQgdmFsZHl0dW3El3RlIHRpbmtsxIUuIjwvc3RyaW5nPgpAQCAtMTQ1OCwxMiArMTQ2Myw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkF0bmF1amlubyBhZG1pbmlzdHJhdG9yaXVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJJxaF0cnluxJcgYWRtaW5pc3RyYXRvcml1cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iS2FkIHRhdXNvdMWzIGFrdW11bGlhdG9yaWF1cyBlbmVyZ2lqxIUgYWt1bXVsaWF0b3JpYXVzIHRhdXNvamltbyBwcmllbW9uxJcgc3VtYcW+aW5hIMSvcmVuZ2luaW8gdmVpa2ltxIUgaXIgYXByaWJvamEgdmlicmF2aW3EhSwgdmlldG92xJdzIHBhc2xhdWdhcyBiZWkgZGF1Z3VtxIUgZm9uaW5pxbMgZHVvbWVuxbMuIEVsLiBwYcWhdG8sIHN1c2lyYcWhaW7El2ppbW8gaXIga2l0b3MgcHJvZ3JhbW9zLCBrdXJpb3MgdmVpa2lhIHNpbmNocm9uaXphdmltbyBwYWdyaW5kdSwgZ2FsaSBixat0aSBuZWF0bmF1amludG9zLCBuZWJlbnQgamFzIGF0aWRhcnlzaXRlLlxuXG5Ba3VtdWxpYXRvcmlhdXMgdGF1c29qaW1vIHByaWVtb27ElyBhdXRvbWF0acWha2FpIGnFoWp1bmdpYW1hLCBrYWkgxK9yZW5naW55cyDEr2tyYXVuYW1hcy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJTdmFyYmEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IlXFvmJsb2t1b3RhOiBuaWVrYWRhIG5lcm9keXRpIMWhacWzIHByYW5lxaFpbcWzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+Ik1hxb5hOiB0eWxpYWkgcm9keXRpIHByYW5lxaFpbcWzIHPEhXJhxaFvIGFwYcSNaW9qZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4ixK5wcmFzdGE6IHR5bGlhaSByb2R5dGkgxaFpdW9zIHByYW5lxaFpbXVzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJEaWRlbMSXOiByb2R5dGkgcHJhbmXFoWltxbMgc8SFcmHFoW8gdmlyxaF1amUgaXIgc2thbWLEl3RpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlNrdWJ1OiByb2R5dGkgZWtyYW5lIGlyIHNrYW1ixJd0aSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQgbWludXTEmSAoaWtpIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPiUxJGQgbWludXRlcyAoaWtpIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sCmluZGV4IDk1YzM1MzYuLmQxOTkzZWQgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbApAQCAtMjI0LDYgKzIyNCw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkJsb8S3xJN0IHTFq2zEq3QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IlDEgXJzbmllZHoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iU2F0dXJzIHBhc2zEk3B0cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IkRyb8WhYWlzIHJlxb7Eq21zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCBzaXN0xJNtYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29uaXNrcyI8L3N0cmluZz4KQEAgLTg2MywxMCArODY0LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iSXpncmllenQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcMSTdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IkllbMSrbcSTdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iSWVsxKttxJN0IGvEgSB2aWVua8SBcsWhdSB0ZWtzdHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IkFpenN0xIF0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkR6xJNzdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iS29wxJN0IFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IkF0bGFzxKt0IHRla3N0dSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iQXRzYXVrdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iQXRjZWx0IGF0c2F1a8WhYW51Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlRla3N0YSBhdGxhc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iUGlldmllbm90IHbEgXJkbsSrY2FpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJEesSTc3QiPC9zdHJpbmc+CkBAIC0xMTE0LDYgKzExMTgsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iVGFwZXRlcyBtYWnFhmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJQYXppxYZvanVtdSB1enR2xJNyxJNqcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iTm9zYWPEq2p1bXUgc25pZWR6xJNqcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IlBhemnFhm9qdW11IHBhbMSrZ3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBpciBha3Rpdml6xJN0cy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJMaWV0b2p1bXByb2dyYW1tYSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gYWt0aXZpesSTamEgVlBOLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlBpZXNrYXJpZXRpZXMsIGxhaSBwxIFydmFsZMSrdHUgdMSra2x1LiI8L3N0cmluZz4KQEAgLTE0NDksMTIgKzE0NTQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBdGphdW5pbsSBamEgYWRtaW5pc3RyYXRvcnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+Ikl6ZHrEk3NhIGrFq3N1IGFkbWluaXN0cmF0b3JzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJMYWkgcGFpbGR6aW7EgXR1IGFrdW11bGF0b3JhIGRhcmLEq2J1LCBha3VtdWxhdG9yYSBqYXVkYXMgdGF1cMSrxaFhbmFzIHJlxb7Eq23EgSB0aWVrIHNhbWF6aW7EgXRhIGllcsSrY2VzIHZlaWt0c3DEk2phIHVuIHRpZWsgaWVyb2Jlxb5vdGEgdmlicsSBY2lqYSwgYXRyYcWhYW7EgXMgdmlldHUgcGFrYWxwb2p1bWkgdW4gbGllbMSBa8SBIGRhxLxhIGZvbmEgZGF0dS4gRS1wYXN0YSwgemnFhm9qdW1hcG1hacWGYXMgdW4gY2l0YSB2ZWlkYSBsaWV0b3RuZXMsIGt1cnUgZGFyYsSrYmFzIHBhbWF0xIEgaXIgZGF0dSBzaW5ocm9uaXrEgWNpamEsIHZhciBuZXRpa3QgYXRqYXVuaW7EgXRhcywgamEgdMSBcyBuZWF0dmVyYXQuXG5cblRpa2zEq2R6IHRpZWsgc8SBa3RhIGllcsSrY2VzIHV6bMSBZGUsIGFrdW11bGF0b3JhIGphdWRhcyB0YXVwxKvFoWFuYXMgcmXFvsSrbXMgYXV0b23EgXRpc2tpIHRpZWsgaXpzbMSTZ3RzLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IlN2YXLEq2d1bXMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb8S3xJN0czogbmVrYWQgbmVyxIFkxKt0IMWhb3MgcGF6acWGb2p1bXVzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IlplbXU6IHLEgWTEq3QgcGF6acWGb2p1bXUgc2FyYWtzdGEgYXBha8WhZGHEvMSBIGJleiBza2HFhmFzIHNpZ27EgWxhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtxIFsaTogcsSBZMSrdCDFoW9zIHBhemnFhm9qdW11cyBiZXogc2thxYZhcyBzaWduxIFsYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iQXVnc3R1OiByxIFkxKt0IHBhemnFhm9qdW11IHNhcmFrc3RhIGF1Z8WhZGHEvMSBIHVuIGFyIHNrYcWGYXMgc2lnbsSBbHUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iU3RlaWR6YW1pOiByxIFkxKt0IGVrcsSBbsSBIGFyIHNrYcWGYXMgc2lnbsSBbHUiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0iemVybyI+JTEkZMKgbWluxat0ZXMgKGzEq2R6IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGTCoG1pbsWrdGkgKGzEq2R6IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKaW5kZXggNWMxMmEzNi4uNjcyYzJiNSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLQl9Cw0LrQu9GD0YfQuCDRgdC10LPQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLQodC+0LTRgNC20LjQvdC40YLQtSDRgdC1INGB0LrRgNC40LXQvdC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i0JHQtdC30LHQtdC00LXQvSDRgNC10LbQuNC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4i0KHQuNGB0YLQtdC8IEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+ItCb0LjRh9C90LgiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItCY0YHQtdGH0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+ItCa0L7Qv9C40YDQsNGYIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i0JfQsNC70LXQv9C4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLQl9Cw0LvQtdC/0Lgg0LrQsNC60L4g0L7QsdC40YfQtdC9INGC0LXQutGB0YIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+ItCX0LDQvNC10L3QuC4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLQmNC30LHRgNC40YjQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i0JrQvtC/0LjRgNCw0Zgg0KPQoNCbIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i0JjQt9Cx0LXRgNC4INGC0LXQutGB0YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+ItCS0YDQsNGC0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+ItCf0L7QstGC0L7RgNC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+ItCY0LfQsdC+0YAg0L3QsCDRgtC10LrRgdGCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+ItCU0L7QtNCw0Zgg0LLQviDRgNC10YfQvdC40LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+ItCY0LfQsdGA0LjRiNC4Ijwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+ItCf0YDQvtC80LXQvdC4INGC0LDQv9C10YIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLQodC70YPRiNCw0YLQtdC7INC90LAg0LjQt9Cy0LXRgdGC0YPQstCw0ZrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i0JTQsNCy0LDRgtC10Lsg0L3QsCDRg9GB0LvQvtCyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i0J/QvtC80L7RiNC90LjQuiDQt9CwINC40LfQstC10YHRgtGD0LLQsNGa0LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+ItCQ0LrRgtC40LLQuNGA0LDQvdCwIFZQTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiDQtSDQsNC60YLQuNCy0LjRgNCw0L3QsCDRgdC+IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+ItCU0L7Qv9GA0Lgg0LfQsCDQtNCwINGD0L/RgNCw0LLRg9Cy0LDRiCDRgdC+INC80YDQtdC20LDRgtCwLiI8L3N0cmluZz4KQEAgLTEyNTAsNyArMTI1NSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9yb3V0ZV9jaG9vc2VyX3RpdGxlIiBtc2dpZD0iMTc1MTYxODU1NDUzOTA4NzYyMiI+ItCf0L7QstGA0LfQuCDRgdC1INGB0L4g0YPRgNC10LQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9yb3V0ZV9jaG9vc2VyX3RpdGxlX2Zvcl9yZW1vdGVfZGlzcGxheSIgbXNnaWQ9IjMzOTU1NDE3NDU4NzIwMTc1ODMiPiLQn9GA0LXRhNGA0LvQuCDQtdC60YDQsNC9INC90LAg0YPRgNC10LQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9yb3V0ZV9jaG9vc2VyX3NlYXJjaGluZyIgbXNnaWQ9IjQ3NzYyMzYyMDI2MTA4Mjg3MDYiPiLQn9GA0LXQsdCw0YDRg9Cy0LDRmtC1INC30LAg0YPRgNC10LTQuC4uLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3JvdXRlX2Nob29zZXJfZXh0ZW5kZWRfc2V0dGluZ3MiIG1zZ2lkPSI4NzAxNTUzNDIzNjcwMTYwNCI+ItCf0L7QtNC10YHRg9Cy0LDRmtCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcm91dGVfY2hvb3Nlcl9leHRlbmRlZF9zZXR0aW5ncyIgbXNnaWQ9Ijg3MDE1NTM0MjM2NzAxNjA0Ij4i0J/QvtGB0YLQsNCy0LrQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3JvdXRlX2NvbnRyb2xsZXJfZGlzY29ubmVjdCIgbXNnaWQ9Ijg5NjYxMjAyODYzNzQxNTg2NDkiPiLQmNGB0LrQu9GD0YfQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3JvdXRlX3N0YXR1c19zY2FubmluZyIgbXNnaWQ9IjcyNzk5MDg3NjE3NTgyOTM3ODMiPiLQodC60LXQvdC40YDQsNGa0LUuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9yb3V0ZV9zdGF0dXNfY29ubmVjdGluZyIgbXNnaWQ9IjY0MjI1NzE3MTYwMDc4MjU0NDAiPiLQodC1INC/0L7QstGA0LfRg9Cy0LAuLi4iPC9zdHJpbmc+CkBAIC0xNDQyLDEyICsxNDQ3LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i0JDQttGD0YDQuNGA0LDQvdC+INC+0LQg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQvtGCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLQmNC30LHRgNC40YjQsNC90L4g0L7QtCDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC+0YIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+ItCX0LAg0LTQsCDQstC4INC/0L7QvNC+0LPQvdC1INC00LAg0ZjQsCDQv9C+0LTQvtCx0YDQuNGC0LUg0YLRgNCw0ZjQvdC+0YHRgtCwINC90LAg0LHQsNGC0LXRgNC40ZjQsNGC0LAsINGI0YLQtdC00LDRh9C+0YIg0L3QsCDQsdCw0YLQtdGA0LjRmNCw0YLQsCDRmNCwINC90LDQvNCw0LvRg9Cy0LAg0LjQt9Cy0LXQtNCx0LDRgtCwINC90LAg0YPRgNC10LTQvtGCINC4INCz0L4g0L7Qs9GA0LDQvdC40YfRg9Cy0LAg0LLQuNCx0YDQuNGA0LDRmtC10YLQviwg0YPRgdC70YPQs9C40YLQtSDQt9CwINC70L7QutCw0YbQuNGY0LAg0Lgg0L/QvtCy0LXRnNC10YLQviDQv9C+0LTQsNGC0L7RhtC4INC+0LQg0LfQsNC00L3QuNC90LAuINCVLdC/0L7RiNGC0LDRgtCwLCDQuNGB0L/RgNCw0ZzQsNGa0LXRgtC+INC/0L7RgNCw0LrQuCDQuCDQtNGA0YPQs9C40YLQtSDQsNC/0LvQuNC60LDRhtC40Lgg0LrQvtC4INGB0LUg0L/QvtGC0L/QuNGA0LDQsNGCINC90LAg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40ZjQsCDQvNC+0LbQtdCx0Lgg0L3QtdC80LAg0LTQsCDRgdC1INCw0LbRg9GA0LjRgNCw0LDRgiDQtNC+0LrQvtC70LrRgyDQvdC1INCz0Lgg0L7RgtCy0L7RgNC40YLQtS5cblxu0KjRgtC10LTQsNGH0L7RgiDQvdCwINCx0LDRgtC10YDQuNGY0LDRgtCwINCw0LLRgtC+0LzQsNGC0YHQutC4INGB0LUg0LjRgdC60LvRg9GH0YPQstCwINC60L7Qs9CwINGD0YDQtdC00L7RgiDRgdC1INC/0L7Qu9C90LguIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i0JLQsNC20L3QvtGB0YIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+ItCR0LvQvtC60LjRgNCw0L3Qvjog0L3QuNC60L7Qs9Cw0Ygg0L3QtSDQv9C+0LrQsNC20YPQstCw0Zgg0LPQuCDQvtCy0LjQtSDQuNC30LLQtdGB0YLRg9Cy0LDRmtCwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+ItCd0LjRgdC60L46INC/0L7QutCw0LbRg9Cy0LDRmCDQs9C4INGC0LjQstC60L4g0L3QsCDQtNC90L7RgtC+INC90LAg0YHQv9C40YHQvtC60L7RgiDRgdC+INC40LfQstC10YHRgtGD0LLQsNGa0LAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+ItCd0L7RgNC80LDQu9C90L46INC/0L7QutCw0LbRg9Cy0LDRmCDQs9C4INC+0LLQuNC1INC40LfQstC10YHRgtGD0LLQsNGa0LAg0YLQuNCy0LrQviI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i0JLQuNGB0L7QutC+OiDQv9C+0LrQsNC20YPQstCw0Zgg0LPQuCDQvdCwINCy0YDQsiDQvdCwINGB0L/QuNGB0L7QutC+0YIg0YHQviDQuNC30LLQtdGB0YLRg9Cy0LDRmtCwINC4INC00LDRmCDQt9Cy0YPQuiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLQmNGC0L3Qvjog0L3QtdC60LAg0YHQtSDQv9C+0ZjQsNCy0LDRgiDQvdCwINC10LrRgNCw0L3QvtGCINC4INC00LDRmCDQuNC8INC30LLRg9C6Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+0JfQsCAlMSRkINC80LjQvdGD0YLQsCAo0LTQviA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPtCX0LAgJTEkZCDQvNC40L3Rg9GC0LggKNC00L4gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbAppbmRleCA4NDJlZTRhLi5jNmY2Njk4IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuC0h+C0quC1jeC0quC1i+C1viDgtLLgtYvgtJXgtY3gtJXgtYHgtJrgtYbgtK/gtY3gtK/gtYHgtJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4LSV4LWL4LW64LSf4LS+4LSV4LWN4oCM4LSx4LWN4LSx4LWB4LSV4LW+IOC0ruC0seC0muC1jeC0muC1gSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuC0uOC1geC0sOC0leC1jeC0t+C0v+C0pCDgtK7gtYvgtKHgtY0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIOC0uOC0v+C0uOC1jeC0seC1jeC0seC0giI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i4LS14LWN4LSv4LSV4LWN4LSk4LS/4LSX4LSk4LSCIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLgtK7gtYHgtLHgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuC0quC0leC0sOC1jeKAjeC0pOC1jeC0pOC1geC0lSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuC0kuC0n+C1jeC0n+C0v+C0leC1jeC0leC1geC0lSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4LSq4LWN4LSy4LWG4LSv4LS/4LW7IOC0n+C1huC0leC1jeKAjOC0uOC1jeC0seC1jeC0seC0vuC0r+C0vyDgtJLgtJ/gtY3gtJ/gtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuC0ruC0vuC0seC1jeC0seC0v+C0uOC1jeC0peC0vuC0quC0v+C0leC1jeC0leC1geC0lS4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLgtIfgtLLgtY3gtLLgtL7gtKTgtL7gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCDgtKrgtJXgtbzgtKTgtY3gtKTgtYHgtJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLgtJ/gtYbgtJXgtY3igIzgtLjgtY3igIzgtLHgtY3gtLHgtY0g4LSk4LS/4LSw4LSe4LWN4LSe4LWG4LSf4LWB4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLgtKrgtLTgtK/gtKrgtJ/gtL/gtK/gtL7gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuC0teC1gOC0o+C1jeC0n+C1geC0giDgtJrgtYbgtK/gtY3gtK/gtYHgtJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i4LSf4LWG4LSV4LWN4oCM4LS44LWN4LSx4LWN4LSx4LWNIOC0pOC0v+C0sOC0nuC1jeC0nuC1huC0n+C1geC0leC1jeC0leC1vSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLgtKjgtL/gtJjgtKPgtY3gtJ/gtYHgtLXgtL/gtb0g4LSa4LWH4LW84LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLgtIfgtLLgtY3gtLLgtL7gtKTgtL7gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4LS14LS+4LW+4LSq4LWH4LSq4LWN4LSq4LW8IOC0ruC0vuC0seC1jeC0seC1geC0lSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuC0heC0seC0v+C0r+C0v+C0quC1jeC0quC1jSDgtLLgtL/gtLjgtKPgtbwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuC0leC0o+C1jeC0n+C1gOC0t+C1uyDgtKbgtL7gtKTgtL7gtLXgtY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLgtIXgtLHgtL/gtK/gtL/gtKrgtY3gtKrgtY0g4LS44LS54LS+4LSv4LS/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4LS44LSc4LWA4LS14LSu4LS+4LSV4LWN4LSV4LS/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOC0ieC0quC0r+C1i+C0l+C0v+C0muC1jeC0muC1jSBWUE4g4LSq4LWN4LSw4LS14LW84LSk4LWN4LSk4LSo4LSV4LWN4LS34LSu4LSu4LS+4LSV4LWN4LSV4LS/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4LSo4LWG4LSx4LWN4LSx4LWN4oCM4LS14LW84LSV4LWN4LSV4LWNIOC0qOC0v+C0r+C0qOC1jeC0pOC1jeC0sOC0v+C0leC1jeC0leC0vuC1uyDgtLjgtY3igIzgtKrgtbzgtLbgtL/gtJXgtY3gtJXgtYHgtJUuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IuC0qOC0v+C0meC1jeC0meC0s+C1geC0n+C1hiDgtIXgtKHgtY3igIzgtK7gtL/gtKjgtL/gtLjgtY3igIzgtJ/gtY3gtLDgtYfgtLHgtY3gtLHgtbwg4LSF4LSq4LWN4oCM4LSh4LWH4LSx4LWN4LSx4LWB4LSa4LWG4LSv4LWN4oCM4LSk4LWBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLgtKjgtL/gtJngtY3gtJngtLPgtYHgtJ/gtYYg4LSF4LSh4LWN4oCM4LSu4LS/4LSo4LS/4LS44LWN4oCM4LSf4LWN4LSw4LWH4LSx4LWN4LSx4LW8IOC0h+C0suC1jeC0suC0vuC0pOC0vuC0leC1jeC0leC0vyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i4LSs4LS+4LSx4LWN4LSx4LSx4LS/IOC0huC0r+C1geC0uOC1jeC0uOC1jSDgtK7gtYbgtJrgtY3gtJrgtKrgtY3gtKrgtYbgtJ/gtYHgtKTgtY3gtKTgtL7gtbsg4LS44LS54LS+4LSv4LS/4LSV4LWN4LSV4LWB4LSo4LWN4LSo4LSk4LS/4LSo4LWNLCDgtKzgtL7gtLHgtY3gtLHgtLHgtL8g4LS44LWH4LS14LW8IOC0qOC0v+C0meC1jeC0meC0s+C1geC0n+C1hiDgtIngtKrgtJXgtLDgtKPgtKTgtY3gtKTgtL/gtKjgtY3gtLHgtYYg4LSq4LWN4LSw4LSV4LSf4LSo4LSk4LWN4LSk4LWGIOC0leC1geC0seC0r+C1jeKAjOC0leC1jeC0leC1geC0leC0r+C1geC0giDgtLXgtYjgtKzgtY3gtLDgtYfgtLfgtKjgtYbgtK/gtYHgtIIg4LSu4LS/4LSV4LWN4LSVIOC0quC0tuC1jeC0muC0vuC0pOC1jeC0pOC0siDgtLXgtL/gtLXgtLDgtKTgtY3gtKTgtYbgtK/gtYHgtIIg4LSq4LSw4LS/4LSu4LS/4LSk4LSq4LWN4LSq4LWG4LSf4LWB4LSk4LWN4LSk4LWB4LSV4LSv4LWB4LSCIOC0muC1huC0r+C1jeC0r+C1geC0qOC1jeC0qOC1gS4g4LSH4LSu4LWG4LSv4LS/4LW9LCDgtLjgtKjgtY3gtKbgtYfgtLbgtK7gtK/gtK/gtY3igIzgtJXgtY3gtJXgtb0sIOC0uOC0ruC0qOC1jeC0teC0r+C0v+C0quC1jeC0quC0v+C0leC1jeC0leC0suC0v+C0qOC1hiDgtIbgtLbgtY3gtLDgtK/gtL/gtJrgtY3gtJrgtYHgtLPgtY3gtLMg4LSu4LSx4LWN4LSx4LWNIOC0heC0quC1jeC0suC0v+C0leC1jeC0leC1h+C0t+C0qOC1geC0leC1viDgtI7gtKjgtY3gtKjgtL/gtLUg4LSo4LS/4LSZ4LWN4LSZ4LW+IOC0pOC1geC0seC0leC1jeC0leC1geC0qOC1jeC0qOC0pOC1geC0teC0sOC1hiDgtIXgtKrgtY3igIzgtKHgtYfgtLHgtY3gtLHgtYHgtJrgtYbgtK/gtY3gtK/gtL7gtKjgtL/gtJ/gtK/gtL/gtLLgtY3gtLIuXG5cbuC0qOC0v+C0meC1jeC0meC0s+C1geC0n+C1hiDgtIngtKrgtJXgtLDgtKPgtIIg4LSa4LS+4LW84LSc4LWN4LSc4LWB4LSa4LWG4LSv4LWN4LSv4LWB4LSu4LWN4LSq4LWL4LW+IOC0rOC0vuC0seC1jeC0seC0seC0vyDgtLjgtYfgtLXgtbwg4LS44LWN4LS14LSv4LSCIOC0k+C0q+C0vuC0leC1geC0gi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgtKrgtY3gtLDgtL7gtKfgtL7gtKjgtY3gtK/gtIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuC0rOC1jeC0suC1i+C0leC1jeC0leC1geC0muC1huC0r+C1jeC0pOC1gTog4LSIIOC0heC0seC0v+C0r+C0v+C0quC1jeC0quC1geC0leC1viDgtJLgtLDgtL/gtJXgtY3gtJXgtLLgtYHgtIIg4LSV4LS+4LSj4LS/4LSV4LWN4LSV4LSw4LWB4LSk4LWNIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuC0pOC0vuC0tOC1jeC0qOC1jeC0qOC0pOC1jTog4LSF4LSx4LS/4LSv4LS/4LSq4LWN4LSq4LWNIOC0suC0v+C0uOC1jeC0seC1jeC0seC0v+C0qOC1jeC0seC1hiDgtKTgtL7gtLTgtYYg4LS24LSs4LWN4LSm4LSu4LWB4LSj4LWN4LSf4LS+4LSV4LWN4LSV4LS+4LSk4LWGIOC0leC0vuC0o+C0v+C0leC1jeC0leC1geC0lSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4LS44LS+4LSn4LS+4LSw4LSj4LSCOiDgtIgg4LSF4LSx4LS/4LSv4LS/4LSq4LWN4LSq4LWB4LSV4LW+IOC0qOC0v+C0tuC0rOC1jeC0puC0ruC0vuC0r+C0vyDgtJXgtL7gtKPgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuC0ieC0r+C1vOC0qOC1jeC0qOC0pOC1jTog4LSF4LSx4LS/4LSv4LS/4LSq4LWN4LSq4LWNIOC0suC0v+C0uOC1jeC0seC1jeC0seC0v+C0qOC1jeC0seC1hiDgtI/gtLHgtY3gtLHgtLXgtYHgtIIg4LSu4LWB4LSV4LSz4LS/4LW9IOC0leC0vuC0o+C0v+C0leC1jeC0leC1geC0lSwg4LS24LSs4LWN4LSm4LSu4LWB4LSj4LWN4LSf4LS+4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuC0heC0n+C0v+C0r+C0qOC1jeC0pOC0sOC0gjog4LS44LWN4LSV4LWN4LSw4LWA4LSo4LS/4LW9IOC0puC1g+C0tuC1jeC0r+C0ruC0vuC0leC1jeC0leC1geC0lSwg4LS24LSs4LWN4LSm4LSu4LWB4LSj4LWN4LSf4LS+4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkIOC0ruC0v+C0qOC0v+C0seC1jeC0seC1jSDgtLjgtK7gtK/gtKTgtY3gtKTgtYfgtJXgtY3gtJXgtY0gKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOC0teC0sOC1hik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7gtJLgtLDgtYEg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNIOC0uOC0ruC0r+C0pOC1jeC0pOC1h+C0leC1jeC0leC1jSAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4g4LS14LSw4LWGKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbW4tck1OL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKaW5kZXggYmRmYmU3YS4uYzQyYmVjYSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLQntC00L7QviDRgtKv0LPQttC40YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i0JrQvtC90YLQtdC90YLRi9CzINC90YPRg9GB0LDQvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+ItCQ0Y7Rg9C70LPSr9C5INCz0L7RgNC40LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiLQkNC90LTRgNC+0LnQtCDRgdC40YHRgtC10LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+ItCl0YPQstC40LnQvSI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i0KLQsNGB0LvQsNGFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLQpdGD0YPQu9Cw0YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLQkdGD0YPQu9Cz0LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i0KXQvtC+0YHQvtC9INGC0LXQutGB0YIg0YXRjdC70LHRjdGA0Y3RjdGAINCx0YPRg9C70LPQsNGFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLQntGA0LvRg9GD0LvQsNGF4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+ItCj0YHRgtCz0LDRhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMINGF0YPRg9C70LDRhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+ItCi0LXQutGB0YIg0YHQvtC90LPQvtGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLQkdGD0YbQsNCw0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+ItCU0LDRhdC40L0g0YXQuNC50YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i0KLQtdC60YHRgiDRgdC+0L3Qs9C+0YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i0KLQvtC70Ywg0LHQuNGH0LjQs9GCINC90Y3QvNGN0YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+ItCj0YHRgtCz0LDRhSI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLQpdCw0L3Ri9C9INC30YPRgNCw0LMg0YHQvtC70LjRhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+ItCc0Y3QtNGN0LPQtNGN0Lsg0YHQvtC90YHQvtCz0YciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+ItCd06nRhdGG06nQuyDQvdC40LnQu9Kv0q/Qu9GN0LPRhyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+ItCc0Y3QtNGN0LPQtNC70LjQudC9INGC0YPRgdC70LDQs9GHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g0LjQtNGN0LLRhdGC0Y3QuSDQsdC+0LvQvtCyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOLdCzIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDQuNC00Y3QstGF0YLRjdC5INCx0L7Qu9Cz0L7QsiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+ItCh0q/Qu9C20Y3RjdCzINGD0LTQuNGA0LTQsNGFINCx0L7QuyDRhdKv0YDQvdGNINKv0q8uIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+ItCi0LDQvdCw0Lkg0LDQtNC80LjQvSDRiNC40L3RjdGH0LjQu9GB0Y3QvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i0KLQsNC90Ysg0LDQtNC80LjQvSDRg9GB0YLQs9Cw0YHQsNC9INCx0LDQudC90LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+ItCR0LDRgtCw0YDQtdC5INGF0LDQtNCz0LDQu9Cw0YUg0YTRg9C90LrRhiDQvdGMINGC0LDQvdGLINGC06nRhdOp06nRgNOp0LzQttC40LnQvSDRhtGN0L3RjdCz0LjQudCzINGF0LDQtNCz0LDQu9Cw0YXRi9C9INGC0YPQu9C0INCz0q/QudGG0Y3RgtCz0Y3Qu9C40LnQsyDQsdCw0LPQsNGB0LPQsNC2LCDRh9C40YfRgNGN0LvRgtC40LnQsyDQsdGD0YPRgNGD0YPQu9C2LCDQsdCw0LnRgNGI0LvRi9C9INKv0LnQu9GH0LjQu9Cz0Y3RjdC90q/Sr9C0INCx0L7Qu9C+0L0g0LHRg9GB0LDQtCDTqdCz06nQs9C00LvQuNC50L0g0YXRjdC80LbRjdGN0LMg0LHQsNCz0LDRgdCz0LDQtNCw0LMg0Y7QvC4g0Jgt0LzRjdC50LssINC80LXRgdGB0LXQtiDQsdC+0LvQvtC9INCx0YPRgdCw0LQg0YHQuNC90YXRgNC+0L0g0YXQuNC50LTRjdCzINCw0L/Qu9C40LrQtdC50YjQvdKv0q/QtCDQtNCw0YDQsNCwINC00LDRhdC40L0g0L3RjdGN0LPQtNGN0YUg0YXSr9GA0YLQu9GN0Y0g0LDQstGC0L7QvNCw0YLQsNCw0YAg0YjQuNC90Y3Rh9C70Y3Qu9GCINGF0LjQudGF0LPSr9C5LlxuXG7QnNOp0L0g0LHQsNGC0LDRgNC10Lkg0YXQsNC00LPQsNC70LDRhSDRhNGD0L3QutGGINC90Ywg0YLQsNC90YvQsyDRgtOp0YXTqdOp0YDTqdC80LbTqdOpINGG0Y3QvdGN0LPQu9GN0YUg0q/QtdC0INCw0LLRgtC+0LzQsNGC0LDQsNGAINGD0L3RgtGA0LDRhSDRjtC8LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+ItCQ0Ycg0YXQvtC70LHQvtCz0LTQvtC7Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLQkdC70L7QutC70L7RgdC+0L06INCt0LTQs9GN0Y3RgCDQvNGN0LTRjdCz0LTQu9C40LnQsyDRhdGN0LfRjdGNINGHINGF0LDRgNGD0YPQu9Cw0YXQs9Kv0LkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i0JHQsNCz0LA6INCc0Y3QtNGN0LPQtNC70LjQudCzINC20LDQs9GB0LDQsNC70YLRi9C9INC00L7QvtC0INGF0Y3RgdGN0LPRgiDQtNGD0YPQs9Kv0Lkg0YXQsNGA0YPRg9C70LDRhSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i0JXRgNC00LjQudC9OiDQrdC00LPRjdGN0YAg0LzRjdC00Y3Qs9C00LvQuNC50LMg0LTRg9GD0LPSr9C5INGF0LDRgNGD0YPQu9Cw0YUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+ItOo0L3QtNOp0YA6INC80Y3QtNGN0LPQtNC70LjQudCzINC20LDQs9GB0LDQsNC70YLRi9C9INGN0YXRjdC90LQg0LTRg9GD0YLQsNC5INGF0LDRgNGD0YPQu9Cw0YUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i0K/QsNGA0LDQu9GC0LDQuTog0JTRjdC70LPRjdGG0Y3QvdC0INGP0LDRgNCw0LvRgtCw0LksINC00YPRg9GC0LDQuSDQs9Cw0YDQs9Cw0YUiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiAlMSRkINC80LjQvdGD0YLRi9C9INGC0YPRgNGIICggPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g0YXSr9GA0YLRjdC7KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPtC90Y3QsyDQvNC40L3Rg9GC0YvQvSDRgtGD0YDRiCAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4g0YXSr9GA0YLRjdC7KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbXItcklOL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tci1ySU4vc3RyaW5ncy54bWwKaW5kZXggYzMyM2I4NS4uOGJjODZlNiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1tci1ySU4vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tci1ySU4vc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLgpIbgpKTgpL4g4KSy4KWJ4KSVIOCkleCksOCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgpLLgpKrgpLXgpL/gpLLgpYfgpLLgpYAg4KS44KS+4KSu4KSX4KWN4KSw4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i4KS44KWB4KSw4KSV4KWN4KS34KS/4KSkIOCkruCli+CkoSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQg4KS44KS/4KS44KWN4oCN4KSf4KSuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLgpLXgpYjgpK/gpJXgpY3gpKTgpL/gpJUiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuCkleCknyDgpJXgpLDgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuCkleClieCkquClgCDgpJXgpLDgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLgpKrgpYfgpLjgpY3gpJ8g4KSV4KSw4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLgpLjgpL7gpKfgpL4g4KSu4KSc4KSV4KWC4KSwIOCkruCljeCkueCko+ClguCkqCDgpKrgpYfgpLjgpY3gpJ8g4KSV4KSw4KS+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLgpKrgpYHgpKjgpLDgpY3gpLjgpY3gpKXgpL/gpKQg4KSV4KSw4KS+4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuCkueCkn+CkteCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMIOCkleClieCkquClgCDgpJXgpLDgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLgpK7gpJzgpJXgpYLgpLAg4KSo4KS/4KS14KSh4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLgpKrgpYLgpLDgpY3gpLXgpLXgpKQg4KSV4KSw4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLgpKrgpYHgpKjgpY3gpLngpL4g4KSV4KSw4KS+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IuCkruCknOCkleClguCksCDgpKjgpL/gpLXgpKEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4KS24KSs4KWN4KSm4KSV4KWL4KS24KS+4KSkIOCknOCli+CkoeCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i4KS54KSf4KS14KS+Ijwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuCkteClieCksuCkquClh+CkquCksCDgpKzgpKbgpLLgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLgpLjgpYLgpJrgpKjgpL4g4KSQ4KSV4KSj4KS+4KSw4KS+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLgpIXgpJ8g4KSq4KWN4KSw4KSm4KS+4KSk4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4KS44KWC4KSa4KSo4KS+IOCkuOCkueCkvuCkr+CljeCkr+CklSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIOCkuOCkleCljeCksOCkv+CkryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDgpKbgpY3gpLXgpL7gpLDgpYcgVlBOIOCkuOCkleCljeCksOCkv+CkryDgpJXgpYfgpLLgpYcg4KSG4KS54KWHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4KSo4KWH4KSf4KS14KSw4KWN4KSVIOCkteCljeCkr+CkteCkuOCljeCkpeCkvuCkquCkv+CkpCDgpJXgpLDgpKPgpY3gpK/gpL7gpLjgpL7gpKDgpYAg4KS44KWN4KSq4KSw4KWN4KS2IOCkleCksOCkvi4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4KSG4KSq4KSy4KWN4KSv4KS+IOCkquCljeCksOCktuCkvuCkuOCkleCkvuCkpuCljeCkteCkvuCksOClhyDgpIXgpKbgpY3gpK/gpKTgpKjgpL/gpKQg4KSV4KWH4KSy4KWHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLgpIbgpKrgpLLgpY3gpK/gpL4g4KSq4KWN4KSw4KS24KS+4KS44KSV4KS+4KSm4KWN4KS14KS+4KSw4KWHIOCkueCkn+CkteCkv+CksuClhyDgpIbgpLngpYciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuCkrOClheCkn+CksOClgOCkmuClhyDgpIbgpK/gpYHgpLfgpY3gpK8g4KS44KWB4KSn4KS+4KSw4KS/4KSkIOCkleCksOCko+CljeKAjeCkr+CkvuCkpCDgpK7gpKbgpKQg4KSV4KSw4KSj4KWN4KSv4KS+4KS44KS+4KSg4KWALCDgpKzgpYXgpJ/gpLDgpYAg4KSs4KSa4KSk4KSV4KSw4KWN4KSk4KS+IOCkhuCkquCksuCljeCkr+CkviDgpKHgpL/gpLXgpY3gpLngpL7gpIfgpLjgpJrgpYcg4KSV4KS+4KSw4KWN4KSv4KSq4KWN4KSw4KSm4KSw4KWN4KS24KSoIOCkleCkruClgCDgpJXgpLDgpKTgpYsg4KSG4KSj4KS/IOCkleCkguCkquCkqCwg4KS44KWN4KSl4KS+4KSoIOCkuOClh+CkteCkviDgpIbgpKPgpL8g4KSs4KSw4KS+4KSaIOCkquCkvuCksOCljeCktuCljeCkteCkreClguCkruClgCDgpKHgpYfgpJ/gpL4g4KSu4KSw4KWN4KSv4KS+4KSm4KS/4KSkIOCkleCksOCkpOCliy4g4KS44KSC4KSV4KS+4KSy4KSo4KS+4KS14KSwIOCkheCkteCksuCkguCkrOClguCkqCDgpIXgpLjgpKPgpL7gpLDgpYcg4KSI4KSu4KWH4KSyLCDgpLjgpILgpKbgpYfgpLbgpKgg4KSG4KSj4KS/IOCkh+CkpOCksCDgpIXigI3gpYXgpKrgpY3gpLgg4KSG4KSq4KSjIOCkieCkmOCkoeCksuCljeCkr+CkvuCktuCkv+CkteCkvuCkryDgpIXgpKbgpY3gpK/gpKTgpKjgpL/gpKQg4KS54KWL4KSKIOCktuCkleCkpCDgpKjgpL7gpLngpYDgpKQuXG5cbuCkhuCkquCksuClhyDgpKHgpL/gpLXgpY3gpLngpL7gpIfgpLgg4KSa4KS+4KSw4KWN4KScIOCkueCli+CkpCDgpIXgpLjgpKTgpYcg4KSk4KWH4KS14KWN4KS54KS+IOCkrOClheCkn+CksOClgCDgpKzgpJrgpKTgpJXgpLDgpY3gpKTgpL4g4KS44KWN4KS14KSv4KSC4KSa4KSy4KS/4KSk4KSq4KSj4KWHIOCkrOCkguCkpiDgpLngpYvgpKTgpYsuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i4KSu4KS54KSk4KWN4KSk4KWN4KS1Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLgpIXgpLXgpLDgpYvgpKfgpL/gpKQg4KSV4KWH4KSy4KWHOiDgpK/gpL4g4KS44KWC4KSa4KSo4KS+IOCkleCkp+ClgOCkueClgCDgpKbgpLDgpY3gpLbgpLXgpYIg4KSo4KSV4KS+Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuCkleCkruClgDog4KS24KS+4KSC4KSk4KSq4KSj4KWHIOCkuOClguCkmuCkqOCkviDgpLjgpYLgpJrgpYDgpJrgpY3gpK/gpL4g4KSk4KSz4KS+4KS24KWAIOCkpuCksOCljeCktuCkteCkviI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4KS44KS+4KSu4KS+4KSo4KWN4KSvOiDgpK/gpL4g4KS44KWC4KSa4KSo4KS+IOCktuCkvuCkguCkpOCkquCko+ClhyDgpKbgpLDgpY3gpLbgpLXgpL4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuCkuOCksOCljeCkteCli+CkmuCljeCkmjog4KS44KWC4KSa4KSo4KS+IOCkuOClguCkmuClgOCkmuCljeCkr+CkviDgpLbgpYDgpLDgpY3gpLfgpLjgpY3gpKXgpL7gpKjgpYAg4KSm4KSw4KWN4KS24KS14KS+IOCkhuCko+CkvyDgpKfgpY3gpLXgpKjgpYAg4KSa4KS+4KSy4KWCIOCkleCksOCkviI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLgpKTgpY3gpLXgpLDgpL/gpKQ6IOCkuOCljeCkleCljeCksOClgOCkqOCkteCksCDgpKHgpYvgpJXgpL7gpLXgpYLgpKgg4KSq4KS54KS+IOCkhuCko+CkvyDgpKfgpY3gpLXgpKjgpYAg4KSa4KS+4KSy4KWCIOCkleCksOCkviI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQg4KSu4KS/4KSo4KS/4KSf4KS+4KS44KS+4KSg4KWAICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiDgpKrgpLDgpY3gpK/gpILgpKQpPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkIOCkruCkv+CkqOCkv+Ckn+CkvuCkguCkuOCkvuCkoOClgCAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g4KSq4KSw4KWN4KSv4KSC4KSkKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbXMtck1ZL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKaW5kZXggMjEwNWI5MC4uZjEyNDlkNiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJLdW5jaSBzZWthcmFuZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJLYW5kdW5nYW4gdGVyc2VtYnVueWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJNb2Qgc2VsYW1hdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlNpc3RlbSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXJpYmFkaSI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iUG90b25nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJTYWxpbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IlRhbXBhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iVGFtcGFsIHNlYmFnYWkgdGVrcyBiaWFzYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iR2FudGkuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iUGFkYW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlNhbGluIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlBpbGloIHRla3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkJ1YXQgYXNhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iQnVhdCBzZW11bGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iUGVtaWxpaGFuIHRla3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iVGFtYmFoIGtlIGthbXVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJQYWRhbSI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJUdWthciBrZXJ0YXMgZGluZGluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IlBlbmRlbmdhciBwZW1iZXJpdGFodWFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJQZW1iZWthbCBrZWFkYWFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iUGVtYmFudHUgcGVtYmVyaXRhaHVhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGRpYWt0aWZrYW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gZGlha3RpZmthbiBvbGVoIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlNlbnR1aCB1bnR1ayBtZW5ndXJ1cyByYW5na2FpYW4uIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IkRpa2VtYXMga2luaSBvbGVoIHBlbnRhZGJpciBhbmRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJEaXBhZGFta2FuIG9sZWggcGVudGFkYmlyIGFuZGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IlVudHVrIG1lbWJhbnR1IG1lbXBlcmJhaWsgaGF5YXQgYmF0ZXJpLCBwZW5qaW1hdCBiYXRlcmkgbWVuZ3VyYW5na2FuIHByZXN0YXNpIHBlcmFudGkgYW5kYSBkYW4gbWVuZ2VoYWRrYW4gZ2V0YXJhbiwgcGVya2hpZG1hdGFuIGxva2FzaSBkYW4ga2ViYW55YWthbiBkYXRhIGxhdGFyIGJlbGFrYW5nLiBFLW1lbCwgcGVtZXNlamFuIGRhbiBhcGwgbGFpbiB5YW5nIGJlcmdhbnR1bmcga2VwYWRhIHBlbnllZ2VyYWthbiBtdW5na2luIHRpZGFrIG1lbmdlbWFzIGtpbmksIG1lbGFpbmthbiBhbmRhIG1lbWJ1a2EgYXBsIGl0dS5cblxuUGVuamltYXQgYmF0ZXJpIGRpbWF0aWthbiBzZWNhcmEgYXV0b21hdGlrIHNlbWFzYSBwZXJhbnRpIGFuZGEgc2VkYW5nIGRpY2FzLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IktlcGVudGluZ2FuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJEaXNla2F0OiBKYW5nYW4gc2VrYWxpLWthbGkgdHVuanVra2FuIHBlbWJlcml0YWh1YW4gaW5pIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IlJlbmRhaDogVHVuanVra2FuIHBhZGEgYmFoYWdpYW4gYmF3YWggc2VuYXJhaSBwZW1iZXJpdGFodWFuIHNlY2FyYSBzZW55YXAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+IkJpYXNhOiBUdW5qdWtrYW4gcGVtYmVyaXRhaHVhbiBpbmkgc2VjYXJhIHNlbnlhcCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iVGluZ2dpOiBUdW5qdWtrYW4gcGFkYSBiYWhhZ2lhbiBhdGFzIHNlbmFyYWkgcGVtYmVyaXRhaHVhbiBkYW4gYnVueWlrYW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iU2VnZXJhOiBJbnRhaSBwYWRhIHNrcmluIGRhbiBidW55aWthbiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+U2VsYW1hICUxJGQgbWluaXQgKHNlaGluZ2dhIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlNlbGFtYSBzYXR1IG1pbml0IChzZWhpbmdnYSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLW15LXJNTS9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCmluZGV4IGU4MTc4ZTMuLjMzOTNlMTIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i4YCa4YCB4YCvIOGAnuGAseGArOGAt+GAleGAreGAkOGAuuGAm+GAlOGAuiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4i4YGJ4YGJ4YGJKyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLhgKHhgIDhgLzhgLHhgKzhgIThgLrhgLjhgKHhgJvhgKzhgJnhgLvhgKzhgLgg4YCd4YC+4YCA4YC64YCR4YCs4YC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i4YCh4YCU4YC54YCQ4YCb4YCs4YCa4YC64YCA4YCE4YC64YC44YCZ4YC+4YCvIOGAheGAlOGAheGAuihTYWZlIG1vZGUpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZMKg4YCF4YCU4YCF4YC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLhgIDhgK3hgK/hgJrhgLrhgJvhgLHhgLgiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuGAluGAvOGAkOGAuuGAgeGAvOGAhOGAuuGAuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i4YCA4YCw4YC44YCB4YC84YCE4YC64YC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iUGFzdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IuGAheGArOGAnuGArOGAuOGAoeGAkOGAreGAr+GAhOGAuuGAuCDhgIDhgLDhgLjhgJHhgIrhgLfhgLrhgJXhgKsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuGAoeGAheGArOGAuOGAkeGAreGAr+GAgeGAvOGAhOGAuuGAuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLhgJbhgLvhgIDhgLrhgJXhgIXhgLrhgJvhgJThgLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTOGAoeGArOGAuCDhgIDhgLDhgLjhgIHhgLzhgIThgLrhgLgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLhgIXhgKzhgJ7hgKzhgLgg4YCb4YC94YCx4YC44YCb4YCU4YC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLhgJXhgLzhgJThgLrhgJbhgLvhgIDhgLrhgJvhgJThgLoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuGAkeGAleGAuuGAnOGAr+GAleGAuuGAleGAqyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLhgIXhgKzhgJDhgK3hgK/hgJvhgL3hgLHhgLjhgIHhgLvhgJrhgLrhgJnhgL7hgK8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4YCh4YCY4YCt4YCT4YCs4YCU4YC64YCR4YCyIOGAkeGAiuGAt+GAuuGAleGAqyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i4YCW4YC74YCA4YC64YCV4YCF4YC64YCb4YCU4YC6Ijwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuGAlOGAseGArOGAgOGAuuGAgeGAtuGAleGAvOGAseGArOGAhOGAuuGAuOGAgeGAvOGAhOGAuuGAuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuGAoeGAgOGAvOGAseGArOGAhOGAuuGAuOGAgOGAvOGArOGAuOGAgeGAu+GAgOGAuiDhgJThgKzhgLjhgJDhgLHhgKzhgIThgLrhgJ7hgLAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuGAoeGAgeGAvOGAseGAoeGAlOGAsSDhgIXhgK7hgJnhgLbhgJXhgLHhgLjhgJ7hgLAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLhgJ7hgJDhgK3hgJXhgLHhgLjhgIHhgLvhgIDhgLog4YCh4YCA4YCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4YCW4YC94YCE4YC34YC64YCR4YCs4YC44YCV4YCr4YCe4YCK4YC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+4YCZ4YC+VlBO4YCh4YCc4YCv4YCV4YC64YCc4YCv4YCV4YC64YCU4YCx4YCe4YCK4YC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4YCA4YC94YCU4YC64YCb4YCA4YC6IOGAkeGAreGAlOGAuuGAuOGAnuGAreGAmeGAuuGAuOGAm+GAlOGAuiDhgJDhgK3hgK/hgLfhgJHhgK3hgJXhgKsiPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4YCe4YCE4YC34YC64YCF4YCu4YCZ4YC24YCB4YCU4YC34YC64YCB4YC94YCy4YCe4YCw4YCZ4YC+IOGAoeGAhuGAhOGAt+GAuuGAmeGAvOGAvuGAhOGAt+GAuuGAkeGArOGAuOGAleGAq+GAnuGAiuGAuuGBiyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i4YCe4YCE4YC34YC6IOGAoeGAgOGAuuGAkuGAmeGAhOGAuuGAoeGArOGAuCDhgJbhgLvhgIDhgLrhgJXhgIXhgLrhgJvhgJThgLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuGAmOGAgOGAuuGAkeGAm+GAruGAnuGAgOGAuuGAkOGAmeGAuuGAuCDhgIDhgLzhgKzhgJvhgL7hgIrhgLrhgIHhgLbhgJvhgJThgLrhgYog4YCY4YCA4YC64YCR4YCb4YCu4YCh4YCs4YC44YCR4YCt4YCU4YC64YC44YCe4YCK4YC6IOGAnuGAhOGAt+GAuuGAgOGAreGAm+GAreGAmuGArOGBjyDhgIbhgLHhgKzhgIThgLrhgJvhgL3hgIDhgLrhgIHhgLvhgIDhgLrhgIDhgK3hgK8gIOGAnOGAu+GAvuGAseGArOGAt+GAleGAseGAuOGAleGAvOGAruGAuCDhgJDhgK/hgJThgLrhgIHhgKvhgJnhgL7hgK/hgYog4YCQ4YCK4YC64YCU4YCx4YCb4YCs4YCd4YCU4YC64YCG4YCx4YCs4YCE4YC64YCZ4YC+4YCv4YCZ4YC74YCs4YC44YCU4YC+4YCE4YC34YC64YGKIOGAlOGAseGArOGAgOGAuuGAgeGAtuGAkuGAseGAkOGArOGAoeGAmeGAu+GArOGAuOGAheGAr+GAgOGAreGAryDhgIDhgJThgLfhgLrhgJ7hgJDhgLrhgJXhgLHhgLjhgY/hgYsg4YCF4YCE4YC34YC64YCc4YCv4YCV4YC64YCV4YCx4YC44YCb4YCc4YCx4YC34YCb4YC+4YCt4YCe4YCK4YC34YC6IOGAoeGAruGAuOGAmeGAseGAuOGBiiDhgIXhgKzhgJXhgK3hgK/hgLfhgIHhgLzhgIThgLrhgLjhgJThgL7hgIThgLfhgLrhgYog4YCh4YCB4YC84YCs4YC44YCh4YCV4YCc4YCu4YCA4YCx4YC44YCb4YC+4YCE4YC64YC44YCZ4YC74YCs4YC44YCA4YCt4YCvIOGBjuGAhOGAuuGAuOGAkOGAreGAr+GAt+GAoeGArOGAuCDhgJ7hgIThgLog4YCW4YC94YCE4YC34YC64YCZ4YC+4YCe4YCsIOGAoeGAhuGAhOGAt+GAuuGAmeGAvOGAvuGAhOGAt+GAuuGAmeGAveGAmeGAuuGAuOGAmeGAtuGAmeGAiuGAuuGAluGAvOGAheGAuuGBj+GBiyBcblxuIOGAgOGAreGAm+GAreGAmuGArOGAoeGArOGAuCDhgKHhgKzhgLjhgJ7hgL3hgIThgLrhgLjhgJThgLHhgIXhgInhgLog4YCY4YCA4YC64YCR4YCb4YCu4YCh4YCs4YC44YCR4YCt4YCU4YC64YC44YCh4YCs4YC4IOGAoeGAnOGAreGAr+GAoeGAnOGAu+GAseGArOGAgOGAuiDhgJXhgK3hgJDhgLrhgJHhgKzhgLjhgJ7hgIrhgLrhgYsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLhgKHhgJvhgLHhgLjhgJXhgKvhgJnhgL7hgK8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuGAleGAreGAkOGAuuGAhuGAreGAr+GAt+GAkeGArOGAuC0g4YCk4YCe4YCQ4YCt4YCV4YCx4YC44YCB4YC74YCA4YC64YCZ4YC74YCs4YC44YCA4YCt4YCvIOGAmOGAmuGAuuGAkOGAseGArOGAt+GAmeGAviDhgJnhgJXhgLzhgJXhgKvhgJThgL7hgIThgLfhgLoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i4YCU4YCt4YCZ4YC34YC6LSDhgJDhgK3hgJDhgLrhgIbhgK3hgJDhgLrhgIXhgL3hgKwg4YCe4YCQ4YCt4YCV4YCx4YC44YCB4YC74YCA4YC64YCZ4YC74YCs4YC44YGPIOGAheGArOGAm+GAhOGAuuGAuCDhgKHhgLHhgKzhgIDhgLrhgJXhgK3hgK/hgIThgLrhgLjhgJnhgL7hgKwg4YCV4YC84YCV4YCrIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJcJ+GAleGAr+GAtuGAmeGAvuGAlOGAui0g4YCk4YCe4YCQ4YCt4YCV4YCx4YC44YCB4YC74YCA4YC64YCZ4YC74YCs4YC44YCA4YCt4YCvIOGAkOGAreGAkOGAuuGAhuGAreGAkOGAuuGAheGAveGArCDhgJXhgLzhgJXhgKsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuGAmeGAvOGAhOGAt+GAuuGAmeGArOGAuC0g4YCe4YCQ4YCt4YCV4YCx4YC44YCB4YC74YCA4YC64YCZ4YC74YCs4YC44YGPIOGAheGArOGAm+GAhOGAuuGAuOGAkeGAreGAleGAuuGAmeGAvuGArCDhgJXhgLzhgJzhgLvhgIDhgLog4YCh4YCe4YC24YCZ4YC84YCK4YC64YCV4YCx4YC44YCV4YCrIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuGAoeGAm+GAseGAuOGAgOGAvOGAruGAuC0gOiDhgJnhgLvhgIDhgLrhgJThgL7hgKzhgJXhgLzhgIThgLrhgJnhgL7hgKwg4YCV4YC84YCV4YCx4YC44YCc4YC74YCA4YC6IOGAoeGAnuGAtuGAmeGAvOGAiuGAuuGAleGAseGAuOGAleGAqyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCDhgJnhgK3hgJThgIXhgLrhgJDhgL3hgIThgLogKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+4YCh4YCR4YCtKTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuGAkOGAheGAuuGAmeGAreGAlOGAheGAuuGAkOGAveGAhOGAuiAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4g4YCh4YCR4YCtKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sCmluZGV4IDAzM2M1NDEuLmUxYWQ1NjUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkzDpXMgbsOlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IklubmhvbGRldCBlciBza2p1bHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJTaWtrZXJtb2R1cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQtc3lzdGVtIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXJzb25saWciPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IktsaXBwIHV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3BpZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJMaW0gaW5uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJMaW0gaW5uIHNvbSByZW4gdGVrc3QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IkVyc3RhdHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iU2xldHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGllciBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJNYXJrZXIgdGVrc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkFuZ3JlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJVdGbDuHIgbGlrZXZlbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJNZXJrZXQgdGVrc3QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iTGVnZyB0aWwgaSBvcmRsaXN0ZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IlNsZXR0Ijwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IlZlbGcgYmFrZ3J1bm5zYmlsZGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJWYXJzZWxseXR0ZXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iQmV0aW5nZWxzZXNsZXZlcmFuZMO4ciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IlZhcnNlbGFzc2lzdGVudCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGVyIGFrdGl2ZXJ0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIGVyIGFrdGl2ZXJ0IGF2IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlRyeWtrIGZvciDDpSBhZG1pbmlzdHJlcmUgbmV0dHZlcmtldC4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iT3BwZGF0ZXJ0IGF2IGFkbWluaXN0cmF0b3JlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iU2xldHRldCBhdiBhZG1pbmlzdHJhdG9yZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IkZvciDDpSBmb3JsZW5nZSBiYXR0ZXJpbGV2ZXRpZGVuIHJlZHVzZXJlciBiYXR0ZXJpc3BhcmVyZW4geXRlbHNlbiB0aWwgZW5oZXRlbiBkaW4gb2cgYmVncmVuc2VyIHZpYnJlcmluZywgcG9zaXNqb25zdGplbmVzdGVyIG9nIG1lc3RlcGFydGVuIGF2IGJha2dydW5uc2RhdGFlbmUuIEUtcG9zdCwgc2VuZGluZyBhdiBtZWxkaW5nZXIgb2cgYW5kcmUgYXBwZXIgc29tIGVyIGF2aGVuZ2lnIGF2IHN5bmtyb25pc2VyaW5nLCBvcHBkYXRlcmVzIGthbnNramUgaWtrZSBtZWQgbWluZHJlIGR1IMOlcG5lciBkZW0uXG5cbkJhdHRlcmlzcGFyaW5nIHNsw6VzIGF2IGF1dG9tYXRpc2sgbsOlciBlbmhldGVuIGxhZGVyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IlZpa3RpZ2hldCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxva2tlcnQ6IEFsZHJpIHZpcyBkaXNzZSB2YXJzbGVuZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJMYXZ0OiBWaXMgbmVkZXJzdCBpIHZhcnNlbGxpc3RlbiB1dGVuIGx5ZCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsdDogVmlzIGRpc3NlIHZhcnNsZW5lIHV0ZW4gbHlkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJIw7h5dDogVmlzIMO4dmVyc3QgaSB2YXJzZWxsaXN0ZW4gbWVkIGx5ZCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJIYXN0ZXI6IFZpc2VzIGZvcnQgcMOlIHNramVybWVuIG1lZCBseWQiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPkkgJTEkZCBtaW51dHRlciAodGlsIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkkgMSBtaW51dHQgKHRpbCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLW5lLXJOUC9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmUtck5QL3N0cmluZ3MueG1sCmluZGV4IGVjMTNlYmIuLmY5NDIyMmIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmUtck5QL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmUtck5QL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i4KSF4KSsIOCkrOCkqOCljeCkpiDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IuClr+Clr+ClrysiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4KSy4KWB4KSV4KWH4KSV4KS+IOCkuOCkvuCkruCkvuCkl+CljeCksOClgOCkueCksOClgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuCkuOClgeCksOCkleCljeCkt+Ckv+CkpCDgpK7gpYvgpKEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiLgpI/gpKjgpY3gpKHgpY3gpLDgpYvgpIfgpKEg4KSq4KWN4KSw4KSj4KS+4KSy4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLgpLXgpY3gpK/gpJXgpY3gpKTgpL/gpJfgpKQiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuCkleCkvuCkn+CljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i4KSq4KWN4KSw4KSk4KS/4KSy4KS/4KSq4KS/IOCkrOCkqOCkvuCkieCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuCkn+CkvuCkgeCkuOCljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4KS44KS+4KSu4KS+4KSo4KWN4KSvIOCkquCkvuCkoOCkleCliyDgpLDgpYLgpKrgpK7gpL4g4KSf4KS+4KSB4KS44KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLgpLXgpL/gpLjgpY3gpKXgpL7gpKrgpKgg4KSX4KSw4KWN4KSo4KWB4KS54KWL4KS44KWN4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuCkruClh+Ckn+CljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMIOCkleCliyDgpKrgpY3gpLDgpKTgpL/gpLLgpL/gpKog4KSX4KSw4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i4KSq4KS+4KSgIOCkmuCkr+CkqCDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuCkheCkqOCkoeClgiDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuCksOCkv+CkoeClgiDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i4KSq4KS+4KSgIOCkmuCkr+CkqOCkpOCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLgpLbgpKzgpY3gpKbgpJXgpYvgpLbgpK7gpL4g4KSl4KSq4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLgpK7gpYfgpJ/gpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CkBAIC0xMTEzLDYgKzExMTcsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4KS14KS+4KSy4KSq4KWH4KSq4KSwIOCkquCksOCkv+CkteCksOCljeCkpOCkqCDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLgpLjgpYLgpJrgpKjgpL4g4KS44KWB4KSo4KWN4KSo4KWH4KS14KS+4KSy4KS+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLgpLjgpLDgpY3gpKQg4KSq4KWN4KSw4KSm4KS+4KSv4KSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i4KS44KWC4KSa4KSo4KS+IOCkuOCkueCkvuCkr+CklSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIOCkuOCkleCljeCksOCkv+CkryDgpK3gpK/gpYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+4KSm4KWN4KS14KS+4KSw4KS+IOCkuOCkleCljeCksOCkv+CkryDgpJfgpLDgpL/gpI/gpJXgpYsg4KS54KWLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4KSo4KWH4KSf4KS14KSw4KWN4KSVIOCkquCljeCksOCkrOCkqOCljeCkpyDgpJfgpLDgpY3gpKgg4KSb4KWB4KSo4KWB4KS54KWL4KS44KWN4KWkIjwvc3RyaW5nPgpAQCAtMTQ0NiwxMiArMTQ1MSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IuCkpOCkquCkvuCkiOCkgeCkleCliyDgpKrgpY3gpLDgpLbgpL7gpLjgpJXgpKbgpY3gpLXgpL7gpLDgpL4g4KSF4KSm4KWN4KSv4KS+4KS14KSn4KS/4KSVIOCkl+CksOCkv+Ckj+CkleCliyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i4KSk4KSq4KS+4KSI4KSB4KSV4KWLIOCkquCljeCksOCktuCkvuCkuOCkleCkpuCljeCkteCkvuCksOCkviDgpLngpJ/gpL7gpIfgpI/gpJXgpYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuCkrOCljeCkr+CkvuCkn+CljeCksOClgOCkleCliyDgpIbgpK/gpYEg4KS44KWB4KSn4KS+4KSw4KWN4KSoLCDgpKzgpY3gpK/gpL7gpJ/gpY3gpLDgpYAg4KS44KSC4KSw4KSV4KWN4KS34KSV4KSy4KWHIOCkpOCkquCkvuCkiOCkgeCkleCliyDgpK/gpKjgpY3gpKTgpY3gpLDgpJXgpYsg4KSV4KS+4KSw4KWN4KSv4KS44KSu4KWN4KSq4KS+4KSm4KSoIOCkmOCkn+CkvuCkieCkgeCkmyDgpLAg4KSt4KS+4KSH4KSs4KWN4KSw4KWH4KS44KSoLCDgpLjgpY3gpKXgpL7gpKgg4KS44KWH4KS14KS+IOCksCDgpKzgpLngpYHgpLjgpILgpJbgpY3gpK/gpJUg4KSq4KWD4KS34KWN4KSg4KSt4KWC4KSu4KS/IOCkoeClh+Ckn+CkviDgpLjgpYDgpK7gpL/gpKQg4KSX4KSw4KWN4KSm4KSb4KWkIOCkh+CkruClh+Cksiwg4KS44KSo4KWN4KSm4KWH4KS2LCDgpLAg4KSF4KSo4KWN4KSvIOCkheCkqOClgeCkquCljeCksOCkr+Cli+Ckl+CkueCksOClgiDgpJzgpYHgpKgg4KS44KS/4KSZ4KWN4KSV4KSu4KS+IOCkreCksCDgpKrgpLDgpY3gpJvgpKjgpY0g4KSF4KSm4KWN4KSv4KS+4KS14KSn4KS/4KSVIOCkqOCkueClgeCkqCDgpLjgpJXgpY3gpJvgpKjgpY0g4KSc4KSs4KS44KSu4KWN4KSuIOCkpOCkquCkvuCkiOCkgSDgpKTgpL/gpKjgpYDgpLngpLDgpYLgpLLgpL7gpIgg4KSW4KWL4KSy4KWN4KSo4KWB4KS54KWB4KSo4KWN4KSoXG5cbiDgpKzgpY3gpK/gpL7gpJ/gpY3gpLDgpYAg4KS44KSC4KSw4KSV4KWN4KS34KSVIOCkuOCljeCkteCkpDog4KSo4KS/4KS44KWN4KSV4KWD4KSvIOCkueClgeCkqOCljeCkmyDgpJzgpKwg4KSk4KSq4KS+4KSI4KSB4KSV4KWLIOCkr+CkqOCljeCkpOCljeCksCDgpJrgpL7gpLDgpY3gpJwg4KS54KWB4KSB4KSm4KWIIOCkueClgeCkqOCljeCkm+ClpCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IuCkruCkueCkpOCljeCkpOCljeCktSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i4KSw4KWL4KSV4KS/4KSP4KSV4KS+OiDgpK/gpYAg4KS44KWC4KSa4KSo4KS+4KS54KSw4KWCIOCkleCkueCkv+CksuCljeCkr+CliCDgpKjgpKbgpYfgpJbgpL7gpIngpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i4KSo4KWN4KSv4KWC4KSoOiDgpJrgpYHgpKrgpJrgpL7gpKog4KS44KWC4KSa4KSo4KS+IOCkuOClguCkmuClgOCkleCliyDgpKvgpYfgpKbgpK7gpL4g4KSm4KWH4KSW4KS+4KSJ4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLgpLjgpL7gpK7gpL7gpKjgpY3gpK86IOCkmuClgeCkquCkmuCkvuCkqiDgpK/gpYAg4KS44KWC4KSa4KSo4KS+4KS54KSw4KWCIOCkpuClh+CkluCkvuCkieCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i4KSJ4KSa4KWN4KSaOiDgpLjgpYLgpJrgpKjgpL4g4KS44KWC4KSa4KWA4KSV4KWLIOCktuClgOCksOCljeCkt+CkruCkviDgpKbgpYfgpJbgpL7gpIngpKjgpYHgpLngpYvgpLjgpY0g4KSwIOCkhuCkteCkvuCknCDgpKjgpL/gpJXgpL7gpLLgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i4KSc4KSw4KWB4KSw4KWAOiDgpLjgpY3gpJXgpY3gpLDgpL/gpKjgpK7gpL4g4KSd4KSy4KSV4KWN4KSVIOCkueClh+CksOCljeCkqOClgeCkueCli+CkuOCljSDgpLAg4KSG4KS14KS+4KScIOCkqOCkv+CkleCkvuCksuCljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+ICUxJGQg4KSu4KS/4KSo4KWH4KSf4KSV4KWLIOCksuCkvuCkl+CkvyAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4g4KS44KSu4KWN4KSuKTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuCkj+CklSDgpK7gpL/gpKjgpYfgpJ/gpJXgpYsg4KSy4KS+4KSX4KS/ICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPiDgpLjgpK7gpY3gpK4pPC9pdGVtPgpAQCAtMTUxNyw2ICsxNTE2LDYgQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRkPC94bGlmZjpnPiDgpJrgpK/gpKgg4KSX4KSw4KS/4KSv4KWLPC9pdGVtPgogICAgIDwvcGx1cmFscz4KICAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfbm90aWZpY2F0aW9uX3RvcGljX2xhYmVsIiBtc2dpZD0iMjI3NTg2MTQ1NzkxODcwODI5Ij4i4KS14KS/4KS14KS/4KSnIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+IuCkpOCkquCkvuCkiOCkguCksuClhyDgpK/gpYAg4KS44KWC4KSa4KSo4KS+4KS54KSw4KWCIOCkruCkueCkpOCljeCkpOCljeCktSDgpLjgpYfgpJ8g4KSX4KSw4KWN4KSo4KWB4KS54KWB4KSo4KWN4KSb4KWkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+IuCkpOCkquCkvuCkiOCkguCksuClhyDgpK/gpYAg4KS44KWC4KSa4KSo4KS+4KS54KSw4KWC4KSV4KWLIOCkruCkueCkpOCljeCkpOCljeCktSDgpLjgpYfgpJ8g4KSX4KSw4KWN4KSo4KWB4KS54KWB4KSo4KWN4KSb4KWkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3BlcnNvbiIgbXNnaWQ9IjkxNjAxMzM1OTcyNjI5MzgyOTYiPiLgpK/gpLjgpK7gpL4g4KS44KSZ4KWN4KSy4KSX4KWN4KSoIOCkreCkj+CkleCkviDgpK7gpL7gpKjgpL/gpLjgpLngpLDgpYLgpJXgpYsg4KSV4KS+4KSw4KSj4KSy4KWHIOCkl+CksOCljeCkpuCkviDgpK/gpYsg4KSu4KS54KSk4KWN4KS14KSq4KWC4KSw4KWN4KSjIOCkm+ClpCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKaW5kZXggZDMwZDgzNi4uMWJlZjk1ZCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iTnUgdmVyZ3JlbmRlbGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkgKyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJJbmhvdWQgdmVyYm9yZ2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iVmVpbGlnZSBtb2R1cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQtc3lzdGVlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29vbmxpamsiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IktuaXBwZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcGnDq3JlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IlBsYWtrZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IlBsYWtrZW4gYWxzIHBsYXR0ZSB0ZWtzdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iVmVydmFuZ2VuLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IlZlcndpamRlcmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJVUkwga29wacOrcmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iVGVrc3Qgc2VsZWN0ZXJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iT25nZWRhYW4gbWFrZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+Ik9wbmlldXciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVGVrc3RzZWxlY3RpZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJUb2V2b2VnZW4gYWFuIHdvb3JkZW5ib2VrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJWZXJ3aWpkZXJlbiI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJBY2h0ZXJncm9uZCB3aWp6aWdlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ikxpc3RlbmVyIHZvb3IgbWVsZGluZ2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJQcm92aWRlciB2YW4gdm9vcndhYXJkZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJNZWxkaW5nc2Fzc2lzdGVudCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGlzIGdlYWN0aXZlZXJkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIHdvcmR0IGdlYWN0aXZlZXJkIGRvb3IgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iUmFhayBhYW4gb20gaGV0IG5ldHdlcmsgdGUgYmVoZXJlbi4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iR2XDvHBkYXRldCBkb29yIGplIGJlaGVlcmRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iVmVyd2lqZGVyZCBkb29yIGplIGJlaGVlcmRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iQWNjdWJlc3BhcmluZyBiZXBlcmt0IGRlIHByZXN0YXRpZXMgdmFuIGplIGFwcGFyYWF0LCBkZSB0cmlsc3RhbmQsIGxvY2F0aWVzZXJ2aWNlcyBlbiBkZSBtZWVzdGUgYWNodGVyZ3JvbmRnZWdldmVucyBvbSBkZSBnZWJydWlrc2R1dXIgdmFuIGRlIGFjY3UgdGUgdmVybGVuZ2VuLlxuXG5BY2N1YmVzcGFyaW5nIHdvcmR0IGF1dG9tYXRpc2NoIHVpdGdlc2NoYWtlbGQgdGVyd2lqbCBqZSBhcHBhcmFhdCB3b3JkdCBvcGdlbGFkZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iQmVsYW5nIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJHZWJsb2trZWVyZDogZGV6ZSBtZWxkaW5nZW4gbm9vaXQgd2VlcmdldmVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkxhYWc6IHpvbmRlciBnZWx1aWQgb25kZXIgYWFuIGRlIGxpanN0IG1ldCBtZWxkaW5nZW4gd2VlcmdldmVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWFsOiBkZXplIG1lbGRpbmdlbiB6b25kZXIgZ2VsdWlkIHdlZXJnZXZlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iSG9vZzogYm92ZW4gYWFuIGRlIGxpanN0IG1ldCBtZWxkaW5nZW4gd2VlcmdldmVuIGVuIGdlbHVpZCBsYXRlbiBob3JlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnQ6IG9wIGhldCBzY2hlcm0gd2VlcmdldmVuIGVuIGdlbHVpZCBsYXRlbiBob3JlbiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCBtaW51dGVuICh0b3QgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+RcOpbiBtaW51dXQgKHRvdCA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXBhLXJJTi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sCmluZGV4IDA2YjU0OWUuLjE2OGM2NmYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i4Ki54KmB4KijIOCosuCpjOColSDgqJXgqLDgqYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4Ki44Kiu4Kmx4KiX4Kiw4KmA4KiG4KiCIOCosuCpgeColeCovuCoiOCohuCogiDgqJfgqIjgqIbgqIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLgqLjgqYHgqLDgqbHgqJbgqL/gqIXgqKQg4Kiu4KmL4KihIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCBTeXN0ZW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IuCoqOCov+CpseConOCpgCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i4KiV4Kmx4Kif4KmLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLgqJXgqL7gqKrgqYAg4KiV4Kiw4KmLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i4Kiq4KmH4Ki44KifIOColeCosOCpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4Ki44Kin4Ki+4Kiw4KioIOCosuCov+ColuCopCDgqKbgqYcg4Kik4KmM4KiwIFwn4Kik4KmHIOCoquCph+CouOConyDgqJXgqLDgqYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuCorOCopuCosuCpi+KApiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLgqK7gqL/gqJ/gqL7gqJMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IlVSTCDgqJXgqL7gqKrgqYAg4KiV4Kiw4KmLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i4Kif4KmI4KiV4Ki44KifIOComuCpgeCoo+CpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i4Kiq4Ki54Ki/4Kiy4Ki+4KiCIOCoteCosOCol+CoviDgqJXgqLDgqYsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuCoruCpgeCpnC3gqJPgqLngqYAg4KiV4Kiw4KmLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IuCon+CpiOColeCouOConyDgqJrgqYvgqKMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4Ki44Ki84Kis4Kim4KiV4KmL4Ki44Ki8IOCoteCov+CpseComiDgqJzgqYvgqZzgqYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IuCoruCov+Con+CovuCokyI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLgqLXgqL7gqLLgqKrgqYfgqKrgqLAg4Kis4Kim4Kiy4KmLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i4Ki44KmC4Kia4Kio4Ki+IOCouOCpgeCoo+CoqCDgqLXgqL7gqLLgqL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuCouOCopeCov+CopOCpgCDgqKrgqY3gqLDgqKbgqL7gqKTgqL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLgqLjgqYLgqJrgqKjgqL4g4Ki44Ki54Ki+4KiH4KiVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4Ki44KiV4Ki/4Kiw4Ki/4KiGIOColeCpgOCopOCoviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g4Kiw4Ki+4Ki54KmA4KiCIOCouOColeCov+CosOCov+CohiDgqKzgqKPgqL7gqIfgqIYg4KiX4Ki/4KiGIOCoueCpiCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuCoqOCpiOCon+CoteCosOColSDgqLXgqL/gqLXgqLjgqKXgqL/gqKQg4KiV4Kiw4KioIOCosuCoiCDgqJvgqYvgqLngqLXgqYvgpaQiPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4Kik4KmB4Ki54Ki+4Kih4KmHIOCoquCpjeCosOCouOCovOCovuCouOColSDgqKbgqYHgqIbgqLDgqL4g4KiF4Kiq4Kih4KmH4KifIOColeCpgOCopOCoviDgqJfgqL/gqIYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IuCopOCpgeCoueCovuCooeCphyDgqKrgqY3gqLDgqKzgqbDgqKfgqJUg4Ki14Kmx4Kiy4KmL4KiCIOCoruCov+Con+CovuCoh+CohiDgqJfgqL/gqIYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuCorOCpiOCon+CosOCpgCDgqLjgqK7gqLDgqbHgqKXgqL4g4Kio4KmC4KmwIOCorOCov+CoueCopOCosCDgqLjgqLngqL7gqIfgqKTgqL4g4KiV4Kiw4KioIOCosuCoiCwg4Kis4KmI4Kif4Kiw4KmAIOCouOCph+CoteCosCDgqKTgqYHgqLngqL7gqKHgqYAg4Kih4Ki/4Ki14Ki+4KiI4Ki4IOCopuCoviDgqKrgqY3gqLDgqKbgqLDgqLjgqLzgqKgg4KiY4Kif4Ki+4KiJ4KiC4Kim4Ki+IOCoueCpiCDgqIXgqKTgqYcg4Ki14Ki+4KiI4Kis4KmN4Kiw4KmH4Ki44Ki84KioLCDgqKjgqL/gqLDgqKfgqL7gqLDgqL/gqKQg4Ki44Kil4Ki+4KioIOCouOCph+CoteCovuCoteCovuCogiDgqIXgqKTgqYcg4Kic4Ki84Ki/4KiG4Kim4Ki+4Kik4KiwIOCoquCov+Com+Cpi+ColeCpnCDgqKHgqL7gqJ/gqL4g4Kio4KmC4KmwIOCouOCpgOCoruCov+CopCDgqJXgqLDgqKbgqL4g4Ki54KmI4KWkIOCoiOCoruCph+Cosiwg4Kiu4KmI4Ki44KmH4Kic4Ki/4Kmw4KiXIOCoheCopOCphyDgqLngqYvgqLAg4KiQ4Kiq4Ki4LCDgqJzgqYsg4Ki44Ki/4Kmw4KiV4Ki/4Kmw4KiXIOCopOCphyDgqKjgqL/gqLDgqK3gqLAg4Ki54KioLCDgqIngqLkg4KiJ4Kim4KmL4KiCIOCopOCpseColSDgqIXgqKrgqKHgqYfgqJ8g4Kio4Ki54KmA4KiCIOColeCpgOCopOCphyDgqJzgqL4g4Ki44KiV4Kim4KmHIOConOCopuCpi+CogiDgqKTgqbHgqJUg4Kik4KmB4Ki44KmA4KiCIOCoieCoueCoqOCovuCogiDgqKjgqYLgqbAg4KiW4KmL4Kiy4KmN4Ki54Kim4KmHIOCoqOCoueCpgOCoguClpFxuXG7gqKzgqYjgqJ/gqLDgqYAg4Ki44KmH4Ki14KiwIOCohuCon+Cpi+CoruCpiOCon+Cov+ColeCosuCpgCDgqKzgqbDgqKYg4Ki54KmB4Kmw4Kim4Ki+IOCoueCpiCDgqJzgqKbgqYvgqIIg4Kik4KmB4Ki54Ki+4Kih4KmAIOCooeCov+CoteCovuCoiOCouCDgqJrgqL7gqLDgqJwg4Ki54KmLIOCosOCoueCpgCDgqLngqYHgqbDgqKbgqYAg4Ki54KmI4KWkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i4Kiu4Ki54Kmx4Kik4Kik4Ki+Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLgqKzgqLLgqYzgqJUg4KiV4KmA4Kik4Ki+OiDgqIfgqLkg4Ki44KmC4Kia4Kio4Ki+4Ki14Ki+4KiCIOColeCopuCphyDgqKjgqL4g4Ki14Ki/4KiW4Ki+4KiTIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuComOCpseConzog4Kia4KmB4Kmx4Kiq4Kia4Ki+4KiqIOCoouCpsOColyDgqKjgqL7gqLIg4Ki44KmC4Kia4Kio4Ki+IOCouOCpguComuCpgCDgqKbgqYcg4Ki54KmH4Kig4Ki+4KiCIOCoteCov+ColuCovuCokyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4Ki44Kin4Ki+4Kiw4KioOiDgqIfgqLkg4Ki44KmC4Kia4Kio4Ki+4Ki14Ki+4KiCIOComuCpgeCpseCoquComuCovuCoqiDgqKLgqbDgqJcg4Kio4Ki+4KiyIOCoteCov+ColuCovuCokyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i4Ki14Kmx4KinOiDgqLjgqYLgqJrgqKjgqL7gqLXgqL7gqIIg4Ki44KmC4Kia4KmAIOCopuCphyDgqLjgqL/gqJbgqLAgXCfgqKTgqYcg4Ki14Ki/4KiW4Ki+4KiTIOCoheCopOCphyDgqIbgqLXgqL7gqJzgqLwg4KiV4Kiw4KmLIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuConOCovOCosOCpguCosOCpgDog4Ki44KiV4Kiw4KmA4KioIFwn4Kik4KmHIOConeCovuCopOCpgCDgqK7gqL7gqLDgqYsg4KiF4Kik4KmHIOCohuCoteCovuConOCovCDgqJXgqLDgqYsiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj4lMSRkIOCoruCov+CpsOCon+CovuCogiDgqKTgqbHgqJUgKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCopOCpseColSkgPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkIOCoruCov+CpsOCon+CovuCogiDgqKTgqbHgqJUgKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCopOCpseColSk8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbAppbmRleCA5M2VhOWY0Li44MGVmN2RmIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKQEAgLTIyNSw2ICsyMjUsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJaYWJsb2t1aiB0ZXJheiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iJmd0Ozk5OSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJUcmXFm2NpIHVrcnl0ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlRyeWIgYXdhcnlqbnkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJTeXN0ZW0gQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iT3NvYmlzdGUiPC9zdHJpbmc+CkBAIC04NjgsMTAgKzg2OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+Ild5dG5paiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iS29waXVqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iV2tsZWoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IldrbGVqIGpha28gend5a8WCeSB0ZWtzdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iWmFzdMSFcCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJVc3XFhCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iS29waXVqIGFkcmVzIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+Ilphem5hY3ogdGVrc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkNvZm5paiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUG9uw7N3Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+Ilphem5hY3phbmllIHRla3N0dSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJEb2RhaiBkbyBzxYJvd25pa2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IlVzdcWEIjwvc3RyaW5nPgpAQCAtMTEyMSw2ICsxMTI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IlptaWXFhCB0YXBldMSZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iT2RiaW9ybmlrIHBvd2lhZG9taWXFhCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iRG9zdGF3Y2Egd2FydW5rw7N3Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iQXN5c3RlbnQgcG93aWFkb21pZcWEIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gYWt0eXdueSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+Ik9ic8WCdWdhIHNpZWNpIFZQTiB6b3N0YcWCYSB3xYLEhWN6b25hIHByemV6IGFwbGlrYWNqxJkgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iRG90a25paiwgYWJ5IHphcnrEhWR6YcSHIHNpZWNpxIUuIjwvc3RyaW5nPgpAQCAtMTQ1OCwxMiArMTQ2Myw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+Ilpha3R1YWxpem93YW5lIHByemV6IGFkbWluaXN0cmF0b3JhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJVc3VuacSZdHkgcHJ6ZXogYWRtaW5pc3RyYXRvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IkFieSB3eWTFgnXFvHnEhyBjemFzIHByYWN5IGJhdGVyaWksIE9zemN6xJlkemFuaWUgYmF0ZXJpaSBvZ3JhbmljemEgYWt0eXdub8WbxIcgdXJ6xIVkemVuaWEsIHcgdHltIHdpYnJhY2plLCB1c8WCdWdpIGxva2FsaXphY3lqbmUgaSBwcnpldHdhcnphbmllIHdpxJlrc3pvxZtjaSBkYW55Y2ggdyB0bGUuIFBvY3p0YSwgY3phdCBpIGlubmUgc3luY2hyb25pem93YW5lIGFwbGlrYWNqZSBtb2fEhSBuaWUgYWt0dWFsaXpvd2HEhyBzd29qZWogemF3YXJ0b8WbY2ksIGRvcMOza2kgaWNoIG5pZSBvdHdvcnp5c3ouXG5cbk9zemN6xJlkemFuaWUgYmF0ZXJpaSB3ecWCxIVjemEgc2nEmSBhdXRvbWF0eWN6bmllIHBvZGN6YXMgxYJhZG93YW5pYSB1cnrEhWR6ZW5pYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJXYcW8bm/Fm8SHIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJaYWJsb2tvd2FuYTogbmlnZHkgbmllIHBva2F6dWogdHljaCBwb3dpYWRvbWllxYQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iTmlza2E6IHBva2F6dWogbmEgZG9sZSBsaXN0eSBwb3dpYWRvbWllxYQgYmV6IHN5Z25hxYJ1IGTFundpxJlrb3dlZ28iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbG5hOiBwb2thenVqIHRlIHBvd2lhZG9taWVuaWEgYmV6IHN5Z25hxYJ1IGTFundpxJlrb3dlZ28iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Ild5c29rYTogcG9rYXp1aiBuYSBwb2N6xIV0a3UgbGlzdHkgcG93aWFkb21pZcWEIGkgb2R0d2FyemFqIGTFundpxJlrIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlBpbG5hOiB3ecWbd2lldGxhaiBuYSBla3JhbmllIGkgb2R0d2FyemFqIGTFundpxJlrIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9ImZldyI+UHJ6ZXogJTEkZCBtaW51dHkgKGRvIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJtYW55Ij5QcnpleiAlMSRkIG1pbnV0IChkbyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXB0LXJCUi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCmluZGV4IDM1NTI3OTUuLjExZTA2MGEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iQmxvcXVlYXIgYWdvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IiZndDs5OTkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGXDumRvIG9jdWx0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+Ik1vZG8gZGUgc2VndXJhbsOnYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlNpc3RlbWEgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVzc29hbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iUmVjb3J0YXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IkNvcGlhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IkNvbGFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJDb2xhciBjb21vIHRleHRvIHNpbXBsZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IlN1YnN0aXR1aXIuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iRXhjbHVpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQ29waWFyIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlNlbGVjaW9uYXIgdGV4dG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkRlc2ZhemVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJSZWZhemVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlNlbGXDp8OjbyBkZSB0ZXh0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJBZGljaW9uYXIgYW8gZGljaW9uw6FyaW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IkV4Y2x1aXIiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQWx0ZXJhciBwbGFubyBkZSBmdW5kbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ik91dmludGUgZGUgbm90aWZpY2HDp8O1ZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlByb3ZlZG9yIGRlIGNvbmRpw6fDtWVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iQXNzaXN0ZW50ZSBkZSBub3RpZmljYcOnw6NvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gYXRpdmFkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IkEgVlBOIGVzdMOhIGF0aXZhZGEgcG9yIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlRvcXVlIHBhcmEgZ2VyZW5jaWFyIGEgcmVkZS4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iQXR1YWxpemFkbyBwZWxvIGFkbWluaXN0cmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkV4Y2x1w61kbyBwZWxvIHNldSBhZG1pbmlzdHJhZG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQYXJhIGFqdWRhciBhIG1lbGhvcmFyIGEgZHVyYcOnw6NvIGRhIGJhdGVyaWEsIG8gZWNvbm9taXphZG9yIGRlIGJhdGVyaWEgcmVkdXogbyBkZXNlbXBlbmhvIGUgb3MgbGltaXRlcyBkZSB2aWJyYcOnw6NvIGRvIGRpc3Bvc2l0aXZvLCBvcyBzZXJ2acOnb3MgZGUgbG9jYWxpemHDp8OjbyBlIGEgbWFpb3JpYSBkb3MgZGFkb3MgZGUgc2VndW5kbyBwbGFuby4gRS1tYWlsLCBtZW5zYWdlbnMgZSBvdXRyb3MgYXBsaWNhdGl2b3MgcXVlIGRlcGVuZGVtIGRlIHNpbmNyb25pemHDp8OjbyBuw6NvIHBvZGVtIHNlciBhdHVhbGl6YWRvcywgYSBuw6NvIHNlciBxdWUgdm9jw6ogb3MgYWJyYS5cblxuTyBlY29ub21pemFkb3IgZGUgYmF0ZXJpYSDDqSBkZXNsaWdhZG8gYXV0b21hdGljYW1lbnRlIHF1YW5kbyBvIGRpc3Bvc2l0aXZvIGVzdMOhIHNlbmRvIGNhcnJlZ2Fkby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJJbXBvcnTDom5jaWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb3F1ZWFkYTogbnVuY2EgbW9zdHJhciBlc3NhcyBub3RpZmljYcOnw7VlcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJCYWl4YTogbW9zdHJhciBuYSBwYXJ0ZSBpbmZlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYcOnw7VlcyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IG1vc3RyYXIgZXNzYXMgbm90aWZpY2HDp8O1ZXMgZGUgZm9ybWEgc2lsZW5jaW9zYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iQWx0YTogbW9zdHJhciBuYSBwYXJ0ZSBzdXBlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYcOnw7VlcyBlIGVtaXRpciBzb20iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iVXJnZW50ZTogbW9zdHJhciBwYXJjaWFsbWVudGUgbmEgdGVsYSBlIGVtaXRpciBzb20iPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5Qb3IgJTEkZCBtaW51dG9zIChhdMOpIMOgcyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlBvciAlMSRkIG1pbnV0b3MgKGF0w6kgw6BzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKaW5kZXggZjJlOTQwMi4uZDc2MTMzYSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJCbG9xdWVhciBhZ29yYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250ZcO6ZG8gb2N1bHRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iTW9kbyBzZWd1cm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJTaXN0ZW1hIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlBlc3NvYWwiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IkNvcnRhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iQ29waWFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iQ29sYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IkNvbGFyIGNvbW8gdGV4dG8gc2ltcGxlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iU3Vic3RpdHVpci4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJFbGltaW5hciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iQ29waWFyIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IlNlbGVjaW9uYXIgdGV4dG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkFudWxhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUmVmYXplciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJTZWxlY8Onw6NvIGRlIHRleHRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkFkaWNpb25hciBhbyBkaWNpb27DoXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iRWxpbWluYXIiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQWx0ZXJhciBpbWFnZW0gZGUgZnVuZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJTZXJ2acOnbyBkZSBlc2N1dGEgZGUgbm90aWZpY2HDp8O1ZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IkZvcm5lY2Vkb3IgZGUgY29uZGnDp8OjbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IkFzc2lzdGVudGUgZGUgbm90aWZpY2HDp8O1ZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBhdGl2YWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iQSBWUE4gZm9pIGF0aXZhZGEgcGVsbyA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJUb3F1ZSBwYXJhIGdlcmlyIGEgcmVkZS4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iQXR1YWxpemFkbyBwZWxvIGFkbWluaXN0cmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkVsaW1pbmFkbyBwZWxvIGFkbWluaXN0cmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IlBhcmEgYWp1ZGFyIGEgbWVsaG9yYXIgYSBhdXRvbm9taWEgZGEgYmF0ZXJpYSwgYSBwb3VwYW7Dp2EgZGUgYmF0ZXJpYSByZWR1eiBvIGRlc2VtcGVuaG8gZG8gc2V1IGRpc3Bvc2l0aXZvIGUgbGltaXRhIGEgdmlicmHDp8Ojbywgb3Mgc2VydmnDp29zIGRlIGxvY2FsaXphw6fDo28gZSBhIG1haW9yaWEgZG9zIGRhZG9zIGVtIHNlZ3VuZG8gcGxhbm8uIE8gZW1haWwsIGFzIG1lbnNhZ2VucyBlIG91dHJhcyBhcGxpY2HDp8O1ZXMgcXVlIGRlcGVuZGVtIGRhIHNpbmNyb25pemHDp8OjbyBuw6NvIHBvZGVtIHNlciBhdHVhbGl6YWRvcyBleGNldG8gc2Ugb3MgYWJyaXIuXG5cbkEgcG91cGFuw6dhIGRlIGJhdGVyaWEgZGVzbGlnYS1zZSBhdXRvbWF0aWNhbWVudGUgcXVhbmRvIG8gZGlzcG9zaXRpdm8gZXN0w6EgYSBjYXJyZWdhci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJJbXBvcnTDom5jaWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb3F1ZWFkbzogbnVuY2EgbW9zdHJhciBlc3RhcyBub3RpZmljYcOnw7VlcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJCYWl4bzogbW9zdHJhciBuYSBwYXJ0ZSBpbmZlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYcOnw7VlcyBzZW0gc29tIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IG1vc3RyYXIgZXN0YXMgbm90aWZpY2HDp8O1ZXMgc2VtIHNvbSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iRWxldmFkbzogbW9zdHJhciBuYSBwYXJ0ZSBzdXBlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYcOnw7VlcyBjb20gc29tIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IlVyZ2VudGU6IG1vc3RyYXIgbm8gZWNyw6MgY29tIHNvbSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+RHVyYW50ZSAlMSRkIG1pbnV0b3MgKGF0w6kgw6BzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkR1cmFudGUgdW0gbWludXRvIChhdMOpIMOgcyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbAppbmRleCAzNTUyNzk1Li4xMWUwNjBhIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJCbG9xdWVhciBhZ29yYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iJmd0Ozk5OSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250ZcO6ZG8gb2N1bHRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iTW9kbyBkZSBzZWd1cmFuw6dhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iU2lzdGVtYSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXNzb2FsIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJSZWNvcnRhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iQ29waWFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iQ29sYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IkNvbGFyIGNvbW8gdGV4dG8gc2ltcGxlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iU3Vic3RpdHVpci4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJFeGNsdWlyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJDb3BpYXIgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZWNpb25hciB0ZXh0byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iRGVzZmF6ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IlJlZmF6ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iU2VsZcOnw6NvIGRlIHRleHRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkFkaWNpb25hciBhbyBkaWNpb27DoXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4iRXhjbHVpciI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJBbHRlcmFyIHBsYW5vIGRlIGZ1bmRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iT3V2aW50ZSBkZSBub3RpZmljYcOnw7VlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iUHJvdmVkb3IgZGUgY29uZGnDp8O1ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc3Npc3RlbnRlIGRlIG5vdGlmaWNhw6fDo28iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiBhdGl2YWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iQSBWUE4gZXN0w6EgYXRpdmFkYSBwb3IgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVG9xdWUgcGFyYSBnZXJlbmNpYXIgYSByZWRlLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBdHVhbGl6YWRvIHBlbG8gYWRtaW5pc3RyYWRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iRXhjbHXDrWRvIHBlbG8gc2V1IGFkbWluaXN0cmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IlBhcmEgYWp1ZGFyIGEgbWVsaG9yYXIgYSBkdXJhw6fDo28gZGEgYmF0ZXJpYSwgbyBlY29ub21pemFkb3IgZGUgYmF0ZXJpYSByZWR1eiBvIGRlc2VtcGVuaG8gZSBvcyBsaW1pdGVzIGRlIHZpYnJhw6fDo28gZG8gZGlzcG9zaXRpdm8sIG9zIHNlcnZpw6dvcyBkZSBsb2NhbGl6YcOnw6NvIGUgYSBtYWlvcmlhIGRvcyBkYWRvcyBkZSBzZWd1bmRvIHBsYW5vLiBFLW1haWwsIG1lbnNhZ2VucyBlIG91dHJvcyBhcGxpY2F0aXZvcyBxdWUgZGVwZW5kZW0gZGUgc2luY3Jvbml6YcOnw6NvIG7Do28gcG9kZW0gc2VyIGF0dWFsaXphZG9zLCBhIG7Do28gc2VyIHF1ZSB2b2PDqiBvcyBhYnJhLlxuXG5PIGVjb25vbWl6YWRvciBkZSBiYXRlcmlhIMOpIGRlc2xpZ2FkbyBhdXRvbWF0aWNhbWVudGUgcXVhbmRvIG8gZGlzcG9zaXRpdm8gZXN0w6Egc2VuZG8gY2FycmVnYWRvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IkltcG9ydMOibmNpYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxvcXVlYWRhOiBudW5jYSBtb3N0cmFyIGVzc2FzIG5vdGlmaWNhw6fDtWVzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IkJhaXhhOiBtb3N0cmFyIG5hIHBhcnRlIGluZmVyaW9yIGRhIGxpc3RhIGRlIG5vdGlmaWNhw6fDtWVzIGRlIGZvcm1hIHNpbGVuY2lvc2EiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbDogbW9zdHJhciBlc3NhcyBub3RpZmljYcOnw7VlcyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJBbHRhOiBtb3N0cmFyIG5hIHBhcnRlIHN1cGVyaW9yIGRhIGxpc3RhIGRlIG5vdGlmaWNhw6fDtWVzIGUgZW1pdGlyIHNvbSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnRlOiBtb3N0cmFyIHBhcmNpYWxtZW50ZSBuYSB0ZWxhIGUgZW1pdGlyIHNvbSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlBvciAlMSRkIG1pbnV0b3MgKGF0w6kgw6BzIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+UG9yICUxJGQgbWludXRvcyAoYXTDqSDDoHMgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwKaW5kZXggMmY4NjJiMi4uOGE3OGYxNyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sCkBAIC0yMjQsNiArMjI0LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iQmxvY2HIm2kgYWN1bSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iy4M5OTkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29uyJtpbnV0dWwgZXN0ZSBhc2N1bnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJNb2Qgc2lndXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJTaXN0ZW11bCBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJQZXJzb25hbCI8L3N0cmluZz4KQEAgLTg2MywxMCArODY0LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iRGVjdXBhxaNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJDb3BpYcibaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+Ikluc2VyYcibaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iSW5zZXJhyJtpIGNhIHRleHQgc2ltcGx1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLDjm5sb2N1acWjaS4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLImHRlcmdlyJtpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJDb3BpYcibaSBhZHJlc2EgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iU2VsZWN0YcibaSB0ZXh0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJBbnVsYcibaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUmVwZXRhyJtpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlNlbGVjdGFyZSB0ZXh0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkFkxIN1Z2HIm2kgw65uIGRpY8WjaW9uYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IsiYdGVyZ2XIm2kiPC9zdHJpbmc+CkBAIC0xMTE0LDYgKzExMTgsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iTW9kaWZpY2HFo2kgaW1hZ2luZWEgZGUgZnVuZGFsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iU2VydmljaXUgZGUgY2l0aXJlIGEgbm90aWZpY8SDcmlsb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IkZ1cm5pem9yIGRlIGNvbmRpyJtpaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IkFzaXN0ZW50IHBlbnRydSBub3RpZmljxINyaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGFjdGl2YXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gZXN0ZSBhY3RpdmF0xIMgZGUgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iQXRpbmdlyJtpIHBlbnRydSBhIGdlc3Rpb25hIHJlxaNlYXVhLiI8L3N0cmluZz4KQEAgLTE0NDksMTIgKzE0NTQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBY3R1YWxpemF0IGRlIHVuIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IsiYdGVycyBkZSBhZG1pbmlzdHJhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQZW50cnUgYSDDrm1idW7Eg3TEg8ibaSBhdXRvbm9taWEgYmF0ZXJpZWksIGZ1bmPIm2lhIGRlIGVjb25vbWlzaXJlIGEgZW5lcmdpZWkgcmVkdWNlIHBlcmZvcm1hbsibZWxlIGRpc3Bveml0aXZ1bHVpIMiZaSBsaW1pdGVhesSDIHZpYnJhyJtpaWxlLCBzZXJ2aWNpaWxlIGRlIGxvY2FsaXphcmUgyJlpIG1ham9yaXRhdGVhIGRhdGVsb3IgZGUgZnVuZGFsLiBFc3RlIHBvc2liaWwgY2EgZS1tYWlsdXJpbGUsIG1lc2FnZXJpYSDImWkgYWx0ZSBhcGxpY2HIm2lpIGNhcmUgZGVwaW5kIGRlIHNpbmNyb25pemFyZSBzxIMgbnUgc2UgYWN0dWFsaXplemUgZGFjxIMgbnUgbGUgZGVzY2hpZGXIm2kuXG5cbkZ1bmPIm2lhIGRlIGVjb25vbWlzaXJlIGEgZW5lcmdpZWkgc2UgZGV6YWN0aXZlYXrEgyBhdXRvbWF0IGPDom5kIGRpc3Bveml0aXZ1bCBzZSDDrm5jYXJjxIMuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iSW1wb3J0YW7Im8SDIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9jYXRlOiBhY2VzdGUgbm90aWZpY8SDcmkgbnUgc2UgYWZpyJllYXrEgyBuaWNpb2RhdMSDIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IlJlZHVzxIM6IHNlIGFmaciZZWF6xIMgw65uIHBhcnRlYSBkZSBqb3MgYSBsaXN0ZWkgY3Ugbm90aWZpY8SDcmkgZsSDcsSDIGEgc2UgZW1pdGUgdW4gc3VuZXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik5vcm1hbMSDOiBhY2VzdGUgbm90aWZpY8SDcmkgc2UgYWZpyJllYXrEgyBmxINyxIMgYSBzZSBlbWl0ZSB1biBzdW5ldCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iUmlkaWNhdMSDOiBzZSBhZmnImWVhesSDIMOubiBwYXJ0ZWEgZGUgc3VzIGEgbGlzdGVpIGN1IG5vdGlmaWPEg3JpIMiZaSBzZSBlbWl0ZSB1biBzdW5ldCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdlbnRlOiBzZSBhZmnImWVhesSDIHBlbnRydSBvIHNjdXJ0xIMgZHVyYXTEgyBwZSBlY3JhbiDImWkgc2UgZW1pdGUgdW4gc3VuZXQiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0iZmV3Ij5UaW1wIGRlICUxJGQgbWludXRlIChww6JuxIMgbGEgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5UaW1wIGRlICUxJGQgZGUgbWludXRlIChww6JuxIMgbGEgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKaW5kZXggM2I0NWQ0MS4uMDc1M2U5MyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCkBAIC0yMjUsNiArMjI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i0JfQsNCx0LvQvtC60LjRgNC+0LLQsNGC0YwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+IiZndDs5OTkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i0KHQvtC00LXRgNC20LjQvNC+0LUg0YHQutGA0YvRgtC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i0JHQtdC30L7Qv9Cw0YHQvdGL0Lkg0YDQtdC20LjQvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+ItCh0LjRgdGC0LXQvNCwIEFuZHJvaWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+ItCb0LjRh9C90YvQtSDQtNCw0L3QvdGL0LUiPC9zdHJpbmc+CkBAIC04NjgsMTAgKzg2OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItCS0YvRgNC10LfQsNGC0YwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+ItCa0L7Qv9C40YDQvtCy0LDRgtGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i0JLRgdGC0LDQstC40YLRjCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i0JLRgdGC0LDQstC40YLRjCDQutCw0Log0L7QsdGL0YfQvdGL0Lkg0YLQtdC60YHRgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i0JfQsNC80LXQvdC40YLRjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLQo9C00LDQu9C40YLRjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i0JrQvtC/0LjRgNC+0LLQsNGC0YwgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i0JLRi9Cx0YDQsNGC0Ywg0YLQtdC60YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i0J7RgtC80LXQvdC40YLRjCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i0J/QvtCy0YLQvtGA0LjRgtGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+ItCS0YvQsdC+0YAg0YLQtdC60YHRgtCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+ItCU0L7QsdCw0LLQuNGC0Ywg0LIg0YHQu9C+0LLQsNGA0YwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+ItCj0LTQsNC70LjRgtGMIjwvc3RyaW5nPgpAQCAtMTEyMSw2ICsxMTI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+ItCh0LzQtdC90LjRgtGMINC+0LHQvtC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i0KHQu9GD0LbQsdCwINC/0YDQvtGB0LzQvtGC0YDQsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLQn9C+0YHRgtCw0LLRidC40Log0YPRgdC70L7QstC40LkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLQkNGB0YHQuNGB0YLQtdC90YIg0YPQstC10LTQvtC80LvQtdC90LjQuSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4i0KHQtdGC0YwgVlBOINCw0LrRgtC40LLQvdCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4i0KHQtdGC0YwgVlBOINCw0LrRgtC40LLQuNGA0L7QstCw0L3QsCDQv9GA0LjQu9C+0LbQtdC90LjQtdC8IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+ItCd0LDQttC80LjRgtC1LCDRh9GC0L7QsdGLINC+0YLQutGA0YvRgtGMINC90LDRgdGC0YDQvtC50LrQuC4iPC9zdHJpbmc+CkBAIC0xNDU4LDEyICsxNDYzLDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i0J7QsdC90L7QstC70LXQvdC+INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0L7QvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i0KPQtNCw0LvQtdC90L4g0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQvtC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLQp9GC0L7QsdGLINC/0YDQvtC00LvQuNGC0Ywg0LLRgNC10LzRjyDRgNCw0LHQvtGC0Ysg0YPRgdGC0YDQvtC50YHRgtCy0LAg0L7RgiDQsdCw0YLQsNGA0LXQuCwg0LIg0YDQtdC20LjQvNC1INGN0L3QtdGA0LPQvtGB0LHQtdGA0LXQttC10L3QuNGPINGB0L3QuNC20LDQtdGC0YHRjyDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjNC90L7RgdGC0YwsINCwINGC0LDQutC20LUg0L7Qs9GA0LDQvdC40YfQuNCy0LDQtdGC0YHRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSDQstC40LHRgNCw0YbQuNC4LCDQs9C10L7Qu9C+0LrQsNGG0LjQuCDQuCDRhNC+0L3QvtCy0L7QuSDQv9C10YDQtdC00LDRh9C4INC00LDQvdC90YvRhS4g0JTQsNC90L3Ri9C1LCDRgtGA0LXQsdGD0Y7RidC40LUg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40LgsINC80L7Qs9GD0YIg0L7QsdC90L7QstC70Y/RgtGM0YHRjyDRgtC+0LvRjNC60L4g0LrQvtCz0LTQsCDQstGLINC+0YLQutGA0L7QtdGC0LUg0L/RgNC40LvQvtC20LXQvdC40LUuXG5cbtCg0LXQttC40Lwg0Y3QvdC10YDQs9C+0YHQsdC10YDQtdC20LXQvdC40Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0L7RgtC60LvRjtGH0LDQtdGC0YHRjyDQstC+INCy0YDQtdC80Y8g0LfQsNGA0Y/QtNC60Lgg0YPRgdGC0YDQvtC50YHRgtCy0LAuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i0JLQsNC20L3QvtGB0YLRjCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i0JfQsNCx0LvQvtC60LjRgNC+0LLQsNC90L46INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0Y3RgtC4INGD0LLQtdC00L7QvNC70LXQvdC40Y8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i0J3QuNC30LrQsNGPOiDQv9C+0LrQsNC30YvQstCw0YLRjCDQsdC10Lcg0LfQstGD0LrQsCDQsiDQutC+0L3RhtC1INGB0L/QuNGB0LrQsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC5Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLQntCx0YvRh9C90LDRjzog0L/QvtC60LDQt9GL0LLQsNGC0Ywg0YPQstC10LTQvtC80LvQtdC90LjRjyDQsdC10Lcg0LfQstGD0LrQsCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i0JLRi9GB0L7QutCw0Y86INC/0L7QutCw0LfRi9Cy0LDRgtGMINGB0L4g0LfQstGD0LrQvtC8INCyINC90LDRh9Cw0LvQtSDRgdC/0LjRgdC60LAg0YPQstC10LTQvtC80LvQtdC90LjQuSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLQodGA0L7Rh9C90L46INC/0L7QutCw0LfRi9Cy0LDRgtGMINGB0L4g0LfQstGD0LrQvtCy0YvQvCDRgdC40LPQvdCw0LvQvtC8INC/0L7QstC10YDRhSDQstGB0LXRhSDQvtC60L7QvSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPiUxJGQg0LzQuNC90YPRgtCwICjQtNC+IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPiUxJGQg0LzQuNC90YPRgtGLICjQtNC+IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KQEAgLTE1NDcsNiArMTU0Niw2IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPtCS0YvQsdGA0LDQvdC+OiA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkZDwveGxpZmY6Zz48L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgogICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9ub3RpZmljYXRpb25fdG9waWNfbGFiZWwiIG1zZ2lkPSIyMjc1ODYxNDU3OTE4NzA4MjkiPiLQlNGA0YPQs9C+0LUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJpbXBvcnRhbmNlX2Zyb21fdG9waWMiIG1zZ2lkPSIzNTcyMjgwNDM5ODgwMDIzMjMzIj4i0JLRiyDQvtC/0YDQtdC00LXQu9C40LvQuCDQstCw0LbQvdC+0YHRgtGMINGN0YLQuNGFINGD0LLQtdC00L7QvNC70LXQvdC40LkuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3BlcnNvbiIgbXNnaWQ9IjkxNjAxMzM1OTcyNjI5MzgyOTYiPiLQrdGC0Lgg0LvRjtC00Lgg0LTQu9GPINCy0LDRgSDQstCw0LbQvdGLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+ItCS0Ysg0L7Qv9GA0LXQtNC10LvRj9C10YLQtSDQstCw0LbQvdC+0YHRgtGMINGN0YLQuNGFINGD0LLQtdC00L7QvNC70LXQvdC40LkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3BlcnNvbiIgbXNnaWQ9IjkxNjAxMzM1OTcyNjI5MzgyOTYiPiLQktCw0LbQvdC+0LUgKNC70Y7QtNC4KSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbAppbmRleCAwZmNiNmI1Li5kNjZiMjQ1IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuC2r+C3kOC2seC3iiDgtoXgtpzgt5Tgt4Xgt5Qg4Lav4La44Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuC3g+C3kOC2n+C3gOC3lOC2q+C3lCDgt4Pgtrjgt4rgtrbgtrHgt4rgtrDgtq3gt48iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLgtobgtrvgtprgt4rigI3gt4Lgt5Lgtq0g4LaG4Laa4LeP4La74La6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCDgtrTgtq/gt4rgtrDgtq3gt5LgtroiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IuC2tOC3nuC2r+C3iuC2nOC2veC3kuC2miI8L3N0cmluZz4KQEAgLTg2MCwxMCArODYxLDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i4Laa4La04Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLgtrTgt5LgtqfgtrTgtq3gt4og4Laa4La74Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i4LaF4La94LeA4Lax4LeK4LaxIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLgt4Pgtrvgtr0g4La04LeZ4LeFIOC2veC3meC3gyDgtoXgtr3gt4DgtrHgt4rgtrEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuC2tOC3iuKAjeC2u+C2reC3kuC3g+C3iuC2ruC3j+C2tOC2seC2uiDgtprgtrvgtrHgt4rgtrEuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i4La44Laa4Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJVUkwg4La04LeS4Lan4La04Lat4LeKIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuC2tOC3meC3hSDgtq3gt53gtrvgtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuC2heC3g+C3iiDgtprgtrvgtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuC2uuC3heC3kiDgtprgtrvgtrHgt4rgtrEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i4La04LeZ4LeFIOC2reC3muC2u+C3k+C2uCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLgt4Hgtrbgt4rgtq8g4Laa4Led4LeC4La64LanIOC2keC2muC2reC3lCDgtprgtrvgtrHgt4rgtrEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IuC2uOC2muC2seC3iuC2sSI8L3N0cmluZz4KQEAgLTExMDksNiArMTExMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLgtrbgt5Lgtq3gt5TgtrTgtq0g4LeA4LeZ4Lax4LeD4LeKIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IuC2r+C3kOC2seC3lOC2uOC3iuC2r+C3k+C2uOC3iiDgtoXgt4PgtrHgt4rgtrHgt48iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuC2reC2reC3iuC2reC3iuC3gOC2uiDgt4PgtrTgtrrgtrHgt4rgtrHgt48iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLgtq/gt5DgtrHgt5Tgtrjgt4rgtq/gt5Pgtrjgt4og4LeD4LeE4LeP4La64LaaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4Laa4LeK4oCN4La74LeS4La64LeP4Lat4LeK4La44Laa4La64LeSIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOC2uOC2n+C3kuC2seC3iiBWUE4g4LeD4Laa4LeK4oCN4La74LeT4La6IOC2muC2u+C2sSDgtr3gtq/gt5IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLgtqLgt4/gtr3gtrog4Laa4LeF4La44Lax4LeP4Laa4La74Lar4La6IOC2muC3kuC2u+C3k+C2uOC2pyDgt4Pgt4rgtrTgtrvgt4rgt4Eg4Laa4La74Lax4LeK4LaxLiI8L3N0cmluZz4KQEAgLTE0NDIsMTIgKzE0NDcsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLgtpTgtrbgtpzgt5og4La04La74LeS4La04LeP4La94LaaIOC3gOC3kuC3g+C3kuC2seC3iiDgtrrgt4/gt4Dgtq3gt4rgtprgt4/gtr3gt5PgtrEg4Laa4La74LaxIOC2veC2r+C3kyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i4LaU4La24Lac4LeaIOC2tOC2u+C3kuC2tOC3j+C2veC2miDgt4Dgt5Lgt4Pgt5LgtrHgt4og4La44Laa4LaxIOC2veC2ryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i4La24LeQ4Lan4La74LeSIOC2huC2uuC3lCDgtprgt4/gtr3gtrog4LeA4LeQ4Lap4LeS4Lav4LeS4La64LeU4Lar4LeUIOC2muC3kuC2u+C3k+C2uOC2pyDgtovgtq/gt4Dgt5Qg4Laa4LeS4La74LeT4La44LanLCDgtrbgt5Dgtqfgtrvgt5Ig4LeD4LeU4La74LeQ4Laa4LeU4La4IOC2lOC2tuC3miDgtovgtrTgt4/gtoLgtpzgtrrgt5og4Laa4LeK4oCN4La74LeS4La64LeP4Laa4LeP4La74LeT4Lat4LeK4LeA4La6IOC2heC2qeC3lOC2muC2u+C2sSDgtoXgtq3gtrsg4Laa4La44LeK4La04Lax4La6LCDgtrTgt5Lgt4Tgt5Lgtqfgt5Pgtrjgt4og4LeD4Lea4LeA4LePLCDgt4Pgt4Qg4La24Lec4LeE4Led4La44La64Laa4LeKIOC2tOC3g+C3lOC2tuC3kuC2uOC3iiDgtq/gtq3gt4rgtq0g4LeD4LeT4La44LePIOC2muC2u+C2uuC3ki4g4LaU4La2IOC2kuC3gOC3jyDgt4Dgt5Lgt4Dgt5jgtq0g4Lax4Lec4Laa4La74Lax4LeK4Lax4LeaIOC2seC2uOC3iiDgtrjgt5Lgt4Mg4LaK4La44Lea4La94LeKLCDgtrTgtqvgt5Lgt4Dgt5LgtqngtprgtrvgtqvgtrosIOC3g+C3hCDgt4Pgtrjgtrjgt5Tgt4Tgt5Tgtrvgt4rgtq0g4Laa4LeS4La74LeT4La4IOC2uOC2rSDgtrvgtrPgt48g4La04LeA4Lat4LeS4LaxIOC3gOC3meC2seC2reC3iiDgtrrgt5ngtq/gt5Tgtrjgt4og4La64LeP4LeA4Lat4LeK4Laa4LeP4La94LeT4LaxIOC2seC3nOC3gOC3kuC2uiDgt4Tgt5Dgtprgt5LgtrouXG5cbuC2lOC2tuC3miDgtovgtrTgt4/gtoLgtpzgtrog4LaG4La74Led4La04Lar4La6IOC3gOC2sSDgt4Dgt5Lgtqcg4La24LeQ4Lan4La74LeSIOC3g+C3lOC2u+C3kOC2muC3lOC2uCDgt4Pgt4rgt4DgtrrgtoLgtprgt4rigI3gtrvgt5Lgtrrgt4Ag4LaF4Laa4LeK4oCN4La74LeS4La6IOC3gOC3mi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgt4Dgt5Dgtq/gtpzgtq3gt4rgtprgtrgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuC2heC3gOC3hOC3kuC2uyDgtprgt4U6IOC2uOC3meC2uCDgtq/gt5DgtrHgt5Tgtrjgt4rgtq/gt5Pgtrjgt4og4Laa4LeS4LeD4LeS4Lav4LePIOC2seC3nOC2tOC3meC2seC3iuC3gOC2seC3iuC2sSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLgtoXgtqngt5Q6IOC2r+C3kOC2seC3lOC2uOC3iuC2r+C3k+C2uOC3iiDgtr3gt5Dgtrrgt5Lgt4Pgt4rgtq3gt5Tgt4Dgt5ngt4Tgt5Ig4La04LeE4LeF4LeS4Lax4LeK4La4IOC2seC3kuC3geC3iuC3geC2tuC3iuC2r+C3gCDgtrTgt5ngtrHgt4rgt4DgtrHgt4rgtrEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+IuC3g+C3j+C2uOC3j+C2seC3iuKAjeC2ujog4Lax4LeS4LeB4LeK4LeB4La24LeK4Lav4LeAIOC2uOC3meC2uCDgtq/gt5DgtrHgt5Tgtrjgt4rgtq/gt5Pgtrjgt4og4La04LeZ4Lax4LeK4LeA4Lax4LeK4LaxIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLgt4Dgt5Dgtqngt5I6IOC2r+C3kOC2seC3lOC2uOC3iuC2r+C3k+C2uOC3iiDgtr3gt5Dgtrrgt5Lgt4Pgt4rgtq3gt5Tgt4Dgt5ngt4Tgt5Ig4LaJ4LeE4LeF4LeS4Lax4LeK4La4IOC2tOC3meC2seC3iuC3gOC2seC3iuC2sSDgt4Pgt4Qg4LeB4La24LeK4LavIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLgt4Tgtq/gt5Lgt4Pgt5I6IOC2reC3kuC2u+C2uuC2pyDgtrTgt5Dgtrjgt5Lgtqsg4LeB4La24LeK4LavIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuC2uOC3kuC2seC3kuC2reC3iuC2reC3lCAlMSRkIOC2muC3iiDgt4PgtrPgt4Tgt48gKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOC2reC3meC2muC3iik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPuC2uOC3kuC2seC3kuC2reC3iuC2reC3lCAlMSRkIOC2muC3iiDgt4PgtrPgt4Tgt48gKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOC2reC3meC2muC3iik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbAppbmRleCBkMjZkY2M2Li4wNWM4NDY3IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKQEAgLTIyNSw2ICsyMjUsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJVemFta27DusWlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNrcnl0w70gb2JzYWgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJOw7pkem92w70gcmXFvmltIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iU3lzdMOpbSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJPc29ibsOpIjwvc3RyaW5nPgpAQCAtODY4LDEwICs4NjksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJWeXN0cmlobsO6xaUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcMOtcm92YcWlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iUHJpbGVwacWlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJQcmlsZXBpxaUgYWtvIG9iecSNYWpuw70gdGV4dCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iTmFocmFkacWl4oCiIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+Ik9kc3Ryw6FuacWlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJTa29ww61yb3ZhxaUgd2Vib3bDuiBhZHJlc3UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJWeWJyYcWlIHRleHQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IlNww6TFpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iWm5vdmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iVsO9YmVyIHRleHR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IlByaWRhxaUgZG8gc2xvdm7DrWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJPZHN0csOhbmnFpSI8L3N0cmluZz4KQEAgLTExMjEsNiArMTEyNSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJabWVuacWlIHRhcGV0dSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IkFwbGlrw6FjaWEgbmEgcG/EjcO6dmFuaWUgdXBvem9ybmVuw60iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlBvc2t5dG92YXRlxL4gcG9kbWllbmt5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iQXNpc3RlbnQgdXBvem9ybmVuw60iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlNpZcWlIFZQTiBqZSBha3Rpdm92YW7DoSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IkFwbGlrw6FjaXUgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IGFrdGl2b3ZhbGEgc2llxaUgVlBOIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iRG90eWtvbSBtw7TFvmV0ZSBzcHJhdm92YcWlIHNpZcWlLiI8L3N0cmluZz4KQEAgLTE0NTgsMTIgKzE0NjMsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBa3R1YWxpem92YW7DqSBzcHLDoXZjb20iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+Ik9kc3Ryw6FuZW7DvSBzcHLDoXZjb20iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IlMgY2llxL5vbSBwcmVkxLrFvmnFpSB2w71kcsW+IGJhdMOpcmllIHpuw63FvmkgxaFldHJpxI0gYmF0w6lyaWUgdsO9a29ubm9zxaUgemFyaWFkZW5pYSBhwqBvYm1lZHrDrSB2aWJyw6FjaWUsIHNsdcW+YnkgdXLEjW92YW5pYSBwb2xvaHkgYcKgZMOhdG92w6kgcHJlbm9zeSBuYSBwb3phZMOtLiBQb8WhdGEsIMSNZXQgYSDEj2FsxaFpZSBhcGxpa8OhY2llLCBrdG9yw6kgc2Egc3BvbGllaGFqw7ogbmEgc3luY2hyb25pesOhY2l1LCBzYSBtb8W+bm8gbmVidWTDuiBha3R1YWxpem92YcWlLCBkb2tpYcS+IGljaCBuZW90dm9yw610ZS5cblxuUHJpIG5hYsOtamFuw60gemFyaWFkZW5pYSBzYSDFoWV0cmnEjSBiYXTDqXJpZSBhdXRvbWF0aWNreSB2eXBuZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJEw7RsZcW+aXRvc8WlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJCbG9rb3ZhbsOpOiBUaWV0byB1cG96b3JuZW5pYSBuaWtkeSBuZXpvYnJhem92YcWlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+Ik7DrXprZTogWm9icmF6b3ZhxaUgdsKgZG9sbmVqIMSNYXN0aSB6b3puYW11IHVwb3pvcm5lbsOtIGJleiB6dnVrb3bDqWhvIHNpZ27DoWx1Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3Jtw6FsbmU6IFRpZXRvIHVwb3pvcm5lbmlhIHpvYnJhem92YcWlIGJleiB6dnVrb3bDqWhvIHNpZ27DoWx1Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJWeXNva8OpOiBab2JyYXpvdmHFpSB2wqBob3JuZWogxI1hc3RpIHpvem5hbXUgdXBvem9ybmVuw60gc28genZ1a292w71tIHNpZ27DoWxvbSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJOZW9ka2xhZG7DqTogWm9icmF6acWlIGNleiBvYnJhem92a3Ugc28genZ1a292w71tIHNpZ27DoWxvbSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPiUxJGQgbWluw7p0eSAoZG8gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im1hbnkiPiUxJGQgbWluw7p0eSAoZG8gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwKaW5kZXggZDg0MGVjZC4uZWE1ZjRjNCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sCkBAIC0yMjUsNiArMjI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iWmFrbGVuaSB6ZGFqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkgKyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJWc2ViaW5hIGplIHNrcml0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlZhcm5pIG5hxI1pbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IlNpc3RlbSBBbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJPc2Vibm8iPC9zdHJpbmc+CkBAIC04NjgsMTAgKzg2OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+Ikl6cmXFvmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcGlyYWoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJQcmlsZXBpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJQcmlsZXBpIGtvdCBuYXZhZG5vIGJlc2VkaWxvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJaYW1lbmphaiDigKIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iSXpicmnFoWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGlyYWogVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iSXpiaXJhIGJlc2VkaWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiJSYXp2ZWxqYXZpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJVdmVsamF2aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJJemJyYW5vIGJlc2VkaWxvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkRvZGFqIHYgc2xvdmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJJemJyacWhaSI8L3N0cmluZz4KQEAgLTExMjEsNiArMTEyNSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJTcHJlbWluamFuamUgb3phZGphIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iUG9zbHXFoWFsZWMgb2J2ZXN0aWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlBvbnVkbmlrIHBvZ29qZXYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJQb21vxI1uaWsgemEgb2J2ZXN0aWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gYWt0aXZpcmFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIGplIGFrdGl2aXJhbGEgYXBsaWthY2lqYSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJEb3Rha25pdGUgc2UsIMSNZSDFvmVsaXRlIHVwcmF2bGphdGkgb21yZcW+amUuIjwvc3RyaW5nPgpAQCAtMTQ1OCwxMiArMTQ2Myw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IlBvc29kb2JpbCBza3JibmlrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiJJemJyaXNhbCBza3JibmlrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJWYXLEjWV2YW5qZSB6IGVuZXJnaWpvIGFrdW11bGF0b3JqYSBwb2RhbGrFoWEgxI1hcyBuamVnb3ZlZ2EgZGVsb3ZhbmphIHRha28sIGRhIHptYW5qxaFhIHptb2dsaml2b3N0IGRlbG92YW5qYSBuYXByYXZlIGluIG9tZWppIHZpYnJpcmFuamUsIGxva2FjaWpza2Ugc3Rvcml0dmUgdGVyIHByZW5vcyB2ZcSNaW5lIHBvZGF0a292IHYgb3phZGp1LiBBcGxpa2FjaWplIHphIGUtcG/FoXRvLCBzcG9yb8SNYW5qZSBpbiBkcnVnbywga2kgdXBvcmFibGpham8gc2luaHJvbml6aXJhbmplLCBzZSBtb3JkYSBuZSBwb3NvZGFibGpham8sIHJhemVuIMSNZSBqaWggb2RwcmV0ZS5cblxuVmFyxI1ldmFuamUgeiBlbmVyZ2lqbyBha3VtdWxhdG9yamEgc2Ugc2Ftb2Rlam5vIGl6a2xvcGkgbWVkIHBvbG5qZW5qZW0gYWt1bXVsYXRvcmphIG5hcHJhdmUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iUG9tZW1ibm9zdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxva2lyYW5vOiBuaWtvbGkgbmUgcHJpa2HFvmkgdGVoIG9idmVzdGlsIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+Ik1hbmogcG9tZW1ibm86IHByaWthxb5pIG5hIGRudSBzZXpuYW1hIG9idmVzdGlsIGJyZXogenZva2EiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik9iacSNYWpubzogcHJpa2HFvmkgdGEgb2J2ZXN0aWxhIGJyZXogenZva2EiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IlBvbWVtYm5vOiBwcmlrYcW+aSBuYSB2cmh1IHNlem5hbWEgb2J2ZXN0aWwgaW4gcHJlZHZhamFqIHp2b2siPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iTnVqbm86IHphIGhpcCBwb2thxb5pIHByZWRvZ2xlZCBuYSB6YXNsb251IGluIHByZWR2YWphaiB6dm9rIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+JWQgbWludXRvIChkbyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0idHdvIj4lZCBtaW51dGkgKGRvIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1zcS1yQUwvc3RyaW5ncy54bWwKaW5kZXggNDM2NTc5NmMuLjc3ZTBlNjIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iS3nDpyB0YW5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlDDq3JtYmFqdGpldCBqYW7DqyB0w6sgZnNoZWh1cmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJNb2RhbGl0ZXRpIGkgc2lndXJpc8OrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iU2lzdGVtaSBcImFuZHJvaWRcIiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29uYWwiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IlByaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iS29wam8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJOZ2ppdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iTmdqaXRlIHNpIHRla3N0IHTDqyB0aGplc2h0w6siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IlrDq3ZlbmTDq3Nv4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IkZzaGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGpvIFVSTC1uw6siPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiJQw6tyemdqaWRoIHRla3N0aW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IlpoYsOraiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUmliw6tqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlDDq3J6Z2plZGhqYSBlIHRla3N0aXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iU2h0byBuw6sgZmphbG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJGc2hpIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+Ik5kcnlzaG8gaW1hemhpbiBlIHNmb25kaXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJEw6tnanVlcyBuam9mdGltZXNoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJPZnJ1ZXMga3VzaHRlc2giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBc2lzdGVudGkgaSBuam9mdGltZXZlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4tamEgdSBha3Rpdml6dWEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4tamEgw6tzaHTDqyBha3Rpdml6dWFyIG5nYSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJQcmVrIHDDq3IgdMOrIG1lbmF4aHVhciBycmpldGluLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJQw6tyZGl0w6tzdWFyIG5nYSBhZG1pbmlzdHJhdG9yaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iVSBmc2hpIG5nYSBhZG1pbmlzdHJhdG9yaSB5dCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iUMOrciB0w6sgcMOrcm1pcsOrc3VhciBqZXTDq2dqYXTDq3NpbsOrIGUgYmF0ZXJpc8OrLCBvcHNpb25pIGkga3Vyc2ltaXQgdMOrIGJhdGVyaXPDqyB1bCByZW5kaW1lbnRpbiBlIHBhamlzamVzIHTDq25kZSBzaSBkaGUga3VmaXpvbiBkcmlkaGpldCBkaGUgc2h1bWljw6tuIGUgdMOrIGRow6tuYXZlIG7DqyBzZm9uZC4gTWFpbC1pLCBtZXNhemhldCBkaGUgYXBsaWthY2lvbmV0IGUgdGplcmEgccOrIHNpbmtyb25pem9oZW4gYXV0b21hdGlraXNodCBtdW5kIHTDqyBtb3MgcMOrcmRpdMOrc29oZW4gcGEgaSBoYXB1ci5cblxuS3Vyc2ltaSBpIGJhdGVyaXPDqyDDp2FrdGl2aXpvaGV0IGF1dG9tYXRpa2lzaHQga3VyIHBhamlzamEgdmloZXQgbsOrIG5nYXJraW0uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iUsOrbmTDq3NpYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iVMOrIGJsbG9rdWFyYTogTW9zIGkgc2hmYXEgYXNuasOraGVyw6sga8OrdG8gbmpvZnRpbWUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iVMOrIHVsw6t0YTogU2hmYXFpIG7DqyBoZXNodGplIG7DqyBmdW5kIHTDqyBsaXN0w6tzIHPDqyBuam9mdGltZXZlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWxlOiBTaGZhcWkga8OrdG8gbmpvZnRpbWUgbsOrIGhlc2h0amUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IlTDqyBsYXJ0YTogU2hmYXFpIG7DqyBrcnllIHTDqyBsaXN0w6tzIHPDqyBuam9mdGltZXZlIGRoZSBsw6tzaG8gdGluZ3VsbCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJVcmdqZW50ZTogU2hmYXEgbmrDqyB2w6tzaHRyaW0gdMOrIHNocGVqdMOrIG7DqyBla3JhbiBkaGUgbMOrc2hvIHRpbmd1bGwiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlDDq3IgJTEkZCBtaW51dGEgKGRlcmkgbsOrIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlDDq3IgbmrDqyBtaW51dMOrIChkZXJpIG7DqyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbAppbmRleCA0ZTE5NWNjLi4yNDIzNDE4IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKQEAgLTIyNCw2ICsyMjQsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLQl9Cw0LrRmdGD0YfQsNGYINC+0LTQvNCw0YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i0KHQsNC00YDQttCw0Zgg0ZjQtSDRgdCw0LrRgNC40LLQtdC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i0JHQtdC30LHQtdC00L3QuCDRgNC10LbQuNC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCDRgdC40YHRgtC10LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+ItCb0LjRh9C90L4iPC9zdHJpbmc+CkBAIC04NjMsMTAgKzg2NCwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItCY0YHQtdGG0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+ItCa0L7Qv9C40YDQsNGYIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i0J3QsNC70LXQv9C4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLQndCw0LvQtdC/0Lgg0LrQsNC+INC+0LHQuNGH0LDQvSDRgtC10LrRgdGCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLQl9Cw0LzQtdC90LguLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i0JjQt9Cx0YDQuNGI0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+ItCa0L7Qv9C40YDQsNGYIFVSTCDQsNC00YDQtdGB0YMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLQmNC30LDQsdC10YDQuCDRgtC10LrRgdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLQntC/0L7Qt9C+0LLQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i0J/QvtC90L7QstC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+ItCY0LfQsdC+0YAg0YLQtdC60YHRgtCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+ItCU0L7QtNCw0Zgg0YMg0YDQtdGH0L3QuNC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLQmNC30LHRgNC40YjQuCI8L3N0cmluZz4KQEAgLTExMTQsNiArMTExOCw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLQn9GA0L7QvNC10L3QsCDQv9C+0LfQsNC00LjQvdC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i0JzQvtC90LjRgtC+0YAg0L7QsdCw0LLQtdGI0YLQtdGa0LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+ItCU0L7QsdCw0LLRmdCw0Ycg0YPRgdC70L7QstCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i0J/QvtC80L7Rm9C90LjQuiDQt9CwINC+0LHQsNCy0LXRiNGC0LXRmtCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g0ZjQtSDQsNC60YLQuNCy0LjRgNCw0L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiLQkNC/0LvQuNC60LDRhtC40ZjQsCA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g0ZjQtSDQsNC60YLQuNCy0LjRgNCw0LvQsCBWUE4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLQlNC+0LTQuNGA0L3QuNGC0LUg0LTQsCDQsdC40YHRgtC1INGD0L/RgNCw0LLRmdCw0LvQuCDQvNGA0LXQttC+0LwuIjwvc3RyaW5nPgpAQCAtMTQ0OSwxMiArMTQ1NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+ItCQ0LbRg9GA0LjRgNCw0L4g0ZjQtSDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i0JjQt9Cx0YDQuNGB0LDQviDRmNC1INCy0LDRiCDQsNC00LzQuNC40YHRgtGA0LDRgtC+0YAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+ItCU0LAg0LHQuCDQv9GA0L7QtNGD0LbQuNC70LAg0LLRgNC10LzQtSDRgtGA0LDRmNCw0ZrQsCDQsdCw0YLQtdGA0LjRmNC1LCDRg9GI0YLQtdC00LAg0LHQsNGC0LXRgNC40ZjQtSDRgdC80LDRmtGD0ZjQtSDQv9C10YDRhNC+0YDQvNCw0L3RgdC1INGD0YDQtdGS0LDRmNCwINC4INC+0LPRgNCw0L3QuNGH0LDQstCwINCy0LjQsdGA0LDRhtC40ZjRgywg0YPRgdC70YPQs9C1INC70L7QutCw0YbQuNGY0LUg0Lgg0LLQtdGb0LjQvdGDINC/0L7Qt9Cw0LTQuNC90YHQutC40YUg0L/QvtC00LDRgtCw0LrQsC4g0JjQvNC10ZjQuywg0YDQsNC30LzQtdC90LAg0L/QvtGA0YPQutCwINC4INC00YDRg9Cz0LUg0LDQv9C70LjQutCw0YbQuNGY0LUg0LrQvtGY0LUg0YHQtSDQvtGB0LvQsNGa0LDRmNGDINC90LAg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40ZjRgyDQvNC+0LbQtNCwINC90LXRm9C1INC00LAg0YHQtSDQsNC20YPRgNC40YDQsNGY0YMg0LDQutC+INC40YUg0L3QtSDQvtGC0LLQvtGA0LjRgtC1LlxuXG7Qo9GI0YLQtdC00LAg0LHQsNGC0LXRgNC40ZjQtSDRgdC1INCw0YPRgtC+0LzQsNGC0YHQutC4INC40YHQutGZ0YPRh9GD0ZjQtSDQutCw0LTQsCDRgdC1INGD0YDQtdGS0LDRmCDQv9GD0L3QuC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLQktCw0LbQvdC+0YHRgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i0JHQu9C+0LrQuNGA0LDQvdCwOiDQntCy0LAg0L7QsdCw0LLQtdGI0YLQtdGa0LAg0YHQtSDQvdC40LrQsNC00LAg0L3QtSDQv9GA0LjQutCw0LfRg9GY0YMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i0J3QuNGB0LrQsDog0J/RgNC40LrQsNC30YPRmNGDINGB0LUg0YMg0LTQvdGDINC70LjRgdGC0LUg0L7QsdCw0LLQtdGI0YLQtdGa0LAg0LHQtdC3INC30LLRg9C60LAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+ItCj0L7QsdC40YfQsNGY0LXQvdCwOiDQntCy0LAg0L7QsdCw0LLQtdGI0YLQtdGa0LAg0YHQtSDQv9GA0LjQutCw0LfRg9GY0YMg0LHQtdC3INC30LLRg9C60LAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+ItCS0LjRgdC+0LrQsDog0J/RgNC40LrQsNC30YPRmNGDINGB0LUg0YMg0LLRgNGF0YMg0LvQuNGB0YLQtSDQvtCx0LDQstC10YjRgtC10ZrQsCDQuCDQsNC60YLQuNCy0LjRgNCwINGB0LUg0LfQstGD0YfQvdC4INGB0LjQs9C90LDQuyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLQpdC40YLQvdCwOiDQndCw0LrRgNCw0YLQutC+INGB0LUg0L/RgNC40LrQsNC30YPRmNGDINC90LAg0LXQutGA0LDQvdGDINC4INCw0LrRgtC40LLQuNGA0LAg0YHQtSDQt9Cy0YPRh9C90Lgg0YHQuNCz0L3QsNC7Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+JTEkZCDQvNC40L3Rg9GCICjQtNC+IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPiUxJGQg0LzQuNC90YPRgtCwICjQtNC+IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCmluZGV4IDg5ODYwNzMuLmNkZjI1MmUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1zdi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IkzDpXMgbnUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iSW5uZWjDpWxsIGhhciBkb2x0cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IlPDpGtlcnQgbMOkZ2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkLXN5c3RlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29ubGlndCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iS2xpcHAgdXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IktvcGllcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJLbGlzdHJhIGluIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJLbGlzdHJhIGluIHNvbSBvZm9ybWF0ZXJhZCB0ZXh0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJFcnPDpHR0Li4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IlRhIGJvcnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+IktvcGllcmEgd2ViYmFkcmVzcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+Ik1hcmtlcmEgdGV4dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iw4VuZ3JhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJHw7ZyIG9tIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IlRleHRtYXJrZXJpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iTMOkZ2cgdGlsbCBpIG9yZGxpc3RhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJUYSBib3J0Ijwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IsOEbmRyYSBiYWtncnVuZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Ik1lZGRlbGFuZGVseXNzbmFyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iTGV2ZXJhbnTDtnIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJBdmlzZXJpbmdzYXNzaXN0ZW50Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gw6RyIGFrdGl2ZXJhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IlZQTiBha3RpdmVyYXMgYXYgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iVHJ5Y2sgb20gZHUgdmlsbCBoYW50ZXJhIG7DpHR2ZXJrZXQuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IlVwcGRhdGVyYXQgYXYgYWRtaW5pc3RyYXTDtnJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4iUGFrZXRldCBoYXIgcmFkZXJhdHMgYXYgYWRtaW5pc3RyYXTDtnJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iSSBiYXR0ZXJpc3BhcmzDpGdldCByZWR1Y2VyYXMgZW5oZXRlbnMgcHJlc3RhbmRhIHPDpSBhdHQgYmF0dGVyaWV0IHNrYSByw6Rja2EgbMOkbmdyZSBvY2ggdmlicmF0aW9uLCBwbGF0c3Rqw6Ruc3RlciBzYW10IGRlbiBtZXN0YSBhbnbDpG5kbmluZ2VuIGF2IGJha2dydW5kc2RhdGEgYmVncsOkbnNhcy4gRGV0IGthbiBow6RuZGEgYXR0IGFwcGFyIGbDtnIgZS1wb3N0LCBzbXMgb2NoIGFubmF0IHNvbSBrcsOkdmVyIHN5bmtyb25pc2VyaW5nIGludGUgdXBwZGF0ZXJhcyBmw7ZycsOkbiBkdSDDtnBwbmFyIGRlbS5cblxuQmF0dGVyaXNwYXJsw6RnZXQgaW5ha3RpdmVyYXMgYXV0b21hdGlza3QgbsOkciBlbmhldGVuIGxhZGRhcy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJSZWxldmFucyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iQmxvY2tlcmFkOiBWaXNhIGFsZHJpZyBkZXNzYSBhdmlzZXJpbmdhciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJMw6VnOiBWaXNhIGzDpG5nc3QgbmVkIGkgYXZpc2VyaW5nc2xpc3RhbiDigJMgdXRhbiBsanVkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IFZpc2EgYXZpc2VyaW5nYXJuYSDigJMgdXRhbiBsanVkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiJIw7ZnOiBWaXNhIGjDtmdzdCB1cHAgaSBhdmlzZXJpbmdzbGlzdGFuIOKAkyBtZWQgbGp1ZCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJCcsOlZHNrYW5kZTogVmlzYSBww6Ugc2vDpHJtZW4g4oCTIG1lZCBsanVkIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5JICUxJGQgbWludXRlciAodGlsbCBrbC4gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+SSBlbiBtaW51dCAodGlsbCBrbC4gPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwKaW5kZXggN2QwZjNjYS4uNWU2MThiZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCkBAIC0yMjUsNiArMjI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iRnVuZ2Egc2FzYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJNYXVkaHVpIHlhbWVmaWNod2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJNdGluZG8gc2FsYW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iTWZ1bW8gd2EgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iQmluYWZzaSI8L3N0cmluZz4KQEAgLTg2MCwxMCArODYxLDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iS2F0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iTmFrYWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iQmFuZGlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iQmFuZGlrYSBrYW1hIG1hYW5kaXNoaSBkaGFoaXJpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJCYWRpbGlzaGEuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iRnV0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iTmFraWxpIFVSTCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IkNoYWd1YSBtYWFuZGlzaGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IlRlbmR1YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUmVqZXNoYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJVY2hhZ3V6aSB3YSBtYWFuZGlzaGk/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+Ik9uZ2V6YSBrd2VueWUga2FtdXNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJGdXRhIjwvc3RyaW5nPgpAQCAtMTEwOSw2ICsxMTEzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IkJhZGlsaXNoYSBtYW5kaGFyaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+Iktpc2lraWxpemkgY2hhIGFyaWZhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJNdG9hIG1hc2hhcnRpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iTXJhdGlidSB3YSBhcmlmYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGltZXdlemVzaHdhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIGltZWFtaWxpc2h3YSBuYSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiJHdXNhIGlsaSBrdWRoaWJpdGkgbXRhbmRhby4iPC9zdHJpbmc+CkBAIC0xNDQyLDEyICsxNDQ3LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iS2ltZXNhc2lzd2EgbmEgbXNpbWFtaXppIHdha28iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IktpbGlmdXR3YSBuYSBtc2ltYW1pemkgd2FrbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iS3VzYWlkaWEga3Vib3Jlc2hhIG11ZGEgd2EgbWF0dW1pemkgeWEgYmV0cmksIGluYXlvb2tvYSBiZXRyaSBodXB1bmd1emEgdXRlbmRhamkgd2Ega2lmYWEgY2hha28gbmEga3VwdW5ndXphIG10ZXRlbW8sIGh1ZHVtYSB6YSB1dGFtYnV6aSB3YSBtYWhhbGksIG5hIGRhdGEgbnlpbmdpIHlhIGNoaW5pIGNoaW5pLiBCYXJ1YSBwZXBlLCB1anVtYmUgbmEgcHJvZ3JhbXUgbnlpbmdpbmUgemluYXpvdGVnZSxlYSB1c2F3YXppc2hhamkgaHVlbmRhIHppc2lzYXNpc2h3ZSB1c2lwb3ppZnVuZ3VhLlxuXG5JbmF5b29rb2EgYmV0cmkgaHVqaXppbWEga2lvdG9tYXRpa2kga2lmYWEgY2hha28ga2luYXBva3V3YSBraW5hY2hhamkuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iVW11aGltdSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iSW1lenVpd2E6IFVzaW9ueWVzaGUgYXJpZmEgaGl6aSBrYW13ZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJDaGluaTogT255ZXNoYSBrYXRpa2Egc2VoZW11IHlhIGNoaW5pIHlhIG9yb2RoYSB5YSBhcmlmYSBiaWxhIGt1dG9hIHNhdXRpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJLYXdhaWRhOiBPbnllc2hhIGFyaWZhIGhpemkgYmlsYSBzYXV0aSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iSnV1OiBPbnllc2hhIGthdGlrYSBzZWhlbXUgeWEganV1IHlhIG9yb2RoYSB5YSBhcmlmYSBuYSBpdG9lIHNhdXRpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+Ik11aGltdTogV2VrYSBvbnllc2hvIGxhIGt1Y2h1bmd1bGlhIGt3ZW55ZSBza3JpbmkgbmEgaXRvZSBzYXV0aSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+S3dhIGRha2lrYSAlMSRkIChoYWRpIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkt3YSBkYWtpa2EgbW9qYSAoaGFkaSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRhLXJJTi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdGEtcklOL3N0cmluZ3MueG1sCmluZGV4IGU0MTllZWEuLjdlMGFiNWUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdGEtcklOL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdGEtcklOL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i4K6H4K6q4K+N4K6q4K+L4K6k4K+BIOCuquCvguCun+CvjeCun+CvgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgrq7grrHgr4jgrqjgr43grqTgr4HgrrPgr43grrMg4K6J4K6z4K+N4K6z4K6f4K6V4K+N4K6V4K6u4K+NIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i4K6q4K6+4K6k4K+B4K6V4K6+4K6q4K+N4K6q4K+BIOCuquCur+CuqeCvjeCuruCvgeCuseCviCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQg4K6F4K6u4K+I4K6q4K+N4K6q4K+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLgrqTgrqngrr/grqrgr43grqrgrp/gr43grp8iPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuCuteCvhuCun+CvjeCun+CvgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i4K6o4K6V4K6y4K+G4K6f4K+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i4K6S4K6f4K+N4K6f4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLgro7grrPgrr/grq8g4K6J4K6w4K+I4K6v4K6+4K6VIOCukuCun+CvjeCun+CvgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i4K6u4K6+4K6x4K+N4K6x4K+BLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuCuqOCvgOCuleCvjeCuleCvgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMIOCukCDgrqjgrpXgrrLgr4bgrp/gr4EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLgrongrrDgr4jgrq/gr4jgrqTgr40g4K6k4K+H4K6w4K+N4K614K+B4K6a4K+G4K6v4K+N4K6VIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLgrprgr4bgrq/grrLgr43grqTgrrXgrr/grrDgr40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuCuruCvgOCuo+CvjeCun+CvgeCuruCvjeCumuCvhuCur+CvjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLgrongrrDgr4gg4K6k4K+H4K6w4K+N4K6o4K+N4K6k4K+G4K6f4K+B4K6k4K+N4K6k4K6y4K+NIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IuCuheCuleCusOCuvuCupOCuv+Cur+Cuv+CusuCvjSDgrprgr4fgrrDgr40iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IuCuqOCvgOCuleCvjeCuleCvgSI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLgrrXgrr7grrLgr43grqrgr4fgrqrgr43grqrgrrDgr4gg4K6u4K6+4K6x4K+N4K6x4K+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i4K6F4K6x4K6/4K614K6/4K6q4K+N4K6q4K+B4K6V4K6z4K+I4K6V4K+NIOCuleCuo+CvjeCuleCuvuCuo+Cuv+CuleCvjeCuleCvgeCuruCvjSDgrprgr4fgrrXgr4giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuCuqOCuv+CuquCuqOCvjeCupOCuqeCviCDgrrXgrrTgrpngr43grpXgr4HgrqjgrrDgr40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLgroXgrrHgrr/grrXgrr/grqrgr43grqrgr4Eg4K6J4K6k4K614K6/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g4K6a4K+G4K6v4K6y4K+N4K6q4K6f4K+B4K6k4K+N4K6k4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOCuhuCusuCvjSBWUE4g4K6a4K+G4K6v4K6y4K+N4K6q4K6f4K+B4K6k4K+N4K6k4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i4K6o4K+G4K6f4K+N4K614K+K4K6w4K+N4K6V4K+N4K6V4K+IIOCuqOCuv+CusOCvjeCuteCuleCuv+CuleCvjeCuleCupOCvjSDgrqTgr4rgrp/grrXgr4Hgrq7gr40uIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IuCuieCumeCvjeCuleCus+CvjSDgrqjgrr/grrDgr43grrXgrr7grpXgrr8g4K6q4K+B4K6k4K+B4K6q4K+N4K6q4K6/4K6k4K+N4K6k4K+B4K6z4K+N4K6z4K6+4K6w4K+NIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLgrqjgrr/grrDgr43grrXgrr7grpXgrr8g4K6o4K+A4K6V4K+N4K6V4K6/4K614K6/4K6f4K+N4K6f4K6+4K6w4K+NIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLgrqrgr4fgrp/gr43grp/grrDgrr8g4K6G4K6v4K+B4K6z4K+IIOCuruCvh+CuruCvjeCuquCun+CvgeCupOCvjeCupCwg4K6q4K+H4K6f4K+N4K6f4K6w4K6/IOCumuCvh+CuruCuv+CuquCvjeCuquCuvuCuqeCvjSDgrongrpngr43grpXgrrPgr40g4K6a4K6+4K6k4K6p4K6k4K+N4K6k4K6/4K6p4K+NIOCumuCvhuCur+CusuCvjeCupOCuv+CuseCuqeCviOCuleCvjSDgrpXgr4HgrrHgr4jgrqTgr43grqTgr4EsIOCuheCupOCuv+CusOCvjeCuteCvgSwg4K6H4K6f4K6a4K+NIOCumuCvh+CuteCviOCuleCus+CvjSDgrq7grrHgr43grrHgr4Hgrq7gr40g4K6q4K+G4K6w4K+B4K6u4K+N4K6q4K6+4K6y4K6+4K6pIOCuquCuv+CuqeCvjeCuquCvgeCusuCupOCvjSDgrqTgrrDgrrXgr4Eg4K6q4K+L4K6p4K+N4K6x4K614K6x4K+N4K6x4K+I4K6V4K+NIOCuleCun+CvjeCun+CvgeCuquCvjeCuquCun+CvgeCupOCvjeCupOCvgeCuleCuv+CuseCupOCvgS4g4K6S4K6k4K+N4K6k4K6/4K6a4K+I4K614K+I4K6a4K+NIOCumuCuvuCusOCvjeCuqOCvjeCupOCvgeCus+CvjeCusyDgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40sIOCumuCvhuCur+CvjeCupOCuv+Cur+Cuv+Cun+CusuCvjSDgrq7grrHgr43grrHgr4Hgrq7gr40g4K6q4K6/4K6xIOCuquCur+CuqeCvjeCuquCuvuCun+CvgeCuleCus+CvjSDgrqTgrr/grrHgrpXgr43grpXgr4Hgrq7gr43grrXgrrDgr4gsIOCuheCuteCviCDgrqrgr4HgrqTgr4Hgrqrgr43grqrgrr/grpXgr43grpXgrqrgr43grqrgrp/grr7grq7grrLgr40g4K6H4K6w4K+B4K6V4K+N4K6V4K6y4K6+4K6u4K+NLlxuXG7grongrpngr43grpXgrrPgr40g4K6D4K6q4K+L4K6p4K+NIOCumuCuvuCusOCvjeCunOCvjSDgrprgr4bgrq/gr43grq/grqrgr43grqrgrp/gr4Hgrq7gr43grqrgr4vgrqTgr4EsIOCuquCvh+Cun+CvjeCun+CusOCuvyDgrprgr4fgrq7grr/grqrgr43grqrgrr7grqngr40g4K6k4K6+4K6p4K6+4K6V4K614K+HIOCuruCvgeCun+CumeCvjeCuleCvgeCuruCvjS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgrq7gr4HgrpXgr43grpXgrr/grq/grqTgr43grqTgr4HgrrXgrq7gr40iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuCupOCun+CvgeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgTog4K6H4K6o4K+N4K6kIOCuheCuseCuv+CuteCuv+CuquCvjeCuquCvgeCuleCus+CviCDgrpLgrrDgr4Hgrqrgr4vgrqTgr4Hgrq7gr40g4K6V4K6+4K6f4K+N4K6f4K6+4K6k4K+BIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuCuleCvgeCuseCviOCuteCvgTog4K6S4K6y4K6/4K6v4K6/4K6p4K+N4K6x4K6/IOCuheCuseCuv+CuteCuv+CuquCvjeCuquCvgeCuquCvjSDgrqrgrp/gr43grp/grr/grq/grrLgrr/grqngr40g4K6V4K+A4K604K+HIOCuleCuvuCun+CvjeCun+CvgeCuruCvjSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4K6H4K6v4K6y4K+N4K6q4K+BOiDgrpLgrrLgrr/grq/grr/grqngr43grrHgrr8g4K6H4K6o4K+N4K6kIOCuheCuseCuv+CuteCuv+CuquCvjeCuquCvgeCuleCus+CviOCuleCvjSDgrpXgrr7grp/gr43grp/gr4Hgrq7gr40iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuCuheCupOCuv+CuleCuruCvjTog4K6F4K6x4K6/4K614K6/4K6q4K+N4K6q4K+B4K6V4K6z4K+NIOCuquCun+CvjeCun+Cuv+Cur+CusuCuv+CuqeCvjSDgrq7gr4fgrrLgr40g4K6q4K6V4K+B4K6k4K6/4K6v4K6/4K6y4K+NIOCukuCusuCuv+Cur+CvgeCun+CuqeCvjSDgrpXgrr7grp/gr43grp/gr4Hgrq7gr40iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i4K6F4K614K6a4K6w4K6u4K+NOiDgrpLgrrLgrr/grq/gr4Hgrp/grqngr40g4K6k4K6/4K6w4K+I4K6v4K6/4K6y4K+NIOCupOCvi+CuqeCvjeCuseCvgeCuruCvjSI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+JTEkZCDgrqjgrr/grq7grr/grp/grpngr43grpXgrrPgr4HgrpXgr43grpXgr4EgKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCuteCusOCviCk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7grpLgrrDgr4Eg4K6o4K6/4K6u4K6/4K6f4K6k4K+N4K6k4K6/4K6x4K+N4K6V4K+BICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPiDgrrXgrrDgr4gpPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy10ZS1ySU4vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRlLXJJTi9zdHJpbmdzLnhtbAppbmRleCBhNmM4MGFkLi44N2I3ODJmIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRlLXJJTi9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRlLXJJTi9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuCwh+CwquCxjeCwquCxgeCwoeCxgSDgsLLgsL7gsJXgsY0g4LCa4LGH4LCv4LCC4LCh4LC/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuCwleCwguCwn+CxhuCwguCwn+CxjeKAjOCwsuCxgSDgsKbgsL7gsJrgsKzgsKHgsY3gsKHgsL7gsK/gsL8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLgsLjgsYHgsLDgsJXgsY3gsLfgsL/gsKQg4LCu4LGL4LCh4LGNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCDgsLjgsL/gsLjgsY3gsJ/gsK7gsY0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IuCwteCxjeCwr+CwleCxjeCwpOCwv+Cwl+CwpOCwgiI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i4LCV4LCk4LGN4LCk4LC/4LCw4LC/4LCC4LCa4LGBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLgsJXgsL7gsKrgsYAg4LCa4LGH4LCv4LC/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i4LCF4LCk4LC/4LCV4LC/4LCC4LCa4LGBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLgsLjgsL7gsKbgsL4g4LC14LCa4LCo4LCCIOCwteCwsuCxhiDgsIXgsKTgsL/gsJXgsL/gsILgsJrgsYEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuCwreCwsOCxjeCwpOCxgCDgsJrgsYfgsK/gsILgsKHgsL8uLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i4LCk4LGK4LCy4LCX4LC/4LCC4LCa4LGBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJVUkzgsKjgsL8g4LCV4LC+4LCq4LGAIOCwmuCxh+Cwr+CwvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IuCwteCwmuCwqOCwvuCwqOCxjeCwqOCwvyDgsI7gsILgsJrgsYHgsJXgsYvgsILgsKHgsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuCwmuCwsOCxjeCwryDgsLDgsKbgsY3gsKbgsYEg4LCa4LGH4LCv4LC/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLgsJrgsLDgsY3gsK/gsKjgsYEg4LCq4LGB4LCo4LCw4LC+4LC14LGD4LCk4LCCIOCwmuCxh+Cwr+CwvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLgsLXgsJrgsKgg4LCO4LCC4LCq4LC/4LCVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IuCwqOCwv+CwmOCwguCwn+CxgeCwteCxgeCwleCxgSDgsJzgsYvgsKHgsL/gsILgsJrgsYEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IuCwpOCxiuCwsuCwl+Cwv+CwguCwmuCxgSI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLgsLXgsL7gsLLgsY3igIzgsKrgsYfgsKrgsLDgsY3igIzgsKjgsYEg4LCu4LC+4LCw4LGN4LCa4LCC4LCh4LC/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i4LCo4LGL4LCf4LC/4LCr4LC/4LCV4LGH4LC34LCo4LGNIOCwquCwsOCwv+CwtuCxgOCwsuCwqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i4LC34LCw4LCk4LGBIOCwquCxjeCwsOCwpuCwvuCwpCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IuCwqOCxi+Cwn+Cwv+Cwq+Cwv+CwleCxh+Cwt+CwqOCxjSDgsLjgsLngsL7gsK/gsJXgsIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiDgsLjgsJXgsY3gsLDgsL/gsK/gsIIg4LCa4LGH4LCv4LCs4LCh4LC/4LCC4LCm4LC/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOCwpuCxjeCwteCwvuCwsOCwviBWUE4g4LC44LCV4LGN4LCw4LC/4LCv4LCCIOCwmuCxh+Cwr+CwrOCwoeCwv+CwguCwpuCwvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IuCwqOCxhuCwn+CxjeKAjOCwteCwsOCxjeCwleCxjeKAjOCwqOCxgSDgsKjgsL/gsLDgsY3gsLXgsLngsL/gsILgsJrgsKHgsL7gsKjgsL/gsJXgsL8g4LCk4LC+4LCV4LCC4LCh4LC/LiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLgsK7gsYAg4LCo4LC/4LCw4LGN4LC14LC+4LC54LCV4LGB4LCh4LGBIOCwqOCwteCxgOCwleCwsOCwv+CwguCwmuCwvuCwsOCxgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i4LCu4LGAIOCwqOCwv+CwsOCxjeCwteCwvuCwueCwleCxgeCwsuCxgSDgsKTgsYrgsLLgsJfgsL/gsILgsJrgsL7gsLDgsYEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuCwrOCxjeCwr+CwvuCwn+CwsOCxgCDgsJzgsYDgsLXgsL/gsKTgsJXgsL7gsLLgsL7gsKjgsY3gsKjgsL8g4LCu4LGG4LCw4LGB4LCX4LGB4LCq4LCw4LCa4LCh4LCC4LCy4LGLIOCwuOCwueCwvuCwr+CwquCwoeCwn+CwvuCwqOCwv+CwleCwvywg4LCs4LGN4LCv4LC+4LCf4LCw4LGAIOCwuOCxh+CwteCwsOCxjSDgsK7gsYAg4LCq4LCw4LC/4LCV4LCw4LCCIOCwquCwqOCwv+CwpOCxgOCwsOCxgeCwqOCxgSDgsKTgsJfgsY3gsJfgsL/gsLjgsY3gsKTgsYHgsILgsKbgsL8g4LCu4LCw4LC/4LCv4LGBIOCwteCxiOCwrOCxjeCwsOCxh+Cwt+CwqOCxjeKAjOCwqOCxgSwg4LC44LGN4LCl4LC+4LCoIOCwuOCxh+CwteCwsuCwqOCxgSDgsK7gsLDgsL/gsK/gsYEg4LCO4LCV4LGN4LCV4LGB4LC1IOCwqOCxh+CwquCwpeCxjeCwryDgsKHgsYfgsJ/gsL7gsKjgsYEg4LCq4LCw4LC/4LCu4LC/4LCk4LCCIOCwmuCxh+CwuOCxjeCwpOCxgeCwguCwpuCwvy4g4LCH4LCu4LGG4LCv4LC/4LCy4LGNLCDgsK7gsYbgsLjgsYfgsJzgsL/gsILgsJfgsY0g4LCu4LCw4LC/4LCv4LGBIOCwuOCwruCwleCwvuCwsuCxgOCwleCwsOCwo+CwquCxiCDgsIbgsKfgsL7gsLDgsKrgsKHgsYcg4LCH4LCk4LCwIOCwheCwqOCxgeCwteCwsOCxjeCwpOCwqOCwvuCwsuCxgSDgsK7gsYDgsLDgsYEg4LC14LC+4LCf4LC/4LCo4LC/IOCwpOCxhuCwsOCwv+CwuOCxjeCwpOCxhyDgsK7gsL/gsKjgsLngsL4g4LCo4LC14LGA4LCV4LCw4LC/4LCC4LCa4LCs4LCh4LC14LGBLlxuXG7gsK7gsYAg4LCq4LCw4LC/4LCV4LCw4LCCIOCwm+CwvuCwsOCxjeCwnOCxjSDgsIXgsLXgsYHgsKTgsYHgsKjgsY3gsKjgsKrgsY3gsKrgsYHgsKHgsYEg4LCs4LGN4LCv4LC+4LCf4LCw4LGAIOCwuOCxh+CwteCwsOCxjSDgsLjgsY3gsLXgsK/gsILgsJrgsL7gsLLgsJXgsILgsJfgsL4g4LCG4LCr4LGNIOCwheCwteCxgeCwpOCxgeCwguCwpuCwvy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLgsKrgsY3gsLDgsL7gsK7gsYHgsJbgsY3gsK/gsKQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuCwrOCxjeCwsuCwvuCwleCxjSDgsJrgsYfgsK/gsKzgsKHgsL/gsILgsKbgsL86IOCwiCDgsKjgsYvgsJ/gsL/gsKvgsL/gsJXgsYfgsLfgsKjgsY3igIzgsLLgsKjgsYEg4LCO4LCq4LGN4LCq4LGB4LCh4LGCIOCwmuCxguCwquCwpuCxgSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLgsKTgsJXgsY3gsJXgsYHgsLU6IOCwqOCxi+Cwn+Cwv+Cwq+Cwv+CwleCxh+Cwt+CwqOCxjeKAjOCwsiDgsJzgsL7gsKzgsL/gsKTgsL4g4LCm4LC/4LCX4LGB4LC1IOCwreCwvuCwl+CwguCwsuCxiyDgsLbgsKzgsY3gsKbgsIIg4LCy4LGH4LCV4LGB4LCC4LCh4LC+IOCwmuCxguCwquCxgeCwpOCxgeCwguCwpuCwvyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4LC44LC+4LCn4LC+4LCw4LCj4LCCOiDgsIgg4LCo4LGL4LCf4LC/4LCr4LC/4LCV4LGH4LC34LCo4LGN4oCM4LCy4LCo4LGBIOCwtuCwrOCxjeCwpuCwgiDgsLLgsYfgsJXgsYHgsILgsKHgsL4g4LCa4LGC4LCq4LGB4LCk4LGB4LCC4LCm4LC/Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLgsIXgsKfgsL/gsJXgsII6IOCwqOCxi+Cwn+Cwv+Cwq+Cwv+CwleCxh+Cwt+CwqOCxjeKAjOCwsiDgsJzgsL7gsKzgsL/gsKTgsL4g4LCO4LCX4LGB4LC1IOCwreCwvuCwl+CwguCwsuCxiyDgsLbgsKzgsY3gsKbgsILgsKTgsYsg4LCa4LGC4LCq4LGB4LCk4LGB4LCC4LCm4LC/Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuCwheCwpOCxjeCwr+CwteCwuOCwsOCwgjog4LC44LGN4LCV4LGN4LCw4LGA4LCo4LGN4oCM4LCq4LGIIOCwtuCxgOCwmOCxjeCwsOCwguCwl+CwviDgsLbgsKzgsY3gsKbgsILgsKTgsYsg4LCa4LGC4LCq4LGB4LCk4LGB4LCC4LCm4LC/Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj4lMSRkIOCwqOCwv+CwruCwv+Cwt+CwvuCwsiDgsKrgsL7gsJ/gsYEgKDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+IOCwteCwsOCwleCxgSk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7gsJLgsJUg4LCo4LC/4LCu4LC/4LC34LCCIOCwquCwvuCwn+CxgSAoPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4g4LC14LCw4LCV4LGBKTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sCmluZGV4IDUxOGE2MjkuLjJlYzBmNGMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IuC4peC5h+C4reC4geC5gOC4peC4oiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLguYDguJnguLfguYnguK3guKvguLLguJbguLnguIHguIvguYjguK3guJnguYTguKfguYkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLguYLguKvguKHguJTguJvguKXguK3guJTguKDguLHguKIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiLguKPguLDguJrguJogQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i4Liq4LmI4Lin4LiZ4LiV4Lix4LinIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLguJXguLHguJQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuC4hOC4seC4lOC4peC4reC4gSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IuC4p+C4suC4hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i4Lin4Liy4LiH4LmA4Lib4LmH4LiZ4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiY4Lij4Lij4Lih4LiU4LiyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLguYHguJfguJnguJfguLXguYguLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i4Lil4LiaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiLguITguLHguJTguKXguK3guIEgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i4LmA4Lil4Li34Lit4LiB4LiC4LmJ4Lit4LiE4Lin4Liy4LihIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLguYDguKXguLTguIHguJfguLMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IuC4l+C4s+C4i+C5ieC4syI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLguIHguLLguKPguYDguKXguLfguK3guIHguILguYnguK3guITguKfguLLguKEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i4LmA4Lie4Li04LmI4Lih4LmD4LiZ4Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4LihIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLguKXguJoiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Lin4Lit4Lil4LmA4Lib4LmA4Lib4Lit4Lij4LmMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i4LiV4Lix4Lin4Lif4Lix4LiH4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLguJzguLnguYnguYDguKrguJnguK3guYDguIfguLfguYjguK3guJnguYTguIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLguJzguLnguYnguIrguYjguKfguKLguIHguLLguKPguYHguIjguYnguIfguYDguJXguLfguK3guJkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiDguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYHguKXguYnguKciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiLguYDguJvguLTguJTguYPguIrguYnguIfguLLguJkgVlBOIOC5guC4lOC4oiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLguYHguJXguLDguYDguJ7guLfguYjguK3guIjguLHguJTguIHguLLguKPguYDguITguKPguLfguK3guILguYjguLLguKIiPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i4Lit4Lix4Lib4LmA4LiU4LiV4LmC4LiU4Lii4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLguKXguJrguYLguJTguKLguJzguLnguYnguJTguLnguYHguKXguKPguLDguJrguJrguILguK3guIfguITguLjguJMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuC5gOC4nuC4t+C5iOC4reC4iuC5iOC4p+C4ouC4m+C4o+C4seC4muC4m+C4o+C4uOC4h+C4reC4suC4ouC4uOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5geC4muC4leC5gOC4leC4reC4o+C4teC5iCDguYLguKvguKHguJTguJvguKPguLDguKvguKLguLHguJTguYHguJrguJXguYDguJXguK3guKPguLXguYjguIjguLDguKXguJTguIHguLLguKPguJfguLPguIfguLLguJnguILguK3guIfguK3guLjguJvguIHguKPguJPguYzguYHguKXguLDguIjguLPguIHguLHguJTguIHguLLguKPguKrguLHguYjguJkg4Lia4Lij4Li04LiB4Liy4Lij4LiV4Liz4LmB4Lir4LiZ4LmI4LiHIOC5geC4peC4sOC4guC5ieC4reC4oeC4ueC4peC5geC4muC5h+C4geC4geC4o+C4suC4p+C4lOC5jOC4quC5iOC4p+C4meC5g+C4q+C4jeC5iCDguKrguLPguKvguKPguLHguJrguK3guLXguYDguKHguKUg4LiB4Liy4Lij4Lij4Lix4Lia4Liq4LmI4LiH4LiC4LmJ4Lit4LiE4Lin4Liy4LihIOC5geC4peC4sOC5geC4reC4m+C4reC4t+C5iOC4meC5hiDguJfguLXguYjguYPguIrguYnguIHguLLguKPguIvguLTguIfguITguYzguIjguLDguYTguKHguYjguK3guLHguJvguYDguJTguJXguKvguLLguIHguITguLjguJPguYTguKHguYjguYDguJvguLTguJTguILguLbguYnguJnguKHguLJcblxu4LmC4Lir4Lih4LiU4Lib4Lij4Liw4Lir4Lii4Lix4LiU4LmB4Lia4LiV4LmA4LiV4Lit4Lij4Li14LmI4LiI4Liw4Lib4Li04LiU4LmC4LiU4Lii4Lit4Lix4LiV4LmC4LiZ4Lih4Lix4LiV4Li04LiC4LiT4Liw4LiK4Liy4Lij4LmM4LiI4Lit4Li44Lib4LiB4Lij4LiT4LmMIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i4LiE4Lin4Liy4Lih4Liq4Liz4LiE4Lix4LiNIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLguJrguKXguYfguK3guIE6IOC4reC4ouC5iOC4suC5geC4quC4lOC4h+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC5gOC4q+C4peC5iOC4suC4meC4teC5iSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLguJXguYjguLM6IOC5geC4quC4lOC4h+C4l+C4teC5iOC4lOC5ieC4suC4meC4peC5iOC4suC4h+C4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC5guC4lOC4ouC5hOC4oeC5iOC4quC5iOC4h+C5gOC4quC4teC4ouC4hyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i4Lib4LiB4LiV4Li0OiDguYHguKrguJTguIfguIHguLLguKPguYHguIjguYnguIfguYDguJXguLfguK3guJnguYDguKvguKXguYjguLLguJnguLXguYnguYLguJTguKLguYTguKHguYjguKrguYjguIfguYDguKrguLXguKLguIciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IuC4quC4ueC4hzog4LmB4Liq4LiU4LiH4LiX4Li14LmI4LiU4LmJ4Liy4LiZ4Lia4LiZ4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4LmB4Lil4Liw4Liq4LmI4LiH4LmA4Liq4Li14Lii4LiHIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+IuC4lOC5iOC4p+C4mTog4LmB4Liq4LiU4LiH4Lia4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LmD4LiZ4LiK4LmI4Lin4LiH4LmA4Lin4Lil4Liy4Liq4Lix4LmJ4LiZ4LmGIOC5geC4peC4sOC4quC5iOC4h+C5gOC4quC4teC4ouC4hyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+4Lij4Liw4Lii4Liw4LmA4Lin4Lil4LiyICUxJGQg4LiZ4Liy4LiX4Li1ICjguIjguJnguJbguLbguIfguYDguKfguKXguLIgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+4Lij4Liw4Lii4Liw4LmA4Lin4Lil4LiyIDEg4LiZ4Liy4LiX4Li1ICjguIjguJnguJbguLbguIfguYDguKfguKXguLIgPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwKaW5kZXggMWI3YTEwZC4uMzZhYTlkOSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iSS1sb2NrIG5nYXlvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4iOTk5KyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJOYWthdGFnbyBhbmcgbWdhIGNvbnRlbnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiJTYWZlIG1vZGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIFN5c3RlbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iUGVyc29uYWwiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IkktY3V0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3B5YWhpbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IkktcGFzdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IkktcGFzdGUgYmlsYW5nIHBsYWluIHRleHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IlBhbGl0YW4uLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4iVGFuZ2dhbGluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJLb3B5YWhpbiBhbmcgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iUHVtaWxpIG5nIHRla3N0byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iSS11bmRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJHYXdpbmcgbXVsaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJQYWdwaWxpIG5nIHRla3N0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJJZGFnZGFnIHNhIGRpa3N5dW5hcnlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiJUYW5nZ2FsaW4iPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iQmFndWhpbiBhbmcgd2FsbHBhcGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iTm90aWZpY2F0aW9uIGxpc3RlbmVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiJOYWdiaWJpZ2F5IG5nIGt1bmRpc3lvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+Ik5vdGlmaWNhdGlvbiBhc3Npc3RhbnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+Ik5ha2EtYWN0aXZhdGUgYW5nIFZQTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZV9sb25nIiBtc2dpZD0iNjQwMDcxNDc5ODA0OTI1MjI5NCI+IklzaW5hYWt0aWJvIGFuZyBWUE4gbmcgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iUGluZHV0aW4gdXBhbmcgcGFtYWhhbGFhbiBhbmcgbmV0d29yay4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4iTmEtdXBkYXRlIG5nIGl5b25nIGFkbWluaXN0cmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+Ik5hLWRlbGV0ZSBuZyBpeW9uZyBhZG1pbmlzdHJhdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJVcGFuZyBtYXR1bHVuZ2FuZyBwYWdidXRpaGluIGFuZyB0YWdhbCBuZyBiYXRlcnlhLCBiaW5hYmF3YXNhbiBuZyBwYW5ndGlwaWQgbmcgYmF0ZXJ5YSBhbmcgcGFnZ2FuYXAgbmcgaXlvbmcgZGV2aWNlIGF0IG5pbGlsaW1pdGFoYW4gYW5nIHBhZy12aWJyYXRlLCBtZ2Egc2VyYmlzeW8gbmcgbG9rYXN5b24gYXQga2FyYW1paGFuIHNhIGRhdGEgbmcgYmFja2dyb3VuZC4gTWFhYXJpbmcgaGluZGkgbWFnLXVwZGF0ZSBhbmcgZW1haWwsIHBhZ21lbWVuc2FoZSBhdCBpYmEgcGFuZyBtZ2EgYXBwIG5hIHVtYWFzYSBzYSBwYWdzaS1zeW5jIG1hbGliYW4ga3VuZyBidWtzYW4gbW8gYW5nIG1nYSBpeW9uLlxuXG5Bd3RvbWF0aWtvbmcgbmFnLW8tb2ZmIGFuZyBwYW5ndGlwaWQgbmcgYmF0ZXJ5YSBrYXBhZyBuYWdjaGEtY2hhcmdlIGFuZyBpeW9uZyBkZXZpY2UuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4iS2FoYWxhZ2FoYW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+Ik5ha2EtYmxvY2s6IEh1d2FnIGthaWxhbm1hbiBpcGFraXRhIGFuZyBtZ2Egbm90aWZpY2F0aW9uIG5hIGl0byI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJNYWJhYmE6IFRhaGltaWsgbmEgaXBha2l0YSBzYSBpYmFiYSBuZyBsaXN0YWhhbiBuZyBtZ2Egbm90aWZpY2F0aW9uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiJOb3JtYWw6IFRhaGltaWsgbmEgaXBha2l0YSBhbmcgbWdhIG5vdGlmaWNhdGlvbiBuYSBpdG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Ik1hdGFhczogSXBha2l0YSBzYSB0YWFzIG5nIGxpc3RhaGFuIG5nIG1nYSBub3RpZmljYXRpb24gYXQgbWFnLXBsYXkgbmcgdHVub2ciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iQWdhcmFuOiBJcGFzaWxpcCBzYSBzY3JlZW4gYXQgbWFnLXBsYXkgbmcgdHVub2ciPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5TYSBsb29iIG5nICUxJGQgbWludXRvIChoYW5nZ2FuZyA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlNhIGxvb2IgbmcgJTEkZCBuYSBtaW51dG8gKGhhbmdnYW5nIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sCmluZGV4IDM5MDRhYTUuLjdiMGJkYzYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApAQCAtMjIzLDYgKzIyMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfYWN0aW9uX2xvY2tkb3duIiBtc2dpZD0iODc1MTU0MjUxNDcyNDMzMjg3MyI+IsWeaW1kaSBraWxpdGxlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IsSww6dlcmlrIGdpemxlbmRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iR8O8dmVubGkgbW9kIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCBTaXN0ZW1pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJLacWfaXNlbCI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4iS2VzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3B5YWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iWWFwxLHFn3TEsXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IkTDvHogbWV0aW4gb2xhcmFrIHlhcMSxxZ90xLFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJEZcSfacWfdGlyLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IlNpbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJMXCd5aSBrb3B5YWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iTWV0aW4gc2XDpyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4iR2VyaSBhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iWWVuaWRlbiB5YXAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iTWV0aW4gc2XDp2ltaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJTw7Z6bMO8xJ9lIGVrbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IlNpbCI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiJEdXZhciBrYcSfxLFkxLFuxLEgZGXEn2nFn3RpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IkJpbGRpcmltIGRpbmxleWljaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4iRHVydW0gc2HEn2xhecSxY8SxIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iQmlsZGlyaW0geWFyZMSxbWPEsXPEsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4iVlBOIGV0a2lubGXFn3RpcmlsZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4sIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiB0YXJhZsSxbmRhbiBldGtpbmxlxZ90aXJpbGRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4iQcSfxLEgecO2bmV0bWVrIGnDp2luIGRva3VudW4uIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IlnDtm5ldGljaW5peiB0YXJhZsSxbmRhbiBnw7xuY2VsbGVuZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IlnDtm5ldGljaW5peiB0YXJhZsSxbmRhbiBzaWxpbmRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJQaWwgdGFzYXJydWZ1IMO2emVsbGnEn2ksIHBpbCDDtm1yw7xuw7wgaXlpbGXFn3Rpcm1leWUgeWFyZMSxbWPEsSBvbG1hayBpw6dpbiBjaWhhesSxbiBwZXJmb3JtYW5zxLFuxLEgZMO8xZ/DvHLDvHIsIHRpdHJlxZ9pbWksIGtvbnVtIGhpem1ldGxlcmluaSB2ZSBhcmthIHBsYW4gdmVyaWxlcmluaW4gw6dvxJ91bnUgc8SxbsSxcmxhci4gU2Vua3Jvbml6YXN5b25hIGRheWFsxLEgb2xhcmFrIMOnYWzEscWfYW4gZS1wb3N0YSwgbWVzYWpsYcWfbWEgdXlndWxhbWFsYXLEsSB2ZSBkacSfZXIgdXlndWxhbWFsYXIsIGJ1bmxhcsSxIGHDp21hZMSxxJ/EsW7EsXogc8O8cmVjZSBnw7xuY2VsbGVubWV5ZWJpbGlyLlxuXG5DaWhhesSxbsSxeiDFn2FyaiBvbHVya2VuIHBpbCB0YXNhcnJ1ZnUgb3RvbWF0aWsgb2xhcmFrIGthcGF0xLFsxLFyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IsOWbmVtIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiJFbmdlbGxlbmRpOiBCdSBiaWxkaXJpbWxlcmkgaGnDp2JpciB6YW1hbiBnw7ZzdGVybWUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iRMO8xZ/DvGs6IEJpbGRpcmltIGxpc3Rlc2luaW4gYWx0xLFuZGEgc2Vzc2l6Y2UgZ8O2c3RlciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iTm9ybWFsOiBCdSBiaWxkaXJpbWxlcmkgc2Vzc2l6Y2UgZ8O2c3RlciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iWcO8a3NlazogQmlsZGlyaW0gbGlzdGVzaW5pbiDDvHN0w7xuZGUgZ8O2c3RlciB2ZSBzZXMgw6fEsWthciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiJBY2lsOiBFa3JhbmEgZ2V0aXIgdmUgc2VzIMOnxLFrYXIiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQgZGFraWthIGnDp2luICjFn3Ugc2FhdGUga2FkYXI6IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkJpciBkYWtpa2EgacOnaW4gKMWfdSBzYWF0ZSBrYWRhcjogPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwKaW5kZXggZTM4ZWMxZC4uMzA4ZTUwYyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCkBAIC0yMjUsNiArMjI1LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i0JHQu9C+0LrRg9Cy0LDRgtC4INC30LDRgNCw0LciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i0JLQvNGW0YHRgiDRgdGF0L7QstCw0L3QviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+ItCR0LXQt9C/LiDRgNC10LbQuNC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4i0KHQuNGB0YLQtdC80LAgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i0J7RgdC+0LHQuNGB0YLRliDQtNCw0L3RliI8L3N0cmluZz4KQEAgLTU0Miw4ICs1NDMsOCBAQAogICAgIDxpdGVtIG1zZ2lkPSI5MTkyNTE0ODA2OTc1ODk4OTYxIj4i0KPQutCw0LfQsNGC0LgiPC9pdGVtPgogICA8L3N0cmluZy1hcnJheT4KICAgPHN0cmluZy1hcnJheSBuYW1lPSJlbWFpbEFkZHJlc3NUeXBlcyI+Ci0gICAgPGl0ZW0gbXNnaWQ9IjgwNzM5OTQzNTI5NTYxMjkxMjciPiLQlNC+0LwuIjwvaXRlbT4KLSAgICA8aXRlbSBtc2dpZD0iNzA4NDIzNzM1NjYwMjYyNTYwNCI+ItCg0L7QsS4iPC9pdGVtPgorICAgIDxpdGVtIG1zZ2lkPSI4MDczOTk0MzUyOTU2MTI5MTI3Ij4i0JTQvtC80LDRiNC90Y8iPC9pdGVtPgorICAgIDxpdGVtIG1zZ2lkPSI3MDg0MjM3MzU2NjAyNjI1NjA0Ij4i0KDQvtCx0L7Rh9CwIjwvaXRlbT4KICAgICA8aXRlbSBtc2dpZD0iMTExMjA0NDQxMDY1OTAxMTAyMyI+ItCG0L3RiNC1IjwvaXRlbT4KICAgICA8aXRlbSBtc2dpZD0iMjM3NDkxMzk1Mjg3MDExMDYxOCI+ItCj0LrQsNC30LDRgtC4IjwvaXRlbT4KICAgPC9zdHJpbmctYXJyYXk+CkBAIC04NjgsMTAgKzg2OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+ItCS0LjRgNGW0LcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLQmtC+0L/RltGO0LIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i0JLRgdGC0LDQstC40YLQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i0JLRgdGC0LDQstC40YLQuCDRj9C6INC/0YDQvtGB0YLQuNC5INGC0LXQutGB0YIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+ItCX0LDQvNGW0L3QuNGC0LguLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i0JLQuNC00LDQu9C40YLQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i0JrQvtC/0ZbRjtCyLiBVUkwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLQktC40LHRgNCw0YLQuCDRgtC10LrRgdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLQktGW0LTQvNGW0L3QuNGC0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+ItCf0L7QstGC0L7RgNC40YLQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLQktC40LHRltGAINGC0LXQutGB0YLRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLQlNC+0LTQsNGC0Lgg0LIg0YHQu9C+0LLQvdC40LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+ItCS0LjQtNCw0LvQuNGC0LgiPC9zdHJpbmc+CkBAIC0xMTIxLDYgKzExMjUsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i0JfQvNGW0L3QuNGC0Lgg0YTQvtC90L7QstC40Lkg0LzQsNC70Y7QvdC+0LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLQodC70YPQttCx0LAg0YfQuNGC0LDQvdC90Y8g0YHQv9C+0LLRltGJ0LXQvdGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLQn9C+0YHRgtCw0YfQsNC70YzQvdC40Log0YPQvNC+0LIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLQlNC40YHQv9C10YLRh9C10YAg0YHQv9C+0LLRltGJ0LXQvdGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiLQnNC10YDQtdC20YMgVlBOINCw0LrRgtC40LLQvtCy0LDQvdC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4i0JzQtdGA0LXQttGDIFZQTiDQsNC60YLQuNCy0L7QstCw0L3QviDQv9GA0L7Qs9GA0LDQvNC+0Y4gPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i0KLQvtGA0LrQvdGW0YLRjNGB0Y8sINGJ0L7QsSDQutC10YDRg9Cy0LDRgtC4INC80LXRgNC10LbQtdGOLiI8L3N0cmluZz4KQEAgLTE0NTgsMTIgKzE0NjMsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLQntC90L7QstC70LXQvdC+INCw0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGA0L7QvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i0JLQuNC00LDQu9C40LIg0LDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+ItCp0L7QsSDQv9C+0LTQvtCy0LbQuNGC0Lgg0YfQsNGBINGA0L7QsdC+0YLQuCDQsNC60YPQvNGD0LvRj9GC0L7RgNCwLCDRhNGD0L3QutGG0ZbRjyDQt9Cw0L7RidCw0LTQttC10L3QvdGPINC30LDRgNGP0LTRgyDQsNC60YPQvNGD0LvRj9GC0L7RgNCwINC30L3QuNC20YPRlCDQv9GA0L7QtNGD0LrRgtC40LLQvdGW0YHRgtGMINC/0YDQuNGB0YLRgNC+0Y4sINCwINGC0LDQutC+0LYg0L7QsdC80LXQttGD0ZQg0LLRltCx0YDQsNGG0ZbRjiwg0YTRg9C90LrRhtGW0Zcg0YHQu9GD0LbQsSDQu9C+0LrQsNGG0ZbRlyDRgtCwINC/0LXRgNC10LTQsNCy0LDQvdC90Y8g0LHRltC70YzRiNC+0YHRgtGWINGE0L7QvdC+0LLQuNGFINC00LDQvdC40YUuINCV0LvQtdC60YLRgNC+0L3QvdCwINC/0L7RiNGC0LAsINGH0LDRgtC4INC5INGW0L3RiNGWINC00L7QtNCw0YLQutC4LCDRj9C60ZYg0YHQuNC90YXRgNC+0L3RltC30YPRjtGC0YzRgdGPLCDQvNC+0LbRg9GC0Ywg0L3QtSDQvtC90L7QstC70Y7QstCw0YLQuNGB0Y8sINC00L7QutC4INCy0Lgg0ZfRhSDQvdC1INCy0ZbQtNC60YDQuNGU0YLQtS5cblxu0KTRg9C90LrRhtGW0Y8g0LfQsNC+0YnQsNC00LbQtdC90L3RjyDQt9Cw0YDRj9C00YMg0LDQutGD0LzRg9C70Y/RgtC+0YDQsCDQsNCy0YLQvtC80LDRgtC40YfQvdC+INCy0LjQvNC40LrQsNGU0YLRjNGB0Y8g0L/RltC0INGH0LDRgSDQt9Cw0YDRj9C00LbQsNC90L3RjyDQv9GA0LjRgdGC0YDQvtGOLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+ItCf0YDRltC+0YDQuNGC0LXRgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i0JfQsNCx0LvQvtC60L7QstCw0L3Qvjog0L3QtSDQv9C+0LrQsNC30YPQstCw0YLQuCDRhtGWINGB0L/QvtCy0ZbRidC10L3QvdGPIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+ItCd0LjQt9GM0LrQuNC5INC/0YDRltC+0YDQuNGC0LXRgjog0L/QvtC60LDQt9GD0LLQsNGC0Lgg0YbRliDRgdC/0L7QstGW0YnQtdC90L3RjyDQstC90LjQt9GDINGB0L/QuNGB0LrRgyDQsdC10Lcg0LfQstGD0LrQvtCy0L7Qs9C+INGB0LjQs9C90LDQu9GDIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLQodGC0LDQvdC00LDRgNGC0L3QuNC5INC/0YDRltC+0YDQuNGC0LXRgjog0L/QvtC60LDQt9GD0LLQsNGC0Lgg0YbRliDRgdC/0L7QstGW0YnQtdC90L3RjyDQsdC10Lcg0LfQstGD0LrQvtCy0L7Qs9C+INGB0LjQs9C90LDQu9GDIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLQktC40YHQvtC60LjQuSDQv9GA0ZbQvtGA0LjRgtC10YI6INC/0L7QutCw0LfRg9Cy0LDRgtC4INGG0ZYg0YHQv9C+0LLRltGJ0LXQvdC90Y8g0LLQs9C+0YDRliDRgdC/0LjRgdC60YMg0LfRliDQt9Cy0YPQutC+0LLQuNC8INGB0LjQs9C90LDQu9C+0LwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i0KLQtdGA0LzRltC90L7QstC+OiDQv9C+0LrQsNC30YPQstCw0YLQuCDRhtGWINGB0L/QvtCy0ZbRidC10L3QvdGPINC90LAg0LXQutGA0LDQvdGWINC30ZYg0LfQstGD0LrQvtCy0LjQvCDRgdC40LPQvdCw0LvQvtC8Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+JTEkZCDRhdCy0LjQu9C40L3RgyAo0LTQviA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0iZmV3Ij4lMSRkINGF0LLQuNC70LjQvdC4ICjQtNC+IDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdXItclBLL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy11ci1yUEsvc3RyaW5ncy54bWwKaW5kZXggZmZiMjkwMC4uY2EyNmU5YiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy11ci1yUEsvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy11ci1yUEsvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLYp9io2r7bjCDZhdmC2YHZhCDaqdix24zauiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfbm90aWZpY2F0aW9uX2luZm9fb3ZlcmZsb3ciIG1zZ2lkPSI1MzAxOTgxNzQxNzA1MzU0OTkzIj4i4oCOOTk5K+KAjiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIG1zZ2lkPSIxNzY5NDI1NDczMTY4MzQ3ODM5Ij4iKDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLZhdmI2KfYryDZhdiu2YHbjCDbgduM2roiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLYrdmB2KfYuNiq24wg2YjYtti5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4i4oCPQW5kcm9pZCDYs9iz2bnZhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i2LDYp9iq24wiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+Itqp2KfZuduM2roiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+Itqp2KfZvtuMINqp2LHbjNq6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i2b7bjNiz2bkg2qnYsduM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+Itiz2KfYr9uBINmF2KrZhiDaqduSINi32YjYsSDZvtixINm+24zYs9m5INqp2LHbjNq6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLYqtio2K/bjNmEINqp2LHbjNq64oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+Itit2LDZgSDaqdix24zauiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i4oCPVVJMINqp2KfZvtuMINqp2LHbjNq6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i2YXYqtmGINmF2YbYqtiu2Kgg2qnYsduM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+Itqp2KfZhNi52K/ZhSDaqdix24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i2K/ZiNio2KfYsduBINqp2LHbjNq6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+ItmF2KrZhiDaqdinINin2YbYqtiu2KfYqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLZhNi62Kog2YXbjNq6INi02KfZhdmEINqp2LHbjNq6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLYrdiw2YEg2qnYsduM2roiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i2YjYp9mEINm+24zZvtixINiq2KjYr9uM2YQg2qnYsduM2roiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLYp9i32YTYp9i5INiz2YbZhtuSINmI2KfZhNinIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLYtNix2Lcg2YHYsdin24HZhSDaqdmG2YbYr9uBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i2KfYt9mE2KfYuSDaqdinINmF2LnYp9mI2YYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IuKAj1ZQTiDZgdi52KfZhCDbgdmI2q/bjNinIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4i4oCPPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+INqp25Ig2LDYsduM2LnbgSBWUE4g2YHYudin2YQg24HbkiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+ItmG24zZuSDZiNix2qkg2qnYpyDZhti42YUg2qnYsdmG25Ig2qnbjNmE2KbbkiDahtq+2YjYptuM2rrblCI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLYotm+INqp25Ig2YXZhtiq2LjZhSDZhtuSINin2b4g2ojZitm5INqp2LEg2K/bjNinIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLYotm+INqp25Ig2YXZhtiq2LjZhSDaqduMINis2KfZhtioINiz25Ig2K3YsNmBINqp2LEg2K/bjNinINqv24zYpyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i2KjbjNm52LHbjCDaqduMINmF24zYudin2K8g2Kjbgdiq2LEg2qnYsdmG25Ig2YXbjNq6INmF2K/YryDaqdix2YbbkiDaqduM2YTYptuS2Iwg2KjbjNm52LHbjCDYs9uM2YjYsSDYotm+INqp25Ig2KLZhNuBINqp24wg2qnYp9ix2qnYsdiv2q/bjCDaqdmFINqp2LEg2K/bjNiq24wg24HbkiDYp9mI2LEg2YjYp9im2KjYsduM2LTZhtiMINmF2YLYp9mFINqp24wg2LPYsdmI2LPYsiDYp9mI2LEg2b7YsyDZhdmG2LjYsSDaqdinINio24zYtNiq2LEg2ojbjNm52Kcg2YXYrdiv2YjYryDaqdixINiv24zYqtuMINuB25LblCDYp9uMINmF24zZhNiMINm+24zYutin2YUg2LHYs9in2YbbjCDYp9mI2LEg2YXYt9in2KjZgtiqINm+2LDbjNix24wg2b7YsSDZhdmG2K3YtdixINiv24zar9ixINin24zZvtizINmF2YXaqdmGINuB25Ig2KfYsyDZiNmC2Kog2KraqSDYp9m+INqI24zZuSDZhtuBINuB2YjauiDYrNioINiq2qkg2KLZviDYp9mG24HbjNq6INmG24Eg2qnavtmI2YTbjNq625Rcblxu2KLZviDaqdinINii2YTbgSDahtin2LHYrCDbgdmI2KrbkiDZiNmC2Kog2KjbjNm52LHbjCDYs9uM2YjYsSDYrtmI2K8g2KjYrtmI2K8g2KLZgSDbgdmIINis2KfYqtuMINuB25LblCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+Itin24HZhduM2KoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+ItmF2LPYr9mI2K8g2qnYsdiv24E6INuM24Eg2KfYt9mE2KfYudin2Kog2qnYqNq+24wg2YXYqiDYr9qp2r7Yp9im24zauiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLZvtiz2Ko6INin2LfZhNin2LnYp9iqINqp24wg2YHbgdix2LPYqiDaqduSINmG24zahtuSINiu2KfZhdmI2LTbjCDYs9uSINiv2qnavtin2KbbjNq6Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLYudin2YU6INiu2KfZhdmI2LTbjCDYs9uSINuM24Eg2KfYt9mE2KfYudin2Kog2K/aqdq+2KfYptuM2roiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Itin2LnZhNuMOiDYp9i32YTYp9i52KfYqiDaqduMINmB24HYsdiz2Kog2b7YsSDYs9ioINiz25Ig2KfZiNm+2LEg2K/aqdq+2KfYptuM2rog2KfZiNixINii2YjYp9iyINqG2YTYp9im24zauiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLYp9ix2KzZhtm5OiDYp9iz2qnYsduM2YYg2b7YsSDYr9qp2r7Yp9im24zauiDYp9mI2LEg2KLZiNin2LIg2obZhNin2KbbjNq6Ijwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7igI8lMSRkINmF2YbZuSDaqduM2YTYptuSICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiDYqtqpKTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPtin24zaqSDZhdmG2bkg2qnbjNmE2KbbkiAo2KraqSA8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXV6LXJVWi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdXotclVaL3N0cmluZ3MueG1sCmluZGV4IGMzMzM2MGQuLjNmM2QxNTEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdXotclVaL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdXotclVaL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iUXVsZmxhc2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iS29udGVudCB5YXNoaXJpbGRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iWGF2ZnNpeiB1c3VsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCB0aXppbWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IlNoYXhzaXkiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+Iktlc2lzaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iTnVzeGEgb2xpc2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiJKb3lsYXNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiJPZGRpeSBtYXRuIHNpZmF0aWRhIGpveWxhc2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IkFsbWFzaHRpcmlzaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJP4oCYY2hpcmlzaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4iVVJM4oCZZGFuIG51c3hhIG9saXNoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iTWF0bm5pIHRhbmxhc2giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkJla29yIHFpbGlzaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4iUWF5dGFyaXNoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+Ik1hdG5pIGJlbGdpbGFzaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiJMdWfigJhhdGdhIHFv4oCYc2hpc2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+Ik/igJhjaGlyaXNoIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IkZvbiByYXNtaW5pIG/igJh6Z2FydGlyaXNoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iQmlsZGlyaXNobm9tYSB0aW5nbG92Y2hpc2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlNoYXJ0bGFybmkgdGFxZGltIGV0dXZjaGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiJCaWxkaXJpc2hub21hIHlvcmRhbWNoaXNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4gZmFvbGxhc2h0aXJpbGRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iVlBOIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiB0b21vbmlkYW4gZmFvbGxhc2h0aXJpbGdhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlRhcm1vcW5pIGJvc2hxYXJpc2ggdWNodW4gYm9zaW5nLiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiJBZG1pbmlzdHJhdG9yaW5naXogdG9tb25pZGFuIHlhbmdpbGFuZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IkFkbWluaXN0cmF0b3JpbmdpeiB0b21vbmlkYW4gb+KAmGNoaXJpbGdhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4iQmF0YXJleWEgcXV2dmF0aW5pIHV6b3Fyb3EgdmFxdGdhIHlldGthemlzaCB1Y2h1biBxdXZ2YXQgdGVqYXNoIGZ1bmtzaXlhc2kgcXVyaWxtYW5naXogdW51bWRvcmxpZ2luaSBrYW1heXRpcmFkaSBoYW1kYSB1bmluZyB0ZWJyYW5pc2hpIHZhIG9ycWEgZm9uZGEgaW50ZXJuZXRkYW4gZm95ZGFsYW5pc2hpbmkgY2hla2xheWRpLiBTaW54cm9ubGFuaXNobmkgdGFsYWIgcWlsYWRpZ2FuIGUtcG9jaHRhLCB4YWJhciBhbG1hc2hpbnV2IHZhIGJvc2hxYSBpbG92YWxhciBlc2EgcWFjaG9ua2kgdWxhcm5pIGlzaGdhIHR1c2hpcmdhbmluZ2l6ZGEgeWFuZ2lsYW5hZGkuXG5cblF1cmlsbWEgcXV2dmF0IG9sYXlvdGdhbmRhIHF1dnZhdCB0ZWphc2ggZnVua3NpeWFzaSBhdnRvbWF0aWsgdGFyemRhIG/igJhjaGFkaS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJNdWhpbWxpZ2kiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IkJsb2tsYW5nYW46IGJ1IGJpbGRpcmlzaG5vbWFsYXIgYm9zaHFhIGtv4oCYcnNhdGlsbWFzaW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iUGFzdDogYmlsZGlyaXNobm9tYWxhciByb+KAmHl4YXRpbmluZyBveGlyaWRhIG92b3pzaXoga2/igJhyc2F0aWxzaW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+Ik9kZGl5OiBidSBiaWxkaXJpc2hub21hbGFyIG92b3pzaXoga2/igJhyc2F0aWxzaW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Ill1cW9yaTogYmlsZGlyaXNobm9tYWxhciByb+KAmHl4YXRpbmluZyBib3NoaWRhIG92b3ogYmlsYW4ga2/igJhyc2F0aWxzaW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iU2hvc2hpbGluY2g6IGJhcmNoYSBveW5hbGFyIHVzdGlkYSBzaWduYWwgb3ZvemkgYmlsYW4ga2/igJhyc2F0aWxzaW4iPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQgZGFxaXFhICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPiBnYWNoYSk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5CaXIgZGFxaXFhICg8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8wIj4lMiRzPC94bGlmZjpnPiBnYWNoYSk8L2l0ZW0+CkBAIC0xNTExLDYgKzE1MTAsNiBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJGQ8L3hsaWZmOmc+IHRhIHRhbmxhbmRpPC9pdGVtPgogICAgIDwvcGx1cmFscz4KICAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfbm90aWZpY2F0aW9uX3RvcGljX2xhYmVsIiBtc2dpZD0iMjI3NTg2MTQ1NzkxODcwODI5Ij4iQm9zaHFhIGJlbGdpbGFyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+IlVzaGJ1IGJpbGRpcmlzaG5vbWFsYXJuaW5nIG11aGltbGlnaW5pIG/igJhybmF0Z2Fuc2l6LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV9wZXJzb24iIG1zZ2lkPSI5MTYwMTMzNTk3MjYyOTM4Mjk2Ij4iSmFsYiBxaWxpbmdhbiBvZGFtbGFyIHR1ZmF5bGkgYnUgbXVoaW0uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaW1wb3J0YW5jZV9mcm9tX3RvcGljIiBtc2dpZD0iMzU3MjI4MDQzOTg4MDAyMzIzMyI+IlNpeiB1c2hidSBiaWxkaXJpc2hub21hbGFybmluZyBtdWhpbWxpZ2luaSBiZWxnaWxhZ2Fuc2l6LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV9wZXJzb24iIG1zZ2lkPSI5MTYwMTMzNTk3MjYyOTM4Mjk2Ij4iQnUgb2RhbWxhciBzaXogdWNodW4gbXVoaW0uIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy12aS9zdHJpbmdzLnhtbAppbmRleCA0OWUxNGRmLi5jNTM4Njg0IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiJLaMOzYSBuZ2F5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+Ik7hu5lpIGR1bmcgYuG7iyDhuqluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iQ2jhur8gxJHhu5kgYW4gdG/DoG4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJI4buHIHRo4buRbmcgQW5kcm9pZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4iQ8OhIG5ow6JuIjwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJD4bqvdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4iU2FvIGNow6lwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iRMOhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4iRMOhbiBkxrDhu5tpIGThuqFuZyB2xINuIGLhuqNuIHRodeG6p24gdMO6eSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4iVGhheSB0aOG6vy4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJYw7NhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJTYW8gY2jDqXAgVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iQ2jhu41uIHbEg24gYuG6o24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+Ikhvw6BuIHTDoWMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IkzDoG0gbOG6oWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4iTOG7sWEgY2jhu41uIHbEg24gYuG6o24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4iVGjDqm0gdsOgbyB04burIMSRaeG7g24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IljDs2EiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iVGhheSDEkeG7lWkgaMOsbmggbuG7gW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiJUcsOsbmggeOG7rSBsw70gdGjDtG5nIGLDoW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlRyw6xuaCBjdW5nIGPhuqVwIMSRaeG7gXUga2nhu4duIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iVHLhu6MgbMO9IHRow7RuZyBiw6FvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiLEkMOjIGvDrWNoIGhv4bqhdCBWUE4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJWUE4gxJHGsOG7o2MgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IGvDrWNoIGhv4bqhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IkNo4bqhbSDEkeG7gyBxdeG6o24gbMO9IG3huqFuZy4iPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4ixJDGsOG7o2MgY+G6rXAgbmjhuq10IGLhu59pIHF14bqjbiB0cuG7iyB2acOqbiBj4bunYSBi4bqhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4ixJDDoyBi4buLIHjDs2EgYuG7n2kgcXXhuqNuIHRy4buLIHZpw6puIGPhu6dhIGLhuqFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLEkOG7gyBnacO6cCB0xINuZyB0deG7lWkgdGjhu40gcGluLCB0csOsbmggdGnhur90IGtp4buHbSBwaW4gc+G6vSBnaeG6o20gaGnhu4d1IHN14bqldCB0aGnhur90IGLhu4sgY+G7p2EgYuG6oW4gdsOgIGjhuqFuIGNo4bq/IHJ1bmcsIGThu4tjaCB24bulIHbhu4sgdHLDrSB2w6AgaOG6p3UgaOG6v3QgZOG7ryBsaeG7h3UgbuG7gW4uIEVtYWlsLCBuaOG6r24gdGluIHbDoCBjw6FjIOG7qW5nIGThu6VuZyBraMOhYyBk4buxYSB0csOqbiDEkeG7k25nIGLhu5kgaMOzYSBjw7MgdGjhu4Mga2jDtG5nIGPhuq1wIG5o4bqtdCBu4bq/dSBi4bqhbiBraMO0bmcgbeG7nyBjaMO6bmcuXG5cblRyw6xuaCB0aeG6v3Qga2nhu4dtIHBpbiB04buxIMSR4buZbmcgdOG6r3Qga2hpIHRoaeG6v3QgYuG7iyBj4bunYSBi4bqhbiDEkWFuZyBz4bqhYy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJN4bupYyDEkeG7mSBxdWFuIHRy4buNbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IsSQw6MgY2jhurduOiBLaMO0bmcgYmFvIGdp4budIGhp4buDbiB0aOG7iyBjw6FjIHRow7RuZyBiw6FvIG7DoHkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4iVGjhuqVwOiBIaeG7g24gdGjhu4sgaW0gbOG6t25nIOG7nyBjdeG7kWkgZGFuaCBzw6FjaCB0aMO0bmcgYsOhbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iQsOsbmggdGjGsOG7nW5nOiBIaeG7g24gdGjhu4sgaW0gbOG6t25nIGPDoWMgdGjDtG5nIGLDoW8gbsOgeSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4iQ2FvOiBIaeG7g24gdGjhu4sg4bufIMSR4bqndSBkYW5oIHPDoWNoIHRow7RuZyBiw6FvIHbDoCBwaMOhdCByYSDDom0gdGhhbmgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iS2jhuqluIGPhuqVwOiBIaeG7g24gdGjhu4sgdHLDqm4gbcOgbiBow6xuaCB2w6AgcGjDoXQgcmEgw6JtIHRoYW5oIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5Ucm9uZyAlMSRkIHBow7p0IChjaG8gxJHhur9uIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlRyb25nIG3hu5l0IHBow7p0IChjaG8gxJHhur9uIDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKaW5kZXggMTgwM2Y5OS4uNzcwNTNmMiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLnq4vljbPplIHlrpoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iu+8iDx4bGlmZjpnIGlkPSJOT1RJRklDQVRJT05DT1VOVCI+JWQ8L3hsaWZmOmc+IOadoe+8iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLlhoXlrrnlt7LpmpDol48iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzYWZlTW9kZSIgbXNnaWQ9IjI3ODgyMjgwNjE1NDc5MzAyNDYiPiLlronlhajmqKHlvI8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3N5c3RlbV9sYWJlbCIgbXNnaWQ9IjY1NzczNzUzMzU3Mjg1NTEzMzYiPiJBbmRyb2lkIOezu+e7nyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzZXJfb3duZXJfbGFiZWwiIG1zZ2lkPSIyODA0MzUxODk4MDAxMDM4OTUxIj4i5Liq5Lq6Ijwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiLliarliIciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5IiBtc2dpZD0iMjY4MTk0NjIyOTUzMzUxMTk4NyI+IuWkjeWItiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhc3RlIiBtc2dpZD0iNTYyOTg4MDgzNjgwNTAzNjQzMyI+IueymOi0tCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InBhc3RlX2FzX3BsYWluX3RleHQiIG1zZ2lkPSI1NDI3NzkyNzQxOTA4MDEwNjc1Ij4i5Lul57qv5paH5pys5b2i5byP57KY6LS0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiLmm7/mjaIuLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGUiIG1zZ2lkPSI2MDk4Njg0ODQ0MDIxNjk3Nzg5Ij4i5Yig6ZmkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiLlpI3liLbnvZHlnYAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzZWxlY3RUZXh0TW9kZSIgbXNnaWQ9IjEwMTg2OTE4MTUxNDMxNjUzMjYiPiLpgInmi6nmloflrZciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IuaSpOa2iCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InJlZG8iIG1zZ2lkPSI3NzU5NDY0ODc2NTY2ODAzODg4Ij4i6YeN5YGaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idGV4dFNlbGVjdGlvbkNBQlRpdGxlIiBtc2dpZD0iNTIzNjg1MDM5NDM3MDgyMDM1NyI+IuaWh+Wtl+mAieaLqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkZFRvRGljdGlvbmFyeSIgbXNnaWQ9IjQzNTIxNjE1MzQ1MTAwNTc4NzQiPiLmt7vliqDliLDlrZflhbgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IuWIoOmZpCI8L3N0cmluZz4KQEAgLTExMDcsNiArMTExMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VyX3dhbGxwYXBlciIgbXNnaWQ9Ijc4NzM0NzYxOTkyOTUxOTAyNzkiPiLmm7TmlLnlo4HnurgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fbGlzdGVuZXJfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjIwMTQxNjI4MzU0ODE5MDY0MjkiPiLpgJrnn6XkvqblkKzlmagiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IuadoeS7tuaPkOS+m+eoi+W6jyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9hc3Npc3RhbnRfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjkwOTQ1NjA1NTU2OTEwMjk1MiI+IumAmuefpeWKqeaJiyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90aXRsZSIgbXNnaWQ9IjE5NjE1MjEzNTUyMDQyODI3Ij4i5bey5r+A5rS7VlBOIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+5bey5r+A5rS7VlBOIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RleHQiIG1zZ2lkPSIzMDExMzA2NjA3MTI2NDUwMzIyIj4i6Kem5pG45Y+v566h55CG572R57uc44CCIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IueUseaCqOWNleS9jeeahOeuoeeQhuWRmOabtOaWsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfZGVsZXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI3NjUwNTc3Mzg3NDkzMTAxMzUzIj4i5bey6KKr566h55CG5ZGY5Yig6ZmkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiLkuLrkuoblu7bplb/nlLXmsaDnmoTnu63oiKrml7bpl7TvvIzoioLnlLXliqnmiYvkvJrpmY3kvY7orr7lpIfnmoTmgKfog73vvIzlubbpmZDliLbmjK/liqjjgIHkvY3nva7kv6Hmga/mnI3liqHlkozlpKfpg6jliIblkI7lj7DmtYHph4/jgILlr7nkuo7nlLXlrZDpgq7ku7bjgIHogYrlpKnlt6XlhbfnrYnkvp3otZbkuo7lkIzmraXlip/og73nmoTlupTnlKjvvIzlj6/og73opoHmiZPlvIDov5nnsbvlupTnlKjml7bmiY3og73mlLbliLDmlrDkv6Hmga/jgIJcblxu6IqC55S15Yqp5omL5Lya5Zyo6K6+5aSH5YWF55S15pe26Ieq5Yqo5YWz6Zet44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiIG1zZ2lkPSI3NDkzOTg5NzIyNjEwMDA4NzAwIj4i6YeN6KaB5oCnIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjcxMTg4MjY5MDA3NjcwNDcxMjUiPiLlsY/olL3vvJrkuIDlvovkuI3mmL7npLrov5nkupvpgJrnn6UiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI2NDQ3NjQwNDQ5OTE4NDI3MTg3Ij4i5L2O77ya5Zyo6YCa55+l5YiX6KGo5bqV6YOo5pi+56S677yM5LiN5Y+R5Ye65o+Q56S66Z+zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9Ijc5OTExNTc2OTc2MDk1NzUyNzEiPiLkuIDoiKzvvJrmmL7npLrov5nkupvpgJrnn6XvvIzkvYbkuI3lj5Hlh7rmj5DnpLrpn7MiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+IumrmO+8muWcqOmAmuefpeWIl+ihqOmhtumDqOaYvuekuu+8jOW5tuWPkeWHuuaPkOekuumfsyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjExNTM2OTMwODA0Njc5MDQ0NzQiPiLntKfmgKXvvJrlnKjlsY/luZXkuIrmjIHnu63mmL7npLrvvIzlubblj5Hlh7rmj5DnpLrpn7MiPC9zdHJpbmc+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5IiBmb3JtYXR0ZWQ9ImZhbHNlIiBtc2dpZD0iNDM2Nzg3NzQwODA3MjAwMDg0OCI+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPiUxJGQg5YiG6ZKf77yI5YiwPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz7vvIk8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj4xIOWIhumSn++8iOWIsDx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+77yJPC9pdGVtPgpAQCAtMTUxMiw1ICsxNTExLDUgQEAKICAgICA8L3BsdXJhbHM+CiAgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X25vdGlmaWNhdGlvbl90b3BpY19sYWJlbCIgbXNnaWQ9IjIyNzU4NjE0NTc5MTg3MDgyOSI+IuWFtuS7liI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV90b3BpYyIgbXNnaWQ9IjM1NzIyODA0Mzk4ODAwMjMyMzMiPiLov5nkupvpgJrnn6XnmoTph43opoHmgKfnlLHmgqjmnaXorr7nva7jgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJpbXBvcnRhbmNlX2Zyb21fcGVyc29uIiBtc2dpZD0iOTE2MDEzMzU5NzI2MjkzODI5NiI+Iui/meadoemAmuefpea2ieWPiueJueWumuS6uuWjq++8jOWboOatpOiiq+W9kuS4uumHjeimgemAmuefpeOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImltcG9ydGFuY2VfZnJvbV9wZXJzb24iIG1zZ2lkPSI5MTYwMTMzNTk3MjYyOTM4Mjk2Ij4i6L+Z5p2h6YCa55+l5raJ5Y+K54m55a6a55qE5Lq677yM5Zug5q2k6KKr5b2S5Li66YeN6KaB6YCa55+l44CCIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXpoLXJISy9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCmluZGV4IDRiNjMyMGMuLjYxMmVmZTQgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4i56uL5Y2z6Y6W5a6aIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9ub3RpZmljYXRpb25faW5mb19vdmVyZmxvdyIgbXNnaWQ9IjUzMDE5ODE3NDE3MDUzNTQ5OTMiPiI5OTkrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2NoaWxkcmVuX2NvdW50X2JyYWNrZXRlZCIgbXNnaWQ9IjE3Njk0MjU0NzMxNjgzNDc4MzkiPiIoPHhsaWZmOmcgaWQ9Ik5PVElGSUNBVElPTkNPVU5UIj4lZDwveGxpZmY6Zz4pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuWFp+WuueW3sumaseiXjyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNhZmVNb2RlIiBtc2dpZD0iMjc4ODIyODA2MTU0NzkzMDI0NiI+IuWuieWFqOaooeW8jyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3lzdGVtX2xhYmVsIiBtc2dpZD0iNjU3NzM3NTMzNTcyODU1MTMzNiI+IkFuZHJvaWQg57O757WxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiLlgIvkuroiPC9zdHJpbmc+CkBAIC04NTgsMTAgKzg1OSwxMyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY3V0IiBtc2dpZD0iMzA5MjU2OTQwODQzODYyNjI2MSI+IuWJquS4iyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHkiIG1zZ2lkPSIyNjgxOTQ2MjI5NTMzNTExOTg3Ij4i6KSH6KO9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4i6LK85LiKIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGFzdGVfYXNfcGxhaW5fdGV4dCIgbXNnaWQ9IjU0Mjc3OTI3NDE5MDgwMTA2NzUiPiLku6XntJTmloflrZfmoLzlvI/osrzkuIoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZXBsYWNlIiBtc2dpZD0iNTc4MTY4NjA1OTA2MzE0ODkzMCI+IuWPluS7oy4uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiLliKrpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb3B5VXJsIiBtc2dpZD0iMjUzODIxMTU3OTU5NjA2NzQwMiI+Iuikh+ijvee2suWdgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNlbGVjdFRleHRNb2RlIiBtc2dpZD0iMTAxODY5MTgxNTE0MzE2NTMyNiI+IumBuOWPluaWh+WtlyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZG8iIG1zZ2lkPSI3OTA1Nzg4NTAyNDkxNzQyMzI4Ij4i5b6p5Y6fIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiLlj5bmtojlvqnljp8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0ZXh0U2VsZWN0aW9uQ0FCVGl0bGUiIG1zZ2lkPSI1MjM2ODUwMzk0MzcwODIwMzU3Ij4i6YG45Y+W5paH5a2XIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IuWKoOWFpeWtl+WFuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZVRleHQiIG1zZ2lkPSI2OTc5NjY4NDI4NDU4MTk5MDM0Ij4i5Yiq6ZmkIjwvc3RyaW5nPgpAQCAtMTEwNyw2ICsxMTExLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImNob29zZXJfd2FsbHBhcGVyIiBtc2dpZD0iNzg3MzQ3NjE5OTI5NTE5MDI3OSI+IuiuiuabtOahjOW4gyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9saXN0ZW5lcl9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMjAxNDE2MjgzNTQ4MTkwNjQyOSI+IumAmuefpeaOpeiBveWZqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmRpdGlvbl9wcm92aWRlcl9zZXJ2aWNlX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIxMzIxMzQzMzUyOTA2NTI0NTY0Ij4i5qKd5Lu25L6b5oeJ5ZWGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4i6YCa55+l5bCP5bmr5omLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJWUE4g5bey5ZWf55So44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlX2xvbmciIG1zZ2lkPSI2NDAwNzE0Nzk4MDQ5MjUyMjk0Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOW3suWVn+eUqCBWUE4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGV4dCIgbXNnaWQ9IjMwMTEzMDY2MDcxMjY0NTAzMjIiPiLovJXop7jljbPlj6/nrqHnkIbntrLntaHjgIIiPC9zdHJpbmc+CkBAIC0xNDQwLDEyICsxNDQ1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBhY2thZ2VfdXBkYXRlZF9kZXZpY2Vfb3duZXIiIG1zZ2lkPSI4ODU2NjMxMzIyNDQwMTg3MDcxIj4i5bey55Sx5oKo55qE566h55CG5ZOh5pu05pawIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV9kZWxldGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijc2NTA1NzczODc0OTMxMDEzNTMiPiLlt7LnlLHnrqHnkIblk6HliKrpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTk2MDQzMTEyMzgxNjI1MzAzNCI+IuevgOe0hOmbu+axoOeUqOmHj+aooeW8j+acieWKqeaWvOW7tumVt+mbu+axoOWjveWRve+8jOS9humAmeacg+mZjeS9juijnee9ruaViOiDve+8jOS4pumZkOWItumch+WLleOAgeWumuS9jeacjeWLmeWPiuWkp+mDqOWIhuiDjOaZr+aVuOaTmuWCs+i8uOOAgumZpOmdnuaCqOWVn+eUqO+8jOWQpuWJh+mbu+mDteOAgeefreioiuWPiuWFtuS7lumcgOimgeS9v+eUqOWQjOatpeWKn+iDveeahOaHieeUqOeoi+W8j+Wdh+S4jeacg+abtOaWsOOAglxuXG7nlbboo53nva7lhYXpm7vmmYLvvIznr4DntITpm7vmsaDnlKjph4/mqKHlvI/mnIPoh6rli5Xpl5zplonjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiLph43opoHmgKciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iNzExODgyNjkwMDc2NzA0NzEyNSI+IuW3suWwgemOlu+8muawuOS4jemhr+ekuumAmeS6m+mAmuefpSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiLkvY7vvJrku6XpnZzpn7PmlrnlvI/poa/npLrlnKjpgJrnn6XmuIXllq7lupXpg6giPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNzk5MTE1NzY5NzYwOTU3NTI3MSI+IuS4gOiIrO+8muS7pemdnOmfs+aWueW8j+mhr+ekuumAmeS6m+mAmuefpSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMTUyMjM4NjM3NzM3MjE1NjU0Ij4i6auY77ya6aGv56S65Zyo6YCa55+l5riF5Zau6aCC6YOo5Lim55m85Ye66Z+z5pWIIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iMTE1MzY5MzA4MDQ2NzkwNDQ3NCI+Iue3iuaApe+8muS4jeaZguaWvOieouW5leWHuuePvuS4pueZvOWHuumfs+aViCI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+6ZyA5pmCICUxJGQg5YiG6ZCYICjlrozmiJDmmYLplpPvvJo8eGxpZmY6ZyBpZD0iRk9STUFUVEVEVElNRV8xIj4lMiRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7pnIDmmYIgMSDliIbpkJggKOWujOaIkOaZgumWk++8mjx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzAiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKaW5kZXggOThmMTg0OC4uMjAxY2MxZSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKQEAgLTIyMyw2ICsyMjMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX2FjdGlvbl9sb2NrZG93biIgbXNnaWQ9Ijg3NTE1NDI1MTQ3MjQzMzI4NzMiPiLnq4vljbPpjpblrpoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Iui2hemBjiA5OTkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i5YWn5a655bey6Zqx6JePIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4i5a6J5YWo5qih5byPIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iQW5kcm9pZCDns7vntbEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2VyX293bmVyX2xhYmVsIiBtc2dpZD0iMjgwNDM1MTg5ODAwMTAzODk1MSI+IuWAi+S6uiI8L3N0cmluZz4KQEAgLTg1OCwxMCArODU5LDEzIEBACiAgICAgPHN0cmluZyBuYW1lPSJjdXQiIG1zZ2lkPSIzMDkyNTY5NDA4NDM4NjI2MjYxIj4i5Ymq5LiLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiLopIfoo70iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYXN0ZSIgbXNnaWQ9IjU2Mjk4ODA4MzY4MDUwMzY0MzMiPiLosrzkuIoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+IuS7pee0lOaWh+Wtl+iyvOS4iiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcGxhY2UiIG1zZ2lkPSI1NzgxNjg2MDU5MDYzMTQ4OTMwIj4i5Y+W5Luj4oCmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlIiBtc2dpZD0iNjA5ODY4NDg0NDAyMTY5Nzc4OSI+IuWIqumZpCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvcHlVcmwiIG1zZ2lkPSIyNTM4MjExNTc5NTk2MDY3NDAyIj4i6KSH6KO957ay5Z2AIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4i6YG45Y+W5paH5a2XIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idW5kbyIgbXNnaWQ9Ijc5MDU3ODg1MDI0OTE3NDIzMjgiPiLlvqnljp8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZWRvIiBtc2dpZD0iNzc1OTQ2NDg3NjU2NjgwMzg4OCI+IumHjeWBmiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiLpgbjlj5bmloflrZciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiIG1zZ2lkPSI0MzUyMTYxNTM0NTEwMDU3ODc0Ij4i5Yqg5YWl5a2X5YW4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVsZXRlVGV4dCIgbXNnaWQ9IjY5Nzk2Njg0Mjg0NTgxOTkwMzQiPiLliKrpmaQiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4i6K6K5pu05qGM5biDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4i6YCa55+l5o6l6IG95ZmoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZGl0aW9uX3Byb3ZpZGVyX3NlcnZpY2VfYmluZGluZ19sYWJlbCIgbXNnaWQ9IjEzMjEzNDMzNTI5MDY1MjQ1NjQiPiLmop3ku7bmj5DkvpvogIUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fYXNzaXN0YW50X2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSI5MDk0NTYwNTU1NjkxMDI5NTIiPiLpgJrnn6XlsI/luavmiYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGUiIG1zZ2lkPSIxOTYxNTIxMzU1MjA0MjgyNyI+IlZQTiDlt7LllZ/nlKgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g5bey5ZWf55SoIFZQTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+Iui8leinuOWNs+WPr+euoeeQhue2sui3r+OAgiI8L3N0cmluZz4KQEAgLTE0NDAsMTIgKzE0NDUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGFja2FnZV91cGRhdGVkX2RldmljZV9vd25lciIgbXNnaWQ9Ijg4NTY2MzEzMjI0NDAxODcwNzEiPiLnlLHmgqjnmoTnrqHnkIblk6Hmm7TmlrAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IuW3sumBreeuoeeQhuWToeWIqumZpCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfZGVzY3JpcHRpb24iIG1zZ2lkPSIxOTYwNDMxMTIzODE2MjUzMDM0Ij4i56+A57SE6ICX6Zu76YeP5qih5byP5pyD6YCP6YGO6ZmN5L2O6KOd572u5pWI6IO944CB6ZyH5YuV6ZmQ5Yi244CB5a6a5L2N5pyN5YuZ6ZmQ5Yi25ZKM5aSn5aSa5pW46IOM5pmv6LOH5paZ6YGL5L2c6ZmQ5Yi2562J5pa55byP77yM5bu26ZW36Zu75rGg57qM6Iiq5Yqb44CC5q2k5aSW77yM5aaC5p6c5pyq6ZaL5ZWf6Zu75a2Q6YO15Lu244CB57Ch6KiK5ZKM5YW25LuW6ZyA6KaB5L2/55So5ZCM5q2l5Yqf6IO955qE5oeJ55So56iL5byP77yM57O757Wx5bCH5LiN5pyD6Ieq5YuV5pu05paw6YCZ5Lqb5oeJ55So56iL5byP44CCXG5cbueVtuaCqOeCuuijnee9ruWFhembu+aZgu+8jOevgOe0hOiAl+mbu+mHj+aooeW8j+acg+iHquWLlemXnOmWieOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX3RpdGxlIiBtc2dpZD0iNzQ5Mzk4OTcyMjYxMDAwODcwMCI+IumHjeimgeaApyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4i5bCB6Y6W77ya5LiA5b6L5LiN6aGv56S66YCZ5Lqb6YCa55+lIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNjQ0NzY0MDQ0OTkxODQyNzE4NyI+IuS9ju+8mumhr+ekuuWcqOmAmuefpea4heWWruW6lemDqOS4lOS4jeeZvOWHuuS7u+S9lemfs+aViCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4i5LiA6Iis77ya6aGv56S66YCZ5Lqb6YCa55+l5LiU5LiN55m85Ye65Lu75L2V6Z+z5pWIIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMxNTIyMzg2Mzc3MzcyMTU2NTQiPiLpq5jvvJrpoa/npLrlnKjpgJrnn6XmuIXllq7poILnq6/kuKbnmbzlh7rpn7PmlYgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4i57eK5oCl77ya5oyB57qM6aGv56S65Zyo6J6i5bmV5LiK5Lim55m85Ye66Z+z5pWIIjwvc3RyaW5nPgogICAgIDxwbHVyYWxzIG5hbWU9Inplbl9tb2RlX2R1cmF0aW9uX21pbnV0ZXNfc3VtbWFyeSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjQzNjc4Nzc0MDgwNzIwMDA4NDgiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7mjIHnuowgJTEkZCDliIbpkJggKOe1kOadn+aZgumWk++8mjx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuaMgee6jCAxIOWIhumQmCAo57WQ5p2f5pmC6ZaT77yaPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMCI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWwKaW5kZXggMDkzNDFlZS4uNWU4MzVlMyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCkBAIC0yMjMsNiArMjIzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9hY3Rpb25fbG9ja2Rvd24iIG1zZ2lkPSI4NzUxNTQyNTE0NzI0MzMyODczIj4iS2hpeWEgbWFuamUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9pbmZvX292ZXJmbG93IiBtc2dpZD0iNTMwMTk4MTc0MTcwNTM1NDk5MyI+Ijk5OSsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25fY2hpbGRyZW5fY291bnRfYnJhY2tldGVkIiBtc2dpZD0iMTc2OTQyNTQ3MzE2ODM0NzgzOSI+Iig8eGxpZmY6ZyBpZD0iTk9USUZJQ0FUSU9OQ09VTlQiPiVkPC94bGlmZjpnPikiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iT2t1cXVrZXRod2Uga3VmaWhsaXdlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiIG1zZ2lkPSIyNzg4MjI4MDYxNTQ3OTMwMjQ2Ij4iSW1vZGkgZXBoZXBoaWxlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5kcm9pZF9zeXN0ZW1fbGFiZWwiIG1zZ2lkPSI2NTc3Mzc1MzM1NzI4NTUxMzM2Ij4iVWhsZWxvIGx3ZS1BbmRyb2lkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNlcl9vd25lcl9sYWJlbCIgbXNnaWQ9IjI4MDQzNTE4OTgwMDEwMzg5NTEiPiJPa29tdW50dSBzaXF1Ijwvc3RyaW5nPgpAQCAtODU4LDEwICs4NTksMTMgQEAKICAgICA8c3RyaW5nIG5hbWU9ImN1dCIgbXNnaWQ9IjMwOTI1Njk0MDg0Mzg2MjYyNjEiPiJOcWFtdWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weSIgbXNnaWQ9IjI2ODE5NDYyMjk1MzM1MTE5ODciPiJLb3Bpc2hhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGFzdGUiIG1zZ2lkPSI1NjI5ODgwODM2ODA1MDM2NDMzIj4iTmFtYXRoaXNlbGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwYXN0ZV9hc19wbGFpbl90ZXh0IiBtc2dpZD0iNTQyNzc5Mjc0MTkwODAxMDY3NSI+Ik5hbWF0aGlzZWxhIG5qZW5nb21iaGFsbyBvc29iYWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVwbGFjZSIgbXNnaWQ9IjU3ODE2ODYwNTkwNjMxNDg5MzAiPiJCdXlpc2VsYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRlbGV0ZSIgbXNnaWQ9IjYwOTg2ODQ4NDQwMjE2OTc3ODkiPiJTdXNhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29weVVybCIgbXNnaWQ9IjI1MzgyMTE1Nzk1OTYwNjc0MDIiPiJLb3Bpc2hhIGktVVJMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0VGV4dE1vZGUiIG1zZ2lkPSIxMDE4NjkxODE1MTQzMTY1MzI2Ij4iS2hldGhhIHVtYmhhbG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1bmRvIiBtc2dpZD0iNzkwNTc4ODUwMjQ5MTc0MjMyOCI+IkhsZWhsaXNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icmVkbyIgbXNnaWQ9Ijc3NTk0NjQ4NzY1NjY4MDM4ODgiPiJZZW56YSBmdXRoaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRleHRTZWxlY3Rpb25DQUJUaXRsZSIgbXNnaWQ9IjUyMzY4NTAzOTQzNzA4MjAzNTciPiJJbmtldGhvIHlvbWJoYWxvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRkVG9EaWN0aW9uYXJ5IiBtc2dpZD0iNDM1MjE2MTUzNDUxMDA1Nzg3NCI+IkVuZ2V6YSBrd2lzaWNoYXphbWF6d2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZWxldGVUZXh0IiBtc2dpZD0iNjk3OTY2ODQyODQ1ODE5OTAzNCI+IlN1c2EiPC9zdHJpbmc+CkBAIC0xMTA3LDYgKzExMTEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3Nlcl93YWxscGFwZXIiIG1zZ2lkPSI3ODczNDc2MTk5Mjk1MTkwMjc5Ij4iU2hpbnRzaGEgaXBoZXBoYWRvbmdhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2xpc3RlbmVyX2JpbmRpbmdfbGFiZWwiIG1zZ2lkPSIyMDE0MTYyODM1NDgxOTA2NDI5Ij4iVW1sYWxlbGkgd2VzYXppc28iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25kaXRpb25fcHJvdmlkZXJfc2VydmljZV9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iMTMyMTM0MzM1MjkwNjUyNDU2NCI+IlVtaGxpbnpla2kgd2VzaW1vIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2Fzc2lzdGFudF9iaW5kaW5nX2xhYmVsIiBtc2dpZD0iOTA5NDU2MDU1NTY5MTAyOTUyIj4iVW1zaXppIHdlc2F6aXNvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idnBuX3RpdGxlIiBtc2dpZD0iMTk2MTUyMTM1NTIwNDI4MjciPiJJLVZQTiBpc2l5YXNlYmVuemEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ2cG5fdGl0bGVfbG9uZyIgbXNnaWQ9IjY0MDA3MTQ3OTgwNDkyNTIyOTQiPiJpLVZQTiBpdnVzd2Ugbmd1IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InZwbl90ZXh0IiBtc2dpZD0iMzAxMTMwNjYwNzEyNjQ1MDMyMiI+IlRoaW50YSB1a3V6ZSB3ZW5nYW1lbGUgaW5ldGhpd2VraGkuIjwvc3RyaW5nPgpAQCAtMTQ0MCwxMiArMTQ0NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX3VwZGF0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iODg1NjYzMTMyMjQ0MDE4NzA3MSI+IklidXlla2V6d2Ugbmd1bXFvbmRpc2kgd2FraG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwYWNrYWdlX2RlbGV0ZWRfZGV2aWNlX293bmVyIiBtc2dpZD0iNzY1MDU3NzM4NzQ5MzEwMTM1MyI+IklzdXN3ZSBuZ3VtbGF3dWxpIHdha2hvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjE5NjA0MzExMjM4MTYyNTMwMzQiPiJVa3VzaXphIHVrdXRodXRodWtpc2EgaW1waWxvIHllYmhldGhyaSwgaXNpbG9uZG9sb3plIHNlYmhldGhyaSBzZWhsaXNhIHVrdXNlYmVuemEga3dlZGl2YXlpc2kgeWFraG8gZnV0aGkgc2lraGF3dWxlbGUgdWt1ZGxpZGxpemEsIGFtYXNldmlzaSB3ZW5kYXdvLCBuZWRhdGhhIGVuaW5naSB5YW5nYXNlbXV2YS4gSS1pbWV5aWxpLCBpbWlsYXllem8sIG5lemlueWUgaXppbmhsZWxvIHpva3VzZWJlbnphIGV6aW5jaWtlIGVrdXZ1bWVsYW5pc2VuaSB6aW5nYWhsZSB6aW5nYWJ1eWVrZXp3YSBuZ2FwaGFuZGxlIGtva3V0aGkgdXppdnVsZS5cblxuSXNpbG9uZG9sb3ppIHNlYmhldGhyaSBzaXlhdmFsZWthIG5nb2t1emVuemFrYWxlbGF5byB1bWEgaWRpdmF5aXNpIHlha2hvIGlzaGFqYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgbXNnaWQ9Ijc0OTM5ODk3MjI2MTAwMDg3MDAiPiJVa3ViYWx1bGVrYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSI3MTE4ODI2OTAwNzY3MDQ3MTI1Ij4iT2t1dmluaml3ZTogVW5nYWxva290aGkgdWJvbmlzZSBsZXppIHphemlzbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjY0NDc2NDA0NDk5MTg0MjcxODciPiJPa3VwaGFuc2k6IEJvbmlzYSBuZ29rdXRodWxpbGUgbmdhcGhhbnNpIGtvaGx1IGx3ZXNhemlzbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI3OTkxMTU3Njk3NjA5NTc1MjcxIj4iT2t1andheWVsZWtpbGU6IEJvbmlzYSBuZ29rdXRodWxpbGUgbGV6aSB6YXppc28iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzE1MjIzODYzNzczNzIxNTY1NCI+Ik9rdXBoZXp1bHU6IEJvbmlzYSBuZ2FwaGV6dWx1IGtvaGx1IGx3ZXphemlzbyB1cGhpbmRlIHdlbnplIHVtc2luZG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSIxMTUzNjkzMDgwNDY3OTA0NDc0Ij4iT2t1cGh1dGh1bWF5bzogQmhla2Ega3VzaWtyaW5pIHVwaGluZGUgd2VuemUgdW1zaW5kbyI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJ6ZW5fbW9kZV9kdXJhdGlvbl9taW51dGVzX3N1bW1hcnkiIGZvcm1hdHRlZD0iZmFsc2UiIG1zZ2lkPSI0MzY3ODc3NDA4MDcyMDAwODQ4Ij4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPk9rd2FtYW1pbml0aGkgYW5ndS0lMSRkIChrdXplIGt1YmUgbmdvLTx4bGlmZjpnIGlkPSJGT1JNQVRURURUSU1FXzEiPiUyJHM8L3hsaWZmOmc+KTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+T2t3YW1hbWluaXRoaSBhbmd1LSUxJGQgKGt1emUga3ViZSBuZ28tPHhsaWZmOmcgaWQ9IkZPUk1BVFRFRFRJTUVfMSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9kaW1lbnMueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCmluZGV4IGIxNjc3MTEuLmVmNmI0NjcgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL2RpbWVucy54bWwKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogICAgIDwhLS0gSG93IG11Y2ggdGhlIGNvbnRlbnQgaW4gdGhlIGRpdmlkZXIgaXMgaW5zZXQgZnJvbSB0aGUgd2luZG93IGJvdW5kcyB3aGVuIHJlc3RpbmcuIFVzZWQgdG8KICAgICAgICAgIGNhbGN1bGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBzdGFja3MtLT4KLSAgICA8ZGltZW4gbmFtZT0iZG9ja2VkX3N0YWNrX2RpdmlkZXJfaW5zZXRzIj4xOGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0iZG9ja2VkX3N0YWNrX2RpdmlkZXJfaW5zZXRzIj4xOWRwPC9kaW1lbj4KIAogICAgIDwhLS0gTWluIHdpZHRoIGZvciBhIHRhYmxldCBkZXZpY2UgLS0+CiAgICAgPGRpbWVuIG5hbWU9Im1pbl94bGFyZ2Vfc2NyZWVuX3dpZHRoIj44MDBkcDwvZGltZW4+CkBAIC0xNDIsNiArMTQyLDkgQEAKICAgICA8IS0tIGhlaWdodCBvZiB0aGUgY29udGVudCBtYXJnaW4gdG8gYWNjb21vZGF0ZSBmb3IgdGhlIGhlYWRlciAtLT4KICAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX3RvcCI+MzBkcDwvZGltZW4+CiAKKyAgICA8IS0tIGhlaWdodCBvZiB0aGUgY29udGVudCBtYXJnaW4gb24gdGhlIGJvdHRvbSAtLT4KKyAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX2NvbnRlbnRfbWFyZ2luX2JvdHRvbSI+MTNkcDwvZGltZW4+CisKICAgICA8IS0tIGhlaWdodCBvZiBub3RpZmljYXRpb24gaGVhZGVyIHZpZXcgaWYgcHJlc2VudCAtLT4KICAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX2hlYWRlcl9oZWlnaHQiPjMyZHA8L2RpbWVuPgogCkBAIC0xNTMsMTQgKzE1NiwxMSBAQAogICAgIDwhLS0gVGhlIHdpZHRoIG9mIHRoZSBiaWcgaWNvbnMgaW4gbm90aWZpY2F0aW9ucy4gLS0+CiAgICAgPGRpbWVuIG5hbWU9Im5vdGlmaWNhdGlvbl9sYXJnZV9pY29uX2hlaWdodCI+NjRkcDwvZGltZW4+CiAKLSAgICA8IS0tICBNaW4gaGVpZ2h0IG9mIHRoZSBub3RpZmljYXRpb24gY29udGVudC4gLS0+Ci0gICAgPGRpbWVuIG5hbWU9Im5vdGlmaWNhdGlvbl9taW5fY29udGVudF9oZWlnaHQiPjU0ZHA8L2RpbWVuPgotCiAgICAgPCEtLSBUaGUgbWluaW11bSB3aWR0aCBvZiB0aGUgYXBwIG5hbWUgaW4gdGhlIGhlYWRlciBpZiBpdCBzaHJpbmtzIC0tPgogICAgIDxkaW1lbiBuYW1lPSJub3RpZmljYXRpb25faGVhZGVyX3Nocmlua19taW5fd2lkdGgiPjcyZHA8L2RpbWVuPgogCi0gICAgPCEtLSBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgaWYgdGhlcmUgaXMgYSBwaWN0dXJlIHByZXNlbnQgd2l0aCBiaWcgcGljdHVyZSAtLT4KLSAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX2JpZ19waWN0dXJlX2NvbnRlbnRfbWluX2hlaWdodF93aXRoX3BpY3R1cmUiPjQxZHA8L2RpbWVuPgorICAgIDwhLS0gVGhlIG1pbmltdW0gaGVpZ2h0IG9mIHRoZSBjb250ZW50IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gbGluZXMgb3IgYSBwaWN0dXJlLS0+CisgICAgPGRpbWVuIG5hbWU9Im5vdGlmaWNhdGlvbl9taW5fY29udGVudF9oZWlnaHQiPjQxZHA8L2RpbWVuPgogCiAgICAgPCEtLSBQcmVmZXJyZWQgd2lkdGggb2YgdGhlIHNlYXJjaCB2aWV3LiAtLT4KICAgICA8ZGltZW4gbmFtZT0ic2VhcmNoX3ZpZXdfcHJlZmVycmVkX3dpZHRoIj4zMjBkaXA8L2RpbWVuPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9sb2NhbGVfY29uZmlnLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvbG9jYWxlX2NvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVlNTc3MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvbG9jYWxlX2NvbmZpZy54bWwKQEAgLTAsMCArMSw0OTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisqKiBDb3B5cmlnaHQgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+Cis8cmVzb3VyY2VzIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKworICAgIDxzdHJpbmctYXJyYXkgdHJhbnNsYXRhYmxlPSJmYWxzZSIgbmFtZT0ic3VwcG9ydGVkX2xvY2FsZXMiPgorICAgICAgICA8aXRlbT5hZi1OQTwvaXRlbT4gPCEtLSBBZnJpa2FhbnMgKE5hbWliaWEpIC0tPgorICAgICAgICA8aXRlbT5hZi1aQTwvaXRlbT4gPCEtLSBBZnJpa2FhbnMgKFNvdXRoIEFmcmljYSkgLS0+CisgICAgICAgIDxpdGVtPmFncS1DTTwvaXRlbT4gPCEtLSBBZ2hlbSAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5hay1HSDwvaXRlbT4gPCEtLSBBa2FuIChHaGFuYSkgLS0+CisgICAgICAgIDxpdGVtPmFtLUVUPC9pdGVtPiA8IS0tIEFtaGFyaWMgKEV0aGlvcGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+YXItQUU8L2l0ZW0+IDwhLS0gQXJhYmljIChVbml0ZWQgQXJhYiBFbWlyYXRlcykgLS0+CisgICAgICAgIDxpdGVtPmFyLUJIPC9pdGVtPiA8IS0tIEFyYWJpYyAoQmFocmFpbikgLS0+CisgICAgICAgIDxpdGVtPmFyLURKPC9pdGVtPiA8IS0tIEFyYWJpYyAoRGppYm91dGkpIC0tPgorICAgICAgICA8aXRlbT5hci1EWjwvaXRlbT4gPCEtLSBBcmFiaWMgKEFsZ2VyaWEpIC0tPgorICAgICAgICA8aXRlbT5hci1FRzwvaXRlbT4gPCEtLSBBcmFiaWMgKEVneXB0KSAtLT4KKyAgICAgICAgPGl0ZW0+YXItRUg8L2l0ZW0+IDwhLS0gQXJhYmljIChXZXN0ZXJuIFNhaGFyYSkgLS0+CisgICAgICAgIDxpdGVtPmFyLUVSPC9pdGVtPiA8IS0tIEFyYWJpYyAoRXJpdHJlYSkgLS0+CisgICAgICAgIDxpdGVtPmFyLUlMPC9pdGVtPiA8IS0tIEFyYWJpYyAoSXNyYWVsKSAtLT4KKyAgICAgICAgPGl0ZW0+YXItSVE8L2l0ZW0+IDwhLS0gQXJhYmljIChJcmFxKSAtLT4KKyAgICAgICAgPGl0ZW0+YXItSk88L2l0ZW0+IDwhLS0gQXJhYmljIChKb3JkYW4pIC0tPgorICAgICAgICA8aXRlbT5hci1LTTwvaXRlbT4gPCEtLSBBcmFiaWMgKENvbW9yb3MpIC0tPgorICAgICAgICA8aXRlbT5hci1LVzwvaXRlbT4gPCEtLSBBcmFiaWMgKEt1d2FpdCkgLS0+CisgICAgICAgIDxpdGVtPmFyLUxCPC9pdGVtPiA8IS0tIEFyYWJpYyAoTGViYW5vbikgLS0+CisgICAgICAgIDxpdGVtPmFyLUxZPC9pdGVtPiA8IS0tIEFyYWJpYyAoTGlieWEpIC0tPgorICAgICAgICA8aXRlbT5hci1NQTwvaXRlbT4gPCEtLSBBcmFiaWMgKE1vcm9jY28pIC0tPgorICAgICAgICA8aXRlbT5hci1NUjwvaXRlbT4gPCEtLSBBcmFiaWMgKE1hdXJpdGFuaWEpIC0tPgorICAgICAgICA8aXRlbT5hci1PTTwvaXRlbT4gPCEtLSBBcmFiaWMgKE9tYW4pIC0tPgorICAgICAgICA8aXRlbT5hci1QUzwvaXRlbT4gPCEtLSBBcmFiaWMgKFBhbGVzdGluZSkgLS0+CisgICAgICAgIDxpdGVtPmFyLVFBPC9pdGVtPiA8IS0tIEFyYWJpYyAoUWF0YXIpIC0tPgorICAgICAgICA8aXRlbT5hci1TQTwvaXRlbT4gPCEtLSBBcmFiaWMgKFNhdWRpIEFyYWJpYSkgLS0+CisgICAgICAgIDxpdGVtPmFyLVNEPC9pdGVtPiA8IS0tIEFyYWJpYyAoU3VkYW4pIC0tPgorICAgICAgICA8aXRlbT5hci1TTzwvaXRlbT4gPCEtLSBBcmFiaWMgKFNvbWFsaWEpIC0tPgorICAgICAgICA8aXRlbT5hci1TUzwvaXRlbT4gPCEtLSBBcmFiaWMgKFNvdXRoIFN1ZGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+YXItU1k8L2l0ZW0+IDwhLS0gQXJhYmljIChTeXJpYSkgLS0+CisgICAgICAgIDxpdGVtPmFyLVREPC9pdGVtPiA8IS0tIEFyYWJpYyAoQ2hhZCkgLS0+CisgICAgICAgIDxpdGVtPmFyLVROPC9pdGVtPiA8IS0tIEFyYWJpYyAoVHVuaXNpYSkgLS0+CisgICAgICAgIDxpdGVtPmFyLVlFPC9pdGVtPiA8IS0tIEFyYWJpYyAoWWVtZW4pIC0tPgorICAgICAgICA8aXRlbT5hcy1JTjwvaXRlbT4gPCEtLSBBc3NhbWVzZSAoSW5kaWEpIC0tPgorICAgICAgICA8aXRlbT5hc2EtVFo8L2l0ZW0+IDwhLS0gQXN1IChUYW56YW5pYSkgLS0+CisgICAgICAgIDxpdGVtPmF6LUN5cmwtQVo8L2l0ZW0+IDwhLS0gQXplcmJhaWphbmkgKEN5cmlsbGljLEF6ZXJiYWlqYW4pIC0tPgorICAgICAgICA8aXRlbT5hei1MYXRuLUFaPC9pdGVtPiA8IS0tIEF6ZXJiYWlqYW5pIChMYXRpbixBemVyYmFpamFuKSAtLT4KKyAgICAgICAgPGl0ZW0+YmFzLUNNPC9pdGVtPiA8IS0tIEJhc2FhIChDYW1lcm9vbikgLS0+CisgICAgICAgIDxpdGVtPmJlLUJZPC9pdGVtPiA8IS0tIEJlbGFydXNpYW4gKEJlbGFydXMpIC0tPgorICAgICAgICA8aXRlbT5iZW0tWk08L2l0ZW0+IDwhLS0gQmVtYmEgKFphbWJpYSkgLS0+CisgICAgICAgIDxpdGVtPmJlei1UWjwvaXRlbT4gPCEtLSBCZW5hIChUYW56YW5pYSkgLS0+CisgICAgICAgIDxpdGVtPmJnLUJHPC9pdGVtPiA8IS0tIEJ1bGdhcmlhbiAoQnVsZ2FyaWEpIC0tPgorICAgICAgICA8aXRlbT5ibS1NTDwvaXRlbT4gPCEtLSBCYW1iYXJhIChNYWxpKSAtLT4KKyAgICAgICAgPGl0ZW0+Ym4tQkQ8L2l0ZW0+IDwhLS0gQmVuZ2FsaSAoQmFuZ2xhZGVzaCkgLS0+CisgICAgICAgIDxpdGVtPmJuLUlOPC9pdGVtPiA8IS0tIEJlbmdhbGkgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+Ym8tQ048L2l0ZW0+IDwhLS0gVGliZXRhbiAoQ2hpbmEpIC0tPgorICAgICAgICA8aXRlbT5iby1JTjwvaXRlbT4gPCEtLSBUaWJldGFuIChJbmRpYSkgLS0+CisgICAgICAgIDxpdGVtPmJyLUZSPC9pdGVtPiA8IS0tIEJyZXRvbiAoRnJhbmNlKSAtLT4KKyAgICAgICAgPGl0ZW0+YnJ4LUlOPC9pdGVtPiA8IS0tIEJvZG8gKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+YnMtQ3lybC1CQTwvaXRlbT4gPCEtLSBCb3NuaWFuIChDeXJpbGxpYyxCb3NuaWEgJiBIZXJ6ZWdvdmluYSkgLS0+CisgICAgICAgIDxpdGVtPmJzLUxhdG4tQkE8L2l0ZW0+IDwhLS0gQm9zbmlhbiAoTGF0aW4sQm9zbmlhICYgSGVyemVnb3ZpbmEpIC0tPgorICAgICAgICA8aXRlbT5jYS1BRDwvaXRlbT4gPCEtLSBDYXRhbGFuIChBbmRvcnJhKSAtLT4KKyAgICAgICAgPGl0ZW0+Y2EtRVM8L2l0ZW0+IDwhLS0gQ2F0YWxhbiAoU3BhaW4pIC0tPgorICAgICAgICA8aXRlbT5jYS1GUjwvaXRlbT4gPCEtLSBDYXRhbGFuIChGcmFuY2UpIC0tPgorICAgICAgICA8aXRlbT5jYS1JVDwvaXRlbT4gPCEtLSBDYXRhbGFuIChJdGFseSkgLS0+CisgICAgICAgIDxpdGVtPmNlLVJVPC9pdGVtPiA8IS0tIENoZWNoZW4gKFJ1c3NpYSkgLS0+CisgICAgICAgIDxpdGVtPmNnZy1VRzwvaXRlbT4gPCEtLSBDaGlnYSAoVWdhbmRhKSAtLT4KKyAgICAgICAgPGl0ZW0+Y2hyLVVTPC9pdGVtPiA8IS0tIENoZXJva2VlIChVbml0ZWQgU3RhdGVzKSAtLT4KKyAgICAgICAgPGl0ZW0+Y3MtQ1o8L2l0ZW0+IDwhLS0gQ3plY2ggKEN6ZWNoIFJlcHVibGljKSAtLT4KKyAgICAgICAgPGl0ZW0+Y3ktR0I8L2l0ZW0+IDwhLS0gV2Vsc2ggKFVuaXRlZCBLaW5nZG9tKSAtLT4KKyAgICAgICAgPGl0ZW0+ZGEtREs8L2l0ZW0+IDwhLS0gRGFuaXNoIChEZW5tYXJrKSAtLT4KKyAgICAgICAgPGl0ZW0+ZGEtR0w8L2l0ZW0+IDwhLS0gRGFuaXNoIChHcmVlbmxhbmQpIC0tPgorICAgICAgICA8aXRlbT5kYXYtS0U8L2l0ZW0+IDwhLS0gVGFpdGEgKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZGUtQVQ8L2l0ZW0+IDwhLS0gR2VybWFuIChBdXN0cmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZGUtQkU8L2l0ZW0+IDwhLS0gR2VybWFuIChCZWxnaXVtKSAtLT4KKyAgICAgICAgPGl0ZW0+ZGUtQ0g8L2l0ZW0+IDwhLS0gR2VybWFuIChTd2l0emVybGFuZCkgLS0+CisgICAgICAgIDxpdGVtPmRlLURFPC9pdGVtPiA8IS0tIEdlcm1hbiAoR2VybWFueSkgLS0+CisgICAgICAgIDxpdGVtPmRlLUxJPC9pdGVtPiA8IS0tIEdlcm1hbiAoTGllY2h0ZW5zdGVpbikgLS0+CisgICAgICAgIDxpdGVtPmRlLUxVPC9pdGVtPiA8IS0tIEdlcm1hbiAoTHV4ZW1ib3VyZykgLS0+CisgICAgICAgIDxpdGVtPmRqZS1ORTwvaXRlbT4gPCEtLSBaYXJtYSAoTmlnZXIpIC0tPgorICAgICAgICA8aXRlbT5kc2ItREU8L2l0ZW0+IDwhLS0gTG93ZXIgU29yYmlhbiAoR2VybWFueSkgLS0+CisgICAgICAgIDxpdGVtPmR1YS1DTTwvaXRlbT4gPCEtLSBEdWFsYSAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5keW8tU048L2l0ZW0+IDwhLS0gSm9sYS1Gb255aSAoU2VuZWdhbCkgLS0+CisgICAgICAgIDxpdGVtPmR6LUJUPC9pdGVtPiA8IS0tIER6b25na2hhIChCaHV0YW4pIC0tPgorICAgICAgICA8aXRlbT5lYnUtS0U8L2l0ZW0+IDwhLS0gRW1idSAoS2VueWEpIC0tPgorICAgICAgICA8aXRlbT5lZS1HSDwvaXRlbT4gPCEtLSBFd2UgKEdoYW5hKSAtLT4KKyAgICAgICAgPGl0ZW0+ZWUtVEc8L2l0ZW0+IDwhLS0gRXdlIChUb2dvKSAtLT4KKyAgICAgICAgPGl0ZW0+ZWwtQ1k8L2l0ZW0+IDwhLS0gR3JlZWsgKEN5cHJ1cykgLS0+CisgICAgICAgIDxpdGVtPmVsLUdSPC9pdGVtPiA8IS0tIEdyZWVrIChHcmVlY2UpIC0tPgorICAgICAgICA8aXRlbT5lbi1BRzwvaXRlbT4gPCEtLSBFbmdsaXNoIChBbnRpZ3VhICYgQmFyYnVkYSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUFJPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEFuZ3VpbGxhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQVM8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQW1lcmljYW4gU2Ftb2EpIC0tPgorICAgICAgICA8aXRlbT5lbi1BVDwvaXRlbT4gPCEtLSBFbmdsaXNoIChBdXN0cmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQVU8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQXVzdHJhbGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQkI8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQmFyYmFkb3MpIC0tPgorICAgICAgICA8aXRlbT5lbi1CRTwvaXRlbT4gPCEtLSBFbmdsaXNoIChCZWxnaXVtKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQkk8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQnVydW5kaSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUJNPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEJlcm11ZGEpIC0tPgorICAgICAgICA8aXRlbT5lbi1CUzwvaXRlbT4gPCEtLSBFbmdsaXNoIChCYWhhbWFzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQlc8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQm90c3dhbmEpIC0tPgorICAgICAgICA8aXRlbT5lbi1CWjwvaXRlbT4gPCEtLSBFbmdsaXNoIChCZWxpemUpIC0tPgorICAgICAgICA8aXRlbT5lbi1DQTwvaXRlbT4gPCEtLSBFbmdsaXNoIChDYW5hZGEpIC0tPgorICAgICAgICA8aXRlbT5lbi1DQzwvaXRlbT4gPCEtLSBFbmdsaXNoIChDb2NvcyAoS2VlbGluZykgSXNsYW5kcykgLS0+CisgICAgICAgIDxpdGVtPmVuLUNIPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFN3aXR6ZXJsYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQ0s8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQ29vayBJc2xhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQ008L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5lbi1DWDwvaXRlbT4gPCEtLSBFbmdsaXNoIChDaHJpc3RtYXMgSXNsYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tQ1k8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQ3lwcnVzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tREU8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoR2VybWFueSkgLS0+CisgICAgICAgIDxpdGVtPmVuLURHPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKERpZWdvIEdhcmNpYSkgLS0+CisgICAgICAgIDxpdGVtPmVuLURLPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKERlbm1hcmspIC0tPgorICAgICAgICA8aXRlbT5lbi1ETTwvaXRlbT4gPCEtLSBFbmdsaXNoIChEb21pbmljYSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUVSPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEVyaXRyZWEpIC0tPgorICAgICAgICA8aXRlbT5lbi1GSTwvaXRlbT4gPCEtLSBFbmdsaXNoIChGaW5sYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tRko8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoRmlqaSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUZLPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEZhbGtsYW5kIElzbGFuZHMgKElzbGFzIE1hbHZpbmFzKSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUZNPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKE1pY3JvbmVzaWEpIC0tPgorICAgICAgICA8aXRlbT5lbi1HQjwvaXRlbT4gPCEtLSBFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUdEPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEdyZW5hZGEpIC0tPgorICAgICAgICA8aXRlbT5lbi1HRzwvaXRlbT4gPCEtLSBFbmdsaXNoIChHdWVybnNleSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUdIPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEdoYW5hKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tR0k8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoR2licmFsdGFyKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tR008L2l0ZW0+IDwhLS0gRW5nbGlzaCAoR2FtYmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tR1U8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoR3VhbSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUdZPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEd1eWFuYSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUhLPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEhvbmcgS29uZykgLS0+CisgICAgICAgIDxpdGVtPmVuLUlFPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKElyZWxhbmQpIC0tPgorICAgICAgICA8aXRlbT5lbi1JTDwvaXRlbT4gPCEtLSBFbmdsaXNoIChJc3JhZWwpIC0tPgorICAgICAgICA8aXRlbT5lbi1JTTwvaXRlbT4gPCEtLSBFbmdsaXNoIChJc2xlIG9mIE1hbikgLS0+CisgICAgICAgIDxpdGVtPmVuLUlOPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tSU88L2l0ZW0+IDwhLS0gRW5nbGlzaCAoQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5KSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tSkU8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoSmVyc2V5KSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tSk08L2l0ZW0+IDwhLS0gRW5nbGlzaCAoSmFtYWljYSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUtFPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tS0k8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoS2lyaWJhdGkpIC0tPgorICAgICAgICA8aXRlbT5lbi1LTjwvaXRlbT4gPCEtLSBFbmdsaXNoIChTdC4gS2l0dHMgJiBOZXZpcykgLS0+CisgICAgICAgIDxpdGVtPmVuLUtZPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKENheW1hbiBJc2xhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTEM8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoU3QuIEx1Y2lhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTFI8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTGliZXJpYSkgLS0+CisgICAgICAgIDxpdGVtPmVuLUxTPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKExlc290aG8pIC0tPgorICAgICAgICA8aXRlbT5lbi1NRzwvaXRlbT4gPCEtLSBFbmdsaXNoIChNYWRhZ2FzY2FyKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTUg8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTWFyc2hhbGwgSXNsYW5kcykgLS0+CisgICAgICAgIDxpdGVtPmVuLU1PPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKE1hY2F1KSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTVA8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTVM8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTW9udHNlcnJhdCkgLS0+CisgICAgICAgIDxpdGVtPmVuLU1UPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKE1hbHRhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTVU8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTWF1cml0aXVzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTVc8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTWFsYXdpKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTVk8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTWFsYXlzaWEpIC0tPgorICAgICAgICA8aXRlbT5lbi1OQTwvaXRlbT4gPCEtLSBFbmdsaXNoIChOYW1pYmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTkY8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTm9yZm9sayBJc2xhbmQpIC0tPgorICAgICAgICA8aXRlbT5lbi1ORzwvaXRlbT4gPCEtLSBFbmdsaXNoIChOaWdlcmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tTkw8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoTmV0aGVybGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5lbi1OUjwvaXRlbT4gPCEtLSBFbmdsaXNoIChOYXVydSkgLS0+CisgICAgICAgIDxpdGVtPmVuLU5VPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKE5pdWUpIC0tPgorICAgICAgICA8aXRlbT5lbi1OWjwvaXRlbT4gPCEtLSBFbmdsaXNoIChOZXcgWmVhbGFuZCkgLS0+CisgICAgICAgIDxpdGVtPmVuLVBHPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFBhcHVhIE5ldyBHdWluZWEpIC0tPgorICAgICAgICA8aXRlbT5lbi1QSDwvaXRlbT4gPCEtLSBFbmdsaXNoIChQaGlsaXBwaW5lcykgLS0+CisgICAgICAgIDxpdGVtPmVuLVBLPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFBha2lzdGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tUE48L2l0ZW0+IDwhLS0gRW5nbGlzaCAoUGl0Y2Fpcm4gSXNsYW5kcykgLS0+CisgICAgICAgIDxpdGVtPmVuLVBSPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFB1ZXJ0byBSaWNvKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tUFc8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoUGFsYXUpIC0tPgorICAgICAgICA8aXRlbT5lbi1SVzwvaXRlbT4gPCEtLSBFbmdsaXNoIChSd2FuZGEpIC0tPgorICAgICAgICA8aXRlbT5lbi1TQjwvaXRlbT4gPCEtLSBFbmdsaXNoIChTb2xvbW9uIElzbGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5lbi1TQzwvaXRlbT4gPCEtLSBFbmdsaXNoIChTZXljaGVsbGVzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tU0Q8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoU3VkYW4pIC0tPgorICAgICAgICA8aXRlbT5lbi1TRTwvaXRlbT4gPCEtLSBFbmdsaXNoIChTd2VkZW4pIC0tPgorICAgICAgICA8aXRlbT5lbi1TRzwvaXRlbT4gPCEtLSBFbmdsaXNoIChTaW5nYXBvcmUpIC0tPgorICAgICAgICA8aXRlbT5lbi1TSDwvaXRlbT4gPCEtLSBFbmdsaXNoIChTdC4gSGVsZW5hKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tU0k8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoU2xvdmVuaWEpIC0tPgorICAgICAgICA8aXRlbT5lbi1TTDwvaXRlbT4gPCEtLSBFbmdsaXNoIChTaWVycmEgTGVvbmUpIC0tPgorICAgICAgICA8aXRlbT5lbi1TUzwvaXRlbT4gPCEtLSBFbmdsaXNoIChTb3V0aCBTdWRhbikgLS0+CisgICAgICAgIDxpdGVtPmVuLVNYPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFNpbnQgTWFhcnRlbikgLS0+CisgICAgICAgIDxpdGVtPmVuLVNaPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFN3YXppbGFuZCkgLS0+CisgICAgICAgIDxpdGVtPmVuLVRDPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFR1cmtzICYgQ2FpY29zIElzbGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5lbi1USzwvaXRlbT4gPCEtLSBFbmdsaXNoIChUb2tlbGF1KSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tVE88L2l0ZW0+IDwhLS0gRW5nbGlzaCAoVG9uZ2EpIC0tPgorICAgICAgICA8aXRlbT5lbi1UVDwvaXRlbT4gPCEtLSBFbmdsaXNoIChUcmluaWRhZCAmIFRvYmFnbykgLS0+CisgICAgICAgIDxpdGVtPmVuLVRWPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFR1dmFsdSkgLS0+CisgICAgICAgIDxpdGVtPmVuLVRaPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tVUc8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoVWdhbmRhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tVU08L2l0ZW0+IDwhLS0gRW5nbGlzaCAoVS5TLiBPdXRseWluZyBJc2xhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tVVM8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoVW5pdGVkIFN0YXRlcykgLS0+CisgICAgICAgIDxpdGVtPmVuLVZDPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFN0LiBWaW5jZW50ICYgR3JlbmFkaW5lcykgLS0+CisgICAgICAgIDxpdGVtPmVuLVZHPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKEJyaXRpc2ggVmlyZ2luIElzbGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5lbi1WSTwvaXRlbT4gPCEtLSBFbmdsaXNoIChVLlMuIFZpcmdpbiBJc2xhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tVlU8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoVmFudWF0dSkgLS0+CisgICAgICAgIDxpdGVtPmVuLVdTPC9pdGVtPiA8IS0tIEVuZ2xpc2ggKFNhbW9hKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tWkE8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoU291dGggQWZyaWNhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tWk08L2l0ZW0+IDwhLS0gRW5nbGlzaCAoWmFtYmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZW4tWlc8L2l0ZW0+IDwhLS0gRW5nbGlzaCAoWmltYmFid2UpIC0tPgorICAgICAgICA8aXRlbT5lcy1BUjwvaXRlbT4gPCEtLSBTcGFuaXNoIChBcmdlbnRpbmEpIC0tPgorICAgICAgICA8aXRlbT5lcy1CTzwvaXRlbT4gPCEtLSBTcGFuaXNoIChCb2xpdmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtQ0w8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoQ2hpbGUpIC0tPgorICAgICAgICA8aXRlbT5lcy1DTzwvaXRlbT4gPCEtLSBTcGFuaXNoIChDb2xvbWJpYSkgLS0+CisgICAgICAgIDxpdGVtPmVzLUNSPC9pdGVtPiA8IS0tIFNwYW5pc2ggKENvc3RhIFJpY2EpIC0tPgorICAgICAgICA8aXRlbT5lcy1DVTwvaXRlbT4gPCEtLSBTcGFuaXNoIChDdWJhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtRE88L2l0ZW0+IDwhLS0gU3BhbmlzaCAoRG9taW5pY2FuIFJlcHVibGljKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtRUE8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoQ2V1dGEgJiBNZWxpbGxhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtRUM8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoRWN1YWRvcikgLS0+CisgICAgICAgIDxpdGVtPmVzLUVTPC9pdGVtPiA8IS0tIFNwYW5pc2ggKFNwYWluKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtR1E8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoRXF1YXRvcmlhbCBHdWluZWEpIC0tPgorICAgICAgICA8aXRlbT5lcy1HVDwvaXRlbT4gPCEtLSBTcGFuaXNoIChHdWF0ZW1hbGEpIC0tPgorICAgICAgICA8aXRlbT5lcy1ITjwvaXRlbT4gPCEtLSBTcGFuaXNoIChIb25kdXJhcykgLS0+CisgICAgICAgIDxpdGVtPmVzLUlDPC9pdGVtPiA8IS0tIFNwYW5pc2ggKENhbmFyeSBJc2xhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtTVg8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoTWV4aWNvKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtTkk8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoTmljYXJhZ3VhKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtUEE8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoUGFuYW1hKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtUEU8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoUGVydSkgLS0+CisgICAgICAgIDxpdGVtPmVzLVBIPC9pdGVtPiA8IS0tIFNwYW5pc2ggKFBoaWxpcHBpbmVzKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtUFI8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoUHVlcnRvIFJpY28pIC0tPgorICAgICAgICA8aXRlbT5lcy1QWTwvaXRlbT4gPCEtLSBTcGFuaXNoIChQYXJhZ3VheSkgLS0+CisgICAgICAgIDxpdGVtPmVzLVNWPC9pdGVtPiA8IS0tIFNwYW5pc2ggKEVsIFNhbHZhZG9yKSAtLT4KKyAgICAgICAgPGl0ZW0+ZXMtVVM8L2l0ZW0+IDwhLS0gU3BhbmlzaCAoVW5pdGVkIFN0YXRlcykgLS0+CisgICAgICAgIDxpdGVtPmVzLVVZPC9pdGVtPiA8IS0tIFNwYW5pc2ggKFVydWd1YXkpIC0tPgorICAgICAgICA8aXRlbT5lcy1WRTwvaXRlbT4gPCEtLSBTcGFuaXNoIChWZW5lenVlbGEpIC0tPgorICAgICAgICA8aXRlbT5ldC1FRTwvaXRlbT4gPCEtLSBFc3RvbmlhbiAoRXN0b25pYSkgLS0+CisgICAgICAgIDxpdGVtPmV1LUVTPC9pdGVtPiA8IS0tIEJhc3F1ZSAoU3BhaW4pIC0tPgorICAgICAgICA8aXRlbT5ld28tQ008L2l0ZW0+IDwhLS0gRXdvbmRvIChDYW1lcm9vbikgLS0+CisgICAgICAgIDxpdGVtPmZhLUFGPC9pdGVtPiA8IS0tIFBlcnNpYW4gKEFmZ2hhbmlzdGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+ZmEtSVI8L2l0ZW0+IDwhLS0gUGVyc2lhbiAoSXJhbikgLS0+CisgICAgICAgIDxpdGVtPmZmLUNNPC9pdGVtPiA8IS0tIEZ1bGFoIChDYW1lcm9vbikgLS0+CisgICAgICAgIDxpdGVtPmZmLUdOPC9pdGVtPiA8IS0tIEZ1bGFoIChHdWluZWEpIC0tPgorICAgICAgICA8aXRlbT5mZi1NUjwvaXRlbT4gPCEtLSBGdWxhaCAoTWF1cml0YW5pYSkgLS0+CisgICAgICAgIDxpdGVtPmZmLVNOPC9pdGVtPiA8IS0tIEZ1bGFoIChTZW5lZ2FsKSAtLT4KKyAgICAgICAgPGl0ZW0+ZmktRkk8L2l0ZW0+IDwhLS0gRmlubmlzaCAoRmlubGFuZCkgLS0+CisgICAgICAgIDxpdGVtPmZpbC1QSDwvaXRlbT4gPCEtLSBGaWxpcGlubyAoUGhpbGlwcGluZXMpIC0tPgorICAgICAgICA8aXRlbT5mby1ESzwvaXRlbT4gPCEtLSBGYXJvZXNlIChEZW5tYXJrKSAtLT4KKyAgICAgICAgPGl0ZW0+Zm8tRk88L2l0ZW0+IDwhLS0gRmFyb2VzZSAoRmFyb2UgSXNsYW5kcykgLS0+CisgICAgICAgIDxpdGVtPmZyLUJFPC9pdGVtPiA8IS0tIEZyZW5jaCAoQmVsZ2l1bSkgLS0+CisgICAgICAgIDxpdGVtPmZyLUJGPC9pdGVtPiA8IS0tIEZyZW5jaCAoQnVya2luYSBGYXNvKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItQkk8L2l0ZW0+IDwhLS0gRnJlbmNoIChCdXJ1bmRpKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItQko8L2l0ZW0+IDwhLS0gRnJlbmNoIChCZW5pbikgLS0+CisgICAgICAgIDxpdGVtPmZyLUJMPC9pdGVtPiA8IS0tIEZyZW5jaCAoU3QuIEJhcnRow6lsZW15KSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItQ0E8L2l0ZW0+IDwhLS0gRnJlbmNoIChDYW5hZGEpIC0tPgorICAgICAgICA8aXRlbT5mci1DRDwvaXRlbT4gPCEtLSBGcmVuY2ggKENvbmdvIChEUkMpKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItQ0Y8L2l0ZW0+IDwhLS0gRnJlbmNoIChDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMpIC0tPgorICAgICAgICA8aXRlbT5mci1DRzwvaXRlbT4gPCEtLSBGcmVuY2ggKENvbmdvIChSZXB1YmxpYykpIC0tPgorICAgICAgICA8aXRlbT5mci1DSDwvaXRlbT4gPCEtLSBGcmVuY2ggKFN3aXR6ZXJsYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItQ0k8L2l0ZW0+IDwhLS0gRnJlbmNoIChDw7R0ZSBk4oCZSXZvaXJlKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItQ008L2l0ZW0+IDwhLS0gRnJlbmNoIChDYW1lcm9vbikgLS0+CisgICAgICAgIDxpdGVtPmZyLURKPC9pdGVtPiA8IS0tIEZyZW5jaCAoRGppYm91dGkpIC0tPgorICAgICAgICA8aXRlbT5mci1EWjwvaXRlbT4gPCEtLSBGcmVuY2ggKEFsZ2VyaWEpIC0tPgorICAgICAgICA8aXRlbT5mci1GUjwvaXRlbT4gPCEtLSBGcmVuY2ggKEZyYW5jZSkgLS0+CisgICAgICAgIDxpdGVtPmZyLUdBPC9pdGVtPiA8IS0tIEZyZW5jaCAoR2Fib24pIC0tPgorICAgICAgICA8aXRlbT5mci1HRjwvaXRlbT4gPCEtLSBGcmVuY2ggKEZyZW5jaCBHdWlhbmEpIC0tPgorICAgICAgICA8aXRlbT5mci1HTjwvaXRlbT4gPCEtLSBGcmVuY2ggKEd1aW5lYSkgLS0+CisgICAgICAgIDxpdGVtPmZyLUdQPC9pdGVtPiA8IS0tIEZyZW5jaCAoR3VhZGVsb3VwZSkgLS0+CisgICAgICAgIDxpdGVtPmZyLUdRPC9pdGVtPiA8IS0tIEZyZW5jaCAoRXF1YXRvcmlhbCBHdWluZWEpIC0tPgorICAgICAgICA8aXRlbT5mci1IVDwvaXRlbT4gPCEtLSBGcmVuY2ggKEhhaXRpKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItS008L2l0ZW0+IDwhLS0gRnJlbmNoIChDb21vcm9zKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItTFU8L2l0ZW0+IDwhLS0gRnJlbmNoIChMdXhlbWJvdXJnKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItTUE8L2l0ZW0+IDwhLS0gRnJlbmNoIChNb3JvY2NvKSAtLT4KKyAgICAgICAgPGl0ZW0+ZnItTUM8L2l0ZW0+IDwhLS0gRnJlbmNoIChNb25hY28pIC0tPgorICAgICAgICA8aXRlbT5mci1NRjwvaXRlbT4gPCEtLSBGcmVuY2ggKFN0LiBNYXJ0aW4pIC0tPgorICAgICAgICA8aXRlbT5mci1NRzwvaXRlbT4gPCEtLSBGcmVuY2ggKE1hZGFnYXNjYXIpIC0tPgorICAgICAgICA8aXRlbT5mci1NTDwvaXRlbT4gPCEtLSBGcmVuY2ggKE1hbGkpIC0tPgorICAgICAgICA8aXRlbT5mci1NUTwvaXRlbT4gPCEtLSBGcmVuY2ggKE1hcnRpbmlxdWUpIC0tPgorICAgICAgICA8aXRlbT5mci1NUjwvaXRlbT4gPCEtLSBGcmVuY2ggKE1hdXJpdGFuaWEpIC0tPgorICAgICAgICA8aXRlbT5mci1NVTwvaXRlbT4gPCEtLSBGcmVuY2ggKE1hdXJpdGl1cykgLS0+CisgICAgICAgIDxpdGVtPmZyLU5DPC9pdGVtPiA8IS0tIEZyZW5jaCAoTmV3IENhbGVkb25pYSkgLS0+CisgICAgICAgIDxpdGVtPmZyLU5FPC9pdGVtPiA8IS0tIEZyZW5jaCAoTmlnZXIpIC0tPgorICAgICAgICA8aXRlbT5mci1QRjwvaXRlbT4gPCEtLSBGcmVuY2ggKEZyZW5jaCBQb2x5bmVzaWEpIC0tPgorICAgICAgICA8aXRlbT5mci1QTTwvaXRlbT4gPCEtLSBGcmVuY2ggKFN0LiBQaWVycmUgJiBNaXF1ZWxvbikgLS0+CisgICAgICAgIDxpdGVtPmZyLVJFPC9pdGVtPiA8IS0tIEZyZW5jaCAoUsOpdW5pb24pIC0tPgorICAgICAgICA8aXRlbT5mci1SVzwvaXRlbT4gPCEtLSBGcmVuY2ggKFJ3YW5kYSkgLS0+CisgICAgICAgIDxpdGVtPmZyLVNDPC9pdGVtPiA8IS0tIEZyZW5jaCAoU2V5Y2hlbGxlcykgLS0+CisgICAgICAgIDxpdGVtPmZyLVNOPC9pdGVtPiA8IS0tIEZyZW5jaCAoU2VuZWdhbCkgLS0+CisgICAgICAgIDxpdGVtPmZyLVNZPC9pdGVtPiA8IS0tIEZyZW5jaCAoU3lyaWEpIC0tPgorICAgICAgICA8aXRlbT5mci1URDwvaXRlbT4gPCEtLSBGcmVuY2ggKENoYWQpIC0tPgorICAgICAgICA8aXRlbT5mci1URzwvaXRlbT4gPCEtLSBGcmVuY2ggKFRvZ28pIC0tPgorICAgICAgICA8aXRlbT5mci1UTjwvaXRlbT4gPCEtLSBGcmVuY2ggKFR1bmlzaWEpIC0tPgorICAgICAgICA8aXRlbT5mci1WVTwvaXRlbT4gPCEtLSBGcmVuY2ggKFZhbnVhdHUpIC0tPgorICAgICAgICA8aXRlbT5mci1XRjwvaXRlbT4gPCEtLSBGcmVuY2ggKFdhbGxpcyAmIEZ1dHVuYSkgLS0+CisgICAgICAgIDxpdGVtPmZyLVlUPC9pdGVtPiA8IS0tIEZyZW5jaCAoTWF5b3R0ZSkgLS0+CisgICAgICAgIDxpdGVtPmZ1ci1JVDwvaXRlbT4gPCEtLSBGcml1bGlhbiAoSXRhbHkpIC0tPgorICAgICAgICA8aXRlbT5meS1OTDwvaXRlbT4gPCEtLSBXZXN0ZXJuIEZyaXNpYW4gKE5ldGhlcmxhbmRzKSAtLT4KKyAgICAgICAgPGl0ZW0+Z2EtSUU8L2l0ZW0+IDwhLS0gSXJpc2ggKElyZWxhbmQpIC0tPgorICAgICAgICA8aXRlbT5nZC1HQjwvaXRlbT4gPCEtLSBTY290dGlzaCBHYWVsaWMgKFVuaXRlZCBLaW5nZG9tKSAtLT4KKyAgICAgICAgPGl0ZW0+Z2wtRVM8L2l0ZW0+IDwhLS0gR2FsaWNpYW4gKFNwYWluKSAtLT4KKyAgICAgICAgPGl0ZW0+Z3N3LUNIPC9pdGVtPiA8IS0tIFN3aXNzIEdlcm1hbiAoU3dpdHplcmxhbmQpIC0tPgorICAgICAgICA8aXRlbT5nc3ctRlI8L2l0ZW0+IDwhLS0gU3dpc3MgR2VybWFuIChGcmFuY2UpIC0tPgorICAgICAgICA8aXRlbT5nc3ctTEk8L2l0ZW0+IDwhLS0gU3dpc3MgR2VybWFuIChMaWVjaHRlbnN0ZWluKSAtLT4KKyAgICAgICAgPGl0ZW0+Z3UtSU48L2l0ZW0+IDwhLS0gR3VqYXJhdGkgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+Z3V6LUtFPC9pdGVtPiA8IS0tIEd1c2lpIChLZW55YSkgLS0+CisgICAgICAgIDxpdGVtPmd2LUlNPC9pdGVtPiA8IS0tIE1hbnggKElzbGUgb2YgTWFuKSAtLT4KKyAgICAgICAgPGl0ZW0+aGEtR0g8L2l0ZW0+IDwhLS0gSGF1c2EgKEdoYW5hKSAtLT4KKyAgICAgICAgPGl0ZW0+aGEtTkU8L2l0ZW0+IDwhLS0gSGF1c2EgKE5pZ2VyKSAtLT4KKyAgICAgICAgPGl0ZW0+aGEtTkc8L2l0ZW0+IDwhLS0gSGF1c2EgKE5pZ2VyaWEpIC0tPgorICAgICAgICA8aXRlbT5oYXctVVM8L2l0ZW0+IDwhLS0gSGF3YWlpYW4gKFVuaXRlZCBTdGF0ZXMpIC0tPgorICAgICAgICA8aXRlbT5pdy1JTDwvaXRlbT4gPCEtLSBIZWJyZXcgKElzcmFlbCkgLS0+CisgICAgICAgIDxpdGVtPmhpLUlOPC9pdGVtPiA8IS0tIEhpbmRpIChJbmRpYSkgLS0+CisgICAgICAgIDxpdGVtPmhyLUJBPC9pdGVtPiA8IS0tIENyb2F0aWFuIChCb3NuaWEgJiBIZXJ6ZWdvdmluYSkgLS0+CisgICAgICAgIDxpdGVtPmhyLUhSPC9pdGVtPiA8IS0tIENyb2F0aWFuIChDcm9hdGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+aHNiLURFPC9pdGVtPiA8IS0tIFVwcGVyIFNvcmJpYW4gKEdlcm1hbnkpIC0tPgorICAgICAgICA8aXRlbT5odS1IVTwvaXRlbT4gPCEtLSBIdW5nYXJpYW4gKEh1bmdhcnkpIC0tPgorICAgICAgICA8aXRlbT5oeS1BTTwvaXRlbT4gPCEtLSBBcm1lbmlhbiAoQXJtZW5pYSkgLS0+CisgICAgICAgIDxpdGVtPmluLUlEPC9pdGVtPiA8IS0tIEluZG9uZXNpYW4gKEluZG9uZXNpYSkgLS0+CisgICAgICAgIDxpdGVtPmlnLU5HPC9pdGVtPiA8IS0tIElnYm8gKE5pZ2VyaWEpIC0tPgorICAgICAgICA8aXRlbT5paS1DTjwvaXRlbT4gPCEtLSBTaWNodWFuIFlpIChDaGluYSkgLS0+CisgICAgICAgIDxpdGVtPmlzLUlTPC9pdGVtPiA8IS0tIEljZWxhbmRpYyAoSWNlbGFuZCkgLS0+CisgICAgICAgIDxpdGVtPml0LUNIPC9pdGVtPiA8IS0tIEl0YWxpYW4gKFN3aXR6ZXJsYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+aXQtSVQ8L2l0ZW0+IDwhLS0gSXRhbGlhbiAoSXRhbHkpIC0tPgorICAgICAgICA8aXRlbT5pdC1TTTwvaXRlbT4gPCEtLSBJdGFsaWFuIChTYW4gTWFyaW5vKSAtLT4KKyAgICAgICAgPGl0ZW0+amEtSlA8L2l0ZW0+IDwhLS0gSmFwYW5lc2UgKEphcGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+amdvLUNNPC9pdGVtPiA8IS0tIE5nb21iYSAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5qbWMtVFo8L2l0ZW0+IDwhLS0gTWFjaGFtZSAoVGFuemFuaWEpIC0tPgorICAgICAgICA8aXRlbT5rYS1HRTwvaXRlbT4gPCEtLSBHZW9yZ2lhbiAoR2VvcmdpYSkgLS0+CisgICAgICAgIDxpdGVtPmthYi1EWjwvaXRlbT4gPCEtLSBLYWJ5bGUgKEFsZ2VyaWEpIC0tPgorICAgICAgICA8aXRlbT5rYW0tS0U8L2l0ZW0+IDwhLS0gS2FtYmEgKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+a2RlLVRaPC9pdGVtPiA8IS0tIE1ha29uZGUgKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+a2VhLUNWPC9pdGVtPiA8IS0tIEthYnV2ZXJkaWFudSAoQ2FwZSBWZXJkZSkgLS0+CisgICAgICAgIDxpdGVtPmtocS1NTDwvaXRlbT4gPCEtLSBLb3lyYSBDaGlpbmkgKE1hbGkpIC0tPgorICAgICAgICA8aXRlbT5raS1LRTwvaXRlbT4gPCEtLSBLaWt1eXUgKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+a2stS1o8L2l0ZW0+IDwhLS0gS2F6YWtoIChLYXpha2hzdGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+a2tqLUNNPC9pdGVtPiA8IS0tIEtha28gKENhbWVyb29uKSAtLT4KKyAgICAgICAgPGl0ZW0+a2wtR0w8L2l0ZW0+IDwhLS0gS2FsYWFsbGlzdXQgKEdyZWVubGFuZCkgLS0+CisgICAgICAgIDxpdGVtPmtsbi1LRTwvaXRlbT4gPCEtLSBLYWxlbmppbiAoS2VueWEpIC0tPgorICAgICAgICA8aXRlbT5rbS1LSDwvaXRlbT4gPCEtLSBLaG1lciAoQ2FtYm9kaWEpIC0tPgorICAgICAgICA8aXRlbT5rbi1JTjwvaXRlbT4gPCEtLSBLYW5uYWRhIChJbmRpYSkgLS0+CisgICAgICAgIDxpdGVtPmtvLUtQPC9pdGVtPiA8IS0tIEtvcmVhbiAoTm9ydGggS29yZWEpIC0tPgorICAgICAgICA8aXRlbT5rby1LUjwvaXRlbT4gPCEtLSBLb3JlYW4gKFNvdXRoIEtvcmVhKSAtLT4KKyAgICAgICAgPGl0ZW0+a29rLUlOPC9pdGVtPiA8IS0tIEtvbmthbmkgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+a3NiLVRaPC9pdGVtPiA8IS0tIFNoYW1iYWxhIChUYW56YW5pYSkgLS0+CisgICAgICAgIDxpdGVtPmtzZi1DTTwvaXRlbT4gPCEtLSBCYWZpYSAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5rc2gtREU8L2l0ZW0+IDwhLS0gQ29sb2duaWFuIChHZXJtYW55KSAtLT4KKyAgICAgICAgPGl0ZW0+a3ctR0I8L2l0ZW0+IDwhLS0gQ29ybmlzaCAoVW5pdGVkIEtpbmdkb20pIC0tPgorICAgICAgICA8aXRlbT5reS1LRzwvaXRlbT4gPCEtLSBLeXJneXogKEt5cmd5enN0YW4pIC0tPgorICAgICAgICA8aXRlbT5sYWctVFo8L2l0ZW0+IDwhLS0gTGFuZ2kgKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bGItTFU8L2l0ZW0+IDwhLS0gTHV4ZW1ib3VyZ2lzaCAoTHV4ZW1ib3VyZykgLS0+CisgICAgICAgIDxpdGVtPmxnLVVHPC9pdGVtPiA8IS0tIEdhbmRhIChVZ2FuZGEpIC0tPgorICAgICAgICA8aXRlbT5sa3QtVVM8L2l0ZW0+IDwhLS0gTGFrb3RhIChVbml0ZWQgU3RhdGVzKSAtLT4KKyAgICAgICAgPGl0ZW0+bG4tQU88L2l0ZW0+IDwhLS0gTGluZ2FsYSAoQW5nb2xhKSAtLT4KKyAgICAgICAgPGl0ZW0+bG4tQ0Q8L2l0ZW0+IDwhLS0gTGluZ2FsYSAoQ29uZ28gKERSQykpIC0tPgorICAgICAgICA8aXRlbT5sbi1DRjwvaXRlbT4gPCEtLSBMaW5nYWxhIChDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMpIC0tPgorICAgICAgICA8aXRlbT5sbi1DRzwvaXRlbT4gPCEtLSBMaW5nYWxhIChDb25nbyAoUmVwdWJsaWMpKSAtLT4KKyAgICAgICAgPGl0ZW0+bG8tTEE8L2l0ZW0+IDwhLS0gTGFvIChMYW9zKSAtLT4KKyAgICAgICAgPGl0ZW0+bHQtTFQ8L2l0ZW0+IDwhLS0gTGl0aHVhbmlhbiAoTGl0aHVhbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bHUtQ0Q8L2l0ZW0+IDwhLS0gTHViYS1LYXRhbmdhIChDb25nbyAoRFJDKSkgLS0+CisgICAgICAgIDxpdGVtPmx1by1LRTwvaXRlbT4gPCEtLSBMdW8gKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bHV5LUtFPC9pdGVtPiA8IS0tIEx1eWlhIChLZW55YSkgLS0+CisgICAgICAgIDxpdGVtPmx2LUxWPC9pdGVtPiA8IS0tIExhdHZpYW4gKExhdHZpYSkgLS0+CisgICAgICAgIDxpdGVtPm1hcy1LRTwvaXRlbT4gPCEtLSBNYXNhaSAoS2VueWEpIC0tPgorICAgICAgICA8aXRlbT5tYXMtVFo8L2l0ZW0+IDwhLS0gTWFzYWkgKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bWVyLUtFPC9pdGVtPiA8IS0tIE1lcnUgKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bWZlLU1VPC9pdGVtPiA8IS0tIE1vcmlzeWVuIChNYXVyaXRpdXMpIC0tPgorICAgICAgICA8aXRlbT5tZy1NRzwvaXRlbT4gPCEtLSBNYWxhZ2FzeSAoTWFkYWdhc2NhcikgLS0+CisgICAgICAgIDxpdGVtPm1naC1NWjwvaXRlbT4gPCEtLSBNYWtodXdhLU1lZXR0byAoTW96YW1iaXF1ZSkgLS0+CisgICAgICAgIDxpdGVtPm1nby1DTTwvaXRlbT4gPCEtLSBNZXRhyrwgKENhbWVyb29uKSAtLT4KKyAgICAgICAgPGl0ZW0+bWstTUs8L2l0ZW0+IDwhLS0gTWFjZWRvbmlhbiAoTWFjZWRvbmlhIChGWVJPTSkpIC0tPgorICAgICAgICA8aXRlbT5tbC1JTjwvaXRlbT4gPCEtLSBNYWxheWFsYW0gKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bW4tTU48L2l0ZW0+IDwhLS0gTW9uZ29saWFuIChNb25nb2xpYSkgLS0+CisgICAgICAgIDxpdGVtPm1yLUlOPC9pdGVtPiA8IS0tIE1hcmF0aGkgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bXMtQk48L2l0ZW0+IDwhLS0gTWFsYXkgKEJydW5laSkgLS0+CisgICAgICAgIDxpdGVtPm1zLU1ZPC9pdGVtPiA8IS0tIE1hbGF5IChNYWxheXNpYSkgLS0+CisgICAgICAgIDxpdGVtPm1zLVNHPC9pdGVtPiA8IS0tIE1hbGF5IChTaW5nYXBvcmUpIC0tPgorICAgICAgICA8aXRlbT5tdC1NVDwvaXRlbT4gPCEtLSBNYWx0ZXNlIChNYWx0YSkgLS0+CisgICAgICAgIDxpdGVtPm15LU1NPC9pdGVtPiA8IS0tIEJ1cm1lc2UgKE15YW5tYXIgKEJ1cm1hKSkgLS0+CisgICAgICAgIDxpdGVtPm16bi1JUjwvaXRlbT4gPCEtLSBNYXphbmRlcmFuaSAoSXJhbikgLS0+CisgICAgICAgIDxpdGVtPm5hcS1OQTwvaXRlbT4gPCEtLSBOYW1hIChOYW1pYmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+bmItTk88L2l0ZW0+IDwhLS0gTm9yd2VnaWFuIEJva23DpWwgKE5vcndheSkgLS0+CisgICAgICAgIDxpdGVtPm5iLVNKPC9pdGVtPiA8IS0tIE5vcndlZ2lhbiBCb2ttw6VsIChTdmFsYmFyZCAmIEphbiBNYXllbikgLS0+CisgICAgICAgIDxpdGVtPm5kLVpXPC9pdGVtPiA8IS0tIE5vcnRoIE5kZWJlbGUgKFppbWJhYndlKSAtLT4KKyAgICAgICAgPGl0ZW0+bmUtSU48L2l0ZW0+IDwhLS0gTmVwYWxpIChJbmRpYSkgLS0+CisgICAgICAgIDxpdGVtPm5lLU5QPC9pdGVtPiA8IS0tIE5lcGFsaSAoTmVwYWwpIC0tPgorICAgICAgICA8aXRlbT5ubC1BVzwvaXRlbT4gPCEtLSBEdXRjaCAoQXJ1YmEpIC0tPgorICAgICAgICA8aXRlbT5ubC1CRTwvaXRlbT4gPCEtLSBEdXRjaCAoQmVsZ2l1bSkgLS0+CisgICAgICAgIDxpdGVtPm5sLUJRPC9pdGVtPiA8IS0tIER1dGNoIChDYXJpYmJlYW4gTmV0aGVybGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5ubC1DVzwvaXRlbT4gPCEtLSBEdXRjaCAoQ3VyYcOnYW8pIC0tPgorICAgICAgICA8aXRlbT5ubC1OTDwvaXRlbT4gPCEtLSBEdXRjaCAoTmV0aGVybGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5ubC1TUjwvaXRlbT4gPCEtLSBEdXRjaCAoU3VyaW5hbWUpIC0tPgorICAgICAgICA8aXRlbT5ubC1TWDwvaXRlbT4gPCEtLSBEdXRjaCAoU2ludCBNYWFydGVuKSAtLT4KKyAgICAgICAgPGl0ZW0+bm1nLUNNPC9pdGVtPiA8IS0tIEt3YXNpbyAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5ubi1OTzwvaXRlbT4gPCEtLSBOb3J3ZWdpYW4gTnlub3JzayAoTm9yd2F5KSAtLT4KKyAgICAgICAgPGl0ZW0+bm5oLUNNPC9pdGVtPiA8IS0tIE5naWVtYm9vbiAoQ2FtZXJvb24pIC0tPgorICAgICAgICA8aXRlbT5udXMtU1M8L2l0ZW0+IDwhLS0gTnVlciAoU291dGggU3VkYW4pIC0tPgorICAgICAgICA8aXRlbT5ueW4tVUc8L2l0ZW0+IDwhLS0gTnlhbmtvbGUgKFVnYW5kYSkgLS0+CisgICAgICAgIDxpdGVtPm9tLUVUPC9pdGVtPiA8IS0tIE9yb21vIChFdGhpb3BpYSkgLS0+CisgICAgICAgIDxpdGVtPm9tLUtFPC9pdGVtPiA8IS0tIE9yb21vIChLZW55YSkgLS0+CisgICAgICAgIDxpdGVtPm9yLUlOPC9pdGVtPiA8IS0tIE9yaXlhIChJbmRpYSkgLS0+CisgICAgICAgIDxpdGVtPm9zLUdFPC9pdGVtPiA8IS0tIE9zc2V0aWMgKEdlb3JnaWEpIC0tPgorICAgICAgICA8aXRlbT5vcy1SVTwvaXRlbT4gPCEtLSBPc3NldGljIChSdXNzaWEpIC0tPgorICAgICAgICA8aXRlbT5wYS1BcmFiLVBLPC9pdGVtPiA8IS0tIFB1bmphYmkgKEFyYWJpYyxQYWtpc3RhbikgLS0+CisgICAgICAgIDxpdGVtPnBhLUd1cnUtSU48L2l0ZW0+IDwhLS0gUHVuamFiaSAoR3VybXVraGksSW5kaWEpIC0tPgorICAgICAgICA8aXRlbT5wbC1QTDwvaXRlbT4gPCEtLSBQb2xpc2ggKFBvbGFuZCkgLS0+CisgICAgICAgIDxpdGVtPnBzLUFGPC9pdGVtPiA8IS0tIFBhc2h0byAoQWZnaGFuaXN0YW4pIC0tPgorICAgICAgICA8aXRlbT5wdC1BTzwvaXRlbT4gPCEtLSBQb3J0dWd1ZXNlIChBbmdvbGEpIC0tPgorICAgICAgICA8aXRlbT5wdC1CUjwvaXRlbT4gPCEtLSBQb3J0dWd1ZXNlIChCcmF6aWwpIC0tPgorICAgICAgICA8aXRlbT5wdC1DVjwvaXRlbT4gPCEtLSBQb3J0dWd1ZXNlIChDYXBlIFZlcmRlKSAtLT4KKyAgICAgICAgPGl0ZW0+cHQtR1c8L2l0ZW0+IDwhLS0gUG9ydHVndWVzZSAoR3VpbmVhLUJpc3NhdSkgLS0+CisgICAgICAgIDxpdGVtPnB0LU1PPC9pdGVtPiA8IS0tIFBvcnR1Z3Vlc2UgKE1hY2F1KSAtLT4KKyAgICAgICAgPGl0ZW0+cHQtTVo8L2l0ZW0+IDwhLS0gUG9ydHVndWVzZSAoTW96YW1iaXF1ZSkgLS0+CisgICAgICAgIDxpdGVtPnB0LVBUPC9pdGVtPiA8IS0tIFBvcnR1Z3Vlc2UgKFBvcnR1Z2FsKSAtLT4KKyAgICAgICAgPGl0ZW0+cHQtU1Q8L2l0ZW0+IDwhLS0gUG9ydHVndWVzZSAoU8OjbyBUb23DqSAmIFByw61uY2lwZSkgLS0+CisgICAgICAgIDxpdGVtPnB0LVRMPC9pdGVtPiA8IS0tIFBvcnR1Z3Vlc2UgKFRpbW9yLUxlc3RlKSAtLT4KKyAgICAgICAgPGl0ZW0+cXUtQk88L2l0ZW0+IDwhLS0gUXVlY2h1YSAoQm9saXZpYSkgLS0+CisgICAgICAgIDxpdGVtPnF1LUVDPC9pdGVtPiA8IS0tIFF1ZWNodWEgKEVjdWFkb3IpIC0tPgorICAgICAgICA8aXRlbT5xdS1QRTwvaXRlbT4gPCEtLSBRdWVjaHVhIChQZXJ1KSAtLT4KKyAgICAgICAgPGl0ZW0+cm0tQ0g8L2l0ZW0+IDwhLS0gUm9tYW5zaCAoU3dpdHplcmxhbmQpIC0tPgorICAgICAgICA8aXRlbT5ybi1CSTwvaXRlbT4gPCEtLSBSdW5kaSAoQnVydW5kaSkgLS0+CisgICAgICAgIDxpdGVtPnJvLU1EPC9pdGVtPiA8IS0tIFJvbWFuaWFuIChNb2xkb3ZhKSAtLT4KKyAgICAgICAgPGl0ZW0+cm8tUk88L2l0ZW0+IDwhLS0gUm9tYW5pYW4gKFJvbWFuaWEpIC0tPgorICAgICAgICA8aXRlbT5yb2YtVFo8L2l0ZW0+IDwhLS0gUm9tYm8gKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+cnUtQlk8L2l0ZW0+IDwhLS0gUnVzc2lhbiAoQmVsYXJ1cykgLS0+CisgICAgICAgIDxpdGVtPnJ1LUtHPC9pdGVtPiA8IS0tIFJ1c3NpYW4gKEt5cmd5enN0YW4pIC0tPgorICAgICAgICA8aXRlbT5ydS1LWjwvaXRlbT4gPCEtLSBSdXNzaWFuIChLYXpha2hzdGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+cnUtTUQ8L2l0ZW0+IDwhLS0gUnVzc2lhbiAoTW9sZG92YSkgLS0+CisgICAgICAgIDxpdGVtPnJ1LVJVPC9pdGVtPiA8IS0tIFJ1c3NpYW4gKFJ1c3NpYSkgLS0+CisgICAgICAgIDxpdGVtPnJ1LVVBPC9pdGVtPiA8IS0tIFJ1c3NpYW4gKFVrcmFpbmUpIC0tPgorICAgICAgICA8aXRlbT5ydy1SVzwvaXRlbT4gPCEtLSBLaW55YXJ3YW5kYSAoUndhbmRhKSAtLT4KKyAgICAgICAgPGl0ZW0+cndrLVRaPC9pdGVtPiA8IS0tIFJ3YSAoVGFuemFuaWEpIC0tPgorICAgICAgICA8aXRlbT5zYWgtUlU8L2l0ZW0+IDwhLS0gU2FraGEgKFJ1c3NpYSkgLS0+CisgICAgICAgIDxpdGVtPnNhcS1LRTwvaXRlbT4gPCEtLSBTYW1idXJ1IChLZW55YSkgLS0+CisgICAgICAgIDxpdGVtPnNicC1UWjwvaXRlbT4gPCEtLSBTYW5ndSAoVGFuemFuaWEpIC0tPgorICAgICAgICA8aXRlbT5zZS1GSTwvaXRlbT4gPCEtLSBOb3J0aGVybiBTYW1pIChGaW5sYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+c2UtTk88L2l0ZW0+IDwhLS0gTm9ydGhlcm4gU2FtaSAoTm9yd2F5KSAtLT4KKyAgICAgICAgPGl0ZW0+c2UtU0U8L2l0ZW0+IDwhLS0gTm9ydGhlcm4gU2FtaSAoU3dlZGVuKSAtLT4KKyAgICAgICAgPGl0ZW0+c2VoLU1aPC9pdGVtPiA8IS0tIFNlbmEgKE1vemFtYmlxdWUpIC0tPgorICAgICAgICA8aXRlbT5zZXMtTUw8L2l0ZW0+IDwhLS0gS295cmFib3JvIFNlbm5pIChNYWxpKSAtLT4KKyAgICAgICAgPGl0ZW0+c2ctQ0Y8L2l0ZW0+IDwhLS0gU2FuZ28gKENlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYykgLS0+CisgICAgICAgIDxpdGVtPnNpLUxLPC9pdGVtPiA8IS0tIFNpbmhhbGEgKFNyaSBMYW5rYSkgLS0+CisgICAgICAgIDxpdGVtPnNrLVNLPC9pdGVtPiA8IS0tIFNsb3ZhayAoU2xvdmFraWEpIC0tPgorICAgICAgICA8aXRlbT5zbC1TSTwvaXRlbT4gPCEtLSBTbG92ZW5pYW4gKFNsb3ZlbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+c21uLUZJPC9pdGVtPiA8IS0tIEluYXJpIFNhbWkgKEZpbmxhbmQpIC0tPgorICAgICAgICA8aXRlbT5zbi1aVzwvaXRlbT4gPCEtLSBTaG9uYSAoWmltYmFid2UpIC0tPgorICAgICAgICA8aXRlbT5zby1ESjwvaXRlbT4gPCEtLSBTb21hbGkgKERqaWJvdXRpKSAtLT4KKyAgICAgICAgPGl0ZW0+c28tRVQ8L2l0ZW0+IDwhLS0gU29tYWxpIChFdGhpb3BpYSkgLS0+CisgICAgICAgIDxpdGVtPnNvLUtFPC9pdGVtPiA8IS0tIFNvbWFsaSAoS2VueWEpIC0tPgorICAgICAgICA8aXRlbT5zby1TTzwvaXRlbT4gPCEtLSBTb21hbGkgKFNvbWFsaWEpIC0tPgorICAgICAgICA8aXRlbT5zcS1BTDwvaXRlbT4gPCEtLSBBbGJhbmlhbiAoQWxiYW5pYSkgLS0+CisgICAgICAgIDxpdGVtPnNxLU1LPC9pdGVtPiA8IS0tIEFsYmFuaWFuIChNYWNlZG9uaWEgKEZZUk9NKSkgLS0+CisgICAgICAgIDxpdGVtPnNxLVhLPC9pdGVtPiA8IS0tIEFsYmFuaWFuIChLb3Nvdm8pIC0tPgorICAgICAgICA8aXRlbT5zci1DeXJsLUJBPC9pdGVtPiA8IS0tIFNlcmJpYW4gKEN5cmlsbGljLEJvc25pYSAmIEhlcnplZ292aW5hKSAtLT4KKyAgICAgICAgPGl0ZW0+c3ItQ3lybC1NRTwvaXRlbT4gPCEtLSBTZXJiaWFuIChDeXJpbGxpYyxNb250ZW5lZ3JvKSAtLT4KKyAgICAgICAgPGl0ZW0+c3ItQ3lybC1SUzwvaXRlbT4gPCEtLSBTZXJiaWFuIChDeXJpbGxpYyxTZXJiaWEpIC0tPgorICAgICAgICA8aXRlbT5zci1DeXJsLVhLPC9pdGVtPiA8IS0tIFNlcmJpYW4gKEN5cmlsbGljLEtvc292bykgLS0+CisgICAgICAgIDxpdGVtPnNyLUxhdG4tQkE8L2l0ZW0+IDwhLS0gU2VyYmlhbiAoTGF0aW4sQm9zbmlhICYgSGVyemVnb3ZpbmEpIC0tPgorICAgICAgICA8aXRlbT5zci1MYXRuLU1FPC9pdGVtPiA8IS0tIFNlcmJpYW4gKExhdGluLE1vbnRlbmVncm8pIC0tPgorICAgICAgICA8aXRlbT5zci1MYXRuLVJTPC9pdGVtPiA8IS0tIFNlcmJpYW4gKExhdGluLFNlcmJpYSkgLS0+CisgICAgICAgIDxpdGVtPnNyLUxhdG4tWEs8L2l0ZW0+IDwhLS0gU2VyYmlhbiAoTGF0aW4sS29zb3ZvKSAtLT4KKyAgICAgICAgPGl0ZW0+c3YtQVg8L2l0ZW0+IDwhLS0gU3dlZGlzaCAow4VsYW5kIElzbGFuZHMpIC0tPgorICAgICAgICA8aXRlbT5zdi1GSTwvaXRlbT4gPCEtLSBTd2VkaXNoIChGaW5sYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+c3YtU0U8L2l0ZW0+IDwhLS0gU3dlZGlzaCAoU3dlZGVuKSAtLT4KKyAgICAgICAgPGl0ZW0+c3ctQ0Q8L2l0ZW0+IDwhLS0gU3dhaGlsaSAoQ29uZ28gKERSQykpIC0tPgorICAgICAgICA8aXRlbT5zdy1LRTwvaXRlbT4gPCEtLSBTd2FoaWxpIChLZW55YSkgLS0+CisgICAgICAgIDxpdGVtPnN3LVRaPC9pdGVtPiA8IS0tIFN3YWhpbGkgKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+c3ctVUc8L2l0ZW0+IDwhLS0gU3dhaGlsaSAoVWdhbmRhKSAtLT4KKyAgICAgICAgPGl0ZW0+dGEtSU48L2l0ZW0+IDwhLS0gVGFtaWwgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+dGEtTEs8L2l0ZW0+IDwhLS0gVGFtaWwgKFNyaSBMYW5rYSkgLS0+CisgICAgICAgIDxpdGVtPnRhLU1ZPC9pdGVtPiA8IS0tIFRhbWlsIChNYWxheXNpYSkgLS0+CisgICAgICAgIDxpdGVtPnRhLVNHPC9pdGVtPiA8IS0tIFRhbWlsIChTaW5nYXBvcmUpIC0tPgorICAgICAgICA8aXRlbT50ZS1JTjwvaXRlbT4gPCEtLSBUZWx1Z3UgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+dGVvLUtFPC9pdGVtPiA8IS0tIFRlc28gKEtlbnlhKSAtLT4KKyAgICAgICAgPGl0ZW0+dGVvLVVHPC9pdGVtPiA8IS0tIFRlc28gKFVnYW5kYSkgLS0+CisgICAgICAgIDxpdGVtPnRoLVRIPC9pdGVtPiA8IS0tIFRoYWkgKFRoYWlsYW5kKSAtLT4KKyAgICAgICAgPGl0ZW0+dGktRVI8L2l0ZW0+IDwhLS0gVGlncmlueWEgKEVyaXRyZWEpIC0tPgorICAgICAgICA8aXRlbT50aS1FVDwvaXRlbT4gPCEtLSBUaWdyaW55YSAoRXRoaW9waWEpIC0tPgorICAgICAgICA8aXRlbT50by1UTzwvaXRlbT4gPCEtLSBUb25nYW4gKFRvbmdhKSAtLT4KKyAgICAgICAgPGl0ZW0+dHItQ1k8L2l0ZW0+IDwhLS0gVHVya2lzaCAoQ3lwcnVzKSAtLT4KKyAgICAgICAgPGl0ZW0+dHItVFI8L2l0ZW0+IDwhLS0gVHVya2lzaCAoVHVya2V5KSAtLT4KKyAgICAgICAgPGl0ZW0+dHdxLU5FPC9pdGVtPiA8IS0tIFRhc2F3YXEgKE5pZ2VyKSAtLT4KKyAgICAgICAgPGl0ZW0+dHptLU1BPC9pdGVtPiA8IS0tIENlbnRyYWwgQXRsYXMgVGFtYXppZ2h0IChNb3JvY2NvKSAtLT4KKyAgICAgICAgPGl0ZW0+dWctQ048L2l0ZW0+IDwhLS0gVXlnaHVyIChDaGluYSkgLS0+CisgICAgICAgIDxpdGVtPnVrLVVBPC9pdGVtPiA8IS0tIFVrcmFpbmlhbiAoVWtyYWluZSkgLS0+CisgICAgICAgIDxpdGVtPnVyLUlOPC9pdGVtPiA8IS0tIFVyZHUgKEluZGlhKSAtLT4KKyAgICAgICAgPGl0ZW0+dXItUEs8L2l0ZW0+IDwhLS0gVXJkdSAoUGFraXN0YW4pIC0tPgorICAgICAgICA8aXRlbT51ei1BcmFiLUFGPC9pdGVtPiA8IS0tIFV6YmVrIChBcmFiaWMsQWZnaGFuaXN0YW4pIC0tPgorICAgICAgICA8aXRlbT51ei1DeXJsLVVaPC9pdGVtPiA8IS0tIFV6YmVrIChDeXJpbGxpYyxVemJla2lzdGFuKSAtLT4KKyAgICAgICAgPGl0ZW0+dXotTGF0bi1VWjwvaXRlbT4gPCEtLSBVemJlayAoTGF0aW4sVXpiZWtpc3RhbikgLS0+CisgICAgICAgIDxpdGVtPnZpLVZOPC9pdGVtPiA8IS0tIFZpZXRuYW1lc2UgKFZpZXRuYW0pIC0tPgorICAgICAgICA8aXRlbT52dW4tVFo8L2l0ZW0+IDwhLS0gVnVuam8gKFRhbnphbmlhKSAtLT4KKyAgICAgICAgPGl0ZW0+d2FlLUNIPC9pdGVtPiA8IS0tIFdhbHNlciAoU3dpdHplcmxhbmQpIC0tPgorICAgICAgICA8aXRlbT54b2ctVUc8L2l0ZW0+IDwhLS0gU29nYSAoVWdhbmRhKSAtLT4KKyAgICAgICAgPGl0ZW0+eWF2LUNNPC9pdGVtPiA8IS0tIFlhbmdiZW4gKENhbWVyb29uKSAtLT4KKyAgICAgICAgPGl0ZW0+eW8tQko8L2l0ZW0+IDwhLS0gWW9ydWJhIChCZW5pbikgLS0+CisgICAgICAgIDxpdGVtPnlvLU5HPC9pdGVtPiA8IS0tIFlvcnViYSAoTmlnZXJpYSkgLS0+CisgICAgICAgIDxpdGVtPnpnaC1NQTwvaXRlbT4gPCEtLSBTdGFuZGFyZCBNb3JvY2NhbiBUYW1hemlnaHQgKE1vcm9jY28pIC0tPgorICAgICAgICA8aXRlbT56aC1IYW5zLUNOPC9pdGVtPiA8IS0tIENoaW5lc2UgKFNpbXBsaWZpZWQgSGFuLENoaW5hKSAtLT4KKyAgICAgICAgPGl0ZW0+emgtSGFucy1ISzwvaXRlbT4gPCEtLSBDaGluZXNlIChTaW1wbGlmaWVkIEhhbixIb25nIEtvbmcpIC0tPgorICAgICAgICA8aXRlbT56aC1IYW5zLU1PPC9pdGVtPiA8IS0tIENoaW5lc2UgKFNpbXBsaWZpZWQgSGFuLE1hY2F1KSAtLT4KKyAgICAgICAgPGl0ZW0+emgtSGFucy1TRzwvaXRlbT4gPCEtLSBDaGluZXNlIChTaW1wbGlmaWVkIEhhbixTaW5nYXBvcmUpIC0tPgorICAgICAgICA8aXRlbT56aC1IYW50LUhLPC9pdGVtPiA8IS0tIENoaW5lc2UgKFRyYWRpdGlvbmFsIEhhbixIb25nIEtvbmcpIC0tPgorICAgICAgICA8aXRlbT56aC1IYW50LU1PPC9pdGVtPiA8IS0tIENoaW5lc2UgKFRyYWRpdGlvbmFsIEhhbixNYWNhdSkgLS0+CisgICAgICAgIDxpdGVtPnpoLUhhbnQtVFc8L2l0ZW0+IDwhLS0gQ2hpbmVzZSAoVHJhZGl0aW9uYWwgSGFuLFRhaXdhbikgLS0+CisgICAgICAgIDxpdGVtPnp1LVpBPC9pdGVtPiA8IS0tIFp1bHUgKFNvdXRoIEFmcmljYSkgLS0+CisgICAgPC9zdHJpbmctYXJyYXk+CisKKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKaW5kZXggNDg0Mzg3OS4uMzQ3ZjJmOSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCkBAIC00ODcsMTAgKzQ4NywzNCBAQAogICAgIDwhLS0gVGFrZSBidWcgcmVwb3J0IG1lbnUgdGl0bGUgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdGl0bGUiPlRha2UgYnVnIHJlcG9ydDwvc3RyaW5nPgogICAgIDwhLS0gTWVzc2FnZSBpbiBidWdyZXBvcnQgZGlhbG9nIGRlc2NyaWJpbmcgd2hhdCBpdCBkb2VzIFtDSEFSIExJTUlUPU5PTkVdIC0tPgorICAgIDwhLS0gVE9ETzogcmVtb3ZlIGlmIG5vdCB1c2VkIGFueW1vcmUgLS0+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfbWVzc2FnZSI+VGhpcyB3aWxsIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgeW91cgogICAgICAgICBjdXJyZW50IGRldmljZSBzdGF0ZSwgdG8gc2VuZCBhcyBhbiBlLW1haWwgbWVzc2FnZS4gIEl0IHdpbGwgdGFrZSBhIGxpdHRsZQogICAgICAgICB0aW1lIGZyb20gc3RhcnRpbmcgdGhlIGJ1ZyByZXBvcnQgdW50aWwgaXQgaXMgcmVhZHkgdG8gYmUgc2VudDsgcGxlYXNlIGJlCiAgICAgICAgIHBhdGllbnQuPC9zdHJpbmc+CisgICAgPCEtLSBUaXRsZSBpbiB0aGUgYnVncmVwb3J0IGRpYWxvZyBmb3IgdGhlIGludGVyYWN0aXZlIHdvcmtmbG93LiBbQ0hBUiBMSU1JVD0yMF0gLS0+CisgICAgPCEtLSBETyBOT1QgVFJBTlNMQVRFIFlFVDogZmluYWwgcGhyYXNpbmcgc3RpbGwgYmVpbmcgZGlzY3Vzc2VkIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X29wdGlvbl9pbnRlcmFjdGl2ZV90aXRsZSI+SW50ZXJhY3RpdmUgcmVwb3J0PC9zdHJpbmc+CisgICAgPCEtLSBTdW1tYXJ5IGluIHRoZSBidWdyZXBvcnQgZGlhbG9nIGZvciB0aGUgaW50ZXJhY3RpdmUgd29ya2Zsb3cuIFtDSEFSIExJTUlUPU5PTkVdIC0tPgorICAgIDwhLS0gRE8gTk9UIFRSQU5TTEFURSBZRVQ6IGZpbmFsIHBocmFzaW5nIHN0aWxsIGJlaW5nIGRpc2N1c3NlZCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9vcHRpb25faW50ZXJhY3RpdmVfc3VtbWFyeSI+VXNlIHRoaXMgdW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzLgorICAgICAgICBJdCBhbGxvd3MgeW91IHRvIHRyYWNrIHByb2dyZXNzIG9mIHRoZSByZXBvcnQgYW5kIGVudGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgcHJvYmxlbS4KKyAgICAgICAgSXQgbWlnaHQgb21pdCBzb21lIGxlc3MtdXNlZCBzZWN0aW9ucyB0aGF0IHRha2UgYSBsb25nIHRpbWUgdG8gcmVwb3J0Ljwvc3RyaW5nPgorICAgIDwhLS0gVGl0bGUgaW4gdGhlIGJ1Z3JlcG9ydCBkaWFsb2cgZm9yIHRoZSBmdWxsIHdvcmtmbG93LiBbQ0hBUiBMSU1JVD0yMF0gLS0+CisgICAgPCEtLSBETyBOT1QgVFJBTlNMQVRFIFlFVDogZmluYWwgcGhyYXNpbmcgc3RpbGwgYmVpbmcgZGlzY3Vzc2VkIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X29wdGlvbl9mdWxsX3RpdGxlIj5GdWxsIHJlcG9ydDwvc3RyaW5nPgorICAgIDwhLS0gU3VtbWFyeSBpbiB0aGUgYnVncmVwb3J0IGRpYWxvZyBmb3IgdGhlIGZ1bGwgd29ya2Zsb3cuIFtDSEFSIExJTUlUPTIwXSAtLT4KKyAgICA8IS0tIERPIE5PVCBUUkFOU0xBVEUgWUVUOiBmaW5hbCBwaHJhc2luZyBzdGlsbCBiZWluZyBkaXNjdXNzZWQgLS0+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfb3B0aW9uX2Z1bGxfc3VtbWFyeSI+VXNlIHRoaXMgb3B0aW9uIGZvciBtaW5pbWFsIGludGVyZmVyZW5jZSB3aGVuCisgICAgICAgIHlvdXIgZGV2aWNlIGlzIHVucmVzcG9uc2l2ZSBvciB0b28gc2xvdywgb3Igd2hlbiB5b3UgbmVlZCBhbGwgc2VjdGlvbnMuCisgICAgICAgIERvZXMgbm90IHRha2UgYSBzY3JlZW5zaG90IG9yIGFsbG93IHlvdSB0byBlbnRlciBtb3JlIGRldGFpbHMuPC9zdHJpbmc+CisgICAgPCEtLSAgVG9hc3QgbWVzc2FnZSBpbmZvcm1pbmcgdXNlciBpbiBob3cgbWFueSBzZWNvbmRzIGEgYnVncmVwb3J0IHNjcmVlbnNob3Qgd2lsbCBiZSB0YWtlbiAtLT4KKyAgICA8IS0tIERPIE5PVCBUUkFOU0xBVEUgWUVUOiBmaW5hbCBwaHJhc2luZyBzdGlsbCBiZWluZyBkaXNjdXNzZWQgLS0+CisgICAgPHBsdXJhbHMgbmFtZT0iYnVncmVwb3J0X2NvdW50ZG93biI+CisgICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlRha2luZyBzY3JlZW5zaG90IGZvciBidWcgcmVwb3J0IGluIDx4bGlmZjpnIGlkPSJudW1iZXIiPiVkPC94bGlmZjpnPiBzZWNvbmQuPC9pdGVtPgorICAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlRha2luZyBzY3JlZW5zaG90IGZvciBidWcgcmVwb3J0IGluIDx4bGlmZjpnIGlkPSJudW1iZXIiPiVkPC94bGlmZjpnPiBzZWNvbmRzLjwvaXRlbT4KKyAgICA8L3BsdXJhbHM+CisKICAgICA8IS0tIEZvcm1hdCBmb3IgYnVpbGQgc3VtbWFyeSBpbmZvIFtDSEFSIExJTUlUPU5PTkVdIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0YXR1cyIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+JXMgKCVzKTwvc3RyaW5nPgogCkBAIC01MzcsNiArNTYxLDkgQEAKICAgICA8IS0tIFRoZSBkaXZpZGVyIHN5bWJvbCBiZXR3ZWVuIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgbm90aWZpY2F0aW9uIGhlYWRlci4gbm90IHRyYW5zbGF0YWJsZSBbQ0hBUiBMSU1JVD0xXSAtLT4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oZWFkZXJfZGl2aWRlcl9zeW1ib2wiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPuKAojwvc3RyaW5nPgogCisgICAgPCEtLSBUZXh0IHNob3duIGluIHBsYWNlIG9mIG5vdGlmaWNhdGlvbiBjb250ZW50cyB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgaGlkZGVuIG9uIGEgc2VjdXJlIGxvY2tzY3JlZW4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiPkNvbnRlbnRzIGhpZGRlbjwvc3RyaW5nPgorCiAgICAgPCEtLSBEaXNwbGF5ZWQgdG8gdGhlIHVzZXIgdG8gdGVsbCB0aGVtIHRoYXQgdGhleSBoYXZlIHN0YXJ0ZWQgdXAgdGhlIHBob25lIGluICJzYWZlIG1vZGUiIC0tPgogICAgIDxzdHJpbmcgbmFtZT0ic2FmZU1vZGUiPlNhZmUgbW9kZTwvc3RyaW5nPgogCkBAIC0zOTY2LDI1ICszOTkzLDYgQEAKICAgICA8IS0tIFtDSEFSX0xJTUlUPU5PTkVdIEJhdHRlcnkgc2F2ZXI6IEZlYXR1cmUgZGVzY3JpcHRpb24gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX2Rlc2NyaXB0aW9uIj5UbyBoZWxwIGltcHJvdmUgYmF0dGVyeSBsaWZlLCBiYXR0ZXJ5IHNhdmVyIHJlZHVjZXMgeW91ciBkZXZpY2XigJlzIHBlcmZvcm1hbmNlIGFuZCBsaW1pdHMgdmlicmF0aW9uLCBsb2NhdGlvbiBzZXJ2aWNlcywgYW5kIG1vc3QgYmFja2dyb3VuZCBkYXRhLiBFbWFpbCwgbWVzc2FnaW5nLCBhbmQgb3RoZXIgYXBwcyB0aGF0IHJlbHkgb24gc3luY2luZyBtYXkgbm90IHVwZGF0ZSB1bmxlc3MgeW91IG9wZW4gdGhlbS5cblxuQmF0dGVyeSBzYXZlciB0dXJucyBvZmYgYXV0b21hdGljYWxseSB3aGVuIHlvdXIgZGV2aWNlIGlzIGNoYXJnaW5nLjwvc3RyaW5nPgogCi0KLSAgICA8IS0tIFtDSEFSIExJTUlUPTEwMF0gTm90aWZpY2F0aW9uIGltcG9ydGFuY2Ugc2xpZGVyIHRpdGxlIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfdGl0bGUiPkltcG9ydGFuY2U8L3N0cmluZz4KLQotICAgIDwhLS0gW0NIQVIgTElNSVQ9MTAwXSBOb3RpZmljYXRpb24gSW1wb3J0YW5jZSBzbGlkZXI6IGJsb2NrZWQgaW1wb3J0YW5jZSBsZXZlbCBkZXNjcmlwdGlvbiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiPkJsb2NrZWQ6IE5ldmVyIHNob3cgdGhlc2Ugbm90aWZpY2F0aW9uczwvc3RyaW5nPgotCi0gICAgPCEtLSBbQ0hBUiBMSU1JVD0xMDBdIE5vdGlmaWNhdGlvbiBJbXBvcnRhbmNlIHNsaWRlcjogbG93IGltcG9ydGFuY2UgbGV2ZWwgZGVzY3JpcHRpb24gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciPkxvdzogU2lsZW50bHkgc2hvdyBhdCB0aGUgYm90dG9tIG9mIHRoZSBub3RpZmljYXRpb24gbGlzdDwvc3RyaW5nPgotCi0gICAgPCEtLSBbQ0hBUiBMSU1JVD0xMDBdIE5vdGlmaWNhdGlvbiBJbXBvcnRhbmNlIHNsaWRlcjogbm9ybWFsIGltcG9ydGFuY2UgbGV2ZWwgZGVzY3JpcHRpb24gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0Ij5Ob3JtYWw6IFNpbGVudGx5IHNob3cgdGhlc2Ugbm90aWZpY2F0aW9uczwvc3RyaW5nPgotCi0gICAgPCEtLSBbQ0hBUiBMSU1JVD0xMDBdIE5vdGlmaWNhdGlvbiBJbXBvcnRhbmNlIHNsaWRlcjogaGlnaCBpbXBvcnRhbmNlIGxldmVsIGRlc2NyaXB0aW9uIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCI+SGlnaDogU2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RpZmljYXRpb25zIGxpc3QgYW5kIG1ha2Ugc291bmQ8L3N0cmluZz4KLQotICAgIDwhLS0gW0NIQVIgTElNSVQ9MTAwXSBOb3RpZmljYXRpb24gSW1wb3J0YW5jZSBzbGlkZXI6IG1heCBpbXBvcnRhbmNlIGxldmVsIGRlc2NyaXB0aW9uIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4Ij5VcmdlbnQ6IFBlZWsgb250byB0aGUgc2NyZWVuIGFuZCBtYWtlIHNvdW5kPC9zdHJpbmc+Ci0KICAgICA8IS0tIFplbiBtb2RlIGNvbmRpdGlvbiAtIHN1bW1hcnk6IHRpbWUgZHVyYXRpb24gaW4gbWludXRlcy4gW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CiAgICAgPHBsdXJhbHMgbmFtZT0iemVuX21vZGVfZHVyYXRpb25fbWludXRlc19zdW1tYXJ5Ij4KICAgICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+Rm9yIG9uZSBtaW51dGUgKHVudGlsIDx4bGlmZjpnIGlkPSJmb3JtYXR0ZWRUaW1lIiBleGFtcGxlPSIxMDowMCBQTSI+JTIkczwveGxpZmY6Zz4pPC9pdGVtPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9zeW1ib2xzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3ltYm9scy54bWwKaW5kZXggZjI1N2YxNC4uYjQwZmMzYiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9zeW1ib2xzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N5bWJvbHMueG1sCkBAIC0xMTA0LDYgKzExMDQsNyBAQAogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJjb25maWdfZXRoZXJuZXRfdGNwX2J1ZmZlcnMiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9ImNvbmZpZ193aWZpX3RjcF9idWZmZXJzIiAvPgogCisgIDxqYXZhLXN5bWJvbCB0eXBlPSJwbHVyYWxzIiBuYW1lPSJidWdyZXBvcnRfY291bnRkb3duIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0icGx1cmFscyIgbmFtZT0iZHVyYXRpb25faG91cnMiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJwbHVyYWxzIiBuYW1lPSJkdXJhdGlvbl9taW51dGVzIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0icGx1cmFscyIgbmFtZT0iZHVyYXRpb25fc2Vjb25kcyIgLz4KQEAgLTExMjQsNiArMTEyNSw3IEBACiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJhcnJheSIgbmFtZT0ic2ltX2NvbG9ycyIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9ImFycmF5IiBuYW1lPSJzcGVjaWFsX2xvY2FsZV9jb2RlcyIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9ImFycmF5IiBuYW1lPSJzcGVjaWFsX2xvY2FsZV9uYW1lcyIgLz4KKyAgPGphdmEtc3ltYm9sIHR5cGU9ImFycmF5IiBuYW1lPSJzdXBwb3J0ZWRfbG9jYWxlcyIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9ImFycmF5IiBuYW1lPSJjb25maWdfY2RtYV9kdW5fc3VwcG9ydGVkX3R5cGVzIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0iYXJyYXkiIG5hbWU9ImNvbmZpZ19kaXNhYmxlZFVudGlsVXNlZFByZWluc3RhbGxlZEltZXMiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJhcnJheSIgbmFtZT0iY29uZmlnX2Rpc2FibGVkVW50aWxVc2VkUHJlaW5zdGFsbGVkQ2FycmllckFwcHMiIC8+CkBAIC0xNTYzLDkgKzE1NjUsMTMgQEAKICAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0iYW5kcm9pZF9wcmVwYXJpbmdfYXBrIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJhbmRyb2lkX3N0YXJ0X3RpdGxlIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJhbmRyb2lkX3VwZ3JhZGluZ190aXRsZSIgLz4KLSAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0iYnVncmVwb3J0X3RpdGxlIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJidWdyZXBvcnRfbWVzc2FnZSIgLz4KKyAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0iYnVncmVwb3J0X29wdGlvbl9mdWxsX3N1bW1hcnkiIC8+CisgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9ImJ1Z3JlcG9ydF9vcHRpb25fZnVsbF90aXRsZSIgLz4KKyAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0iYnVncmVwb3J0X29wdGlvbl9pbnRlcmFjdGl2ZV9zdW1tYXJ5IiAvPgorICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJidWdyZXBvcnRfb3B0aW9uX2ludGVyYWN0aXZlX3RpdGxlIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJidWdyZXBvcnRfc3RhdHVzIiAvPgorICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJidWdyZXBvcnRfdGl0bGUiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9ImNvbmZpZ19vcmllbnRhdGlvblNlbnNvclR5cGUiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9ImZhY2V1bmxvY2tfbXVsdGlwbGVfZmFpbHVyZXMiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9Imdsb2JhbF9hY3Rpb25fcG93ZXJfb2ZmIiAvPgpAQCAtMjA5MSwxMiArMjA5Nyw2IEBACiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJhcnJheSIgbmFtZT0iY29uZmlnX3N5c3RlbV9jb25kaXRpb25fcHJvdmlkZXJzIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJtdXRlZF9ieSIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0iemVuX21vZGVfYWxhcm0iIC8+Ci0gIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIC8+Ci0gIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgLz4KLSAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgLz4KLSAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgLz4KLSAgPGphdmEtc3ltYm9sIHR5cGU9InN0cmluZyIgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiAvPgotICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV90aXRsZSIgLz4KIAogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJzZWxlY3RfZGF5IiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0ic3RyaW5nIiBuYW1lPSJzZWxlY3RfeWVhciIgLz4KQEAgLTIzNjcsNiArMjM2Nyw3IEBACiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJpZCIgbmFtZT0iZGVsZXRlQnV0dG9uIiAvPgogCiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9Im5vdGlmaWNhdGlvbl9jaGlsZHJlbl9jb3VudF9icmFja2V0ZWQiIC8+CisgIDxqYXZhLXN5bWJvbCB0eXBlPSJzdHJpbmciIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9ImlkIiBuYW1lPSJhcHBfbmFtZV90ZXh0IiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0iaWQiIG5hbWU9Im51bWJlcl9vZl9jaGlsZHJlbiIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9ImlkIiBuYW1lPSJoZWFkZXJfc3ViX3RleHQiIC8+CkBAIC0yMzgyLDcgKzIzODMsNyBAQAogICA8amF2YS1zeW1ib2wgdHlwZT0iZHJhd2FibGUiIG5hbWU9ImljX2V4cGFuZF9idW5kbGUiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJkcmF3YWJsZSIgbmFtZT0iaWNfY29sbGFwc2VfYnVuZGxlIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0iZGltZW4iIG5hbWU9Im5vdGlmaWNhdGlvbl9oZWFkZXJfaGVpZ2h0IiAvPgotICA8amF2YS1zeW1ib2wgdHlwZT0iZGltZW4iIG5hbWU9Im5vdGlmaWNhdGlvbl9iaWdfcGljdHVyZV9jb250ZW50X21pbl9oZWlnaHRfd2l0aF9waWN0dXJlIiAvPgorICA8amF2YS1zeW1ib2wgdHlwZT0iZGltZW4iIG5hbWU9Im5vdGlmaWNhdGlvbl9taW5fY29udGVudF9oZWlnaHQiIC8+CiAgIDxqYXZhLXN5bWJvbCB0eXBlPSJkaW1lbiIgbmFtZT0ibm90aWZpY2F0aW9uX2hlYWRlcl9zaHJpbmtfbWluX3dpZHRoIiAvPgogICA8amF2YS1zeW1ib2wgdHlwZT0iZGltZW4iIG5hbWU9Im5vdGlmaWNhdGlvbl9jb250ZW50X21hcmdpbl9zdGFydCIgLz4KICAgPGphdmEtc3ltYm9sIHR5cGU9ImRpbWVuIiBuYW1lPSJub3RpZmljYXRpb25fY29udGVudF9tYXJnaW5fZW5kIiAvPgpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvTGluZUJyZWFrQnVmZmVyZWRXcml0ZXJUZXN0LmphdmEgYi9jb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9MaW5lQnJlYWtCdWZmZXJlZFdyaXRlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWFlMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvTGluZUJyZWFrQnVmZmVyZWRXcml0ZXJUZXN0LmphdmEKQEAgLTAsMCArMSwyMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWw7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS5pby5Xcml0ZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBUZXN0cyBmb3Ige0BsaW5rIEluZGVudGluZ1ByaW50V3JpdGVyfS4KKyAqLworcHVibGljIGNsYXNzIExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIG1TdHJlYW07CisgICAgcHJpdmF0ZSBSZWNvcmRpbmdXcml0ZXIgbVdyaXRlcjsKKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyLnNldFVwKCk7CisKKyAgICAgICAgbVdyaXRlciA9IG5ldyBSZWNvcmRpbmdXcml0ZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0TGVzc1RoYW5CdWZmZXJTaXplKCkgeworICAgICAgICBmaW5hbCBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlciBsdyA9IG5ldyBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlcihtV3JpdGVyLCAxMDAwKTsKKworICAgICAgICBsdy5wcmludGxuKCJIZWxsbyIpOworICAgICAgICBsdy5wcmludGxuKCJXb3JsZCIpOworICAgICAgICBsdy5wcmludGxuKCJUZXN0Iik7CisgICAgICAgIGx3LmZsdXNoKCk7CisKKyAgICAgICAgYXNzZXJ0T3V0cHV0KCJIZWxsb1xuV29ybGRcblRlc3RcbiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RNb3JlVGhhbkJ1ZmZlclNpemVOb0xpbmVCcmVha3MoKSB7CisgICAgICAgIGZpbmFsIExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyIGx3ID0gbmV3IExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyKG1Xcml0ZXIsIDIwKTsKKworICAgICAgICBTdHJpbmcgbGl0ZXJhbCA9ICJhYWFhYWFhYWFhYWFhYWEiOworICAgICAgICBsdy5wcmludChsaXRlcmFsKTsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbCk7CisgICAgICAgIGx3LmZsdXNoKCk7CisKKyAgICAgICAgLy8gSGF2ZSB0byBtYW51YWxseSBpbnNwZWN0IG91dHB1dC4KKyAgICAgICAgTGlzdDxTdHJpbmc+IHJlc3VsdCA9IG1Xcml0ZXIuZ2V0U3RyaW5ncygpOworICAgICAgICAvLyBFeHBlY3QgdHdvIHN0cmluZ3MuCisgICAgICAgIGFzc2VydEVxdWFscygyLCByZXN1bHQuc2l6ZSgpKTsKKyAgICAgICAgLy8gRXhwZWN0IHRoZSBzdHJpbmdzIHRvIHN1bSB1cCB0byB0aGUgb3JpZ2luYWwgaW5wdXQuCisgICAgICAgIGFzc2VydEVxdWFscygyICogbGl0ZXJhbC5sZW5ndGgoKSwgcmVzdWx0LmdldCgwKS5sZW5ndGgoKSArIHJlc3VsdC5nZXQoMSkubGVuZ3RoKCkpOworICAgICAgICAvLyBTdHJpbmdzIHNob3VsZCBvbmx5IGJlIGEuCisgICAgICAgIGZvciAoU3RyaW5nIHMgOiByZXN1bHQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCdhJywgcy5jaGFyQXQoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdE1vcmVUaGFuQnVmZmVyU2l6ZU5vTGluZUJyZWFrc1NpbmdsZVN0cmluZygpIHsKKyAgICAgICAgZmluYWwgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIgbHcgPSBuZXcgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIobVdyaXRlciwgMjApOworCisgICAgICAgIFN0cmluZyBsaXRlcmFsID0gImFhYWFhYWFhYWFhYWFhYSI7CisgICAgICAgIGx3LnByaW50KGxpdGVyYWwgKyBsaXRlcmFsKTsKKyAgICAgICAgbHcuZmx1c2goKTsKKworICAgICAgICAvLyBIYXZlIHRvIG1hbnVhbGx5IGluc3BlY3Qgb3V0cHV0LgorICAgICAgICBMaXN0PFN0cmluZz4gcmVzdWx0ID0gbVdyaXRlci5nZXRTdHJpbmdzKCk7CisgICAgICAgIC8vIEV4cGVjdCB0d28gc3RyaW5ncy4KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHJlc3VsdC5zaXplKCkpOworICAgICAgICAvLyBFeHBlY3QgdGhlIHN0cmluZ3MgdG8gc3VtIHVwIHRvIHRoZSBvcmlnaW5hbCBpbnB1dC4KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDIgKiBsaXRlcmFsLmxlbmd0aCgpLCByZXN1bHQuZ2V0KDApLmxlbmd0aCgpICsgcmVzdWx0LmdldCgxKS5sZW5ndGgoKSk7CisgICAgICAgIC8vIFN0cmluZ3Mgc2hvdWxkIG9ubHkgYmUgYS4KKyAgICAgICAgZm9yIChTdHJpbmcgcyA6IHJlc3VsdCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoJ2EnLCBzLmNoYXJBdChpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0TW9yZVRoYW5CdWZmZXJTaXplTGluZUJyZWFrQmVmb3JlKCkgeworICAgICAgICBmaW5hbCBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlciBsdyA9IG5ldyBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlcihtV3JpdGVyLCAyMCk7CisKKyAgICAgICAgU3RyaW5nIGxpdGVyYWwxID0gImFhYWFhYWFhYWFcbmJiYmIiOworICAgICAgICBTdHJpbmcgbGl0ZXJhbDIgPSAiY2NjY2NjY2NjYyI7CisgICAgICAgIGx3LnByaW50KGxpdGVyYWwxKTsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbDIpOworICAgICAgICBsdy5mbHVzaCgpOworCisgICAgICAgIGFzc2VydE91dHB1dCgiYWFhYWFhYWFhYSIsICJiYmJiY2NjY2NjY2NjYyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RNb3JlVGhhbkJ1ZmZlclNpemVMaW5lQnJlYWtCZWZvcmVTaW5nbGVTdHJpbmcoKSB7CisgICAgICAgIGZpbmFsIExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyIGx3ID0gbmV3IExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyKG1Xcml0ZXIsIDIwKTsKKworICAgICAgICBTdHJpbmcgbGl0ZXJhbDEgPSAiYWFhYWFhYWFhYVxuYmJiYiI7CisgICAgICAgIFN0cmluZyBsaXRlcmFsMiA9ICJjY2NjY2NjY2NjIjsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbDEgKyBsaXRlcmFsMik7CisgICAgICAgIGx3LmZsdXNoKCk7CisKKyAgICAgICAgYXNzZXJ0T3V0cHV0KCJhYWFhYWFhYWFhIiwgImJiYmJjY2NjY2NjY2NjIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdE1vcmVUaGFuQnVmZmVyU2l6ZUxpbmVCcmVha05ldygpIHsKKyAgICAgICAgZmluYWwgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIgbHcgPSBuZXcgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIobVdyaXRlciwgMjApOworCisgICAgICAgIFN0cmluZyBsaXRlcmFsMSA9ICJhYWFhYWFhYWFhYmJiYmIiOworICAgICAgICBTdHJpbmcgbGl0ZXJhbDIgPSAiY1xuZFxuZGRkZGRkZGRkIjsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbDEpOworICAgICAgICBsdy5wcmludChsaXRlcmFsMik7CisgICAgICAgIGx3LmZsdXNoKCk7CisKKyAgICAgICAgYXNzZXJ0T3V0cHV0KCJhYWFhYWFhYWFhYmJiYmJjXG5kIiwgImRkZGRkZGRkZCIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RNb3JlVGhhbkJ1ZmZlclNpemVMaW5lQnJlYWtCZWZvcmVBbmROZXcoKSB7CisgICAgICAgIGZpbmFsIExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyIGx3ID0gbmV3IExpbmVCcmVha0J1ZmZlcmVkV3JpdGVyKG1Xcml0ZXIsIDIwKTsKKworICAgICAgICBTdHJpbmcgbGl0ZXJhbDEgPSAiYWFhYWFhYWFhYVxuYmJiYmIiOworICAgICAgICBTdHJpbmcgbGl0ZXJhbDIgPSAiY1xuZFxuZGRkZGRkZGRkIjsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbDEpOworICAgICAgICBsdy5wcmludChsaXRlcmFsMik7CisgICAgICAgIGx3LmZsdXNoKCk7CisKKyAgICAgICAgYXNzZXJ0T3V0cHV0KCJhYWFhYWFhYWFhXG5iYmJiYmNcbmQiLCAiZGRkZGRkZGRkIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdE1vcmVUaGFuQnVmZmVyU2l6ZUludCgpIHsKKyAgICAgICAgZmluYWwgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIgbHcgPSBuZXcgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIobVdyaXRlciwgMTUpOworCisgICAgICAgIGludCBsaXRlcmFsMSA9IDEyMzQ1Njc4OTA7CisgICAgICAgIGludCBsaXRlcmFsMiA9IDk4NzY1NDMyMTsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbDEpOworICAgICAgICBsdy5wcmludChsaXRlcmFsMik7CisgICAgICAgIGx3LmZsdXNoKCk7CisKKyAgICAgICAgYXNzZXJ0T3V0cHV0KCIxMjM0NTY3ODkwOTg3NjUiLCAiNDMyMSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RNb3JlVGhhbkJ1ZmZlclNpemVDaGFyKCkgeworICAgICAgICBmaW5hbCBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlciBsdyA9IG5ldyBMaW5lQnJlYWtCdWZmZXJlZFdyaXRlcihtV3JpdGVyLCAxNSk7CisKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgICAgICAgIGx3LnByaW50KCckJyk7CisgICAgICAgIH0KKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgICAgICAgIGx3LnByaW50KCclJyk7CisgICAgICAgIH0KKyAgICAgICAgbHcuZmx1c2goKTsKKworICAgICAgICBhc3NlcnRPdXRwdXQoIiQkJCQkJCQkJCQlJSUlJSIsICIlJSUlJSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RNb3JlVGhhbkJ1ZmZlclNpemVMaW5lQnJlYWtOZXdDaGFycygpIHsKKyAgICAgICAgZmluYWwgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIgbHcgPSBuZXcgTGluZUJyZWFrQnVmZmVyZWRXcml0ZXIobVdyaXRlciwgMjApOworCisgICAgICAgIFN0cmluZyBsaXRlcmFsMSA9ICJhYWFhYWFhYWFhYmJiYmIiOworICAgICAgICBTdHJpbmcgbGl0ZXJhbDIgPSAiY1xuZFxuZGRkZGRkZGRkIjsKKyAgICAgICAgbHcucHJpbnQobGl0ZXJhbDEudG9DaGFyQXJyYXkoKSk7CisgICAgICAgIGx3LnByaW50KGxpdGVyYWwyLnRvQ2hhckFycmF5KCkpOworICAgICAgICBsdy5mbHVzaCgpOworCisgICAgICAgIGFzc2VydE91dHB1dCgiYWFhYWFhYWFhYWJiYmJiY1xuZCIsICJkZGRkZGRkZGQiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYXNzZXJ0T3V0cHV0KFN0cmluZy4uLiBnb2xkZW4pIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGdvbGRMaXN0ID0gY3JlYXRlVGVzdEdvbGRlbihnb2xkZW4pOworICAgICAgICBhc3NlcnRFcXVhbHMoZ29sZExpc3QsIG1Xcml0ZXIuZ2V0U3RyaW5ncygpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBMaXN0PFN0cmluZz4gY3JlYXRlVGVzdEdvbGRlbihTdHJpbmcuLi4gYXJncykgeworICAgICAgICBMaXN0PFN0cmluZz4gcmV0ID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgICAgIGZvciAoU3RyaW5nIHMgOiBhcmdzKSB7CisgICAgICAgICAgICByZXQuYWRkKHMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgLy8gQSB3cml0ZXIgcmVjb3JkaW5nIGNhbGxzIHRvIHdyaXRlLgorICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGNsYXNzIFJlY29yZGluZ1dyaXRlciBleHRlbmRzIFdyaXRlciB7CisKKyAgICAgICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gc3RyaW5ncyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworCisgICAgICAgIHB1YmxpYyBSZWNvcmRpbmdXcml0ZXIoKSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldFN0cmluZ3MoKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nczsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZShjaGFyW10gY2J1ZiwgaW50IG9mZiwgaW50IGxlbikgeworICAgICAgICAgICAgc3RyaW5ncy5hZGQobmV3IFN0cmluZyhjYnVmLCBvZmYsIGxlbikpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGZsdXNoKCkgeworICAgICAgICAgICAgLy8gSWdub3JlLgorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgeworICAgICAgICAgICAgLy8gSWdub3JlLgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZGF0YS9ldGMvcGxhdGZvcm0ueG1sIGIvZGF0YS9ldGMvcGxhdGZvcm0ueG1sCmluZGV4IGI0Zjg4YzMzLi45OTlkNDdiIDEwMDY0NAotLS0gYS9kYXRhL2V0Yy9wbGF0Zm9ybS54bWwKKysrIGIvZGF0YS9ldGMvcGxhdGZvcm0ueG1sCkBAIC00NCw2ICs0NCw3IEBACiAKICAgICA8cGVybWlzc2lvbiBuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uQkxVRVRPT1RIX1NUQUNLIiA+CiAgICAgICAgIDxncm91cCBnaWQ9Im5ldF9idF9zdGFjayIgLz4KKyAgICAgICAgPGdyb3VwIGdpZD0id2FrZWxvY2siIC8+CiAgICAgPC9wZXJtaXNzaW9uPgogCiAgICAgPHBlcm1pc3Npb24gbmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLk5FVF9UVU5ORUxJTkciID4KZGlmZiAtLWdpdCBhL2dyYXBoaWNzL2phdmEvYW5kcm9pZC9ncmFwaGljcy9kcmF3YWJsZS9JY29uLmFpZGwgYi9ncmFwaGljcy9qYXZhL2FuZHJvaWQvZ3JhcGhpY3MvZHJhd2FibGUvSWNvbi5haWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MmNmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmFwaGljcy9qYXZhL2FuZHJvaWQvZ3JhcGhpY3MvZHJhd2FibGUvSWNvbi5haWRsCkBAIC0wLDAgKzEsMTkgQEAKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE1LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlOworCitwYXJjZWxhYmxlIEljb247CmRpZmYgLS1naXQgYS9saWJzL2NvbW1vbl90aW1lL2NvbW1vbl90aW1lX3NlcnZlci5jcHAgYi9saWJzL2NvbW1vbl90aW1lL2NvbW1vbl90aW1lX3NlcnZlci5jcHAKaW5kZXggMDEzNzJlMC4uZjcyZmZhYSAxMDA2NDQKLS0tIGEvbGlicy9jb21tb25fdGltZS9jb21tb25fdGltZV9zZXJ2ZXIuY3BwCisrKyBiL2xpYnMvY29tbW9uX3RpbWUvY29tbW9uX3RpbWVfc2VydmVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBACiAKICAgICAvLyBDcmVhdGUgdGhlIGV2ZW50ZmQgd2Ugd2lsbCB1c2UgdG8gc2lnbmFsIG91ciB0aHJlYWQgdG8gd2FrZSB1cCB3aGVuCiAgICAgLy8gbmVlZGVkLgotICAgIG1XYWtldXBUaHJlYWRGRCA9IGV2ZW50ZmQoMCwgRUZEX05PTkJMT0NLKTsKKyAgICBtV2FrZXVwVGhyZWFkRkQgPSBldmVudGZkKDAsIEVGRF9OT05CTE9DSyB8IEVGRF9DTE9FWEVDKTsKIAogICAgIC8vIHNlZWQgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yICh1c2VkIHRvIGdlbmVyYXRlZCB0aW1lbGluZSBJRHMpCiAgICAgc3JhbmQ0OChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN5c3RlbVRpbWUoKSkpOwpkaWZmIC0tZ2l0IGEvbGlicy9od3VpL09wUmVvcmRlcmVyLmNwcCBiL2xpYnMvaHd1aS9PcFJlb3JkZXJlci5jcHAKaW5kZXggYmRjOGY2OC4uYWQ5NTU5ZiAxMDA2NDQKLS0tIGEvbGlicy9od3VpL09wUmVvcmRlcmVyLmNwcAorKysgYi9saWJzL2h3dWkvT3BSZW9yZGVyZXIuY3BwCkBAIC05MSw4ICs5MSw3IEBACiAKICAgICBNZXJnaW5nT3BCYXRjaChiYXRjaGlkX3QgYmF0Y2hJZCwgQmFrZWRPcFN0YXRlKiBvcCkKICAgICAgICAgICAgIDogQmF0Y2hCYXNlKGJhdGNoSWQsIG9wLCB0cnVlKQotICAgICAgICAgICAgLCBtQ2xpcFNpZGVGbGFncyhvcC0+Y29tcHV0ZWRTdGF0ZS5jbGlwU2lkZUZsYWdzKQotICAgICAgICAgICAgLCBtQ2xpcFJlY3Qob3AtPmNvbXB1dGVkU3RhdGUuY2xpcFJlY3QpIHsKKyAgICAgICAgICAgICwgbUNsaXBTaWRlRmxhZ3Mob3AtPmNvbXB1dGVkU3RhdGUuY2xpcFNpZGVGbGFncykgewogICAgIH0KIAogICAgIC8qCkBAIC0xOTQsMjIgKzE5MywxNyBAQAogICAgICAgICBtQm91bmRzLnVuaW9uV2l0aChvcC0+Y29tcHV0ZWRTdGF0ZS5jbGlwcGVkQm91bmRzKTsKICAgICAgICAgbU9wcy5wdXNoX2JhY2sob3ApOwogCi0gICAgICAgIGNvbnN0IGludCBuZXdDbGlwU2lkZUZsYWdzID0gb3AtPmNvbXB1dGVkU3RhdGUuY2xpcFNpZGVGbGFnczsKLSAgICAgICAgbUNsaXBTaWRlRmxhZ3MgfD0gbmV3Q2xpcFNpZGVGbGFnczsKLQotICAgICAgICBjb25zdCBSZWN0JiBvcENsaXAgPSBvcC0+Y29tcHV0ZWRTdGF0ZS5jbGlwUmVjdDsKLSAgICAgICAgaWYgKG5ld0NsaXBTaWRlRmxhZ3MgJiBPcENsaXBTaWRlRmxhZ3M6OkxlZnQpIG1DbGlwUmVjdC5sZWZ0ID0gb3BDbGlwLmxlZnQ7Ci0gICAgICAgIGlmIChuZXdDbGlwU2lkZUZsYWdzICYgT3BDbGlwU2lkZUZsYWdzOjpUb3ApIG1DbGlwUmVjdC50b3AgPSBvcENsaXAudG9wOwotICAgICAgICBpZiAobmV3Q2xpcFNpZGVGbGFncyAmIE9wQ2xpcFNpZGVGbGFnczo6UmlnaHQpIG1DbGlwUmVjdC5yaWdodCA9IG9wQ2xpcC5yaWdodDsKLSAgICAgICAgaWYgKG5ld0NsaXBTaWRlRmxhZ3MgJiBPcENsaXBTaWRlRmxhZ3M6OkJvdHRvbSkgbUNsaXBSZWN0LmJvdHRvbSA9IG9wQ2xpcC5ib3R0b207CisgICAgICAgIC8vIEJlY2F1c2UgYSBuZXcgb3AgbXVzdCBoYXZlIHBhc3NlZCBjYW5NZXJnZVdpdGgoKSwgd2Uga25vdyBpdCdzIHBhc3NlZCB0aGUgY2xpcHBpbmcgY29tcGF0CisgICAgICAgIC8vIGNoZWNrLCBhbmQgZG9lc24ndCBleHRlbmQgcGFzdCBhIHNpZGUgb2YgdGhlIGNsaXAgdGhhdCdzIGluIHVzZSBieSB0aGUgbWVyZ2VkIGJhdGNoLgorICAgICAgICAvLyBUaGVyZWZvcmUgaXQncyBzYWZlIHRvIHNpbXBseSBhbHdheXMgbWVyZ2UgZmxhZ3MsIGFuZCB1c2UgdGhlIGJvdW5kcyBhcyB0aGUgY2xpcCByZWN0LgorICAgICAgICBtQ2xpcFNpZGVGbGFncyB8PSBvcC0+Y29tcHV0ZWRTdGF0ZS5jbGlwU2lkZUZsYWdzOwogICAgIH0KIAogICAgIGludCBnZXRDbGlwU2lkZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbUNsaXBTaWRlRmxhZ3M7IH0KLSAgICBjb25zdCBSZWN0JiBnZXRDbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1DbGlwUmVjdDsgfQorICAgIGNvbnN0IFJlY3QmIGdldENsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbUJvdW5kczsgfQogCiBwcml2YXRlOgogICAgIGludCBtQ2xpcFNpZGVGbGFnczsKLSAgICBSZWN0IG1DbGlwUmVjdDsKIH07CiAKIE9wUmVvcmRlcmVyOjpMYXllclJlb3JkZXJlcjo6TGF5ZXJSZW9yZGVyZXIodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwKZGlmZiAtLWdpdCBhL2xpYnMvaHd1aS90ZXN0cy91bml0L09wUmVvcmRlcmVyVGVzdHMuY3BwIGIvbGlicy9od3VpL3Rlc3RzL3VuaXQvT3BSZW9yZGVyZXJUZXN0cy5jcHAKaW5kZXggMjg4ZjhhZi4uYjI4ZTQzNiAxMDA2NDQKLS0tIGEvbGlicy9od3VpL3Rlc3RzL3VuaXQvT3BSZW9yZGVyZXJUZXN0cy5jcHAKKysrIGIvbGlicy9od3VpL3Rlc3RzL3VuaXQvT3BSZW9yZGVyZXJUZXN0cy5jcHAKQEAgLTIyMiw2ICsyMjIsNDYgQEAKICAgICAgICAgICAgIDw8ICJFeHBlY3QgbnVtYmVyIG9mIG9wcyA9IDIgKiBsb29wIGNvdW50IjsKIH0KIAorVEVTVChPcFJlb3JkZXJlciwgY2xpcHBlZE1lcmdpbmcpIHsKKyAgICBjbGFzcyBDbGlwcGVkTWVyZ2luZ1Rlc3RSZW5kZXJlciA6IHB1YmxpYyBUZXN0UmVuZGVyZXJCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgb25NZXJnZWRCaXRtYXBPcHMoY29uc3QgTWVyZ2VkQmFrZWRPcExpc3QmIG9wTGlzdCkgb3ZlcnJpZGUgeworICAgICAgICAgICAgRVhQRUNUX0VRKDAsIG1JbmRleCk7CisgICAgICAgICAgICBtSW5kZXggKz0gb3BMaXN0LmNvdW50OworICAgICAgICAgICAgRVhQRUNUX0VRKDR1LCBvcExpc3QuY291bnQpOworICAgICAgICAgICAgRVhQRUNUX0VRKFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcExpc3QuY2xpcCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoT3BDbGlwU2lkZUZsYWdzOjpMZWZ0IHwgT3BDbGlwU2lkZUZsYWdzOjpUb3AgfCBPcENsaXBTaWRlRmxhZ3M6OlJpZ2h0LAorICAgICAgICAgICAgICAgICAgICBvcExpc3QuY2xpcFNpZGVGbGFncyk7CisgICAgICAgIH0KKyAgICB9OworICAgIGF1dG8gbm9kZSA9IFRlc3RVdGlsczo6Y3JlYXRlTm9kZSgwLCAwLCAxMDAsIDEwMCwKKyAgICAgICAgICAgIFtdKFJlbmRlclByb3BlcnRpZXMmIHByb3BzLCBUZXN0Q2FudmFzJiBjYW52YXMpIHsKKyAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gVGVzdFV0aWxzOjpjcmVhdGVTa0JpdG1hcCgyMCwgMjApOworCisgICAgICAgIC8vIGxlZnQgc2lkZSBjbGlwcGVkICh0byBpbnNldCBsZWZ0IGhhbGYpCisgICAgICAgIGNhbnZhcy5jbGlwUmVjdCgxMCwgMCwgNTAsIDEwMCwgU2tSZWdpb246OmtSZXBsYWNlX09wKTsKKyAgICAgICAgY2FudmFzLmRyYXdCaXRtYXAoYml0bWFwLCAwLCA0MCwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gdG9wIHNpZGUgY2xpcHBlZCAodG8gaW5zZXQgdG9wIGhhbGYpCisgICAgICAgIGNhbnZhcy5jbGlwUmVjdCgwLCAxMCwgMTAwLCA1MCwgU2tSZWdpb246OmtSZXBsYWNlX09wKTsKKyAgICAgICAgY2FudmFzLmRyYXdCaXRtYXAoYml0bWFwLCA0MCwgMCwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gcmlnaHQgc2lkZSBjbGlwcGVkICh0byBpbnNldCByaWdodCBoYWxmKQorICAgICAgICBjYW52YXMuY2xpcFJlY3QoNTAsIDAsIDkwLCAxMDAsIFNrUmVnaW9uOjprUmVwbGFjZV9PcCk7CisgICAgICAgIGNhbnZhcy5kcmF3Qml0bWFwKGJpdG1hcCwgODAsIDQwLCBudWxscHRyKTsKKworICAgICAgICAvLyBib3R0b20gbm90IGNsaXBwZWQsIGp1c3QgYWJ1dHRpbmcgKGluc2V0IGJvdHRvbSBoYWxmKQorICAgICAgICBjYW52YXMuY2xpcFJlY3QoMCwgNTAsIDEwMCwgOTAsIFNrUmVnaW9uOjprUmVwbGFjZV9PcCk7CisgICAgICAgIGNhbnZhcy5kcmF3Qml0bWFwKGJpdG1hcCwgNDAsIDcwLCBudWxscHRyKTsKKyAgICB9KTsKKworICAgIE9wUmVvcmRlcmVyIHJlb3JkZXJlcihzRW1wdHlMYXllclVwZGF0ZVF1ZXVlLCBTa1JlY3Q6Ok1ha2VXSCgxMDAsIDEwMCksIDEwMCwgMTAwLAorICAgICAgICAgICAgY3JlYXRlU3luY2VkTm9kZUxpc3Qobm9kZSksIHNMaWdodENlbnRlcik7CisgICAgQ2xpcHBlZE1lcmdpbmdUZXN0UmVuZGVyZXIgcmVuZGVyZXI7CisgICAgcmVvcmRlcmVyLnJlcGxheUJha2VkT3BzPFRlc3REaXNwYXRjaGVyPihyZW5kZXJlcik7CisgICAgRVhQRUNUX0VRKDQsIHJlbmRlcmVyLmdldEluZGV4KCkpOworfQorCiBURVNUKE9wUmVvcmRlcmVyLCB0ZXh0TWVyZ2luZykgewogICAgIGNsYXNzIFRleHRNZXJnaW5nVGVzdFJlbmRlcmVyIDogcHVibGljIFRlc3RSZW5kZXJlckJhc2UgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL2xpYnMvaW5wdXQvUG9pbnRlckNvbnRyb2xsZXIuY3BwIGIvbGlicy9pbnB1dC9Qb2ludGVyQ29udHJvbGxlci5jcHAKaW5kZXggNTI5ODQ5ZS4uMjEyYzZhMCAxMDA2NDQKLS0tIGEvbGlicy9pbnB1dC9Qb2ludGVyQ29udHJvbGxlci5jcHAKKysrIGIvbGlicy9pbnB1dC9Qb2ludGVyQ29udHJvbGxlci5jcHAKQEAgLTkwLDYgKzkwLDcgQEAKICAgICBtTG9ja2VkLmxhc3RGcmFtZVVwZGF0ZWRUaW1lID0gMDsKIAogICAgIG1Mb2NrZWQuYnV0dG9uU3RhdGUgPSAwOworICAgIG1Mb2NrZWQuaWNvbkRldGFjaGVkID0gZmFsc2U7CiAKICAgICBtUG9saWN5LT5sb2FkUG9pbnRlckljb24oJm1Mb2NrZWQucG9pbnRlckljb24pOwogCkBAIC0xODQsNiArMTg1LDEwIEBACiB9CiAKIHZvaWQgUG9pbnRlckNvbnRyb2xsZXI6OnNldFBvc2l0aW9uTG9ja2VkKGZsb2F0IHgsIGZsb2F0IHkpIHsKKyAgICBpZiAobUxvY2tlZC5pY29uRGV0YWNoZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGZsb2F0IG1pblgsIG1pblksIG1heFgsIG1heFk7CiAgICAgaWYgKGdldEJvdW5kc0xvY2tlZCgmbWluWCwgJm1pblksICZtYXhYLCAmbWF4WSkpIHsKICAgICAgICAgaWYgKHggPD0gbWluWCkgewpAQCAtMjE3LDYgKzIyMiwxMCBAQAogICAgIC8vIFJlbW92ZSB0aGUgaW5hY3Rpdml0eSB0aW1lb3V0LCBzaW5jZSB3ZSBhcmUgZmFkaW5nIG5vdy4KICAgICByZW1vdmVJbmFjdGl2aXR5VGltZW91dExvY2tlZCgpOwogCisgICAgaWYgKG1Mb2NrZWQuaWNvbkRldGFjaGVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBTdGFydCBmYWRpbmcuCiAgICAgaWYgKHRyYW5zaXRpb24gPT0gVFJBTlNJVElPTl9JTU1FRElBVEUpIHsKICAgICAgICAgbUxvY2tlZC5wb2ludGVyRmFkZURpcmVjdGlvbiA9IDA7CkBAIC0yMzQsNiArMjQzLDEwIEBACiAgICAgLy8gQWx3YXlzIHJlc2V0IHRoZSBpbmFjdGl2aXR5IHRpbWVyLgogICAgIHJlc2V0SW5hY3Rpdml0eVRpbWVvdXRMb2NrZWQoKTsKIAorICAgIGlmIChtTG9ja2VkLmljb25EZXRhY2hlZCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gU3RhcnQgdW5mYWRpbmcuCiAgICAgaWYgKHRyYW5zaXRpb24gPT0gVFJBTlNJVElPTl9JTU1FRElBVEUpIHsKICAgICAgICAgbUxvY2tlZC5wb2ludGVyRmFkZURpcmVjdGlvbiA9IDA7CkBAIC0zNDksNiArMzYyLDIyIEBACiAgICAgdXBkYXRlUG9pbnRlckxvY2tlZCgpOwogfQogCit2b2lkIFBvaW50ZXJDb250cm9sbGVyOjpkZXRhY2hQb2ludGVySWNvbihib29sIGRldGFjaGVkKSB7CisgICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKKworICAgIGlmIChtTG9ja2VkLmljb25EZXRhY2hlZCA9PSBkZXRhY2hlZCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbUxvY2tlZC5pY29uRGV0YWNoZWQgPSBkZXRhY2hlZDsKKyAgICBpZiAoZGV0YWNoZWQpIHsKKyAgICAgICAgbUxvY2tlZC5wb2ludGVyRmFkZURpcmVjdGlvbiA9IC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIG1Mb2NrZWQucG9pbnRlckZhZGVEaXJlY3Rpb24gPSAxOworICAgIH0KKyAgICBzdGFydEFuaW1hdGlvbkxvY2tlZCgpOworfQorCiB2b2lkIFBvaW50ZXJDb250cm9sbGVyOjpzZXREaXNwbGF5Vmlld3BvcnQoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qgb3JpZW50YXRpb24pIHsKICAgICBBdXRvTXV0ZXggX2wobUxvY2spOwogCmRpZmYgLS1naXQgYS9saWJzL2lucHV0L1BvaW50ZXJDb250cm9sbGVyLmggYi9saWJzL2lucHV0L1BvaW50ZXJDb250cm9sbGVyLmgKaW5kZXggOWJhMzdiMy4uYzEzODFmMyAxMDA2NDQKLS0tIGEvbGlicy9pbnB1dC9Qb2ludGVyQ29udHJvbGxlci5oCisrKyBiL2xpYnMvaW5wdXQvUG9pbnRlckNvbnRyb2xsZXIuaApAQCAtMTExLDYgKzExMSwxMCBAQAogICAgIHZvaWQgc2V0SW5hY3Rpdml0eVRpbWVvdXQoSW5hY3Rpdml0eVRpbWVvdXQgaW5hY3Rpdml0eVRpbWVvdXQpOwogICAgIHZvaWQgcmVsb2FkUG9pbnRlclJlc291cmNlcygpOwogCisgICAgLyogRGV0YWNoIG9yIGF0dGFjaCB0aGUgcG9pbnRlciBpY29uIHN0YXR1cy4gV2hlbiBkZXRhY2hlZCwgdGhlIHBvaW50ZXIgaWNvbiBkaXNhcHBlYXJzCisgICAgICogYW5kIHRoZSBpY29uIGxvY2F0aW9uIGRvZXMgbm90IGNoYW5nZSBhdCBhbGwuICovCisgICAgdm9pZCBkZXRhY2hQb2ludGVySWNvbihib29sIGRldGFjaGVkKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1BWF9SRUNZQ0xFRF9TUFJJVEVTID0gMTI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBNQVhfU1BPVFMgPSAxMjsKQEAgLTE4MCw2ICsxODQsOCBAQAogCiAgICAgICAgIGludDMyX3QgYnV0dG9uU3RhdGU7CiAKKyAgICAgICAgYm9vbCBpY29uRGV0YWNoZWQ7CisKICAgICAgICAgVmVjdG9yPFNwb3QqPiBzcG90czsKICAgICAgICAgVmVjdG9yPHNwPFNwcml0ZT4gPiByZWN5Y2xlZFNwcml0ZXM7CiAgICAgfSBtTG9ja2VkOwpkaWZmIC0tZ2l0IGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL2Jyb3dzZS9NZWRpYUJyb3dzZXIuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9icm93c2UvTWVkaWFCcm93c2VyLmphdmEKaW5kZXggYmU5ZmI0Ny4uNGNhODlhOCAxMDA2NDQKLS0tIGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL2Jyb3dzZS9NZWRpYUJyb3dzZXIuamF2YQorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvYnJvd3NlL01lZGlhQnJvd3Nlci5qYXZhCkBAIC01NzQsNiArNTc0LDkgQEAKICAgICAgICAgTG9nLmQoVEFHLCAiICBtTWVkaWFTZXNzaW9uVG9rZW49IiArIG1NZWRpYVNlc3Npb25Ub2tlbik7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQSBjbGFzcyB3aXRoIGluZm9ybWF0aW9uIG9uIGEgc2luZ2xlIG1lZGlhIGl0ZW0gZm9yIHVzZSBpbiBicm93c2luZyBtZWRpYS4KKyAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE1lZGlhSXRlbSBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtRmxhZ3M7CiAgICAgICAgIHByaXZhdGUgZmluYWwgTWVkaWFEZXNjcmlwdGlvbiBtRGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvc2VydmljZS9tZWRpYS9NZWRpYUJyb3dzZXJTZXJ2aWNlLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvc2VydmljZS9tZWRpYS9NZWRpYUJyb3dzZXJTZXJ2aWNlLmphdmEKaW5kZXggZjJjNmE2Yy4uOGVkY2NhYyAxMDA2NDQKLS0tIGEvbWVkaWEvamF2YS9hbmRyb2lkL3NlcnZpY2UvbWVkaWEvTWVkaWFCcm93c2VyU2VydmljZS5qYXZhCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9zZXJ2aWNlL21lZGlhL01lZGlhQnJvd3NlclNlcnZpY2UuamF2YQpAQCAtNTQ2LDcgKzU0Niw3IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKioKLSAgICAgICAgICogR2V0cyBhbnkgZXh0cmFzIGFib3V0IHRoZSBicndvc2VyIHNlcnZpY2UuCisgICAgICAgICAqIEdldHMgYW55IGV4dHJhcyBhYm91dCB0aGUgYnJvd3NlciBzZXJ2aWNlLgogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIEJ1bmRsZSBnZXRFeHRyYXMoKSB7CiAgICAgICAgICAgICByZXR1cm4gbUV4dHJhczsKZGlmZiAtLWdpdCBhL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMzMS5qYXZhIGIvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzMxLmphdmEKaW5kZXggODA1OTMwZS4uNjc5MTA4ZiAxMDA2NDQKLS0tIGEvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzMxLmphdmEKKysrIGIvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzMxLmphdmEKQEAgLTIwNCw3ICsyMDQsOCBAQAogICAgICAgICBfbmF0aXZlQ2xhc3NJbml0KCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBHTEVTMzEoKSB7fQorICAgIC8qKiBAaGlkZSAqLworICAgIEdMRVMzMSgpIHt9CiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRGlzcGF0Y2hDb21wdXRlICggR0x1aW50IG51bV9ncm91cHNfeCwgR0x1aW50IG51bV9ncm91cHNfeSwgR0x1aW50IG51bV9ncm91cHNfeiApCiAKICAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsRGlzcGF0Y2hDb21wdXRlKApkaWZmIC0tZ2l0IGEvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzMyLmphdmEgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTM5MmI4Ci0tLSAvZGV2L251bGwKKysrIGIvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzMyLmphdmEKQEAgLTAsMCArMSw3ODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vIFRoaXMgc291cmNlIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQKKworcGFja2FnZSBhbmRyb2lkLm9wZW5nbDsKKworLyoqIE9wZW5HTCBFUyAzLjIKKyAqLworcHVibGljIGNsYXNzIEdMRVMzMiBleHRlbmRzIEdMRVMzMSB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0ZMQUdfREVCVUdfQklUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9DT05URVhUX0ZMQUdfUk9CVVNUX0FDQ0VTU19CSVQgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDQ7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHTF9HRU9NRVRSWV9TSEFERVJfQklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0xfVEVTU19DT05UUk9MX1NIQURFUl9CSVQgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDA4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfQklUICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDAxMDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1FVQURTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDA3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xJTkVTX0FESkFDRU5DWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDBBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xJTkVfU1RSSVBfQURKQUNFTkNZICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDBCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RSSUFOR0xFU19BREpBQ0VOQ1kgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDBDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWSAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDBEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BBVENIRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDBFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NUQUNLX09WRVJGTE9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNTAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NUQUNLX1VOREVSRkxPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNTA0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTlRFWFRfTE9TVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNTA3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQk9SREVSX0NPTE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxMDA0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1ZFUlRFWF9BUlJBWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MDc0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NMQU1QX1RPX0JPUkRFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MTJEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTlRFWFRfRkxBR1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjFFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRCAgICAgICAgID0gMHg4MjIxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjQyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIICAgICAgICAgICAgICAgID0gMHg4MjQzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX0NBTExCQUNLX0ZVTkNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjQ0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX0NBTExCQUNLX1VTRVJfUEFSQU0gICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjQ1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9BUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjQ2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjQ3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIgICAgICAgICAgICAgICAgICAgID0gMHg4MjQ4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjQ5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjRBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NPVVJDRV9PVEhFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjRCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjRDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUiAgICAgICAgICAgICAgICAgID0gMHg4MjREOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SICAgICAgICAgICAgICAgICAgID0gMHg4MjRFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjRGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjUwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfT1RIRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjUxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjUyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dVSUxUWV9DT05URVhUX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjUzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOTk9DRU5UX0NPTlRFWFRfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjU0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjU1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWSAgICAgICAgICAgICAgICAgICAgID0gMHg4MjU2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVggICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjVFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOREVGSU5FRF9WRVJURVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjYwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX05PX1JFU0VUX05PVElGSUNBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjYxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfTUFSS0VSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjY4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjY5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1RZUEVfUE9QX0dST1VQICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjZBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiAgICAgICAgICAgICAgICAgICAgID0gMHg4MjZCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSCAgICAgICAgICAgICAgICAgICAgID0gMHg4MjZDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MjZEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0JVRkZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkUwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NIQURFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkUxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BST0dSQU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkUyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1FVRVJZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkUzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BST0dSQU1fUElQRUxJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkU0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkU2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9MQUJFTF9MRU5HVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4MkU4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyAgICAgICAgICAgICAgID0gMHg4ODZDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyAgICAgICAgICAgID0gMHg4ODZEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyAgICAgICAgICAgICAgICAgICAgID0gMHg4ODdGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4OTE2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX0lOUFVUX1RZUEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4OTE3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX09VVFBVVF9UWVBFICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4OTE4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyAgICAgICAgICAgICAgICAgICAgID0gMHg4QTJDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMgICAgICAgID0gMHg4QTMyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTICAgICAgICAgICAgICAgID0gMHg4QzI5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4QzJBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4QzJBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4QzJCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR19CVUZGRVIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4QzJDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX0RBVEFfU1RPUkVfQklORElORyAgICAgICAgICAgICAgID0gMHg4QzJEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRV9TSEFESU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4QzM2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4QzM3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRVNfR0VORVJBVEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4Qzg3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfTEFZRVJFRCAgICAgICAgICAgICAgICAgID0gMHg4REE3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTEFZRVJfVEFSR0VUUyAgICAgICAgICAgID0gMHg4REE4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4REMyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9TQU1QTEVSX0JVRkZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4REQwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0JVRkZFUiAgICAgICAgICAgICAgICAgICAgID0gMHg4REQ4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0dFT01FVFJZX1NIQURFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4REQ5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMgICAgICAgICAgICAgICAgID0gMHg4RERGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMgICAgICAgICAgICAgICAgICAgID0gMHg4REUwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyAgICAgICAgICAgID0gMHg4REUxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTICAgID0gMHg4RTFFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTID0gMHg4RTFGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZJUlNUX1ZFUlRFWF9DT05WRU5USU9OICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTREOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xBU1RfVkVSVEVYX0NPTlZFTlRJT04gICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTRFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMgICAgICAgICAgICAgICAgID0gMHg4RTVBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCAgICAgICAgICAgICAgID0gMHg4RTVCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCAgICAgICAgICAgICAgID0gMHg4RTVDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMgICAgICAgICAgICAgID0gMHg4RTVEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BBVENIX1ZFUlRJQ0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTcyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfQ09OVFJPTF9PVVRQVVRfVkVSVElDRVMgICAgICAgICAgICAgICAgICAgID0gMHg4RTc1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTc2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX1NQQUNJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTc3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX1ZFUlRFWF9PUkRFUiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTc4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfR0VOX1BPSU5UX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTc5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lTT0xJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTdBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUNUSU9OQUxfT0REICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTdCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQUNUSU9OQUxfRVZFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTdDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9QQVRDSF9WRVJUSUNFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTdEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0dFTl9MRVZFTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTdFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTICAgICAgICAgICAgID0gMHg4RTdGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTICAgICAgICAgID0gMHg4RTgwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUyAgICAgICAgICAgID0gMHg4RTgxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyAgICAgICAgID0gMHg4RTgyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMgICAgICAgICAgICAgID0gMHg4RTgzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTg0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgICAgICAgID0gMHg4RTg1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMgICAgICAgICAgID0gMHg4RTg2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTg3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFU1NfQ09OVFJPTF9TSEFERVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RTg4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MgICAgICAgICAgICAgICAgID0gMHg4RTg5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MgICAgICAgICAgICAgID0gMHg4RThBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDA5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWSAgICAgICAgICAgICAgICAgID0gMHg5MDBBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVkgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDBDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVlfU0hBRE9XICAgICAgICAgICAgICAgICAgID0gMHg5MDBEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDBFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZICAgICAgICAgICAgID0gMHg5MDBGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lNQUdFX0JVRkZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDUxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lNQUdFX0NVQkVfTUFQX0FSUkFZICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDU0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9JTUFHRV9CVUZGRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDVDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDVGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9CVUZGRVIgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MDY3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWSAgICAgICAgICAgICAgID0gMHg5MDZBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMgICAgICAgICAgICAgICAgID0gMHg5MENCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMgICAgICAgICAgICAgID0gMHg5MENDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyAgICAgICAgICAgICAgICAgICAgID0gMHg5MENEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MgICAgICAgICAgICAgID0gMHg5MEQ3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTICAgICAgICAgID0gMHg5MEQ4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTICAgICAgID0gMHg5MEQ5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkgICAgICAgICAgICAgICAgICAgID0gMHg5MTAyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWSAgICAgICAgICAgID0gMHg5MTA1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NBTVBMRVJfMkRfTVVMVElTQU1QTEVfQVJSQVkgICAgICAgICAgICAgICAgICAgID0gMHg5MTBCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFX0FSUkFZICAgICAgICAgICAgICAgID0gMHg5MTBDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFX0FSUkFZICAgICAgID0gMHg5MTBEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTICAgICAgICAgICAgICAgICAgID0gMHg5MTIzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUyAgICAgICAgICAgICAgICAgID0gMHg5MTI0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTQzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTQ0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTQ1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX0hJR0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTQ2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTQ3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX1NFVkVSSVRZX0xPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTQ4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTlEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MTlFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQgICAgICAgICAgICAgICAgID0gMHg5MTlGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJUExZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5Mjk0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NDUkVFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5Mjk1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX09WRVJMQVkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5Mjk2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RBUktFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5Mjk3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0xJR0hURU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5Mjk4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTE9SRE9ER0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5Mjk5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTE9SQlVSTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MjlBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hBUkRMSUdIVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MjlCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1NPRlRMSUdIVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MjlDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RJRkZFUkVOQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MjlFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0VYQ0xVU0lPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkEwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hTTF9IVUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkFEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hTTF9TQVRVUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkFFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hTTF9DT0xPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkFGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0hTTF9MVU1JTk9TSVRZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkIwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkJFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyAgICAgICAgID0gMHg5MkNEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyAgICAgID0gMHg5MkNFOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTICAgICAgICAgICAgID0gMHg5MkNGOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTICAgICAgICAgICAgICAgID0gMHg5MkQzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTICAgICAgICAgICAgID0gMHg5MkQ0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMgICAgICAgICAgICAgICAgICAgID0gMHg5MkQ1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0RFQlVHX09VVFBVVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkUwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0lTX1BFUl9QQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MkU3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfVEVTU19DT05UUk9MX1NIQURFUiAgICAgICAgICAgICAgID0gMHg5MzA3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfVEVTU19FVkFMVUFUSU9OX1NIQURFUiAgICAgICAgICAgID0gMHg5MzA4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX1JFRkVSRU5DRURfQllfR0VPTUVUUllfU0hBREVSICAgICAgICAgICAgICAgICAgID0gMHg5MzA5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTICAgICAgICAgICAgICAgICAgICAgID0gMHg5MzEyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MzE3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UgICAgICAgICAgICAgICAgICAgID0gMHg5MzgxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkgICAgICAgICAgICAgID0gMHg5MzgyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0IwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0IxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0IyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0IzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0I0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0I1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0I2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0I3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0I4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYgICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0I5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDggICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0JBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0JCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0JDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyICAgICAgICAgICAgICAgICAgICAgID0gMHg5M0JEOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0ICAgICAgICAgICAgICAgID0gMHg5M0QwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0ICAgICAgICAgICAgICAgID0gMHg5M0QxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1ICAgICAgICAgICAgICAgID0gMHg5M0QyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1ICAgICAgICAgICAgICAgID0gMHg5M0QzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2ICAgICAgICAgICAgICAgID0gMHg5M0Q0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1ICAgICAgICAgICAgICAgID0gMHg5M0Q1OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2ICAgICAgICAgICAgICAgID0gMHg5M0Q2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4ICAgICAgICAgICAgICAgID0gMHg5M0Q3OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSAgICAgICAgICAgICAgID0gMHg5M0Q4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiAgICAgICAgICAgICAgID0gMHg5M0Q5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCAgICAgICAgICAgICAgID0gMHg5M0RBOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAgICAgICAgICAgICAgID0gMHg5M0RCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAgICAgICAgICAgICAgID0gMHg5M0RDOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIgICAgICAgICAgICAgID0gMHg5M0REOworCisKKyAgICBuYXRpdmUgcHJpdmF0ZSBzdGF0aWMgdm9pZCBfbmF0aXZlQ2xhc3NJbml0KCk7CisgICAgc3RhdGljIHsKKyAgICAgICAgX25hdGl2ZUNsYXNzSW5pdCgpOworICAgIH0KKworICAgIHByaXZhdGUgR0xFUzMyKCkge30KKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xCbGVuZEJhcnJpZXIgKCB2b2lkICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xCbGVuZEJhcnJpZXIoCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbENvcHlJbWFnZVN1YkRhdGEgKCBHTHVpbnQgc3JjTmFtZSwgR0xlbnVtIHNyY1RhcmdldCwgR0xpbnQgc3JjTGV2ZWwsIEdMaW50IHNyY1gsIEdMaW50IHNyY1ksIEdMaW50IHNyY1osIEdMdWludCBkc3ROYW1lLCBHTGVudW0gZHN0VGFyZ2V0LCBHTGludCBkc3RMZXZlbCwgR0xpbnQgZHN0WCwgR0xpbnQgZHN0WSwgR0xpbnQgZHN0WiwgR0xzaXplaSBzcmNXaWR0aCwgR0xzaXplaSBzcmNIZWlnaHQsIEdMc2l6ZWkgc3JjRGVwdGggKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbENvcHlJbWFnZVN1YkRhdGEoCisgICAgICAgIGludCBzcmNOYW1lLAorICAgICAgICBpbnQgc3JjVGFyZ2V0LAorICAgICAgICBpbnQgc3JjTGV2ZWwsCisgICAgICAgIGludCBzcmNYLAorICAgICAgICBpbnQgc3JjWSwKKyAgICAgICAgaW50IHNyY1osCisgICAgICAgIGludCBkc3ROYW1lLAorICAgICAgICBpbnQgZHN0VGFyZ2V0LAorICAgICAgICBpbnQgZHN0TGV2ZWwsCisgICAgICAgIGludCBkc3RYLAorICAgICAgICBpbnQgZHN0WSwKKyAgICAgICAgaW50IGRzdFosCisgICAgICAgIGludCBzcmNXaWR0aCwKKyAgICAgICAgaW50IHNyY0hlaWdodCwKKyAgICAgICAgaW50IHNyY0RlcHRoCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbERlYnVnTWVzc2FnZUNvbnRyb2wgKCBHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKmlkcywgR0xib29sZWFuIGVuYWJsZWQgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERlYnVnTWVzc2FnZUNvbnRyb2woCisgICAgICAgIGludCBzb3VyY2UsCisgICAgICAgIGludCB0eXBlLAorICAgICAgICBpbnQgc2V2ZXJpdHksCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgaW50W10gaWRzLAorICAgICAgICBpbnQgb2Zmc2V0LAorICAgICAgICBib29sZWFuIGVuYWJsZWQKKyAgICApOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRGVidWdNZXNzYWdlQ29udHJvbCAoIEdMZW51bSBzb3VyY2UsIEdMZW51bSB0eXBlLCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqaWRzLCBHTGJvb2xlYW4gZW5hYmxlZCApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsRGVidWdNZXNzYWdlQ29udHJvbCgKKyAgICAgICAgaW50IHNvdXJjZSwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGludCBzZXZlcml0eSwKKyAgICAgICAgaW50IGNvdW50LAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgaWRzLAorICAgICAgICBib29sZWFuIGVuYWJsZWQKKyAgICApOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRGVidWdNZXNzYWdlSW5zZXJ0ICggR0xlbnVtIHNvdXJjZSwgR0xlbnVtIHR5cGUsIEdMdWludCBpZCwgR0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpidWYgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERlYnVnTWVzc2FnZUluc2VydCgKKyAgICAgICAgaW50IHNvdXJjZSwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGludCBpZCwKKyAgICAgICAgaW50IHNldmVyaXR5LAorICAgICAgICBpbnQgbGVuZ3RoLAorICAgICAgICBTdHJpbmcgYnVmCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbERlYnVnTWVzc2FnZUNhbGxiYWNrICggR0xERUJVR1BST0MgY2FsbGJhY2ssIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSApCisKKyAgICBwdWJsaWMgaW50ZXJmYWNlIERlYnVnUHJvYyB7CisgICAgICAgIHZvaWQgb25NZXNzYWdlKGludCBzb3VyY2UsIGludCB0eXBlLCBpbnQgaWQsIGludCBzZXZlcml0eSwgU3RyaW5nIG1lc3NhZ2UpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayhEZWJ1Z1Byb2MgY2FsbGJhY2spOworCisgICAgLy8gQyBmdW5jdGlvbiBHTHVpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2cgKCBHTHVpbnQgY291bnQsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBHTHVpbnQgKmlkcywgR0xlbnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIgKm1lc3NhZ2VMb2cgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IGdsR2V0RGVidWdNZXNzYWdlTG9nKAorICAgICAgICBpbnQgY291bnQsCisgICAgICAgIGludCBidWZTaXplLAorICAgICAgICBpbnRbXSBzb3VyY2VzLAorICAgICAgICBpbnQgc291cmNlc09mZnNldCwKKyAgICAgICAgaW50W10gdHlwZXMsCisgICAgICAgIGludCB0eXBlc09mZnNldCwKKyAgICAgICAgaW50W10gaWRzLAorICAgICAgICBpbnQgaWRzT2Zmc2V0LAorICAgICAgICBpbnRbXSBzZXZlcml0aWVzLAorICAgICAgICBpbnQgc2V2ZXJpdGllc09mZnNldCwKKyAgICAgICAgaW50W10gbGVuZ3RocywKKyAgICAgICAgaW50IGxlbmd0aHNPZmZzZXQsCisgICAgICAgIGJ5dGVbXSBtZXNzYWdlTG9nLAorICAgICAgICBpbnQgbWVzc2FnZUxvZ09mZnNldCk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIEdMdWludCBnbEdldERlYnVnTWVzc2FnZUxvZyAoIEdMdWludCBjb3VudCwgR0xzaXplaSBidWZTaXplLCBHTGVudW0gKnNvdXJjZXMsIEdMZW51bSAqdHlwZXMsIEdMdWludCAqaWRzLCBHTGVudW0gKnNldmVyaXRpZXMsIEdMc2l6ZWkgKmxlbmd0aHMsIEdMY2hhciAqbWVzc2FnZUxvZyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2coCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHNvdXJjZXMsCisgICAgICAgIGphdmEubmlvLkludEJ1ZmZlciB0eXBlcywKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIGlkcywKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHNldmVyaXRpZXMsCisgICAgICAgIGphdmEubmlvLkludEJ1ZmZlciBsZW5ndGhzLAorICAgICAgICBqYXZhLm5pby5CeXRlQnVmZmVyIG1lc3NhZ2VMb2cpOworCisgICAgLy8gQyBmdW5jdGlvbiBHTHVpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2cgKCBHTHVpbnQgY291bnQsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBHTHVpbnQgKmlkcywgR0xlbnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIgKm1lc3NhZ2VMb2cgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nW10gZ2xHZXREZWJ1Z01lc3NhZ2VMb2coCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgaW50W10gc291cmNlcywKKyAgICAgICAgaW50IHNvdXJjZXNPZmZzZXQsCisgICAgICAgIGludFtdIHR5cGVzLAorICAgICAgICBpbnQgdHlwZXNPZmZzZXQsCisgICAgICAgIGludFtdIGlkcywKKyAgICAgICAgaW50IGlkc09mZnNldCwKKyAgICAgICAgaW50W10gc2V2ZXJpdGllcywKKyAgICAgICAgaW50IHNldmVyaXRpZXNPZmZzZXQpOworCisgICAgLy8gQyBmdW5jdGlvbiBHTHVpbnQgZ2xHZXREZWJ1Z01lc3NhZ2VMb2cgKCBHTHVpbnQgY291bnQsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBHTHVpbnQgKmlkcywgR0xlbnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIgKm1lc3NhZ2VMb2cgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nW10gZ2xHZXREZWJ1Z01lc3NhZ2VMb2coCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHNvdXJjZXMsCisgICAgICAgIGphdmEubmlvLkludEJ1ZmZlciB0eXBlcywKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIGlkcywKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHNldmVyaXRpZXMpOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsUHVzaERlYnVnR3JvdXAgKCBHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1lc3NhZ2UgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFB1c2hEZWJ1Z0dyb3VwKAorICAgICAgICBpbnQgc291cmNlLAorICAgICAgICBpbnQgaWQsCisgICAgICAgIGludCBsZW5ndGgsCisgICAgICAgIFN0cmluZyBtZXNzYWdlCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFBvcERlYnVnR3JvdXAgKCB2b2lkICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xQb3BEZWJ1Z0dyb3VwKAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xPYmplY3RMYWJlbCAoIEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbE9iamVjdExhYmVsKAorICAgICAgICBpbnQgaWRlbnRpZmllciwKKyAgICAgICAgaW50IG5hbWUsCisgICAgICAgIGludCBsZW5ndGgsCisgICAgICAgIFN0cmluZyBsYWJlbAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRPYmplY3RMYWJlbCAoIEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nIGdsR2V0T2JqZWN0TGFiZWwoaW50IGlkZW50aWZpZXIsIGludCBuYW1lKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbE9iamVjdFB0ckxhYmVsICggY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsT2JqZWN0UHRyTGFiZWwobG9uZyBwdHIsIFN0cmluZyBsYWJlbCk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRPYmplY3RQdHJMYWJlbCAoIGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nIGdsR2V0T2JqZWN0UHRyTGFiZWwobG9uZyBwdHIpOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsR2V0UG9pbnRlcnYgKCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgbG9uZyBnbEdldFBvaW50ZXJ2KAorICAgICAgICBpbnQgcG5hbWUKKyAgICApOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRW5hYmxlaSAoIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsRW5hYmxlaSgKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IGluZGV4CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbERpc2FibGVpICggR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4ICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xEaXNhYmxlaSgKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IGluZGV4CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEJsZW5kRXF1YXRpb25pICggR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbEJsZW5kRXF1YXRpb25pKAorICAgICAgICBpbnQgYnVmLAorICAgICAgICBpbnQgbW9kZQorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpICggR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoCisgICAgICAgIGludCBidWYsCisgICAgICAgIGludCBtb2RlUkdCLAorICAgICAgICBpbnQgbW9kZUFscGhhCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEJsZW5kRnVuY2kgKCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0ICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xCbGVuZEZ1bmNpKAorICAgICAgICBpbnQgYnVmLAorICAgICAgICBpbnQgc3JjLAorICAgICAgICBpbnQgZHN0CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEJsZW5kRnVuY1NlcGFyYXRlaSAoIEdMdWludCBidWYsIEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWkoCisgICAgICAgIGludCBidWYsCisgICAgICAgIGludCBzcmNSR0IsCisgICAgICAgIGludCBkc3RSR0IsCisgICAgICAgIGludCBzcmNBbHBoYSwKKyAgICAgICAgaW50IGRzdEFscGhhCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbENvbG9yTWFza2kgKCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9vbGVhbiBhICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xDb2xvck1hc2tpKAorICAgICAgICBpbnQgaW5kZXgsCisgICAgICAgIGJvb2xlYW4gciwKKyAgICAgICAgYm9vbGVhbiBnLAorICAgICAgICBib29sZWFuIGIsCisgICAgICAgIGJvb2xlYW4gYQorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIEdMYm9vbGVhbiBnbElzRW5hYmxlZGkgKCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXggKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBnbElzRW5hYmxlZGkoCisgICAgICAgIGludCB0YXJnZXQsCisgICAgICAgIGludCBpbmRleAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4ICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTGludCBiYXNldmVydGV4ICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4KAorICAgICAgICBpbnQgbW9kZSwKKyAgICAgICAgaW50IGNvdW50LAorICAgICAgICBpbnQgdHlwZSwKKyAgICAgICAgamF2YS5uaW8uQnVmZmVyIGluZGljZXMsCisgICAgICAgIGludCBiYXNldmVydGV4CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleCAoIEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTGludCBiYXNldmVydGV4ICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgoCisgICAgICAgIGludCBtb2RlLAorICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgIGludCBlbmQsCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGphdmEubmlvLkJ1ZmZlciBpbmRpY2VzLAorICAgICAgICBpbnQgYmFzZXZlcnRleAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4ICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlQ291bnQsIEdMaW50IGJhc2V2ZXJ0ZXggKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoCisgICAgICAgIGludCBtb2RlLAorICAgICAgICBpbnQgY291bnQsCisgICAgICAgIGludCB0eXBlLAorICAgICAgICBqYXZhLm5pby5CdWZmZXIgaW5kaWNlcywKKyAgICAgICAgaW50IGluc3RhbmNlQ291bnQsCisgICAgICAgIGludCBiYXNldmVydGV4CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXggKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCwgR0xpbnQgYmFzZXZlcnRleCApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCgKKyAgICAgICAgaW50IG1vZGUsCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGludCBpbmRpY2VzT2Zmc2V0LAorICAgICAgICBpbnQgaW5zdGFuY2VDb3VudCwKKyAgICAgICAgaW50IGJhc2V2ZXJ0ZXgKKyAgICApOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRnJhbWVidWZmZXJUZXh0dXJlICggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsRnJhbWVidWZmZXJUZXh0dXJlKAorICAgICAgICBpbnQgdGFyZ2V0LAorICAgICAgICBpbnQgYXR0YWNobWVudCwKKyAgICAgICAgaW50IHRleHR1cmUsCisgICAgICAgIGludCBsZXZlbAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xQcmltaXRpdmVCb3VuZGluZ0JveCAoIEdMZmxvYXQgbWluWCwgR0xmbG9hdCBtaW5ZLCBHTGZsb2F0IG1pblosIEdMZmxvYXQgbWluVywgR0xmbG9hdCBtYXhYLCBHTGZsb2F0IG1heFksIEdMZmxvYXQgbWF4WiwgR0xmbG9hdCBtYXhXICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xQcmltaXRpdmVCb3VuZGluZ0JveCgKKyAgICAgICAgZmxvYXQgbWluWCwKKyAgICAgICAgZmxvYXQgbWluWSwKKyAgICAgICAgZmxvYXQgbWluWiwKKyAgICAgICAgZmxvYXQgbWluVywKKyAgICAgICAgZmxvYXQgbWF4WCwKKyAgICAgICAgZmxvYXQgbWF4WSwKKyAgICAgICAgZmxvYXQgbWF4WiwKKyAgICAgICAgZmxvYXQgbWF4VworICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIEdMZW51bSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMgKCB2b2lkICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGludCBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMoCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFJlYWRuUGl4ZWxzICggR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFJlYWRuUGl4ZWxzKAorICAgICAgICBpbnQgeCwKKyAgICAgICAgaW50IHksCisgICAgICAgIGludCB3aWR0aCwKKyAgICAgICAgaW50IGhlaWdodCwKKyAgICAgICAgaW50IGZvcm1hdCwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGludCBidWZTaXplLAorICAgICAgICBqYXZhLm5pby5CdWZmZXIgZGF0YQorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRuVW5pZm9ybWZ2ICggR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsR2V0blVuaWZvcm1mdigKKyAgICAgICAgaW50IHByb2dyYW0sCisgICAgICAgIGludCBsb2NhdGlvbiwKKyAgICAgICAgaW50IGJ1ZlNpemUsCisgICAgICAgIGZsb2F0W10gcGFyYW1zLAorICAgICAgICBpbnQgb2Zmc2V0CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEdldG5Vbmlmb3JtZnYgKCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xHZXRuVW5pZm9ybWZ2KAorICAgICAgICBpbnQgcHJvZ3JhbSwKKyAgICAgICAgaW50IGxvY2F0aW9uLAorICAgICAgICBpbnQgYnVmU2l6ZSwKKyAgICAgICAgamF2YS5uaW8uRmxvYXRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEdldG5Vbmlmb3JtaXYgKCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsR2V0blVuaWZvcm1pdigKKyAgICAgICAgaW50IHByb2dyYW0sCisgICAgICAgIGludCBsb2NhdGlvbiwKKyAgICAgICAgaW50IGJ1ZlNpemUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRuVW5pZm9ybWl2ICggR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbEdldG5Vbmlmb3JtaXYoCisgICAgICAgIGludCBwcm9ncmFtLAorICAgICAgICBpbnQgbG9jYXRpb24sCisgICAgICAgIGludCBidWZTaXplLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEdldG5Vbmlmb3JtdWl2ICggR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMdWludCAqcGFyYW1zICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xHZXRuVW5pZm9ybXVpdigKKyAgICAgICAgaW50IHByb2dyYW0sCisgICAgICAgIGludCBsb2NhdGlvbiwKKyAgICAgICAgaW50IGJ1ZlNpemUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRuVW5pZm9ybXVpdiAoIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHVpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsR2V0blVuaWZvcm11aXYoCisgICAgICAgIGludCBwcm9ncmFtLAorICAgICAgICBpbnQgbG9jYXRpb24sCisgICAgICAgIGludCBidWZTaXplLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbE1pblNhbXBsZVNoYWRpbmcgKCBHTGZsb2F0IHZhbHVlICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xNaW5TYW1wbGVTaGFkaW5nKAorICAgICAgICBmbG9hdCB2YWx1ZQorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xQYXRjaFBhcmFtZXRlcmkgKCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xQYXRjaFBhcmFtZXRlcmkoCisgICAgICAgIGludCBwbmFtZSwKKyAgICAgICAgaW50IHZhbHVlCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFRleFBhcmFtZXRlcklpdiAoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsVGV4UGFyYW1ldGVySWl2KAorICAgICAgICBpbnQgdGFyZ2V0LAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJaXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFRleFBhcmFtZXRlcklpdigKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFRleFBhcmFtZXRlckl1aXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW1zICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJdWl2KAorICAgICAgICBpbnQgdGFyZ2V0LAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xUZXhQYXJhbWV0ZXJJdWl2ICggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsVGV4UGFyYW1ldGVySXVpdigKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEdldFRleFBhcmFtZXRlcklpdiAoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySWl2KAorICAgICAgICBpbnQgdGFyZ2V0LAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJaXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbEdldFRleFBhcmFtZXRlcklpdigKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEdldFRleFBhcmFtZXRlckl1aXYgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2KAorICAgICAgICBpbnQgdGFyZ2V0LAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2ICggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsR2V0VGV4UGFyYW1ldGVySXVpdigKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYgKCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0gKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYoCisgICAgICAgIGludCBzYW1wbGVyLAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGludFtdIHBhcmFtLAorICAgICAgICBpbnQgb2Zmc2V0CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYgKCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0gKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJaXYoCisgICAgICAgIGludCBzYW1wbGVyLAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGphdmEubmlvLkludEJ1ZmZlciBwYXJhbQorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW0gKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2KAorICAgICAgICBpbnQgc2FtcGxlciwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBpbnRbXSBwYXJhbSwKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW0gKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2KAorICAgICAgICBpbnQgc2FtcGxlciwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW0KKyAgICApOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoCisgICAgICAgIGludCBzYW1wbGVyLAorICAgICAgICBpbnQgcG5hbWUsCisgICAgICAgIGludFtdIHBhcmFtcywKKyAgICAgICAgaW50IG9mZnNldAorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2ICggR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdigKKyAgICAgICAgaW50IHNhbXBsZXIsCisgICAgICAgIGludCBwbmFtZSwKKyAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHBhcmFtcworICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdiAoIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdigKKyAgICAgICAgaW50IHNhbXBsZXIsCisgICAgICAgIGludCBwbmFtZSwKKyAgICAgICAgaW50W10gcGFyYW1zLAorICAgICAgICBpbnQgb2Zmc2V0CisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2ICggR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KAorICAgICAgICBpbnQgc2FtcGxlciwKKyAgICAgICAgaW50IHBuYW1lLAorICAgICAgICBqYXZhLm5pby5JbnRCdWZmZXIgcGFyYW1zCisgICAgKTsKKworICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFRleEJ1ZmZlciAoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlciApCisKKyAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSB2b2lkIGdsVGV4QnVmZmVyKAorICAgICAgICBpbnQgdGFyZ2V0LAorICAgICAgICBpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgIGludCBidWZmZXIKKyAgICApOworCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsVGV4QnVmZmVyUmFuZ2UgKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xUZXhCdWZmZXJSYW5nZSgKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICBpbnQgYnVmZmVyLAorICAgICAgICBpbnQgb2Zmc2V0LAorICAgICAgICBpbnQgc2l6ZQorICAgICk7CisKKyAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSAoIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSgKKyAgICAgICAgaW50IHRhcmdldCwKKyAgICAgICAgaW50IHNhbXBsZXMsCisgICAgICAgIGludCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgaW50IHdpZHRoLAorICAgICAgICBpbnQgaGVpZ2h0LAorICAgICAgICBpbnQgZGVwdGgsCisgICAgICAgIGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMKKyAgICApOworCit9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9CYWNrdXBSZXN0b3JlQ29uZmlybWF0aW9uL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvQmFja3VwUmVzdG9yZUNvbmZpcm1hdGlvbi9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbAppbmRleCBhYzIwYWVkLi4yMzY4OGFlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9CYWNrdXBSZXN0b3JlQ29uZmlybWF0aW9uL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL0JhY2t1cFJlc3RvcmVDb25maXJtYXRpb24vcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKQEAgLTE4LDEwICsxOCwxMCBAQAogICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KICAgICA8c3RyaW5nIG5hbWU9ImJhY2t1cF9jb25maXJtX3RpdGxlIiBtc2dpZD0iODI3NTYzNzI0MjA5MzAzMzQ1Ij4i5a6M5YWo5aSH5Lu9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVzdG9yZV9jb25maXJtX3RpdGxlIiBtc2dpZD0iNTQ2OTM2NTgwOTU2NzQ4NjYwMiI+IuWujOWFqOi/mOWOnyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImJhY2t1cF9jb25maXJtX3RleHQiIG1zZ2lkPSIxODc4MDIxMjgyNzU4ODk2NTkzIj4i57O757uf6K+35rGC5bCG5omA5pyJ5pWw5o2u5a6M5pW05aSH5Lu96Iez5bey6L+e5o6l55qE5qGM6Z2i6K6h566X5py644CC5YWB6K645q2k5pON5L2c5ZCX77yfXG5cbuWmguaenOaCqOacrOS6uuacquimgeaxguWkh+S7ve+8jOivt+mYu+atouivpeaTjeS9nOOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJhY2t1cF9jb25maXJtX3RleHQiIG1zZ2lkPSIxODc4MDIxMjgyNzU4ODk2NTkzIj4i57O757uf6K+35rGC5bCG5omA5pyJ5pWw5o2u5a6M5pW05aSH5Lu96Iez5bey6L+e5o6l55qE5qGM6Z2i6K6+5aSH44CC5YWB6K645q2k5pON5L2c5ZCX77yfXG5cbuWmguaenOaCqOacrOS6uuacquimgeaxguWkh+S7ve+8jOivt+mYu+atouivpeaTjeS9nOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFsbG93X2JhY2t1cF9idXR0b25fbGFiZWwiIG1zZ2lkPSI0MjE3MjI4NzQ3NzY5NjQ0MDY4Ij4i5aSH5Lu95oiR55qE5pWw5o2uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVueV9iYWNrdXBfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNjAwOTExOTExNTU4MTA5NzcwOCI+IuS4jeWkh+S7vSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InJlc3RvcmVfY29uZmlybV90ZXh0IiBtc2dpZD0iNzQ5OTg2NjcyODAzMDQ2MTc3NiI+Iuezu+e7n+ivt+axguS7jui/nuaOpeeahOahjOmdouiuoeeul+acuuWujOaVtOi/mOWOn+aJgOacieaVsOaNruOAguWFgeiuuOatpOaTjeS9nOWQl++8n1xuXG7lpoLmnpzmgqjmnKzkurrmnKropoHmsYLov5jljp/vvIzor7fpmLvmraLor6Xmk43kvZzjgILor6Xmk43kvZzkvJropobnm5borr7lpIfkuIrlvZPliY3nmoTmiYDmnInmlbDmja7vvIEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJyZXN0b3JlX2NvbmZpcm1fdGV4dCIgbXNnaWQ9Ijc0OTk4NjY3MjgwMzA0NjE3NzYiPiLns7vnu5/or7fmsYLku47ov57mjqXnmoTmoYzpnaLorr7lpIflrozmlbTov5jljp/miYDmnInmlbDmja7jgILlhYHorrjmraTmk43kvZzlkJfvvJ9cblxu5aaC5p6c5oKo5pys5Lq65pyq6KaB5rGC6L+Y5Y6f77yM6K+36Zi75q2i6K+l5pON5L2c44CC6K+l5pON5L2c5Lya6KaG55uW6K6+5aSH5LiK5b2T5YmN55qE5omA5pyJ5pWw5o2u77yBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWxsb3dfcmVzdG9yZV9idXR0b25fbGFiZWwiIG1zZ2lkPSIzMDgxMjg2NzUyMjc3MTI3ODI3Ij4i5oGi5aSN5oiR55qE5pWw5o2uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGVueV9yZXN0b3JlX2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjE3MjQzNjczMzQ0NTMxMDQzNzgiPiLkuI3mgaLlpI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjdXJyZW50X3Bhc3N3b3JkX3RleHQiIG1zZ2lkPSI4MjY4MTg5NTU1NTc4Mjk4MDY3Ij4i6K+35Zyo5LiL5pa56L6T5YWl5oKo55qE5b2T5YmN5aSH5Lu95a+G56CB77yaIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvRG9jdW1lbnRzVUkvcmVzL2xheW91dC9pdGVtX2Rpcl9ncmlkLnhtbCBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy9sYXlvdXQvaXRlbV9kaXJfZ3JpZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3YjRjOAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy9sYXlvdXQvaXRlbV9kaXJfZ3JpZC54bWwKQEAgLTAsMCArMSw2MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPEZyYW1lTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbj0iQGRpbWVuL2dyaWRfaXRlbV9tYXJnaW4iCisgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAY29sb3IvaXRlbV9kb2NfYmFja2dyb3VuZCIKKyAgICBhbmRyb2lkOmVsZXZhdGlvbj0iNWRwIgorICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIj4KKworICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCisgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IjE2ZHAiCisgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjE2ZHAiCisgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSIxMmRwIgorICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjEyZHAiPgorCisgICAgICAgIDxJbWFnZVZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6c3JjPSJAZHJhd2FibGUvaWNfZG9jX2ZvbGRlciIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkVuZD0iOGRwIgorICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImNlbnRlckluc2lkZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6Y29udGVudERlc2NyaXB0aW9uPSJAbnVsbCIvPgorCisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQGFuZHJvaWQ6aWQvdGl0bGUiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOmVsbGlwc2l6ZT0ibWlkZGxlIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QWxpZ25tZW50PSJ2aWV3U3RhcnQiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5NYXRlcmlhbC5TdWJoZWFkIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IkAqYW5kcm9pZDpjb2xvci9wcmltYXJ5X3RleHRfZGVmYXVsdF9tYXRlcmlhbF9saWdodCIgLz4KKworICAgIDwvTGluZWFyTGF5b3V0PgorCisgICAgPCEtLSBBbiBvdmVybGF5IHRoYXQgZHJhd3MgdGhlIGl0ZW0gYm9yZGVyIHdoZW4gaXQgaXMgZm9jdXNlZC4gLS0+CisgICAgPFZpZXcKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6Y29udGVudERlc2NyaXB0aW9uPSJAbnVsbCIKKyAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvaXRlbV9kb2NfZ3JpZF9ib3JkZXIiCisgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiIC8+CisKKzwvRnJhbWVMYXlvdXQ+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9yZXMvbGF5b3V0L2l0ZW1fZG9jX2dyaWQueG1sIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvcmVzL2xheW91dC9pdGVtX2RvY19ncmlkLnhtbAppbmRleCBkY2Q1Y2ZkLi5jMGZjMmMzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9yZXMvbGF5b3V0L2l0ZW1fZG9jX2dyaWQueG1sCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy9sYXlvdXQvaXRlbV9kb2NfZ3JpZC54bWwKQEAgLTE5LDYgKzE5LDcgQEAKICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW49IkBkaW1lbi9ncmlkX2l0ZW1fbWFyZ2luIgogICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGNvbG9yL2l0ZW1fZG9jX2JhY2tncm91bmQiCisgICAgYW5kcm9pZDplbGV2YXRpb249IjVkcCIKICAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSI+CiAKICAgICA8IS0tIE1haW4gaXRlbSB0aHVtYm5haWwuICBDb21wcmlzZWQgb2YgdHdvIG92ZXJsYXBwaW5nIGltYWdlcywgdGhlCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9yZXMvdmFsdWVzLW1rLXJNSy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCmluZGV4IDJkOGJlMWIuLjUxY2I3NzQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJtZW51X2xpc3QiIG1zZ2lkPSI3Mjc5Mjg1OTM5ODkyNDE3Mjc5Ij4i0J/RgNC40LrQsNC3INC90LAg0YHQv9C40YHQvtC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVudV9zb3J0IiBtc2dpZD0iNzY3Nzc0MDQwNzE1ODQxNDQ1MiI+ItCf0L7QtNGA0LXQtNC4INC/0L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZW51X3NlYXJjaCIgbXNnaWQ9IjM4MTY3MTIwODQ1MDI4NTY5NzQiPiLQn9GA0LXQsdCw0YDQsNGYIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibWVudV9zZXR0aW5ncyIgbXNnaWQ9IjYwMDgwMzMxNDg5NDg0Mjg4MjMiPiLQn9C+0LTQtdGB0YPQstCw0ZrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1lbnVfc2V0dGluZ3MiIG1zZ2lkPSI2MDA4MDMzMTQ4OTQ4NDI4ODIzIj4i0J/QvtGB0YLQsNCy0LrQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lbnVfb3BlbiIgbXNnaWQ9IjQzMjkyMjk1NzI3NDkyMDkwMyI+ItCe0YLQstC+0YDQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lbnVfc2F2ZSIgbXNnaWQ9IjIzOTQ3NDMzMzc2ODQ0MjYzMzgiPiLQl9Cw0YfRg9Cy0LDRmCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lbnVfc2hhcmUiIG1zZ2lkPSIzMDc1MTQ5OTgzOTc5NjI4MTQ2Ij4i0KHQv9C+0LTQtdC70LgiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9yZXMvdmFsdWVzLXN3NzIwZHAvZGltZW5zLnhtbCBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy92YWx1ZXMtc3c3MjBkcC9kaW1lbnMueG1sCmluZGV4IDgzY2ViNTUuLjI0ODhmYTIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy92YWx1ZXMtc3c3MjBkcC9kaW1lbnMueG1sCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Jlcy92YWx1ZXMtc3c3MjBkcC9kaW1lbnMueG1sCkBAIC0xOCw1ICsxOCw0IEBACiAgICAgPGRpbWVuIG5hbWU9ImdyaWRfcGFkZGluZ19ob3JpeiI+MTZkcDwvZGltZW4+CiAgICAgPGRpbWVuIG5hbWU9ImdyaWRfcGFkZGluZ192ZXJ0Ij4xNmRwPC9kaW1lbj4KIAotICAgIDxkaW1lbiBuYW1lPSJncmlkX2l0ZW1fbWFyZ2luIj44ZHA8L2RpbWVuPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvQmFzZUFjdGl2aXR5LmphdmEgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvQmFzZUFjdGl2aXR5LmphdmEKaW5kZXggNWNiM2IwZC4uOWMwYTA0YyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL0Jhc2VBY3Rpdml0eS5qYXZhCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9CYXNlQWN0aXZpdHkuamF2YQpAQCAtNzU1LDExICs3NTUsMTkgQEAKICAgICAgICAgICogICAgIHNlYXJjaCBjdXJyZW50bHkuCiAgICAgICAgICAqLwogICAgICAgICBib29sZWFuIGNhbmNlbFNlYXJjaCgpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gY29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgICAgICBib29sZWFuIGNsb3NlZCA9IGZhbHNlOworCiAgICAgICAgICAgICBpZiAobUFjdGlvbkJhci5oYXNFeHBhbmRlZEFjdGlvblZpZXcoKSkgewogICAgICAgICAgICAgICAgIG1BY3Rpb25CYXIuY29sbGFwc2VBY3Rpb25WaWV3KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgY29sbGFwc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGlzRXhwYW5kZWQoKSB8fCBpc1NlYXJjaGluZygpKSB7CisgICAgICAgICAgICAgICAgb25DbG9zZSgpOworICAgICAgICAgICAgICAgIGNsb3NlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY29sbGFwc2VkIHx8IGNsb3NlZDsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2xlYW4gaXNTZWFyY2hpbmcoKSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvRmlsZXNBY3Rpdml0eS5qYXZhIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL0ZpbGVzQWN0aXZpdHkuamF2YQppbmRleCBkZDhjY2Y5Li5lMzA4ZjNmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvRmlsZXNBY3Rpdml0eS5qYXZhCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9GaWxlc0FjdGl2aXR5LmphdmEKQEAgLTg5LDUzICs4OSw1MSBAQAogCiAgICAgICAgIFJvb3RzRnJhZ21lbnQuc2hvdyhnZXRGcmFnbWVudE1hbmFnZXIoKSwgbnVsbCk7CiAKLSAgICAgICAgaWYgKG1TdGF0ZS5yZXN0b3JlZCkgewotICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJSZXN0b3JlZCBpbnN0YW5jZSBmb3IgdXJpOiAiICsgZ2V0SW50ZW50KCkuZ2V0RGF0YSgpKTsKLSAgICAgICAgICAgIG9uQ3VycmVudERpcmVjdG9yeUNoYW5nZWQoQU5JTV9OT05FKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBnZXRJbnRlbnQoKTsKLSAgICAgICAgICAgIFVyaSB1cmkgPSBpbnRlbnQuZ2V0RGF0YSgpOworICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0gZ2V0SW50ZW50KCk7CisgICAgICAgIGZpbmFsIFVyaSB1cmkgPSBpbnRlbnQuZ2V0RGF0YSgpOwogCi0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkNyZWF0aW5nIG5ldyBpbnN0YW5jZSBmb3IgdXJpOiAiICsgdXJpKTsKKyAgICAgICAgaWYgKG1TdGF0ZS5yZXN0b3JlZCkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJTdGFjayBhbHJlYWR5IHJlc29sdmVkIGZvciB1cmk6ICIgKyBpbnRlbnQuZ2V0RGF0YSgpKTsKKyAgICAgICAgICAgIG9uQ3VycmVudERpcmVjdG9yeUNoYW5nZWQoQU5JTV9OT05FKTsKKyAgICAgICAgfSBlbHNlIGlmICghbVN0YXRlLnN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gSWYgYSBub24tZW1wdHkgc3RhY2sgaXMgcHJlc2VudCBpbiBvdXIgc3RhdGUgaXQgd2FzIHJlYWQgKHByZXN1bWFibHkpCiAgICAgICAgICAgICAvLyBmcm9tIEVYVFJBX1NUQUNLIGludGVudCBleHRyYS4gSW4gdGhpcyBjYXNlLCB3ZSdsbCBza2lwIG90aGVyIG1lYW5zIG9mCiAgICAgICAgICAgICAvLyBsb2FkaW5nIG9yIHJlc3RvcmluZyB0aGUgc3RhY2suCi0gICAgICAgICAgICBpZiAoIW1TdGF0ZS5zdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkxhdW5jaGluZyB3aXRoIG5vbi1lbXB0eSBzdGFjay4iKTsKLSAgICAgICAgICAgICAgICAvLyBXaGVuIHJlc3RvcmluZyBmcm9tIGEgc3RhY2ssIGlmIGEgVVJJIGlzIHByZXNlbnQsIGl0IHNob3VsZCBvbmx5IGV2ZXIKLSAgICAgICAgICAgICAgICAvLyBiZSBhIGxhdW5jaCBVUkkuIExhdW5jaCBVUklzIHN1cHBvcnQgc2Vuc2libGUgYWN0aXZpdHkgbWFuYWdlbWVudCwgYnV0Ci0gICAgICAgICAgICAgICAgLy8gZG9uJ3Qgc3BlY2lmeSBhIHJlYWwgY29udGVudCB0YXJnZXQuCi0gICAgICAgICAgICAgICAgY2hlY2tTdGF0ZSh1cmkgPT0gbnVsbCB8fCBMYXVuY2hlckFjdGl2aXR5LmlzTGF1bmNoVXJpKHVyaSkpOwotICAgICAgICAgICAgICAgIG9uQ3VycmVudERpcmVjdG9yeUNoYW5nZWQoQU5JTV9OT05FKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoRG9jdW1lbnRzQ29udHJhY3QuaXNSb290VXJpKHRoaXMsIHVyaSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkxhdW5jaGluZyB3aXRoIHJvb3QgVVJJLiIpOwotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHNwZWNpZmljIHJvb3QgdG8gZGlzcGxheSwgcmVzdG9yZSB0aGF0IHJvb3QgdXNpbmcgYSBkZWRpY2F0ZWQKLSAgICAgICAgICAgICAgICAvLyBhdXRob3JpdHkuIFRoYXQgd2F5IGEgbWlzYmVoYXZpbmcgcHJvdmlkZXIgd29uJ3QgcmVzdWx0IGluIGFuIEFOUi4KLSAgICAgICAgICAgICAgICBuZXcgUmVzdG9yZVJvb3RUYXNrKHVyaSkuZXhlY3V0ZU9uRXhlY3V0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlckV4ZWN1dG9yLmZvckF1dGhvcml0eSh1cmkuZ2V0QXV0aG9yaXR5KCkpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJMYXVuY2hpbmcgaW50byBIb21lIGRpcmVjdG9yeS4iKTsKLSAgICAgICAgICAgICAgICAvLyBJZiBhbGwgZWxzZSBmYWlscywgdHJ5IHRvIGxvYWQgIkhvbWUiIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICB1cmkgPSBEb2N1bWVudHNDb250cmFjdC5idWlsZEhvbWVVcmkoKTsKLSAgICAgICAgICAgICAgICBuZXcgUmVzdG9yZVJvb3RUYXNrKHVyaSkuZXhlY3V0ZU9uRXhlY3V0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlckV4ZWN1dG9yLmZvckF1dGhvcml0eSh1cmkuZ2V0QXV0aG9yaXR5KCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXaGVuIHJlc3RvcmluZyBmcm9tIGEgc3RhY2ssIGlmIGEgVVJJIGlzIHByZXNlbnQsIGl0IHNob3VsZCBvbmx5IGV2ZXIKKyAgICAgICAgICAgIC8vIGJlIGEgbGF1bmNoIFVSSS4gTGF1bmNoIFVSSXMgc3VwcG9ydCBzZW5zaWJsZSBhY3Rpdml0eSBtYW5hZ2VtZW50LCBidXQKKyAgICAgICAgICAgIC8vIGRvbid0IHNwZWNpZnkgYSByZWFsIGNvbnRlbnQgdGFyZ2V0LgorICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJMYXVuY2hpbmcgd2l0aCBub24tZW1wdHkgc3RhY2suIik7CisgICAgICAgICAgICBjaGVja1N0YXRlKHVyaSA9PSBudWxsIHx8IExhdW5jaGVyQWN0aXZpdHkuaXNMYXVuY2hVcmkodXJpKSk7CisgICAgICAgICAgICBvbkN1cnJlbnREaXJlY3RvcnlDaGFuZ2VkKEFOSU1fTk9ORSk7CisgICAgICAgIH0gZWxzZSBpZiAoRG9jdW1lbnRzQ29udHJhY3QuaXNSb290VXJpKHRoaXMsIHVyaSkpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiTGF1bmNoaW5nIHdpdGggcm9vdCBVUkkuIik7CisgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzcGVjaWZpYyByb290IHRvIGRpc3BsYXksIHJlc3RvcmUgdGhhdCByb290IHVzaW5nIGEgZGVkaWNhdGVkCisgICAgICAgICAgICAvLyBhdXRob3JpdHkuIFRoYXQgd2F5IGEgbWlzYmVoYXZpbmcgcHJvdmlkZXIgd29uJ3QgcmVzdWx0IGluIGFuIEFOUi4KKyAgICAgICAgICAgIG5ldyBSZXN0b3JlUm9vdFRhc2sodXJpKS5leGVjdXRlT25FeGVjdXRvcigKKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJFeGVjdXRvci5mb3JBdXRob3JpdHkodXJpLmdldEF1dGhvcml0eSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkxhdW5jaGluZyBpbnRvIEhvbWUgZGlyZWN0b3J5LiIpOworICAgICAgICAgICAgLy8gSWYgYWxsIGVsc2UgZmFpbHMsIHRyeSB0byBsb2FkICJIb21lIiBkaXJlY3RvcnkuCisgICAgICAgICAgICBmaW5hbCBVcmkgaG9tZVVyaSA9IERvY3VtZW50c0NvbnRyYWN0LmJ1aWxkSG9tZVVyaSgpOworICAgICAgICAgICAgbmV3IFJlc3RvcmVSb290VGFzayhob21lVXJpKS5leGVjdXRlT25FeGVjdXRvcigKKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJFeGVjdXRvci5mb3JBdXRob3JpdHkoaG9tZVVyaS5nZXRBdXRob3JpdHkoKSkpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFRPRE86IEVuc3VyZSB3ZSdyZSBoYW5kbGluZyBDb3B5U2VydmljZSBlcnJvcnMgY29ycmVjdGx5IGFjcm9zcyBhbGwgYWN0aXZpdGllcy4KLSAgICAgICAgICAgIC8vIFNob3cgYSBmYWlsdXJlIGRpYWxvZyBpZiB0aGVyZSB3YXMgYSBmYWlsZWQgb3BlcmF0aW9uLgotICAgICAgICAgICAgZmluYWwgaW50IGZhaWx1cmUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQ29weVNlcnZpY2UuRVhUUkFfRkFJTFVSRSwgMCk7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgdHJhbnNmZXJNb2RlID0gaW50ZW50LmdldEludEV4dHJhKENvcHlTZXJ2aWNlLkVYVFJBX1RSQU5TRkVSX01PREUsCi0gICAgICAgICAgICAgICAgICAgIENvcHlTZXJ2aWNlLlRSQU5TRkVSX01PREVfQ09QWSk7Ci0gICAgICAgICAgICBpZiAoZmFpbHVyZSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0PERvY3VtZW50SW5mbz4gZmFpbGVkU3JjTGlzdCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0UGFyY2VsYWJsZUFycmF5TGlzdEV4dHJhKENvcHlTZXJ2aWNlLkVYVFJBX1NSQ19MSVNUKTsKLSAgICAgICAgICAgICAgICBGYWlsdXJlRGlhbG9nRnJhZ21lbnQuc2hvdygKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldEZyYWdtZW50TWFuYWdlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZFNyY0xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlck1vZGUpOwotICAgICAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgZmFpbHVyZSA9IGludGVudC5nZXRJbnRFeHRyYShDb3B5U2VydmljZS5FWFRSQV9GQUlMVVJFLCAwKTsKKyAgICAgICAgZmluYWwgaW50IHRyYW5zZmVyTW9kZSA9IGludGVudC5nZXRJbnRFeHRyYShDb3B5U2VydmljZS5FWFRSQV9UUkFOU0ZFUl9NT0RFLAorICAgICAgICAgICAgICAgIENvcHlTZXJ2aWNlLlRSQU5TRkVSX01PREVfQ09QWSk7CisgICAgICAgIC8vIERpYWxvZ0ZyYWdtZW50IHRha2VzIGNhcmUgb2YgcmVzdG9yaW5nIHRoZSBkaWFsb2cgb24gY29uZmlndXJhdGlvbiBjaGFuZ2UuCisgICAgICAgIC8vIE9ubHkgc2hvdyBpdCBtYW51YWxseSBmb3IgdGhlIGZpcnN0IHRpbWUgKGljaWNsZSBpcyBudWxsKS4KKyAgICAgICAgaWYgKGljaWNsZSA9PSBudWxsICYmIGZhaWx1cmUgIT0gMCkgeworICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0PERvY3VtZW50SW5mbz4gZmFpbGVkU3JjTGlzdCA9CisgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRQYXJjZWxhYmxlQXJyYXlMaXN0RXh0cmEoQ29weVNlcnZpY2UuRVhUUkFfU1JDX0xJU1QpOworICAgICAgICAgICAgRmFpbHVyZURpYWxvZ0ZyYWdtZW50LnNob3coCisgICAgICAgICAgICAgICAgICAgIGdldEZyYWdtZW50TWFuYWdlcigpLAorICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICBmYWlsZWRTcmNMaXN0LAorICAgICAgICAgICAgICAgICAgICBtU3RhdGUuc3RhY2ssCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9TaGFyZWQuamF2YSBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9TaGFyZWQuamF2YQppbmRleCA1NzBjOWJmLi5jMzM2NmMzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvU2hhcmVkLmphdmEKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL1NoYXJlZC5qYXZhCkBAIC0xNyw2ICsxNyw4IEBACiBwYWNrYWdlIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpOwogCiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlVXRpbHM7CitpbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lOwogCiAvKiogQGhpZGUgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBTaGFyZWQgewpAQCAtNDAsNCArNDIsMjYgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRRdWFudGl0eVN0cmluZyhDb250ZXh0IGNvbnRleHQsIGludCByZXNvdXJjZUlkLCBpbnQgcXVhbnRpdHkpIHsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0UXVhbnRpdHlTdHJpbmcocmVzb3VyY2VJZCwgcXVhbnRpdHksIHF1YW50aXR5KTsKICAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBmb3JtYXRUaW1lKENvbnRleHQgY29udGV4dCwgbG9uZyB3aGVuKSB7CisgICAgICAgIC8vIFRPRE86IERhdGVVdGlscyBzaG91bGQgbWFrZSB0aGlzIGVhc2llcgorICAgICAgICBUaW1lIHRoZW4gPSBuZXcgVGltZSgpOworICAgICAgICB0aGVuLnNldCh3aGVuKTsKKyAgICAgICAgVGltZSBub3cgPSBuZXcgVGltZSgpOworICAgICAgICBub3cuc2V0VG9Ob3coKTsKKworICAgICAgICBpbnQgZmxhZ3MgPSBEYXRlVXRpbHMuRk9STUFUX05PX05PT04gfCBEYXRlVXRpbHMuRk9STUFUX05PX01JRE5JR0hUCisgICAgICAgICAgICAgICAgfCBEYXRlVXRpbHMuRk9STUFUX0FCQlJFVl9BTEw7CisKKyAgICAgICAgaWYgKHRoZW4ueWVhciAhPSBub3cueWVhcikgeworICAgICAgICAgICAgZmxhZ3MgfD0gRGF0ZVV0aWxzLkZPUk1BVF9TSE9XX1lFQVIgfCBEYXRlVXRpbHMuRk9STUFUX1NIT1dfREFURTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGVuLnllYXJEYXkgIT0gbm93LnllYXJEYXkpIHsKKyAgICAgICAgICAgIGZsYWdzIHw9IERhdGVVdGlscy5GT1JNQVRfU0hPV19EQVRFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmxhZ3MgfD0gRGF0ZVV0aWxzLkZPUk1BVF9TSE9XX1RJTUU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gRGF0ZVV0aWxzLmZvcm1hdERhdGVUaW1lKGNvbnRleHQsIHdoZW4sIGZsYWdzKTsKKyAgICB9CisKIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0RpcmVjdG9yeUZyYWdtZW50LmphdmEgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9EaXJlY3RvcnlGcmFnbWVudC5qYXZhCmluZGV4IDVlZWY5YjcuLjBkNWUzNGUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0RpcmVjdG9yeUZyYWdtZW50LmphdmEKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvRGlyZWN0b3J5RnJhZ21lbnQuamF2YQpAQCAtMjMsNyArMjMsNiBAQAogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5TdGF0ZS5NT0RFX1VOS05PV047CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlN0YXRlLlNPUlRfT1JERVJfVU5LTk9XTjsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkubW9kZWwuRG9jdW1lbnRJbmZvLmdldEN1cnNvckludDsKLWltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkubW9kZWwuRG9jdW1lbnRJbmZvLmdldEN1cnNvckxvbmc7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLm1vZGVsLkRvY3VtZW50SW5mby5nZXRDdXJzb3JTdHJpbmc7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGw7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuUHJlY29uZGl0aW9ucy5jaGVja1N0YXRlOwpAQCAtMzYsMjIgKzM1LDE4IEBACiBpbXBvcnQgYW5kcm9pZC5hcHAuRnJhZ21lbnRUcmFuc2FjdGlvbjsKIGltcG9ydCBhbmRyb2lkLmFwcC5Mb2FkZXJNYW5hZ2VyLkxvYWRlckNhbGxiYWNrczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ2xpcERhdGE7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkxvYWRlcjsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcDsKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNhbnZhczsKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBvaW50OwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CiBpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwogaW1wb3J0IGFuZHJvaWQub3MuQXN5bmNUYXNrOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuQ2FuY2VsbGF0aW9uU2lnbmFsOwotaW1wb3J0IGFuZHJvaWQub3MuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOwogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuRG9jdW1lbnRzQ29udHJhY3Q7CiBpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5Eb2N1bWVudHNDb250cmFjdC5Eb2N1bWVudDsKQEAgLTY1LDE2ICs2MCwxMiBAQAogaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC52Ny53aWRnZXQuUmVjeWNsZXJWaWV3LlJlY3ljbGVyTGlzdGVuZXI7CiBpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnY3LndpZGdldC5SZWN5Y2xlclZpZXcuVmlld0hvbGRlcjsKIGltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOwotaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZVV0aWxzOwotaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRm9ybWF0dGVyOwotaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuVGltZTsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudXRpbC5TcGFyc2VBcnJheTsKIGltcG9ydCBhbmRyb2lkLnV0aWwuVHlwZWRWYWx1ZTsKIGltcG9ydCBhbmRyb2lkLnZpZXcuQWN0aW9uTW9kZTsKIGltcG9ydCBhbmRyb2lkLnZpZXcuRHJhZ0V2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3I7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuTWVudTsKIGltcG9ydCBhbmRyb2lkLnZpZXcuTWVudUl0ZW07CkBAIC05MywyMiArODQsMTcgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5Eb2N1bWVudHNBY3Rpdml0eTsKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5Eb2N1bWVudHNBcHBsaWNhdGlvbjsKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5FdmVudHM7Ci1pbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuSWNvblV0aWxzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLk1lbnVzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLk1lc3NhZ2VCYXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuTWltZVByZWRpY2F0ZTsKLWltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5Qcm92aWRlckV4ZWN1dG9yOwotaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlByb3ZpZGVyRXhlY3V0b3IuUHJlZW1wdGFibGU7CiBpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUjsKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5SZWNlbnRMb2FkZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUmVjZW50c1Byb3ZpZGVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlJlY2VudHNQcm92aWRlci5TdGF0ZUNvbHVtbnM7Ci1pbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUm9vdEN1cnNvcldyYXBwZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUm9vdHNDYWNoZTsKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5TaGFyZWQ7CiBpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuU25hY2tiYXJzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlN0YXRlOwotaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlRodW1ibmFpbENhY2hlOwogaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLmRpcmxpc3QuTXVsdGlTZWxlY3RNYW5hZ2VyLlNlbGVjdGlvbjsKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5tb2RlbC5Eb2N1bWVudEluZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkubW9kZWwuRG9jdW1lbnRTdGFjazsKQEAgLTE1Myw2ICsxMzksOCBAQAogICAgIHByaXZhdGUgTW9kZWwuVXBkYXRlTGlzdGVuZXIgbU1vZGVsVXBkYXRlTGlzdGVuZXIgPSBuZXcgTW9kZWxVcGRhdGVMaXN0ZW5lcigpOwogICAgIHByaXZhdGUgSXRlbUNsaWNrTGlzdGVuZXIgbUl0ZW1DbGlja0xpc3RlbmVyID0gbmV3IEl0ZW1DbGlja0xpc3RlbmVyKCk7CiAKKyAgICBwcml2YXRlIEljb25IZWxwZXIgbUljb25IZWxwZXI7CisKICAgICBwcml2YXRlIFZpZXcgbUVtcHR5VmlldzsKICAgICBwcml2YXRlIFJlY3ljbGVyVmlldyBtUmVjVmlldzsKIApAQCAtMTYyLDkgKzE1MCw2IEBACiAgICAgcHJpdmF0ZSBpbnQgbUxhc3RNb2RlID0gTU9ERV9VTktOT1dOOwogICAgIHByaXZhdGUgaW50IG1MYXN0U29ydE9yZGVyID0gU09SVF9PUkRFUl9VTktOT1dOOwogICAgIHByaXZhdGUgYm9vbGVhbiBtTGFzdFNob3dTaXplOwotICAgIHByaXZhdGUgYm9vbGVhbiBtSGlkZUdyaWRUaXRsZXM7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1TdmVsdGVSZWNlbnRzOwotICAgIHByaXZhdGUgUG9pbnQgbVRodW1iU2l6ZTsKICAgICBwcml2YXRlIERvY3VtZW50c0FkYXB0ZXIgbUFkYXB0ZXI7CiAgICAgcHJpdmF0ZSBMb2FkZXJDYWxsYmFja3M8RGlyZWN0b3J5UmVzdWx0PiBtQ2FsbGJhY2tzOwogICAgIHByaXZhdGUgRnJhZ21lbnRUdW5lciBtVHVuZXI7CkBAIC0xNzcsOSArMTYyLDYgQEAKICAgICBwcml2YXRlIE1lc3NhZ2VCYXIgbU1lc3NhZ2VCYXI7CiAgICAgcHJpdmF0ZSBWaWV3IG1Qcm9ncmVzc0JhcjsKIAotICAgIHByaXZhdGUgaW50IG1TZWxlY3RlZEl0ZW1Db2xvcjsKLSAgICBwcml2YXRlIGludCBtRGVmYXVsdEl0ZW1Db2xvcjsKLQogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzaG93Tm9ybWFsKEZyYWdtZW50TWFuYWdlciBmbSwgUm9vdEluZm8gcm9vdCwgRG9jdW1lbnRJbmZvIGRvYywgaW50IGFuaW0pIHsKICAgICAgICAgc2hvdyhmbSwgVFlQRV9OT1JNQUwsIHJvb3QsIGRvYywgbnVsbCwgYW5pbSk7CiAgICAgfQpAQCAtMzA3LDEyICsyODksOSBAQAogICAgICAgICBmaW5hbCBSb290SW5mbyByb290ID0gZ2V0QXJndW1lbnRzKCkuZ2V0UGFyY2VsYWJsZShFWFRSQV9ST09UKTsKICAgICAgICAgZmluYWwgRG9jdW1lbnRJbmZvIGRvYyA9IGdldEFyZ3VtZW50cygpLmdldFBhcmNlbGFibGUoRVhUUkFfRE9DKTsKIAotICAgICAgICBtQWRhcHRlciA9IG5ldyBEb2N1bWVudHNBZGFwdGVyKGNvbnRleHQpOworICAgICAgICBtQWRhcHRlciA9IG5ldyBEb2N1bWVudHNBZGFwdGVyKCk7CiAgICAgICAgIG1SZWNWaWV3LnNldEFkYXB0ZXIobUFkYXB0ZXIpOwogCi0gICAgICAgIG1EZWZhdWx0SXRlbUNvbG9yID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb2xvcihSLmNvbG9yLml0ZW1fZG9jX2JhY2tncm91bmQpOwotICAgICAgICBtU2VsZWN0ZWRJdGVtQ29sb3IgPSBjb250ZXh0LmdldFJlc291cmNlcygpLmdldENvbG9yKFIuY29sb3IuaXRlbV9kb2NfYmFja2dyb3VuZF9zZWxlY3RlZCk7Ci0KICAgICAgICAgR2VzdHVyZURldGVjdG9yLlNpbXBsZU9uR2VzdHVyZUxpc3RlbmVyIGxpc3RlbmVyID0KICAgICAgICAgICAgICAgICBuZXcgR2VzdHVyZURldGVjdG9yLlNpbXBsZU9uR2VzdHVyZUxpc3RlbmVyKCkgewogICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKQEAgLTM2NCwxNyArMzQzLDIyIEBACiAgICAgICAgIG1UdW5lciA9IEZyYWdtZW50VHVuZXIucGljayhzdGF0ZSk7CiAgICAgICAgIG1DbGlwcGVyID0gbmV3IERvY3VtZW50Q2xpcHBlcihjb250ZXh0KTsKIAorICAgICAgICBtSWNvbkhlbHBlciA9IG5ldyBJY29uSGVscGVyKGNvbnRleHQsIHN0YXRlLmRlcml2ZWRNb2RlKTsKKworICAgICAgICBib29sZWFuIGhpZGVHcmlkVGl0bGVzOwogICAgICAgICBpZiAobVR5cGUgPT0gVFlQRV9SRUNFTlRfT1BFTikgewogICAgICAgICAgICAgLy8gSGlkZSB0aXRsZXMgd2hlbiBzaG93aW5nIHJlY2VudHMgZm9yIHBpY2tpbmcgaW1hZ2VzL3ZpZGVvcwotICAgICAgICAgICAgbUhpZGVHcmlkVGl0bGVzID0gTWltZVByZWRpY2F0ZS5taW1lTWF0Y2hlcygKKyAgICAgICAgICAgIGhpZGVHcmlkVGl0bGVzID0gTWltZVByZWRpY2F0ZS5taW1lTWF0Y2hlcygKICAgICAgICAgICAgICAgICAgICAgTWltZVByZWRpY2F0ZS5WSVNVQUxfTUlNRVMsIHN0YXRlLmFjY2VwdE1pbWVzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1IaWRlR3JpZFRpdGxlcyA9IChkb2MgIT0gbnVsbCkgJiYgZG9jLmlzR3JpZFRpdGxlc0hpZGRlbigpOworICAgICAgICAgICAgaGlkZUdyaWRUaXRsZXMgPSAoZG9jICE9IG51bGwpICYmIGRvYy5pc0dyaWRUaXRsZXNIaWRkZW4oKTsKICAgICAgICAgfQorICAgICAgICBHcmlkRG9jdW1lbnRIb2xkZXIuc2V0SGlkZVRpdGxlcyhoaWRlR3JpZFRpdGxlcyk7CiAKICAgICAgICAgZmluYWwgQWN0aXZpdHlNYW5hZ2VyIGFtID0gKEFjdGl2aXR5TWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAogICAgICAgICAgICAgICAgIENvbnRleHQuQUNUSVZJVFlfU0VSVklDRSk7Ci0gICAgICAgIG1TdmVsdGVSZWNlbnRzID0gYW0uaXNMb3dSYW1EZXZpY2UoKSAmJiAobVR5cGUgPT0gVFlQRV9SRUNFTlRfT1BFTik7CisgICAgICAgIGJvb2xlYW4gc3ZlbHRlID0gYW0uaXNMb3dSYW1EZXZpY2UoKSAmJiAobVR5cGUgPT0gVFlQRV9SRUNFTlRfT1BFTik7CisgICAgICAgIG1JY29uSGVscGVyLnNldFRodW1ibmFpbHNFbmFibGVkKCFzdmVsdGUpOwogCiAgICAgICAgIG1DYWxsYmFja3MgPSBuZXcgTG9hZGVyQ2FsbGJhY2tzPERpcmVjdG9yeVJlc3VsdD4oKSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUKQEAgLTU4NSwxOSArNTY5LDE2IEBACiAgICAgICogY2xhc3NlcyBhcyBuZWVkZWQuCiAgICAgICovCiAgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUxheW91dChpbnQgbW9kZSkgewotICAgICAgICBmaW5hbCBpbnQgdGh1bWJTaXplOwotCiAgICAgICAgIGZpbmFsIExheW91dE1hbmFnZXIgbGF5b3V0OwogICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgTU9ERV9HUklEOgotICAgICAgICAgICAgICAgIHRodW1iU2l6ZSA9IGdldFJlc291cmNlcygpLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLmdyaWRfd2lkdGgpOwogICAgICAgICAgICAgICAgIGlmIChtR3JpZExheW91dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1HcmlkTGF5b3V0ID0gbmV3IEdyaWRMYXlvdXRNYW5hZ2VyKGdldENvbnRleHQoKSwgbUNvbHVtbkNvdW50ICk7CisgICAgICAgICAgICAgICAgICAgIG1HcmlkTGF5b3V0ID0gbmV3IEdyaWRMYXlvdXRNYW5hZ2VyKGdldENvbnRleHQoKSwgbUNvbHVtbkNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgbUdyaWRMYXlvdXQuc2V0U3BhblNpemVMb29rdXAobUFkYXB0ZXIuY3JlYXRlU3BhblNpemVMb29rdXAoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGxheW91dCA9IG1HcmlkTGF5b3V0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBNT0RFX0xJU1Q6Ci0gICAgICAgICAgICAgICAgdGh1bWJTaXplID0gZ2V0UmVzb3VyY2VzKCkuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4uaWNvbl9zaXplKTsKICAgICAgICAgICAgICAgICBpZiAobUxpc3RMYXlvdXQgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBtTGlzdExheW91dCA9IG5ldyBMaW5lYXJMYXlvdXRNYW5hZ2VyKGdldENvbnRleHQoKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjEzLDcgKzU5NCw3IEBACiAgICAgICAgIC8vIGltcGVyYXRpdmVseSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIG1TZWxlY3Rpb25NYW5hZ2VyLmhhbmRsZUxheW91dENoYW5nZWQoKTsKICAgICAgICAgLy8gc2V0dGluZyBsYXlvdXQgbWFuYWdlciBhdXRvbWF0aWNhbGx5IGludmFsaWRhdGVzIGV4aXN0aW5nIFZpZXdIb2xkZXJzLgotICAgICAgICBtVGh1bWJTaXplID0gbmV3IFBvaW50KHRodW1iU2l6ZSwgdGh1bWJTaXplKTsKKyAgICAgICAgbUljb25IZWxwZXIuc2V0TW9kZShtb2RlKTsKICAgICB9CiAKICAgICBwcml2YXRlIGludCBjYWxjdWxhdGVDb2x1bW5Db3VudCgpIHsKQEAgLTc3NCwxNCArNzU1LDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGNhbmNlbFRodW1ibmFpbFRhc2soVmlldyB2aWV3KSB7CisgICAgcHJpdmF0ZSB2b2lkIGNhbmNlbFRodW1ibmFpbFRhc2soVmlldyB2aWV3KSB7CiAgICAgICAgIGZpbmFsIEltYWdlVmlldyBpY29uVGh1bWIgPSAoSW1hZ2VWaWV3KSB2aWV3LmZpbmRWaWV3QnlJZChSLmlkLmljb25fdGh1bWIpOwogICAgICAgICBpZiAoaWNvblRodW1iICE9IG51bGwpIHsKLSAgICAgICAgICAgIGZpbmFsIFRodW1ibmFpbEFzeW5jVGFzayBvbGRUYXNrID0gKFRodW1ibmFpbEFzeW5jVGFzaykgaWNvblRodW1iLmdldFRhZygpOwotICAgICAgICAgICAgaWYgKG9sZFRhc2sgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG9sZFRhc2sucHJlZW1wdCgpOwotICAgICAgICAgICAgICAgIGljb25UaHVtYi5zZXRUYWcobnVsbCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBtSWNvbkhlbHBlci5zdG9wTG9hZGluZyhpY29uVGh1bWIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05MjAsNTkgKzg5Nyw2IEBACiAgICAgICAgIHJldHVybiAoKEJhc2VBY3Rpdml0eSkgZ2V0QWN0aXZpdHkoKSkuZ2V0RGlzcGxheVN0YXRlKCk7CiAgICAgfQogCi0gICAgLy8gUHJvdmlkZSBhIHJlZmVyZW5jZSB0byB0aGUgdmlld3MgZm9yIGVhY2ggZGF0YSBpdGVtCi0gICAgLy8gQ29tcGxleCBkYXRhIGl0ZW1zIG1heSBuZWVkIG1vcmUgdGhhbiBvbmUgdmlldyBwZXIgaXRlbSwgYW5kCi0gICAgLy8geW91IHByb3ZpZGUgYWNjZXNzIHRvIGFsbCB0aGUgdmlld3MgZm9yIGEgZGF0YSBpdGVtIGluIGEgdmlldyBob2xkZXIKLSAgICBmaW5hbCBjbGFzcyBEb2N1bWVudEhvbGRlcgotICAgICAgICAgICAgZXh0ZW5kcyBSZWN5Y2xlclZpZXcuVmlld0hvbGRlcgotICAgICAgICAgICAgaW1wbGVtZW50cyBWaWV3Lk9uS2V5TGlzdGVuZXIKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBTdHJpbmcgbW9kZWxJZDsKLSAgICAgICAgcHJpdmF0ZSBDbGlja0xpc3RlbmVyIG1DbGlja0xpc3RlbmVyOwotICAgICAgICBwcml2YXRlIFZpZXcuT25LZXlMaXN0ZW5lciBtS2V5TGlzdGVuZXI7Ci0KLSAgICAgICAgcHVibGljIERvY3VtZW50SG9sZGVyKFZpZXcgdmlldykgewotICAgICAgICAgICAgc3VwZXIodmlldyk7Ci0gICAgICAgICAgICB2aWV3LnNldE9uS2V5TGlzdGVuZXIodGhpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3RlZChib29sZWFuIHNlbGVjdGVkKSB7Ci0gICAgICAgICAgICBpdGVtVmlldy5zZXRBY3RpdmF0ZWQoc2VsZWN0ZWQpOwotICAgICAgICAgICAgaXRlbVZpZXcuc2V0QmFja2dyb3VuZENvbG9yKHNlbGVjdGVkID8gbVNlbGVjdGVkSXRlbUNvbG9yIDogbURlZmF1bHRJdGVtQ29sb3IpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBib29sZWFuIG9uS2V5KFZpZXcgdiwgaW50IGtleUNvZGUsIEtleUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICAvLyBJbnRlcmNlcHQgZW50ZXIga2V5LXVwIGV2ZW50cywgYW5kIHRyZWF0IHRoZW0gYXMgY2xpY2tzLiAgRm9yd2FyZCBvdGhlciBldmVudHMuCi0gICAgICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX1VQICYmCi0gICAgICAgICAgICAgICAgICAgIGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTlRFUikgewotICAgICAgICAgICAgICAgIGlmIChtQ2xpY2tMaXN0ZW5lciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DbGlja0xpc3RlbmVyLm9uQ2xpY2sodGhpcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtS2V5TGlzdGVuZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBtS2V5TGlzdGVuZXIub25LZXkodiwga2V5Q29kZSwgZXZlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgYWRkQ2xpY2tMaXN0ZW5lcihDbGlja0xpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICAvLyBKdXN0IGhhbmRsZSBvbmUgZm9yIG5vdzsgc3dpdGNoIHRvIGEgbGlzdCBpZiBuZWNlc3NhcnkuCi0gICAgICAgICAgICBjaGVja1N0YXRlKG1DbGlja0xpc3RlbmVyID09IG51bGwpOwotICAgICAgICAgICAgbUNsaWNrTGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIGFkZE9uS2V5TGlzdGVuZXIoVmlldy5PbktleUxpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICAvLyBKdXN0IGhhbmRsZSBvbmUgZm9yIG5vdzsgc3dpdGNoIHRvIGEgbGlzdCBpZiBuZWNlc3NhcnkuCi0gICAgICAgICAgICBjaGVja1N0YXRlKG1LZXlMaXN0ZW5lciA9PSBudWxsKTsKLSAgICAgICAgICAgIG1LZXlMaXN0ZW5lciA9IGxpc3RlbmVyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW50ZXJmYWNlIENsaWNrTGlzdGVuZXIgewotICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKERvY3VtZW50SG9sZGVyIGRvYyk7Ci0gICAgfQotCiAgICAgdm9pZCBzaG93RW1wdHlWaWV3KCkgewogICAgICAgICBtRW1wdHlWaWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKICAgICAgICAgbVJlY1ZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwpAQCAtMTAwMCwzNiArOTI0LDY1IEBACiAgICAgICAgICAgICBleHRlbmRzIFJlY3ljbGVyVmlldy5BZGFwdGVyPERvY3VtZW50SG9sZGVyPgogICAgICAgICAgICAgaW1wbGVtZW50cyBNb2RlbC5VcGRhdGVMaXN0ZW5lciB7CiAKLSAgICAgICAgc3RhdGljIHByaXZhdGUgZmluYWwgU3RyaW5nIFRBRyA9ICJEb2N1bWVudHNBZGFwdGVyIjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkRvY3VtZW50c0FkYXB0ZXIiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJVEVNX1RZUEVfTEFZT1VUX0RJVklERVIgPSAwOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJVEVNX1RZUEVfRE9DVU1FTlQgPSAxOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJVEVNX1RZUEVfRElSRUNUT1JZID0gMjsKKwogICAgICAgICAvKioKICAgICAgICAgICogQW4gb3JkZXJlZCBsaXN0IG9mIG1vZGVsIElEcy4gVGhpcyBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBkZXRlcm1pbmVzIHdoYXQgc2hvd3MgdXAgaW4KICAgICAgICAgICogdGhlIFVJLCBhbmQgd2hlcmUuCiAgICAgICAgICAqLwogICAgICAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBtTW9kZWxJZHMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKIAotICAgICAgICBwdWJsaWMgRG9jdW1lbnRzQWRhcHRlcihDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgLy8gVGhlIGxpc3QgaXMgZGl2aWRlZCBpbnRvIHR3byBzZWdtZW50cyAtIGRpcmVjdG9yaWVzLCBhbmQgZXZlcnl0aGluZyBlbHNlLiBSZWNvcmQgdGhlCisgICAgICAgIC8vIHBvc2l0aW9uIHdoZXJlIHRoZSB0cmFuc2l0aW9uIGhhcHBlbnMuCisgICAgICAgIHByaXZhdGUgaW50IG1EaXZpZGVyUG9zaXRpb247CisKKyAgICAgICAgcHVibGljIEdyaWRMYXlvdXRNYW5hZ2VyLlNwYW5TaXplTG9va3VwIGNyZWF0ZVNwYW5TaXplTG9va3VwKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmlkTGF5b3V0TWFuYWdlci5TcGFuU2l6ZUxvb2t1cCgpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgaW50IGdldFNwYW5TaXplKGludCBwb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGxheW91dCB3aGl0ZXNwYWNlIHNwYW4gdGhlIGdyaWQuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgYnJlYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gZ3JpZCByb3dzIHdoZW5ldmVyIGxheW91dCB3aGl0ZXNwYWNlIGlzIGVuY291bnRlcmVkLgorICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbVZpZXdUeXBlKHBvc2l0aW9uKSA9PSBJVEVNX1RZUEVfTEFZT1VUX0RJVklERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtQ29sdW1uQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIERvY3VtZW50SG9sZGVyIG9uQ3JlYXRlVmlld0hvbGRlcihWaWV3R3JvdXAgcGFyZW50LCBpbnQgdmlld1R5cGUpIHsKKyAgICAgICAgICAgIGlmICh2aWV3VHlwZSA9PSBJVEVNX1RZUEVfTEFZT1VUX0RJVklERVIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVtcHR5RG9jdW1lbnRIb2xkZXIoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIERvY3VtZW50SG9sZGVyIGhvbGRlciA9IG51bGw7CiAgICAgICAgICAgICBmaW5hbCBTdGF0ZSBzdGF0ZSA9IGdldERpc3BsYXlTdGF0ZSgpOwotICAgICAgICAgICAgZmluYWwgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSBMYXlvdXRJbmZsYXRlci5mcm9tKGdldENvbnRleHQoKSk7Ci0gICAgICAgICAgICBWaWV3IGl0ZW0gPSBudWxsOwogICAgICAgICAgICAgc3dpdGNoIChzdGF0ZS5kZXJpdmVkTW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9HUklEOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaW5mbGF0ZXIuaW5mbGF0ZShSLmxheW91dC5pdGVtX2RvY19ncmlkLCBwYXJlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh2aWV3VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJVEVNX1RZUEVfRElSRUNUT1JZOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlciA9IG5ldyBHcmlkRGlyZWN0b3J5SG9sZGVyKGdldENvbnRleHQoKSwgcGFyZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSVRFTV9UWVBFX0RPQ1VNRU5UOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlciA9IG5ldyBHcmlkRG9jdW1lbnRIb2xkZXIoZ2V0Q29udGV4dCgpLCBwYXJlbnQsIG1JY29uSGVscGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgbGF5b3V0IHR5cGUuIik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX0xJU1Q6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0Lml0ZW1fZG9jX2xpc3QsIHBhcmVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBob2xkZXIgPSBuZXcgTGlzdERvY3VtZW50SG9sZGVyKGdldENvbnRleHQoKSwgcGFyZW50LCBtSWNvbkhlbHBlcik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9VTktOT1dOOgogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVuc3VwcG9ydGVkIGxheW91dCBtb2RlLiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBEb2N1bWVudEhvbGRlciBob2xkZXIgPSBuZXcgRG9jdW1lbnRIb2xkZXIoaXRlbSk7CiAgICAgICAgICAgICBob2xkZXIuYWRkQ2xpY2tMaXN0ZW5lcihtSXRlbUNsaWNrTGlzdGVuZXIpOwogICAgICAgICAgICAgaG9sZGVyLmFkZE9uS2V5TGlzdGVuZXIobVNlbGVjdGlvbk1hbmFnZXIpOwogICAgICAgICAgICAgcmV0dXJuIGhvbGRlcjsKQEAgLTEwNDIsNiArOTk1LDExIEBACiAgICAgICAgICAqLwogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgb25CaW5kVmlld0hvbGRlcihEb2N1bWVudEhvbGRlciBob2xkZXIsIGludCBwb3NpdGlvbiwgTGlzdDxPYmplY3Q+IHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChob2xkZXIuZ2V0SXRlbVZpZXdUeXBlKCkgPT0gSVRFTV9UWVBFX0xBWU9VVF9ESVZJREVSKSB7CisgICAgICAgICAgICAgICAgLy8gV2hpdGVzcGFjZSBpdGVtcyBhcmUgaGlkZGVuIGVsZW1lbnRzIHdpdGggbm8gZGF0YSB0byBiaW5kLgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZmluYWwgVmlldyBpdGVtVmlldyA9IGhvbGRlci5pdGVtVmlldzsKIAogICAgICAgICAgICAgaWYgKHBheWxvYWQuY29udGFpbnMoTXVsdGlTZWxlY3RNYW5hZ2VyLlNFTEVDVElPTl9DSEFOR0VEX01BUktFUikpIHsKQEAgLTEwNTUsMTY1ICsxMDEzLDIyIEBACiAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uQmluZFZpZXdIb2xkZXIoRG9jdW1lbnRIb2xkZXIgaG9sZGVyLCBpbnQgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IGdldENvbnRleHQoKTsKLSAgICAgICAgICAgIGZpbmFsIFN0YXRlIHN0YXRlID0gZ2V0RGlzcGxheVN0YXRlKCk7Ci0gICAgICAgICAgICBmaW5hbCBSb290c0NhY2hlIHJvb3RzID0gRG9jdW1lbnRzQXBwbGljYXRpb24uZ2V0Um9vdHNDYWNoZShjb250ZXh0KTsKLSAgICAgICAgICAgIGZpbmFsIFRodW1ibmFpbENhY2hlIHRodW1icyA9IERvY3VtZW50c0FwcGxpY2F0aW9uLmdldFRodW1ibmFpbHNDYWNoZSgKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbVRodW1iU2l6ZSk7CisgICAgICAgICAgICBpZiAoaG9sZGVyLmdldEl0ZW1WaWV3VHlwZSgpID09IElURU1fVFlQRV9MQVlPVVRfRElWSURFUikgeworICAgICAgICAgICAgICAgIC8vIFdoaXRlc3BhY2UgaXRlbXMgYXJlIGhpZGRlbiBlbGVtZW50cyB3aXRoIG5vIGRhdGEgdG8gYmluZC4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGhvbGRlci5tb2RlbElkID0gbU1vZGVsSWRzLmdldChwb3NpdGlvbik7Ci0gICAgICAgICAgICBmaW5hbCBDdXJzb3IgY3Vyc29yID0gbU1vZGVsLmdldEl0ZW0oaG9sZGVyLm1vZGVsSWQpOwotICAgICAgICAgICAgY2hlY2tOb3ROdWxsKGN1cnNvciwgIkN1cnNvciBjYW5ub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgIFN0cmluZyBtb2RlbElkID0gbU1vZGVsSWRzLmdldChwb3NpdGlvbik7CisgICAgICAgICAgICBDdXJzb3IgY3Vyc29yID0gbU1vZGVsLmdldEl0ZW0obW9kZWxJZCk7CisgICAgICAgICAgICBob2xkZXIuYmluZChjdXJzb3IsIG1vZGVsSWQsIGdldERpc3BsYXlTdGF0ZSgpKTsKIAotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRvY0F1dGhvcml0eSA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIFJvb3RDdXJzb3JXcmFwcGVyLkNPTFVNTl9BVVRIT1JJVFkpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRvY1Jvb3RJZCA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIFJvb3RDdXJzb3JXcmFwcGVyLkNPTFVNTl9ST09UX0lEKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBkb2NJZCA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9ET0NVTUVOVF9JRCk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZG9jTWltZVR5cGUgPSBnZXRDdXJzb3JTdHJpbmcoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fTUlNRV9UWVBFKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBkb2NEaXNwbGF5TmFtZSA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9ESVNQTEFZX05BTUUpOwotICAgICAgICAgICAgZmluYWwgbG9uZyBkb2NMYXN0TW9kaWZpZWQgPSBnZXRDdXJzb3JMb25nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX0xBU1RfTU9ESUZJRUQpOwotICAgICAgICAgICAgZmluYWwgaW50IGRvY0ljb24gPSBnZXRDdXJzb3JJbnQoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fSUNPTik7CiAgICAgICAgICAgICBmaW5hbCBpbnQgZG9jRmxhZ3MgPSBnZXRDdXJzb3JJbnQoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fRkxBR1MpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRvY1N1bW1hcnkgPSBnZXRDdXJzb3JTdHJpbmcoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fU1VNTUFSWSk7Ci0gICAgICAgICAgICBmaW5hbCBsb25nIGRvY1NpemUgPSBnZXRDdXJzb3JMb25nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX1NJWkUpOwogCi0gICAgICAgICAgICBmaW5hbCBWaWV3IGl0ZW1WaWV3ID0gaG9sZGVyLml0ZW1WaWV3OwotCi0gICAgICAgICAgICBob2xkZXIuc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZChob2xkZXIubW9kZWxJZCkpOwotCi0gICAgICAgICAgICBmaW5hbCBJbWFnZVZpZXcgaWNvbk1pbWUgPSAoSW1hZ2VWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoUi5pZC5pY29uX21pbWUpOwotICAgICAgICAgICAgZmluYWwgSW1hZ2VWaWV3IGljb25UaHVtYiA9IChJbWFnZVZpZXcpIGl0ZW1WaWV3LmZpbmRWaWV3QnlJZChSLmlkLmljb25fdGh1bWIpOwotICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgdGl0bGUgPSAoVGV4dFZpZXcpIGl0ZW1WaWV3LmZpbmRWaWV3QnlJZChhbmRyb2lkLlIuaWQudGl0bGUpOwotICAgICAgICAgICAgZmluYWwgSW1hZ2VWaWV3IGljb24xID0gKEltYWdlVmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKGFuZHJvaWQuUi5pZC5pY29uMSk7Ci0gICAgICAgICAgICBmaW5hbCBUZXh0VmlldyBzdW1tYXJ5ID0gKFRleHRWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoYW5kcm9pZC5SLmlkLnN1bW1hcnkpOwotICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgZGF0ZSA9IChUZXh0VmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7Ci0gICAgICAgICAgICBmaW5hbCBUZXh0VmlldyBzaXplID0gKFRleHRWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoUi5pZC5zaXplKTsKLQotICAgICAgICAgICAgZmluYWwgVGh1bWJuYWlsQXN5bmNUYXNrIG9sZFRhc2sgPSAoVGh1bWJuYWlsQXN5bmNUYXNrKSBpY29uVGh1bWIuZ2V0VGFnKCk7Ci0gICAgICAgICAgICBpZiAob2xkVGFzayAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgb2xkVGFzay5wcmVlbXB0KCk7Ci0gICAgICAgICAgICAgICAgaWNvblRodW1iLnNldFRhZyhudWxsKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWNvbk1pbWUuYW5pbWF0ZSgpLmNhbmNlbCgpOwotICAgICAgICAgICAgaWNvblRodW1iLmFuaW1hdGUoKS5jYW5jZWwoKTsKLQotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBzdXBwb3J0c1RodW1ibmFpbCA9IChkb2NGbGFncyAmIERvY3VtZW50LkZMQUdfU1VQUE9SVFNfVEhVTUJOQUlMKSAhPSAwOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBhbGxvd1RodW1ibmFpbCA9IChzdGF0ZS5kZXJpdmVkTW9kZSA9PSBNT0RFX0dSSUQpCi0gICAgICAgICAgICAgICAgICAgIHx8IE1pbWVQcmVkaWNhdGUubWltZU1hdGNoZXMoTWltZVByZWRpY2F0ZS5WSVNVQUxfTUlNRVMsIGRvY01pbWVUeXBlKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gc2hvd1RodW1ibmFpbCA9IHN1cHBvcnRzVGh1bWJuYWlsICYmIGFsbG93VGh1bWJuYWlsICYmICFtU3ZlbHRlUmVjZW50czsKLQotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBlbmFibGVkID0gbVR1bmVyLmlzRG9jdW1lbnRFbmFibGVkKGRvY01pbWVUeXBlLCBkb2NGbGFncyk7Ci0gICAgICAgICAgICBmaW5hbCBmbG9hdCBpY29uQWxwaGEgPSAoc3RhdGUuZGVyaXZlZE1vZGUgPT0gTU9ERV9MSVNUICYmICFlbmFibGVkKSA/IDAuNWYgOiAxZjsKLQotICAgICAgICAgICAgYm9vbGVhbiBjYWNoZUhpdCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHNob3dUaHVtYm5haWwpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBVcmkgdXJpID0gRG9jdW1lbnRzQ29udHJhY3QuYnVpbGREb2N1bWVudFVyaShkb2NBdXRob3JpdHksIGRvY0lkKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBCaXRtYXAgY2FjaGVkUmVzdWx0ID0gdGh1bWJzLmdldCh1cmkpOwotICAgICAgICAgICAgICAgIGlmIChjYWNoZWRSZXN1bHQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBpY29uVGh1bWIuc2V0SW1hZ2VCaXRtYXAoY2FjaGVkUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVIaXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGljb25UaHVtYi5zZXRJbWFnZURyYXdhYmxlKG51bGwpOwotICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBIYW5nIHRoaXMgb2ZmIERvY3VtZW50SG9sZGVyPwotICAgICAgICAgICAgICAgICAgICBmaW5hbCBUaHVtYm5haWxBc3luY1Rhc2sgdGFzayA9IG5ldyBUaHVtYm5haWxBc3luY1Rhc2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLCBpY29uTWltZSwgaWNvblRodW1iLCBtVGh1bWJTaXplLCBpY29uQWxwaGEpOwotICAgICAgICAgICAgICAgICAgICBpY29uVGh1bWIuc2V0VGFnKHRhc2spOwotICAgICAgICAgICAgICAgICAgICBQcm92aWRlckV4ZWN1dG9yLmZvckF1dGhvcml0eShkb2NBdXRob3JpdHkpLmV4ZWN1dGUodGFzayk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBBbHdheXMgdGhyb3cgTUlNRSBpY29uIGludG8gcGxhY2UsIGV2ZW4gd2hlbiBhIHRodW1ibmFpbCBpcyBiZWluZwotICAgICAgICAgICAgLy8gbG9hZGVkIGluIGJhY2tncm91bmQuCi0gICAgICAgICAgICBpZiAoY2FjaGVIaXQpIHsKLSAgICAgICAgICAgICAgICBpY29uTWltZS5zZXRBbHBoYSgwZik7Ci0gICAgICAgICAgICAgICAgaWNvbk1pbWUuc2V0SW1hZ2VEcmF3YWJsZShudWxsKTsKLSAgICAgICAgICAgICAgICBpY29uVGh1bWIuc2V0QWxwaGEoMWYpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpY29uTWltZS5zZXRBbHBoYSgxZik7Ci0gICAgICAgICAgICAgICAgaWNvblRodW1iLnNldEFscGhhKDBmKTsKLSAgICAgICAgICAgICAgICBpY29uVGh1bWIuc2V0SW1hZ2VEcmF3YWJsZShudWxsKTsKLSAgICAgICAgICAgICAgICBpY29uTWltZS5zZXRJbWFnZURyYXdhYmxlKAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRJY29uKG1Db250ZXh0LCBkb2NBdXRob3JpdHksIGRvY0lkLCBkb2NNaW1lVHlwZSwgZG9jSWNvbiwgc3RhdGUpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKChzdGF0ZS5kZXJpdmVkTW9kZSA9PSBNT0RFX0dSSUQpICYmIG1IaWRlR3JpZFRpdGxlcykgewotICAgICAgICAgICAgICAgIHRpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGl0bGUuc2V0VGV4dChkb2NEaXNwbGF5TmFtZSk7Ci0gICAgICAgICAgICAgICAgdGl0bGUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBEcmF3YWJsZSBpY29uRHJhd2FibGUgPSBudWxsOwotICAgICAgICAgICAgaWYgKG1UeXBlID09IFRZUEVfUkVDRU5UX09QRU4pIHsKLSAgICAgICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGhhZCB0byBlbnVtZXJhdGUgcm9vdHMgYmVmb3JlIGFueSByZXN1bHRzIGNhbgotICAgICAgICAgICAgICAgIC8vIGJlIHNob3duLCBzbyB0aGlzIHdpbGwgbmV2ZXIgYmxvY2suCi0gICAgICAgICAgICAgICAgZmluYWwgUm9vdEluZm8gcm9vdCA9IHJvb3RzLmdldFJvb3RCbG9ja2luZyhkb2NBdXRob3JpdHksIGRvY1Jvb3RJZCk7Ci0gICAgICAgICAgICAgICAgaWNvbkRyYXdhYmxlID0gcm9vdC5sb2FkSWNvbihtQ29udGV4dCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3VtbWFyeSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gYWx3YXlzU2hvd1N1bW1hcnkgPSBnZXRSZXNvdXJjZXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRCb29sZWFuKFIuYm9vbC5hbHdheXNfc2hvd19zdW1tYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFsd2F5c1Nob3dTdW1tYXJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnNldFRleHQocm9vdC5nZXREaXJlY3RvcnlTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpY29uRHJhd2FibGUgIT0gbnVsbCAmJiByb290cy5pc0ljb25VbmlxdWVCbG9ja2luZyhyb290KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIHN1bW1hcnkgbmVlZGVkIGlmIGljb24gc3BlYWtzIGZvciBpdHNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnNldFRleHQocm9vdC5nZXREaXJlY3RvcnlTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeS5zZXRUZXh0QWxpZ25tZW50KFRleHRWaWV3LlRFWFRfQUxJR05NRU5UX1RFWFRfRU5EKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRGlyZWN0b3JpZXMgc2hvd2luZyB0aHVtYm5haWxzIGluIGdyaWQgbW9kZSBnZXQgYSBsaXR0bGUgaWNvbgotICAgICAgICAgICAgICAgIC8vIGhpbnQgdG8gcmVtaW5kIHVzZXIgdGhleSdyZSBhIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBpZiAoRG9jdW1lbnQuTUlNRV9UWVBFX0RJUi5lcXVhbHMoZG9jTWltZVR5cGUpICYmIHN0YXRlLmRlcml2ZWRNb2RlID09IE1PREVfR1JJRAotICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2hvd1RodW1ibmFpbCkgewotICAgICAgICAgICAgICAgICAgICBpY29uRHJhd2FibGUgPSBJY29uVXRpbHMuYXBwbHlUaW50QXR0cihtQ29udGV4dCwgUi5kcmF3YWJsZS5pY19kb2NfZm9sZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQuUi5hdHRyLnRleHRDb2xvclByaW1hcnlJbnZlcnNlKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3VtbWFyeSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkb2NTdW1tYXJ5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkuc2V0VGV4dChkb2NTdW1tYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeS5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGljb25EcmF3YWJsZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWNvbjEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgICAgIGljb24xLnNldEltYWdlRHJhd2FibGUoaWNvbkRyYXdhYmxlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWNvbjEuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoZG9jTGFzdE1vZGlmaWVkID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgZGF0ZS5zZXRUZXh0KG51bGwpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkYXRlLnNldFRleHQoZm9ybWF0VGltZShtQ29udGV4dCwgZG9jTGFzdE1vZGlmaWVkKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghc3RhdGUuc2hvd1NpemUgfHwgRG9jdW1lbnQuTUlNRV9UWVBFX0RJUi5lcXVhbHMoZG9jTWltZVR5cGUpIHx8IGRvY1NpemUgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBzaXplLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2l6ZS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgc2l6ZS5zZXRUZXh0KEZvcm1hdHRlci5mb3JtYXRGaWxlU2l6ZShtQ29udGV4dCwgZG9jU2l6ZSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzZXRFbmFibGVkUmVjdXJzaXZlKGl0ZW1WaWV3LCBlbmFibGVkKTsKLQotICAgICAgICAgICAgaWNvbk1pbWUuc2V0QWxwaGEoaWNvbkFscGhhKTsKLSAgICAgICAgICAgIGljb25UaHVtYi5zZXRBbHBoYShpY29uQWxwaGEpOwotICAgICAgICAgICAgaWNvbjEuc2V0QWxwaGEoaWNvbkFscGhhKTsKLQorICAgICAgICAgICAgaG9sZGVyLnNldFNlbGVjdGVkKGlzU2VsZWN0ZWQobW9kZWxJZCkpOworICAgICAgICAgICAgaG9sZGVyLnNldEVuYWJsZWQobVR1bmVyLmlzRG9jdW1lbnRFbmFibGVkKGRvY01pbWVUeXBlLCBkb2NGbGFncykpOwogICAgICAgICAgICAgaWYgKERFQlVHX0VOQUJMRV9ETkQpIHsKLSAgICAgICAgICAgICAgICBzZXR1cERyYWdBbmREcm9wT25Eb2N1bWVudFZpZXcoaXRlbVZpZXcsIGN1cnNvcik7CisgICAgICAgICAgICAgICAgc2V0dXBEcmFnQW5kRHJvcE9uRG9jdW1lbnRWaWV3KGhvbGRlci5pdGVtVmlldywgY3Vyc29yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMjI1LDYgKzEwNDAsMjYgQEAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uTW9kZWxVcGRhdGUoTW9kZWwgbW9kZWwpIHsKICAgICAgICAgICAgIG1Nb2RlbElkcyA9IExpc3RzLm5ld0FycmF5TGlzdChtb2RlbC5nZXRNb2RlbElkcygpKTsKKyAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBkaXZpZGVyIGF0IHRoZSBlbmQuIFRoYXQgd2F5IGlmIHRoZSBjb2RlIGJlbG93IGVuY291bnRlcnMgbm8gZG9jdW1lbnRzCisgICAgICAgICAgICAvLyAoaS5lLiBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIG9ubHkgZGlyZWN0b3JpZXMpLCB0aGUgZGl2aWRlciBpcyBwbGFjZWQgYXQgdGhlIGVuZAorICAgICAgICAgICAgLy8gb2YgdGhlIGxpc3QsIGFzIGV4cGVjdGVkLgorICAgICAgICAgICAgbURpdmlkZXJQb3NpdGlvbiA9IG1Nb2RlbElkcy5zaXplKCk7CisKKyAgICAgICAgICAgIC8vIFdhbGsgZG93biB0aGUgbGlzdCBvZiBJRHMgdGlsbCB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIHRoYXQncyBub3QgYSBkaXJlY3RvcnksIGFuZAorICAgICAgICAgICAgLy8gaW5zZXJ0IGEgd2hpdGVzcGFjZSBlbGVtZW50IC0gdGhpcyBpbnRyb2R1Y2VzIGEgdmlzdWFsIGJyZWFrIGluIHRoZSBncmlkIGJldHdlZW4KKyAgICAgICAgICAgIC8vIGZvbGRlcnMgYW5kIGRvY3VtZW50cy4KKyAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgbW9kZWwsIG5hbWVseSwgdGhhdCBpdCBwZXJmb3JtcyBhCisgICAgICAgICAgICAvLyBidWNrZXRlZCBzb3J0IHdoZXJlIGRpcmVjdG9yaWVzIHdpbGwgYWx3YXlzIGJlIG9yZGVyZWQgYmVmb3JlIG90aGVyIGZpbGVzLiAgQ0JCLgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTW9kZWxJZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbWltZVR5cGUgPSBnZXRDdXJzb3JTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5nZXRJdGVtKG1Nb2RlbElkcy5nZXQoaSkpLCBEb2N1bWVudC5DT0xVTU5fTUlNRV9UWVBFKTsKKyAgICAgICAgICAgICAgICBpZiAoIURvY3VtZW50Lk1JTUVfVFlQRV9ESVIuZXF1YWxzKG1pbWVUeXBlKSkgeworICAgICAgICAgICAgICAgICAgICBtRGl2aWRlclBvc2l0aW9uID0gaTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTW9kZWxJZHMuYWRkKG1EaXZpZGVyUG9zaXRpb24sIG51bGwpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCkBAIC0xMjg5LDI3ICsxMTI0LDM0IEBACiAgICAgICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0TW9kZWxJZHMoKSB7CiAgICAgICAgICAgICByZXR1cm4gbU1vZGVsSWRzOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGZvcm1hdFRpbWUoQ29udGV4dCBjb250ZXh0LCBsb25nIHdoZW4pIHsKLSAgICAgICAgLy8gVE9ETzogRGF0ZVV0aWxzIHNob3VsZCBtYWtlIHRoaXMgZWFzaWVyCi0gICAgICAgIFRpbWUgdGhlbiA9IG5ldyBUaW1lKCk7Ci0gICAgICAgIHRoZW4uc2V0KHdoZW4pOwotICAgICAgICBUaW1lIG5vdyA9IG5ldyBUaW1lKCk7Ci0gICAgICAgIG5vdy5zZXRUb05vdygpOwotCi0gICAgICAgIGludCBmbGFncyA9IERhdGVVdGlscy5GT1JNQVRfTk9fTk9PTiB8IERhdGVVdGlscy5GT1JNQVRfTk9fTUlETklHSFQKLSAgICAgICAgICAgICAgICB8IERhdGVVdGlscy5GT1JNQVRfQUJCUkVWX0FMTDsKLQotICAgICAgICBpZiAodGhlbi55ZWFyICE9IG5vdy55ZWFyKSB7Ci0gICAgICAgICAgICBmbGFncyB8PSBEYXRlVXRpbHMuRk9STUFUX1NIT1dfWUVBUiB8IERhdGVVdGlscy5GT1JNQVRfU0hPV19EQVRFOwotICAgICAgICB9IGVsc2UgaWYgKHRoZW4ueWVhckRheSAhPSBub3cueWVhckRheSkgewotICAgICAgICAgICAgZmxhZ3MgfD0gRGF0ZVV0aWxzLkZPUk1BVF9TSE9XX0RBVEU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmbGFncyB8PSBEYXRlVXRpbHMuRk9STUFUX1NIT1dfVElNRTsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SXRlbVZpZXdUeXBlKGludCBwb3NpdGlvbikgeworICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgbURpdmlkZXJQb3NpdGlvbikgeworICAgICAgICAgICAgICAgIHJldHVybiBJVEVNX1RZUEVfRElSRUNUT1JZOworICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PSBtRGl2aWRlclBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIElURU1fVFlQRV9MQVlPVVRfRElWSURFUjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIElURU1fVFlQRV9ET0NVTUVOVDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBEYXRlVXRpbHMuZm9ybWF0RGF0ZVRpbWUoY29udGV4dCwgd2hlbiwgZmxhZ3MpOworICAgICAgICAvKioKKyAgICAgICAgICogVHJpZ2dlcnMgaXRlbS1jaGFuZ2Ugbm90aWZpY2F0aW9ucyBieSBzdGFibGUgSUQuIFBhc3NpbmcgYW4gdW5yZWNvZ25pemVkIElEIHdpbGwgcmVzdWx0CisgICAgICAgICAqIGluIGEgd2FybmluZyBpbiBsb2djYXQsIGJ1dCBubyBvdGhlciBlcnJvci4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIGlkCisgICAgICAgICAqIEBwYXJhbSBzZWxlY3Rpb25DaGFuZ2VkTWFya2VyCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJdGVtQ2hhbmdlZChTdHJpbmcgaWQsIFN0cmluZyBzZWxlY3Rpb25DaGFuZ2VkTWFya2VyKSB7CisgICAgICAgICAgICBpbnQgcG9zaXRpb24gPSBtTW9kZWxJZHMuaW5kZXhPZihpZCk7CisKKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7CisgICAgICAgICAgICAgICAgbm90aWZ5SXRlbUNoYW5nZWQocG9zaXRpb24sIHNlbGVjdGlvbkNoYW5nZWRNYXJrZXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJJdGVtIGNoYW5nZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgZm9yIHVua25vd24gaXRlbTogIiArIGlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHByaXZhdGUgU3RyaW5nIGZpbmRDb21tb25NaW1lVHlwZShMaXN0PFN0cmluZz4gbWltZVR5cGVzKSB7CkBAIC0xMzM2LDE5ICsxMTc4LDYgQEAKICAgICAgICAgcmV0dXJuIGNvbW1vblR5cGVbMF0gKyAiLyIgKyBjb21tb25UeXBlWzFdOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBzZXRFbmFibGVkUmVjdXJzaXZlKFZpZXcgdiwgYm9vbGVhbiBlbmFibGVkKSB7Ci0gICAgICAgIGlmICh2ID09IG51bGwpIHJldHVybjsKLSAgICAgICAgaWYgKHYuaXNFbmFibGVkKCkgPT0gZW5hYmxlZCkgcmV0dXJuOwotICAgICAgICB2LnNldEVuYWJsZWQoZW5hYmxlZCk7Ci0KLSAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBWaWV3R3JvdXApIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXdHcm91cCB2ZyA9IChWaWV3R3JvdXApIHY7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gdmcuZ2V0Q2hpbGRDb3VudCgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBzZXRFbmFibGVkUmVjdXJzaXZlKHZnLmdldENoaWxkQXQoaSksIGVuYWJsZWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHJpdmF0ZSB2b2lkIGNvcHlGcm9tQ2xpcGJvYXJkKCkgewogICAgICAgICBuZXcgQXN5bmNUYXNrPFZvaWQsIFZvaWQsIExpc3Q8RG9jdW1lbnRJbmZvPj4oKSB7CiAKQEAgLTE2MjMsODkgKzE0NTIsMTIgQEAKICAgICBwcml2YXRlIERyYXdhYmxlIGdldERyYWdTaGFkb3dJY29uKExpc3Q8RG9jdW1lbnRJbmZvPiBkb2NzKSB7CiAgICAgICAgIGlmIChkb2NzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBmaW5hbCBEb2N1bWVudEluZm8gZG9jID0gZG9jcy5nZXQoMCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RG9jdW1lbnRJY29uKGdldEFjdGl2aXR5KCksIGRvYy5hdXRob3JpdHksIGRvYy5kb2N1bWVudElkLAotICAgICAgICAgICAgICAgICAgICBkb2MubWltZVR5cGUsIGRvYy5pY29uLCBnZXREaXNwbGF5U3RhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gbUljb25IZWxwZXIuZ2V0RG9jdW1lbnRJY29uKGdldEFjdGl2aXR5KCksIGRvYy5hdXRob3JpdHksIGRvYy5kb2N1bWVudElkLAorICAgICAgICAgICAgICAgICAgICBkb2MubWltZVR5cGUsIGRvYy5pY29uKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZ2V0QWN0aXZpdHkoKS5nZXREcmF3YWJsZShSLmRyYXdhYmxlLmljX2RvY19nZW5lcmljKTsKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIERyYXdhYmxlIGdldERvY3VtZW50SWNvbihDb250ZXh0IGNvbnRleHQsIFN0cmluZyBkb2NBdXRob3JpdHksIFN0cmluZyBkb2NJZCwKLSAgICAgICAgICAgIFN0cmluZyBkb2NNaW1lVHlwZSwgaW50IGRvY0ljb24sIFN0YXRlIHN0YXRlKSB7Ci0gICAgICAgIGlmIChkb2NJY29uICE9IDApIHsKLSAgICAgICAgICAgIHJldHVybiBJY29uVXRpbHMubG9hZFBhY2thZ2VJY29uKGNvbnRleHQsIGRvY0F1dGhvcml0eSwgZG9jSWNvbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gSWNvblV0aWxzLmxvYWRNaW1lSWNvbihjb250ZXh0LCBkb2NNaW1lVHlwZSwgZG9jQXV0aG9yaXR5LCBkb2NJZCwKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUuZGVyaXZlZE1vZGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGh1bWJuYWlsQXN5bmNUYXNrIGV4dGVuZHMgQXN5bmNUYXNrPFVyaSwgVm9pZCwgQml0bWFwPgotICAgICAgICAgICAgaW1wbGVtZW50cyBQcmVlbXB0YWJsZSB7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgVXJpIG1Vcmk7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgSW1hZ2VWaWV3IG1JY29uTWltZTsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBJbWFnZVZpZXcgbUljb25UaHVtYjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBQb2ludCBtVGh1bWJTaXplOwotICAgICAgICBwcml2YXRlIGZpbmFsIGZsb2F0IG1UYXJnZXRBbHBoYTsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBDYW5jZWxsYXRpb25TaWduYWwgbVNpZ25hbDsKLQotICAgICAgICBwdWJsaWMgVGh1bWJuYWlsQXN5bmNUYXNrKFVyaSB1cmksIEltYWdlVmlldyBpY29uTWltZSwgSW1hZ2VWaWV3IGljb25UaHVtYiwgUG9pbnQgdGh1bWJTaXplLAotICAgICAgICAgICAgICAgIGZsb2F0IHRhcmdldEFscGhhKSB7Ci0gICAgICAgICAgICBtVXJpID0gdXJpOwotICAgICAgICAgICAgbUljb25NaW1lID0gaWNvbk1pbWU7Ci0gICAgICAgICAgICBtSWNvblRodW1iID0gaWNvblRodW1iOwotICAgICAgICAgICAgbVRodW1iU2l6ZSA9IHRodW1iU2l6ZTsKLSAgICAgICAgICAgIG1UYXJnZXRBbHBoYSA9IHRhcmdldEFscGhhOwotICAgICAgICAgICAgbVNpZ25hbCA9IG5ldyBDYW5jZWxsYXRpb25TaWduYWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBwcmVlbXB0KCkgewotICAgICAgICAgICAgY2FuY2VsKGZhbHNlKTsKLSAgICAgICAgICAgIG1TaWduYWwuY2FuY2VsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHJvdGVjdGVkIEJpdG1hcCBkb0luQmFja2dyb3VuZChVcmkuLi4gcGFyYW1zKSB7Ci0gICAgICAgICAgICBpZiAoaXNDYW5jZWxsZWQoKSkgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IG1JY29uVGh1bWIuZ2V0Q29udGV4dCgpOwotICAgICAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIHJlc29sdmVyID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKLQotICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyQ2xpZW50IGNsaWVudCA9IG51bGw7Ci0gICAgICAgICAgICBCaXRtYXAgcmVzdWx0ID0gbnVsbDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgY2xpZW50ID0gRG9jdW1lbnRzQXBwbGljYXRpb24uYWNxdWlyZVVuc3RhYmxlUHJvdmlkZXJPclRocm93KAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIsIG1VcmkuZ2V0QXV0aG9yaXR5KCkpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IERvY3VtZW50c0NvbnRyYWN0LmdldERvY3VtZW50VGh1bWJuYWlsKGNsaWVudCwgbVVyaSwgbVRodW1iU2l6ZSwgbVNpZ25hbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIFRodW1ibmFpbENhY2hlIHRodW1icyA9IERvY3VtZW50c0FwcGxpY2F0aW9uLmdldFRodW1ibmFpbHNDYWNoZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtVGh1bWJTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgdGh1bWJzLnB1dChtVXJpLCByZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIE9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uKSkgewotICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJGYWlsZWQgdG8gbG9hZCB0aHVtYm5haWwgZm9yICIgKyBtVXJpICsgIjogIiArIGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyQ2xpZW50LnJlbGVhc2VRdWlldGx5KGNsaWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHByb3RlY3RlZCB2b2lkIG9uUG9zdEV4ZWN1dGUoQml0bWFwIHJlc3VsdCkgewotICAgICAgICAgICAgaWYgKG1JY29uVGh1bWIuZ2V0VGFnKCkgPT0gdGhpcyAmJiByZXN1bHQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1JY29uVGh1bWIuc2V0VGFnKG51bGwpOwotICAgICAgICAgICAgICAgIG1JY29uVGh1bWIuc2V0SW1hZ2VCaXRtYXAocmVzdWx0KTsKLQotICAgICAgICAgICAgICAgIG1JY29uTWltZS5zZXRBbHBoYShtVGFyZ2V0QWxwaGEpOwotICAgICAgICAgICAgICAgIG1JY29uTWltZS5hbmltYXRlKCkuYWxwaGEoMGYpLnN0YXJ0KCk7Ci0gICAgICAgICAgICAgICAgbUljb25UaHVtYi5zZXRBbHBoYSgwZik7Ci0gICAgICAgICAgICAgICAgbUljb25UaHVtYi5hbmltYXRlKCkuYWxwaGEobVRhcmdldEFscGhhKS5zdGFydCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHJpdmF0ZSBjbGFzcyBEcmF3YWJsZVNoYWRvd0J1aWxkZXIgZXh0ZW5kcyBWaWV3LkRyYWdTaGFkb3dCdWlsZGVyIHsKIAogICAgICAgICBwcml2YXRlIGZpbmFsIERyYXdhYmxlIG1TaGFkb3c7CkBAIC0xNzU2LDcgKzE1MDgsNyBAQAogICAgICAgICByZXR1cm4gbVNlbGVjdGlvbk1hbmFnZXIuZ2V0U2VsZWN0aW9uKCkuY29udGFpbnMobW9kZWxJZCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBjbGFzcyBJdGVtQ2xpY2tMaXN0ZW5lciBpbXBsZW1lbnRzIENsaWNrTGlzdGVuZXIgeworICAgIHByaXZhdGUgY2xhc3MgSXRlbUNsaWNrTGlzdGVuZXIgaW1wbGVtZW50cyBEb2N1bWVudEhvbGRlci5DbGlja0xpc3RlbmVyIHsKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soRG9jdW1lbnRIb2xkZXIgZG9jKSB7CiAgICAgICAgICAgICBpZiAobVNlbGVjdGlvbk1hbmFnZXIuaGFzU2VsZWN0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0RvY3VtZW50SG9sZGVyLmphdmEgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9Eb2N1bWVudEhvbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzkwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9Eb2N1bWVudEhvbGRlci5qYXZhCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5kaXJsaXN0OworCitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuUHJlY29uZGl0aW9ucy5jaGVja1N0YXRlOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LmFubm90YXRpb24uTnVsbGFibGU7CitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnY3LndpZGdldC5SZWN5Y2xlclZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworCitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5TdGF0ZTsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIERvY3VtZW50SG9sZGVyCisgICAgICAgIGV4dGVuZHMgUmVjeWNsZXJWaWV3LlZpZXdIb2xkZXIKKyAgICAgICAgaW1wbGVtZW50cyBWaWV3Lk9uS2V5TGlzdGVuZXIgeworCisgICAgcHVibGljIEBOdWxsYWJsZSBTdHJpbmcgbW9kZWxJZDsKKworICAgIGZpbmFsIGludCBtU2VsZWN0ZWRJdGVtQ29sb3I7CisgICAgZmluYWwgaW50IG1EZWZhdWx0SXRlbUNvbG9yOworICAgIGZpbmFsIGJvb2xlYW4gbUFsd2F5c1Nob3dTdW1tYXJ5OworICAgIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisKKyAgICBwcml2YXRlIExpc3REb2N1bWVudEhvbGRlci5DbGlja0xpc3RlbmVyIG1DbGlja0xpc3RlbmVyOworICAgIHByaXZhdGUgVmlldy5PbktleUxpc3RlbmVyIG1LZXlMaXN0ZW5lcjsKKworICAgIHB1YmxpYyBEb2N1bWVudEhvbGRlcihDb250ZXh0IGNvbnRleHQsIFZpZXdHcm91cCBwYXJlbnQsIGludCBsYXlvdXQpIHsKKyAgICAgICAgdGhpcyhjb250ZXh0LCBpbmZsYXRlTGF5b3V0KGNvbnRleHQsIHBhcmVudCwgbGF5b3V0KSk7CisgICAgfQorCisgICAgcHVibGljIERvY3VtZW50SG9sZGVyKENvbnRleHQgY29udGV4dCwgVmlldyBpdGVtKSB7CisgICAgICAgIHN1cGVyKGl0ZW0pOworCisgICAgICAgIGl0ZW1WaWV3LnNldE9uS2V5TGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworCisgICAgICAgIG1EZWZhdWx0SXRlbUNvbG9yID0gY29udGV4dC5nZXRDb2xvcihSLmNvbG9yLml0ZW1fZG9jX2JhY2tncm91bmQpOworICAgICAgICBtU2VsZWN0ZWRJdGVtQ29sb3IgPSBjb250ZXh0LmdldENvbG9yKFIuY29sb3IuaXRlbV9kb2NfYmFja2dyb3VuZF9zZWxlY3RlZCk7CisgICAgICAgIG1BbHdheXNTaG93U3VtbWFyeSA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbihSLmJvb2wuYWx3YXlzX3Nob3dfc3VtbWFyeSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmluZHMgdGhlIHZpZXcgdG8gdGhlIGdpdmVuIGl0ZW0gZGF0YS4KKyAgICAgKiBAcGFyYW0gY3Vyc29yCisgICAgICogQHBhcmFtIG1vZGVsSWQKKyAgICAgKiBAcGFyYW0gc3RhdGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBiaW5kKEN1cnNvciBjdXJzb3IsIFN0cmluZyBtb2RlbElkLCBTdGF0ZSBzdGF0ZSk7CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3RlZChib29sZWFuIHNlbGVjdGVkKSB7CisgICAgICAgIGl0ZW1WaWV3LnNldEFjdGl2YXRlZChzZWxlY3RlZCk7CisgICAgICAgIGl0ZW1WaWV3LnNldEJhY2tncm91bmRDb2xvcihzZWxlY3RlZCA/IG1TZWxlY3RlZEl0ZW1Db2xvciA6IG1EZWZhdWx0SXRlbUNvbG9yKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvbktleShWaWV3IHYsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBJbnRlcmNlcHQgZW50ZXIga2V5LXVwIGV2ZW50cywgYW5kIHRyZWF0IHRoZW0gYXMgY2xpY2tzLiAgRm9yd2FyZCBvdGhlciBldmVudHMuCisgICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSA9PSBLZXlFdmVudC5BQ1RJT05fVVAgJiYKKyAgICAgICAgICAgICAgICBrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfRU5URVIpIHsKKyAgICAgICAgICAgIGlmIChtQ2xpY2tMaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUNsaWNrTGlzdGVuZXIub25DbGljayh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKG1LZXlMaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUtleUxpc3RlbmVyLm9uS2V5KHYsIGtleUNvZGUsIGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkQ2xpY2tMaXN0ZW5lcihMaXN0RG9jdW1lbnRIb2xkZXIuQ2xpY2tMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICAvLyBKdXN0IGhhbmRsZSBvbmUgZm9yIG5vdzsgc3dpdGNoIHRvIGEgbGlzdCBpZiBuZWNlc3NhcnkuCisgICAgICAgIGNoZWNrU3RhdGUobUNsaWNrTGlzdGVuZXIgPT0gbnVsbCk7CisgICAgICAgIG1DbGlja0xpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkT25LZXlMaXN0ZW5lcihWaWV3Lk9uS2V5TGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgLy8gSnVzdCBoYW5kbGUgb25lIGZvciBub3c7IHN3aXRjaCB0byBhIGxpc3QgaWYgbmVjZXNzYXJ5LgorICAgICAgICBjaGVja1N0YXRlKG1LZXlMaXN0ZW5lciA9PSBudWxsKTsKKyAgICAgICAgbUtleUxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgc2V0RW5hYmxlZFJlY3Vyc2l2ZShpdGVtVmlldywgZW5hYmxlZCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0RW5hYmxlZFJlY3Vyc2l2ZShWaWV3IGl0ZW1WaWV3LCBib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgaWYgKGl0ZW1WaWV3ID09IG51bGwpIHJldHVybjsKKyAgICAgICAgaWYgKGl0ZW1WaWV3LmlzRW5hYmxlZCgpID09IGVuYWJsZWQpIHJldHVybjsKKyAgICAgICAgaXRlbVZpZXcuc2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgICAgICBpZiAoaXRlbVZpZXcgaW5zdGFuY2VvZiBWaWV3R3JvdXApIHsKKyAgICAgICAgICAgIGZpbmFsIFZpZXdHcm91cCB2ZyA9IChWaWV3R3JvdXApIGl0ZW1WaWV3OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IHZnLmdldENoaWxkQ291bnQoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlZFJlY3Vyc2l2ZSh2Zy5nZXRDaGlsZEF0KGkpLCBlbmFibGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFZpZXcgaW5mbGF0ZUxheW91dChDb250ZXh0IGNvbnRleHQsIFZpZXdHcm91cCBwYXJlbnQsIGludCBsYXlvdXQpIHsKKyAgICAgICAgZmluYWwgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSBMYXlvdXRJbmZsYXRlci5mcm9tKGNvbnRleHQpOworICAgICAgICByZXR1cm4gaW5mbGF0ZXIuaW5mbGF0ZShsYXlvdXQsIHBhcmVudCwgZmFsc2UpOworICAgIH0KKworICAgIGludGVyZmFjZSBDbGlja0xpc3RlbmVyIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhEb2N1bWVudEhvbGRlciBkb2MpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0VtcHR5RG9jdW1lbnRIb2xkZXIuamF2YSBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0VtcHR5RG9jdW1lbnRIb2xkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjY3YTViCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvRW1wdHlEb2N1bWVudEhvbGRlci5qYXZhCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLmRpcmxpc3Q7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5TcGFjZTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuU3RhdGU7CisKK2ZpbmFsIGNsYXNzIEVtcHR5RG9jdW1lbnRIb2xkZXIgZXh0ZW5kcyBEb2N1bWVudEhvbGRlciB7CisgICAgcHVibGljIEVtcHR5RG9jdW1lbnRIb2xkZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIG5ldyBTcGFjZShjb250ZXh0KSk7CisKKyAgICAgICAgLy8gUGVyIFVYIHNwZWMsIHRoaXMgcHV0cyBhIGJpZ2dlciBnYXAgYmV0d2VlbiB0aGUgZm9sZGVycyBhbmQgZG9jdW1lbnRzIGluIHRoZSBncmlkLgorICAgICAgICBmaW5hbCBpbnQgZ3JpZE1hcmdpbiA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4uZ3JpZF9pdGVtX21hcmdpbik7CisgICAgICAgIGl0ZW1WaWV3LnNldE1pbmltdW1IZWlnaHQoZ3JpZE1hcmdpbiAqIDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGJpbmQoQ3Vyc29yIGN1cnNvciwgU3RyaW5nIG1vZGVsSWQsIFN0YXRlIHN0YXRlKSB7CisgICAgICAgIC8vIE5vdGhpbmcgdG8gYmluZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0dyaWREaXJlY3RvcnlIb2xkZXIuamF2YSBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0dyaWREaXJlY3RvcnlIb2xkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWZmMjYzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvR3JpZERpcmVjdG9yeUhvbGRlci5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLmRpcmxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkubW9kZWwuRG9jdW1lbnRJbmZvLmdldEN1cnNvclN0cmluZzsKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5QcmVjb25kaXRpb25zLmNoZWNrTm90TnVsbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuRG9jdW1lbnRzQ29udHJhY3QuRG9jdW1lbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuU3RhdGU7CisKK2ZpbmFsIGNsYXNzIEdyaWREaXJlY3RvcnlIb2xkZXIgZXh0ZW5kcyBEb2N1bWVudEhvbGRlciB7CisgICAgZmluYWwgVGV4dFZpZXcgbVRpdGxlOworICAgIHB1YmxpYyBHcmlkRGlyZWN0b3J5SG9sZGVyKENvbnRleHQgY29udGV4dCwgVmlld0dyb3VwIHBhcmVudCkgeworICAgICAgICBzdXBlcihjb250ZXh0LCBwYXJlbnQsIFIubGF5b3V0Lml0ZW1fZGlyX2dyaWQpOworCisgICAgICAgIG1UaXRsZSA9IChUZXh0VmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKGFuZHJvaWQuUi5pZC50aXRsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmluZCB0aGlzIHZpZXcgdG8gdGhlIGdpdmVuIGRvY3VtZW50IGZvciBkaXNwbGF5LgorICAgICAqIEBwYXJhbSBjdXJzb3IgUG9pbnRpbmcgdG8gdGhlIGl0ZW0gdG8gYmUgYm91bmQuCisgICAgICogQHBhcmFtIG1vZGVsSWQgVGhlIG1vZGVsIElEIG9mIHRoZSBpdGVtLgorICAgICAqIEBwYXJhbSBzdGF0ZSBDdXJyZW50IGRpc3BsYXkgc3RhdGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgYmluZChDdXJzb3IgY3Vyc29yLCBTdHJpbmcgbW9kZWxJZCwgU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgY2hlY2tOb3ROdWxsKGN1cnNvciwgIkN1cnNvciBjYW5ub3QgYmUgbnVsbC4iKTsKKworICAgICAgICB0aGlzLm1vZGVsSWQgPSBtb2RlbElkOworCisgICAgICAgIGZpbmFsIFN0cmluZyBkb2NEaXNwbGF5TmFtZSA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9ESVNQTEFZX05BTUUpOworICAgICAgICBtVGl0bGUuc2V0VGV4dChkb2NEaXNwbGF5TmFtZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvR3JpZERvY3VtZW50SG9sZGVyLmphdmEgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9HcmlkRG9jdW1lbnRIb2xkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2M2NjdiCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvR3JpZERvY3VtZW50SG9sZGVyLmphdmEKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLmRpcmxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkubW9kZWwuRG9jdW1lbnRJbmZvLmdldEN1cnNvckludDsKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkubW9kZWwuRG9jdW1lbnRJbmZvLmdldEN1cnNvckxvbmc7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLm1vZGVsLkRvY3VtZW50SW5mby5nZXRDdXJzb3JTdHJpbmc7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5Eb2N1bWVudHNDb250cmFjdDsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLkRvY3VtZW50c0NvbnRyYWN0LkRvY3VtZW50OworaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRm9ybWF0dGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworCitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5Sb290Q3Vyc29yV3JhcHBlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5TaGFyZWQ7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuU3RhdGU7CisKK2ZpbmFsIGNsYXNzIEdyaWREb2N1bWVudEhvbGRlciBleHRlbmRzIERvY3VtZW50SG9sZGVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIG1IaWRlVGl0bGVzOworCisgICAgZmluYWwgVGV4dFZpZXcgbVRpdGxlOworICAgIGZpbmFsIFRleHRWaWV3IG1EYXRlOworICAgIGZpbmFsIFRleHRWaWV3IG1TaXplOworICAgIGZpbmFsIEltYWdlVmlldyBtSWNvbk1pbWU7CisgICAgZmluYWwgSW1hZ2VWaWV3IG1JY29uVGh1bWI7CisgICAgZmluYWwgSWNvbkhlbHBlciBtSWNvbkhlbHBlcjsKKworICAgIHB1YmxpYyBHcmlkRG9jdW1lbnRIb2xkZXIoQ29udGV4dCBjb250ZXh0LCBWaWV3R3JvdXAgcGFyZW50LCBJY29uSGVscGVyIGljb25IZWxwZXIpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgcGFyZW50LCBSLmxheW91dC5pdGVtX2RvY19ncmlkKTsKKworICAgICAgICBtVGl0bGUgPSAoVGV4dFZpZXcpIGl0ZW1WaWV3LmZpbmRWaWV3QnlJZChhbmRyb2lkLlIuaWQudGl0bGUpOworICAgICAgICBtRGF0ZSA9IChUZXh0VmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7CisgICAgICAgIG1TaXplID0gKFRleHRWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoUi5pZC5zaXplKTsKKyAgICAgICAgbUljb25NaW1lID0gKEltYWdlVmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKFIuaWQuaWNvbl9taW1lKTsKKyAgICAgICAgbUljb25UaHVtYiA9IChJbWFnZVZpZXcpIGl0ZW1WaWV3LmZpbmRWaWV3QnlJZChSLmlkLmljb25fdGh1bWIpOworICAgICAgICBtSWNvbkhlbHBlciA9IGljb25IZWxwZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmluZCB0aGlzIHZpZXcgdG8gdGhlIGdpdmVuIGRvY3VtZW50IGZvciBkaXNwbGF5LgorICAgICAqIEBwYXJhbSBjdXJzb3IgUG9pbnRpbmcgdG8gdGhlIGl0ZW0gdG8gYmUgYm91bmQuCisgICAgICogQHBhcmFtIG1vZGVsSWQgVGhlIG1vZGVsIElEIG9mIHRoZSBpdGVtLgorICAgICAqIEBwYXJhbSBzdGF0ZSBDdXJyZW50IGRpc3BsYXkgc3RhdGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgYmluZChDdXJzb3IgY3Vyc29yLCBTdHJpbmcgbW9kZWxJZCwgU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgdGhpcy5tb2RlbElkID0gbW9kZWxJZDsKKworICAgICAgICBjaGVja05vdE51bGwoY3Vyc29yLCAiQ3Vyc29yIGNhbm5vdCBiZSBudWxsLiIpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBkb2NBdXRob3JpdHkgPSBnZXRDdXJzb3JTdHJpbmcoY3Vyc29yLCBSb290Q3Vyc29yV3JhcHBlci5DT0xVTU5fQVVUSE9SSVRZKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGRvY0lkID0gZ2V0Q3Vyc29yU3RyaW5nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX0RPQ1VNRU5UX0lEKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGRvY01pbWVUeXBlID0gZ2V0Q3Vyc29yU3RyaW5nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX01JTUVfVFlQRSk7CisgICAgICAgIGZpbmFsIFN0cmluZyBkb2NEaXNwbGF5TmFtZSA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9ESVNQTEFZX05BTUUpOworICAgICAgICBmaW5hbCBsb25nIGRvY0xhc3RNb2RpZmllZCA9IGdldEN1cnNvckxvbmcoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fTEFTVF9NT0RJRklFRCk7CisgICAgICAgIGZpbmFsIGludCBkb2NJY29uID0gZ2V0Q3Vyc29ySW50KGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX0lDT04pOworICAgICAgICBmaW5hbCBpbnQgZG9jRmxhZ3MgPSBnZXRDdXJzb3JJbnQoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fRkxBR1MpOworICAgICAgICBmaW5hbCBsb25nIGRvY1NpemUgPSBnZXRDdXJzb3JMb25nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX1NJWkUpOworCisgICAgICAgIG1JY29uSGVscGVyLnN0b3BMb2FkaW5nKG1JY29uVGh1bWIpOworCisgICAgICAgIG1JY29uTWltZS5hbmltYXRlKCkuY2FuY2VsKCk7CisgICAgICAgIG1JY29uTWltZS5zZXRBbHBoYSgxZik7CisgICAgICAgIG1JY29uVGh1bWIuYW5pbWF0ZSgpLmNhbmNlbCgpOworICAgICAgICBtSWNvblRodW1iLnNldEFscGhhKDBmKTsKKworICAgICAgICBmaW5hbCBVcmkgdXJpID0gRG9jdW1lbnRzQ29udHJhY3QuYnVpbGREb2N1bWVudFVyaShkb2NBdXRob3JpdHksIGRvY0lkKTsKKyAgICAgICAgbUljb25IZWxwZXIubG9hZFRodW1ibmFpbCh1cmksIGRvY01pbWVUeXBlLCBkb2NGbGFncywgZG9jSWNvbiwgbUljb25UaHVtYiwgbUljb25NaW1lKTsKKworICAgICAgICBpZiAobUhpZGVUaXRsZXMpIHsKKyAgICAgICAgICAgIG1UaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtVGl0bGUuc2V0VGV4dChkb2NEaXNwbGF5TmFtZSk7CisgICAgICAgICAgICBtVGl0bGUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRvY0xhc3RNb2RpZmllZCA9PSAtMSkgeworICAgICAgICAgICAgbURhdGUuc2V0VGV4dChudWxsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1EYXRlLnNldFRleHQoU2hhcmVkLmZvcm1hdFRpbWUobUNvbnRleHQsIGRvY0xhc3RNb2RpZmllZCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzdGF0ZS5zaG93U2l6ZSB8fCBEb2N1bWVudC5NSU1FX1RZUEVfRElSLmVxdWFscyhkb2NNaW1lVHlwZSkgfHwgZG9jU2l6ZSA9PSAtMSkgeworICAgICAgICAgICAgbVNpemUuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbVNpemUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVNpemUuc2V0VGV4dChGb3JtYXR0ZXIuZm9ybWF0RmlsZVNpemUobUNvbnRleHQsIGRvY1NpemUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgd2hldGhlciB0byBoaWRlIHRpdGxlcyBvbiBzdWJzZXF1ZW50bHkgY3JlYXRlZCBHcmlkRG9jdW1lbnRIb2xkZXIgaXRlbXMuCisgICAgICogQHBhcmFtIGhpZGVUaXRsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0SGlkZVRpdGxlcyhib29sZWFuIGhpZGVUaXRsZXMpIHsKKyAgICAgICAgbUhpZGVUaXRsZXMgPSBoaWRlVGl0bGVzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0ljb25IZWxwZXIuamF2YSBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0ljb25IZWxwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjcwZWFmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvSWNvbkhlbHBlci5qYXZhCkBAIC0wLDAgKzEsMjUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5kaXJsaXN0OworCitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlNoYXJlZC5ERUJVRzsKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuU3RhdGUuTU9ERV9HUklEOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5TdGF0ZS5NT0RFX0xJU1Q7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlN0YXRlLk1PREVfVU5LTk9XTjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBvaW50OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOworaW1wb3J0IGFuZHJvaWQub3MuQXN5bmNUYXNrOworaW1wb3J0IGFuZHJvaWQub3MuQ2FuY2VsbGF0aW9uU2lnbmFsOworaW1wb3J0IGFuZHJvaWQub3MuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5Eb2N1bWVudHNDb250cmFjdDsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLkRvY3VtZW50c0NvbnRyYWN0LkRvY3VtZW50OworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworCitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuRG9jdW1lbnRzQXBwbGljYXRpb247CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuSWNvblV0aWxzOworaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLk1pbWVQcmVkaWNhdGU7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUHJvdmlkZXJFeGVjdXRvcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5Qcm92aWRlckV4ZWN1dG9yLlByZWVtcHRhYmxlOworaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuVGh1bWJuYWlsQ2FjaGU7CisKKy8qKgorICogQSBjbGFzcyB0byBhc3Npc3Qgd2l0aCBsb2FkaW5nIGFuZCBtYW5hZ2luZyB0aGUgSW1hZ2VzIChpLmUuIHRodW1ibmFpbHMgYW5kIGljb25zKSBhc3NvY2lhdGVkCisgKiB3aXRoIGl0ZW1zIGluIHRoZSBkaXJlY3RvcnkgbGlzdGluZy4KKyAqLworcHVibGljIGNsYXNzIEljb25IZWxwZXIgeworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBUQUcgPSAiSWNvbkhlbHBlciI7CisKKyAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CisgICAgcHJpdmF0ZSBUaHVtYm5haWxDYWNoZSBtQ2FjaGU7CisgICAgcHJpdmF0ZSBQb2ludCBtVGh1bWJTaXplOworICAgIC8vIFRoZSBkaXNwbGF5IG1vZGUgKE1PREVfR1JJRCwgTU9ERV9MSVNULCBldGMpLgorICAgIHByaXZhdGUgaW50IG1Nb2RlOworICAgIHByaXZhdGUgYm9vbGVhbiBtVGh1bWJuYWlsc0VuYWJsZWQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIGNvbnRleHQKKyAgICAgKiBAcGFyYW0gbW9kZSBNT0RFX0dSSUQgb3IgTU9ERV9MSVNUCisgICAgICovCisgICAgcHVibGljIEljb25IZWxwZXIoQ29udGV4dCBjb250ZXh0LCBpbnQgbW9kZSkgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIHNldE1vZGUobW9kZSk7CisgICAgICAgIG1DYWNoZSA9IERvY3VtZW50c0FwcGxpY2F0aW9uLmdldFRodW1ibmFpbHNDYWNoZShjb250ZXh0LCBtVGh1bWJTaXplKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRodW1ibmFpbHMuIFdoZW4gdGh1bWJuYWlscyBhcmUgZGlzYWJsZWQsIG1pbWUgaWNvbnMgKG9yIGN1c3RvbSBpY29ucywgaWYKKyAgICAgKiBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50KSBhcmUgdXNlZCBpbnN0ZWFkLgorICAgICAqCisgICAgICogQHBhcmFtIGVuYWJsZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaHVtYm5haWxzRW5hYmxlZChib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgbVRodW1ibmFpbHNFbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjdXJyZW50IGRpc3BsYXkgbW9kZS4gIFRoaXMgYWZmZWN0cyB0aGUgdGh1bWJuYWlsIHNpemVzIHRoYXQgYXJlIGxvYWRlZC4KKyAgICAgKiBAcGFyYW0gbW9kZSBTZWUge0BsaW5rIFN0YXRlLk1PREVfTElTVH0gYW5kIHtAbGluayBTdGF0ZS5NT0RFX0dSSUR9LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1vZGUoaW50IG1vZGUpIHsKKyAgICAgICAgLy8gVE9ETzogSW5zdGVhZCBvZiBleHBvc2luZyBzZXRNb2RlLCBtYWtlIHRoZSBtb2RlIGZpbmFsLCBhbmQgbWFrZSBzZXBhcmF0ZSBpbnN0YW5jZXMgZm9yCisgICAgICAgIC8vIGdyaWQvbGlzdC4KKyAgICAgICAgaW50IHRodW1iU2l6ZTsKKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBjYXNlIE1PREVfR1JJRDoKKyAgICAgICAgICAgICAgICB0aHVtYlNpemUgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXREaW1lbnNpb25QaXhlbFNpemUoUi5kaW1lbi5ncmlkX3dpZHRoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTU9ERV9MSVNUOgorICAgICAgICAgICAgICAgIHRodW1iU2l6ZSA9IG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLmljb25fc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE1PREVfVU5LTk9XTjoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgbGF5b3V0IG1vZGU6ICIgKyBtb2RlKTsKKyAgICAgICAgfQorICAgICAgICBtTW9kZSA9IG1vZGU7CisgICAgICAgIG1UaHVtYlNpemUgPSBuZXcgUG9pbnQodGh1bWJTaXplLCB0aHVtYlNpemUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbmNlbHMgYW55IG9uZ29pbmcgbG9hZCBvcGVyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gSW1hZ2VWaWV3LgorICAgICAqIEBwYXJhbSBpY29uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc3RvcExvYWRpbmcoSW1hZ2VWaWV3IGljb24pIHsKKyAgICAgICAgZmluYWwgTG9hZGVyVGFzayBvbGRUYXNrID0gKExvYWRlclRhc2spIGljb24uZ2V0VGFnKCk7CisgICAgICAgIGlmIChvbGRUYXNrICE9IG51bGwpIHsKKyAgICAgICAgICAgIG9sZFRhc2sucHJlZW1wdCgpOworICAgICAgICAgICAgaWNvbi5zZXRUYWcobnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiogSW50ZXJuYWwgdGFzayBmb3IgbG9hZGluZyB0aHVtYm5haWxzIGFzeW5jaHJvbm91c2x5LiAqLworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIExvYWRlclRhc2sKKyAgICAgICAgICAgIGV4dGVuZHMgQXN5bmNUYXNrPFVyaSwgVm9pZCwgQml0bWFwPgorICAgICAgICAgICAgaW1wbGVtZW50cyBQcmVlbXB0YWJsZSB7CisgICAgICAgIHByaXZhdGUgZmluYWwgVXJpIG1Vcmk7CisgICAgICAgIHByaXZhdGUgZmluYWwgSW1hZ2VWaWV3IG1JY29uTWltZTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBJbWFnZVZpZXcgbUljb25UaHVtYjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBQb2ludCBtVGh1bWJTaXplOworICAgICAgICBwcml2YXRlIGZpbmFsIENhbmNlbGxhdGlvblNpZ25hbCBtU2lnbmFsOworCisgICAgICAgIHB1YmxpYyBMb2FkZXJUYXNrKFVyaSB1cmksIEltYWdlVmlldyBpY29uTWltZSwgSW1hZ2VWaWV3IGljb25UaHVtYiwKKyAgICAgICAgICAgICAgICBQb2ludCB0aHVtYlNpemUpIHsKKyAgICAgICAgICAgIG1VcmkgPSB1cmk7CisgICAgICAgICAgICBtSWNvbk1pbWUgPSBpY29uTWltZTsKKyAgICAgICAgICAgIG1JY29uVGh1bWIgPSBpY29uVGh1bWI7CisgICAgICAgICAgICBtVGh1bWJTaXplID0gdGh1bWJTaXplOworICAgICAgICAgICAgbVNpZ25hbCA9IG5ldyBDYW5jZWxsYXRpb25TaWduYWwoKTsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiU3RhcnRpbmcgaWNvbiBsb2FkZXIgdGFzayBmb3IgIiArIG1VcmkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHByZWVtcHQoKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkljb24gbG9hZGVyIHRhc2sgZm9yICIgKyBtVXJpICsgIiB3YXMgY2FuY2VsbGVkLiIpOworICAgICAgICAgICAgY2FuY2VsKGZhbHNlKTsKKyAgICAgICAgICAgIG1TaWduYWwuY2FuY2VsKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIEJpdG1hcCBkb0luQmFja2dyb3VuZChVcmkuLi4gcGFyYW1zKSB7CisgICAgICAgICAgICBpZiAoaXNDYW5jZWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gbUljb25UaHVtYi5nZXRDb250ZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgcmVzb2x2ZXIgPSBjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworCisgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJDbGllbnQgY2xpZW50ID0gbnVsbDsKKyAgICAgICAgICAgIEJpdG1hcCByZXN1bHQgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjbGllbnQgPSBEb2N1bWVudHNBcHBsaWNhdGlvbi5hY3F1aXJlVW5zdGFibGVQcm92aWRlck9yVGhyb3coCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlciwgbVVyaS5nZXRBdXRob3JpdHkoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnRzQ29udHJhY3QuZ2V0RG9jdW1lbnRUaHVtYm5haWwoY2xpZW50LCBtVXJpLCBtVGh1bWJTaXplLCBtU2lnbmFsKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgVGh1bWJuYWlsQ2FjaGUgdGh1bWJzID0gRG9jdW1lbnRzQXBwbGljYXRpb24uZ2V0VGh1bWJuYWlsc0NhY2hlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1UaHVtYlNpemUpOworICAgICAgICAgICAgICAgICAgICB0aHVtYnMucHV0KG1VcmksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBsb2FkIHRodW1ibmFpbCBmb3IgIiArIG1VcmkgKyAiOiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJDbGllbnQucmVsZWFzZVF1aWV0bHkoY2xpZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgb25Qb3N0RXhlY3V0ZShCaXRtYXAgcmVzdWx0KSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkxvYWRlciB0YXNrIGZvciAiICsgbVVyaSArICIgY29tcGxldGVkIik7CisKKyAgICAgICAgICAgIGlmIChtSWNvblRodW1iLmdldFRhZygpID09IHRoaXMgJiYgcmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtSWNvblRodW1iLnNldFRhZyhudWxsKTsKKyAgICAgICAgICAgICAgICBtSWNvblRodW1iLnNldEltYWdlQml0bWFwKHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICBmbG9hdCBhbHBoYSA9IG1JY29uTWltZS5nZXRBbHBoYSgpOworICAgICAgICAgICAgICAgIG1JY29uTWltZS5hbmltYXRlKCkuYWxwaGEoMGYpLnN0YXJ0KCk7CisgICAgICAgICAgICAgICAgbUljb25UaHVtYi5zZXRBbHBoYSgwZik7CisgICAgICAgICAgICAgICAgbUljb25UaHVtYi5hbmltYXRlKCkuYWxwaGEoYWxwaGEpLnN0YXJ0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb2FkIHRodW1ibmFpbHMgZm9yIGEgZGlyZWN0b3J5IGxpc3QgaXRlbS4KKyAgICAgKiBAcGFyYW0gdXJpIFRoZSBVUkkgZm9yIHRoZSBmaWxlIGJlaW5nIHJlcHJlc2VudGVkLgorICAgICAqIEBwYXJhbSBtaW1lVHlwZSBUaGUgbWltZSB0eXBlIG9mIHRoZSBmaWxlIGJlaW5nIHJlcHJlc2VudGVkLgorICAgICAqIEBwYXJhbSBkb2NGbGFncyBGbGFncyBmb3IgdGhlIGZpbGUgYmVpbmcgcmVwcmVzZW50ZWQuCisgICAgICogQHBhcmFtIGRvY0ljb24gQ3VzdG9tIGljb24gKGlmIGFueSkgZm9yIHRoZSBmaWxlIGJlaW5nIHJlcXVlc3RlZC4KKyAgICAgKiBAcGFyYW0gaWNvblRodW1iIFRoZSBpdGVtdmlldydzIHRodW1ibmFpbCBpY29uLgorICAgICAqIEBwYXJhbSBpY29uTWltZSBUaGUgaXRlbXZpZXcncyBtaW1lIGljb24uCisgICAgICogQHJldHVybgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGxvYWRUaHVtYm5haWwoVXJpIHVyaSwgU3RyaW5nIG1pbWVUeXBlLCBpbnQgZG9jRmxhZ3MsIGludCBkb2NJY29uLAorICAgICAgICAgICAgSW1hZ2VWaWV3IGljb25UaHVtYiwgSW1hZ2VWaWV3IGljb25NaW1lKSB7CisgICAgICAgIGJvb2xlYW4gY2FjaGVIaXQgPSBmYWxzZTsKKworICAgICAgICBmaW5hbCBTdHJpbmcgZG9jQXV0aG9yaXR5ID0gdXJpLmdldEF1dGhvcml0eSgpOworCisgICAgICAgIGZpbmFsIGJvb2xlYW4gc3VwcG9ydHNUaHVtYm5haWwgPSAoZG9jRmxhZ3MgJiBEb2N1bWVudC5GTEFHX1NVUFBPUlRTX1RIVU1CTkFJTCkgIT0gMDsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBhbGxvd1RodW1ibmFpbCA9IChtTW9kZSA9PSBNT0RFX0dSSUQpCisgICAgICAgICAgICAgICAgfHwgTWltZVByZWRpY2F0ZS5taW1lTWF0Y2hlcyhNaW1lUHJlZGljYXRlLlZJU1VBTF9NSU1FUywgbWltZVR5cGUpOworICAgICAgICBmaW5hbCBib29sZWFuIHNob3dUaHVtYm5haWwgPSBzdXBwb3J0c1RodW1ibmFpbCAmJiBhbGxvd1RodW1ibmFpbCAmJiBtVGh1bWJuYWlsc0VuYWJsZWQ7CisgICAgICAgIGlmIChzaG93VGh1bWJuYWlsKSB7CisgICAgICAgICAgICBmaW5hbCBCaXRtYXAgY2FjaGVkUmVzdWx0ID0gbUNhY2hlLmdldCh1cmkpOworICAgICAgICAgICAgaWYgKGNhY2hlZFJlc3VsdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWNvblRodW1iLnNldEltYWdlQml0bWFwKGNhY2hlZFJlc3VsdCk7CisgICAgICAgICAgICAgICAgY2FjaGVIaXQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpY29uVGh1bWIuc2V0SW1hZ2VEcmF3YWJsZShudWxsKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBMb2FkZXJUYXNrIHRhc2sgPSBuZXcgTG9hZGVyVGFzayh1cmksIGljb25NaW1lLCBpY29uVGh1bWIsIG1UaHVtYlNpemUpOworICAgICAgICAgICAgICAgIGljb25UaHVtYi5zZXRUYWcodGFzayk7CisgICAgICAgICAgICAgICAgUHJvdmlkZXJFeGVjdXRvci5mb3JBdXRob3JpdHkoZG9jQXV0aG9yaXR5KS5leGVjdXRlKHRhc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhY2hlSGl0KSB7CisgICAgICAgICAgICBpY29uTWltZS5zZXRJbWFnZURyYXdhYmxlKG51bGwpOworICAgICAgICAgICAgaWNvbk1pbWUuc2V0QWxwaGEoMGYpOworICAgICAgICAgICAgaWNvblRodW1iLnNldEFscGhhKDFmKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEFkZCBhIG1pbWUgaWNvbiBpZiB0aGUgdGh1bWJuYWlsIGlzIGJlaW5nIGxvYWRlZCBpbiB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgICAgIGljb25UaHVtYi5zZXRJbWFnZURyYXdhYmxlKG51bGwpOworICAgICAgICAgICAgaWNvbk1pbWUuc2V0SW1hZ2VEcmF3YWJsZShnZXREb2N1bWVudEljb24oCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LCBkb2NBdXRob3JpdHksIERvY3VtZW50c0NvbnRyYWN0LmdldERvY3VtZW50SWQodXJpKSwgbWltZVR5cGUsIGRvY0ljb24pKTsKKyAgICAgICAgICAgIGljb25NaW1lLnNldEFscGhhKDFmKTsKKyAgICAgICAgICAgIGljb25UaHVtYi5zZXRBbHBoYSgwZik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgbWltZSBpY29uIG9yIHBhY2thZ2UgaWNvbiBmb3IgYSBmaWxlLgorICAgICAqIEBwYXJhbSBjb250ZXh0CisgICAgICogQHBhcmFtIGF1dGhvcml0eSBUaGUgYXV0aG9yaXR5IHN0cmluZyBvZiB0aGUgZmlsZS4KKyAgICAgKiBAcGFyYW0gaWQgVGhlIGRvY3VtZW50IElEIG9mIHRoZSBmaWxlLgorICAgICAqIEBwYXJhbSBtaW1lVHlwZSBUaGUgbWltZSB0eXBlIG9mIHRoZSBmaWxlLgorICAgICAqIEBwYXJhbSBpY29uIFRoZSBjdXN0b20gaWNvbiAoaWYgYW55KSBvZiB0aGUgZmlsZS4KKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgcHVibGljIERyYXdhYmxlIGdldERvY3VtZW50SWNvbihDb250ZXh0IGNvbnRleHQsIFN0cmluZyBhdXRob3JpdHksIFN0cmluZyBpZCwKKyAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSwgaW50IGljb24pIHsKKyAgICAgICAgaWYgKGljb24gIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIEljb25VdGlscy5sb2FkUGFja2FnZUljb24oY29udGV4dCwgYXV0aG9yaXR5LCBpY29uKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBJY29uVXRpbHMubG9hZE1pbWVJY29uKGNvbnRleHQsIG1pbWVUeXBlLCBhdXRob3JpdHksIGlkLCBtTW9kZSk7CisgICAgICAgIH0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0xpc3REb2N1bWVudEhvbGRlci5qYXZhIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvTGlzdERvY3VtZW50SG9sZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyZTkxZAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L0xpc3REb2N1bWVudEhvbGRlci5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5kaXJsaXN0OworCitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLm1vZGVsLkRvY3VtZW50SW5mby5nZXRDdXJzb3JJbnQ7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLm1vZGVsLkRvY3VtZW50SW5mby5nZXRDdXJzb3JMb25nOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5tb2RlbC5Eb2N1bWVudEluZm8uZ2V0Q3Vyc29yU3RyaW5nOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlByZWNvbmRpdGlvbnMuY2hlY2tOb3ROdWxsOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CitpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuRG9jdW1lbnRzQ29udHJhY3Q7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5Eb2N1bWVudHNDb250cmFjdC5Eb2N1bWVudDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuZm9ybWF0LkZvcm1hdHRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuUm9vdEN1cnNvcldyYXBwZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuZG9jdW1lbnRzdWkuU2hhcmVkOworaW1wb3J0IGNvbS5hbmRyb2lkLmRvY3VtZW50c3VpLlN0YXRlOworCitmaW5hbCBjbGFzcyBMaXN0RG9jdW1lbnRIb2xkZXIgZXh0ZW5kcyBEb2N1bWVudEhvbGRlciB7CisgICAgZmluYWwgVGV4dFZpZXcgbVRpdGxlOworICAgIGZpbmFsIFRleHRWaWV3IG1TdW1tYXJ5OworICAgIGZpbmFsIFRleHRWaWV3IG1EYXRlOworICAgIGZpbmFsIFRleHRWaWV3IG1TaXplOworICAgIGZpbmFsIEltYWdlVmlldyBtSWNvbk1pbWU7CisgICAgZmluYWwgSW1hZ2VWaWV3IG1JY29uVGh1bWI7CisgICAgZmluYWwgSW1hZ2VWaWV3IG1JY29uMTsKKyAgICBmaW5hbCBJY29uSGVscGVyIG1JY29uSGVscGVyOworCisgICAgcHVibGljIExpc3REb2N1bWVudEhvbGRlcihDb250ZXh0IGNvbnRleHQsIFZpZXdHcm91cCBwYXJlbnQsIEljb25IZWxwZXIgaWNvbkhlbHBlcikgeworICAgICAgICBzdXBlcihjb250ZXh0LCBwYXJlbnQsIFIubGF5b3V0Lml0ZW1fZG9jX2xpc3QpOworCisgICAgICAgIG1UaXRsZSA9IChUZXh0VmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKGFuZHJvaWQuUi5pZC50aXRsZSk7CisgICAgICAgIG1TdW1tYXJ5ID0gKFRleHRWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoYW5kcm9pZC5SLmlkLnN1bW1hcnkpOworICAgICAgICBtRGF0ZSA9IChUZXh0VmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7CisgICAgICAgIG1TaXplID0gKFRleHRWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoUi5pZC5zaXplKTsKKyAgICAgICAgbUljb25NaW1lID0gKEltYWdlVmlldykgaXRlbVZpZXcuZmluZFZpZXdCeUlkKFIuaWQuaWNvbl9taW1lKTsKKyAgICAgICAgbUljb25UaHVtYiA9IChJbWFnZVZpZXcpIGl0ZW1WaWV3LmZpbmRWaWV3QnlJZChSLmlkLmljb25fdGh1bWIpOworICAgICAgICBtSWNvbjEgPSAoSW1hZ2VWaWV3KSBpdGVtVmlldy5maW5kVmlld0J5SWQoYW5kcm9pZC5SLmlkLmljb24xKTsKKworICAgICAgICBtSWNvbkhlbHBlciA9IGljb25IZWxwZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmluZCB0aGlzIHZpZXcgdG8gdGhlIGdpdmVuIGRvY3VtZW50IGZvciBkaXNwbGF5LgorICAgICAqIEBwYXJhbSBjdXJzb3IgUG9pbnRpbmcgdG8gdGhlIGl0ZW0gdG8gYmUgYm91bmQuCisgICAgICogQHBhcmFtIG1vZGVsSWQgVGhlIG1vZGVsIElEIG9mIHRoZSBpdGVtLgorICAgICAqIEBwYXJhbSBzdGF0ZSBDdXJyZW50IGRpc3BsYXkgc3RhdGUuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYmluZChDdXJzb3IgY3Vyc29yLCBTdHJpbmcgbW9kZWxJZCwgU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgdGhpcy5tb2RlbElkID0gbW9kZWxJZDsKKworICAgICAgICBjaGVja05vdE51bGwoY3Vyc29yLCAiQ3Vyc29yIGNhbm5vdCBiZSBudWxsLiIpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBkb2NBdXRob3JpdHkgPSBnZXRDdXJzb3JTdHJpbmcoY3Vyc29yLCBSb290Q3Vyc29yV3JhcHBlci5DT0xVTU5fQVVUSE9SSVRZKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGRvY0lkID0gZ2V0Q3Vyc29yU3RyaW5nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX0RPQ1VNRU5UX0lEKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGRvY01pbWVUeXBlID0gZ2V0Q3Vyc29yU3RyaW5nKGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX01JTUVfVFlQRSk7CisgICAgICAgIGZpbmFsIFN0cmluZyBkb2NEaXNwbGF5TmFtZSA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9ESVNQTEFZX05BTUUpOworICAgICAgICBmaW5hbCBsb25nIGRvY0xhc3RNb2RpZmllZCA9IGdldEN1cnNvckxvbmcoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fTEFTVF9NT0RJRklFRCk7CisgICAgICAgIGZpbmFsIGludCBkb2NJY29uID0gZ2V0Q3Vyc29ySW50KGN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX0lDT04pOworICAgICAgICBmaW5hbCBpbnQgZG9jRmxhZ3MgPSBnZXRDdXJzb3JJbnQoY3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fRkxBR1MpOworICAgICAgICBmaW5hbCBTdHJpbmcgZG9jU3VtbWFyeSA9IGdldEN1cnNvclN0cmluZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9TVU1NQVJZKTsKKyAgICAgICAgZmluYWwgbG9uZyBkb2NTaXplID0gZ2V0Q3Vyc29yTG9uZyhjdXJzb3IsIERvY3VtZW50LkNPTFVNTl9TSVpFKTsKKworICAgICAgICBtSWNvbkhlbHBlci5zdG9wTG9hZGluZyhtSWNvblRodW1iKTsKKworICAgICAgICBtSWNvbk1pbWUuYW5pbWF0ZSgpLmNhbmNlbCgpOworICAgICAgICBtSWNvblRodW1iLmFuaW1hdGUoKS5jYW5jZWwoKTsKKworICAgICAgICBmaW5hbCBVcmkgdXJpID0gRG9jdW1lbnRzQ29udHJhY3QuYnVpbGREb2N1bWVudFVyaShkb2NBdXRob3JpdHksIGRvY0lkKTsKKyAgICAgICAgbUljb25IZWxwZXIubG9hZFRodW1ibmFpbCh1cmksIGRvY01pbWVUeXBlLCBkb2NGbGFncywgZG9jSWNvbiwgbUljb25UaHVtYiwgbUljb25NaW1lKTsKKworICAgICAgICBtVGl0bGUuc2V0VGV4dChkb2NEaXNwbGF5TmFtZSk7CisgICAgICAgIG1UaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisKKyAgICAgICAgaWYgKGRvY1N1bW1hcnkgIT0gbnVsbCkgeworICAgICAgICAgICAgbVN1bW1hcnkuc2V0VGV4dChkb2NTdW1tYXJ5KTsKKyAgICAgICAgICAgIG1TdW1tYXJ5LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TdW1tYXJ5LnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRvY0xhc3RNb2RpZmllZCA9PSAtMSkgeworICAgICAgICAgICAgbURhdGUuc2V0VGV4dChudWxsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1EYXRlLnNldFRleHQoU2hhcmVkLmZvcm1hdFRpbWUobUNvbnRleHQsIGRvY0xhc3RNb2RpZmllZCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzdGF0ZS5zaG93U2l6ZSB8fCBEb2N1bWVudC5NSU1FX1RZUEVfRElSLmVxdWFscyhkb2NNaW1lVHlwZSkgfHwgZG9jU2l6ZSA9PSAtMSkgeworICAgICAgICAgICAgbVNpemUuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbVNpemUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVNpemUuc2V0VGV4dChGb3JtYXR0ZXIuZm9ybWF0RmlsZVNpemUobUNvbnRleHQsIGRvY1NpemUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKSB7CisgICAgICAgIHN1cGVyLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIGZpbmFsIGZsb2F0IGljb25BbHBoYSA9IGVuYWJsZWQgPyAxZiA6IDAuNWY7CisgICAgICAgIG1JY29uTWltZS5zZXRBbHBoYShpY29uQWxwaGEpOworICAgICAgICBtSWNvblRodW1iLnNldEFscGhhKGljb25BbHBoYSk7CisgICAgICAgIG1JY29uMS5zZXRBbHBoYShpY29uQWxwaGEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L01vZGVsLmphdmEgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9Nb2RlbC5qYXZhCmluZGV4IDBkNGQzN2UuLmJlYTM4YzYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L01vZGVsLmphdmEKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvTW9kZWwuamF2YQpAQCAtMTUyLDE3ICsxNTIsMTEgQEAKICAgICBwcml2YXRlIHZvaWQgdXBkYXRlTW9kZWxEYXRhKCkgewogICAgICAgICBpbnRbXSBwb3NpdGlvbnMgPSBuZXcgaW50W21DdXJzb3JDb3VudF07CiAgICAgICAgIG1JZHMuY2xlYXIoKTsKLSAgICAgICAgU3RyaW5nW10gc3RyaW5ncyA9IG51bGw7Ci0gICAgICAgIGxvbmdbXSBsb25ncyA9IG51bGw7CisgICAgICAgIFN0cmluZ1tdIHN0cmluZ1ZhbHVlcyA9IG5ldyBTdHJpbmdbbUN1cnNvckNvdW50XTsKKyAgICAgICAgbG9uZ1tdIGxvbmdWYWx1ZXMgPSBudWxsOwogCi0gICAgICAgIHN3aXRjaCAobVNvcnRPcmRlcikgewotICAgICAgICAgICAgY2FzZSBTT1JUX09SREVSX0RJU1BMQVlfTkFNRToKLSAgICAgICAgICAgICAgICBzdHJpbmdzID0gbmV3IFN0cmluZ1ttQ3Vyc29yQ291bnRdOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTT1JUX09SREVSX0xBU1RfTU9ESUZJRUQ6Ci0gICAgICAgICAgICBjYXNlIFNPUlRfT1JERVJfU0laRToKLSAgICAgICAgICAgICAgICBsb25ncyA9IG5ldyBsb25nW21DdXJzb3JDb3VudF07Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChtU29ydE9yZGVyID09IFNPUlRfT1JERVJfTEFTVF9NT0RJRklFRCB8fCBtU29ydE9yZGVyID09IFNPUlRfT1JERVJfU0laRSkgeworICAgICAgICAgICAgbG9uZ1ZhbHVlcyA9IG5ldyBsb25nW21DdXJzb3JDb3VudF07CiAgICAgICAgIH0KIAogICAgICAgICBtQ3Vyc29yLm1vdmVUb1Bvc2l0aW9uKC0xKTsKQEAgLTE3NywyNyArMTcxLDI5IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBkaXNwbGF5TmFtZSA9IGdldEN1cnNvclN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fRElTUExBWV9OQU1FKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKERvY3VtZW50Lk1JTUVfVFlQRV9ESVIuZXF1YWxzKG1pbWVUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nc1twb3NdID0gRG9jdW1lbnRJbmZvLkRJUl9QUkVGSVggKyBkaXNwbGF5TmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlc1twb3NdID0gRG9jdW1lbnRJbmZvLkRJUl9QUkVGSVggKyBkaXNwbGF5TmFtZTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NbcG9zXSA9IGRpc3BsYXlOYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVmFsdWVzW3Bvc10gPSBkaXNwbGF5TmFtZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFNPUlRfT1JERVJfTEFTVF9NT0RJRklFRDoKLSAgICAgICAgICAgICAgICAgICAgbG9uZ3NbcG9zXSA9IGdldEN1cnNvckxvbmcobUN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX0xBU1RfTU9ESUZJRUQpOworICAgICAgICAgICAgICAgICAgICBsb25nVmFsdWVzW3Bvc10gPSBnZXRDdXJzb3JMb25nKG1DdXJzb3IsIERvY3VtZW50LkNPTFVNTl9MQVNUX01PRElGSUVEKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nVmFsdWVzW3Bvc10gPSBnZXRDdXJzb3JTdHJpbmcobUN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX01JTUVfVFlQRSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgU09SVF9PUkRFUl9TSVpFOgotICAgICAgICAgICAgICAgICAgICBsb25nc1twb3NdID0gZ2V0Q3Vyc29yTG9uZyhtQ3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGxvbmdWYWx1ZXNbcG9zXSA9IGdldEN1cnNvckxvbmcobUN1cnNvciwgRG9jdW1lbnQuQ09MVU1OX1NJWkUpOworICAgICAgICAgICAgICAgICAgICBzdHJpbmdWYWx1ZXNbcG9zXSA9IGdldEN1cnNvclN0cmluZyhtQ3Vyc29yLCBEb2N1bWVudC5DT0xVTU5fTUlNRV9UWVBFKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG1Tb3J0T3JkZXIpIHsKICAgICAgICAgICAgIGNhc2UgU09SVF9PUkRFUl9ESVNQTEFZX05BTUU6Ci0gICAgICAgICAgICAgICAgYmluYXJ5U29ydChwb3NpdGlvbnMsIHN0cmluZ3MsIG1JZHMpOworICAgICAgICAgICAgICAgIGJpbmFyeVNvcnQoc3RyaW5nVmFsdWVzLCBwb3NpdGlvbnMsIG1JZHMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTT1JUX09SREVSX0xBU1RfTU9ESUZJRUQ6CiAgICAgICAgICAgICBjYXNlIFNPUlRfT1JERVJfU0laRToKLSAgICAgICAgICAgICAgICBiaW5hcnlTb3J0KHBvc2l0aW9ucywgbG9uZ3MsIG1JZHMpOworICAgICAgICAgICAgICAgIGJpbmFyeVNvcnQobG9uZ1ZhbHVlcywgc3RyaW5nVmFsdWVzLCBwb3NpdGlvbnMsIG1JZHMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIwOSwxMyArMjA1LDE5IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQm9ycm93ZWQgZnJvbSBUaW1Tb3J0LmJpbmFyeVNvcnQoKSwgYnV0IG1vZGlmaWVkIHRvIHNvcnQgdGhyZWUtY29sdW1uIGRhdGEgc2V0LgorICAgICAqIFNvcnRzIG1vZGVsIGRhdGEuIFRha2VzIHRocmVlIGNvbHVtbnMgb2YgaW5kZXgtY29ycmVzcG9uZGVkIGRhdGEuIFRoZSBmaXJzdCBjb2x1bW4gaXMgdGhlCisgICAgICogc29ydCBrZXkuIFJvd3MgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgYWxwaGFiZXRpY2FsIG9yZGVyIG9uIHRoZSBzb3J0IGtleS4gVGhpcyBjb2RlIGlzIGJhc2VkCisgICAgICogb24gVGltU29ydC5iaW5hcnlTb3J0KCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc29ydEtleSBEYXRhIGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgYWxwaGFiZXRpY2FsIG9yZGVyLgorICAgICAqIEBwYXJhbSBwb3NpdGlvbnMgQ3Vyc29yIHBvc2l0aW9ucyB0byBiZSBzb3J0ZWQuCisgICAgICogQHBhcmFtIGlkcyBNb2RlbCBJRHMgdG8gYmUgc29ydGVkLgogICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYmluYXJ5U29ydChpbnRbXSBwb3NpdGlvbnMsIFN0cmluZ1tdIHN0cmluZ3MsIExpc3Q8U3RyaW5nPiBpZHMpIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJpbmFyeVNvcnQoU3RyaW5nW10gc29ydEtleSwgaW50W10gcG9zaXRpb25zLCBMaXN0PFN0cmluZz4gaWRzKSB7CiAgICAgICAgIGZpbmFsIGludCBjb3VudCA9IHBvc2l0aW9ucy5sZW5ndGg7CiAgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gMTsgc3RhcnQgPCBjb3VudDsgc3RhcnQrKykgewogICAgICAgICAgICAgZmluYWwgaW50IHBpdm90UG9zaXRpb24gPSBwb3NpdGlvbnNbc3RhcnRdOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBpdm90VmFsdWUgPSBzdHJpbmdzW3N0YXJ0XTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwaXZvdFZhbHVlID0gc29ydEtleVtzdGFydF07CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcGl2b3RJZCA9IGlkcy5nZXQoc3RhcnQpOwogCiAgICAgICAgICAgICBpbnQgbGVmdCA9IDA7CkBAIC0yMjUsNyArMjI3LDcgQEAKICAgICAgICAgICAgICAgICBpbnQgbWlkID0gKGxlZnQgKyByaWdodCkgPj4+IDE7CiAKICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbGhzID0gcGl2b3RWYWx1ZTsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmhzID0gc3RyaW5nc1ttaWRdOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyByaHMgPSBzb3J0S2V5W21pZF07CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IGNvbXBhcmUgPSBEb2N1bWVudEluZm8uY29tcGFyZVRvSWdub3JlQ2FzZU51bGxhYmxlKGxocywgcmhzKTsKIAogICAgICAgICAgICAgICAgIGlmIChjb21wYXJlIDwgMCkgewpAQCAtMjM5LDQ4ICsyNDEsNjggQEAKICAgICAgICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW2xlZnQgKyAyXSA9IHBvc2l0aW9uc1tsZWZ0ICsgMV07Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ3NbbGVmdCArIDJdID0gc3RyaW5nc1tsZWZ0ICsgMV07CisgICAgICAgICAgICAgICAgICAgIHNvcnRLZXlbbGVmdCArIDJdID0gc29ydEtleVtsZWZ0ICsgMV07CiAgICAgICAgICAgICAgICAgICAgIGlkcy5zZXQobGVmdCArIDIsIGlkcy5nZXQobGVmdCArIDEpKTsKICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tsZWZ0ICsgMV0gPSBwb3NpdGlvbnNbbGVmdF07Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ3NbbGVmdCArIDFdID0gc3RyaW5nc1tsZWZ0XTsKKyAgICAgICAgICAgICAgICAgICAgc29ydEtleVtsZWZ0ICsgMV0gPSBzb3J0S2V5W2xlZnRdOwogICAgICAgICAgICAgICAgICAgICBpZHMuc2V0KGxlZnQgKyAxLCBpZHMuZ2V0KGxlZnQpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShwb3NpdGlvbnMsIGxlZnQsIHBvc2l0aW9ucywgbGVmdCArIDEsIG4pOwotICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHN0cmluZ3MsIGxlZnQsIHN0cmluZ3MsIGxlZnQgKyAxLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzb3J0S2V5LCBsZWZ0LCBzb3J0S2V5LCBsZWZ0ICsgMSwgbik7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBuOyBpID49IDE7IC0taSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWRzLnNldChsZWZ0ICsgaSwgaWRzLmdldChsZWZ0ICsgaSAtIDEpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwb3NpdGlvbnNbbGVmdF0gPSBwaXZvdFBvc2l0aW9uOwotICAgICAgICAgICAgc3RyaW5nc1tsZWZ0XSA9IHBpdm90VmFsdWU7CisgICAgICAgICAgICBzb3J0S2V5W2xlZnRdID0gcGl2b3RWYWx1ZTsKICAgICAgICAgICAgIGlkcy5zZXQobGVmdCwgcGl2b3RJZCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvKioKLSAgICAgKiBCb3Jyb3dlZCBmcm9tIFRpbVNvcnQuYmluYXJ5U29ydCgpLCBidXQgbW9kaWZpZWQgdG8gc29ydCB0aHJlZS1jb2x1bW4gZGF0YSBzZXQuCisgICAgICogU29ydHMgbW9kZWwgZGF0YS4gVGFrZXMgZm91ciBjb2x1bW5zIG9mIGluZGV4LWNvcnJlc3BvbmRlZCBkYXRhLiBUaGUgZmlyc3QgY29sdW1uIGlzIHRoZSBzb3J0CisgICAgICoga2V5LCBhbmQgdGhlIHNlY29uZCBpcyBhbiBhcnJheSBvZiBtaW1lIHR5cGVzLiBUaGUgcm93cyBhcmUgZmlyc3QgYnVja2V0ZWQgYnkgbWltZSB0eXBlCisgICAgICogKGRpcmVjdG9yaWVzIHZzIGRvY3VtZW50cykgYW5kIHRoZW4gZWFjaCBidWNrZXQgaXMgc29ydGVkIGluZGVwZW5kZW50bHkgaW4gZGVzY2VuZGluZworICAgICAqIG51bWVyaWNhbCBvcmRlciBvbiB0aGUgc29ydCBrZXkuIFRoaXMgY29kZSBpcyBiYXNlZCBvbiBUaW1Tb3J0LmJpbmFyeVNvcnQoKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzb3J0S2V5IERhdGEgaXMgc29ydGVkIGluIGRlc2NlbmRpbmcgbnVtZXJpY2FsIG9yZGVyLgorICAgICAqIEBwYXJhbSBtaW1lVHlwZXMgQ29ycmVzcG9uZGluZyBtaW1lIHR5cGVzLiBEaXJlY3RvcmllcyB3aWxsIGJlIHNvcnRlZCBhaGVhZCBvZiBkb2N1bWVudHMuCisgICAgICogQHBhcmFtIHBvc2l0aW9ucyBDdXJzb3IgcG9zaXRpb25zIHRvIGJlIHNvcnRlZC4KKyAgICAgKiBAcGFyYW0gaWRzIE1vZGVsIElEcyB0byBiZSBzb3J0ZWQuCiAgICAgICovCi0gICBwcml2YXRlIHN0YXRpYyB2b2lkIGJpbmFyeVNvcnQoaW50W10gcG9zaXRpb25zLCBsb25nW10gbG9uZ3MsIExpc3Q8U3RyaW5nPiBpZHMpIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJpbmFyeVNvcnQoCisgICAgICAgICAgICBsb25nW10gc29ydEtleSwgU3RyaW5nW10gbWltZVR5cGVzLCBpbnRbXSBwb3NpdGlvbnMsIExpc3Q8U3RyaW5nPiBpZHMpIHsKICAgICAgICAgZmluYWwgaW50IGNvdW50ID0gcG9zaXRpb25zLmxlbmd0aDsKICAgICAgICAgZm9yIChpbnQgc3RhcnQgPSAxOyBzdGFydCA8IGNvdW50OyBzdGFydCsrKSB7CiAgICAgICAgICAgICBmaW5hbCBpbnQgcGl2b3RQb3NpdGlvbiA9IHBvc2l0aW9uc1tzdGFydF07Ci0gICAgICAgICAgICBmaW5hbCBsb25nIHBpdm90VmFsdWUgPSBsb25nc1tzdGFydF07CisgICAgICAgICAgICBmaW5hbCBsb25nIHBpdm90VmFsdWUgPSBzb3J0S2V5W3N0YXJ0XTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwaXZvdE1pbWUgPSBtaW1lVHlwZXNbc3RhcnRdOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBpdm90SWQgPSBpZHMuZ2V0KHN0YXJ0KTsKIAogICAgICAgICAgICAgaW50IGxlZnQgPSAwOwogICAgICAgICAgICAgaW50IHJpZ2h0ID0gc3RhcnQ7CiAKICAgICAgICAgICAgIHdoaWxlIChsZWZ0IDwgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpbnQgbWlkID0gKGxlZnQgKyByaWdodCkgPj4+IDE7CisgICAgICAgICAgICAgICAgaW50IG1pZCA9ICgobGVmdCArIHJpZ2h0KSA+Pj4gMSk7CiAKLSAgICAgICAgICAgICAgICBmaW5hbCBsb25nIGxocyA9IHBpdm90VmFsdWU7Ci0gICAgICAgICAgICAgICAgZmluYWwgbG9uZyByaHMgPSBsb25nc1ttaWRdOwotICAgICAgICAgICAgICAgIC8vIFNvcnQgaW4gZGVzY2VuZGluZyBudW1lcmljYWwgb3JkZXIuIFRoaXMgbWF0Y2hlcyBsZWdhY3kgYmVoYXZpb3VyLCB3aGljaCB5aWVsZHMKLSAgICAgICAgICAgICAgICAvLyBsYXJnZXN0IG9yIG1vc3QgcmVjZW50IGl0ZW1zIG9uIHRvcC4KLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgY29tcGFyZSA9IC1Mb25nLmNvbXBhcmUobGhzLCByaHMpOworICAgICAgICAgICAgICAgIC8vIEZpcnN0IGJ1Y2tldCBieSBtaW1lIHR5cGUuICBEaXJlY3RvcmllcyBhbHdheXMgZ28gaW4gZnJvbnQuCisgICAgICAgICAgICAgICAgaW50IGNvbXBhcmUgPSAwOworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbGhzSXNEaXIgPSBEb2N1bWVudC5NSU1FX1RZUEVfRElSLmVxdWFscyhwaXZvdE1pbWUpOworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcmhzSXNEaXIgPSBEb2N1bWVudC5NSU1FX1RZUEVfRElSLmVxdWFscyhtaW1lVHlwZXNbbWlkXSk7CisgICAgICAgICAgICAgICAgaWYgKGxoc0lzRGlyICYmICFyaHNJc0RpcikgeworICAgICAgICAgICAgICAgICAgICBjb21wYXJlID0gLTE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbGhzSXNEaXIgJiYgcmhzSXNEaXIpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGFyZSA9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgbG9uZyBsaHMgPSBwaXZvdFZhbHVlOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBsb25nIHJocyA9IHNvcnRLZXlbbWlkXTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU29ydCBpbiBkZXNjZW5kaW5nIG51bWVyaWNhbCBvcmRlci4gVGhpcyBtYXRjaGVzIGxlZ2FjeSBiZWhhdmlvdXIsIHdoaWNoIHlpZWxkcworICAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXN0IG9yIG1vc3QgcmVjZW50IGl0ZW1zIG9uIHRvcC4KKyAgICAgICAgICAgICAgICAgICAgY29tcGFyZSA9IC1Mb25nLmNvbXBhcmUobGhzLCByaHMpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChjb21wYXJlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICByaWdodCA9IG1pZDsKQEAgLTI5MywyMyArMzE1LDI3IEBACiAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tsZWZ0ICsgMl0gPSBwb3NpdGlvbnNbbGVmdCArIDFdOwotICAgICAgICAgICAgICAgICAgICBsb25nc1tsZWZ0ICsgMl0gPSBsb25nc1tsZWZ0ICsgMV07CisgICAgICAgICAgICAgICAgICAgIHNvcnRLZXlbbGVmdCArIDJdID0gc29ydEtleVtsZWZ0ICsgMV07CisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlc1tsZWZ0ICsgMl0gPSBtaW1lVHlwZXNbbGVmdCArIDFdOwogICAgICAgICAgICAgICAgICAgICBpZHMuc2V0KGxlZnQgKyAyLCBpZHMuZ2V0KGxlZnQgKyAxKSk7CiAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbbGVmdCArIDFdID0gcG9zaXRpb25zW2xlZnRdOwotICAgICAgICAgICAgICAgICAgICBsb25nc1tsZWZ0ICsgMV0gPSBsb25nc1tsZWZ0XTsKKyAgICAgICAgICAgICAgICAgICAgc29ydEtleVtsZWZ0ICsgMV0gPSBzb3J0S2V5W2xlZnRdOworICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZXNbbGVmdCArIDFdID0gbWltZVR5cGVzW2xlZnRdOwogICAgICAgICAgICAgICAgICAgICBpZHMuc2V0KGxlZnQgKyAxLCBpZHMuZ2V0KGxlZnQpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShwb3NpdGlvbnMsIGxlZnQsIHBvc2l0aW9ucywgbGVmdCArIDEsIG4pOwotICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGxvbmdzLCBsZWZ0LCBsb25ncywgbGVmdCArIDEsIG4pOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNvcnRLZXksIGxlZnQsIHNvcnRLZXksIGxlZnQgKyAxLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShtaW1lVHlwZXMsIGxlZnQsIG1pbWVUeXBlcywgbGVmdCArIDEsIG4pOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbjsgaSA+PSAxOyAtLWkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlkcy5zZXQobGVmdCArIGksIGlkcy5nZXQobGVmdCArIGkgLSAxKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcG9zaXRpb25zW2xlZnRdID0gcGl2b3RQb3NpdGlvbjsKLSAgICAgICAgICAgIGxvbmdzW2xlZnRdID0gcGl2b3RWYWx1ZTsKKyAgICAgICAgICAgIHNvcnRLZXlbbGVmdF0gPSBwaXZvdFZhbHVlOworICAgICAgICAgICAgbWltZVR5cGVzW2xlZnRdID0gcGl2b3RNaW1lOwogICAgICAgICAgICAgaWRzLnNldChsZWZ0LCBwaXZvdElkKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L011bHRpU2VsZWN0TWFuYWdlci5qYXZhIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvTXVsdGlTZWxlY3RNYW5hZ2VyLmphdmEKaW5kZXggNDMwMjNlMS4uZTQ3YWY2NyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvTXVsdGlTZWxlY3RNYW5hZ2VyLmphdmEKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvTXVsdGlTZWxlY3RNYW5hZ2VyLmphdmEKQEAgLTM4Myw2ICszODMsMTAgQEAKICAgICAgKiBAcGFyYW0gcG9zaXRpb24KICAgICAgKi8KICAgICB2b2lkIHNldFNlbGVjdGlvblJhbmdlQmVnaW4oaW50IHBvc2l0aW9uKSB7CisgICAgICAgIGlmIChwb3NpdGlvbiA9PSBSZWN5Y2xlclZpZXcuTk9fUE9TSVRJT04pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChtU2VsZWN0aW9uLmNvbnRhaW5zKG1FbnZpcm9ubWVudC5nZXRNb2RlbElkRnJvbUFkYXB0ZXJQb3NpdGlvbihwb3NpdGlvbikpKSB7CiAgICAgICAgICAgICBtUmFuZ2VyID0gbmV3IFJhbmdlKHBvc2l0aW9uKTsKICAgICAgICAgfQpAQCAtNDYyLDcgKzQ2Niw3IEBACiAgICAgICAgIGZvciAoaW50IGkgPSBsYXN0TGlzdGVuZXI7IGkgPiAtMTsgaS0tKSB7CiAgICAgICAgICAgICBtQ2FsbGJhY2tzLmdldChpKS5vbkl0ZW1TdGF0ZUNoYW5nZWQoaWQsIHNlbGVjdGVkKTsKICAgICAgICAgfQotICAgICAgICBtRW52aXJvbm1lbnQubm90aWZ5SXRlbUNoYW5nZWQoaWQsIFNFTEVDVElPTl9DSEFOR0VEX01BUktFUik7CisgICAgICAgIG1FbnZpcm9ubWVudC5ub3RpZnlJdGVtQ2hhbmdlZChpZCk7CiAgICAgfQogCiAgICAgLyoqCkBAIC04MDMsNyArODA3LDcgQEAKICAgICAgICAgU3RyaW5nIGdldE1vZGVsSWRGcm9tQWRhcHRlclBvc2l0aW9uKGludCBwb3NpdGlvbik7CiAgICAgICAgIGludCBnZXRJdGVtQ291bnQoKTsKICAgICAgICAgTGlzdDxTdHJpbmc+IGdldE1vZGVsSWRzKCk7Ci0gICAgICAgIHZvaWQgbm90aWZ5SXRlbUNoYW5nZWQoU3RyaW5nIGlkLCBTdHJpbmcgc2VsZWN0aW9uQ2hhbmdlZE1hcmtlcik7CisgICAgICAgIHZvaWQgbm90aWZ5SXRlbUNoYW5nZWQoU3RyaW5nIGlkKTsKICAgICAgICAgdm9pZCByZWdpc3RlckRhdGFPYnNlcnZlcihSZWN5Y2xlclZpZXcuQWRhcHRlckRhdGFPYnNlcnZlciBvYnNlcnZlcik7CiAgICAgfQogCkBAIC05NTksMjEgKzk2Myw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5SXRlbUNoYW5nZWQoU3RyaW5nIGlkLCBTdHJpbmcgc2VsZWN0aW9uQ2hhbmdlZE1hcmtlcikgewotICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgaWYgd2UgdHVybmVkIG9uIFJlY3ljbGVyVmlldyBzdGFibGUgSURzLgotICAgICAgICAgICAgaW50IGNvdW50ID0gbUFkYXB0ZXIuZ2V0SXRlbUNvdW50KCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICBSZWN5Y2xlclZpZXcuVmlld0hvbGRlciB2aCA9IG1WaWV3LmZpbmRWaWV3SG9sZGVyRm9yQWRhcHRlclBvc2l0aW9uKGkpOwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWV3IGlzbid0IGJvdW5kLCB0aGlzIGNvZGUgbmV2ZXIgcnVucyBiZWNhdXNlIHRoZSB2aWV3aG9sZGVyIHdvbid0IGJlCi0gICAgICAgICAgICAgICAgLy8gZm91bmQuIFRoYXQncyBmaW5lLCB0aG91Z2gsIGJlY2F1c2UgdGhlIG9ubHkgdGltZSBhIHZpZXcgbmVlZHMgdG8gYmUgdXBkYXRlZCBpcwotICAgICAgICAgICAgICAgIC8vIHdoZW4gaXQncyBib3VuZC4KLSAgICAgICAgICAgICAgICBpZiAodmggaW5zdGFuY2VvZiBEaXJlY3RvcnlGcmFnbWVudC5Eb2N1bWVudEhvbGRlcikgewotICAgICAgICAgICAgICAgICAgICBpZiAoKChEaXJlY3RvcnlGcmFnbWVudC5Eb2N1bWVudEhvbGRlcikgdmgpLm1vZGVsSWQuZXF1YWxzKGlkKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbUFkYXB0ZXIubm90aWZ5SXRlbUNoYW5nZWQoaSwgU0VMRUNUSU9OX0NIQU5HRURfTUFSS0VSKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJdGVtQ2hhbmdlZChTdHJpbmcgaWQpIHsKKyAgICAgICAgICAgIG1BZGFwdGVyLm5vdGlmeUl0ZW1DaGFuZ2VkKGlkLCBTRUxFQ1RJT05fQ0hBTkdFRF9NQVJLRVIpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCkBAIC0xMTczLDEzICsxMTY0LDE1IEBACiAgICAgICAgICAgICBtU2VsZWN0aW9uLmFwcGx5UHJvdmlzaW9uYWxTZWxlY3Rpb24oKTsKICAgICAgICAgICAgIG1Nb2RlbC5lbmRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgIGludCBmaXJzdFNlbGVjdGVkID0gbU1vZGVsLmdldFBvc2l0aW9uTmVhcmVzdE9yaWdpbigpOwotICAgICAgICAgICAgaWYgKCFtU2VsZWN0aW9uLmNvbnRhaW5zKG1FbnZpcm9ubWVudC5nZXRNb2RlbElkRnJvbUFkYXB0ZXJQb3NpdGlvbihmaXJzdFNlbGVjdGVkKSkpIHsKLSAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJGaXJzdCBzZWxlY3RlZCBieSBiYW5kIGlzIE5PVCBpbiBzZWxlY3Rpb24hIik7Ci0gICAgICAgICAgICAgICAgLy8gU2FkbHkgdGhpcyBpcyByZWFsbHkgaGFwcGVuaW5nLiBOZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLgotICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdFNlbGVjdGVkICE9IE5PVF9TRVQpIHsKLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBmaXJzdFNlbGVjdGVkIHNob3VsZCByZWFsbHkgYmUgbGFzdFNlbGVjdGVkLCB3ZSB3YW50IHRvIGFuY2hvciB0aGUgaXRlbQotICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBtb3VzZS11cCBvY2N1cnJlZC4KLSAgICAgICAgICAgICAgICBzZXRTZWxlY3Rpb25SYW5nZUJlZ2luKGZpcnN0U2VsZWN0ZWQpOworICAgICAgICAgICAgaWYgKGZpcnN0U2VsZWN0ZWQgIT0gTk9UX1NFVCkgeworICAgICAgICAgICAgICAgIGlmIChtU2VsZWN0aW9uLmNvbnRhaW5zKG1FbnZpcm9ubWVudC5nZXRNb2RlbElkRnJvbUFkYXB0ZXJQb3NpdGlvbihmaXJzdFNlbGVjdGVkKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogZmlyc3RTZWxlY3RlZCBzaG91bGQgcmVhbGx5IGJlIGxhc3RTZWxlY3RlZCwgd2Ugd2FudCB0byBhbmNob3IgdGhlIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgdGhlIG1vdXNlLXVwIG9jY3VycmVkLgorICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3Rpb25SYW5nZUJlZ2luKGZpcnN0U2VsZWN0ZWQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IENoZWNrIGlmIHRoaXMgaXMgcmVhbGx5IGhhcHBlbmluZy4KKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiRmlyc3Qgc2VsZWN0ZWQgYnkgYmFuZCBpcyBOT1QgaW4gc2VsZWN0aW9uISIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbU1vZGVsID0gbnVsbDsKQEAgLTE1NzEsMTggKzE1NjQsMjIgQEAKICAgICAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IGNvbHVtblN0YXJ0SW5kZXg7IGNvbHVtbiA8PSBjb2x1bW5FbmRJbmRleDsgY29sdW1uKyspIHsKICAgICAgICAgICAgICAgICBTcGFyc2VJbnRBcnJheSBpdGVtcyA9IG1Db2x1bW5zLmdldChtQ29sdW1uQm91bmRzLmdldChjb2x1bW4pLmxvd2VyTGltaXQpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IHJvd1N0YXJ0SW5kZXg7IHJvdyA8PSByb3dFbmRJbmRleDsgcm93KyspIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gaXRlbXMuZ2V0KGl0ZW1zLmtleUF0KHJvdykpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaWQgPSBtSGVscGVyLmdldE1vZGVsSWRGcm9tQWRhcHRlclBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBhZGFwdGVyIGluc2VydHMgaXRlbXMgZm9yIFVJIGxheW91dCBwdXJwb3NlcyB0aGF0IGFyZW4ndCBhc3NvY2lhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIGZpbGVzLiAgVGhvc2Ugd2lsbCBoYXZlIGEgbnVsbCBtb2RlbCBJRC4gIERvbid0IHNlbGVjdCB0aGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgbVNlbGVjdGlvbi5hZGQoaWQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc1Bvc3NpYmxlUG9zaXRpb25OZWFyZXN0T3JpZ2luKGNvbHVtbiwgY29sdW1uU3RhcnRJbmRleCwgY29sdW1uRW5kSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93LCByb3dTdGFydEluZGV4LCByb3dFbmRJbmRleCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIHBvc2l0aW9uIG5lYXJlc3QgdGhlIG9yaWdpbiwgcmVjb3JkIGl0IG5vdyBzbyB0aGF0IGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gYmUgcmV0dXJuZWQgYnkgZW5kU2VsZWN0aW9uKCkgbGF0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBtUG9zaXRpb25OZWFyZXN0T3JpZ2luID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBmb3IgU3BhcnNlSW50QXJyYXkuZ2V0IGlzIDAsIHdoaWNoIGlzIGEgdmFsaWQKKyAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24uIFVzZSBhIHNlbnRyeSB2YWx1ZSB0byBwcmV2ZW50IGVycm9uZW91c2x5IHNlbGVjdGluZyBpdGVtIDAuCisgICAgICAgICAgICAgICAgICAgIGludCBwb3NpdGlvbiA9IGl0ZW1zLmdldChpdGVtcy5rZXlBdChyb3cpLCBOT1RfU0VUKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IE5PVF9TRVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpZCA9IG1IZWxwZXIuZ2V0TW9kZWxJZEZyb21BZGFwdGVyUG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWRhcHRlciBpbnNlcnRzIGl0ZW1zIGZvciBVSSBsYXlvdXQgcHVycG9zZXMgdGhhdCBhcmVuJ3QgYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggZmlsZXMuICBUaG9zZSB3aWxsIGhhdmUgYSBudWxsIG1vZGVsIElELiAgRG9uJ3Qgc2VsZWN0IHRoZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlbGVjdGlvbi5hZGQoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUG9zc2libGVQb3NpdGlvbk5lYXJlc3RPcmlnaW4oY29sdW1uLCBjb2x1bW5TdGFydEluZGV4LCBjb2x1bW5FbmRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93LCByb3dTdGFydEluZGV4LCByb3dFbmRJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBwb3NpdGlvbiBuZWFyZXN0IHRoZSBvcmlnaW4sIHJlY29yZCBpdCBub3cgc28gdGhhdCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBiZSByZXR1cm5lZCBieSBlbmRTZWxlY3Rpb24oKSBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUG9zaXRpb25OZWFyZXN0T3JpZ2luID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9Eb2N1bWVudHNVSS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9Nb2RlbFRlc3QuamF2YSBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L01vZGVsVGVzdC5qYXZhCmluZGV4IGEyYjZhZDUuLjEyMWViNDEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L01vZGVsVGVzdC5qYXZhCisrKyBiL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L01vZGVsVGVzdC5qYXZhCkBAIC01NCw3ICs1NCw4IEBACiAgICAgICAgIERvY3VtZW50LkNPTFVNTl9ET0NVTUVOVF9JRCwKICAgICAgICAgRG9jdW1lbnQuQ09MVU1OX0ZMQUdTLAogICAgICAgICBEb2N1bWVudC5DT0xVTU5fRElTUExBWV9OQU1FLAotICAgICAgICBEb2N1bWVudC5DT0xVTU5fU0laRQorICAgICAgICBEb2N1bWVudC5DT0xVTU5fU0laRSwKKyAgICAgICAgRG9jdW1lbnQuQ09MVU1OX01JTUVfVFlQRQogICAgIH07CiAgICAgcHJpdmF0ZSBzdGF0aWMgQ3Vyc29yIGN1cnNvcjsKIApAQCAtMTk3LDI3ICsxOTgsNzQgQEAKIAogICAgIC8vIFRlc3RzIHNvcnRpbmcgYnkgaXRlbSBzaXplLgogICAgIHB1YmxpYyB2b2lkIHRlc3RTb3J0X3NpemVzKCkgewotICAgICAgICBCaXRTZXQgc2VlbiA9IG5ldyBCaXRTZXQoSVRFTV9DT1VOVCk7Ci0gICAgICAgIExpc3Q8SW50ZWdlcj4gc2l6ZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKLQogICAgICAgICBEaXJlY3RvcnlSZXN1bHQgciA9IG5ldyBEaXJlY3RvcnlSZXN1bHQoKTsKICAgICAgICAgci5jdXJzb3IgPSBjdXJzb3I7CiAgICAgICAgIHIuc29ydE9yZGVyID0gU3RhdGUuU09SVF9PUkRFUl9TSVpFOwogICAgICAgICBtb2RlbC51cGRhdGUocik7CiAKKyAgICAgICAgQml0U2V0IHNlZW4gPSBuZXcgQml0U2V0KElURU1fQ09VTlQpOworICAgICAgICBpbnQgcHJldmlvdXNTaXplID0gSW50ZWdlci5NQVhfVkFMVUU7CiAgICAgICAgIGZvciAoU3RyaW5nIGlkOiBtb2RlbC5nZXRNb2RlbElkcygpKSB7CiAgICAgICAgICAgICBDdXJzb3IgYyA9IG1vZGVsLmdldEl0ZW0oaWQpOwogICAgICAgICAgICAgc2Vlbi5zZXQoYy5nZXRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIHNpemVzLmFkZChEb2N1bWVudEluZm8uZ2V0Q3Vyc29ySW50KGMsIERvY3VtZW50LkNPTFVNTl9TSVpFKSk7CisgICAgICAgICAgICAvLyBDaGVjayBzb3J0IG9yZGVyIC0gZGVzY2VuZGluZyBudW1lcmljYWwKKyAgICAgICAgICAgIGludCBzaXplID0gRG9jdW1lbnRJbmZvLmdldEN1cnNvckludChjLCBEb2N1bWVudC5DT0xVTU5fU0laRSk7CisgICAgICAgICAgICBhc3NlcnRUcnVlKHByZXZpb3VzU2l6ZSA+PSBzaXplKTsKKyAgICAgICAgICAgIHByZXZpb3VzU2l6ZSA9IHNpemU7CiAgICAgICAgIH0KLQorICAgICAgICAvLyBDaGVjayB0aGF0IGFsbCBpdGVtcyB3ZXJlIGFjY291bnRlZCBmb3IuCiAgICAgICAgIGFzc2VydEVxdWFscyhJVEVNX0NPVU5ULCBzZWVuLmNhcmRpbmFsaXR5KCkpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVzLnNpemUoKS0xOyArK2kpIHsKLSAgICAgICAgICAgIC8vIE5vdGU6IHNpemVzIGFyZSBzb3J0ZWQgZGVzY2VuZGluZy4KLSAgICAgICAgICAgIGFzc2VydFRydWUoc2l6ZXMuZ2V0KGkpID49IHNpemVzLmdldChpKzEpKTsKLSAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFRlc3RzIHRoYXQgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIGFyZSBwcm9wZXJseSBidWNrZXRlZCB3aGVuIHNvcnRpbmcgYnkgc2l6ZQorICAgIHB1YmxpYyB2b2lkIHRlc3RTb3J0X3NpemVzV2l0aEJ1Y2tldGluZygpIHsKKyAgICAgICAgTWF0cml4Q3Vyc29yIGMgPSBuZXcgTWF0cml4Q3Vyc29yKENPTFVNTlMpOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSVRFTV9DT1VOVDsgKytpKSB7CisgICAgICAgICAgICBNYXRyaXhDdXJzb3IuUm93QnVpbGRlciByb3cgPSBjLm5ld1JvdygpOworICAgICAgICAgICAgcm93LmFkZChSb290Q3Vyc29yV3JhcHBlci5DT0xVTU5fQVVUSE9SSVRZLCBBVVRIT1JJVFkpOworICAgICAgICAgICAgcm93LmFkZChEb2N1bWVudC5DT0xVTU5fRE9DVU1FTlRfSUQsIEludGVnZXIudG9TdHJpbmcoaSkpOworICAgICAgICAgICAgcm93LmFkZChEb2N1bWVudC5DT0xVTU5fU0laRSwgaSk7CisgICAgICAgICAgICAvLyBJbnRlcmxlYXZlIGRpcmVjdG9yaWVzIGFuZCB0ZXh0IGZpbGVzLgorICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0oaSAlIDIgPT0gMCkgPyBEb2N1bWVudC5NSU1FX1RZUEVfRElSIDogInRleHQvKiI7CisgICAgICAgICAgICByb3cuYWRkKERvY3VtZW50LkNPTFVNTl9NSU1FX1RZUEUsIG1pbWVUeXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIERpcmVjdG9yeVJlc3VsdCByID0gbmV3IERpcmVjdG9yeVJlc3VsdCgpOworICAgICAgICByLmN1cnNvciA9IGM7CisgICAgICAgIHIuc29ydE9yZGVyID0gU3RhdGUuU09SVF9PUkRFUl9TSVpFOworICAgICAgICBtb2RlbC51cGRhdGUocik7CisKKyAgICAgICAgYm9vbGVhbiBzZWVuQWxsRGlycyA9IGZhbHNlOworICAgICAgICBpbnQgcHJldmlvdXNTaXplID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgIEJpdFNldCBzZWVuID0gbmV3IEJpdFNldChJVEVNX0NPVU5UKTsKKyAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGl0ZW1zIGluIHNvcnQgb3JkZXIuIE9uY2Ugd2UndmUgZW5jb3VudGVyZWQgYSBkb2N1bWVudCAoaS5lLiBub3QgYQorICAgICAgICAvLyBkaXJlY3RvcnkpLCBhbGwgc3Vic2VxdWVudCBpdGVtcyBtdXN0IGFsc28gYmUgZG9jdW1lbnRzLiBUaGF0IGlzLCBhbGwgZGlyZWN0b3JpZXMgYXJlCisgICAgICAgIC8vIGJ1Y2tldGVkIGF0IHRoZSBmcm9udCBvZiB0aGUgbGlzdCwgc29ydGVkIGJ5IHNpemUsIGZvbGxvd2VkIGJ5IGRvY3VtZW50cywgc29ydGVkIGJ5IHNpemUuCisgICAgICAgIGZvciAoU3RyaW5nIGlkOiBtb2RlbC5nZXRNb2RlbElkcygpKSB7CisgICAgICAgICAgICBDdXJzb3IgY091dCA9IG1vZGVsLmdldEl0ZW0oaWQpOworICAgICAgICAgICAgc2Vlbi5zZXQoY091dC5nZXRQb3NpdGlvbigpKTsKKworICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gRG9jdW1lbnRJbmZvLmdldEN1cnNvclN0cmluZyhjT3V0LCBEb2N1bWVudC5DT0xVTU5fTUlNRV9UWVBFKTsKKyAgICAgICAgICAgIGlmIChzZWVuQWxsRGlycykgeworICAgICAgICAgICAgICAgIGFzc2VydEZhbHNlKERvY3VtZW50Lk1JTUVfVFlQRV9ESVIuZXF1YWxzKG1pbWVUeXBlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghRG9jdW1lbnQuTUlNRV9UWVBFX0RJUi5lcXVhbHMobWltZVR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIHNlZW5BbGxEaXJzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHByZXZpb3VzIHNpemUgc2VlbiwgYmVjYXVzZSBkb2N1bWVudHMgYXJlIGJ1Y2tldGVkIHNlcGFyYXRlbHkgYnkKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHNvcnQuCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2l6ZSA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIENoZWNrIHNvcnQgb3JkZXIgLSBkZXNjZW5kaW5nIG51bWVyaWNhbAorICAgICAgICAgICAgaW50IHNpemUgPSBEb2N1bWVudEluZm8uZ2V0Q3Vyc29ySW50KGMsIERvY3VtZW50LkNPTFVNTl9TSVpFKTsKKyAgICAgICAgICAgIGFzc2VydFRydWUocHJldmlvdXNTaXplID49IHNpemUpOworICAgICAgICAgICAgcHJldmlvdXNTaXplID0gc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIHRoYXQgYWxsIGl0ZW1zIHdlcmUgYWNjb3VudGVkIGZvci4KKyAgICAgICAgYXNzZXJ0RXF1YWxzKElURU1fQ09VTlQsIHNlZW4uY2FyZGluYWxpdHkoKSk7CisgICAgfQogCiAgICAgLy8gVGVzdHMgdGhhdCBNb2RlbC5kZWxldGUgd29ya3MgY29ycmVjdGx5LgogICAgIHB1YmxpYyB2b2lkIHRlc3REZWxldGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L011bHRpU2VsZWN0TWFuYWdlcl9HcmlkTW9kZWxUZXN0LmphdmEgYi9wYWNrYWdlcy9Eb2N1bWVudHNVSS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvZG9jdW1lbnRzdWkvZGlybGlzdC9NdWx0aVNlbGVjdE1hbmFnZXJfR3JpZE1vZGVsVGVzdC5qYXZhCmluZGV4IGQ2ZThiNTUuLjNkNjkyM2YgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L011bHRpU2VsZWN0TWFuYWdlcl9HcmlkTW9kZWxUZXN0LmphdmEKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvTXVsdGlTZWxlY3RNYW5hZ2VyX0dyaWRNb2RlbFRlc3QuamF2YQpAQCAtMzM5LDcgKzMzOSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5SXRlbUNoYW5nZWQoU3RyaW5nIGlkLCBTdHJpbmcgc2VsZWN0aW9uQ2hhbmdlZE1hcmtlcikgeworICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJdGVtQ2hhbmdlZChTdHJpbmcgaWQpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0RvY3VtZW50c1VJL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9kb2N1bWVudHN1aS9kaXJsaXN0L1Rlc3RTZWxlY3Rpb25FbnZpcm9ubWVudC5qYXZhIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvVGVzdFNlbGVjdGlvbkVudmlyb25tZW50LmphdmEKaW5kZXggNjgwNTY0NC4uZmM4NWYyYiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvRG9jdW1lbnRzVUkvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvVGVzdFNlbGVjdGlvbkVudmlyb25tZW50LmphdmEKKysrIGIvcGFja2FnZXMvRG9jdW1lbnRzVUkvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2RvY3VtZW50c3VpL2Rpcmxpc3QvVGVzdFNlbGVjdGlvbkVudmlyb25tZW50LmphdmEKQEAgLTI1LDcgKzI1LDYgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5kb2N1bWVudHN1aS5kaXJsaXN0Lk11bHRpU2VsZWN0TWFuYWdlci5TZWxlY3Rpb25FbnZpcm9ubWVudDsKIAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIHB1YmxpYyBjbGFzcyBUZXN0U2VsZWN0aW9uRW52aXJvbm1lbnQgaW1wbGVtZW50cyBTZWxlY3Rpb25FbnZpcm9ubWVudCB7CiAKQEAgLTEzMiw3ICsxMzEsNyBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIG5vdGlmeUl0ZW1DaGFuZ2VkKFN0cmluZyBpZCwgU3RyaW5nIHNlbGVjdGlvbkNoYW5nZWRNYXJrZXIpIHsKKyAgICBwdWJsaWMgdm9pZCBub3RpZnlJdGVtQ2hhbmdlZChTdHJpbmcgaWQpIHsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0V4dGVybmFsU3RvcmFnZVByb3ZpZGVyL0FuZHJvaWQubWsgYi9wYWNrYWdlcy9FeHRlcm5hbFN0b3JhZ2VQcm92aWRlci9BbmRyb2lkLm1rCmluZGV4IGRiODI1ZmY0Li5lYzZhZjJmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9FeHRlcm5hbFN0b3JhZ2VQcm92aWRlci9BbmRyb2lkLm1rCisrKyBiL3BhY2thZ2VzL0V4dGVybmFsU3RvcmFnZVByb3ZpZGVyL0FuZHJvaWQubWsKQEAgLTUsNiArNSw3IEBACiAKIExPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLXN1YmRpci1qYXZhLWZpbGVzKQogCitMT0NBTF9TVEFUSUNfSkFWQV9MSUJSQVJJRVMgOj0gYW5kcm9pZC1zdXBwb3J0LWRvY3VtZW50cy1hcmNoaXZlCiBMT0NBTF9QQUNLQUdFX05BTUUgOj0gRXh0ZXJuYWxTdG9yYWdlUHJvdmlkZXIKIExPQ0FMX0NFUlRJRklDQVRFIDo9IHBsYXRmb3JtCiBMT0NBTF9QUklWSUxFR0VEX01PRFVMRSA6PSB0cnVlCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9FeHRlcm5hbFN0b3JhZ2VQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvZXh0ZXJuYWxzdG9yYWdlL0V4dGVybmFsU3RvcmFnZVByb3ZpZGVyLmphdmEgYi9wYWNrYWdlcy9FeHRlcm5hbFN0b3JhZ2VQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvZXh0ZXJuYWxzdG9yYWdlL0V4dGVybmFsU3RvcmFnZVByb3ZpZGVyLmphdmEKaW5kZXggMmNlZGM3Mi4uYzZlNTUzMSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvRXh0ZXJuYWxTdG9yYWdlUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL2V4dGVybmFsc3RvcmFnZS9FeHRlcm5hbFN0b3JhZ2VQcm92aWRlci5qYXZhCisrKyBiL3BhY2thZ2VzL0V4dGVybmFsU3RvcmFnZVByb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9leHRlcm5hbHN0b3JhZ2UvRXh0ZXJuYWxTdG9yYWdlUHJvdmlkZXIuamF2YQpAQCAtMzksNiArMzksNyBAQAogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuRG9jdW1lbnRzQ29udHJhY3QuUm9vdDsKIGltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLkRvY3VtZW50c1Byb3ZpZGVyOwogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZTsKK2ltcG9ydCBhbmRyb2lkLnN1cHBvcnQucHJvdmlkZXIuRG9jdW1lbnRBcmNoaXZlSGVscGVyOwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkFycmF5TWFwOwogaW1wb3J0IGFuZHJvaWQudXRpbC5EZWJ1Z1V0aWxzOwpAQCAtOTMsNiArOTQsNyBAQAogCiAgICAgcHJpdmF0ZSBTdG9yYWdlTWFuYWdlciBtU3RvcmFnZU1hbmFnZXI7CiAgICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyOworICAgIHByaXZhdGUgRG9jdW1lbnRBcmNoaXZlSGVscGVyIG1BcmNoaXZlSGVscGVyOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbVJvb3RzTG9jayA9IG5ldyBPYmplY3QoKTsKIApAQCAtMTA2LDYgKzEwOCw3IEBACiAgICAgcHVibGljIGJvb2xlYW4gb25DcmVhdGUoKSB7CiAgICAgICAgIG1TdG9yYWdlTWFuYWdlciA9IChTdG9yYWdlTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVE9SQUdFX1NFUlZJQ0UpOwogICAgICAgICBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CisgICAgICAgIG1BcmNoaXZlSGVscGVyID0gbmV3IERvY3VtZW50QXJjaGl2ZUhlbHBlcih0aGlzLCAoY2hhcikgMCk7CiAKICAgICAgICAgdXBkYXRlVm9sdW1lcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMyMSw4ICszMjQsMTIgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZpbmFsIFN0cmluZyBkaXNwbGF5TmFtZSA9IGZpbGUuZ2V0TmFtZSgpOwogICAgICAgICBmaW5hbCBTdHJpbmcgbWltZVR5cGUgPSBnZXRUeXBlRm9yRmlsZShmaWxlKTsKKyAgICAgICAgaWYgKG1BcmNoaXZlSGVscGVyLmlzU3VwcG9ydGVkQXJjaGl2ZVR5cGUobWltZVR5cGUpKSB7CisgICAgICAgICAgICBmbGFncyB8PSBEb2N1bWVudC5GTEFHX0FSQ0hJVkU7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmcgZGlzcGxheU5hbWUgPSBmaWxlLmdldE5hbWUoKTsKICAgICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpKSB7CiAgICAgICAgICAgICBmbGFncyB8PSBEb2N1bWVudC5GTEFHX1NVUFBPUlRTX1RIVU1CTkFJTDsKICAgICAgICAgfQpAQCAtMzMzLDYgKzM0MCw3IEBACiAgICAgICAgIHJvdy5hZGQoRG9jdW1lbnQuQ09MVU1OX1NJWkUsIGZpbGUubGVuZ3RoKCkpOwogICAgICAgICByb3cuYWRkKERvY3VtZW50LkNPTFVNTl9NSU1FX1RZUEUsIG1pbWVUeXBlKTsKICAgICAgICAgcm93LmFkZChEb2N1bWVudC5DT0xVTU5fRkxBR1MsIGZsYWdzKTsKKyAgICAgICAgcm93LmFkZChEb2N1bWVudEFyY2hpdmVIZWxwZXIuQ09MVU1OX0xPQ0FMX0ZJTEVfUEFUSCwgZmlsZS5nZXRQYXRoKCkpOwogCiAgICAgICAgIC8vIE9ubHkgcHVibGlzaCBkYXRlcyByZWFzb25hYmx5IGFmdGVyIGVwb2NoCiAgICAgICAgIGxvbmcgbGFzdE1vZGlmaWVkID0gZmlsZS5sYXN0TW9kaWZpZWQoKTsKQEAgLTM2MSw2ICszNjksMTAgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgYm9vbGVhbiBpc0NoaWxkRG9jdW1lbnQoU3RyaW5nIHBhcmVudERvY0lkLCBTdHJpbmcgZG9jSWQpIHsKICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChtQXJjaGl2ZUhlbHBlci5pc0FyY2hpdmVkRG9jdW1lbnQoZG9jSWQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1BcmNoaXZlSGVscGVyLmlzQ2hpbGREb2N1bWVudChwYXJlbnREb2NJZCwgZG9jSWQpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmaW5hbCBGaWxlIHBhcmVudCA9IGdldEZpbGVGb3JEb2NJZChwYXJlbnREb2NJZCkuZ2V0Q2Fub25pY2FsRmlsZSgpOwogICAgICAgICAgICAgZmluYWwgRmlsZSBkb2MgPSBnZXRGaWxlRm9yRG9jSWQoZG9jSWQpLmdldENhbm9uaWNhbEZpbGUoKTsKICAgICAgICAgICAgIHJldHVybiBGaWxlVXRpbHMuY29udGFpbnMocGFyZW50LCBkb2MpOwpAQCAtNDY4LDYgKzQ4MCwxMCBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBDdXJzb3IgcXVlcnlEb2N1bWVudChTdHJpbmcgZG9jdW1lbnRJZCwgU3RyaW5nW10gcHJvamVjdGlvbikKICAgICAgICAgICAgIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICBpZiAobUFyY2hpdmVIZWxwZXIuaXNBcmNoaXZlZERvY3VtZW50KGRvY3VtZW50SWQpKSB7CisgICAgICAgICAgICByZXR1cm4gbUFyY2hpdmVIZWxwZXIucXVlcnlEb2N1bWVudChkb2N1bWVudElkLCBwcm9qZWN0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZpbmFsIE1hdHJpeEN1cnNvciByZXN1bHQgPSBuZXcgTWF0cml4Q3Vyc29yKHJlc29sdmVEb2N1bWVudFByb2plY3Rpb24ocHJvamVjdGlvbikpOwogICAgICAgICBpbmNsdWRlRmlsZShyZXN1bHQsIGRvY3VtZW50SWQsIG51bGwpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDc3LDYgKzQ5MywxMSBAQAogICAgIHB1YmxpYyBDdXJzb3IgcXVlcnlDaGlsZERvY3VtZW50cygKICAgICAgICAgICAgIFN0cmluZyBwYXJlbnREb2N1bWVudElkLCBTdHJpbmdbXSBwcm9qZWN0aW9uLCBTdHJpbmcgc29ydE9yZGVyKQogICAgICAgICAgICAgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChtQXJjaGl2ZUhlbHBlci5pc0FyY2hpdmVkRG9jdW1lbnQocGFyZW50RG9jdW1lbnRJZCkgfHwKKyAgICAgICAgICAgICAgICBtQXJjaGl2ZUhlbHBlci5pc1N1cHBvcnRlZEFyY2hpdmVUeXBlKGdldERvY3VtZW50VHlwZShwYXJlbnREb2N1bWVudElkKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBtQXJjaGl2ZUhlbHBlci5xdWVyeUNoaWxkRG9jdW1lbnRzKHBhcmVudERvY3VtZW50SWQsIHByb2plY3Rpb24sIHNvcnRPcmRlcik7CisgICAgICAgIH0KKwogICAgICAgICBmaW5hbCBGaWxlIHBhcmVudCA9IGdldEZpbGVGb3JEb2NJZChwYXJlbnREb2N1bWVudElkKTsKICAgICAgICAgZmluYWwgTWF0cml4Q3Vyc29yIHJlc3VsdCA9IG5ldyBEaXJlY3RvcnlDdXJzb3IoCiAgICAgICAgICAgICAgICAgcmVzb2x2ZURvY3VtZW50UHJvamVjdGlvbihwcm9qZWN0aW9uKSwgcGFyZW50RG9jdW1lbnRJZCwgcGFyZW50KTsKQEAgLTUxNCw2ICs1MzUsMTAgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTdHJpbmcgZ2V0RG9jdW1lbnRUeXBlKFN0cmluZyBkb2N1bWVudElkKSB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKG1BcmNoaXZlSGVscGVyLmlzQXJjaGl2ZWREb2N1bWVudChkb2N1bWVudElkKSkgeworICAgICAgICAgICAgcmV0dXJuIG1BcmNoaXZlSGVscGVyLmdldERvY3VtZW50VHlwZShkb2N1bWVudElkKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZpbmFsIEZpbGUgZmlsZSA9IGdldEZpbGVGb3JEb2NJZChkb2N1bWVudElkKTsKICAgICAgICAgcmV0dXJuIGdldFR5cGVGb3JGaWxlKGZpbGUpOwogICAgIH0KQEAgLTUyMiw2ICs1NDcsMTAgQEAKICAgICBwdWJsaWMgUGFyY2VsRmlsZURlc2NyaXB0b3Igb3BlbkRvY3VtZW50KAogICAgICAgICAgICAgU3RyaW5nIGRvY3VtZW50SWQsIFN0cmluZyBtb2RlLCBDYW5jZWxsYXRpb25TaWduYWwgc2lnbmFsKQogICAgICAgICAgICAgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChtQXJjaGl2ZUhlbHBlci5pc0FyY2hpdmVkRG9jdW1lbnQoZG9jdW1lbnRJZCkpIHsKKyAgICAgICAgICAgIHJldHVybiBtQXJjaGl2ZUhlbHBlci5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCwgbW9kZSwgc2lnbmFsKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZpbmFsIEZpbGUgZmlsZSA9IGdldEZpbGVGb3JEb2NJZChkb2N1bWVudElkKTsKICAgICAgICAgZmluYWwgRmlsZSB2aXNpYmxlRmlsZSA9IGdldEZpbGVGb3JEb2NJZChkb2N1bWVudElkLCB0cnVlKTsKIApAQCAtNTUwLDYgKzU3OSwxMCBAQAogICAgIHB1YmxpYyBBc3NldEZpbGVEZXNjcmlwdG9yIG9wZW5Eb2N1bWVudFRodW1ibmFpbCgKICAgICAgICAgICAgIFN0cmluZyBkb2N1bWVudElkLCBQb2ludCBzaXplSGludCwgQ2FuY2VsbGF0aW9uU2lnbmFsIHNpZ25hbCkKICAgICAgICAgICAgIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICBpZiAobUFyY2hpdmVIZWxwZXIuaXNBcmNoaXZlZERvY3VtZW50KGRvY3VtZW50SWQpKSB7CisgICAgICAgICAgICByZXR1cm4gbUFyY2hpdmVIZWxwZXIub3BlbkRvY3VtZW50VGh1bWJuYWlsKGRvY3VtZW50SWQsIHNpemVIaW50LCBzaWduYWwpOworICAgICAgICB9CisKICAgICAgICAgZmluYWwgRmlsZSBmaWxlID0gZ2V0RmlsZUZvckRvY0lkKGRvY3VtZW50SWQpOwogICAgICAgICByZXR1cm4gRG9jdW1lbnRzQ29udHJhY3Qub3BlbkltYWdlVGh1bWJuYWlsKGZpbGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0tleWd1YXJkL3Jlcy92YWx1ZXMtYitzcitMYXRuL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvS2V5Z3VhcmQvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKaW5kZXggYTlhNmI5MC4uOGI2YmE1ZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvS2V5Z3VhcmQvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvS2V5Z3VhcmQvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKQEAgLTc3LDIzICs3NywyMyBAQAogICAgIDxzdHJpbmcgbmFtZT0ia2dfaW52YWxpZF9wdWsiIG1zZ2lkPSIzNjM4Mjg5NDA5Njc2MDUxMjQzIj4iUG9ub3ZvIHVuZXNpdGUgaXNwcmF2bmkgUFVLIGvDtGQuIFBvbm92bGplbmkgcG9rdcWhYWppIMSHZSB0cmFqbm8gb25lbW9ndcSHaXRpIFNJTS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJrZ19pbnZhbGlkX2NvbmZpcm1fcGluX2hpbnQiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3MDAzNDY5MjYxNDY0NTkzNTE2Ij4iUElOIGtvZG92aSBzZSBuZSBwb2R1ZGFyYWp1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ia2dfbG9naW5fdG9vX21hbnlfYXR0ZW1wdHMiIG1zZ2lkPSI2NDg2ODQyMDk0MDA1Njk4NDc1Ij4iUHJldmnFoWUgcG9rdcWhYWphIHVub3NhIMWhYWJsb25hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ia2dfdG9vX21hbnlfZmFpbGVkX3Bpbl9hdHRlbXB0c19kaWFsb2dfbWVzc2FnZSIgbXNnaWQ9IjgyNzY3NDU2NDIwNDk1MDI1NTAiPiJVbmVsaSBzdGUgbmV0YcSNbmkgUElOIDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JWQ8L3hsaWZmOmc+IHB1dGEuIFxuXG5Qb2t1xaFhanRlIHBvbm92byB6YSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiVkPC94bGlmZjpnPiBzZWt1bmRlKGkpLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImtnX3Rvb19tYW55X2ZhaWxlZF9wYXNzd29yZF9hdHRlbXB0c19kaWFsb2dfbWVzc2FnZSIgbXNnaWQ9Ijc4MTM3MTMzODk0MjIyMjY1MzEiPiJVbmVsaSBzdGUgbmV0YcSNbnUgbG96aW5rdSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiVkPC94bGlmZjpnPiBwdXRhLiBcblxuUG9rdcWhYWp0ZSBwb25vdm8gemEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lZDwveGxpZmY6Zz4gc2VrdW5kZShpKS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJrZ190b29fbWFueV9mYWlsZWRfcGF0dGVybl9hdHRlbXB0c19kaWFsb2dfbWVzc2FnZSIgbXNnaWQ9Ijc0MDg5NDc1OTY1MDUwODA1Ij4iTmFjcnRhbGkgc3RlIMWhYWJsb24gemEgb3RrbGp1xI1hdmFuamUgbmV0YcSNbm8gPHhsaWZmOmcgaWQ9Ik5VTUJFUl8wIj4lZDwveGxpZmY6Zz4gcHV0YS4gXG5cblBva3XFoWFqdGUgcG9ub3ZvIHphIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JWQ8L3hsaWZmOmc+IHNla3VuZGUoaSkuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF93aXBlIiBwcm9kdWN0PSJ0YWJsZXQiIG1zZ2lkPSI4Nzc0MDU2NjA2ODY5NjQ2NjIxIj4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGFibGV0IDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JWQ8L3hsaWZmOmc+IHB1dChhKS4gSW1hdGUgam/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiVkPC94bGlmZjpnPiBwb2t1xaFhaihhKSwgbmFrb24gxI1lZ2Egc2UgdGFibGV0IHJlc2V0dWplIGkgc3ZpIHBvZGFjaSBzYSBuamVnYSBicmnFoXUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF93aXBlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMTg0MzMzMTc1MTMzNDEyODQyOCI+IlBvZ3JlxaFubyBzdGUgcG9rdcWhYWxpIGRhIG90a2xqdcSNYXRlIHRlbGVmb24gPHhsaWZmOmcgaWQ9Ik5VTUJFUl8wIj4lZDwveGxpZmY6Zz4gcHV0KGEpLiBJbWF0ZSBqb8WhIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JWQ8L3hsaWZmOmc+IHBva3XFoWFqKGEpLCBuYWtvbiDEjWVnYSBzZSB0ZWxlZm9uIHJlc2V0dWplIGkgc3ZpIHBvZGFjaSBzYSBuamVnYSBicmnFoXUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2dfdG9vX21hbnlfZmFpbGVkX3Bpbl9hdHRlbXB0c19kaWFsb2dfbWVzc2FnZSIgbXNnaWQ9IjgyNzY3NDU2NDIwNDk1MDI1NTAiPiJVbmVsaSBzdGUgbmV0YcSNbmkgUElOIDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JTEkZDwveGxpZmY6Zz4gcHV0YS4gXG5cblBva3XFoWFqdGUgcG9ub3ZvIHphIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JTIkZDwveGxpZmY6Zz4gc2VrdW5kZShpKS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZ190b29fbWFueV9mYWlsZWRfcGFzc3dvcmRfYXR0ZW1wdHNfZGlhbG9nX21lc3NhZ2UiIG1zZ2lkPSI3ODEzNzEzMzg5NDIyMjI2NTMxIj4iVW5lbGkgc3RlIG5ldGHEjW51IGxvemlua3UgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8wIj4lMSRkPC94bGlmZjpnPiBwdXRhLiBcblxuUG9rdcWhYWp0ZSBwb25vdm8gemEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lMiRkPC94bGlmZjpnPiBzZWt1bmRlKGkpLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtnX3Rvb19tYW55X2ZhaWxlZF9wYXR0ZXJuX2F0dGVtcHRzX2RpYWxvZ19tZXNzYWdlIiBtc2dpZD0iNzQwODk0NzU5NjUwNTA4MDUiPiJOYWNydGFsaSBzdGUgxaFhYmxvbiB6YSBvdGtsanXEjWF2YW5qZSBuZXRhxI1ubyA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiUxJGQ8L3hsaWZmOmc+IHB1dGEuIFxuXG5Qb2t1xaFhanRlIHBvbm92byB6YSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiUyJGQ8L3hsaWZmOmc+IHNla3VuZGUoaSkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF93aXBlIiBwcm9kdWN0PSJ0YWJsZXQiIG1zZ2lkPSI4Nzc0MDU2NjA2ODY5NjQ2NjIxIj4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGFibGV0IDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JTEkZDwveGxpZmY6Zz4gcHV0KGEpLiBJbWF0ZSBqb8WhIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JTIkZDwveGxpZmY6Zz4gcG9rdcWhYWooYSksIG5ha29uIMSNZWdhIHNlIHRhYmxldCByZXNldHVqZSBpIHN2aSBwb2RhY2kgc2EgbmplZ2EgYnJpxaF1LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfd2lwZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjE4NDMzMzE3NTEzMzQxMjg0MjgiPiJQb2dyZcWhbm8gc3RlIHBva3XFoWFsaSBkYSBvdGtsanXEjWF0ZSB0ZWxlZm9uIDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JTEkZDwveGxpZmY6Zz4gcHV0KGEpLiBJbWF0ZSBqb8WhIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JTIkZDwveGxpZmY6Zz4gcG9rdcWhYWooYSksIG5ha29uIMSNZWdhIHNlIHRlbGVmb24gcmVzZXR1amUgaSBzdmkgcG9kYWNpIHNhIG5qZWdhIGJyacWhdS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJrZ19mYWlsZWRfYXR0ZW1wdHNfbm93X3dpcGluZyIgcHJvZHVjdD0idGFibGV0IiBtc2dpZD0iMjU4OTI1NTAxOTk5Njk4MDMyIj4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGFibGV0IDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBwdXQoYSkuIFRhYmxldCDEh2UgYml0aSByZXNldG92YW4gaSBzdmkgcG9kYWNpIHNhIG5qZWdhIMSHZSBiaXRpIGl6YnJpc2FuaS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJrZ19mYWlsZWRfYXR0ZW1wdHNfbm93X3dpcGluZyIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcxNTQwMjg5MDg0NTk4MTcwNjYiPiJQb2dyZcWhbm8gc3RlIHBva3XFoWFsaSBkYSBvdGtsanXEjWF0ZSB0ZWxlZm9uIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBwdXQoYSkuIFRlbGVmb24gxIdlIGJpdGkgcmVzZXRvdmFuIGkgc3ZpIHBvZGFjaSBzYSBuamVnYSDEh2UgYml0aSBpemJyaXNhbmkuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF9lcmFzZV91c2VyIiBwcm9kdWN0PSJ0YWJsZXQiIG1zZ2lkPSI2MTU5OTU1MDk5MzcyMTEyNjg4Ij4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGFibGV0IDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JWQ8L3hsaWZmOmc+IHB1dChhKS4gSW1hdGUgam/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiVkPC94bGlmZjpnPiBwb2t1xaFhaihhKSwgbmFrb24gxI1lZ2Egc2Ugb3ZhaiBrb3Jpc25payB1a2xhbmphIGkgc3ZpIHBvZGFjaSBrb3Jpc25pa2EgYnJpxaF1LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfZXJhc2VfdXNlciIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY5NDU4MjMxODY2MjkzNjk4ODAiPiJQb2dyZcWhbm8gc3RlIHBva3XFoWFsaSBkYSBvdGtsanXEjWF0ZSB0ZWxlZm9uIDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JWQ8L3hsaWZmOmc+IHB1dChhKS4gSW1hdGUgam/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiVkPC94bGlmZjpnPiBwb2t1xaFhaihhKSwgbmFrb24gxI1lZ2Egc2Ugb3ZhaiBrb3Jpc25payB1a2xhbmphIGkgc3ZpIHBvZGFjaSBrb3Jpc25pa2EgYnJpxaF1LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfZXJhc2VfdXNlciIgcHJvZHVjdD0idGFibGV0IiBtc2dpZD0iNjE1OTk1NTA5OTM3MjExMjY4OCI+IlBvZ3JlxaFubyBzdGUgcG9rdcWhYWxpIGRhIG90a2xqdcSNYXRlIHRhYmxldCA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiUxJGQ8L3hsaWZmOmc+IHB1dChhKS4gSW1hdGUgam/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiUyJGQ8L3hsaWZmOmc+IHBva3XFoWFqKGEpLCBuYWtvbiDEjWVnYSBzZSBvdmFqIGtvcmlzbmlrIHVrbGFuamEgaSBzdmkgcG9kYWNpIGtvcmlzbmlrYSBicmnFoXUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF9lcmFzZV91c2VyIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjk0NTgyMzE4NjYyOTM2OTg4MCI+IlBvZ3JlxaFubyBzdGUgcG9rdcWhYWxpIGRhIG90a2xqdcSNYXRlIHRlbGVmb24gPHhsaWZmOmcgaWQ9Ik5VTUJFUl8wIj4lMSRkPC94bGlmZjpnPiBwdXQoYSkuIEltYXRlIGpvxaEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lMiRkPC94bGlmZjpnPiBwb2t1xaFhaihhKSwgbmFrb24gxI1lZ2Egc2Ugb3ZhaiBrb3Jpc25payB1a2xhbmphIGkgc3ZpIHBvZGFjaSBrb3Jpc25pa2EgYnJpxaF1LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19ub3dfZXJhc2luZ191c2VyIiBwcm9kdWN0PSJ0YWJsZXQiIG1zZ2lkPSIzOTYzNDg2OTA1MzU1Nzc4NzM0Ij4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGFibGV0IDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBwdXQoYSkuIE92YWoga29yaXNuaWsgxIdlIGJpdGkgdWtsb25qZW4gaSBzdmkgcG9kYWNpIGtvcmlzbmlrYSDEh2UgYml0aSBpemJyaXNhbmkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX25vd19lcmFzaW5nX3VzZXIiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3NzI5MDA5NzUyMjUyMTExNjczIj4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGVsZWZvbiA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gcHV0KGEpLiBPdmFqIGtvcmlzbmlrIMSHZSBiaXRpIHVrbG9uamVuIGkgc3ZpIHBvZGFjaSBrb3Jpc25pa2EgxIdlIGJpdGkgaXpicmlzYW5pLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfZXJhc2VfcHJvZmlsZSIgcHJvZHVjdD0idGFibGV0IiBtc2dpZD0iNDYyMTc3ODUwNzM4Nzg1MzY5NCI+IlBvZ3JlxaFubyBzdGUgcG9rdcWhYWxpIGRhIG90a2xqdcSNYXRlIHRhYmxldCA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiVkPC94bGlmZjpnPiBwdXQoYSkuIEltYXRlIGpvxaEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lZDwveGxpZmY6Zz4gcG9rdcWhYWooYSksIG5ha29uIMSNZWdhIHNlIHBvc2xvdm5pIHByb2ZpbCB1a2xhbmphIGkgc3ZpIHBvZGFjaSBzYSBwcm9maWxhIGJyacWhdS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJrZ19mYWlsZWRfYXR0ZW1wdHNfYWxtb3N0X2F0X2VyYXNlX3Byb2ZpbGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODUzMDcxMTY1ODAyOTMzNTQ1Ij4iUG9ncmXFoW5vIHN0ZSBwb2t1xaFhbGkgZGEgb3RrbGp1xI1hdGUgdGVsZWZvbiA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiVkPC94bGlmZjpnPiBwdXQoYSkuIEltYXRlIGpvxaEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lZDwveGxpZmY6Zz4gcG9rdcWhYWooYSksIG5ha29uIMSNZWdhIHNlIHBvc2xvdm5pIHByb2ZpbCB1a2xhbmphIGkgc3ZpIHBvZGFjaSBzYSBwcm9maWxhIGJyacWhdS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZ19mYWlsZWRfYXR0ZW1wdHNfYWxtb3N0X2F0X2VyYXNlX3Byb2ZpbGUiIHByb2R1Y3Q9InRhYmxldCIgbXNnaWQ9IjQ2MjE3Nzg1MDczODc4NTM2OTQiPiJQb2dyZcWhbm8gc3RlIHBva3XFoWFsaSBkYSBvdGtsanXEjWF0ZSB0YWJsZXQgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8wIj4lMSRkPC94bGlmZjpnPiBwdXQoYSkuIEltYXRlIGpvxaEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lMiRkPC94bGlmZjpnPiBwb2t1xaFhaihhKSwgbmFrb24gxI1lZ2Egc2UgcG9zbG92bmkgcHJvZmlsIHVrbGFuamEgaSBzdmkgcG9kYWNpIHNhIHByb2ZpbGEgYnJpxaF1LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfZXJhc2VfcHJvZmlsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY4NTMwNzExNjU4MDI5MzM1NDUiPiJQb2dyZcWhbm8gc3RlIHBva3XFoWFsaSBkYSBvdGtsanXEjWF0ZSB0ZWxlZm9uIDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JTEkZDwveGxpZmY6Zz4gcHV0KGEpLiBJbWF0ZSBqb8WhIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JTIkZDwveGxpZmY6Zz4gcG9rdcWhYWooYSksIG5ha29uIMSNZWdhIHNlIHBvc2xvdm5pIHByb2ZpbCB1a2xhbmphIGkgc3ZpIHBvZGFjaSBzYSBwcm9maWxhIGJyacWhdS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJrZ19mYWlsZWRfYXR0ZW1wdHNfbm93X2VyYXNpbmdfcHJvZmlsZSIgcHJvZHVjdD0idGFibGV0IiBtc2dpZD0iNDY4NjM4NjQ5NzQ0OTkxMjE0NiI+IlBvZ3JlxaFubyBzdGUgcG9rdcWhYWxpIGRhIG90a2xqdcSNYXRlIHRhYmxldCA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gcHV0KGEpLiBQb3Nsb3ZuaSBwcm9maWwgxIdlIGJpdGkgdWtsb25qZW4gaSBzdmkgcG9kYWNpIHNhIG5qZWdhIMSHZSBiaXRpIGl6YnJpc2FuaS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJrZ19mYWlsZWRfYXR0ZW1wdHNfbm93X2VyYXNpbmdfcHJvZmlsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ5NTE1MDczNTI4Njk4MzEyNjUiPiJQb2dyZcWhbm8gc3RlIHBva3XFoWFsaSBkYSBvdGtsanXEjWF0ZSB0ZWxlZm9uIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBwdXQoYSkuIFBvc2xvdm5pIHByb2ZpbCDEh2UgYml0aSB1a2xvbmplbiBpIHN2aSBwb2RhY2kgc2EgbmplZ2EgxIdlIGJpdGkgaXpicmlzYW5pLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfbG9naW4iIHByb2R1Y3Q9InRhYmxldCIgbXNnaWQ9IjMyNTM1NzU1NzIxMTg5MTQzNzAiPiJOYWNydGFsaSBzdGUgxaFhYmxvbiB6YSBvdGtsanXEjWF2YW5qZSBuZXRhxI1ubyA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiVkPC94bGlmZjpnPiBwdXRhLiBQb3NsZSBqb8WhIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JWQ8L3hsaWZmOmc+IG5ldXNwZcWhbmEoaWgpIHBva3XFoWFqYSwgb2QgdmFzIMSHZSBiaXRpIHphdHJhxb5lbm8gZGEgb3RrbGp1xI1hdGUgdGFibGV0IHBvbW/Eh3UgbmFsb2dhIGUtcG/FoXRlLlxuXG5Qb2t1xaFhanRlIHBvbm92byB6YSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzIiPiVkPC94bGlmZjpnPiBzZWt1bmRlKGkpLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImtnX2ZhaWxlZF9hdHRlbXB0c19hbG1vc3RfYXRfbG9naW4iIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxNDM3NjM4MTUyMDE1NTc0ODM5Ij4iTmFjcnRhbGkgc3RlIMWhYWJsb24gemEgb3RrbGp1xI1hdmFuamUgbmV0YcSNbm8gPHhsaWZmOmcgaWQ9Ik5VTUJFUl8wIj4lZDwveGxpZmY6Zz4gcHV0YS4gUG9zbGUgam/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiVkPC94bGlmZjpnPiBuZXVzcGXFoW5hKGloKSBwb2t1xaFhamEsIG9kIHZhcyDEh2UgYml0aSB6YXRyYcW+ZW5vIGRhIG90a2xqdcSNYXRlIHRlbGVmb24gcG9tb8SHdSBuYWxvZ2EgZS1wb8WhdGUuXG5cblBva3XFoWFqdGUgcG9ub3ZvIHphIDx4bGlmZjpnIGlkPSJOVU1CRVJfMiI+JWQ8L3hsaWZmOmc+IHNla3VuZGUoaSkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF9sb2dpbiIgcHJvZHVjdD0idGFibGV0IiBtc2dpZD0iMzI1MzU3NTU3MjExODkxNDM3MCI+Ik5hY3J0YWxpIHN0ZSDFoWFibG9uIHphIG90a2xqdcSNYXZhbmplIG5ldGHEjW5vIDx4bGlmZjpnIGlkPSJOVU1CRVJfMCI+JTEkZDwveGxpZmY6Zz4gcHV0YS4gUG9zbGUgam/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzEiPiUyJGQ8L3hsaWZmOmc+IG5ldXNwZcWhbmEoaWgpIHBva3XFoWFqYSwgb2QgdmFzIMSHZSBiaXRpIHphdHJhxb5lbm8gZGEgb3RrbGp1xI1hdGUgdGFibGV0IHBvbW/Eh3UgbmFsb2dhIGUtcG/FoXRlLlxuXG5Qb2t1xaFhanRlIHBvbm92byB6YSA8eGxpZmY6ZyBpZD0iTlVNQkVSXzIiPiUzJGQ8L3hsaWZmOmc+IHNla3VuZGUoaSkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2dfZmFpbGVkX2F0dGVtcHRzX2FsbW9zdF9hdF9sb2dpbiIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjE0Mzc2MzgxNTIwMTU1NzQ4MzkiPiJOYWNydGFsaSBzdGUgxaFhYmxvbiB6YSBvdGtsanXEjWF2YW5qZSBuZXRhxI1ubyA8eGxpZmY6ZyBpZD0iTlVNQkVSXzAiPiUxJGQ8L3hsaWZmOmc+IHB1dGEuIFBvc2xlIGpvxaEgPHhsaWZmOmcgaWQ9Ik5VTUJFUl8xIj4lMiRkPC94bGlmZjpnPiBuZXVzcGXFoW5hKGloKSBwb2t1xaFhamEsIG9kIHZhcyDEh2UgYml0aSB6YXRyYcW+ZW5vIGRhIG90a2xqdcSNYXRlIHRlbGVmb24gcG9tb8SHdSBuYWxvZ2EgZS1wb8WhdGUuXG5cblBva3XFoWFqdGUgcG9ub3ZvIHphIDx4bGlmZjpnIGlkPSJOVU1CRVJfMiI+JTMkZDwveGxpZmY6Zz4gc2VrdW5kZShpKS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJrZ19wYXNzd29yZF93cm9uZ19waW5fY29kZV9wdWtrZWQiIG1zZ2lkPSIzMDUzMTAzOTQ1NTc2NDkyNCI+Ik5ldGHEjWFuIFNJTSBQSU4ga8O0ZC4gU2FkYSBtb3JhdGUgZGEga29udGFrdGlyYXRlIG1vYmlsbm9nIG9wZXJhdGVyYSBkYSBiaXN0ZSBvdGtsanXEjWFsaSB1cmXEkWFqLiI8L3N0cmluZz4KICAgICA8cGx1cmFscyBuYW1lPSJrZ19wYXNzd29yZF93cm9uZ19waW5fY29kZSIgZm9ybWF0dGVkPSJmYWxzZSIgbXNnaWQ9IjY3MjE1NzUwMTc1MzgxNjIyNDkiPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+TmV0YcSNYW4gU0lNIFBJTiBrw7RkLiBJbWF0ZSBqb8WhIDx4bGlmZjpnIGlkPSJOVU1CRVJfMSI+JWQ8L3hsaWZmOmc+IHBva3XFoWFqLjwvaXRlbT4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL0FuZHJvaWQubWsgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9BbmRyb2lkLm1rCmluZGV4IDNjMmZhMzYuLjY3YmJmNzggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL0FuZHJvaWQubWsKKysrIGIvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvQW5kcm9pZC5tawpAQCAtNiw2ICs2LDcgQEAKIExPQ0FMX1BBQ0tBR0VfTkFNRSA6PSBNdHBEb2N1bWVudHNQcm92aWRlcgogTE9DQUxfQ0VSVElGSUNBVEUgOj0gbWVkaWEKIExPQ0FMX1BSSVZJTEVHRURfTU9EVUxFIDo9IHRydWUKK0xPQ0FMX0pOSV9TSEFSRURfTElCUkFSSUVTIDo9IGxpYmFwcGZ1c2Vfam5pCiAKIGluY2x1ZGUgJChCVUlMRF9QQUNLQUdFKQotaW5jbHVkZSAkKExPQ0FMX1BBVEgpL3Rlc3RzL0FuZHJvaWQubWsKK2luY2x1ZGUgJChjYWxsIGFsbC1tYWtlZmlsZXMtdW5kZXIsICQoTE9DQUxfUEFUSCkpCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9qbmkvQW5kcm9pZC5tayBiL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL2puaS9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NDViMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9qbmkvQW5kcm9pZC5tawpAQCAtMCwwICsxLDE1IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gXAorICAgIGNvbV9hbmRyb2lkX210cF9BcHBGdXNlLmNwcAorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKKyAgICBsaWJhbmRyb2lkX3J1bnRpbWUgXAorICAgIGxpYm5hdGl2ZWhlbHBlciBcCisgICAgbGlibG9nCisKK0xPQ0FMX0NGTEFHUyArPSAtV2FsbCAtV2Vycm9yIC1XdW51c2VkIC1XdW5yZWFjaGFibGUtY29kZQorTE9DQUxfTU9EVUxFIDo9IGxpYmFwcGZ1c2Vfam5pCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL2puaS9jb21fYW5kcm9pZF9tdHBfQXBwRnVzZS5jcHAgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9qbmkvY29tX2FuZHJvaWRfbXRwX0FwcEZ1c2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OTJhMWYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9qbmkvY29tX2FuZHJvaWRfbXRwX0FwcEZ1c2UuY3BwCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2ljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkFwcEZ1c2VKTkkiCisjaW5jbHVkZSAidXRpbHMvTG9nLmgiCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorCisjaW5jbHVkZSA8bGludXgvZnVzZS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNpbmNsdWRlIDxtYXA+CisKKyNpbmNsdWRlICJqbmkuaCIKKyNpbmNsdWRlICJKTklIZWxwLmgiCisjaW5jbHVkZSAiYW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmgiCisKK25hbWVzcGFjZSB7CisKK2NvbnN0ZXhwciBpbnQgbWluKGludCBhLCBpbnQgYikgeworICAgIHJldHVybiBhIDwgYiA/IGEgOiBiOworfQorCisvLyBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byB3cml0ZSBpbiBvbmUgcmVxdWVzdC4KK2NvbnN0ZXhwciBzaXplX3QgTUFYX1dSSVRFID0gMjU2ICogMTAyNDsKKworLy8gTGFyZ2VzdCBwb3NzaWJsZSByZXF1ZXN0LgorLy8gVGhlIHJlcXVlc3Qgc2l6ZSBpcyBib3VuZGVkIGJ5IHRoZSBtYXhpbXVtIHNpemUgb2YgYSBGVVNFX1dSSVRFIHJlcXVlc3QKKy8vIGJlY2F1c2UgaXQgaGFzIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGRhdGEgcGF5bG9hZC4KK2NvbnN0ZXhwciBzaXplX3QgTUFYX1JFUVVFU1RfU0laRSA9IHNpemVvZihzdHJ1Y3QgZnVzZV9pbl9oZWFkZXIpICsKKyAgICAgICAgc2l6ZW9mKHN0cnVjdCBmdXNlX3dyaXRlX2luKSArIE1BWF9XUklURTsKKworc3RhdGljIGpjbGFzcyBhcHBfZnVzZV9jbGFzczsKKworc3RydWN0IEZ1c2VSZXF1ZXN0IHsKKyAgICBjaGFyIGJ1ZmZlcltNQVhfUkVRVUVTVF9TSVpFXTsKKyAgICBGdXNlUmVxdWVzdCgpIHt9CisgICAgY29uc3Qgc3RydWN0IGZ1c2VfaW5faGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7CisgICAgICAgIHJldHVybiAqKGNvbnN0IHN0cnVjdCBmdXNlX2luX2hlYWRlciopIGJ1ZmZlcjsKKyAgICB9CisgICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIChidWZmZXIgKyBzaXplb2Yoc3RydWN0IGZ1c2VfaW5faGVhZGVyKSk7CisgICAgfQorICAgIHNpemVfdCBkYXRhX2xlbmd0aCgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGhlYWRlcigpLmxlbiAtIHNpemVvZihzdHJ1Y3QgZnVzZV9pbl9oZWFkZXIpOworICAgIH0KK307CisKK2NsYXNzIFNjb3BlZEZkIHsKKyAgICBpbnQgbUZkOworCitwdWJsaWM6CisgICAgZXhwbGljaXQgU2NvcGVkRmQoaW50IGZkKSA6IG1GZChmZCkge30KKyAgICB+U2NvcGVkRmQoKSB7CisgICAgICAgIGNsb3NlKG1GZCk7CisgICAgfQorICAgIG9wZXJhdG9yIGludCgpIHsKKyAgICAgICAgcmV0dXJuIG1GZDsKKyAgICB9Cit9OworCisvKioKKyAqIFRoZSBjbGFzcyBpcyB1c2VkIHRvIGFjY2VzcyBBcHBGdXNlIGNsYXNzIGluIEphdmEgZnJvbSBmdXNlIGhhbmRsZXJzLgorICovCitjbGFzcyBBcHBGdXNlIHsKK3B1YmxpYzoKKyAgICBBcHBGdXNlKEpOSUVudiogLyplbnYqLywgam9iamVjdCAvKnNlbGYqLykgeworICAgIH0KKworICAgIGJvb2wgaGFuZGxlX2Z1c2VfcmVxdWVzdChpbnQgZmQsIGNvbnN0IEZ1c2VSZXF1ZXN0JiByZXEpIHsKKyAgICAgICAgQUxPR1YoIlJlcXVlc3Qgb3A9JWQiLCByZXEuaGVhZGVyKCkub3Bjb2RlKTsKKyAgICAgICAgc3dpdGNoIChyZXEuaGVhZGVyKCkub3Bjb2RlKSB7CisgICAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgbW9yZSBvcGVyYXRpb25zIHRoYXQgYXJlIGVub3VnaCB0byBwcm92aWRlIHNlZWthYmxlCisgICAgICAgICAgICAvLyBGRC4KKyAgICAgICAgICAgIGNhc2UgRlVTRV9JTklUOgorICAgICAgICAgICAgICAgIGludm9rZV9oYW5kbGVyKGZkLCByZXEsICZBcHBGdXNlOjpoYW5kbGVfZnVzZV9pbml0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgRlVTRV9HRVRBVFRSOgorICAgICAgICAgICAgICAgIGludm9rZV9oYW5kbGVyKGZkLCByZXEsICZBcHBGdXNlOjpoYW5kbGVfZnVzZV9nZXRhdHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgRlVTRV9GT1JHRVQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZGVmYXVsdDogeworICAgICAgICAgICAgICAgIEFMT0dWKCJOT1RJTVBMIG9wPSVkIHVuaXE9JSIgUFJJeDY0ICIgbmlkPSUiIFBSSXg2NCAiXG4iLAorICAgICAgICAgICAgICAgICAgICAgIHJlcS5oZWFkZXIoKS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgcmVxLmhlYWRlcigpLnVuaXF1ZSwKKyAgICAgICAgICAgICAgICAgICAgICByZXEuaGVhZGVyKCkubm9kZWlkKTsKKyAgICAgICAgICAgICAgICBmdXNlX3JlcGx5KGZkLCByZXEuaGVhZGVyKCkudW5pcXVlLCAtRU5PU1lTLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgaGFuZGxlX2Z1c2VfaW5pdChjb25zdCBmdXNlX2luX2hlYWRlciYsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVzZV9pbml0X2luKiBpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdXNlX2luaXRfb3V0KiBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiByZXBseV9zaXplKSB7CisgICAgICAgIC8vIEtlcm5lbCAyLjYuMTYgaXMgdGhlIGZpcnN0IHN0YWJsZSBrZXJuZWwgd2l0aCBzdHJ1Y3QgZnVzZV9pbml0X291dAorICAgICAgICAvLyBkZWZpbmVkIChmdXNlIHZlcnNpb24gNy42KS4gVGhlIHN0cnVjdHVyZSBpcyB0aGUgc2FtZSBmcm9tIDcuNiB0aHJvdWdoCisgICAgICAgIC8vIDcuMjIuIEJlZ2lubmluZyB3aXRoIDcuMjMsIHRoZSBzdHJ1Y3R1cmUgaW5jcmVhc2VkIGluIHNpemUgYW5kIGFkZGVkCisgICAgICAgIC8vIG5ldyBwYXJhbWV0ZXJzLgorICAgICAgICBpZiAoaW4tPm1ham9yICE9IEZVU0VfS0VSTkVMX1ZFUlNJT04gfHwgaW4tPm1pbm9yIDwgNikgeworICAgICAgICAgICAgQUxPR0UoIkZ1c2Uga2VybmVsIHZlcnNpb24gbWlzbWF0Y2g6IEtlcm5lbCB2ZXJzaW9uICVkLiVkLCAiCisgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgYXQgbGVhc3QgJWQuNiIsCisgICAgICAgICAgICAgICAgICBpbi0+bWFqb3IsIGluLT5taW5vciwgRlVTRV9LRVJORUxfVkVSU0lPTik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBsaW1pdCBvdXJzZWx2ZXMgdG8gMTUgYmVjYXVzZSB3ZSBkb24ndCBoYW5kbGUgQkFUQ0hfRk9SR0VUIHlldAorICAgICAgICBvdXQtPm1pbm9yID0gbWluKGluLT5taW5vciwgMTUpOworI2lmIGRlZmluZWQoRlVTRV9DT01QQVRfMjJfSU5JVF9PVVRfU0laRSkKKyAgICAgICAgLy8gRlVTRV9LRVJORUxfVkVSU0lPTiA+PSAyMy4KKworICAgICAgICAvLyBJZiB0aGUga2VybmVsIG9ubHkgd29ya3Mgb24gbWlub3IgcmV2cyBvbGRlciB0aGFuIG9yIGVxdWFsIHRvIDIyLAorICAgICAgICAvLyB0aGVuIHVzZSB0aGUgb2xkZXIgc3RydWN0dXJlIHNpemUgc2luY2UgdGhpcyBjb2RlIG9ubHkgdXNlcyB0aGUgNy4yMgorICAgICAgICAvLyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUuCisgICAgICAgIGlmIChpbi0+bWlub3IgPD0gMjIpIHsKKyAgICAgICAgICAgICpyZXBseV9zaXplID0gRlVTRV9DT01QQVRfMjJfSU5JVF9PVVRfU0laRTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgLy8gRG9uJ3QgZHJvcCB0aGlzIGxpbmUgdG8gcHJldmVudCBhbiAndW51c2VkJyBjb21waWxlIGVycm9yLgorICAgICAgICAqcmVwbHlfc2l6ZSA9IHNpemVvZihmdXNlX2luaXRfb3V0KTsKKyNlbmRpZgorCisgICAgICAgIG91dC0+bWFqb3IgPSBGVVNFX0tFUk5FTF9WRVJTSU9OOworICAgICAgICBvdXQtPm1heF9yZWFkYWhlYWQgPSBpbi0+bWF4X3JlYWRhaGVhZDsKKyAgICAgICAgb3V0LT5mbGFncyA9IEZVU0VfQVRPTUlDX09fVFJVTkMgfCBGVVNFX0JJR19XUklURVM7CisgICAgICAgIG91dC0+bWF4X2JhY2tncm91bmQgPSAzMjsKKyAgICAgICAgb3V0LT5jb25nZXN0aW9uX3RocmVzaG9sZCA9IDMyOworICAgICAgICBvdXQtPm1heF93cml0ZSA9IE1BWF9XUklURTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbnQgaGFuZGxlX2Z1c2VfZ2V0YXR0cihjb25zdCBmdXNlX2luX2hlYWRlciYgaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1c2VfZ2V0YXR0cl9pbiogLyogaW4gKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVzZV9hdHRyX291dCogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogLyp1bnVzZWQqLykgeworICAgICAgICBpZiAoaGVhZGVyLm5vZGVpZCAhPSAxKSB7CisgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgfQorICAgICAgICBvdXQtPmF0dHJfdmFsaWQgPSAxMDAwICogNjAgKiAxMDsKKyAgICAgICAgb3V0LT5hdHRyLmlubyA9IGhlYWRlci5ub2RlaWQ7CisgICAgICAgIG91dC0+YXR0ci5tb2RlID0gU19JRkRJUiB8IDA3Nzc7CisgICAgICAgIG91dC0+YXR0ci5zaXplID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFM+CisgICAgdm9pZCBpbnZva2VfaGFuZGxlcihpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdXNlUmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAoQXBwRnVzZTo6KmhhbmRsZXIpKGNvbnN0IGZ1c2VfaW5faGVhZGVyJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZXBseV9zaXplID0gc2l6ZW9mKFMpKSB7CisgICAgICAgIGNoYXIgcmVwbHlfZGF0YVtyZXBseV9zaXplXTsKKyAgICAgICAgbWVtc2V0KHJlcGx5X2RhdGEsIDAsIHJlcGx5X3NpemUpOworICAgICAgICBjb25zdCBpbnQgcmVwbHlfY29kZSA9ICh0aGlzLT4qaGFuZGxlcikoCisgICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXIoKSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUKj4ocmVxdWVzdC5kYXRhKCkpLAorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Uyo+KHJlcGx5X2RhdGEpLAorICAgICAgICAgICAgICAgICZyZXBseV9zaXplKTsKKyAgICAgICAgZnVzZV9yZXBseSgKKyAgICAgICAgICAgICAgICBmZCwKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmhlYWRlcigpLnVuaXF1ZSwKKyAgICAgICAgICAgICAgICByZXBseV9jb2RlLAorICAgICAgICAgICAgICAgIHJlcGx5X2RhdGEsCisgICAgICAgICAgICAgICAgcmVwbHlfc2l6ZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZnVzZV9yZXBseShpbnQgZmQsIGludCB1bmlxdWUsIGludCByZXBseV9jb2RlLCB2b2lkKiByZXBseV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlcGx5X3NpemUpIHsKKyAgICAgICAgLy8gRG9uJ3Qgc2VuZCBhbnkgZGF0YSBmb3IgZXJyb3IgY2FzZS4KKyAgICAgICAgaWYgKHJlcGx5X2NvZGUgIT0gMCkgeworICAgICAgICAgICAgcmVwbHlfc2l6ZSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBzdHJ1Y3QgZnVzZV9vdXRfaGVhZGVyIGhkcjsKKyAgICAgICAgaGRyLmxlbiA9IHJlcGx5X3NpemUgKyBzaXplb2YoaGRyKTsKKyAgICAgICAgaGRyLmVycm9yID0gcmVwbHlfY29kZTsKKyAgICAgICAgaGRyLnVuaXF1ZSA9IHVuaXF1ZTsKKworICAgICAgICBzdHJ1Y3QgaW92ZWMgdmVjWzJdOworICAgICAgICB2ZWNbMF0uaW92X2Jhc2UgPSAmaGRyOworICAgICAgICB2ZWNbMF0uaW92X2xlbiA9IHNpemVvZihoZHIpOworICAgICAgICB2ZWNbMV0uaW92X2Jhc2UgPSByZXBseV9kYXRhOworICAgICAgICB2ZWNbMV0uaW92X2xlbiA9IHJlcGx5X3NpemU7CisKKyAgICAgICAgY29uc3QgaW50IHJlcyA9IHdyaXRldihmZCwgdmVjLCByZXBseV9zaXplICE9IDAgPyAyIDogMSk7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBBTE9HRSgiKioqIFJFUExZIEZBSUxFRCAqKiogJWRcbiIsIGVycm5vKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2pib29sZWFuIGNvbV9hbmRyb2lkX210cF9BcHBGdXNlX3N0YXJ0X2FwcF9mdXNlX2xvb3AoCisgICAgICAgIEpOSUVudiogZW52LCBqb2JqZWN0IHNlbGYsIGppbnQgamZkKSB7CisgICAgU2NvcGVkRmQgZmQoZHVwKHN0YXRpY19jYXN0PGludD4oamZkKSkpOworICAgIEFwcEZ1c2UgYXBwZnVzZShlbnYsIHNlbGYpOworCisgICAgQUxPR0QoIlN0YXJ0IGZ1c2UgbG9vcC4iKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBGdXNlUmVxdWVzdCByZXF1ZXN0OworICAgICAgICBjb25zdCBzc2l6ZV90IHJlc3VsdCA9IFRFTVBfRkFJTFVSRV9SRVRSWSgKKyAgICAgICAgICAgICAgICByZWFkKGZkLCByZXF1ZXN0LmJ1ZmZlciwgc2l6ZW9mKHJlcXVlc3QuYnVmZmVyKSkpOworICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0RFVikgeworICAgICAgICAgICAgICAgIEFMT0dFKCJTb21lb25lIHN0b2xlIG91ciBtYXJibGVzIVxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpOSV9GQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFMT0dFKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIEZEOiBlcnJubz0lZFxuIiwgZXJybm8pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZXN1bHQpOworICAgICAgICBpZiAobGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBmdXNlX2luX2hlYWRlcikpIHsKKyAgICAgICAgICAgIEFMT0dFKCJyZXF1ZXN0IHRvbyBzaG9ydDogbGVuPSV6dVxuIiwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcXVlc3QuaGVhZGVyKCkubGVuICE9IGxlbmd0aCkgeworICAgICAgICAgICAgQUxPR0UoIm1hbGZvcm1lZCBoZWFkZXI6IGxlbj0lenUsIGhkci0+bGVuPSV1XG4iLAorICAgICAgICAgICAgICAgICAgbGVuZ3RoLCByZXF1ZXN0LmhlYWRlcigpLmxlbik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYXBwZnVzZS5oYW5kbGVfZnVzZV9yZXF1ZXN0KGZkLCByZXF1ZXN0KSkgeworICAgICAgICAgICAgcmV0dXJuIEpOSV9UUlVFOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgSk5JTmF0aXZlTWV0aG9kIGdNZXRob2RzW10gPSB7CisgICAgeworICAgICAgICAibmF0aXZlX3N0YXJ0X2FwcF9mdXNlX2xvb3AiLAorICAgICAgICAiKEkpWiIsCisgICAgICAgICh2b2lkICopIGNvbV9hbmRyb2lkX210cF9BcHBGdXNlX3N0YXJ0X2FwcF9mdXNlX2xvb3AKKyAgICB9Cit9OworCit9CisKK2ppbnQgSk5JX09uTG9hZChKYXZhVk0qIHZtLCB2b2lkKiAvKiByZXNlcnZlZCAqLykgeworICAgIEpOSUVudiogZW52ID0gbnVsbHB0cjsKKyAgICBpZiAodm0tPkdldEVudigodm9pZCoqKSAmZW52LCBKTklfVkVSU0lPTl8xXzQpICE9IEpOSV9PSykgeworICAgICAgICBBTE9HRSgiRVJST1I6IEdldEVudiBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisKKyAgICB9CisgICAgYXNzZXJ0KGVudiAhPSBudWxscHRyKTsKKworICAgIGpjbGFzcyBjbGF6eiA9IGVudi0+RmluZENsYXNzKCJjb20vYW5kcm9pZC9tdHAvQXBwRnVzZSIpOworICAgIGlmIChjbGF6eiA9PSBudWxscHRyKSB7CisgICAgICAgIEFMT0dFKCJDYW4ndCBmaW5kIGNvbS9hbmRyb2lkL210cC9BcHBGdXNlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXBwX2Z1c2VfY2xhc3MgPSBzdGF0aWNfY2FzdDxqY2xhc3M+KGVudi0+TmV3R2xvYmFsUmVmKGNsYXp6KSk7CisgICAgaWYgKGFwcF9mdXNlX2NsYXNzID09IG51bGxwdHIpIHsKKyAgICAgICAgQUxPR0UoIkNhbid0IG9idGFpbiBnbG9iYWwgcmVmZXJlbmNlIGZvciBjb20vYW5kcm9pZC9tdHAvQXBwRnVzZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY29uc3QgaW50IHJlc3VsdCA9IGFuZHJvaWQ6OkFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoCisgICAgICAgICAgICBlbnYsICJjb20vYW5kcm9pZC9tdHAvQXBwRnVzZSIsIGdNZXRob2RzLCBORUxFTShnTWV0aG9kcykpOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gSk5JX1ZFUlNJT05fMV80OworfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL210cC9BcHBGdXNlLmphdmEgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvbXRwL0FwcEZ1c2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzA5YWQxCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL210cC9BcHBGdXNlLmphdmEKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQubXRwOworCitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvcjsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFubm90YXRpb25zLlZpc2libGVGb3JUZXN0aW5nOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7CisKKy8qKgorICogVE9ETzogUmVtb3ZlIFZpc2libGVGb3JUZXN0aW5nIGNsYXNzLgorICovCitAVmlzaWJsZUZvclRlc3RpbmcKK3B1YmxpYyBjbGFzcyBBcHBGdXNlIHsKKyAgICBzdGF0aWMgeworICAgICAgICBTeXN0ZW0ubG9hZExpYnJhcnkoImFwcGZ1c2Vfam5pIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbU5hbWU7CisgICAgcHJpdmF0ZSBmaW5hbCBUaHJlYWQgbU1lc3NhZ2VUaHJlYWQ7CisgICAgcHJpdmF0ZSBQYXJjZWxGaWxlRGVzY3JpcHRvciBtRGV2aWNlRmQ7CisKKyAgICBAVmlzaWJsZUZvclRlc3RpbmcKKyAgICBBcHBGdXNlKFN0cmluZyBuYW1lKSB7CisgICAgICAgIG1OYW1lID0gbmFtZTsKKyAgICAgICAgbU1lc3NhZ2VUaHJlYWQgPSBuZXcgVGhyZWFkKG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIG5hdGl2ZV9zdGFydF9hcHBfZnVzZV9sb29wKG1EZXZpY2VGZC5nZXRGZCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQFZpc2libGVGb3JUZXN0aW5nCisgICAgdm9pZCBtb3VudChTdG9yYWdlTWFuYWdlciBzdG9yYWdlTWFuYWdlcikgeworICAgICAgICBtRGV2aWNlRmQgPSBzdG9yYWdlTWFuYWdlci5tb3VudEFwcEZ1c2UobU5hbWUpOworICAgICAgICBtTWVzc2FnZVRocmVhZC5zdGFydCgpOworICAgIH0KKworICAgIEBWaXNpYmxlRm9yVGVzdGluZworICAgIHZvaWQgY2xvc2UoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBSZW1vdGUgc2lkZSBvZiBQYXJjZWxGaWxlRGVzY3JpcHRvciBpcyB0cmFja2luZyB0aGUgY2xvc2Ugb2YgbURldmljZUZkLCBhbmQgdW5tb3VudAorICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgZnVzZSBmaWxlIHN5c3RlbS4gVGhlIG1NZXNzYWdlVGhyZWFkIHdpbGwgcmVjZWl2ZSBGVVNFX0ZPUkdFVCwgYW5kCisgICAgICAgICAgICAvLyB0aGVuIHRlcm1pbmF0ZSBpdHNlbGYuCisgICAgICAgICAgICBtRGV2aWNlRmQuY2xvc2UoKTsKKyAgICAgICAgICAgIG1NZXNzYWdlVGhyZWFkLmpvaW4oKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBMb2cuZShNdHBEb2N1bWVudHNQcm92aWRlci5UQUcsICJGYWlsZWQgdG8gY2xvc2UgZGV2aWNlIEZELiIsIGV4cCk7CisgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGV4cCkgeworICAgICAgICAgICAgTG9nLmUoTXRwRG9jdW1lbnRzUHJvdmlkZXIuVEFHLCAiRmFpbGVkIHRvIHRlcm1pbmF0ZSBtZXNzYWdlIHRocmVhZC4iLCBleHApOworICAgICAgICB9CisgICAgfQorCisgICAgQFZpc2libGVGb3JUZXN0aW5nCisgICAgRmlsZSBnZXRNb3VudFBvaW50KCkgeworICAgICAgICByZXR1cm4gbmV3IEZpbGUoIi9tbnQvYXBwZnVzZS8iICsgUHJvY2Vzcy5teVVpZCgpICsgIl8iICsgbU5hbWUpOworICAgIH0KKworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0YXJ0X2FwcF9mdXNlX2xvb3AoaW50IGZkKTsKK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9tdHAvTXRwRG9jdW1lbnRzUHJvdmlkZXIuamF2YSBiL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9tdHAvTXRwRG9jdW1lbnRzUHJvdmlkZXIuamF2YQppbmRleCA1N2E2OGJhLi4zNTczNTM2IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvbXRwL010cERvY3VtZW50c1Byb3ZpZGVyLmphdmEKKysrIGIvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL210cC9NdHBEb2N1bWVudHNQcm92aWRlci5qYXZhCkBAIC0yNDUsNyArMjQ1LDYgQEAKICAgICB2b2lkIGNsb3NlRGV2aWNlKGludCBkZXZpY2VJZCkgdGhyb3dzIElPRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CiAgICAgICAgIHN5bmNocm9uaXplZCAobURldmljZUxpc3RMb2NrKSB7CiAgICAgICAgICAgICBjbG9zZURldmljZUludGVybmFsKGRldmljZUlkKTsKLSAgICAgICAgICAgIG1EYXRhYmFzZS5yZW1vdmVEZXZpY2VSb3dzKGRldmljZUlkKTsKICAgICAgICAgfQogICAgICAgICBtUm9vdFNjYW5uZXIucmVzdW1lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL210cC9Sb290U2Nhbm5lci5qYXZhIGIvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL210cC9Sb290U2Nhbm5lci5qYXZhCmluZGV4IDYxOWVmNTQuLmMyMTZjNzcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9tdHAvUm9vdFNjYW5uZXIuamF2YQorKysgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvbXRwL1Jvb3RTY2FubmVyLmphdmEKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgICAgICBQcm9jZXNzLnNldFRocmVhZFByaW9yaXR5KFByb2Nlc3MuVEhSRUFEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpOwogICAgICAgICAgICAgaW50IHBvbGxpbmdDb3VudCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoIVRocmVhZC5pbnRlcnJ1cHRlZCgpKSB7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhbmdlZCA9IGZhbHNlOwogCiAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGRldmljZXMuCkBAIC0xNDcsOCArMTQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKHBvbGxpbmdDb3VudCA+IFNIT1JUX1BPTExJTkdfVElNRVMgPwogICAgICAgICAgICAgICAgICAgICAgICAgTE9OR19QT0xMSU5HX0lOVEVSVkFMIDogU0hPUlRfUE9MTElOR19JTlRFUlZBTCk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZXhwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSB3aGlsZSBjb25kaXRpb24gaGFuZGxlcyB0aGUgaW50ZXJydXB0ZWQgZmxhZy4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL210cC9BcHBGdXNlVGVzdC5qYXZhIGIvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL210cC9BcHBGdXNlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NmQ4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci90ZXN0cy9zcmMvY29tL2FuZHJvaWQvbXRwL0FwcEZ1c2VUZXN0LmphdmEKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQubXRwOworCitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuc3lzdGVtLkVycm5vRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuc3lzdGVtLk9zOworaW1wb3J0IGFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2U7CitpbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLlNtYWxsVGVzdDsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworQFNtYWxsVGVzdAorcHVibGljIGNsYXNzIEFwcEZ1c2VUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKKyAgICAvKioKKyAgICAgKiBUT0RPOiBFbmFibGUgdGhpcyB0ZXN0IGFmdGVyIGFkZGluZyBTRUxpbnV4IHBvbGljaWVzIGZvciBhcHBmdXNlLgorICAgICAqIEB0aHJvd3MgRXJybm9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgZGlzYWJsZWRfdGVzdEJhc2ljKCkgdGhyb3dzIEVycm5vRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0b3JhZ2VNYW5hZ2VyIHN0b3JhZ2VNYW5hZ2VyID0gZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoU3RvcmFnZU1hbmFnZXIuY2xhc3MpOworICAgICAgICBmaW5hbCBBcHBGdXNlIGFwcEZ1c2UgPSBuZXcgQXBwRnVzZSgidGVzdCIpOworICAgICAgICBhcHBGdXNlLm1vdW50KHN0b3JhZ2VNYW5hZ2VyKTsKKyAgICAgICAgZmluYWwgRmlsZSBmaWxlID0gYXBwRnVzZS5nZXRNb3VudFBvaW50KCk7CisgICAgICAgIGFzc2VydFRydWUoZmlsZS5pc0RpcmVjdG9yeSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIE9zLnN0YXQoZmlsZS5nZXRQYXRoKCkpLnN0X2lubyk7CisgICAgICAgIGFwcEZ1c2UuY2xvc2UoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgxICE9IE9zLnN0YXQoZmlsZS5nZXRQYXRoKCkpLnN0X2lubyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL210cC9NdHBNYW5hZ2VyVGVzdC5qYXZhIGIvcGFja2FnZXMvTXRwRG9jdW1lbnRzUHJvdmlkZXIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL210cC9NdHBNYW5hZ2VyVGVzdC5qYXZhCmluZGV4IGVkNjE3ZTcuLjVlOTVlNGYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL010cERvY3VtZW50c1Byb3ZpZGVyL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9tdHAvTXRwTWFuYWdlclRlc3QuamF2YQorKysgYi9wYWNrYWdlcy9NdHBEb2N1bWVudHNQcm92aWRlci90ZXN0cy9zcmMvY29tL2FuZHJvaWQvbXRwL010cE1hbmFnZXJUZXN0LmphdmEKQEAgLTYxLDggKzYxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBCb29sZWFuIGNhbGwoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWFuYWdlci5yZWFkRXZlbnQobVVzYkRldmljZS5nZXREZXZpY2VJZCgpLCBzaWduYWwpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWFuYWdlci5yZWFkRXZlbnQobVVzYkRldmljZS5nZXREZXZpY2VJZCgpLCBzaWduYWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIGV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL0FuZHJvaWRNYW5pZmVzdC54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCA1YTZmMWQxLi5hZjlkMjUxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvQW5kcm9pZE1hbmlmZXN0LnhtbApAQCAtMTcsOSArMTcsNyBAQAogICovCiAtLT4KIDxtYW5pZmVzdCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCi0gICAgcGFja2FnZT0iY29tLmFuZHJvaWQucHJpbnRzcG9vbGVyIgotICAgIGFuZHJvaWQ6dmVyc2lvbk5hbWU9IjEiCi0gICAgYW5kcm9pZDp2ZXJzaW9uQ29kZT0iMSI+CisgICAgcGFja2FnZT0iY29tLmFuZHJvaWQucHJpbnRzcG9vbGVyIj4KIAogICAgIDwhLS0gQWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGNhbGwgQVBJcyB0aGF0IGdpdmUgaXQgYWNjZXNzIHRvIGFsbCBwcmludCBqb2JzCiAgICAgICAgICBvbiB0aGUgZGV2aWNlLiBVc3VhbGx5IGFuIGFwcCBjYW4gYWNjZXNzIG9ubHkgdGhlIHByaW50IGpvYnMgaXQgY3JlYXRlZC4gLS0+CkBAIC00MCw2ICszOCw4IEBACiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLnByaW50c3Bvb2xlci5wZXJtaXNzaW9uLkFDQ0VTU19BTExfUFJJTlRfSk9CUyIvPgogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uV0FLRV9MT0NLIi8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5TVEFSVF9QUklOVF9TRVJWSUNFX0NPTkZJR19BQ1RJVklUWSIvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX0NPQVJTRV9MT0NBVElPTiIvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX0ZJTkVfTE9DQVRJT04iLz4KIAogICAgIDxhcHBsaWNhdGlvbgogICAgICAgICBhbmRyb2lkOmFsbG93Q2xlYXJVc2VyRGF0YT0idHJ1ZSIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvZHJhd2FibGUvaWNfaW5mby54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL2RyYXdhYmxlL2ljX2luZm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlY2QxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL2RyYXdhYmxlL2ljX2luZm8ueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhLS0KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPHZlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgIGFuZHJvaWQ6d2lkdGg9IjI0ZHAiCisgICAgICAgIGFuZHJvaWQ6aGVpZ2h0PSIyNGRwIgorICAgICAgICBhbmRyb2lkOnZpZXdwb3J0V2lkdGg9IjI0LjAiCisgICAgICAgIGFuZHJvaWQ6dmlld3BvcnRIZWlnaHQ9IjI0LjAiPgorICAgIDxwYXRoCisgICAgICAgIGFuZHJvaWQ6cGF0aERhdGE9Ik0xMiwyQzYuNDgsMiAyLDYuNDggMiwxMnM0LjQ4LDEwIDEwLDEwIDEwLC00LjQ4IDEwLC0xMFMxNy41MiwyIDEyLDJ6TTEzLDE3aC0ydi02aDJ2NnpNMTMsOWgtMkwxMSw3aDJ2MnoiCisgICAgICAgIGFuZHJvaWQ6ZmlsbENvbG9yPSIjNzU3NTc1Ii8+Cis8L3ZlY3Rvcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL2xheW91dC9wcmludGVyX2Ryb3Bkb3duX2l0ZW0ueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy9sYXlvdXQvcHJpbnRlcl9kcm9wZG93bl9pdGVtLnhtbAppbmRleCA0MzgxYTdhLi5lMGVmYmM0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL2xheW91dC9wcmludGVyX2Ryb3Bkb3duX2l0ZW0ueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvbGF5b3V0L3ByaW50ZXJfZHJvcGRvd25faXRlbS54bWwKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJlbmQiCiAgICAgICAgICAgICBhbmRyb2lkOnRleHRJc1NlbGVjdGFibGU9ImZhbHNlIgogICAgICAgICAgICAgYW5kcm9pZDp2aXNpYmlsaXR5PSJnb25lIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yUHJpbWFyeSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeSIKICAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiPgogICAgICAgICA8L1RleHRWaWV3PgogCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL2xheW91dC9wcmludGVyX2xpc3RfaXRlbS54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL2xheW91dC9wcmludGVyX2xpc3RfaXRlbS54bWwKaW5kZXggN2JjMTQ0YS4uNTBmNDRjMiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy9sYXlvdXQvcHJpbnRlcl9saXN0X2l0ZW0ueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvbGF5b3V0L3ByaW50ZXJfbGlzdF9pdGVtLnhtbApAQCAtMzgsNiArMzgsNyBAQAogICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgogICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKICAgICAgICAgYW5kcm9pZDpkdXBsaWNhdGVQYXJlbnRTdGF0ZT0idHJ1ZSI+CiAKICAgICAgICAgPFRleHRWaWV3CkBAIC02MiwxMCArNjMsMjAgQEAKICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJlbmQiCiAgICAgICAgICAgICBhbmRyb2lkOnRleHRJc1NlbGVjdGFibGU9ImZhbHNlIgogICAgICAgICAgICAgYW5kcm9pZDp2aXNpYmlsaXR5PSJnb25lIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yUHJpbWFyeSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeSIKICAgICAgICAgICAgIGFuZHJvaWQ6ZHVwbGljYXRlUGFyZW50U3RhdGU9InRydWUiPgogICAgICAgICA8L1RleHRWaWV3PgogCiAgICAgPC9MaW5lYXJMYXlvdXQ+CiAKKyAgICA8SW1hZ2VWaWV3CisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvbW9yZV9pbmZvIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjRkaXAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjRkaXAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpjb250ZW50RGVzY3JpcHRpb249IkBzdHJpbmcvcHJpbnRlcl9pbmZvX2Rlc2MiCisgICAgICAgIGFuZHJvaWQ6c3JjPSJAZHJhd2FibGUvaWNfaW5mbyIKKyAgICAgICAgYW5kcm9pZDp2aXNpYmlsaXR5PSJnb25lIj4KKyAgICA8L0ltYWdlVmlldz4KKwogPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hZi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCmluZGV4IGYyNjNhZjcuLjBmMzRlOWUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBkcnVra2VycyBnZXZpbmQ8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gZHJ1a2tlciBnZXZpbmQ8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Ik1lZXIgaW5saWd0aW5nIG9vciBoaWVyZGllIGRydWtrZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJLaWVzIGRydWtkaWVucyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iU29layB0YW5zIHZpciBkcnVra2VycyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkdlZW4gZHJ1a2RpZW5zdGUgaXMgZ2Vha3RpdmVlciBuaWUiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCmluZGV4IGE5M2UwYTkuLmE2ZTFhYmYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4Yqg4Ymz4Yia4YuO4Ym9IOGJsOGMiOGKneGJsOGLi+GIjTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOGKoOGJs+GImuGLjuGJvSDhibDhjIjhip3hibDhi4vhiI08L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLhibDhjKjhiJvhiKog4Yuo4Yua4YiFIOGKoOGJs+GImiDhiJjhiKjhjIMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLhi6jhiIXhibXhiJjhibUg4Yqg4YyI4YiN4YyN4YiO4Ym1IOGLreGIneGIqOGMoSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i4Yqg4Ymz4Yia4YuO4Ym94YqVIOGJoOGImOGNiOGIiOGMjSDhiIvhi60iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLhiJ3hipXhiJ0g4Yuo4YiF4Ym14YiY4Ym1IOGKoOGMiOGIjeGMjeGIjuGJtuGJvSDhiqDhiI3hipDhiYHhiJ0iPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWFyL3N0cmluZ3MueG1sCmluZGV4IGM5YTZhMzk1Li4wMjkxYjdkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbApAQCAtNjMsNiArNjMsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7YqtmFINin2YTYudir2YjYsSDYudmE2YkgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+INmF2YYg2KfZhNi32KfYqNi52KfYqjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPtiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYt9in2KjYudipINmI2KfYrdiv2KkgKDx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPik8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLZhdiy2YrYryDZhdmGINin2YTZhdi52YTZiNmF2KfYqiDYrdmI2YQg2YfYsNmHINin2YTYt9in2KjYudipIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i2KfYrtiq2LEg2K7Yr9mF2Kkg2LfYqNin2LnYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i2KfZhNio2K3YqyDYudmGINi32KfYqNi52KfYqiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+ItmE2YUg2YrYqtmFINiq2YXZg9mK2YYg2KPZiiDYrtiv2YXYp9iqINi32KjYp9i52KkiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hei1yQVovc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1hei1yQVovc3RyaW5ncy54bWwKaW5kZXggNWFlYjdiYi4uZTE2Mjc5MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWF6LXJBWi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gcHJpbnRlciB0YXDEsWxkxLE8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gcHJpbnRlciB0YXDEsWxkxLE8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJCdSBwcmludGVyIGhhcXHEsW5kYSBkYWhhIMmZdHJhZmzEsSBtyZlsdW1hdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IsOHYXAgeGlkbcmZdGluaSBzZcOnaW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlByaW50ZXIgYXh0YXLEsWzEsXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJIZcOnIGJpciDDp2FwIHhpZG3JmXRpIGFrdGl2IGVkaWxtyZl5aWIiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKaW5kZXggNzQ4NDcxOC4uZDZlNDM5YyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYitzcitMYXRuL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWIrc3IrTGF0bi9zdHJpbmdzLnhtbApAQCAtNjAsNiArNjAsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9ImZldyI+UHJvbmHEkWVuYSBzdSA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gxaF0YW1wYcSNYTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+UHJvbmHEkWVubyBqZSA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gxaF0YW1wYcSNYTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iSm/FoSBpbmZvcm1hY2lqYSBvIG92b20gxaF0YW1wYcSNdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+Ikl6YWJlcml0ZSB1c2x1Z3UgxaF0YW1wYW5qYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iUHJldHJhZ2EgxaF0YW1wYcSNYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik5pamVkbmEgdXNsdWdhIMWhdGFtcGFuamEgbmlqZSBvbW9ndcSHZW5hIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbAppbmRleCA5M2ZlZWE1Li5jMjM5MzU0MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+0J3QsNC80LXRgNC10L3QuCDRgdCwIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDQv9GA0LjQvdGC0LXRgNCwPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+0J3QsNC80LXRgNC10L0g0LUgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+INC/0YDQuNC90YLQtdGAPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLQntGJ0LUg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDRgtC+0LfQuCDQv9GA0LjQvdGC0LXRgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+ItCY0LfQsdC40YDQsNC90LUg0L3QsCDRg9GB0LvRg9Cz0LAg0LfQsCDQvtGC0L/QtdGH0LDRgtCy0LDQvdC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLQotGK0YDRgdC10L3QtSDQvdCwINC/0YDQuNC90YLQtdGA0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLQndGP0LzQsCDQsNC60YLQuNCy0LjRgNCw0L3QuCDRg9GB0LvRg9Cz0Lgg0LfQsCDQvtGC0L/QtdGH0LDRgtCy0LDQvdC1Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sCmluZGV4IDBlZWQ5YWEuLjE3YTFhMzUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWJuLXJCRC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPuCmn+CmvyDgpq7gp4Hgpqbgp43gprDgppUg4KaW4KeB4KaB4Kac4KeHIOCmquCmvuCmk+Cmr+CmvOCmviDgppfgp4fgppvgp4c8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPuCmn+CmvyDgpq7gp4Hgpqbgp43gprDgppUg4KaW4KeB4KaB4Kac4KeHIOCmquCmvuCmk+Cmr+CmvOCmviDgppfgp4fgppvgp4c8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLgpo/gpocg4Kau4KeB4Kam4KeN4Kaw4KaV4Kaf4Ka/4KawIOCmrOCmv+Cmt+Cmr+CmvOCnhyDgpobgprDgp4sg4Kak4Kal4KeN4KavIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i4Kau4KeB4Kam4KeN4Kaw4KajIOCmquCmsOCmv+Cmt+Cnh+CmrOCmviDgpprgpq/gprzgpqgg4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgpq7gp4Hgpqbgp43gprDgppXgppfgp4HgprLgpr8g4KaF4Kao4KeB4Ka44Kao4KeN4Kan4Ka+4KaoIOCmleCmsOCmviDgprngpprgp43gppvgp4ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLgpq7gp4Hgpqbgp43gprDgpqMg4Kaq4Kaw4Ka/4Ka34KeH4Kas4Ka+IOCmuOCmleCnjeCmt+CmriDgpqjgp4fgpociPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCmluZGV4IDAzZDMwNjAuLjI1NTEyMDYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlNcJ2hhbiB0cm9iYXQgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IGltcHJlc3NvcmVzPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+U1wnaGEgdHJvYmF0IDx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBpbXByZXNzb3JhPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTcOpcyBpbmZvcm1hY2nDsyBzb2JyZSBhcXVlc3RhIGltcHJlc3NvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJTZWxlY2Npw7MgZGVsIHNlcnZlaSBkXCdpbXByZXNzacOzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJDZXJjYSBkXCdpbXByZXNzb3JlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik5vIGhpIGhhIGNhcCBzZXJ2ZWkgZFwnaW1wcmVzc2nDsyBhY3RpdmF0Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbAppbmRleCA0MTRhYmY5Li4wYmI0OGY4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbApAQCAtNjEsNiArNjEsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5OYWxlemVuw6kgdGlza8Ohcm55OiA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz48L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5OYWxlemVuw6kgdGlza8Ohcm55OiA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz48L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IkRhbMWhw60gaW5mb3JtYWNlIG/CoHTDqXRvIHRpc2vDoXJuxJsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJadm9sdGUgc2x1xb5idSB0aXNrdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iVnlobGVkw6F2w6Fuw60gdGlza8OhcmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iTmVqc291IGFrdGl2b3bDoW55IMW+w6FkbsOpIHRpc2tvdsOpIHNsdcW+YnkiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCmluZGV4IDg5M2M5OTEuLmE5ZDA0MmIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5EZXIgYmxldiBmdW5kZXQgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXJlPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5EZXIgYmxldiBmdW5kZXQgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXJlPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJGbGVyZSBvcGx5c25pbmdlciBvbSBkZW5uZSBwcmludGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iVsOmbGcgdWRza3JpZnRzdGplbmVzdGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlPDuGdlciBlZnRlciBwcmludGVyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkluZ2VuIHVkc2tyaXZuaW5nc3RqZW5lc3RlciBlciBha3RpdmVyZXQiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCmluZGV4IGY2ZjUzZWEuLjRlYjVkNmE5IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gRHJ1Y2tlciBnZWZ1bmRlbjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBEcnVja2VyIGdlZnVuZGVuPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJXZWl0ZXJlIEluZm9ybWF0aW9uZW4gw7xiZXIgZGllc2VuIERydWNrZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJEcnVja2RpZW5zdCBhdXN3w6RobGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJTdWNoZSBuYWNoIERydWNrZXJuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iS2VpbmUgRHJ1Y2tkaWVuc3RlIGFrdGl2aWVydCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKaW5kZXggMTBkZGY2Mi4uY2QzNTc4NSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+zpLPgc6tzrjOt866zrHOvSA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gzrXOus+Ez4XPgM+Jz4TOrc+CPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+zpLPgc6tzrjOt866zrUgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IM61zrrPhM+Fz4DPic+Ezq7PgjwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Is6gzrXPgc65z4PPg8+Mz4TOtc+BzrXPgiDPgM67zrfPgc6/z4bOv8+Bzq/Otc+CIM+Dz4fOtc+EzrnOus6sIM68zrUgzrHPhc+Ez4zOvSDPhM6/zr0gzrXOus+Ez4XPgM+Jz4TOriI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+Is6Vz4DOuc67zq3Ovs+EzrUgz4XPgM63z4HOtc+Dzq/OsSDOtc66z4TPjc+Az4nPg863z4IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+Is6Rzr3Osc62zq7PhM63z4POtyDOs865zrEgzrXOus+Ez4XPgM+Jz4TOrc+CIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4izpTOtc69IM6tz4fOv8+Fzr0gzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8gz4XPgM63z4HOtc+Dzq/Otc+CIM61zrrPhM+Nz4DPic+DzrfPgiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbAppbmRleCBhNTQwYWM1Li43NTNkOWRmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1lbi1yQVUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBwcmludGVycyBmb3VuZDwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBwcmludGVyIGZvdW5kPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHByaW50ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJDaG9vc2UgcHJpbnQgc2VydmljZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iU2VhcmNoaW5nIGZvciBwcmludGVycyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik5vIHByaW50IHNlcnZpY2VzIGVuYWJsZWQiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKaW5kZXggYTU0MGFjNS4uNzUzZDlkZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gcHJpbnRlcnMgZm91bmQ8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gcHJpbnRlciBmb3VuZDwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Ik1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBwcmludGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iQ2hvb3NlIHByaW50IHNlcnZpY2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlNlYXJjaGluZyBmb3IgcHJpbnRlcnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJObyBwcmludCBzZXJ2aWNlcyBlbmFibGVkIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCmluZGV4IGE1NDBhYzUuLjc1M2Q5ZGYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVuLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1lbi1ySU4vc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXJzIGZvdW5kPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXIgZm91bmQ8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcHJpbnRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IkNob29zZSBwcmludCBzZXJ2aWNlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJTZWFyY2hpbmcgZm9yIHByaW50ZXJzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iTm8gcHJpbnQgc2VydmljZXMgZW5hYmxlZCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbAppbmRleCA4OTI5YWE4Li4xYTBkNWQ4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlNlIGVuY29udHJhcm9uIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbXByZXNvcmFzLjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlNlIGVuY29udHLDsyA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gaW1wcmVzb3JhLjwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Ik3DoXMgaW5mb3JtYWNpw7NuIHNvYnJlIGVzdGEgaW1wcmVzb3JhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iRWxlZ2lyIHNlcnZpY2lvIGRlIGltcHJlc2nDs24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IkJ1c2NhbmRvIGltcHJlc29yYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJObyBoYXkgc2VydmljaW9zIGRlIGltcHJlc2nDs24gaGFiaWxpdGFkb3MiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCmluZGV4IDdjZmQ5MmEuLmVhYzU2OGQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlNlIGhhbiBlbmNvbnRyYWRvIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbXByZXNvcmFzPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+U2UgaGEgZW5jb250cmFkbyA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gaW1wcmVzb3JhPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTcOhcyBpbmZvcm1hY2nDs24gc29icmUgZXN0YSBpbXByZXNvcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJTZWxlY2Npb25hciBzZXJ2aWNpbyBkZSBpbXByZXNpw7NuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJCdXNjYW5kbyBpbXByZXNvcmFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iTm8gaGF5IHNlcnZpY2lvcyBkZSBpbXByZXNpw7NuIGhhYmlsaXRhZG9zIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZXQtckVFL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZXQtckVFL3N0cmluZ3MueG1sCmluZGV4IGVlOTNiY2YuLjJjZGUyNTggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWV0LXJFRS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+TGVpdGkgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXJpdDwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPkxlaXRpIDx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBwcmludGVyPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJMaXNhdGVhdmUgc2VsbGUgcHJpbnRlcmkga29odGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJQcmluZGl0ZWVudXNlIHZhbGltaW5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJQcmludGVyaXRlIG90c2ltaW5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iw5xodGVnaSBwcmludGltaXN0ZWVudXN0IHBvbGUgbHViYXR1ZCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWV1LXJFUy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWV1LXJFUy9zdHJpbmdzLnhtbAppbmRleCA4ODJlODg4Li45NmEzMjczIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ldS1yRVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZXUtckVTL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbnByaW1hZ2FpbHUgYXVya2l0dSBkaXJhPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IGlucHJpbWFnYWlsdSBhdXJraXR1IGRhPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iSW5mb3JtYXppbyBnZWhpYWdvIGlucHJpbWFnYWlsdWFyaSBidXJ1eiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IkF1a2VyYXR1IGlucHJpbWF0emUtemVyYml0enVhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJJbnByaW1hZ2FpbHVhayBiaWxhdHplbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkV6IGRhZ28gZ2FpdHV0YSBpbnByaW1hdHpla28gemVyYml0enVyaWsiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCmluZGV4IDEwNzQzZTcuLmZkYzM5ODkgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g2obYp9m+2q/YsSDbjNin2YHYqiDYtNivPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g2obYp9m+2q/YsSDbjNin2YHYqiDYtNivPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i2KfYt9mE2KfYudin2Kog2KjbjNi02KrYsSDYr9ix2KjYp9ix2Ycg2obYp9m+2q/YsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+Itin2YbYqtiu2KfYqCDYs9ix2YjbjNizINqG2KfZviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i2K/Ysdit2KfZhCDYrNiz2KrYrNmI24wg2obYp9m+2q/YsdmH2KciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLZh9uM2oYg2K7Yr9mF2KfYqiDahtin2b7bjCDZgdi52KfZhCDZhtuM2LPYqiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKaW5kZXggZWUzNWM0MS4uOTI2NzM5MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHR1bG9zdGludGEgbMO2eWRldHR5PC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHR1bG9zdGluIGzDtnlkZXR0eTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTGlzw6R0aWV0b2phIHTDpHN0w6QgdHVsb3N0aW1lc3RhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iVmFsaXRzZSB0dWxvc3R1c3BhbHZlbHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IkV0c2l0w6TDpG4gdHVsb3N0aW1pYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkVpIGvDpHl0w7Zzc8OkIG9sZXZpYSB0dWxvc3R1c3BhbHZlbHVpdGEiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKaW5kZXggZWI5OTQ0MS4uYmZiNDg2MiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZyLXJDQS9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IGltcHJpbWFudGUgdHJvdXbDqWU8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbXByaW1hbnRlIHRyb3V2w6llczwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IlBsdXMgZFwnaW5mb3JtYXRpb24gc3VyIGNldHRlIGltcHJpbWFudGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJTw6lsZWN0aW9ubmVyIGxlIHNlcnZpY2UgZFwnaW1wcmVzc2lvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iUmVjaGVyY2hlIGRcJ2ltcHJpbWFudGVzIGVuIGNvdXJzLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iQXVjdW4gc2VydmljZSBkXCdpbXByZXNzaW9uIGFjdGl2w6kiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCmluZGV4IGMwZWVjZmIuLmRlNTVlMjkgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz7CoGltcHJpbWFudGUgdHJvdXbDqWU8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPsKgaW1wcmltYW50ZXMgdHJvdXbDqWVzPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJQbHVzIGRcJ2luZm9ybWF0aW9ucyBzdXIgY2V0dGUgaW1wcmltYW50ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IlPDqWxlY3Rpb25uZXIgbGUgc2VydmljZSBkXCdpbXByZXNzaW9uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJSZWNoZXJjaGUgZFwnaW1wcmltYW50ZXMgZW4gY291cnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJBdWN1biBzZXJ2aWNlIGRcJ2ltcHJlc3Npb24gYWN0aXbDqSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWdsLXJFUy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWdsLXJFUy9zdHJpbmdzLnhtbAppbmRleCBiNGExZWM2Li5kYzY2MDg0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1nbC1yRVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPkVuY29udHLDoXJvbnNlIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbXByZXNvcmFzPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+RW5jb250cm91c2UgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IGltcHJlc29yYTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Ik3DoWlzIGluZm9ybWFjacOzbiBzb2JyZSBlc3RhIGltcHJlc29yYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IkVzY29sbGVyIHNlcnZpem8gZGUgaW1wcmVzacOzbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iQnVzY2EgZGUgaW1wcmVzb3JhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik5vbiBoYWkgc2Vydml6b3MgZGUgaW1wcmVzacOzbiBhY3RpdmFkb3MiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKaW5kZXggOGY3Nzk1My4uZDA1YTM5MiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtZ3UtcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWd1LXJJTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOCqquCrjeCqsOCqv+CqqOCrjeCqn+CqsOCrjeCquCDgqq7gqrPgq43gqq/gqr7gqoI8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgqqrgq43gqrDgqr/gqqjgq43gqp/gqrDgq43gqrgg4Kqu4Kqz4KuN4Kqv4Kq+4KqCPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4KqGIOCqquCrjeCqsOCqv+CqqOCrjeCqn+CqsCDgqrXgqr/gqrbgq4cg4Kq14Kqn4KuBIOCqruCqvuCqueCqv+CqpOCrgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuCqquCrjeCqsOCqv+CqqOCrjeCqnyDgqrjgq4fgqrXgqr4g4Kqq4Kq44KqC4KqmIOCqleCqsOCriyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i4Kqq4KuN4Kqw4Kq/4Kqo4KuN4Kqf4Kqw4KuN4Kq4IOCqruCqvuCqn+CrhyDgqrbgq4vgqqfgq4Ag4Kqw4Kq54KuN4Kqv4KuB4KqCIOCqm+CrhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuCqleCri+CqiCDgqpvgqr7gqqog4Kq44KuH4Kq14Kq+4KqTIOCquOCqleCrjeCqt+CqriDgqpXgqrDgq4fgqrIg4Kqo4Kql4KuAIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbAppbmRleCA0YzExMzIzLi44MDUxOTAwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOCkquCljeCksOCkv+CkguCkn+CksCDgpK7gpL/gpLLgpYc8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgpKrgpY3gpLDgpL/gpILgpJ/gpLAg4KSu4KS/4KSy4KWHPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4KSH4KS4IOCkquCljeCksOCkv+CkguCkn+CksCDgpJXgpYcg4KSs4KS+4KSw4KWHIOCkruClh+CkgiDgpIXgpKfgpL/gpJUg4KSc4KS+4KSo4KSV4KS+4KSw4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i4KSq4KWN4KSw4KS/4KSC4KSfIOCkuOClh+CkteCkviDgpJrgpYHgpKjgpYfgpIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IuCkquCljeCksOCkv+CkguCkn+CksCDgpJbgpYvgpJwg4KSw4KS54KS+IOCkueCliCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuCkleCli+CkiCDgpK3gpYAg4KSq4KWN4KSw4KS/4KSC4KSfIOCkuOClh+CkteCkviDgpLjgpJXgpY3gpLfgpK4g4KSo4KS54KWA4KSCIOCkueCliCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKaW5kZXggNGNlYzNiYS4uNGRhYjRjYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKQEAgLTYwLDYgKzYwLDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJmZXciPlByb25hxJFlbmEgc3UgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHBpc2HEjWE8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPlByb25hxJFlbm8gamUgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHBpc2HEjWE8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IlZpxaFlIGluZm9ybWFjaWphIG8gb3ZvbSBwaXNhxI11Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iT2RhYmVyaXRlIHVzbHVndSBpc3Bpc2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlRyYcW+ZW5qZSBwaXNhxI1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iTmlqZSBvbW9ndcSHZW5hIG5pamVkbmEgdXNsdWdhIGlzcGlzYSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKaW5kZXggYWMxYmE2ZS4uMWE1NmVlNyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IG55b210YXTDsyDDqXN6bGVsdmU8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gbnlvbXRhdMOzIMOpc3psZWx2ZTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iVG92w6FiYmkgaW5mb3Jtw6FjacOzIGVycsWRbCBhIG55b210YXTDs3LDs2wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJOeW9tdGF0w6FzaSBzem9sZ8OhbHRhdMOhcyBraXbDoWxhc3p0w6FzYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iTnlvbXRhdMOzayBrZXJlc8Opc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJOaW5jcyBlbmdlZMOpbHllemV0dCBueW9tdGF0w6FzaSBzem9sZ8OhbHRhdMOhcyI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWh5LXJBTS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWh5LXJBTS9zdHJpbmdzLnhtbAppbmRleCBkZGE2NzQ1Li43Yjk5ZGNmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1oeS1yQU0vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaHktckFNL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7Us9W/1bbVvtWl1awg1acgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+INW/1brVq9W5PC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7Us9W/1bbVvtWl1awg1acgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+INW/1brVq9W5PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i1YDVodW+1aXVrNW11aHVrCDVv9Wl1bLVpdWv1bjWgtWp1bXVuNaC1bbVttWl1oAg1aHVtdW9INW/1brVq9W51asg1bTVodW91avVtiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+ItS41bbVv9aA1aXWhCDVv9W61aXVrNW41oIg1a7VodW81aHVtdW41oLVqdW11bjWgtW21agiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+ItWP1brVq9W51bbVpdaA1asg1bjWgNW41bbVuNaC1bQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLUsdWv1b/Vq9W+1aHWgdW+1aHVriDVv9W61bTVodW2INWu1aHVvNWh1bXVuNaC1anVtdW41oLVttW21aXWgCDVudWv1aHVtiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKaW5kZXggYjIwM2UyYi4uYTk5MTI3MiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXIgZGl0ZW11a2FuPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXIgZGl0ZW11a2FuPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iSW5mb3JtYXNpIHNlbGVuZ2thcG55YSB0ZW50YW5nIHByaW50ZXIgaW5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iUGlsaWggbGF5YW5hbiBjZXRhayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iTWVuY2FyaSBwcmludGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iVGlkYWsgYWRhIGxheWFuYW4gY2V0YWsgeWFuZyBha3RpZiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAppbmRleCA2ZGZkYWJjLi5lOTNmNzAyIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1pcy1ySVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaXMtcklTL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gcHJlbnRhcmkgZmFubnN0PC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gcHJlbnRhcmFyIGZ1bmR1c3Q8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IkZyZWthcmkgdXBwbMO9c2luZ2FyIHVtIMO+ZW5uYW4gcHJlbnRhcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJWZWxkdSBwcmVudMO+asOzbnVzdHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IkxlaXRhciBhw7AgcHJlbnRhcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJFbmdpbiBwcmVudMO+asOzbnVzdGEgZXIgdmlyayI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKaW5kZXggZmQ1NDczYS4uZmZiYTM1MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHN0YW1wYW50aSB0cm92YXRlPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHN0YW1wYW50ZSB0cm92YXRhPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iVWx0ZXJpb3JpIGluZm9ybWF6aW9uaSBzdSBxdWVzdGEgc3RhbXBhbnRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iU2NlZ2xpIHNlcnZpemlvIGRpIHN0YW1wYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iUmljZXJjYSBkaSBzdGFtcGFudGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJOb24gw6ggc3RhdG8gYXR0aXZhdG8gYWxjdW4gc2Vydml6aW8gZGkgc3RhbXBhIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbAppbmRleCBkZDA2MmEzLi4yYWMxMDkzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbApAQCAtNjEsNiArNjEsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7XoNee16bXkNeVIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDXnteT16TXodeV16o8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7XoNee16bXkNeUINee15PXpNeh16ogPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i157XmdeT16Ig16DXldeh16Mg16LXnCDXnteT16TXodeqINeW15UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLXkdeX16gg16nXmdeo15XXqiDXlNeT16TXodeUIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLXnteX16TXqSDXnteT16TXodeV16oiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLXnNeQINeU15XXpNei15zXlSDXqdeZ16jXldeq15kg15TXk9ek16HXlCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKaW5kZXggMjNlNDgwOS4uMmMzYzI0ZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+5Y+w44Gu44OX44Oq44Oz44K/44GM6KaL44Gk44GL44KK44G+44GX44GfPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+5Y+w44Gu44OX44Oq44Oz44K/44GM6KaL44Gk44GL44KK44G+44GX44GfPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i44GT44Gu44OX44Oq44Oz44K/44Gu6Kmz57SwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i5Y2w5Yi344K144O844OT44K544Gu6YG45oqeIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLjg5fjg6rjg7Pjgr/jga7mpJzntKLkuK0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLkvb/nlKjjgafjgY3jgovljbDliLfjgrXjg7zjg5PjgrnjgYzjgYLjgorjgb7jgZvjgpMiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKaW5kZXggOWY4NmYwNS4uMmIwMjg1ZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMta2EtckdFL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWthLXJHRS9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4YOe4YOg4YOY4YOc4YOi4YOU4YOg4YOYIOGDnOGDkOGDnuGDneGDleGDnOGDmOGDkDwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDhg57hg6Dhg5jhg5zhg6Lhg5Thg6Dhg5gg4YOc4YOQ4YOe4YOd4YOV4YOc4YOY4YOQPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAlCA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLhg5Phg5Dhg5vhg5Dhg6Lhg5Thg5Hhg5jhg5fhg5gg4YOY4YOc4YOk4YOd4YOg4YOb4YOQ4YOq4YOY4YOQIOGDkOGDmyDhg57hg6Dhg5jhg5zhg6Lhg5Thg6Dhg5jhg6Eg4YOo4YOU4YOh4YOQ4YOu4YOU4YORIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i4YOQ4YOY4YOg4YOp4YOY4YOU4YOXIOGDkeGDlOGDreGDk+GDleGDmOGDoSDhg6Hhg5Thg6Dhg5Xhg5jhg6Hhg5giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IuGDm+GDmOGDm+GDk+GDmOGDnOGDkOGDoOGDlOGDneGDkeGDoSDhg57hg6Dhg5jhg5zhg6Lhg5Thg6Dhg5Thg5Hhg5jhg6Eg4YOr4YOY4YOU4YOR4YOQIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4YOR4YOU4YOt4YOT4YOV4YOY4YOhIOGDoeGDlOGDoOGDleGDmOGDoeGDlOGDkeGDmCDhg5Lhg5Dhg5Dhg6Xhg6Lhg5jhg6Phg6Dhg5Thg5Hhg6Phg5rhg5gg4YOQ4YOgIOGDkOGDoOGDmOGDoSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbAppbmRleCAwNWMzMDBlLi5mYzA5OWM5IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ray1yS1ovc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDQv9GA0LjQvdGC0LXRgCDRgtCw0LHRi9C70LTRizwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDQv9GA0LjQvdGC0LXRgCDRgtCw0LHRi9C70LTRizwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+ItCe0YHRiyDQv9GA0LjQvdGC0LXRgCDRgtGD0YDQsNC70Ysg0pvQvtGB0YvQvNGI0LAg0LDSm9C/0LDRgNCw0YIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLQn9GA0LjQvdGC0LXRgCDSm9GL0LfQvNC10YLRltC9INGC0LDSo9C00LDRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i0J/RgNC40L3RgtC10YDQu9C10YDQtNGWINGW0LfQtNC10YMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLQkdCw0YHRi9C/INGI0YvSk9Cw0YDRgyDSm9GL0LfQvNC10YLRgtC10YDRliDSm9C+0YHRi9C70LzQsNKT0LDQvSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWttLXJLSC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWttLXJLSC9zdHJpbmdzLnhtbAppbmRleCAwODYxZTU5Li5iNTEwOTFlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMta20tcktIL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPuGemuGegOGeg+GevuGeieGemOGfieGetuGen+GfiuGeuOGek+GelOGfhOGfh+GeluGeu+GemOGfkuGeliA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz48L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7hnprhnoDhnoPhnr7hnonhnpjhn4nhnrbhnp/hn4rhnrjhnpPhnpThn4Thn4fhnpbhnrvhnpjhn5LhnpYgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4Z6W4Z+Q4Z6P4Z+M4Z6Y4Z624Z6T4Z6U4Z6T4Z+S4Z6Q4Z+C4Z6Y4Z6i4Z+G4Z6W4Z644Z6Y4Z+J4Z624Z6f4Z+K4Z644Z6U4Z+E4Z+H4Z6W4Z674Z6Y4Z+S4Z6W4Z6T4Z+B4Z+HIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i4Z6H4Z+S4Z6a4Z6+4Z6f4oCL4Z6f4Z+B4Z6c4Z624oCL4Z6U4Z+E4Z+H4Z6W4Z674Z6Y4Z+S4Z6WIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLhnp/hn5Lhnpzhn4LhnoThnprhnoDigIvhnpjhn4nhnrbhnp/hn4rhnrjhnpPigIvhnpThn4Thn4fhnpbhnrvhnpjhn5LhnpYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLhnoLhn5LhnpjhnrbhnpPhnoDhnrbhnprhnpThnr7hnoDhnorhn4bhno7hnr7hnprhnoDhnrbhnprhnp/hn4HhnpzhnrbhnpThn4Thn4fhnpbhnrvhnpjhn5LhnpbhnpHhn4EiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwKaW5kZXggNzFiMDk4ZC4uNWQ1ZGVlOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMta24tcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOCyquCzjeCysOCyv+CyguCyn+CysOCzjeKAjOCyl+Cys+CzgSDgsqrgsqTgs43gsqTgs4bgsq/gsr7gspfgsr/gsrXgs4Y8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgsqrgs43gsrDgsr/gsoLgsp/gsrDgs43igIzgspfgsrPgs4Eg4LKq4LKk4LON4LKk4LOG4LKv4LK+4LKX4LK/4LK14LOGPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4LKIIOCyquCzjeCysOCyv+CyguCyn+CysOCzjSDgsqzgspfgs43gspfgs4Yg4LKH4LKo4LON4LKo4LK34LON4LKf4LOBIOCyruCyvuCyueCyv+CypOCyvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuCyruCzgeCypuCzjeCysOCyoyDgsrjgs4fgsrXgs4bgsq/gsqjgs43gsqjgs4Eg4LKG4LKv4LON4LKV4LOG4LKu4LK+4LKh4LK/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgsqrgs43gsrDgsr/gsoLgsp/gsrDgs43igIzigIzgspfgsrPgsr/gspfgsr7gspfgsr8g4LK54LOB4LKh4LOB4LKV4LKy4LK+4LKX4LOB4LKk4LON4LKk4LK/4LKm4LOGIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4LKv4LK+4LK14LOB4LKm4LOHIOCyruCzgeCypuCzjeCysOCyoyDgsrjgs4fgsrXgs4bgspfgsrPgsqjgs43gsqjgs4Eg4LK44LKV4LON4LKw4LK/4LKv4LKX4LOK4LKz4LK/4LK44LK/4LKy4LON4LKyIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbAppbmRleCA0NTFhYjU4Li45ODYxN2U3IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7tlITrprDthLAgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+64yAIOqygOyDieuQqDwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPu2UhOumsO2EsCA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz7rjIAg6rKA7IOJ65CoPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i7J20IO2UhOumsO2EsOyXkCDrjIDtlZwg7KCV67O0IOuNlOuztOq4sCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuyduOyHhCDshJzruYTsiqQg7ISg7YOdIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLtlITrprDthLAg6rKA7IOJIOykkSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuyCrOyaqSDqsIDriqXtlZwg7ZSE66aw7Yq4IOyEnOu5hOyKpCDsl4bsnYwiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwKaW5kZXggOThkYTA4Yy4uMmExMWZmOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMta3ktcktHL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWt5LXJLRy9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g0L/RgNC40L3RgtC10YAg0YLQsNCx0YvQu9C00Ys8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4g0L/RgNC40L3RgtC10YAg0YLQsNCx0YvQu9C00Ys8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLQkdGD0Lsg0L/RgNC40L3RgtC10YAg0LbTqdC90q/QvdC006kg0LrTqdCx0q/RgNOp06nQuiDQvNCw0LDQu9GL0LzQsNGCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i0J/RgNC40L3RgtC10YAg0LrRi9C30LzQsNGC0YvQvSDRgtCw0L3QtNC+0L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+ItCf0YDQuNC90YLQtdGA0LvQtdGAINC40LfQtNC10LvSr9Kv0LTTqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+ItCf0YDQuNC90YLQtdGALdC60YvQt9C80LDRgtGC0LDRgNGLINC40YjRgtC10YLQuNC70LPQtdC9INGN0LzQtdGBIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbG8tckxBL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbG8tckxBL3N0cmluZ3MueG1sCmluZGV4IDIwMjlmZGYuLjc4OGU1YWEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWxvLXJMQS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOC7gOC6hOC6t+C7iOC6reC6h+KAi+C6nuC6tOC6oeKAi+C6luC6t+C6geKAi+C6nuC6u+C6muKAi+C7geC6peC7ieC6pzwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDgu4DguoTgurfgu4jguq3guofigIvgup7gurTguqHigIvgupbgurfguoHigIvgup7gurvguprigIvgu4HguqXgu4nguqc8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLguoLgu43gu4nguqHgurngupngu4Dgup7gurXgu4jguqHgu4DgupXgurXguqHguoHgu4jgur3guqfguoHgurHguprgu4DguoTgurfgu4jguq3guofgup7gurTguqHgupngurXgu4kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLgu4DguqXgurfguq3guoHguprgu43guqXgurTguoHgurLgupnguoHgurLgupngup7gurTguqEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IuC6geC6s+C6peC6seC6h+C6iuC6reC6geC6q+C6suC7gOC6hOC6t+C7iOC6reC6h+C6nuC6tOC6oSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuC6muC7jeC7iOKAi+C6oeC6teKAi+C6geC6suC6meKAi+C6muC7jeKAi+C6peC6tOKAi+C6geC6suC6meKAi+C6nuC6tOC6oeKAi+C7gOC6m+C6teC6lOKAi+C7g+C6iuC7ieKAi+C6h+C6suC6meKAi+C7hOC6p+C7iSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKaW5kZXggOTcyYWJiNS4uMTgyNmU4ZSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKQEAgLTYxLDYgKzYxLDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJtYW55Ij5SYXN0YSA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gc3BhdXNkaW50dXZvPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5SYXN0YSA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gc3BhdXNkaW50dXbFszwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+IuKAnjx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPuKAnCDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iRGF1Z2lhdSBpbmZvcm1hY2lqb3MgYXBpZSDFocSvIHNwYXVzZGludHV2xIUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJQYXNpcmlua2l0ZSBzcGF1c2RpbmltbyBwYXNsYXVnxIUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IkllxaFrb21hIHNwYXVzZGludHV2xbMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJOZcSvZ2FsaW50YSBqb2tpxbMgc3BhdXNkaW5pbW8gcGFzbGF1Z8WzIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbAppbmRleCBmNTY1YjIzLi41YzE3ZWZlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbApAQCAtNjAsNiArNjAsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+QXRyYXN0cyA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz7CoHByaW50ZXJzPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5BdHJhc3RpIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPsKgcHJpbnRlcmk8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz7CoOKAlCA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJQbGHFocSBa2EgaW5mb3JtxIFjaWphIHBhciDFoW8gcHJpbnRlcmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJJenbEk2xpZXRpZXMgZHJ1a8SBxaFhbmFzIHBha2FscG9qdW11Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJQcmludGVydSBtZWtsxJPFoWFuYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik5hdiBpZXNwxJNqb3RzIG5ldmllbnMgZHJ1a2FzIHBha2FscG9qdW1zIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCmluZGV4IGY1YzA2ZDEuLmViYzExODEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW1rLXJNSy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPtCf0YDQvtC90LDRmNC00LXQvdC4INGB0LUgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+INC/0LXRh9Cw0YLQsNGHPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7Qn9GA0L7QvdCw0ZjQtNC10L3QuCDRgdC1IDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDQv9C10YfQsNGC0LDRh9C4PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i0J/QvtCy0LXRnNC1INC40L3RhNC+0YDQvNCw0YbQuNC4INC30LAg0L7QstC+0Zgg0L/QtdGH0LDRgtCw0YciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLQmNC30LHQtdGA0Lgg0YPRgdC70YPQs9CwINC/0LXRh9Cw0YLQtdGa0LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+ItCf0YDQtdCx0LDRgNGD0LLQsNGa0LUg0L/QtdGH0LDRgtCw0YfQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+ItCd0LXQvNCwINC+0LLQvtC30LzQvtC20LXQvdC4INGD0YHQu9GD0LPQuCDQt9CwINC/0LXRh9Cw0YLQtdGa0LUiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwKaW5kZXggMmQ0NWNlNS4uYzA4YTNkNCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbWwtcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4LSq4LWN4LSw4LS/4LSo4LWN4LSx4LSx4LWB4LSV4LW+IOC0leC0o+C1jeC0n+C1huC0pOC1jeC0pOC0vzwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDgtKrgtY3gtLDgtL/gtKjgtY3gtLHgtbwg4LSV4LSj4LWN4LSf4LWG4LSk4LWN4LSk4LS/PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4LSIIOC0quC1jeC0sOC0v+C0qOC1jeC0seC0seC0v+C0qOC1hiDgtJXgtYHgtLHgtL/gtJrgtY3gtJrgtYHgtLPgtY3gtLMg4LSV4LWC4LSf4LWB4LSk4LW9IOC0teC0v+C0teC0sOC0meC1jeC0meC1viI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuC0quC1jeC0sOC0v+C0qOC1jeC0seC1jSDgtLjgtYfgtLXgtKjgtIIg4LSk4LS/4LSw4LSe4LWN4LSe4LWG4LSf4LWB4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgtKrgtY3gtLDgtL/gtKjgtY3gtLHgtLHgtYHgtJXgtb7gtJXgtY3gtJXgtL7gtK/gtL8g4LSk4LS/4LSw4LSv4LWB4LSo4LWN4LSo4LWBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4LSq4LWN4LSw4LS/4LSo4LWN4LSx4LWNIOC0uOC1h+C0teC0qOC0meC1jeC0meC0s+C1iuC0qOC1jeC0qOC1geC0giDgtKrgtY3gtLDgtLXgtbzgtKTgtY3gtKTgtKjgtJXgtY3gtLfgtK7gtL7gtJXgtY3gtJXgtL/gtK/gtL/gtJ/gtY3gtJ/gtL/gtLLgtY3gtLIiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKaW5kZXggZjJjN2I3My4uZGNlZjI4ZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbW4tck1OL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW1uLXJNTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g0YXRjdCy0LvRjdCz0Ycg0L7Qu9C00YHQvtC9INCx0LDQudC90LA8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4g0YXRjdCy0LvRjdCz0Ycg0L7Qu9C00YHQvtC9INCx0LDQudC90LA8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLQrdC90Y0g0YXRjdCy0LvRjdCz0YfQuNC50L0g0YLQsNC70LDQsNGA0YUg0LTRjdC70LPRjdGA0Y3QvdCz0q/QuSDQvNGN0LTRjdGN0LvRjdC7Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i0KXRjdCy0LvRjdGFINKv0LnQu9GH0LjQu9Cz0Y3RjdCzINGB0L7QvdCz0L7RhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i0J/RgNC40L3RgtC10YAg0YXQsNC50LYg0LHQsNC50L3QsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+ItCl0Y3QstC70Y3RhSDSr9C50LvRh9C40LvQs9GN0Y3QsyDQuNC00Y3QstGF0LbSr9Kv0LvRjdGN0LPSr9C5Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbXItcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbXItcklOL3N0cmluZ3MueG1sCmluZGV4IDFjMDc5ZGMuLjM4NGYwZGUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW1yLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tci1ySU4vc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgpKrgpY3gpLDgpL/gpILgpJ/gpLAg4KSG4KSi4KSz4KSy4KS+PC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4KSq4KWN4KSw4KS/4KSC4KSf4KSwIOCkhuCkouCks+CksuClhzwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IuCkr+CkviDgpKrgpY3gpLDgpL/gpILgpJ/gpLAg4KS14KS/4KS34KSv4KWAIOCkheCkp+Ckv+CklSDgpK7gpL7gpLngpL/gpKTgpYAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLgpK7gpYHgpKbgpY3gpLDgpKMg4KS44KWH4KS14KS+IOCkqOCkv+CkteCkoeCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i4KSq4KWN4KSw4KS/4KSC4KSf4KSwIOCktuCli+Ckp+CkpCDgpIbgpLngpYciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLgpJXgpYvgpKPgpKTgpY3gpK/gpL7gpLngpYAg4KSu4KWB4KSm4KWN4KSw4KSjIOCkuOClh+CkteCkviDgpLjgpJXgpY3gpLfgpK4g4KSV4KWH4KSy4KWH4KSy4KWN4KSv4KS+IOCkqOCkvuCkueClgOCkpCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW1zLXJNWS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW1zLXJNWS9zdHJpbmdzLnhtbAppbmRleCBkNmI1ZWE3Li4xOWE2ZTc2IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbXMtck1ZL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBwZW5jZXRhayBkaXRlbXVpPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHBlbmNldGFrIGRpdGVtdWk8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJNYWtsdW1hdCBsYW5qdXQgdGVudGFuZyBwZW5jZXRhayBpbmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJQaWxpaCBwZXJraGlkbWF0YW4gY2V0YWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+Ik1lbmNhcmkgcGVuY2V0YWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJQZXJraGlkbWF0YW4gY2V0YWsgdGlkYWsgZGlkYXlha2FuIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCmluZGV4IGMzZGM0OTAuLmQzYzA2NzIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW15LXJNTS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1teS1yTU0vc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOGAheGArOGAkeGAr+GAkOGAuuGAheGAgOGAuuGAmeGAu+GArOGAuCDhgJDhgL3hgLHhgLfhgJvhgL7hgK3hgJXhgKvhgJ7hgIrhgLo8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz7hgIXhgKzhgJHhgK/hgJDhgLrhgIXhgIDhgLog4YCQ4YC94YCx4YC34YCb4YC+4YCt4YCV4YCr4YCe4YCK4YC6PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4YCk4YCV4YCb4YCE4YC64YCQ4YCsIOGAoeGAgOGAvOGAseGArOGAhOGAuuGAuCDhgJXhgK3hgK/hgJnhgK3hgK/hgJzhgLHhgLfhgJzhgKzhgJXhgKsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLhgIXhgKzhgJHhgK/hgJDhgLrhgJvhgJThgLog4YCd4YCU4YC64YCG4YCx4YCs4YCE4YC64YCZ4YC+4YCv4YCA4YCt4YCvIOGAm+GAveGAseGAuOGAgeGAu+GAmuGAuuGAleGAqyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i4YCF4YCs4YCR4YCv4YCQ4YC64YCF4YCA4YC64YCZ4YC74YCs4YC44YCA4YCt4YCvIOGAm+GAvuGArOGAlOGAseGAleGAq+GAnuGAiuGAuiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuGAleGAr+GAtuGAlOGAvuGAreGAleGAuuGAkeGAr+GAkOGAuuGAmuGAsOGAm+GAseGAuCDhgJ3hgJThgLrhgIbhgLHhgKzhgIThgLrhgJnhgL7hgK/hgJnhgLvhgKzhgLgg4YCW4YC94YCE4YC34YC64YCZ4YCR4YCs4YC44YCV4YCrIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbAppbmRleCA5NDViYmVhLi5jMzRlN2JjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gc2tyaXZlcmUgYmxlIGZ1bm5ldDwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBza3JpdmVyIGJsZSBmdW5uZXQ8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Ik1lciBpbmZvcm1hc2pvbiBvbSBkZW5uZSBwcmludGVyZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJWZWxnIHV0c2tyaWZ0c3RqZW5lc3RlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJTw7hrZXIgZXR0ZXIgc2tyaXZlcmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJJbmdlbiB1dHNrcmlmdHN0amVuZXN0ZXIgZXIgc2zDpXR0IHDDpSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW5lLXJOUC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW5lLXJOUC9zdHJpbmdzLnhtbAppbmRleCA0NWJjYzk1Li5kMTk1OWQ5IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1uZS1yTlAvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtbmUtck5QL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgpKrgpY3gpLDgpL/gpKjgpY3gpJ/gpLDgpLngpLDgpYIg4KSt4KWH4KSf4KS/4KSPPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IOCkquCljeCksOCkv+CkqOCljeCkn+CksCDgpK3gpYfgpJ/gpL/gpK/gpYs8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLgpK/gpLgg4KSq4KWN4KSw4KS/4KSo4KWN4KSf4KSw4KSV4KWLIOCkrOCkvuCksOClh+CkruCkviDgpKXgpKog4KSc4KS+4KSo4KSV4KS+4KSw4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i4KSq4KWN4KSw4KS/4KSo4KWN4KSfIOCkuOClh+CkteCkviDgpJvgpKjgpYzgpJ8g4KSX4KSw4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgpKrgpY3gpLDgpL/gpKjgpY3gpJ/gpLDgpLngpLDgpYIg4KSW4KWL4KSc4KWN4KSm4KWIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4KSV4KWB4KSo4KWIIOCkquCkqOCkvyDgpK7gpYHgpKbgpY3gpLDgpKMg4KS44KWH4KS14KS+4KS54KSw4KWCIOCkuOCkleCljeCksOCkv+CkryDgpJvgpYjgpKjgpKjgpY0iPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCmluZGV4IDc2Yzg2NTYuLjVkZjMyOTggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBwcmludGVycyBnZXZvbmRlbjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBwcmludGVyIGdldm9uZGVuPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTWVlciBpbmZvcm1hdGllIG92ZXIgZGV6ZSBwcmludGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iQWZkcnVrc2VydmljZSBraWV6ZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlByaW50ZXJzIHpvZWtlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkdlZW4gYWZkcnVrc2VydmljZXMgaW5nZXNjaGFrZWxkIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sCmluZGV4IDQ1ZmE0NjAuLjU3ZTk5NjkgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXBhLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgqKrgqY3gqLDgqL/gqbDgqJ/gqLAg4Kiu4Ki/4Kiy4KmHPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4Kiq4KmN4Kiw4Ki/4Kmw4Kif4KiwIOCoruCov+CosuCphzwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IuCoh+CouCDgqKrgqY3gqLDgqL/gqbDgqJ/gqLAg4Kis4Ki+4Kiw4KmHIOCoueCpi+CosCDgqJzgqL7gqKPgqJXgqL7gqLDgqYAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLgqKrgqY3gqLDgqL/gqbDgqJ8g4Ki44KmH4Ki14Ki+IOComuCpgeCoo+CpiyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i4Kiq4KmN4Kiw4Ki/4Kmw4Kif4KiwIOColuCpi+ConCDgqLDgqL/gqLngqL4g4Ki54KmIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4Kiq4KmN4Kiw4Ki/4Kmw4KifIOCouOCph+CoteCovuCoteCovuCogiDgqK/gqYvgqJcg4Kio4Ki54KmA4KiCIOCorOCoo+CovuCoiOCohuCogiDgqJfgqIjgqIbgqIIiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCmluZGV4IGRmM2VlOTI0Li40NDM5YWNiIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbApAQCAtNjEsNiArNjEsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5abmFsZXppb25vIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBkcnVrYXJraTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlpuYWxlemlvbm8gPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IGRydWthcmvEmTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iV2nEmWNlaiBpbmZvcm1hY2ppIG8gdGVqIGRydWthcmNlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iV3liaWVyeiB1c8WCdWfEmSBkcnVrb3dhbmlhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJTenVrYW5pZSBkcnVrYXJlayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkJyYWsgd8WCxIVjem9ueWNoIHVzxYJ1ZyBkcnVrb3dhbmlhIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCmluZGV4IDkwZGE3MmIuLjYzYmI4NjggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXB0LXJCUi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1wdC1yQlIvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbXByZXNzb3JhcyBlbmNvbnRyYWRhczwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IGltcHJlc3NvcmFzIGVuY29udHJhZGFzPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTWFpcyBpbmZvcm1hw6fDtWVzIHNvYnJlIGVzc2EgaW1wcmVzc29yYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IlNlbGVjaW9uZSBvIHNlcnZpw6dvIGRlIGltcHJlc3PDo28iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlByb2N1cmFuZG8gaW1wcmVzc29yYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJOZW5odW0gc2VydmnDp28gZGUgaW1wcmVzc8OjbyBhdGl2YWRvIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sCmluZGV4IDk5YmJkODEuLmQzNjRlZjQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IGltcHJlc3NvcmFzIGVuY29udHJhZGFzPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IGltcHJlc3NvcmEgZW5jb250cmFkYTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTWFpcyBpbmZvcm1hw6fDtWVzIGFjZXJjYSBkZXN0YSBpbXByZXNzb3JhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iRXNjb2xoZXIgbyBzZXJ2acOnbyBkZSBpbXByZXNzw6NvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJBIHByb2N1cmFyIGltcHJlc3NvcmFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iTmVuaHVtIHNlcnZpw6dvIGRlIGltcHJlc3PDo28gYXRpdmFkbyI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKaW5kZXggOTBkYTcyYi4uNjNiYjg2OCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBpbXByZXNzb3JhcyBlbmNvbnRyYWRhczwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IGltcHJlc3NvcmFzIGVuY29udHJhZGFzPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTWFpcyBpbmZvcm1hw6fDtWVzIHNvYnJlIGVzc2EgaW1wcmVzc29yYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IlNlbGVjaW9uZSBvIHNlcnZpw6dvIGRlIGltcHJlc3PDo28iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlByb2N1cmFuZG8gaW1wcmVzc29yYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJOZW5odW0gc2VydmnDp28gZGUgaW1wcmVzc8OjbyBhdGl2YWRvIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbAppbmRleCA0Y2ZiOGFiLi41MWRmZTdhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbApAQCAtNjAsNiArNjAsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gZGUgaW1wcmltYW50ZSBnxINzaXRlPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IGltcHJpbWFudMSDIGfEg3NpdMSDPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJNYWkgbXVsdGUgaW5mb3JtYcibaWkgZGVzcHJlIGFjZWFzdMSDIGltcHJpbWFudMSDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iQWxlZ2XIm2kgc2VydmljaXVsIGRlIHByaW50YXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJTZSBjYXV0xIMgaW1wcmltYW50ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik5pY2l1biBzZXJ2aWNpdSBkZSBwcmludGFyZSBhY3RpdmF0Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbAppbmRleCBmYjQ5MzMwLi42YmExMDQ2IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbApAQCAtNjEsNiArNjEsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im1hbnkiPtCd0LDQudC00LXQvdC+IDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPsKg0L/RgNC40L3RgtC10YDQvtCyPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7QndCw0LnQtNC10L3RiyA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz7CoNC/0YDQuNC90YLQtdGA0LA8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz7CoOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLQn9C+0LTRgNC+0LHQvdGL0LUg0YHQstC10LTQtdC90LjRjyDQviDQv9GA0LjQvdGC0LXRgNC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i0JLRi9Cx0LXRgNC40YLQtSDRgdC70YPQttCx0YMg0L/QtdGH0LDRgtC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLQn9C+0LjRgdC6INC/0YDQuNC90YLQtdGA0L7QsuKApiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+ItCh0LvRg9C20LHRiyDQv9C10YfQsNGC0Lgg0L3QtdC00L7RgdGC0YPQv9C90YsiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwKaW5kZXggZmI2ZjE0NS4uNDkwOGVhNSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc2ktckxLL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+4La44LeU4Lav4LeK4oCN4La74LarIOC2uuC2seC3iuC2reC3iuKAjeC2uyA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4Laa4LeKIOC3g+C3nOC2uuC3jyDgtpzgtrHgt4rgtrHgt48g4La94Lav4LeSPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7gtrjgt5Tgtq/gt4rigI3gtrvgtqsg4La64Lax4LeK4Lat4LeK4oCN4La7IDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDgtprgt4og4LeD4Lec4La64LePIOC2nOC2seC3iuC2seC3jyDgtr3gtq/gt5I8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLgtrjgt5ngtrgg4La44LeU4Lav4LeK4oCN4La74LarIOC2uuC2seC3iuC2reC3iuKAjeC2u+C2uiDgtpzgt5DgtrEg4Lat4LeA4Lat4LeKIOC2reC3nOC2u+C2reC3lOC2u+C3lCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuC2uOC3lOC2r+C3iuKAjeC2u+C2qyDgt4Pgt5rgt4Dgt4/gt4Ag4Lat4Led4La74Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgtrjgt5Tgtq/gt4rigI3gtrvgtqsg4La64Lax4LeK4Lat4LeK4oCN4La7IOC3g+C3nOC2uuC2uOC3kuC2seC3iiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuC2uOC3lOC2r+C3iuKAjeC2u+C2qyDgt4Pgt5rgt4Dgt48g4LeD4La24La9IOC2seC3kOC2rSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKaW5kZXggNjA1MjM3Yi4uNDE4MzYzZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKQEAgLTYxLDYgKzYxLDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+TmHFoWxvIHNhIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiB0bGHEjWlhcm7DrTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPk5hxaFsYSBzYSA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gdGxhxI1pYXJlxYg8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IsSOYWzFoWllIGluZm9ybcOhY2llIG/CoHRlanRvIHRsYcSNaWFybmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJWw71iZXIgdGxhxI1vdmVqIHNsdcW+YnkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlZ5aMS+YWTDoXZhbmllIHRsYcSNaWFybsOtIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4ixb1pYWRuZSB0bGHEjW92w6kgc2x1xb5ieSBuaWUgc8O6IGFrdGl2b3ZhbsOpIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbAppbmRleCA0OGQyZTFkLi5lMmJlMTYxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbApAQCAtNjEsNiArNjEsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9ImZldyI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IG5hamRlbmkgdGlza2FsbmlraTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IG5hamRlbmloIHRpc2thbG5pa292PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJWZcSNIGluZm9ybWFjaWogbyB0ZW0gdGlza2FsbmlrdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+Ikl6YmVyaXRlIHRpc2thbG5vIHN0b3JpdGV2Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiJJc2thbmplIHRpc2thbG5pa292Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iTmkgb21vZ2/EjWVuaWggdGlza2FsbmloIHN0b3JpdGV2Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sCmluZGV4IDViYTcyZmYuLmQ1ZWJmMzIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXNxLXJBTC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zcS1yQUwvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+VSBnamV0w6tuIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBwcmludGVyw6s8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj5VIGdqZXQgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHByaW50ZXI8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJNw6sgc2h1bcOrIGluZm9ybWFjaW9uZSBtYmkga8OrdMOrIHByaW50ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJaZ2ppZGggc2jDq3JiaW1pbiBlIHByaW50aW1pdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iUG8ga8OrcmtvbiBww6tyIHByaW50ZXLDqyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+Ik51ayBrYSBzaMOrcmJpbWUgcHJpbnRpbWkgdMOrIGFrdGl2aXp1YXJhIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbAppbmRleCA3YTA0YjhkLi4xNjZlNWRkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbApAQCAtNjAsNiArNjAsOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9ImZldyI+0J/RgNC+0L3QsNGS0LXQvdCwINGB0YMgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+INGI0YLQsNC80L/QsNGH0LA8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPtCf0YDQvtC90LDRktC10L3QviDRmNC1IDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDRiNGC0LDQvNC/0LDRh9CwPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IOKAkyA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiLQiNC+0Ygg0LjQvdGE0L7RgNC80LDRhtC40ZjQsCDQviDQvtCy0L7QvCDRiNGC0LDQvNC/0LDRh9GDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i0JjQt9Cw0LHQtdGA0LjRgtC1INGD0YHQu9GD0LPRgyDRiNGC0LDQvNC/0LDRmtCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLQn9GA0LXRgtGA0LDQs9CwINGI0YLQsNC80L/QsNGH0LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLQndC40ZjQtdC00L3QsCDRg9GB0LvRg9Cz0LAg0YjRgtCw0LzQv9Cw0ZrQsCDQvdC40ZjQtSDQvtC80L7Qs9GD0ZvQtdC90LAiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zdi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCmluZGV4IGVjNGFkMzAuLjAzM2Q1ODMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBza3JpdmFyZSBoaXR0YWRlczwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiBza3JpdmFyZSBoaXR0YWRlczwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iTWVyIGluZm9ybWF0aW9uIG9tIGRlbiBow6RyIHNrcml2YXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IlbDpGxqIHV0c2tyaWZ0c3Rqw6Ruc3QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlPDtmtlciBlZnRlciBza3JpdmFyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IkluZ2EgdXRza3JpZnRzdGrDpG5zdGVyIGhhciBha3RpdmVyYXRzIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbAppbmRleCBlZWQzMzU2Li4wZTJkY2RkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj5QcmludGEgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IHppbWVwYXRpa2FuYTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPlByaW50YSA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4gaW1lcGF0aWthbmE8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJNYWVsZXpvIHphaWRpIGt1aHVzdSBwcmludGEgaGlpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iQ2hhZ3VhIGh1ZHVtYSB5YSBwcmludGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IkluYXRhZnV0YSBwcmludGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiJIdWR1bWEgemEga3VjaGFwaXNoYSBoYXppamF3YXNod2EiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10YS1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10YS1ySU4vc3RyaW5ncy54bWwKaW5kZXggYTk4NzljMy4uMmU5MGQzOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdGEtcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXRhLXJJTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4K6q4K6/4K6w4K6/4K6j4K+N4K6f4K6w4K+N4K6V4K6z4K+NIOCuieCus+CvjeCus+CuqTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDgrqrgrr/grrDgrr/grqPgr43grp/grrDgr40g4K6J4K6z4K+N4K6z4K6k4K+BPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4K6H4K6o4K+N4K6k4K6q4K+NIOCuquCuv+CusOCuv+Cuo+CvjeCun+CusOCvjSDgrqrgrrHgr43grrHgrr/grq8g4K6V4K+C4K6f4K+B4K6k4K6y4K+NIOCupOCuleCuteCusuCvjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuCuheCumuCvjeCumuCvgeCuquCvjSDgrqrgr4rgrrHgrr/grq/gr4jgrqTgr40g4K6k4K+H4K6w4K+N4K614K+B4K6a4K+G4K6v4K+N4K6v4K614K+B4K6u4K+NIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgroXgrprgr43grprgr4Hgrqrgr43grqrgr4rgrrHgrr/grpXgrrPgr4jgrqTgr40g4K6k4K+H4K6f4K+B4K6V4K6/4K6x4K6k4K+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4K6F4K6a4K+N4K6a4K+B4K6q4K+NIOCuquCviuCuseCuv+CuleCus+CvjSDgrofgrrLgr43grrLgr4giPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10ZS1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10ZS1ySU4vc3RyaW5ncy54bWwKaW5kZXggOTA5Y2I5MC4uNmJkYmQ1YyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdGUtcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXRlLXJJTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g4LCq4LGN4LCw4LC/4LCC4LCf4LCw4LGN4oCM4LCy4LGBIOCwleCwqOCxgeCwl+CxiuCwqOCwrOCwoeCxjeCwoeCwvuCwr+CwvzwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDgsKrgsY3gsLDgsL/gsILgsJ/gsLDgsY0g4LCV4LCo4LGB4LCX4LGK4LCo4LCs4LCh4LC/4LCC4LCm4LC/PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i4LCIIOCwquCxjeCwsOCwv+CwguCwn+CwsOCxjSDgsJfgsYHgsLDgsL/gsILgsJrgsL8g4LCu4LCw4LC/4LCC4LCkIOCwuOCwruCwvuCwmuCwvuCwsOCwgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuCwruCxgeCwpuCxjeCwsOCwoyDgsLjgsYfgsLXgsKjgsYEg4LCO4LCC4LCa4LGB4LCV4LGL4LCC4LCh4LC/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLgsKrgsY3gsLDgsL/gsILgsJ/gsLDgsY3igIzgsLIg4LCV4LGL4LC44LCCIOCwtuCxi+Cwp+Cwv+CwuOCxjeCwpOCxi+CwguCwpuCwvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IuCwruCxgeCwpuCxjeCwsOCwoyDgsLjgsYfgsLXgsLLgsYEg4LCP4LC14LGAIOCwquCxjeCwsOCwvuCwsOCwguCwreCwv+CwguCwmuCwsuCxh+CwpuCxgSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKaW5kZXggYzMzYTc1OS4uYTU4MTM1NyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+4Lie4Lia4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lie4Li04Lih4Lie4LmMIDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDguYDguITguKPguLfguYjguK3guIc8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj7guJ7guJrguYDguITguKPguLfguYjguK3guIfguJ7guLTguKHguJ7guYwgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IOC5gOC4hOC4o+C4t+C5iOC4reC4hzwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+IuC4guC5ieC4reC4oeC4ueC4peC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oeC5gOC4geC4teC5iOC4ouC4p+C4geC4seC4muC5gOC4hOC4o+C4t+C5iOC4reC4h+C4nuC4tOC4oeC4nuC5jOC4meC4teC5iSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IuC5gOC4peC4t+C4reC4geC4muC4o+C4tOC4geC4suC4o+C4nuC4tOC4oeC4nuC5jCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i4LiB4Liz4Lil4Lix4LiH4LiE4LmJ4LiZ4Lir4Liy4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lie4Li04Lih4Lie4LmMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i4LmE4Lih4LmI4LmE4LiU4LmJ4LmA4Lib4Li04LiU4LmD4LiK4LmJ4Lia4Lij4Li04LiB4Liy4Lij4Lie4Li04Lih4Lie4LmMIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbAppbmRleCA1NDViZGE0Li4zMjVjZThjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IG5ha2l0YW5nIHByaW50ZXI8L2l0ZW0+CiAgICAgICA8aXRlbSBxdWFudGl0eT0ib3RoZXIiPjx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiBuYSBuYWtpdGFuZyBwcmludGVyPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iSGlnaXQgcGFuZyBpbXBvcm1hc3lvbiB0dW5na29sIHNhIHByaW50ZXIgbmEgaXRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iUHVtaWxpIG5nIHNlcmJpc3lvIG5nIHBhZy1wcmludCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iTmFnaGFoYW5hcCBuZyBtZ2EgcHJpbnRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X25vX3ByaW50X3NlcnZpY2VzIiBtc2dpZD0iODU2MTI0NzcwNjQyMzMyNzk2NiI+IldhbGFuZyBtZ2EgbmFrYS1lbmFibGUgbmEgc2VyYmlzeW8gc2EgcGFnLXByaW50Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbAppbmRleCBhMTNmMmRmLi5kOTQ1OTc5IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4geWF6xLFjxLEgYnVsdW5kdTwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiB5YXrEsWPEsSBidWx1bmR1PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iQnUgeWF6xLFjxLF5bGEgaWxnaWxpIGRhaGEgZmF6bGEgYmlsZ2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJZYXpkxLFybWEgaGl6bWV0aW5pIHNlw6dpbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4iWWF6xLFjxLFsYXIgYXJhbsSxeW9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iRXRraW4geWF6xLFjxLEgaGl6bWV0aSB5b2siPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCmluZGV4IGRlZjIxYWIuLmZmZGZkZTAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCkBAIC02MSw2ICs2MSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ibWFueSI+0JfQvdCw0LnQtNC10L3QviA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g0L/RgNC40L3RgtC10YDRltCyPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7Ql9C90LDQudC00LXQvdC+IDx4bGlmZjpnIGlkPSJDT1VOVF8xIj4lMSRzPC94bGlmZjpnPiDQv9GA0LjQvdGC0LXRgNGW0LI8L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4g4oCTIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+ItCU0L7QutC70LDQtNC90ZbRiNC1INC/0YDQviDRhtC10Lkg0L/RgNC40L3RgtC10YAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiLQktC40LHRgNCw0YLQuCDRgdC70YPQttCx0YMg0LTRgNGD0LrRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByaW50X3NlYXJjaGluZ19mb3JfcHJpbnRlcnMiIG1zZ2lkPSI2NTUwNDI0NTU1MDc5OTMyODY3Ij4i0J/QvtGI0YPQuiDQv9GA0LjQvdGC0LXRgNGW0LIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLQndC10LzQsNGUINGB0LvRg9C20LEg0LTRgNGD0LrRgyI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXVyLXJQSy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXVyLXJQSy9zdHJpbmdzLnhtbAppbmRleCBjMDMxYWJhLi43MmE2YWI5ZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdXItclBLL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXVyLXJQSy9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4g2b7YsdmG2bnYsdiyINmF2YTbkjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPjx4bGlmZjpnIGlkPSJDT1VOVF8wIj4lMSRzPC94bGlmZjpnPiDZvtix2YbZudixINmF2YTYpzwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJQUklOVEVSX0RFU0NSSVBUSU9OIj4lMiRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfaW5mb19kZXNjIiBtc2dpZD0iNzE4MTk4ODc4ODk5MTU4MTY1NCI+Itin2LMg2b7YsdmG2bnYsSDaqduSINio2KfYsduSINmF24zauiDZhdiy24zYryDZhdi52YTZiNmF2KfYqiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+Itm+2LHZhtm5INiz2LHZiNizINmF2YbYqtiu2Kgg2qnYsduM2roiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+Itm+2LHZhtm52LHYsiDYqtmE2KfYtCDaqdixINix24HYpyDbgduSIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4i2qnZiNim24wg2b7YsdmG2bkg2LPYsdmI2LMg2YHYudin2YQg2YbbgduM2roiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKaW5kZXggNTlkY2NhOS4uYzdiNDI2MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdXotclVaL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXV6LXJVWi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gdGEgcHJpbnRlciB0b3BpbGRpPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im9uZSI+PHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IHRhIHByaW50ZXIgdG9waWxkaTwvaXRlbT4KICAgICA8L3BsdXJhbHM+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlIiBtc2dpZD0iMTM2NjY5OTIyNzcwMzM4MTg3NCI+Ijx4bGlmZjpnIGlkPSJQUklOVF9TRVJWSUNFX0xBQkVMIj4lMSRzPC94bGlmZjpnPiDigJMgPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iUHJpbnRlciBoYXFpZGEgYmF0YWZzaWwgbWHigJlsdW1vdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNob29zZV9wcmludF9zZXJ2aWNlIiBtc2dpZD0iMzc0MDMwOTc2MjMyNDQ1OTY5NCI+IkNob3AgZXRpc2ggeGl6bWF0aW5pIHRhbmxhbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IlByaW50ZXJsYXIgcWlkaXJpbG1vcWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iSGVjaCBxYXlzaSBjaG9wIGV0aXNoIHhpem1hdGkgeW9xaWxtYWdhbiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKaW5kZXggMDE2NzgyMy4uNzcxZDU3YyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKQEAgLTU5LDYgKzU5LDggQEAKICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+xJDDoyB0w6xtIHRo4bqleSA8eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gbcOheSBpbjwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPsSQw6MgdMOsbSB0aOG6pXkgPHhsaWZmOmcgaWQ9IkNPVU5UXzAiPiUxJHM8L3hsaWZmOmc+IG3DoXkgaW48L2l0ZW0+CiAgICAgPC9wbHVyYWxzPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9leHRlbmRlZF9kZXNjcmlwdGlvbl90ZW1wbGF0ZSIgbXNnaWQ9IjEzNjY2OTkyMjc3MDMzODE4NzQiPiI8eGxpZmY6ZyBpZD0iUFJJTlRfU0VSVklDRV9MQUJFTCI+JTEkczwveGxpZmY6Zz4gLSA8eGxpZmY6ZyBpZD0iUFJJTlRFUl9ERVNDUklQVElPTiI+JTIkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyIgbXNnaWQ9IjcxODE5ODg3ODg5OTE1ODE2NTQiPiJUaMO0bmcgdGluIGtow6FjIHbhu4EgbcOheSBpbiBuw6B5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4iQ2jhu41uIGThu4tjaCB24bulIGluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLEkGFuZyB0w6xtIGtp4bq/bSBtw6F5IGluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iQ2jGsGEga8OtY2ggaG/huqF0IGThu4tjaCB24bulIGluIG7DoG8iPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKaW5kZXggYTc0ZTk5NC4uYmVhOTFkNyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7mib7liLAgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOWPsOaJk+WNsOacujwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuaJvuWIsCA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4g5Y+w5omT5Y2w5py6PC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i5YWz5LqO5q2k5omT5Y2w5py655qE5pu05aSa5L+h5oGvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i6YCJ5oup5omT5Y2w5pyN5YqhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLmraPlnKjmkJzntKLmiZPljbDmnLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLmnKrlkK/nlKjku7vkvZXmiZPljbDmnI3liqEiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWwKaW5kZXggMzU2NDNmMy4uNGZiZWYwZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXpoLXJISy9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7lt7Lmib7liLAgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOmDqOaJk+WNsOapnzwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuW3suaJvuWIsCA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4g6YOo5omT5Y2w5qmfPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i5q2k5omT5Y2w5qmf6Kmz5oOFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i6YG45pOH5YiX5Y2w5pyN5YuZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLmraPlnKjmkJzlsIvmiZPljbDmqZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLmspLmnInlt7LllZ/nlKjnmoTliJfljbDmnI3li5kiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKaW5kZXggNDBjNDRmZi4uMmZkY2FhYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbApAQCAtNTksNiArNTksOCBAQAogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj7mib7liLAgPHhsaWZmOmcgaWQ9IkNPVU5UXzEiPiUxJHM8L3hsaWZmOmc+IOWPsOWNsOihqOapnzwvaXRlbT4KICAgICAgIDxpdGVtIHF1YW50aXR5PSJvbmUiPuaJvuWIsCA8eGxpZmY6ZyBpZD0iQ09VTlRfMCI+JTEkczwveGxpZmY6Zz4g5Y+w5Y2w6KGo5qmfPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4i5p+l55yL6YCZ5Y+w5Y2w6KGo5qmf55qE6Kmz57Sw6LOH6KiKIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2hvb3NlX3ByaW50X3NlcnZpY2UiIG1zZ2lkPSIzNzQwMzA5NzYyMzI0NDU5Njk0Ij4i6YG45pOH5YiX5Y2w5pyN5YuZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfc2VhcmNoaW5nX2Zvcl9wcmludGVycyIgbXNnaWQ9IjY1NTA0MjQ1NTUwNzk5MzI4NjciPiLmraPlnKjmkJzlsIvljbDooajmqZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9ub19wcmludF9zZXJ2aWNlcyIgbXNnaWQ9Ijg1NjEyNDc3MDY0MjMzMjc5NjYiPiLmnKrllZ/nlKjku7vkvZXliJfljbDmnI3li5kiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCmluZGV4IGUwZjZmMzQuLjkyNTk1YWEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCkBAIC01OSw2ICs1OSw4IEBACiAgICAgICA8aXRlbSBxdWFudGl0eT0ib25lIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gYW1hcGhyaW50YSBhdGhvbGFrZWxlPC9pdGVtPgogICAgICAgPGl0ZW0gcXVhbnRpdHk9Im90aGVyIj48eGxpZmY6ZyBpZD0iQ09VTlRfMSI+JTEkczwveGxpZmY6Zz4gYW1hcGhyaW50YSBhdGhvbGFrZWxlPC9pdGVtPgogICAgIDwvcGx1cmFscz4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiIG1zZ2lkPSIxMzY2Njk5MjI3NzAzMzgxODc0Ij4iPHhsaWZmOmcgaWQ9IlBSSU5UX1NFUlZJQ0VfTEFCRUwiPiUxJHM8L3hsaWZmOmc+IC0gPHhsaWZmOmcgaWQ9IlBSSU5URVJfREVTQ1JJUFRJT04iPiUyJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJpbnRlcl9pbmZvX2Rlc2MiIG1zZ2lkPSI3MTgxOTg4Nzg4OTkxNTgxNjU0Ij4iT2x1bnllIHVsd2F6aSBtYXllbGFuYSBuYWxlIHBocmludGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjaG9vc2VfcHJpbnRfc2VydmljZSIgbXNnaWQ9IjM3NDAzMDk3NjIzMjQ0NTk2OTQiPiJLaGV0aGEgaXNldmlzaSB5ZXBocmludGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmludF9zZWFyY2hpbmdfZm9yX3ByaW50ZXJzIiBtc2dpZD0iNjU1MDQyNDU1NTA3OTkzMjg2NyI+IklzZXNoYSBhbWFwaHJpbnRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJpbnRfbm9fcHJpbnRfc2VydmljZXMiIG1zZ2lkPSI4NTYxMjQ3NzA2NDIzMzI3OTY2Ij4iQW1hc2V2aXNpIGVwaHJpbnRhIGFrYXZ1bGl3ZS4iPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCmluZGV4IDZkODE3ODguLjk3YTdiZmYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCkBAIC0xNDQsNiArMTQ0LDEyIEBACiAgICAgICAgIDxpdGVtIHF1YW50aXR5PSJvdGhlciI+PHhsaWZmOmcgaWQ9ImNvdW50IiBleGFtcGxlPSIyIj4lMSRzPC94bGlmZjpnPiBwcmludGVycyBmb3VuZDwvaXRlbT4KICAgICA8L3BsdXJhbHM+CiAKKyAgICA8IS0tIFRlbXBsYXRlIGZvciBhbiBleHRlbmRlZCBkZXNjcmlwdGlvbiBvZiBhIHByaW50ZXIuIFtDSEFSIExJTUlUPTUwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByaW50ZXJfZXh0ZW5kZWRfZGVzY3JpcHRpb25fdGVtcGxhdGUiPjx4bGlmZjpnIGlkPSJwcmludF9zZXJ2aWNlX2xhYmVsIiBleGFtcGxlPSJDYW5vbiBQcmludCBTZXJ2aWNlIj4lMSRzPC94bGlmZjpnPiAtIDx4bGlmZjpnIGlkPSJwcmludGVyX2Rlc2NyaXB0aW9uIiBleGFtcGxlPSJQcmludGVyIHVuZGVyIHRoZSBzdGFpcnMiPiUyJHM8L3hsaWZmOmc+PC9zdHJpbmc+CisKKyAgICA8IS0tIERlc2NyaXB0aW9uIG9mIHByaW50ZXIgaW5mbyBpY29uLiBbQ0hBUiBMSU1JVD01MF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwcmludGVyX2luZm9fZGVzYyI+TW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHByaW50ZXI8L3N0cmluZz4KKwogICAgIDwhLS0gQWRkIHByaW50ZXIgZGlhbG9nICAtLT4KIAogICAgIDwhLS0gVGl0bGUgZm9yIHRoZSBhbGVydCBkaWFsb2cgZm9yIHNlbGVjdGluZyBhIHByaW50IHNlcnZpY2UuIFtDSEFSIExJTUlUPTUwXSAtLT4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL21vZGVsL0N1c3RvbVByaW50ZXJJY29uQ2FjaGUuamF2YSBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL21vZGVsL0N1c3RvbVByaW50ZXJJY29uQ2FjaGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mjc0MjY4Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvbW9kZWwvQ3VzdG9tUHJpbnRlckljb25DYWNoZS5qYXZhCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5wcmludHNwb29sZXIubW9kZWw7CisKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTm9uTnVsbDsKK2ltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uTnVsbGFibGU7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOworaW1wb3J0IGFuZHJvaWQucHJpbnQuUHJpbnRlcklkOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdDsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuU29ydGVkTWFwOworaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOworCisvKioKKyAqIEEgZml4ZWQgc2l6ZSBjYWNoZSBmb3IgY3VzdG9tIHByaW50ZXIgaWNvbnMuIE9sZCBpY29ucyBnZXQgcmVtb3ZlZCB3aXRoIGEgbGFzdCByZWNlbnRseSB1c2VkCisgKiBwb2xpY3kuCisgKi8KK3B1YmxpYyBjbGFzcyBDdXN0b21QcmludGVySWNvbkNhY2hlIHsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBMT0dfVEFHID0gIkN1c3RvbVByaW50ZXJJY29uQ2FjaGUiOworCisgICAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGljb25zIGluIHRoZSBjYWNoZSAqLworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBNQVhfU0laRSA9IDEwMjQ7CisKKyAgICAvKiogRGlyZWN0b3J5IHVzZWQgdG8gcGVyc2lzdCBzdGF0ZSBhbmQgaWNvbnMgKi8KKyAgICBwcml2YXRlIGZpbmFsIEZpbGUgbUNhY2hlRGlyZWN0b3J5OworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IGljb24gY2FjaGUuCisgICAgICovCisgICAgcHVibGljIEN1c3RvbVByaW50ZXJJY29uQ2FjaGUoQE5vbk51bGwgRmlsZSBjYWNoZURpcmVjdG9yeSkgeworICAgICAgICBtQ2FjaGVEaXJlY3RvcnkgPSBuZXcgRmlsZShjYWNoZURpcmVjdG9yeSwgImljb25zIik7CisgICAgICAgIGlmICghbUNhY2hlRGlyZWN0b3J5LmV4aXN0cygpKSB7CisgICAgICAgICAgICBtQ2FjaGVEaXJlY3RvcnkubWtkaXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlsZSBuYW1lIHRvIGJlIHVzZWQgZm9yIHRoZSBpY29uIG9mIGEgcHJpbnRlcgorICAgICAqCisgICAgICogQHBhcmFtIHByaW50ZXJJZCB0aGUgaWQgb2YgdGhlIHByaW50ZXIKKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIGZpbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGljb24gb2YgdGhlIHByaW50ZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIEBOdWxsYWJsZSBGaWxlIGdldEljb25GaWxlTmFtZShATm9uTnVsbCBQcmludGVySWQgcHJpbnRlcklkKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIocHJpbnRlcklkLmdldFNlcnZpY2VOYW1lKCkuZ2V0UGFja2FnZU5hbWUoKSk7CisgICAgICAgIHNiLmFwcGVuZCgiLSIpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBNZXNzYWdlRGlnZXN0IG1kID0gTWVzc2FnZURpZ2VzdC5nZXRJbnN0YW5jZSgiU0hBLTEiKTsKKyAgICAgICAgICAgIG1kLnVwZGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgKHByaW50ZXJJZC5nZXRTZXJ2aWNlTmFtZSgpLmdldENsYXNzTmFtZSgpICsgIjoiICsgcHJpbnRlcklkLmdldExvY2FsSWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0Qnl0ZXMoIlVURi0xNiIpKTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChTdHJpbmcuZm9ybWF0KCIlIzA0MHgiLCBuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoMSwgbWQuZGlnZXN0KCkpKSk7CisgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb258Tm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy5lKExPR19UQUcsICJDb3VsZCBub3QgY29tcHV0ZSBjdXN0b20gcHJpbnRlciBpY29uIGZpbGUgbmFtZSIsIGUpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEZpbGUobUNhY2hlRGlyZWN0b3J5LCBzYi50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIHtAbGluayBJY29ufSB0byBiZSB1c2VkIGFzIGEgY3VzdG9tIGljb24gZm9yIHRoZSBwcmludGVyLiBJZiBub3QgYXZhaWxhYmxlIHJlcXVlc3QKKyAgICAgKiB0aGUgaWNvbiB0byBiZSBsb2FkZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJpbnRlcklkIHRoZSBwcmludGVyIHRoZSBpY29uIGJlbG9uZ3MgdG8KKyAgICAgKiBAcmV0dXJuIHRoZSB7QGxpbmsgSWNvbn0gaWYgYWxyZWFkeSBhdmFpbGFibGUgb3IgbnVsbCBpZiBpY29uIGlzIG5vdCBsb2FkZWQgeWV0CisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBATnVsbGFibGUgSWNvbiBnZXRJY29uKEBOb25OdWxsIFByaW50ZXJJZCBwcmludGVySWQpIHsKKyAgICAgICAgSWNvbiBpY29uOworCisgICAgICAgIEZpbGUgaWNvbkZpbGUgPSBnZXRJY29uRmlsZU5hbWUocHJpbnRlcklkKTsKKyAgICAgICAgaWYgKGljb25GaWxlICE9IG51bGwgJiYgaWNvbkZpbGUuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgIHRyeSAoRmlsZUlucHV0U3RyZWFtIGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShpY29uRmlsZSkpIHsKKyAgICAgICAgICAgICAgICBpY29uID0gSWNvbi5jcmVhdGVGcm9tU3RyZWFtKGlzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBpY29uID0gbnVsbDsKKyAgICAgICAgICAgICAgICBMb2cuZShMT0dfVEFHLCAiQ291bGQgbm90IHJlYWQgaWNvbiBmcm9tICIgKyBpY29uRmlsZSwgZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRvdWNoIGZpbGUgc28gdGhhdCBpdCBpcyB0aGUgbm90IGxpa2VseSB0byBiZSByZW1vdmVkCisgICAgICAgICAgICBpY29uRmlsZS5zZXRMYXN0TW9kaWZpZWQoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWNvbiA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaWNvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgb2xkIGljb25zIHNvIHRoYXQgb25seSBiZXR3ZWVuIG51bUZpbGVzVG9LZWVwIGFuZCB0d2ljZSBhcyBtYW55IGljb25zIGFyZSBsZWZ0LgorICAgICAqCisgICAgICogQHBhcmFtIG51bUZpbGVzVG9LZWVwIHRoZSBudW1iZXIgb2YgaWNvbnMgdG8ga2VlcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZU9sZEZpbGVzKGludCBudW1GaWxlc1RvS2VlcCkgeworICAgICAgICBGaWxlIGZpbGVzW10gPSBtQ2FjaGVEaXJlY3RvcnkubGlzdEZpbGVzKCk7CisKKyAgICAgICAgLy8gVG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2hyaW5rIG9wZXJhdGlvbnMsIGxldCB0aGUgY2FjaGUgZ3JvdyB0byB0d2ljZSB0aGUgbWF4IHNpemUKKyAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA+IG51bUZpbGVzVG9LZWVwICogMikgeworICAgICAgICAgICAgU29ydGVkTWFwPExvbmcsIEZpbGU+IHNvcnRlZEZpbGVzID0gbmV3IFRyZWVNYXA8PigpOworCisgICAgICAgICAgICBmb3IgKEZpbGUgZiA6IGZpbGVzKSB7CisgICAgICAgICAgICAgICAgc29ydGVkRmlsZXMucHV0KGYubGFzdE1vZGlmaWVkKCksIGYpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAoc29ydGVkRmlsZXMuc2l6ZSgpID4gbnVtRmlsZXNUb0tlZXApIHsKKyAgICAgICAgICAgICAgICBzb3J0ZWRGaWxlcy5yZW1vdmUoc29ydGVkRmlsZXMuZmlyc3RLZXkoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgdGhhdCBhIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIgd2FzIGxvYWRlZAorICAgICAqCisgICAgICogQHBhcmFtIHByaW50ZXJJZCB0aGUgaWQgb2YgdGhlIHByaW50ZXIgdGhlIGljb24gYmVsb25ncyB0bworICAgICAqIEBwYXJhbSBpY29uIHRoZSBpY29uIHRoYXQgd2FzIGxvYWRlZAorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKEBOb25OdWxsIFByaW50ZXJJZCBwcmludGVySWQsCisgICAgICAgICAgICBATnVsbGFibGUgSWNvbiBpY29uKSB7CisgICAgICAgIEZpbGUgaWNvbkZpbGUgPSBnZXRJY29uRmlsZU5hbWUocHJpbnRlcklkKTsKKworICAgICAgICBpZiAoaWNvbkZpbGUgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IChGaWxlT3V0cHV0U3RyZWFtIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oaWNvbkZpbGUpKSB7CisgICAgICAgICAgICBpY29uLndyaXRlVG9TdHJlYW0ob3MpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShMT0dfVEFHLCAiQ291bGQgbm90IHdyaXRlIGljb24gZm9yICIgKyBwcmludGVySWQgKyAiIHRvIHN0b3JhZ2UiLCBlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlbW92ZU9sZEZpbGVzKE1BWF9TSVpFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGVhciBhbGwgcGVyc2lzdGVkIGFuZCBub24tcGVyc2lzdGVkIHN0YXRlIGZyb20gdGhpcyBjYWNoZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgY2xlYXIoKSB7CisgICAgICAgIGZvciAoRmlsZSBmIDogbUNhY2hlRGlyZWN0b3J5Lmxpc3RGaWxlcygpKSB7CisgICAgICAgICAgICBmLmRlbGV0ZSgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvbW9kZWwvUGFnZUNvbnRlbnRSZXBvc2l0b3J5LmphdmEgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci9tb2RlbC9QYWdlQ29udGVudFJlcG9zaXRvcnkuamF2YQppbmRleCBlYTYyODFkLi5hYzk3YWQwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci9tb2RlbC9QYWdlQ29udGVudFJlcG9zaXRvcnkuamF2YQorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci9tb2RlbC9QYWdlQ29udGVudFJlcG9zaXRvcnkuamF2YQpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBtQ2xvc2VHdWFyZC5jbG9zZSgpOwogCiAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX0RFU1RST1lFRDsKICAgICAgICAgaWYgKERFQlVHKSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci9tb2RlbC9QcmludFNwb29sZXJTZXJ2aWNlLmphdmEgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci9tb2RlbC9QcmludFNwb29sZXJTZXJ2aWNlLmphdmEKaW5kZXggOTBlZWY4My4uNDk2YTBiMCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvbW9kZWwvUHJpbnRTcG9vbGVyU2VydmljZS5qYXZhCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL21vZGVsL1ByaW50U3Bvb2xlclNlcnZpY2UuamF2YQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOwogaW1wb3J0IGFuZHJvaWQub3MuQXN5bmNUYXNrOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKQEAgLTEwOSw2ICsxMTAsOSBAQAogCiAgICAgcHJpdmF0ZSBOb3RpZmljYXRpb25Db250cm9sbGVyIG1Ob3RpZmljYXRpb25Db250cm9sbGVyOwogCisgICAgLyoqIENhY2hlIGZvciBjdXN0b20gcHJpbnRlciBpY29ucyBsb2FkZWQgZnJvbSB0aGUgcHJpbnQgc2VydmljZSAqLworICAgIHByaXZhdGUgQ3VzdG9tUHJpbnRlckljb25DYWNoZSBtQ3VzdG9tSWNvbkNhY2hlOworCiAgICAgcHVibGljIHN0YXRpYyBQcmludFNwb29sZXJTZXJ2aWNlIHBlZWtJbnN0YW5jZSgpIHsKICAgICAgICAgc3luY2hyb25pemVkIChzTG9jaykgewogICAgICAgICAgICAgcmV0dXJuIHNJbnN0YW5jZTsKQEAgLTEyMyw2ICsxMjcsNyBAQAogCiAgICAgICAgIG1QZXJzaXN0YW5jZU1hbmFnZXIgPSBuZXcgUGVyc2lzdGVuY2VNYW5hZ2VyKCk7CiAgICAgICAgIG1Ob3RpZmljYXRpb25Db250cm9sbGVyID0gbmV3IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoUHJpbnRTcG9vbGVyU2VydmljZS50aGlzKTsKKyAgICAgICAgbUN1c3RvbUljb25DYWNoZSA9IG5ldyBDdXN0b21QcmludGVySWNvbkNhY2hlKGdldENhY2hlRGlyKCkpOwogCiAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKICAgICAgICAgICAgIG1QZXJzaXN0YW5jZU1hbmFnZXIucmVhZFN0YXRlTG9ja2VkKCk7CkBAIC0xMzUsNiArMTQwLDExIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25EZXN0cm95KCkgeworICAgICAgICBzdXBlci5vbkRlc3Ryb3koKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgSUJpbmRlciBvbkJpbmQoSW50ZW50IGludGVudCkgewogICAgICAgICByZXR1cm4gbmV3IFByaW50U3Bvb2xlcigpOwogICAgIH0KQEAgLTcwMyw2ICs3MTMsMzcgQEAKICAgICAgICAgfS5leGVjdXRlT25FeGVjdXRvcihBc3luY1Rhc2suU0VSSUFMX0VYRUNVVE9SLCAoVm9pZFtdKSBudWxsKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgdGhhdCBhIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIgd2FzIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIGJlbG9uZ3MgdG8KKyAgICAgKiBAcGFyYW0gaWNvbiB0aGUgaWNvbiB0aGF0IHdhcyBsb2FkZWQKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgcHVibGljIHZvaWQgb25DdXN0b21QcmludGVySWNvbkxvYWRlZChQcmludGVySWQgcHJpbnRlcklkLCBJY29uIGljb24pIHsKKyAgICAgICAgbUN1c3RvbUljb25DYWNoZS5vbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKHByaW50ZXJJZCwgaWNvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBjdXN0b20gaWNvbiBmb3IgYSBwcmludGVyLiBJZiB0aGUgaWNvbiBpcyBub3QgY2FjaGVkLCB0aGUgaWNvbiBpcworICAgICAqIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseS4gT25jZSBpdCBpcyBhdmFpbGFibGUgdGhlIHByaW50ZXIgaXMgdXBkYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIHNob3VsZCBiZSBsb2FkZWQgZm9yCisgICAgICogQHJldHVybiB0aGUgY3VzdG9tIGljb24gdG8gYmUgdXNlZCBmb3IgdGhlIHByaW50ZXIgb3IgbnVsbCBpZiB0aGUgaWNvbiBpcworICAgICAqICAgICAgICAgbm90IHlldCBhdmFpbGFibGUKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgcHVibGljIEljb24gZ2V0Q3VzdG9tUHJpbnRlckljb24oUHJpbnRlcklkIHByaW50ZXJJZCkgeworICAgICAgICByZXR1cm4gbUN1c3RvbUljb25DYWNoZS5nZXRJY29uKHByaW50ZXJJZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xlYXIgdGhlIGN1c3RvbSBwcmludGVyIGljb24gY2FjaGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXJDdXN0b21QcmludGVySWNvbkNhY2hlKCkgeworICAgICAgICBtQ3VzdG9tSWNvbkNhY2hlLmNsZWFyKCk7CisgICAgfQorCiAgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBQZXJzaXN0ZW5jZU1hbmFnZXIgewogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEVSU0lTVF9GSUxFX05BTUUgPSAicHJpbnRfc3Bvb2xlcl9zdGF0ZS54bWwiOwogCkBAIC0xMjYyLDcgKzEzMDMsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdChYbWxQdWxsUGFyc2VyIHBhcnNlciwgaW50IHR5cGUsIFN0cmluZyB0YWcpCi0gICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgICAgICB0aHJvd3MgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiB7CiAgICAgICAgICAgICBpZiAoIWFjY2VwdChwYXJzZXIsIHR5cGUsIHRhZykpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbigiRXhlcGVjdGVkIGV2ZW50OiAiICsgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCB0YWc6ICIgKyB0YWcgKyAiIGJ1dCBnb3QgZXZlbnQ6ICIgKyBwYXJzZXIuZ2V0RXZlbnRUeXBlKCkKQEAgLTEyNzksNyArMTMyMCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBwcml2YXRlIGJvb2xlYW4gYWNjZXB0KFhtbFB1bGxQYXJzZXIgcGFyc2VyLCBpbnQgdHlwZSwgU3RyaW5nIHRhZykKLSAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIFhtbFB1bGxQYXJzZXJFeGNlcHRpb24geworICAgICAgICAgICAgICAgIHRocm93cyBYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIHsKICAgICAgICAgICAgIGlmIChwYXJzZXIuZ2V0RXZlbnRUeXBlKCkgIT0gdHlwZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTEzOTUsNSArMTQzNiwzOCBAQAogICAgICAgICBwdWJsaWMgUHJpbnRTcG9vbGVyU2VydmljZSBnZXRTZXJ2aWNlKCkgewogICAgICAgICAgICAgcmV0dXJuIFByaW50U3Bvb2xlclNlcnZpY2UudGhpczsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKFByaW50ZXJJZCBwcmludGVySWQsIEljb24gaWNvbiwKKyAgICAgICAgICAgICAgICBJUHJpbnRTcG9vbGVyQ2FsbGJhY2tzIGNhbGxiYWNrcywgaW50IHNlcXVlbmNlKQorICAgICAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBQcmludFNwb29sZXJTZXJ2aWNlLnRoaXMub25DdXN0b21QcmludGVySWNvbkxvYWRlZChwcmludGVySWQsIGljb24pOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja3Mub25DdXN0b21QcmludGVySWNvbkNhY2hlZChzZXF1ZW5jZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgZ2V0Q3VzdG9tUHJpbnRlckljb24oUHJpbnRlcklkIHByaW50ZXJJZCwgSVByaW50U3Bvb2xlckNhbGxiYWNrcyBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgaW50IHNlcXVlbmNlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIEljb24gaWNvbiA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGljb24gPSBQcmludFNwb29sZXJTZXJ2aWNlLnRoaXMuZ2V0Q3VzdG9tUHJpbnRlckljb24ocHJpbnRlcklkKTsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uR2V0Q3VzdG9tUHJpbnRlckljb25SZXN1bHQoaWNvbiwgc2VxdWVuY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGNsZWFyQ3VzdG9tUHJpbnRlckljb25DYWNoZShJUHJpbnRTcG9vbGVyQ2FsbGJhY2tzIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICBpbnQgc2VxdWVuY2UpIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBQcmludFNwb29sZXJTZXJ2aWNlLnRoaXMuY2xlYXJDdXN0b21QcmludGVySWNvbkNhY2hlKCk7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5jdXN0b21QcmludGVySWNvbkNhY2hlQ2xlYXJlZChzZXF1ZW5jZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL21vZGVsL1JlbW90ZVByaW50RG9jdW1lbnQuamF2YSBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL21vZGVsL1JlbW90ZVByaW50RG9jdW1lbnQuamF2YQppbmRleCAxYjZlOWNlLi5lYTExYWU0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci9tb2RlbC9SZW1vdGVQcmludERvY3VtZW50LmphdmEKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvbW9kZWwvUmVtb3RlUHJpbnREb2N1bWVudC5qYXZhCkBAIC04NzAsNyArODcwLDcgQEAKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBNdXRleEZpbGVQcm92aWRlciBtRmlsZVByb3ZpZGVyOwogCiAgICAgICAgIHByaXZhdGUgZmluYWwgSVdyaXRlUmVzdWx0Q2FsbGJhY2sgbVJlbW90ZVJlc3VsdENhbGxiYWNrOwotICAgICAgICBwcml2YXRlIGZpbmFsIENvbW1hbmREb25lQ2FsbGJhY2sgbURvbmVDYWxsYmFjazsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBDb21tYW5kRG9uZUNhbGxiYWNrIG1Xcml0ZURvbmVDYWxsYmFjazsKIAogICAgICAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CiAgICAgICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtSGFuZGxlcjsKQEAgLTg4NSw3ICs4ODUsNyBAQAogICAgICAgICAgICAgbVBhZ2VDb3VudCA9IHBhZ2VDb3VudDsKICAgICAgICAgICAgIG1QYWdlcyA9IEFycmF5cy5jb3B5T2YocGFnZXMsIHBhZ2VzLmxlbmd0aCk7CiAgICAgICAgICAgICBtRmlsZVByb3ZpZGVyID0gZmlsZVByb3ZpZGVyOwotICAgICAgICAgICAgbURvbmVDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICAgICAgbVdyaXRlRG9uZUNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTk5Nyw3ICs5OTcsNyBAQAogICAgICAgICAgICAgbUNhbmNlbGxhdGlvbiA9IG51bGw7CiAKICAgICAgICAgICAgIC8vIERvbmUuCi0gICAgICAgICAgICBtRG9uZUNhbGxiYWNrLm9uRG9uZSgpOworICAgICAgICAgICAgbVdyaXRlRG9uZUNhbGxiYWNrLm9uRG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZU9uV3JpdGVGYWlsZWQoQ2hhclNlcXVlbmNlIGVycm9yLCBpbnQgc2VxdWVuY2UpIHsKQEAgLTEwMTUsNyArMTAxNSw3IEBACiAgICAgICAgICAgICBtQ2FuY2VsbGF0aW9uID0gbnVsbDsKIAogICAgICAgICAgICAgLy8gRG9uZS4KLSAgICAgICAgICAgIG1Eb25lQ2FsbGJhY2sub25Eb25lKCk7CisgICAgICAgICAgICBtV3JpdGVEb25lQ2FsbGJhY2sub25Eb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBwcml2YXRlIHZvaWQgaGFuZGxlT25Xcml0ZUNhbmNlbGVkKGludCBzZXF1ZW5jZSkgewpAQCAtMTAzMyw3ICsxMDMzLDcgQEAKICAgICAgICAgICAgIG1DYW5jZWxsYXRpb24gPSBudWxsOwogCiAgICAgICAgICAgICAvLyBEb25lLgotICAgICAgICAgICAgbURvbmVDYWxsYmFjay5vbkRvbmUoKTsKKyAgICAgICAgICAgIG1Xcml0ZURvbmVDYWxsYmFjay5vbkRvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgV3JpdGVIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9GdXNlZFByaW50ZXJzUHJvdmlkZXIuamF2YSBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL0Z1c2VkUHJpbnRlcnNQcm92aWRlci5qYXZhCmluZGV4IDgwYzI4ZTAuLjU1MjU3NzQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL0Z1c2VkUHJpbnRlcnNQcm92aWRlci5qYXZhCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL0Z1c2VkUHJpbnRlcnNQcm92aWRlci5qYXZhCkBAIC0yMCwyMyArMjAsMzMgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuTG9hZGVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbkxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25SZXF1ZXN0OwogaW1wb3J0IGFuZHJvaWQub3MuQXN5bmNUYXNrOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVyRGlzY292ZXJ5U2Vzc2lvbjsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50ZXJEaXNjb3ZlcnlTZXNzaW9uLk9uUHJpbnRlcnNDaGFuZ2VMaXN0ZW5lcjsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50ZXJJZDsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvOwogaW1wb3J0IGFuZHJvaWQucHJpbnRzZXJ2aWNlLlByaW50U2VydmljZUluZm87Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuQXJyYXlNYXA7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkFycmF5U2V0OwogaW1wb3J0IGFuZHJvaWQudXRpbC5BdG9taWNGaWxlOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlBhaXI7CiBpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CiBpbXBvcnQgYW5kcm9pZC51dGlsLlhtbDsKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuRmFzdFhtbFNlcmlhbGl6ZXI7CiAKK2ltcG9ydCBsaWJjb3JlLmlvLklvVXRpbHM7CisKIGltcG9ydCBvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyOwogaW1wb3J0IG9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb247CiBpbXBvcnQgb3JnLnhtbHB1bGwudjEuWG1sU2VyaWFsaXplcjsKQEAgLTQ5LDE4ICs1OSwxOSBAQAogaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0czsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKLWltcG9ydCBsaWJjb3JlLmlvLklvVXRpbHM7Ci0KIC8qKgogICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBwcmludGVycyBieSBkb2luZyBkaXNjb3ZlcnkKICAqIGFuZCBtZXJnaW5nIHRoZSBkaXNjb3ZlcmVkIHByaW50ZXJzIHdpdGggdGhlIHByZXZpb3VzbHkgdXNlZCBvbmVzLgogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgRnVzZWRQcmludGVyc1Byb3ZpZGVyIGV4dGVuZHMgTG9hZGVyPExpc3Q8UHJpbnRlckluZm8+PiB7CitwdWJsaWMgZmluYWwgY2xhc3MgRnVzZWRQcmludGVyc1Byb3ZpZGVyIGV4dGVuZHMgTG9hZGVyPExpc3Q8UHJpbnRlckluZm8+PgorICAgICAgICBpbXBsZW1lbnRzIExvY2F0aW9uTGlzdGVuZXIgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMT0dfVEFHID0gIkZ1c2VkUHJpbnRlcnNQcm92aWRlciI7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CkBAIC03MCwxMCArODEsMjIgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfRkFWT1JJVEVfUFJJTlRFUl9DT1VOVCA9IDQ7CiAKKyAgICAvKiogSW50ZXJ2YWwgb2YgbG9jYXRpb24gdXBkYXRlZCBpbiBtcyAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMT0NBVElPTl9VUERBVEVfTVMgPSAzMCAqIDEwMDA7CisKKyAgICAvKiogTWF4aW11bSBhY2NlcHRhYmxlIGFnZSBvZiB0aGUgbG9jYXRpb24gaW4gbXMgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0xPQ0FUSU9OX0FHRV9NUyA9IDEwICogNjAgKiAxMDAwOworCisgICAgLyoqIFRoZSB3b3JzdCBhY2N1cmFjeSB0aGF0IGlzIGNvbnNpZGVyZWQgdXNhYmxlIGluIG0gKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOX0xPQ0FUSU9OX0FDQ1VSQUNZID0gNTA7CisKKyAgICAvKiogTWF4aW11bSBkaXN0YW5jZSB3aGVyZSBhIHByaW50ZXIgaXMgc3RpbGwgY29uc2lkZXJlZCAibmVhciIgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1BSSU5URVJfRElTVEFOQ0UgPSBNSU5fTE9DQVRJT05fQUNDVVJBQ1kgKiAyOworCiAgICAgcHJpdmF0ZSBmaW5hbCBMaXN0PFByaW50ZXJJbmZvPiBtUHJpbnRlcnMgPQogICAgICAgICAgICAgbmV3IEFycmF5TGlzdDw+KCk7CiAKLSAgICBwcml2YXRlIGZpbmFsIExpc3Q8UHJpbnRlckluZm8+IG1GYXZvcml0ZVByaW50ZXJzID0KKyAgICBwcml2YXRlIGZpbmFsIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBtRmF2b3JpdGVQcmludGVycyA9CiAgICAgICAgICAgICBuZXcgQXJyYXlMaXN0PD4oKTsKIAogICAgIHByaXZhdGUgZmluYWwgUGVyc2lzdGVuY2VNYW5hZ2VyIG1QZXJzaXN0ZW5jZU1hbmFnZXI7CkBAIC04NCwzMyArMTA3LDExMSBAQAogCiAgICAgcHJpdmF0ZSBib29sZWFuIG1QcmludGVyc1VwZGF0ZWRCZWZvcmU7CiAKKyAgICAvKiogTGFzdCBrbm93biBsb2NhdGlvbiwgY2FuIGJlIG51bGwgb3Igb3V0IG9mIGRhdGUgKi8KKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBtTG9jYXRpb25Mb2NrOworICAgIHByaXZhdGUgTG9jYXRpb24gbUxvY2F0aW9uOworCisgICAgLyoqIExvY2F0aW9uIHVzZWQgd2hlbiB0aGUgcHJpbnRlcnMgd2VyZSB1cGRhdGVkIHRoZSBsYXN0IHRpbWUgKi8KKyAgICBwcml2YXRlIExvY2F0aW9uIG1Mb2NhdGlvbk9mTGFzdFByaW50ZXJVcGRhdGU7CisKKyAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzeXN0ZW0ncyBsb2NhdGlvbiBtYW5hZ2VyICovCisgICAgcHJpdmF0ZSBmaW5hbCBMb2NhdGlvbk1hbmFnZXIgbUxvY2F0aW9uTWFuYWdlcjsKKworICAgIC8qKgorICAgICAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBsb2NhdGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIExvY2F0aW9uIGdldEN1cnJlbnRMb2NhdGlvbigpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jYXRpb25Mb2NrKSB7CisgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOworICAgICAgICB9CisgICAgfQorCiAgICAgcHVibGljIEZ1c2VkUHJpbnRlcnNQcm92aWRlcihDb250ZXh0IGNvbnRleHQpIHsKICAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Mb2NhdGlvbkxvY2sgPSBuZXcgT2JqZWN0KCk7CiAgICAgICAgIG1QZXJzaXN0ZW5jZU1hbmFnZXIgPSBuZXcgUGVyc2lzdGVuY2VNYW5hZ2VyKGNvbnRleHQpOworICAgICAgICBtTG9jYXRpb25NYW5hZ2VyID0gKExvY2F0aW9uTWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTE9DQVRJT05fU0VSVklDRSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgYWRkSGlzdG9yaWNhbFByaW50ZXIoUHJpbnRlckluZm8gcHJpbnRlcikgewogICAgICAgICBtUGVyc2lzdGVuY2VNYW5hZ2VyLmFkZFByaW50ZXJBbmRXcml0ZVByaW50ZXJIaXN0b3J5KHByaW50ZXIpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEFkZCBwcmludGVyIHRvIGRlc3QsIG9yIGlmIHVwZGF0ZWRQcmludGVycyBhZGQgdGhlIHVwZGF0ZWQgcHJpbnRlci4gSWYgdGhlIHVwZGF0ZWQgcHJpbnRlcgorICAgICAqIHdhcyBhZGRlZCwgcmVtb3ZlIGl0IGZyb20gdXBkYXRlZFByaW50ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIGRlc3QgVGhlIGxpc3QgdGhlIHByaW50ZXJzIHNob3VsZCBiZSBhZGRlZCB0bworICAgICAqIEBwYXJhbSBwcmludGVyIFRoZSBwcmludGVyIHRvIGFkZAorICAgICAqIEBwYXJhbSB1cGRhdGVkUHJpbnRlcnMgVGhlIHByaW50ZXIgdG8gYWRkCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUFuZEFkZFByaW50ZXIoTGlzdDxQcmludGVySW5mbz4gZGVzdCwgUHJpbnRlckluZm8gcHJpbnRlciwKKyAgICAgICAgICAgIE1hcDxQcmludGVySWQsIFByaW50ZXJJbmZvPiB1cGRhdGVkUHJpbnRlcnMpIHsKKyAgICAgICAgUHJpbnRlckluZm8gdXBkYXRlZFByaW50ZXIgPSB1cGRhdGVkUHJpbnRlcnMucmVtb3ZlKHByaW50ZXIuZ2V0SWQoKSk7CisgICAgICAgIGlmICh1cGRhdGVkUHJpbnRlciAhPSBudWxsKSB7CisgICAgICAgICAgICBkZXN0LmFkZCh1cGRhdGVkUHJpbnRlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXN0LmFkZChwcmludGVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgdGhlIHByaW50ZXJzLCBvcmRlciB0aGVtIGFwcHJvcHJpYXRlbHkgYW5kIGRlbGl2ZXIgdGhlIHByaW50ZXJzIHRvIHRoZSBjbGllbnRzLiBXZQorICAgICAqIHByZWZlciBwcmludGVycyB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IHVzZWQgKGZhdm9yaXRlcykgYW5kIHByaW50ZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQKKyAgICAgKiBwcmV2aW91c2x5IGNsb3NlIHRvIHRoZSBjdXJyZW50IGxvY2F0aW9uIChuZWFyIHByaW50ZXJzKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkaXNjb3ZlcmVkUHJpbnRlcnMgQWxsIHByaW50ZXJzIGN1cnJlbnRseSBkaXNjb3ZlcmVkIGJ5IHRoZSBwcmludCBkaXNjb3Zlcnkgc2Vzc2lvbi4KKyAgICAgKiBAcGFyYW0gZmF2b3JpdGVQcmludGVycyBUaGUgb3JkZXJlZCBsaXN0IG9mIHByaW50ZXJzLiBUaGUgZWFybGllciBpbiB0aGUgbGlzdCwgdGhlIG1vcmUKKyAgICAgKiAgICAgICAgICAgIHByZWZlcnJlZC4KKyAgICAgKi8KICAgICBwcml2YXRlIHZvaWQgY29tcHV0ZUFuZERlbGl2ZXJSZXN1bHQoTWFwPFByaW50ZXJJZCwgUHJpbnRlckluZm8+IGRpc2NvdmVyZWRQcmludGVycywKLSAgICAgICAgICAgIExpc3Q8UHJpbnRlckluZm8+IGZhdm9yaXRlUHJpbnRlcnMpIHsKKyAgICAgICAgICAgIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBmYXZvcml0ZVByaW50ZXJzKSB7CiAgICAgICAgIExpc3Q8UHJpbnRlckluZm8+IHByaW50ZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAKLSAgICAgICAgLy8gQWRkIHRoZSB1cGRhdGVkIGZhdm9yaXRlIHByaW50ZXJzLgorICAgICAgICAvLyBTdG9yZSB0aGUgcHJpbnRlcklkcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkLiBXZSBjYW5ub3QgY29tcGFyZSB0aGUgcHJpbnRlckluZm9zIGluCisgICAgICAgIC8vICJwcmludGVycyIgYXMgdGhleSBtaWdodCBoYXZlIGJlZW4gdGFrZW4gZnJvbSBkaXNjb3ZlcmVkUHJpbnRlcnMgYW5kIHRoZSBwcmludGVySW5mbyBkb2VzCisgICAgICAgIC8vIG5vdCBlcXVhbHMoKSBhbnltb3JlCisgICAgICAgIEhhc2hTZXQ8UHJpbnRlcklkPiBhbHJlYWR5QWRkZWRQcmludGVyID0gbmV3IEhhc2hTZXQ8PihNQVhfRkFWT1JJVEVfUFJJTlRFUl9DT1VOVCk7CisKKyAgICAgICAgTG9jYXRpb24gbG9jYXRpb24gPSBnZXRDdXJyZW50TG9jYXRpb24oKTsKKworICAgICAgICAvLyBBZGQgdGhlIGZhdm9yaXRlIHByaW50ZXJzIHRoYXQgaGF2ZSBsYXN0IGJlZW4gdXNlZCBjbG9zZSB0byB0aGUgY3VycmVudCBsb2NhdGlvbgogICAgICAgICBmaW5hbCBpbnQgZmF2b3JpdGVQcmludGVyQ291bnQgPSBmYXZvcml0ZVByaW50ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYXZvcml0ZVByaW50ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBQcmludGVySW5mbyBmYXZvcml0ZVByaW50ZXIgPSBmYXZvcml0ZVByaW50ZXJzLmdldChpKTsKLSAgICAgICAgICAgIFByaW50ZXJJbmZvIHVwZGF0ZWRQcmludGVyID0gZGlzY292ZXJlZFByaW50ZXJzLnJlbW92ZSgKLSAgICAgICAgICAgICAgICAgICAgZmF2b3JpdGVQcmludGVyLmdldElkKCkpOwotICAgICAgICAgICAgaWYgKHVwZGF0ZWRQcmludGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBwcmludGVycy5hZGQodXBkYXRlZFByaW50ZXIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmludGVycy5hZGQoZmF2b3JpdGVQcmludGVyKTsKKyAgICAgICAgaWYgKGxvY2F0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmF2b3JpdGVQcmludGVyQ291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIC8vIE9ubHkgYWRkIGEgY2VydGFpbiBhbW91bnQgb2YgZmF2b3JpdGUgcHJpbnRlcnMKKyAgICAgICAgICAgICAgICBpZiAocHJpbnRlcnMuc2l6ZSgpID09IE1BWF9GQVZPUklURV9QUklOVEVSX0NPVU5UKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIGZhdm9yaXRlUHJpbnRlciA9IGZhdm9yaXRlUHJpbnRlcnMuZ2V0KGkpLmZpcnN0OworICAgICAgICAgICAgICAgIExvY2F0aW9uIHByaW50ZXJMb2NhdGlvbiA9IGZhdm9yaXRlUHJpbnRlcnMuZ2V0KGkpLnNlY29uZDsKKworICAgICAgICAgICAgICAgIGlmIChwcmludGVyTG9jYXRpb24gIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWFscmVhZHlBZGRlZFByaW50ZXIuY29udGFpbnMoZmF2b3JpdGVQcmludGVyLmdldElkKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmludGVyTG9jYXRpb24uZGlzdGFuY2VUbyhsb2NhdGlvbikgPD0gTUFYX1BSSU5URVJfRElTVEFOQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFuZEFkZFByaW50ZXIocHJpbnRlcnMsIGZhdm9yaXRlUHJpbnRlciwgZGlzY292ZXJlZFByaW50ZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlBZGRlZFByaW50ZXIuYWRkKGZhdm9yaXRlUHJpbnRlci5nZXRJZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIC8vIEFkZCBvdGhlciB1cGRhdGVkIHByaW50ZXJzLgorICAgICAgICAvLyBBZGQgdGhlIG90aGVyIGZhdm9yaXRlIHByaW50ZXJzCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmF2b3JpdGVQcmludGVyQ291bnQ7IGkrKykgeworICAgICAgICAgICAgLy8gT25seSBhZGQgYSBjZXJ0YWluIGFtb3VudCBvZiBmYXZvcml0ZSBwcmludGVycworICAgICAgICAgICAgaWYgKHByaW50ZXJzLnNpemUoKSA9PSBNQVhfRkFWT1JJVEVfUFJJTlRFUl9DT1VOVCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQcmludGVySW5mbyBmYXZvcml0ZVByaW50ZXIgPSBmYXZvcml0ZVByaW50ZXJzLmdldChpKS5maXJzdDsKKyAgICAgICAgICAgIGlmICghYWxyZWFkeUFkZGVkUHJpbnRlci5jb250YWlucyhmYXZvcml0ZVByaW50ZXIuZ2V0SWQoKSkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBbmRBZGRQcmludGVyKHByaW50ZXJzLCBmYXZvcml0ZVByaW50ZXIsIGRpc2NvdmVyZWRQcmludGVycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBBZGQgb3RoZXIgdXBkYXRlZCBwcmludGVycy4gUHJpbnRlcnMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tCisgICAgICAgIC8vIGRpc2NvdmVyZWRQcmludGVycyBpbiB0aGUgY2FsbHMgdG8gdXBkYXRlQW5kQWRkUHJpbnRlcgogICAgICAgICBmaW5hbCBpbnQgcHJpbnRlckNvdW50ID0gbVByaW50ZXJzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmludGVyQ291bnQ7IGkrKykgewogICAgICAgICAgICAgUHJpbnRlckluZm8gcHJpbnRlciA9IG1QcmludGVycy5nZXQoaSk7CkBAIC0xNDIsNiArMjQzLDIxIEBACiAgICAgICAgIGlmIChERUJVRykgewogICAgICAgICAgICAgTG9nLmkoTE9HX1RBRywgIm9uU3RhcnRMb2FkaW5nKCkgIiArIEZ1c2VkUHJpbnRlcnNQcm92aWRlci50aGlzLmhhc2hDb2RlKCkpOwogICAgICAgICB9CisKKyAgICAgICAgbUxvY2F0aW9uTWFuYWdlci5yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKExvY2F0aW9uUmVxdWVzdC5jcmVhdGUoKQorICAgICAgICAgICAgICAgIC5zZXRRdWFsaXR5KExvY2F0aW9uUmVxdWVzdC5QT1dFUl9MT1cpLnNldEludGVydmFsKExPQ0FUSU9OX1VQREFURV9NUyksIHRoaXMsCisgICAgICAgICAgICAgICAgTG9vcGVyLmdldE1haW5Mb29wZXIoKSk7CisKKyAgICAgICAgTG9jYXRpb24gbGFzdExvY2F0aW9uID0gbUxvY2F0aW9uTWFuYWdlci5nZXRMYXN0TG9jYXRpb24oKTsKKyAgICAgICAgaWYgKGxhc3RMb2NhdGlvbiAhPSBudWxsKSB7CisgICAgICAgICAgICBvbkxvY2F0aW9uQ2hhbmdlZChsYXN0TG9jYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgLy8gSnVtcHN0YXJ0IGxvY2F0aW9uIHdpdGggYSBzaW5nbGUgZm9yY2VkIHVwZGF0ZQorICAgICAgICBDcml0ZXJpYSBvbmVUaW1lQ3JpdGVyaWEgPSBuZXcgQ3JpdGVyaWEoKTsKKyAgICAgICAgb25lVGltZUNyaXRlcmlhLnNldEFjY3VyYWN5KENyaXRlcmlhLkFDQ1VSQUNZX0ZJTkUpOworICAgICAgICBtTG9jYXRpb25NYW5hZ2VyLnJlcXVlc3RTaW5nbGVVcGRhdGUob25lVGltZUNyaXRlcmlhLCB0aGlzLCBMb29wZXIuZ2V0TWFpbkxvb3BlcigpKTsKKwogICAgICAgICAvLyBUaGUgY29udHJhY3QgaXMgdGhhdCBpZiB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCwKICAgICAgICAgLy8gcmVzdWx0IHRoZSB3ZSBoYXZlIHRvIGRlbGl2ZXIgaXQgaW1tZWRpYXRlbHkuCiAgICAgICAgIGlmICghbVByaW50ZXJzLmlzRW1wdHkoKSkgewpAQCAtMTU4LDYgKzI3NCw4IEBACiAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAib25TdG9wTG9hZGluZygpICIgKyBGdXNlZFByaW50ZXJzUHJvdmlkZXIudGhpcy5oYXNoQ29kZSgpKTsKICAgICAgICAgfQogICAgICAgICBvbkNhbmNlbExvYWQoKTsKKworICAgICAgICBtTG9jYXRpb25NYW5hZ2VyLnJlbW92ZVVwZGF0ZXModGhpcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xODgsMzQgKzMwNiwzOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgIiArIEZ1c2VkUHJpbnRlcnNQcm92aWRlci50aGlzLmhhc2hDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJpbnRlcnMobURpc2NvdmVyeVNlc3Npb24uZ2V0UHJpbnRlcnMoKSwgbUZhdm9yaXRlUHJpbnRlcnMpOworICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcmludGVycyhtRGlzY292ZXJ5U2Vzc2lvbi5nZXRQcmludGVycygpLCBtRmF2b3JpdGVQcmludGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDdXJyZW50TG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBmaW5hbCBpbnQgZmF2b3JpdGVDb3VudCA9IG1GYXZvcml0ZVByaW50ZXJzLnNpemUoKTsKICAgICAgICAgICAgIExpc3Q8UHJpbnRlcklkPiBwcmludGVySWRzID0gbmV3IEFycmF5TGlzdDw+KGZhdm9yaXRlQ291bnQpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYXZvcml0ZUNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBwcmludGVySWRzLmFkZChtRmF2b3JpdGVQcmludGVycy5nZXQoaSkuZ2V0SWQoKSk7CisgICAgICAgICAgICAgICAgcHJpbnRlcklkcy5hZGQobUZhdm9yaXRlUHJpbnRlcnMuZ2V0KGkpLmZpcnN0LmdldElkKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbURpc2NvdmVyeVNlc3Npb24uc3RhcnRQcmludGVyRGlzY292ZXJ5KHByaW50ZXJJZHMpOwogICAgICAgICAgICAgTGlzdDxQcmludGVySW5mbz4gcHJpbnRlcnMgPSBtRGlzY292ZXJ5U2Vzc2lvbi5nZXRQcmludGVycygpOwotICAgICAgICAgICAgaWYgKCFwcmludGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVQcmludGVycyhwcmludGVycywgbUZhdm9yaXRlUHJpbnRlcnMpOwotICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1cGRhdGVQcmludGVycyhwcmludGVycywgbUZhdm9yaXRlUHJpbnRlcnMsIGdldEN1cnJlbnRMb2NhdGlvbigpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCB1cGRhdGVQcmludGVycyhMaXN0PFByaW50ZXJJbmZvPiBwcmludGVycywgTGlzdDxQcmludGVySW5mbz4gZmF2b3JpdGVQcmludGVycykgeworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVQcmludGVycyhMaXN0PFByaW50ZXJJbmZvPiBwcmludGVycywKKyAgICAgICAgICAgIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBmYXZvcml0ZVByaW50ZXJzLAorICAgICAgICAgICAgTG9jYXRpb24gbG9jYXRpb24pIHsKICAgICAgICAgaWYgKG1QcmludGVyc1VwZGF0ZWRCZWZvcmUgJiYgbVByaW50ZXJzLmVxdWFscyhwcmludGVycykKLSAgICAgICAgICAgICAgICAmJiBtRmF2b3JpdGVQcmludGVycy5lcXVhbHMoZmF2b3JpdGVQcmludGVycykpIHsKKyAgICAgICAgICAgICAgICAmJiBtRmF2b3JpdGVQcmludGVycy5lcXVhbHMoZmF2b3JpdGVQcmludGVycykKKyAgICAgICAgICAgICAgICAmJiBPYmplY3RzLmVxdWFscyhtTG9jYXRpb25PZkxhc3RQcmludGVyVXBkYXRlLCBsb2NhdGlvbikpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIG1Mb2NhdGlvbk9mTGFzdFByaW50ZXJVcGRhdGUgPSBsb2NhdGlvbjsKICAgICAgICAgbVByaW50ZXJzVXBkYXRlZEJlZm9yZSA9IHRydWU7CiAKICAgICAgICAgLy8gU29tZSBvZiB0aGUgZm91bmQgcHJpbnRlcnMgbWF5IGhhdmUgYmUgYSBwcmludGVyIHRoYXQgaXMgaW4gdGhlCi0gICAgICAgIC8vIGhpc3RvcnkgYnV0IHdpdGggaXRzIG5hbWUgY2hhbmdlZC4gSGVuY2UsIHdlIHRyeSB0byB1cGRhdGUgdGhlCi0gICAgICAgIC8vIHByaW50ZXIgdG8gdXNlIGl0cyBjdXJyZW50IG5hbWUgaW5zdGVhZCBvZiB0aGUgaGlzdG9yaWNhbCBvbmUuCi0gICAgICAgIG1QZXJzaXN0ZW5jZU1hbmFnZXIudXBkYXRlUHJpbnRlcnNIaXN0b3JpY2FsTmFtZXNJZk5lZWRlZChwcmludGVycyk7CisgICAgICAgIC8vIGhpc3RvcnkgYnV0IHdpdGggaXRzIHByb3BlcnRpZXMgY2hhbmdlZC4gSGVuY2UsIHdlIHRyeSB0byB1cGRhdGUgdGhlCisgICAgICAgIC8vIHByaW50ZXIgdG8gdXNlIGl0cyBjdXJyZW50IHByb3BlcnRpZXMgaW5zdGVhZCBvZiB0aGUgaGlzdG9yaWNhbCBvbmUuCisgICAgICAgIG1QZXJzaXN0ZW5jZU1hbmFnZXIudXBkYXRlSGlzdG9yaWNhbFByaW50ZXJzSWZOZWVkZWQocHJpbnRlcnMpOwogCiAgICAgICAgIE1hcDxQcmludGVySWQsIFByaW50ZXJJbmZvPiBwcmludGVyc01hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKICAgICAgICAgZmluYWwgaW50IHByaW50ZXJDb3VudCA9IHByaW50ZXJzLnNpemUoKTsKQEAgLTI3MSw2ICszOTMsNjAgQEAKICAgICAgICAgb25TdG9wTG9hZGluZygpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENoZWNrIGlmIHRoZSBsb2NhdGlvbiBpcyBhY2NlcHRhYmxlLiBUaGlzIGlzIHRvIGZpbHRlciBvdXQgZXhjZXNzaXZlbHkgb2xkIG9yIGluYWNjdXJhdGUKKyAgICAgKiBsb2NhdGlvbiB1cGRhdGVzLgorICAgICAqCisgICAgICogQHBhcmFtIGxvY2F0aW9uIHRoZSBsb2NhdGlvbiB0byBjaGVjaworICAgICAqIEByZXR1cm4gdHJ1ZSBpZmYgdGhlIGxvY2F0aW9uIGlzIHVzYWJsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNMb2NhdGlvbkFjY2VwdGFibGUoTG9jYXRpb24gbG9jYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGxvY2F0aW9uICE9IG51bGwKKyAgICAgICAgICAgICAgICAmJiBsb2NhdGlvbi5nZXRFbGFwc2VkUmVhbHRpbWVOYW5vcygpID4gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lTmFub3MoKQorICAgICAgICAgICAgICAgICAgICAgICAgLSBNQVhfTE9DQVRJT05fQUdFX01TICogMTAwMF8wMDBMCisgICAgICAgICAgICAgICAgJiYgbG9jYXRpb24uaGFzQWNjdXJhY3koKQorICAgICAgICAgICAgICAgICYmIGxvY2F0aW9uLmdldEFjY3VyYWN5KCkgPCBNSU5fTE9DQVRJT05fQUNDVVJBQ1k7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Mb2NhdGlvbkNoYW5nZWQoTG9jYXRpb24gbG9jYXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkKG1Mb2NhdGlvbkxvY2spIHsKKyAgICAgICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgdXNlciB0byBub3QgbW92ZSB0b28gZmFzdCB3aGlsZSBwcmludGluZy4gSGVuY2UgcHJlZmVyIG1vcmUgYWNjdXJhdGUKKyAgICAgICAgICAgIC8vIHVwZGF0ZXMgb3ZlciBtb3JlIHJlY2VudCBvbmVzIGZvciBMT0NBVElPTl9VUERBVEVfTVMuIFdlIGFkZCBhIDEwJSBmdWRnZSBmYWN0b3IgaGVyZQorICAgICAgICAgICAgLy8gYXMgdGhlIGxvY2F0aW9uIHByb3ZpZGVyIG1pZ2h0IHNlbmQgYW4gdXBkYXRlIHNsaWdodGx5IHRvbyBlYXJseS4KKyAgICAgICAgICAgIGlmIChpc0xvY2F0aW9uQWNjZXB0YWJsZShsb2NhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgJiYgIWxvY2F0aW9uLmVxdWFscyhtTG9jYXRpb24pCisgICAgICAgICAgICAgICAgICAgICYmIChtTG9jYXRpb24gPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0RWxhcHNlZFJlYWx0aW1lTmFub3MoKSA+IG1Mb2NhdGlvbi5nZXRFbGFwc2VkUmVhbHRpbWVOYW5vcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTE9DQVRJT05fVVBEQVRFX01TICogMC45ICogMTAwMF8wMDBMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFtTG9jYXRpb24uaGFzQWNjdXJhY3koKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbG9jYXRpb24uZ2V0QWNjdXJhY3koKSA8IG1Mb2NhdGlvbi5nZXRBY2N1cmFjeSgpKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBPdGhlciBjYWxsZXJzIG9mIHVwZGF0ZVByaW50ZXJzIG1pZ2h0IHdhbnQgdG8ga25vdyB0aGUgbG9jYXRpb24sIGhlbmNlIGNhY2hlIGl0CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uID0gbG9jYXRpb247CisKKyAgICAgICAgICAgICAgICBpZiAoYXJlSGlzdG9yaWNhbFByaW50ZXJzTG9hZGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJpbnRlcnMobURpc2NvdmVyeVNlc3Npb24uZ2V0UHJpbnRlcnMoKSwgbUZhdm9yaXRlUHJpbnRlcnMsIG1Mb2NhdGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TdGF0dXNDaGFuZ2VkKFN0cmluZyBwcm92aWRlciwgaW50IHN0YXR1cywgQnVuZGxlIGV4dHJhcykgeworICAgICAgICAvLyBub3RoaW5nIHRvIGRvCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Qcm92aWRlckVuYWJsZWQoU3RyaW5nIHByb3ZpZGVyKSB7CisgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nIHByb3ZpZGVyKSB7CisgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8KKyAgICB9CisKICAgICBwdWJsaWMgYm9vbGVhbiBhcmVIaXN0b3JpY2FsUHJpbnRlcnNMb2FkZWQoKSB7CiAgICAgICAgIHJldHVybiBtUGVyc2lzdGVuY2VNYW5hZ2VyLm1SZWFkSGlzdG9yeUNvbXBsZXRlZDsKICAgICB9CkBAIC0yOTQsNyArNDcwLDcgQEAKICAgICBwdWJsaWMgYm9vbGVhbiBpc0Zhdm9yaXRlUHJpbnRlcihQcmludGVySWQgcHJpbnRlcklkKSB7CiAgICAgICAgIGZpbmFsIGludCBwcmludGVyQ291bnQgPSBtRmF2b3JpdGVQcmludGVycy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJpbnRlckNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFByaW50ZXJJbmZvIGZhdm9yaXRlUHJpdG5lciA9IG1GYXZvcml0ZVByaW50ZXJzLmdldChpKTsKKyAgICAgICAgICAgIFByaW50ZXJJbmZvIGZhdm9yaXRlUHJpdG5lciA9IG1GYXZvcml0ZVByaW50ZXJzLmdldChpKS5maXJzdDsKICAgICAgICAgICAgIGlmIChmYXZvcml0ZVByaXRuZXIuZ2V0SWQoKS5lcXVhbHMocHJpbnRlcklkKSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMzAzLDI4ICs0NzksMjIgQEAKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBmb3JnZXRGYXZvcml0ZVByaW50ZXIoUHJpbnRlcklkIHByaW50ZXJJZCkgewotICAgICAgICBMaXN0PFByaW50ZXJJbmZvPiBuZXdGYXZvcml0ZVByaW50ZXJzID0gbnVsbDsKKyAgICAgICAgZmluYWwgaW50IGZhdm9yaXRlUHJpbnRlckNvdW50ID0gbUZhdm9yaXRlUHJpbnRlcnMuc2l6ZSgpOworICAgICAgICBMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4gbmV3RmF2b3JpdGVQcmludGVycyA9IG5ldyBBcnJheUxpc3Q8PigKKyAgICAgICAgICAgICAgICBmYXZvcml0ZVByaW50ZXJDb3VudCAtIDEpOwogCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgcHJpbnRlciBmcm9tIHRoZSBmYXZvcml0ZXMuCi0gICAgICAgIGZpbmFsIGludCBmYXZvcml0ZVByaW50ZXJDb3VudCA9IG1GYXZvcml0ZVByaW50ZXJzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYXZvcml0ZVByaW50ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBQcmludGVySW5mbyBmYXZvcml0ZVByaW50ZXIgPSBtRmF2b3JpdGVQcmludGVycy5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoZmF2b3JpdGVQcmludGVyLmdldElkKCkuZXF1YWxzKHByaW50ZXJJZCkpIHsKLSAgICAgICAgICAgICAgICBuZXdGYXZvcml0ZVByaW50ZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7Ci0gICAgICAgICAgICAgICAgbmV3RmF2b3JpdGVQcmludGVycy5hZGRBbGwobVByaW50ZXJzKTsKLSAgICAgICAgICAgICAgICBuZXdGYXZvcml0ZVByaW50ZXJzLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghbUZhdm9yaXRlUHJpbnRlcnMuZ2V0KGkpLmZpcnN0LmdldElkKCkuZXF1YWxzKHByaW50ZXJJZCkpIHsKKyAgICAgICAgICAgICAgICBuZXdGYXZvcml0ZVByaW50ZXJzLmFkZChtRmF2b3JpdGVQcmludGVycy5nZXQoaSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgd2UgcmVtb3ZlZCBhIGZhdm9yaXRlIHByaW50ZXIsIHdlIGhhdmUgd29yayB0byBkby4KLSAgICAgICAgaWYgKG5ld0Zhdm9yaXRlUHJpbnRlcnMgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBwcmludGVyIGZyb20gaGlzdG9yeSBhbmQgcGVyc2lzdCB0aGUgbGF0dGVyLgotICAgICAgICAgICAgbVBlcnNpc3RlbmNlTWFuYWdlci5yZW1vdmVIaXN0b3JpY2FsUHJpbnRlckFuZFdyaXRlUHJpbnRlckhpc3RvcnkocHJpbnRlcklkKTsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBwcmludGVyIGZyb20gaGlzdG9yeSBhbmQgcGVyc2lzdCB0aGUgbGF0dGVyLgorICAgICAgICBtUGVyc2lzdGVuY2VNYW5hZ2VyLnJlbW92ZUhpc3RvcmljYWxQcmludGVyQW5kV3JpdGVQcmludGVySGlzdG9yeShwcmludGVySWQpOwogCi0gICAgICAgICAgICAvLyBSZWNvbXB1dGUgYW5kIGRlbGl2ZXIgdGhlIHByaW50ZXJzLgotICAgICAgICAgICAgdXBkYXRlUHJpbnRlcnMobURpc2NvdmVyeVNlc3Npb24uZ2V0UHJpbnRlcnMoKSwgbmV3RmF2b3JpdGVQcmludGVycyk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gUmVjb21wdXRlIGFuZCBkZWxpdmVyIHRoZSBwcmludGVycy4KKyAgICAgICAgdXBkYXRlUHJpbnRlcnMobURpc2NvdmVyeVNlc3Npb24uZ2V0UHJpbnRlcnMoKSwgbmV3RmF2b3JpdGVQcmludGVycywgZ2V0Q3VycmVudExvY2F0aW9uKCkpOwogICAgIH0KIAogICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUGVyc2lzdGVuY2VNYW5hZ2VyIHsKQEAgLTMzMywxOCArNTAzLDIyIEBACiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfUFJJTlRFUlMgPSAicHJpbnRlcnMiOwogCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfUFJJTlRFUiA9ICJwcmludGVyIjsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19MT0NBVElPTiA9ICJsb2NhdGlvbiI7CiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfUFJJTlRFUl9JRCA9ICJwcmludGVySWQiOwogCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0xPQ0FMX0lEID0gImxvY2FsSWQiOwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9TRVJWSUNFX05BTUUgPSAic2VydmljZU5hbWUiOwogCisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0xPTkdJVFVERSA9ICJsb25naXR1ZGUiOworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9MQVRJVFVERSA9ICJsYXRpdHVkZSI7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0FDQ1VSQUNZID0gImFjY3VyYWN5IjsKKwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9OQU1FID0gIm5hbWUiOwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9ERVNDUklQVElPTiA9ICJkZXNjcmlwdGlvbiI7Ci0gICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1NUQVRVUyA9ICJzdGF0dXMiOwogCiAgICAgICAgIHByaXZhdGUgZmluYWwgQXRvbWljRmlsZSBtU3RhdGVQZXJzaXN0RmlsZTsKIAotICAgICAgICBwcml2YXRlIExpc3Q8UHJpbnRlckluZm8+IG1IaXN0b3JpY2FsUHJpbnRlcnMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgcHJpdmF0ZSBMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4gbUhpc3RvcmljYWxQcmludGVycyA9IG5ldyBBcnJheUxpc3Q8PigpOwogCiAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtUmVhZEhpc3RvcnlDb21wbGV0ZWQ7CiAKQEAgLTM3OCwxMyArNTUyLDEzIEBACiAgICAgICAgICAgICBtUmVhZFRhc2suZXhlY3V0ZU9uRXhlY3V0b3IoQXN5bmNUYXNrLlNFUklBTF9FWEVDVVRPUiwgKFZvaWRbXSkgbnVsbCk7CiAgICAgICAgIH0KIAotICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVQcmludGVyc0hpc3RvcmljYWxOYW1lc0lmTmVlZGVkKExpc3Q8UHJpbnRlckluZm8+IHByaW50ZXJzKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUhpc3RvcmljYWxQcmludGVyc0lmTmVlZGVkKExpc3Q8UHJpbnRlckluZm8+IHByaW50ZXJzKSB7CiAgICAgICAgICAgICBib29sZWFuIHdyaXRlSGlzdG9yeSA9IGZhbHNlOwogCiAgICAgICAgICAgICBmaW5hbCBpbnQgcHJpbnRlckNvdW50ID0gcHJpbnRlcnMuc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmludGVyQ291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIHByaW50ZXIgPSBwcmludGVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgd3JpdGVIaXN0b3J5IHw9IHJlbmFtZVByaW50ZXJJZk5lZWRlZChwcmludGVyKTsKKyAgICAgICAgICAgICAgICB3cml0ZUhpc3RvcnkgfD0gdXBkYXRlSGlzdG9yaWNhbFByaW50ZXJJZk5lZWRlZChwcmludGVyKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHdyaXRlSGlzdG9yeSkgewpAQCAtMzkyLDI1ICs1NjYsNTcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyBib29sZWFuIHJlbmFtZVByaW50ZXJJZk5lZWRlZChQcmludGVySW5mbyBwcmludGVyKSB7Ci0gICAgICAgICAgICBib29sZWFuIHJlbmFtZWQgPSBmYWxzZTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVwZGF0ZXMgdGhlIGhpc3RvcmljYWwgcHJpbnRlciBzdGF0ZSB3aXRoIHRoZSBnaXZlbiBwcmludGVyLgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0gcHJpbnRlciB0aGUgcHJpbnRlciB0byB1cGRhdGUKKyAgICAgICAgICoKKyAgICAgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGUgaGlzdG9yaWNhbCBwcmludGVyIGxpc3QgbmVlZHMgdG8gYmUgdXBkYXRlZAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gdXBkYXRlSGlzdG9yaWNhbFByaW50ZXJJZk5lZWRlZChQcmludGVySW5mbyBwcmludGVyKSB7CisgICAgICAgICAgICBib29sZWFuIHdyaXRlSGlzdG9yeSA9IGZhbHNlOwogICAgICAgICAgICAgZmluYWwgaW50IHByaW50ZXJDb3VudCA9IG1IaXN0b3JpY2FsUHJpbnRlcnMuc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmludGVyQ291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIGhpc3RvcmljYWxQcmludGVyID0gbUhpc3RvcmljYWxQcmludGVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGhpc3RvcmljYWxQcmludGVyLmdldElkKCkuZXF1YWxzKHByaW50ZXIuZ2V0SWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmICFUZXh0VXRpbHMuZXF1YWxzKGhpc3RvcmljYWxQcmludGVyLmdldE5hbWUoKSwgcHJpbnRlci5nZXROYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1IaXN0b3JpY2FsUHJpbnRlcnMuc2V0KGksIHByaW50ZXIpOwotICAgICAgICAgICAgICAgICAgICByZW5hbWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBQcmludGVySW5mbyBoaXN0b3JpY2FsUHJpbnRlciA9IG1IaXN0b3JpY2FsUHJpbnRlcnMuZ2V0KGkpLmZpcnN0OworCisgICAgICAgICAgICAgICAgaWYgKCFoaXN0b3JpY2FsUHJpbnRlci5nZXRJZCgpLmVxdWFscyhwcmludGVyLmdldElkKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgaGlzdG9yaWNhbCBwcmludGVyIHdpdGggdGhlIHVwZGF0ZWQgcHJpbnRlciBhcyBzb21lIHByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAvLyBjaGFuZ2VkLiBXZSBpZ25vcmUgdGhlIHN0YXR1cyBhcyB0aGlzIGlzIGEgdm9sYXRpbGUgc3RhdGUuCisgICAgICAgICAgICAgICAgaWYgKGhpc3RvcmljYWxQcmludGVyLmVxdWFsc0lnbm9yaW5nU3RhdHVzKHByaW50ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1IaXN0b3JpY2FsUHJpbnRlcnMuc2V0KGksIG5ldyBQYWlyPFByaW50ZXJJbmZvLCBMb2NhdGlvbj4ocHJpbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcmljYWxQcmludGVycy5nZXQoaSkuc2Vjb25kKSk7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHBlcnNpc3QgbGltaXRlZCBpbmZvcm1hdGlvbiBpbiB0aGUgcHJpbnRlciBoaXN0b3J5LCBoZW5jZSBjaGVjayBpZgorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcGVyc2lzdCB0aGUgdXBkYXRlLgorICAgICAgICAgICAgICAgIC8vIEBzZWUgUGVyc2lzdGVuY2VNYW5hZ2VyLldyaXRlVGFzayNkb1dyaXRlUHJpbnRlckhpc3RvcnkKKyAgICAgICAgICAgICAgICBpZiAoIWhpc3RvcmljYWxQcmludGVyLmdldE5hbWUoKS5lcXVhbHMocHJpbnRlci5nZXROYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RzLmVxdWFscyhoaXN0b3JpY2FsUHJpbnRlci5nZXREZXNjcmlwdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIuZ2V0RGVzY3JpcHRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlSGlzdG9yeSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVuYW1lZDsKKyAgICAgICAgICAgIHJldHVybiB3cml0ZUhpc3Rvcnk7CiAgICAgICAgIH0KIAogICAgICAgICBwdWJsaWMgdm9pZCBhZGRQcmludGVyQW5kV3JpdGVQcmludGVySGlzdG9yeShQcmludGVySW5mbyBwcmludGVyKSB7CiAgICAgICAgICAgICBpZiAobUhpc3RvcmljYWxQcmludGVycy5zaXplKCkgPj0gTUFYX0hJU1RPUllfTEVOR1RIKSB7CiAgICAgICAgICAgICAgICAgbUhpc3RvcmljYWxQcmludGVycy5yZW1vdmUoMCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtSGlzdG9yaWNhbFByaW50ZXJzLmFkZChwcmludGVyKTsKKworICAgICAgICAgICAgTG9jYXRpb24gbG9jYXRpb24gPSBnZXRDdXJyZW50TG9jYXRpb24oKTsKKyAgICAgICAgICAgIGlmICghaXNMb2NhdGlvbkFjY2VwdGFibGUobG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtSGlzdG9yaWNhbFByaW50ZXJzLmFkZChuZXcgUGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+KHByaW50ZXIsIGxvY2F0aW9uKSk7CisKICAgICAgICAgICAgIHdyaXRlUHJpbnRlckhpc3RvcnkoKTsKICAgICAgICAgfQogCkBAIC00MTgsNyArNjI0LDcgQEAKICAgICAgICAgICAgIGJvb2xlYW4gd3JpdGVIaXN0b3J5ID0gZmFsc2U7CiAgICAgICAgICAgICBmaW5hbCBpbnQgcHJpbnRlckNvdW50ID0gbUhpc3RvcmljYWxQcmludGVycy5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gcHJpbnRlckNvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBQcmludGVySW5mbyBoaXN0b3JpY2FsUHJpbnRlciA9IG1IaXN0b3JpY2FsUHJpbnRlcnMuZ2V0KGkpOworICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIGhpc3RvcmljYWxQcmludGVyID0gbUhpc3RvcmljYWxQcmludGVycy5nZXQoaSkuZmlyc3Q7CiAgICAgICAgICAgICAgICAgaWYgKGhpc3RvcmljYWxQcmludGVyLmdldElkKCkuZXF1YWxzKHByaW50ZXJJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcmljYWxQcmludGVycy5yZW1vdmUoaSk7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlSGlzdG9yeSA9IHRydWU7CkBAIC00MzksNjMgKzY0NSw5MSBAQAogICAgICAgICAgICAgcmV0dXJuIG1MYXN0UmVhZEhpc3RvcnlUaW1lc3RhbXAgIT0gbVN0YXRlUGVyc2lzdEZpbGUuZ2V0QmFzZUZpbGUoKS5sYXN0TW9kaWZpZWQoKTsKICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgTGlzdDxQcmludGVySW5mbz4gY29tcHV0ZUZhdm9yaXRlUHJpbnRlcnMoTGlzdDxQcmludGVySW5mbz4gcHJpbnRlcnMpIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNvcnQgdGhlIGZhdm9yaXRlIHByaW50ZXJzIGJ5IHdlaWdodC4gSWYgYSBwcmludGVyIGlzIGluIHRoZSBsaXN0IG11bHRpcGxlIHRpbWVzIGZvcgorICAgICAgICAgKiBkaWZmZXJlbnQgbG9jYXRpb25zLCBhbGwgaW5zdGFuY2VzIGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgdGhlIGFjY3VtdWxhdGl2ZSB3ZWlnaHQuIFRoZQorICAgICAgICAgKiBhY3R1YWwgZmF2b3JpdGUgcHJpbnRlcnMgdG8gZGlzcGxheSBhcmUgY29tcHV0ZWQgaW4ge0BsaW5rICNjb21wdXRlQW5kRGVsaXZlclJlc3VsdH0gYXMKKyAgICAgICAgICogb25seSBhdCB0aGlzIHRpbWUgd2Uga25vdyB0aGUgbG9jYXRpb24gdG8gdXNlIHRvIGRldGVybWluZSBpZiBhIHByaW50ZXIgaXMgY2xvc2UgZW5vdWdoCisgICAgICAgICAqIHRvIGJlIHByZWZlcnJlZC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHByaW50ZXJzIFRoZSBwcmludGVycyB0byBzb3J0LgorICAgICAgICAgKiBAcmV0dXJuIFRoZSBzb3J0ZWQgcHJpbnRlcnMuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBzb3J0RmF2b3JpdGVQcmludGVycygKKyAgICAgICAgICAgICAgICBMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4gcHJpbnRlcnMpIHsKICAgICAgICAgICAgIE1hcDxQcmludGVySWQsIFByaW50ZXJSZWNvcmQ+IHJlY29yZE1hcCA9IG5ldyBBcnJheU1hcDw+KCk7CiAKLSAgICAgICAgICAgIC8vIFJlY29tcHV0ZSB0aGUgd2VpZ2h0cy4KKyAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHdlaWdodHMuCiAgICAgICAgICAgICBmbG9hdCBjdXJyZW50V2VpZ2h0ID0gMS4wZjsKICAgICAgICAgICAgIGZpbmFsIGludCBwcmludGVyQ291bnQgPSBwcmludGVycy5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gcHJpbnRlckNvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBQcmludGVySW5mbyBwcmludGVyID0gcHJpbnRlcnMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIC8vIEFnZ3JlZ2F0ZSB3ZWlnaHQgZm9yIHRoZSBzYW1lIHByaW50ZXIKLSAgICAgICAgICAgICAgICBQcmludGVyUmVjb3JkIHJlY29yZCA9IHJlY29yZE1hcC5nZXQocHJpbnRlci5nZXRJZCgpKTsKKyAgICAgICAgICAgICAgICBQcmludGVySWQgcHJpbnRlcklkID0gcHJpbnRlcnMuZ2V0KGkpLmZpcnN0LmdldElkKCk7CisgICAgICAgICAgICAgICAgUHJpbnRlclJlY29yZCByZWNvcmQgPSByZWNvcmRNYXAuZ2V0KHByaW50ZXJJZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlY29yZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlY29yZCA9IG5ldyBQcmludGVyUmVjb3JkKHByaW50ZXIpOwotICAgICAgICAgICAgICAgICAgICByZWNvcmRNYXAucHV0KHByaW50ZXIuZ2V0SWQoKSwgcmVjb3JkKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3JkID0gbmV3IFByaW50ZXJSZWNvcmQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3JkTWFwLnB1dChwcmludGVySWQsIHJlY29yZCk7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVjb3JkLnByaW50ZXJzLmFkZChwcmludGVycy5nZXQoaSkpOworCisgICAgICAgICAgICAgICAgLy8gQWdncmVnYXRlIHdlaWdodCBmb3IgdGhlIHNhbWUgcHJpbnRlcgogICAgICAgICAgICAgICAgIHJlY29yZC53ZWlnaHQgKz0gY3VycmVudFdlaWdodDsKICAgICAgICAgICAgICAgICBjdXJyZW50V2VpZ2h0ICo9IFdFSUdIVF9ERUNBWV9DT0VGRklDSUVOVDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gU29mdCB0aGUgZmF2b3JpdGUgcHJpbnRlcnMuCisgICAgICAgICAgICAvLyBTb3J0IHRoZSBmYXZvcml0ZSBwcmludGVycy4KICAgICAgICAgICAgIExpc3Q8UHJpbnRlclJlY29yZD4gZmF2b3JpdGVSZWNvcmRzID0gbmV3IEFycmF5TGlzdDw+KAogICAgICAgICAgICAgICAgICAgICByZWNvcmRNYXAudmFsdWVzKCkpOwogICAgICAgICAgICAgQ29sbGVjdGlvbnMuc29ydChmYXZvcml0ZVJlY29yZHMpOwogCiAgICAgICAgICAgICAvLyBXcml0ZSB0aGUgZmF2b3JpdGVzIHRvIHRoZSBvdXRwdXQuCi0gICAgICAgICAgICBmaW5hbCBpbnQgZmF2b3JpdGVDb3VudCA9IE1hdGgubWluKGZhdm9yaXRlUmVjb3Jkcy5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgIE1BWF9GQVZPUklURV9QUklOVEVSX0NPVU5UKTsKLSAgICAgICAgICAgIExpc3Q8UHJpbnRlckluZm8+IGZhdm9yaXRlUHJpbnRlcnMgPSBuZXcgQXJyYXlMaXN0PD4oZmF2b3JpdGVDb3VudCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhdm9yaXRlQ291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIHByaW50ZXIgPSBmYXZvcml0ZVJlY29yZHMuZ2V0KGkpLnByaW50ZXI7Ci0gICAgICAgICAgICAgICAgZmF2b3JpdGVQcmludGVycy5hZGQocHJpbnRlcik7CisgICAgICAgICAgICBmaW5hbCBpbnQgcmVjb3JkQ291bnQgPSBmYXZvcml0ZVJlY29yZHMuc2l6ZSgpOworICAgICAgICAgICAgTGlzdDxQYWlyPFByaW50ZXJJbmZvLCBMb2NhdGlvbj4+IGZhdm9yaXRlUHJpbnRlcnMgPSBuZXcgQXJyYXlMaXN0PD4ocHJpbnRlckNvdW50KTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIGZhdm9yaXRlUHJpbnRlcnMuYWRkQWxsKGZhdm9yaXRlUmVjb3Jkcy5nZXQoaSkucHJpbnRlcnMpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gZmF2b3JpdGVQcmludGVyczsKICAgICAgICAgfQogCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIHNldCBvZiBwcmludGVycyB3aXRoIHRoZSBzYW1lIElEIGFuZCB0aGUgd2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCB0aGVtIGR1cmluZworICAgICAgICAgKiB7QGxpbmsgI3NvcnRGYXZvcml0ZVByaW50ZXJzfS4KKyAgICAgICAgICovCiAgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUHJpbnRlclJlY29yZCBpbXBsZW1lbnRzIENvbXBhcmFibGU8UHJpbnRlclJlY29yZD4gewotICAgICAgICAgICAgcHVibGljIGZpbmFsIFByaW50ZXJJbmZvIHByaW50ZXI7CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIFRoZSBwcmludGVycywgYWxsIHdpdGggdGhlIHNhbWUgSUQsIGJ1dCBwb3RlbnRpYWxseSBkaWZmZXJlbnQgcHJvcGVydGllcyBvciBsb2NhdGlvbnMKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIGZpbmFsIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBwcmludGVyczsKKworICAgICAgICAgICAgLyoqIFRoZSB3ZWlnaHQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcmludGVycyAqLwogICAgICAgICAgICAgcHVibGljIGZsb2F0IHdlaWdodDsKIAotICAgICAgICAgICAgcHVibGljIFByaW50ZXJSZWNvcmQoUHJpbnRlckluZm8gcHJpbnRlcikgewotICAgICAgICAgICAgICAgIHRoaXMucHJpbnRlciA9IHByaW50ZXI7CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIENyZWF0ZSBhIG5ldyByZWNvcmQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBQcmludGVyUmVjb3JkKCkgeworICAgICAgICAgICAgICAgIHByaW50ZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQ29tcGFyZSB0d28gcmVjb3JkcyBieSB3ZWlnaHQuCisgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgcHVibGljIGludCBjb21wYXJlVG8oUHJpbnRlclJlY29yZCBhbm90aGVyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZsb2F0LmZsb2F0VG9JbnRCaXRzKGFub3RoZXIud2VpZ2h0KSAtIEZsb2F0LmZsb2F0VG9JbnRCaXRzKHdlaWdodCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFJlYWRUYXNrIGV4dGVuZHMgQXN5bmNUYXNrPFZvaWQsIFZvaWQsIExpc3Q8UHJpbnRlckluZm8+PiB7CisgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUmVhZFRhc2sKKyAgICAgICAgICAgICAgICBleHRlbmRzIEFzeW5jVGFzazxWb2lkLCBWb2lkLCBMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4+IHsKICAgICAgICAgICAgIEBPdmVycmlkZQotICAgICAgICAgICAgcHJvdGVjdGVkIExpc3Q8UHJpbnRlckluZm8+IGRvSW5CYWNrZ3JvdW5kKFZvaWQuLi4gYXJncykgeworICAgICAgICAgICAgcHJvdGVjdGVkIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBkb0luQmFja2dyb3VuZChWb2lkLi4uIGFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkb1JlYWRQcmludGVySGlzdG9yeSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgIHByb3RlY3RlZCB2b2lkIG9uUG9zdEV4ZWN1dGUoTGlzdDxQcmludGVySW5mbz4gcHJpbnRlcnMpIHsKKyAgICAgICAgICAgIHByb3RlY3RlZCB2b2lkIG9uUG9zdEV4ZWN1dGUoTGlzdDxQYWlyPFByaW50ZXJJbmZvLCBMb2NhdGlvbj4+IHByaW50ZXJzKSB7CiAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7CiAgICAgICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJyZWFkIGhpc3RvcnkgY29tcGxldGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEZ1c2VkUHJpbnRlcnNQcm92aWRlci50aGlzLmhhc2hDb2RlKCkpOwpAQCAtNTE4LDcgKzc1Miw4IEBACiAKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcHJpbnRlckNvdW50ID0gcHJpbnRlcnMuc2l6ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBwcmludGVyQ291bnQgLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAgICAgICAgICBDb21wb25lbnROYW1lIHByaW50ZXJTZXJ2aWNlTmFtZSA9IHByaW50ZXJzLmdldChpKS5nZXRJZCgpLmdldFNlcnZpY2VOYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudE5hbWUgcHJpbnRlclNlcnZpY2VOYW1lID0gcHJpbnRlcnMuZ2V0KGkpLmZpcnN0LmdldElkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U2VydmljZU5hbWUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmFibGVkQ29tcG9uZW50cy5jb250YWlucyhwcmludGVyU2VydmljZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGVycy5yZW1vdmUoaSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTUyOSwxMiArNzY0LDEzIEBACiAKICAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBmYXZvcml0ZSBwcmludGVycy4KICAgICAgICAgICAgICAgICBtRmF2b3JpdGVQcmludGVycy5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1GYXZvcml0ZVByaW50ZXJzLmFkZEFsbChjb21wdXRlRmF2b3JpdGVQcmludGVycyhtSGlzdG9yaWNhbFByaW50ZXJzKSk7CisgICAgICAgICAgICAgICAgbUZhdm9yaXRlUHJpbnRlcnMuYWRkQWxsKHNvcnRGYXZvcml0ZVByaW50ZXJzKG1IaXN0b3JpY2FsUHJpbnRlcnMpKTsKIAogICAgICAgICAgICAgICAgIG1SZWFkSGlzdG9yeUNvbXBsZXRlZCA9IHRydWU7CiAKICAgICAgICAgICAgICAgICAvLyBEZWxpdmVyIHRoZSBwcmludGVycy4KLSAgICAgICAgICAgICAgICB1cGRhdGVQcmludGVycyhtRGlzY292ZXJ5U2Vzc2lvbi5nZXRQcmludGVycygpLCBtRmF2b3JpdGVQcmludGVycyk7CisgICAgICAgICAgICAgICAgdXBkYXRlUHJpbnRlcnMobURpc2NvdmVyeVNlc3Npb24uZ2V0UHJpbnRlcnMoKSwgbUZhdm9yaXRlUHJpbnRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRDdXJyZW50TG9jYXRpb24oKSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZG9uZS4KICAgICAgICAgICAgICAgICBtUmVhZFRhc2sgPSBudWxsOwpAQCAtNTQ0LDEyICs3ODAsMTIgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgICAgICBwcm90ZWN0ZWQgdm9pZCBvbkNhbmNlbGxlZChMaXN0PFByaW50ZXJJbmZvPiBwcmludGVySW5mb3MpIHsKKyAgICAgICAgICAgIHByb3RlY3RlZCB2b2lkIG9uQ2FuY2VsbGVkKExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBwcmludGVySW5mb3MpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZG9uZS4KICAgICAgICAgICAgICAgICBtUmVhZFRhc2sgPSBudWxsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwcml2YXRlIExpc3Q8UHJpbnRlckluZm8+IGRvUmVhZFByaW50ZXJIaXN0b3J5KCkgeworICAgICAgICAgICAgcHJpdmF0ZSBMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4gZG9SZWFkUHJpbnRlckhpc3RvcnkoKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgRmlsZUlucHV0U3RyZWFtIGluOwogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIGluID0gbVN0YXRlUGVyc2lzdEZpbGUub3BlblJlYWQoKTsKQEAgLTU2MSw3ICs3OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3Q8UHJpbnRlckluZm8+IHByaW50ZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAgICAgICAgICAgICAgIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBwcmludGVycyA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgICAgICAgICAgICAgICBYbWxQdWxsUGFyc2VyIHBhcnNlciA9IFhtbC5uZXdQdWxsUGFyc2VyKCk7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5zZXRJbnB1dChpbiwgU3RhbmRhcmRDaGFyc2V0cy5VVEZfOC5uYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBwYXJzZVN0YXRlKHBhcnNlciwgcHJpbnRlcnMpOwpAQCAtNTgyLDggKzgxOCw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwcml2YXRlIHZvaWQgcGFyc2VTdGF0ZShYbWxQdWxsUGFyc2VyIHBhcnNlciwgTGlzdDxQcmludGVySW5mbz4gb3V0UHJpbnRlcnMpCi0gICAgICAgICAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiB7CisgICAgICAgICAgICBwcml2YXRlIHZvaWQgcGFyc2VTdGF0ZShYbWxQdWxsUGFyc2VyIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgTGlzdDxQYWlyPFByaW50ZXJJbmZvLCBMb2NhdGlvbj4+IG91dFByaW50ZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiB7CiAgICAgICAgICAgICAgICAgcGFyc2VyLm5leHQoKTsKICAgICAgICAgICAgICAgICBza2lwRW1wdHlUZXh0VGFncyhwYXJzZXIpOwogICAgICAgICAgICAgICAgIGV4cGVjdChwYXJzZXIsIFhtbFB1bGxQYXJzZXIuU1RBUlRfVEFHLCBUQUdfUFJJTlRFUlMpOwpAQCAtNjAxLDggKzgzOCw5IEBACiAgICAgICAgICAgICAgICAgZXhwZWN0KHBhcnNlciwgWG1sUHVsbFBhcnNlci5FTkRfVEFHLCBUQUdfUFJJTlRFUlMpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gcGFyc2VQcmludGVyKFhtbFB1bGxQYXJzZXIgcGFyc2VyLCBMaXN0PFByaW50ZXJJbmZvPiBvdXRQcmludGVycykKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBwYXJzZVByaW50ZXIoWG1sUHVsbFBhcnNlciBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIExpc3Q8UGFpcjxQcmludGVySW5mbywgTG9jYXRpb24+PiBvdXRQcmludGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIFhtbFB1bGxQYXJzZXJFeGNlcHRpb24gewogICAgICAgICAgICAgICAgIHNraXBFbXB0eVRleHRUYWdzKHBhcnNlcik7CiAgICAgICAgICAgICAgICAgaWYgKCFhY2NlcHQocGFyc2VyLCBYbWxQdWxsUGFyc2VyLlNUQVJUX1RBRywgVEFHX1BSSU5URVIpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMCw3ICs4NDgsNiBAQAogCiAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIuZ2V0QXR0cmlidXRlVmFsdWUobnVsbCwgQVRUUl9OQU1FKTsKICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBwYXJzZXIuZ2V0QXR0cmlidXRlVmFsdWUobnVsbCwgQVRUUl9ERVNDUklQVElPTik7Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IHN0YXR1cyA9IEludGVnZXIucGFyc2VJbnQocGFyc2VyLmdldEF0dHJpYnV0ZVZhbHVlKG51bGwsIEFUVFJfU1RBVFVTKSk7CiAKICAgICAgICAgICAgICAgICBwYXJzZXIubmV4dCgpOwogCkBAIC02MjUsMTEgKzg2MiwzNCBAQAogICAgICAgICAgICAgICAgIGV4cGVjdChwYXJzZXIsIFhtbFB1bGxQYXJzZXIuRU5EX1RBRywgVEFHX1BSSU5URVJfSUQpOwogICAgICAgICAgICAgICAgIHBhcnNlci5uZXh0KCk7CiAKLSAgICAgICAgICAgICAgICBQcmludGVySW5mby5CdWlsZGVyIGJ1aWxkZXIgPSBuZXcgUHJpbnRlckluZm8uQnVpbGRlcihwcmludGVySWQsIG5hbWUsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgc2tpcEVtcHR5VGV4dFRhZ3MocGFyc2VyKTsKKyAgICAgICAgICAgICAgICBMb2NhdGlvbiBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoYWNjZXB0KHBhcnNlciwgWG1sUHVsbFBhcnNlci5TVEFSVF9UQUcsIFRBR19MT0NBVElPTikpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBuZXcgTG9jYXRpb24oIiIpOworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5zZXRMb25naXR1ZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlLnBhcnNlRG91YmxlKHBhcnNlci5nZXRBdHRyaWJ1dGVWYWx1ZShudWxsLCBBVFRSX0xPTkdJVFVERSkpKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uc2V0TGF0aXR1ZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlLnBhcnNlRG91YmxlKHBhcnNlci5nZXRBdHRyaWJ1dGVWYWx1ZShudWxsLCBBVFRSX0xBVElUVURFKSkpOworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5zZXRBY2N1cmFjeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdC5wYXJzZUZsb2F0KHBhcnNlci5nZXRBdHRyaWJ1dGVWYWx1ZShudWxsLCBBVFRSX0FDQ1VSQUNZKSkpOworICAgICAgICAgICAgICAgICAgICBwYXJzZXIubmV4dCgpOworCisgICAgICAgICAgICAgICAgICAgIHNraXBFbXB0eVRleHRUYWdzKHBhcnNlcik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChwYXJzZXIsIFhtbFB1bGxQYXJzZXIuRU5EX1RBRywgVEFHX0xPQ0FUSU9OKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyLm5leHQoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IG51bGw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByaW50ZXIgaXMgYXZhaWxhYmxlIHRoZSBwcmludGVyIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIG9uZSByZWFkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgLy8gZGlzY292ZXJ5IHNlc3Npb24sIGhlbmNlIHRoZSBvbmx5IHRpbWUgd2hlbiB0aGlzIG9iamVjdCBpcyB1c2VkIGlzIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgLy8gcHJpbnRlciBpcyB1bmF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICBQcmludGVySW5mby5CdWlsZGVyIGJ1aWxkZXIgPSBuZXcgUHJpbnRlckluZm8uQnVpbGRlcihwcmludGVySWQsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludGVySW5mby5TVEFUVVNfVU5BVkFJTEFCTEUpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIHByaW50ZXIgPSBidWlsZGVyLmJ1aWxkKCk7CiAKLSAgICAgICAgICAgICAgICBvdXRQcmludGVycy5hZGQocHJpbnRlcik7CisgICAgICAgICAgICAgICAgb3V0UHJpbnRlcnMuYWRkKG5ldyBQYWlyPFByaW50ZXJJbmZvLCBMb2NhdGlvbj4ocHJpbnRlciwgbG9jYXRpb24pKTsKIAogICAgICAgICAgICAgICAgIGlmIChERUJVRykgewogICAgICAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAiW1JFU1RPUkVEXSAiICsgcHJpbnRlcik7CkBAIC02NDIsNyArOTAyLDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdChYbWxQdWxsUGFyc2VyIHBhcnNlciwgaW50IHR5cGUsIFN0cmluZyB0YWcpCi0gICAgICAgICAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgICAgIHRocm93cyBYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIHsKICAgICAgICAgICAgICAgICBpZiAoIWFjY2VwdChwYXJzZXIsIHR5cGUsIHRhZykpIHsKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhtbFB1bGxQYXJzZXJFeGNlcHRpb24oIkV4ZXBlY3RlZCBldmVudDogIiArIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgYW5kIHRhZzogIiArIHRhZyArICIgYnV0IGdvdCBldmVudDogIiArIHBhcnNlci5nZXRFdmVudFR5cGUoKQpAQCAtNjU5LDcgKzkxOSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBhY2NlcHQoWG1sUHVsbFBhcnNlciBwYXJzZXIsIGludCB0eXBlLCBTdHJpbmcgdGFnKQotICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIFhtbFB1bGxQYXJzZXJFeGNlcHRpb24geworICAgICAgICAgICAgICAgICAgICB0aHJvd3MgWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiB7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlci5nZXRFdmVudFR5cGUoKSAhPSB0eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CkBAIC02NzQsMTQgKzkzNCwxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBXcml0ZVRhc2sgZXh0ZW5kcyBBc3luY1Rhc2s8TGlzdDxQcmludGVySW5mbz4sIFZvaWQsIFZvaWQ+IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBXcml0ZVRhc2sKKyAgICAgICAgICAgICAgICBleHRlbmRzIEFzeW5jVGFzazxMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4sIFZvaWQsIFZvaWQ+IHsKICAgICAgICAgICAgIEBPdmVycmlkZQotICAgICAgICAgICAgcHJvdGVjdGVkIFZvaWQgZG9JbkJhY2tncm91bmQoTGlzdDxQcmludGVySW5mbz4uLi4gcHJpbnRlcnMpIHsKKyAgICAgICAgICAgIHByb3RlY3RlZCBWb2lkIGRvSW5CYWNrZ3JvdW5kKAorICAgICAgICAgICAgICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikgTGlzdDxQYWlyPFByaW50ZXJJbmZvLCBMb2NhdGlvbj4+Li4uIHByaW50ZXJzKSB7CiAgICAgICAgICAgICAgICAgZG9Xcml0ZVByaW50ZXJIaXN0b3J5KHByaW50ZXJzWzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIGRvV3JpdGVQcmludGVySGlzdG9yeShMaXN0PFByaW50ZXJJbmZvPiBwcmludGVycykgeworICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIGRvV3JpdGVQcmludGVySGlzdG9yeShMaXN0PFBhaXI8UHJpbnRlckluZm8sIExvY2F0aW9uPj4gcHJpbnRlcnMpIHsKICAgICAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIG91dCA9IG51bGw7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgb3V0ID0gbVN0YXRlUGVyc2lzdEZpbGUuc3RhcnRXcml0ZSgpOwpAQCAtNjkzLDE0ICs5NTUsMTEgQEAKIAogICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcHJpbnRlckNvdW50ID0gcHJpbnRlcnMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByaW50ZXJDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQcmludGVySW5mbyBwcmludGVyID0gcHJpbnRlcnMuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRlckluZm8gcHJpbnRlciA9IHByaW50ZXJzLmdldChpKS5maXJzdDsKIAogICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplci5zdGFydFRhZyhudWxsLCBUQUdfUFJJTlRFUik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuYXR0cmlidXRlKG51bGwsIEFUVFJfTkFNRSwgcHJpbnRlci5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGlzdG9yaWNhbCBwcmludGVycyBhcmUgYWx3YXlzIHN0b3JlZCBhcyB1bmF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuYXR0cmlidXRlKG51bGwsIEFUVFJfU1RBVFVTLCBTdHJpbmcudmFsdWVPZigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRlckluZm8uU1RBVFVTX1VOQVZBSUxBQkxFKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBwcmludGVyLmdldERlc2NyaXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuYXR0cmlidXRlKG51bGwsIEFUVFJfREVTQ1JJUFRJT04sIGRlc2NyaXB0aW9uKTsKQEAgLTcxMyw2ICs5NzIsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZsYXR0ZW5Ub1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuZW5kVGFnKG51bGwsIFRBR19QUklOVEVSX0lEKTsKIAorICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gbG9jYXRpb24gPSBwcmludGVycy5nZXQoaSkuc2Vjb25kOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLnN0YXJ0VGFnKG51bGwsIFRBR19MT0NBVElPTik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplci5hdHRyaWJ1dGUobnVsbCwgQVRUUl9MT05HSVRVREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihsb2NhdGlvbi5nZXRMb25naXR1ZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuYXR0cmlidXRlKG51bGwsIEFUVFJfTEFUSVRVREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihsb2NhdGlvbi5nZXRMYXRpdHVkZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplci5hdHRyaWJ1dGUobnVsbCwgQVRUUl9BQ0NVUkFDWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKGxvY2F0aW9uLmdldEFjY3VyYWN5KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLmVuZFRhZyhudWxsLCBUQUdfTE9DQVRJT04pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLmVuZFRhZyhudWxsLCBUQUdfUFJJTlRFUik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgewpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvdWkvUGFnZUFkYXB0ZXIuamF2YSBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL1BhZ2VBZGFwdGVyLmphdmEKaW5kZXggMjc1N2I4MS4uNjA2ZjRlYiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvdWkvUGFnZUFkYXB0ZXIuamF2YQorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9QYWdlQWRhcHRlci5qYXZhCkBAIC01Miw3ICs1Miw3IEBACiAvKioKICAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgYWRhcHRlciBmb3IgdGhlIHBhZ2VzIGluIHRoZSBwcmludCBwcmV2aWV3IGxpc3QuCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBQYWdlQWRhcHRlciBleHRlbmRzIEFkYXB0ZXIgeworcHVibGljIGZpbmFsIGNsYXNzIFBhZ2VBZGFwdGVyIGV4dGVuZHMgQWRhcHRlcjxWaWV3SG9sZGVyPiB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19UQUcgPSAiUGFnZUFkYXB0ZXIiOwogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9QUkVWSUVXX1BBR0VTX0JBVENIID0gNTA7CkBAIC00MDksNyArNDA5LDcgQEAKICAgICAgICAgICAgICAgICAtIGhvcml6b250YWxQYWRkaW5nQW5kTWFyZ2lucykgLyBjb2x1bW5Db3VudCkgKyAwLjVmKTsKIAogICAgICAgICAvLyBDb21wdXRlIG1heCBwYWdlIGhlaWdodC4KLSAgICAgICAgZmluYWwgaW50IHBhZ2VDb250ZW50RGVzaXJlZEhlaWdodCA9IChpbnQpICgoKGZsb2F0KSBwYWdlQ29udGVudERlc2lyZWRXaWR0aAorICAgICAgICBmaW5hbCBpbnQgcGFnZUNvbnRlbnREZXNpcmVkSGVpZ2h0ID0gKGludCkgKChwYWdlQ29udGVudERlc2lyZWRXaWR0aAogICAgICAgICAgICAgICAgIC8gcGFnZUFzcGVjdFJhdGlvKSArIDAuNWYpOwogCiAgICAgICAgIC8vIElmIHRoZSBwYWdlIGRvZXMgbm90IGZpdCBlbnRpcmVseSBpbiBhIHZlcnRpY2FsIGRpcmVjdGlvbiwKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL1ByaW50QWN0aXZpdHkuamF2YSBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL1ByaW50QWN0aXZpdHkuamF2YQppbmRleCA2NTIxNTY1Li45YzFjZjY0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9QcmludEFjdGl2aXR5LmphdmEKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvdWkvUHJpbnRBY3Rpdml0eS5qYXZhCkBAIC0zMCw3ICszMCw2IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbzsKQEAgLTQ2Miw2ICs0NjEsNyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25VcGRhdGVDYW5jZWxlZCgpIHsKICAgICAgICAgaWYgKERFQlVHKSB7CiAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAib25VcGRhdGVDYW5jZWxlZCgpIik7CkBAIC0xNzM4LDggKzE3MzgsOSBAQAogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCB1cGRhdGVQYWdlUmFuZ2VPcHRpb25zKGludCBwYWdlQ291bnQpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCiAgICAgICAgIEFycmF5QWRhcHRlcjxTcGlubmVySXRlbTxJbnRlZ2VyPj4gcmFuZ2VPcHRpb25zU3Bpbm5lckFkYXB0ZXIgPQotICAgICAgICAgICAgICAgIChBcnJheUFkYXB0ZXIpIG1SYW5nZU9wdGlvbnNTcGlubmVyLmdldEFkYXB0ZXIoKTsKKyAgICAgICAgICAgICAgICAoQXJyYXlBZGFwdGVyPFNwaW5uZXJJdGVtPEludGVnZXI+PikgbVJhbmdlT3B0aW9uc1NwaW5uZXIuZ2V0QWRhcHRlcigpOwogICAgICAgICByYW5nZU9wdGlvbnNTcGlubmVyQWRhcHRlci5jbGVhcigpOwogCiAgICAgICAgIGZpbmFsIGludFtdIHJhbmdlT3B0aW9uc1ZhbHVlcyA9IGdldFJlc291cmNlcygpLmdldEludEFycmF5KApAQCAtMTkyOCw2ICsxOTI5LDcgQEAKICAgICAgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKICAgICAgICAgfQogCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgICAgICAgcmV0dXJuIGxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgIH0KQEAgLTIxODcsNyArMjE4OSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09IDAgJiYgZ2V0UGRmUHJpbnRlcigpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgUHJpbnRlckhvbGRlciBwcmludGVySG9sZGVyID0gKFByaW50ZXJIb2xkZXIpIGdldEl0ZW0ocG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHByaW50ZXJIb2xkZXIucHJpbnRlci5nZXROYW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGljb24gPSBnZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShSLmRyYXdhYmxlLmljX21lbnVfc2F2ZXRvcGRmKTsKKyAgICAgICAgICAgICAgICAgICAgaWNvbiA9IGdldFJlc291cmNlcygpLmdldERyYXdhYmxlKFIuZHJhd2FibGUuaWNfbWVudV9zYXZldG9wZGYsIG51bGwpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT0gMSkgewogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGdldFN0cmluZyhSLnN0cmluZy5hbGxfcHJpbnRlcnMpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIxOTUsMjAgKzIxOTcsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb24gPT0gMSAmJiBnZXRQZGZQcmludGVyKCkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBQcmludGVySG9sZGVyIHByaW50ZXJIb2xkZXIgPSAoUHJpbnRlckhvbGRlcikgZ2V0SXRlbShwb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gcHJpbnRlckhvbGRlci5wcmludGVyLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWNvbiA9IGdldFJlc291cmNlcygpLmdldERyYXdhYmxlKFIuZHJhd2FibGUuaWNfbWVudV9zYXZldG9wZGYpOworICAgICAgICAgICAgICAgICAgICBpY29uID0gZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUoUi5kcmF3YWJsZS5pY19tZW51X3NhdmV0b3BkZiwgbnVsbCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PSBnZXRDb3VudCgpIC0gMSkgewogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGdldFN0cmluZyhSLnN0cmluZy5hbGxfcHJpbnRlcnMpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFByaW50ZXJIb2xkZXIgcHJpbnRlckhvbGRlciA9IChQcmludGVySG9sZGVyKSBnZXRJdGVtKHBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBwcmludGVySG9sZGVyLnByaW50ZXIuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlTWFuYWdlcigpLmdldFBhY2thZ2VJbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGVySG9sZGVyLnByaW50ZXIuZ2V0SWQoKS5nZXRTZXJ2aWNlTmFtZSgpLmdldFBhY2thZ2VOYW1lKCksIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBwYWNrYWdlSW5mby5hcHBsaWNhdGlvbkluZm8ubG9hZExhYmVsKGdldFBhY2thZ2VNYW5hZ2VyKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWNvbiA9IHBhY2thZ2VJbmZvLmFwcGxpY2F0aW9uSW5mby5sb2FkSWNvbihnZXRQYWNrYWdlTWFuYWdlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoTmFtZU5vdEZvdW5kRXhjZXB0aW9uIG5uZmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFByaW50ZXJJbmZvIHByaW50SW5mbyA9IHByaW50ZXJIb2xkZXIucHJpbnRlcjsKKworICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHByaW50SW5mby5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGljb24gPSBwcmludEluZm8ubG9hZEljb24oUHJpbnRBY3Rpdml0eS50aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBwcmludEluZm8uZ2V0RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL1ByaW50UHJldmlld0NvbnRyb2xsZXIuamF2YSBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3VpL1ByaW50UHJldmlld0NvbnRyb2xsZXIuamF2YQppbmRleCA4NzE2ZmQyLi5jZTU0MjA0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9QcmludFByZXZpZXdDb250cm9sbGVyLmphdmEKKysrIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvdWkvUHJpbnRQcmV2aWV3Q29udHJvbGxlci5qYXZhCkBAIC03OCw4ICs3OCw4IEBACiAgICAgICAgIG1SZWN5Y2xlclZpZXcuc2V0TGF5b3V0TWFuYWdlcihtTGF5b3V0TWFuZ2VyKTsKICAgICAgICAgbVJlY3ljbGVyVmlldy5zZXRBZGFwdGVyKG1QYWdlQWRhcHRlcik7CiAgICAgICAgIG1SZWN5Y2xlclZpZXcuc2V0SXRlbVZpZXdDYWNoZVNpemUoMCk7Ci0gICAgICAgIG1QcmVsb2FkQ29udHJvbGxlciA9IG5ldyBQcmVsb2FkQ29udHJvbGxlcihtUmVjeWNsZXJWaWV3KTsKLSAgICAgICAgbVJlY3ljbGVyVmlldy5zZXRPblNjcm9sbExpc3RlbmVyKG1QcmVsb2FkQ29udHJvbGxlcik7CisgICAgICAgIG1QcmVsb2FkQ29udHJvbGxlciA9IG5ldyBQcmVsb2FkQ29udHJvbGxlcigpOworICAgICAgICBtUmVjeWNsZXJWaWV3LmFkZE9uU2Nyb2xsTGlzdGVuZXIobVByZWxvYWRDb250cm9sbGVyKTsKIAogICAgICAgICBtQ29udGVudFZpZXcgPSAoUHJpbnRDb250ZW50VmlldykgYWN0aXZpdHkuZmluZFZpZXdCeUlkKFIuaWQub3B0aW9uc19jb250ZW50KTsKICAgICAgICAgbUVtYmVkZGVkQ29udGVudENvbnRhaW5lciA9IChFbWJlZGRlZENvbnRlbnRDb250YWluZXIpIGFjdGl2aXR5LmZpbmRWaWV3QnlJZCgKQEAgLTMxNCwxMiArMzE0LDkgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFByZWxvYWRDb250cm9sbGVyIGV4dGVuZHMgUmVjeWNsZXJWaWV3Lk9uU2Nyb2xsTGlzdGVuZXIgewotICAgICAgICBwcml2YXRlIGZpbmFsIFJlY3ljbGVyVmlldyBtUmVjeWNsZXJWaWV3OwotCiAgICAgICAgIHByaXZhdGUgaW50IG1PbGRTY3JvbGxTdGF0ZTsKIAotICAgICAgICBwdWJsaWMgUHJlbG9hZENvbnRyb2xsZXIoUmVjeWNsZXJWaWV3IHJlY3ljbGVyVmlldykgewotICAgICAgICAgICAgbVJlY3ljbGVyVmlldyA9IHJlY3ljbGVyVmlldzsKKyAgICAgICAgcHVibGljIFByZWxvYWRDb250cm9sbGVyKCkgewogICAgICAgICAgICAgbU9sZFNjcm9sbFN0YXRlID0gbVJlY3ljbGVyVmlldy5nZXRTY3JvbGxTdGF0ZSgpOwogICAgICAgICB9CiAKQEAgLTM3MSw3ICszNjgsOCBAQAogICAgICAgICAgICAgICAgIFZpZXcgbGFzdENoaWxkID0gbGF5b3V0TWFuYWdlci5nZXRDaGlsZEF0KGxheW91dE1hbmFnZXIuZ2V0Q2hpbGRDb3VudCgpIC0gMSk7CiAgICAgICAgICAgICAgICAgVmlld0hvbGRlciBsYXN0SG9sZGVyID0gbVJlY3ljbGVyVmlldy5nZXRDaGlsZFZpZXdIb2xkZXIobGFzdENoaWxkKTsKIAotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUGFnZVJhbmdlKGZpcnN0SG9sZGVyLmdldFBvc2l0aW9uKCksIGxhc3RIb2xkZXIuZ2V0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWdlUmFuZ2UoZmlyc3RIb2xkZXIuZ2V0TGF5b3V0UG9zaXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RIb2xkZXIuZ2V0TGF5b3V0UG9zaXRpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvdWkvU2VsZWN0UHJpbnRlckFjdGl2aXR5LmphdmEgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9TZWxlY3RQcmludGVyQWN0aXZpdHkuamF2YQppbmRleCBhYjBiMmYxLi5jZGZjN2VlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9TZWxlY3RQcmludGVyQWN0aXZpdHkuamF2YQorKysgYi9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci91aS9TZWxlY3RQcmludGVyQWN0aXZpdHkuamF2YQpAQCAtMjcsNiArMjcsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOwpAQCAtNTEsNiArNTIsNyBAQAogaW1wb3J0IGFuZHJvaWQudmlldy5NZW51OwogaW1wb3J0IGFuZHJvaWQudmlldy5NZW51SXRlbTsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldy5PbkNsaWNrTGlzdGVuZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldzsKQEAgLTU4NywyMCArNTg5LDMxIEBACiAKICAgICAgICAgICAgIGNvbnZlcnRWaWV3LnNldEVuYWJsZWQoaXNBY3Rpb25hYmxlKHBvc2l0aW9uKSk7CiAKLSAgICAgICAgICAgIFByaW50ZXJJbmZvIHByaW50ZXIgPSAoUHJpbnRlckluZm8pIGdldEl0ZW0ocG9zaXRpb24pOworICAgICAgICAgICAgZmluYWwgUHJpbnRlckluZm8gcHJpbnRlciA9IChQcmludGVySW5mbykgZ2V0SXRlbShwb3NpdGlvbik7CiAKICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0aXRsZSA9IHByaW50ZXIuZ2V0TmFtZSgpOwotICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAgICAgIERyYXdhYmxlIGljb24gPSBudWxsOworICAgICAgICAgICAgRHJhd2FibGUgaWNvbiA9IHByaW50ZXIubG9hZEljb24oU2VsZWN0UHJpbnRlckFjdGl2aXR5LnRoaXMpOwogCisgICAgICAgICAgICBDaGFyU2VxdWVuY2UgcHJpbnRTZXJ2aWNlTGFiZWw7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyIHBtID0gZ2V0UGFja2FnZU1hbmFnZXIoKTsKLSAgICAgICAgICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IHBtLmdldFBhY2thZ2VJbmZvKHByaW50ZXIuZ2V0SWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNlcnZpY2VOYW1lKCkuZ2V0UGFja2FnZU5hbWUoKSwgMCk7Ci0gICAgICAgICAgICAgICAgc3VidGl0bGUgPSBwYWNrYWdlSW5mby5hcHBsaWNhdGlvbkluZm8ubG9hZExhYmVsKHBtKTsKLSAgICAgICAgICAgICAgICBpY29uID0gcGFja2FnZUluZm8uYXBwbGljYXRpb25JbmZvLmxvYWRJY29uKHBtKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBubmZlKSB7Ci0gICAgICAgICAgICAgICAgLyogaWdub3JlICovCisgICAgICAgICAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlTWFuYWdlcigpLmdldFBhY2thZ2VJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRlci5nZXRJZCgpLmdldFNlcnZpY2VOYW1lKCkuZ2V0UGFja2FnZU5hbWUoKSwgMCk7CisKKyAgICAgICAgICAgICAgICBwcmludFNlcnZpY2VMYWJlbCA9IHBhY2thZ2VJbmZvLmFwcGxpY2F0aW9uSW5mby5sb2FkTGFiZWwoZ2V0UGFja2FnZU1hbmFnZXIoKSk7CisgICAgICAgICAgICB9IGNhdGNoIChOYW1lTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHByaW50U2VydmljZUxhYmVsID0gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2hhclNlcXVlbmNlIGRlc2NyaXB0aW9uID0gcHJpbnRlci5nZXREZXNjcmlwdGlvbigpOworCisgICAgICAgICAgICBDaGFyU2VxdWVuY2Ugc3VidGl0bGU7CisgICAgICAgICAgICBpZiAocHJpbnRTZXJ2aWNlTGFiZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gZGVzY3JpcHRpb247CisgICAgICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IHByaW50U2VydmljZUxhYmVsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IGdldFN0cmluZyhSLnN0cmluZy5wcmludGVyX2V4dGVuZGVkX2Rlc2NyaXB0aW9uX3RlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRTZXJ2aWNlTGFiZWwsIGRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgVGV4dFZpZXcgdGl0bGVWaWV3ID0gKFRleHRWaWV3KSBjb252ZXJ0Vmlldy5maW5kVmlld0J5SWQoUi5pZC50aXRsZSk7CkBAIC02MTUsNiArNjI4LDIwIEBACiAgICAgICAgICAgICAgICAgc3VidGl0bGVWaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgSW1hZ2VWaWV3IG1vcmVJbmZvVmlldyA9IChJbWFnZVZpZXcpIGNvbnZlcnRWaWV3LmZpbmRWaWV3QnlJZChSLmlkLm1vcmVfaW5mbyk7CisgICAgICAgICAgICBpZiAocHJpbnRlci5nZXRJbmZvSW50ZW50KCkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1vcmVJbmZvVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbW9yZUluZm9WaWV3LnNldE9uQ2xpY2tMaXN0ZW5lcihuZXcgT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbnRlbnRTZW5kZXIocHJpbnRlci5nZXRJbmZvSW50ZW50KCkuZ2V0SW50ZW50U2VuZGVyKCksIG51bGwsIDAsIDAsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoU2VuZEludGVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmUoTE9HX1RBRywgIkNvdWxkIG5vdCBleGVjdXRlIHBlbmRpbmcgaW5mbyBpbnRlbnQ6ICVzIiwgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSW1hZ2VWaWV3IGljb25WaWV3ID0gKEltYWdlVmlldykgY29udmVydFZpZXcuZmluZFZpZXdCeUlkKFIuaWQuaWNvbik7CiAgICAgICAgICAgICBpZiAoaWNvbiAhPSBudWxsKSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci93aWRnZXQvUHJpbnRDb250ZW50Vmlldy5qYXZhIGIvcGFja2FnZXMvUHJpbnRTcG9vbGVyL3NyYy9jb20vYW5kcm9pZC9wcmludHNwb29sZXIvd2lkZ2V0L1ByaW50Q29udGVudFZpZXcuamF2YQppbmRleCBlNjYxM2ZhLi4wYmI0YmZhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9QcmludFNwb29sZXIvc3JjL2NvbS9hbmRyb2lkL3ByaW50c3Bvb2xlci93aWRnZXQvUHJpbnRDb250ZW50Vmlldy5qYXZhCisrKyBiL3BhY2thZ2VzL1ByaW50U3Bvb2xlci9zcmMvY29tL2FuZHJvaWQvcHJpbnRzcG9vbGVyL3dpZGdldC9QcmludENvbnRlbnRWaWV3LmphdmEKQEAgLTQxNSw2ICs0MTUsNyBAQAogICAgICAgICAgICAgb25EcmFnUHJvZ3Jlc3MocHJvZ3Jlc3MpOwogICAgICAgICB9CiAKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uVmlld1JlbGVhc2VkKFZpZXcgY2hpbGQsIGZsb2F0IHZlbG9jaXR5WCwgZmxvYXQgdmVsb2NpdHlZKSB7CiAgICAgICAgICAgICBmaW5hbCBpbnQgY2hpbGRUb3AgPSBjaGlsZC5nZXRUb3AoKTsKIApAQCAtNDM1LDE0ICs0MzYsMTcgQEAKICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgfQogCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgaW50IGdldE9yZGVyZWRDaGlsZEluZGV4KGludCBpbmRleCkgewogICAgICAgICAgICAgcmV0dXJuIGdldENoaWxkQ291bnQoKSAtIGluZGV4IC0gMTsKICAgICAgICAgfQogCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgaW50IGdldFZpZXdWZXJ0aWNhbERyYWdSYW5nZShWaWV3IGNoaWxkKSB7CiAgICAgICAgICAgICByZXR1cm4gbURyYWdnYWJsZUNvbnRlbnQuZ2V0SGVpZ2h0KCk7CiAgICAgICAgIH0KIAorICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIGludCBjbGFtcFZpZXdQb3NpdGlvblZlcnRpY2FsKFZpZXcgY2hpbGQsIGludCB0b3AsIGludCBkeSkgewogICAgICAgICAgICAgZmluYWwgaW50IHN0YXRpY09wdGlvbkJvdHRvbSA9IG1TdGF0aWNDb250ZW50LmdldEJvdHRvbSgpOwogICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGgubWluKHRvcCwgZ2V0T3BlbmVkT3B0aW9uc1koKSksIGdldENsb3NlZE9wdGlvbnNZKCkpOwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2V0dGluZ3NMaWIvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzLWJuLXJCRC9zdHJpbmdzLnhtbAppbmRleCAwZTc3ODcxLi5hNTc4N2Y1IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzLWJuLXJCRC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzLWJuLXJCRC9zdHJpbmdzLnhtbApAQCAtMjczLDggKzI3Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJuaWdodF9tb2RlX25vIiBtc2dpZD0iOTE3MTc3MjI0NDc3NTgzODkwMSI+IuCmheCmleCnjeCmt+CmriDgppXgprDgpr4g4Kaw4Kav4Ka84KeH4Kab4KeHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibmlnaHRfbW9kZV95ZXMiIG1zZ2lkPSIyMjE4MTU3MjY1OTk3NjMzNDMyIj4i4Ka44Kas4Ka44Kau4Kav4Ka8IOCmmuCmvuCmsuCngSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im5pZ2h0X21vZGVfYXV0byIgbXNnaWQ9Ijc1MDgzNDgxNzU4MDQzMDQzMjciPiLgprjgp43gpqzgpq/gprzgpoLgppXgp43gprDgpr/gpq/gprwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfd2Vidmlld19wcm92aWRlcl90aXRsZSIgbXNnaWQ9IjQ2Mjg1OTI5Nzk3NTE5MTg5MDciPiLgppPgpq/gprzgp4fgpqzgpqbgprDgp43gprbgpqjgp4fgprAg4Kas4Ka+4Ka44KeN4Kak4Kas4Ka+4Kav4Ka84KaoIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X3dlYnZpZXdfcHJvdmlkZXJfZGlhbG9nX3RpdGxlIiBtc2dpZD0iNDM3MDU1MTM3ODcyMDAwNDg3MiI+IuCmk+Cmr+CmvOCnh+CmrOCmpuCmsOCnjeCmtuCmqOCnh+CmsCDgpqzgpr7gprjgp43gpqTgpqzgpr7gpq/gprzgpqgg4Ka44KeH4KafIOCmleCmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF93ZWJ2aWV3X3Byb3ZpZGVyX3RpdGxlIiBtc2dpZD0iNDYyODU5Mjk3OTc1MTkxODkwNyI+IuCmk+Cmr+CmvOCnh+CmrOCmreCmv+CmiSDgpqrgp43gprDgpq/gprzgp4vgppciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfd2Vidmlld19wcm92aWRlcl9kaWFsb2dfdGl0bGUiIG1zZ2lkPSI0MzcwNTUxMzc4NzIwMDA0ODcyIj4i4KaT4Kav4Ka84KeH4Kas4Kat4Ka/4KaJIOCmquCnjeCmsOCmr+CmvOCni+CmlyDgprjgp4fgpp8g4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29udmVydF90b19maWxlX2VuY3J5cHRpb24iIG1zZ2lkPSIzMDYwMTU2NzMwNjUxMDYxMjIzIj4i4Kar4Ka+4KaH4KayIOCmj+CmqOCmleCnjeCmsOCmv+CmquCmtuCmvuCmqCDgprDgp4Lgpqrgpr7gpqjgp43gpqTgprAg4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29udmVydF90b19maWxlX2VuY3J5cHRpb25fZW5hYmxlZCIgbXNnaWQ9IjI4NjEyNTg2NzExNTE0MjgzNDYiPiLgprDgp4Lgpqrgpr7gpqjgp43gpqTgprAg4KaV4Kaw4KeB4KaoLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29udmVydF90b19maWxlX2VuY3J5cHRpb25fZG9uZSIgbXNnaWQ9Ijc4NTk3NjYzNTgwMDA1MjM5NTMiPiLgpqvgpr7gpofgprIg4KaH4Kak4Ka/4Kau4Kan4KeN4Kav4KeH4KaHIOCmj+CmqOCmleCnjeCmsOCmv+CmquCnjeCmnyDgppXgprDgpr4g4Kaw4Kav4Ka84KeH4Kab4KeHIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2V0dGluZ3NMaWIvcmVzL3ZhbHVlcy1ray1yS1ovc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbAppbmRleCAyZGJjMzc1Li4xYjhlMTc2IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbApAQCAtMjczLDEwICsyNzMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0ibmlnaHRfbW9kZV9ubyIgbXNnaWQ9IjkxNzE3NzIyNDQ3NzU4Mzg5MDEiPiLTqNGI0ZbRgNGW0LvQs9C10L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJuaWdodF9tb2RlX3llcyIgbXNnaWQ9IjIyMTgxNTcyNjU5OTc2MzM0MzIiPiLTmNGA0pvQsNGI0LDQvSDSm9C+0YHRg9C70YsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJuaWdodF9tb2RlX2F1dG8iIG1zZ2lkPSI3NTA4MzQ4MTc1ODA0MzA0MzI3Ij4iQdCy0YLQvtC80LDRgtGC0YsiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2VsZWN0X3dlYnZpZXdfcHJvdmlkZXJfdGl0bGUgKDQ2Mjg1OTI5Nzk3NTE5MTg5MDcpIC0tPgotICAgIDxza2lwIC8+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2VsZWN0X3dlYnZpZXdfcHJvdmlkZXJfZGlhbG9nX3RpdGxlICg0MzcwNTUxMzc4NzIwMDA0ODcyKSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X3dlYnZpZXdfcHJvdmlkZXJfdGl0bGUiIG1zZ2lkPSI0NjI4NTkyOTc5NzUxOTE4OTA3Ij4iV2ViVmlldyDQtdC90LTRltGA0YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfd2Vidmlld19wcm92aWRlcl9kaWFsb2dfdGl0bGUiIG1zZ2lkPSI0MzcwNTUxMzc4NzIwMDA0ODcyIj4iV2ViVmlldyDQtdC90LTRltGA0YPRltC9INC+0YDQvdCw0YLRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbnZlcnRfdG9fZmlsZV9lbmNyeXB0aW9uIiBtc2dpZD0iMzA2MDE1NjczMDY1MTA2MTIyMyI+ItCk0LDQudC70LTRiyDRiNC40YTRgNC70LDRg9KT0LAg0YLSr9GA0LvQtdC90LTRltGA0YMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb252ZXJ0X3RvX2ZpbGVfZW5jcnlwdGlvbl9lbmFibGVkIiBtc2dpZD0iMjg2MTI1ODY3MTE1MTQyODM0NiI+ItCi0q/RgNC70LXQvdC00ZbRgNGDLi4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29udmVydF90b19maWxlX2VuY3J5cHRpb25fZG9uZSIgbXNnaWQ9Ijc4NTk3NjYzNTgwMDA1MjM5NTMiPiLQpNCw0LnQuyDRiNC40YTRgNC70LDQvdGL0L8g0pvQvtC50YvQu9KT0LDQvSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NldHRpbmdzTGliL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2V0dGluZ3NMaWIvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKaW5kZXggZTAxZDAwYy4uNTFjMjU2OCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2V0dGluZ3NMaWIvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2V0dGluZ3NMaWIvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKQEAgLTk3LDcgKzk3LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJ1bm5pbmdfcHJvY2Vzc19pdGVtX3VzZXJfbGFiZWwiIG1zZ2lkPSIzMTI5ODg3ODY1NTUyMDI1OTQzIj4i0JrQvtGA0LjRgdC90LjQujogPHhsaWZmOmcgaWQ9IlVTRVJfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJsYXVuY2hfZGVmYXVsdHNfc29tZSIgbXNnaWQ9IjMxMzE1OTQ2OTg1NjM3MjYyMSI+ItCf0L7RgdGC0LDQstC10L3QuCDRgdC1INC90LXQutC+0Lgg0YHRgtCw0L3QtNCw0YDQtNC90Lgg0LLRgNC10LTQvdC+0YHRgtC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibGF1bmNoX2RlZmF1bHRzX25vbmUiIG1zZ2lkPSI0MjQxMTI5MTA4MTQwMDM0ODc2Ij4i0J3QtdC80LAg0L/QvtGB0YLQsNCy0LXQvdC+INGB0YLQsNC90LTQsNGA0LTQvdC4INCy0YDQtdC00L3QvtGB0YLQuCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InR0c19zZXR0aW5ncyIgbXNnaWQ9IjgxODY5NzE4OTQ4MDEzNDgzMjciPiLQn9C+0LTQtdGB0YPQstCw0ZrQsCDQvdCwINGC0LXQutGB0YIt0LLQvi3Qs9C+0LLQvtGAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idHRzX3NldHRpbmdzIiBtc2dpZD0iODE4Njk3MTg5NDgwMTM0ODMyNyI+ItCf0L7RgdGC0LDQstC60Lgg0L3QsCDRgtC10LrRgdGCLdCy0L4t0LPQvtCy0L7RgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InR0c19zZXR0aW5nc190aXRsZSIgbXNnaWQ9IjEyMzc4MjA2ODEwMTY2Mzk2ODMiPiLQmNC30LvQtdC3INGC0LXQutGB0YIt0LLQvi3Qs9C+0LLQvtGAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idHRzX2RlZmF1bHRfcmF0ZV90aXRsZSIgbXNnaWQ9IjYwMzA1NTA5OTgzNzkzMTAwODgiPiLQkdGA0LfQuNC90LAg0L3QsCDQs9C+0LLQvtGAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idHRzX2RlZmF1bHRfcmF0ZV9zdW1tYXJ5IiBtc2dpZD0iNDA2MTgxNTI5MjI4NzE4MjgwMSI+ItCR0YDQt9C40L3QsCDRgdC+INC60L7RmNCwINGB0LUg0LrQsNC20YPQstCwINGC0LXQutGB0YLQvtGCIjwvc3RyaW5nPgpAQCAtMTE3LDcgKzExNyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJ0dHNfc3RhdHVzX3JlcXVpcmVzX25ldHdvcmsiIG1zZ2lkPSI2MDQyNTAwODIxNTAzMjI2ODkyIj4iPHhsaWZmOmcgaWQ9IkxPQ0FMRSI+JTEkczwveGxpZmY6Zz4g0LHQsNGA0LAg0LzRgNC10LbQvdC+INC/0L7QstGA0LfRg9Cy0LDRmtC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idHRzX3N0YXR1c19ub3Rfc3VwcG9ydGVkIiBtc2dpZD0iNDQ5MTE1NDIxMjc2MjQ3MjQ5NSI+Ijx4bGlmZjpnIGlkPSJMT0NBTEUiPiUxJHM8L3hsaWZmOmc+INC90LUg0LUg0L/QvtC00LTRgNC20LDQvdC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idHRzX3N0YXR1c19jaGVja2luZyIgbXNnaWQ9IjUzMzkxNTA3OTc5NDA0ODM1OTIiPiLQodC1INC/0YDQvtCy0LXRgNGD0LLQsC4uLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InR0c19lbmdpbmVfc2V0dGluZ3NfdGl0bGUiIG1zZ2lkPSIzNDk5MTEyMTQyNDI1NjgwMzM0Ij4i0J/QvtC00LXRgdGD0LLQsNGa0LAg0L3QsCA8eGxpZmY6ZyBpZD0iVFRTX0VOR0lORV9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ0dHNfZW5naW5lX3NldHRpbmdzX3RpdGxlIiBtc2dpZD0iMzQ5OTExMjE0MjQyNTY4MDMzNCI+ItCf0L7RgdGC0LDQstC60Lgg0L3QsCA8eGxpZmY6ZyBpZD0iVFRTX0VOR0lORV9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0dHNfZW5naW5lX3NldHRpbmdzX2J1dHRvbiIgbXNnaWQ9IjEwMzA1MTIwNDIwNDA3MjIyODUiPiLQodGC0LDRgNGC0YPQstCw0Zgg0L/QvtC00LXRgdGD0LLQsNGa0LAg0L3QsCDRgdC+0YTRgtCy0LXRgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InR0c19lbmdpbmVfcHJlZmVyZW5jZV9zZWN0aW9uX3RpdGxlIiBtc2dpZD0iNDQ4Mjk0NTAwOTkwOTcxNDEzIj4i0J/RgNC10YLQv9C+0YfQuNGC0LDQvSDRgdC+0YTRgtCy0LXRgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InR0c19nZW5lcmFsX3NlY3Rpb25fdGl0bGUiIG1zZ2lkPSI0NDAyNTcyMDE0NjA0NDkwNTAyIj4i0J7Qv9GI0YLQviI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NldHRpbmdzTGliL3Jlcy92YWx1ZXMvYXJyYXlzLnhtbCBiL3BhY2thZ2VzL1NldHRpbmdzTGliL3Jlcy92YWx1ZXMvYXJyYXlzLnhtbAppbmRleCA0ZTg4YzFjLi4yYTRlZmJkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc0xpYi9yZXMvdmFsdWVzL2FycmF5cy54bWwKKysrIGIvcGFja2FnZXMvU2V0dGluZ3NMaWIvcmVzL3ZhbHVlcy9hcnJheXMueG1sCkBAIC0xMDIsNiArMTAyLDcgQEAKIAogICAgIDwhLS0gVGl0bGVzIGZvciBsb2dkIGxpbWl0IHNpemUgc2VsZWN0aW9uIHByZWZlcmVuY2UuIFtDSEFSIExJTUlUPTE0XSAtLT4KICAgICA8c3RyaW5nLWFycmF5IG5hbWU9InNlbGVjdF9sb2dkX3NpemVfdGl0bGVzIj4KKyAgICAgICAgPGl0ZW0+T2ZmPC9pdGVtPgogICAgICAgICA8aXRlbT42NEs8L2l0ZW0+CiAgICAgICAgIDxpdGVtPjI1Nks8L2l0ZW0+CiAgICAgICAgIDxpdGVtPjFNPC9pdGVtPgpAQCAtMTExLDYgKzExMiw3IEBACiAKICAgICA8IS0tIFRpdGxlcyBmb3IgbG9nZCBsaW1pdCBzaXplIGxvd3JhbSBzZWxlY3Rpb24gcHJlZmVyZW5jZS4gW0NIQVIgTElNSVQ9MTRdIC0tPgogICAgIDxzdHJpbmctYXJyYXkgbmFtZT0ic2VsZWN0X2xvZ2Rfc2l6ZV9sb3dyYW1fdGl0bGVzIj4KKyAgICAgICAgPGl0ZW0+T2ZmPC9pdGVtPgogICAgICAgICA8aXRlbT42NEs8L2l0ZW0+CiAgICAgICAgIDxpdGVtPjI1Nks8L2l0ZW0+CiAgICAgICAgIDxpdGVtPjFNPC9pdGVtPgpAQCAtMTE4LDYgKzEyMCw3IEBACiAKICAgICA8IS0tIFZhbHVlcyBmb3IgbG9nZCBsaW1pdCBzaXplIHNlbGVjdGlvbiBwcmVmZXJlbmNlLiAtLT4KICAgICA8c3RyaW5nLWFycmF5IG5hbWU9InNlbGVjdF9sb2dkX3NpemVfdmFsdWVzIiB0cmFuc2xhdGFibGU9ImZhbHNlIiA+CisgICAgICAgIDxpdGVtPjMyNzY4PC9pdGVtPgogICAgICAgICA8aXRlbT42NTUzNjwvaXRlbT4KICAgICAgICAgPGl0ZW0+MjYyMTQ0PC9pdGVtPgogICAgICAgICA8aXRlbT4xMDQ4NTc2PC9pdGVtPgpAQCAtMTI3LDYgKzEzMCw3IEBACiAKICAgICA8IS0tIFN1bW1hcmllcyBmb3IgbG9nZCBsaW1pdCBzaXplIHNlbGVjdGlvbiBwcmVmZXJlbmNlLiBbQ0hBUiBMSU1JVD0zMF0tLT4KICAgICA8c3RyaW5nLWFycmF5IG5hbWU9InNlbGVjdF9sb2dkX3NpemVfc3VtbWFyaWVzIiA+CisgICAgICAgIDxpdGVtPk9mZjwvaXRlbT4KICAgICAgICAgPGl0ZW0+NjRLIHBlciBsb2cgYnVmZmVyPC9pdGVtPgogICAgICAgICA8aXRlbT4yNTZLIHBlciBsb2cgYnVmZmVyPC9pdGVtPgogICAgICAgICA8aXRlbT4xTSBwZXIgbG9nIGJ1ZmZlcjwvaXRlbT4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL0FuZHJvaWRNYW5pZmVzdC54bWwgYi9wYWNrYWdlcy9TaGVsbC9BbmRyb2lkTWFuaWZlc3QueG1sCmluZGV4IDI1MzQ2YWMuLmM2ZDllOTggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvQW5kcm9pZE1hbmlmZXN0LnhtbApAQCAtMTA3LDYgKzEwNyw4IEBACiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5SRUdJU1RFUl9DT05ORUNUSU9OX01BTkFHRVIiIC8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5SRUdJU1RFUl9TSU1fU1VCU0NSSVBUSU9OIiAvPgogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uR0VUX0FQUF9PUFNfU1RBVFMiIC8+CisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5WSUJSQVRFIiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uTUFOQUdFX0FDVElWSVRZX1NUQUNLUyIgLz4KIAogICAgIDxhcHBsaWNhdGlvbiBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2FwcF9sYWJlbCIKICAgICAgICAgICAgICAgICAgYW5kcm9pZDpmb3JjZURldmljZUVuY3J5cHRlZD0idHJ1ZSIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCmluZGV4IDhjNGRlNGUuLjI0N2NjZmMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1hZi9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkZvdXR2ZXJzbGFlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkZvdXR2ZXJzbGFnbMOqZXIga29uIG5pZSBnZWxlZXMgd29yZCBuaWUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJuYWFtbG9vcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJCZXNvbmRlcmhlZGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2tlcm1raWVraWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJTa2VybWtpZWtpZSBzdWtzZXN2b2wgZ2VuZWVtLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJLb24gbmllIHNrZXJta2lla2llIG5lZW0gbmllLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJGb3V0dmVyc2xhZ2Jlc29uZGVyaGVkZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iS29ydCBuYWFtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLXJlw6tsb3Bzb21taW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iR2VkZXRhaWxsZWVyZGUgYmVza3J5d2luZyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYW0vc3RyaW5ncy54bWwKaW5kZXggNDE1ZjNlYy4uOWYzNjE1YSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i4Yuo4Yiz4YqV4YqrIOGIquGNluGIreGJtuGJvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLhi6jhiLPhipXhiqsg4Yiq4Y2W4Yit4Ym1IOGNi+GLreGIjSDhiIrhipDhiaDhiaUg4Yqg4YiN4Ymw4Ym74YiI4YidIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4Yur4YiN4Ymw4Yiw4Yuo4YiYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuGLneGIreGLneGIruGJvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLhiYXhjL3hiaDhibPhi4og4YyI4Yy9IOGKpeGLreGJsyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuGJheGMveGJoOGJs+GLiiDhjIjhjL0g4Yql4Yut4YmzIOGJoOGIteGKrOGJtSDhibDhipDhiLXhibfhiI3hjaIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4YmF4Yy94Ymg4Ymz4YuKIOGMiOGMvSDhiqXhi63hibMg4YiK4YqQ4YizIOGKoOGLreGJveGIjeGInSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLhi6jhiLPhipXhiqsg4Yiq4Y2W4Yit4Ym1IOGLneGIreGLneGIruGJvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i4Yqg4Yyt4YitIOGIteGInSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i4YuoMSDhiJjhiLXhiJjhiK0g4Yib4Yyg4YmD4YiI4YurIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4Yud4Yit4Yud4YitIOGImOGMjeGIiOGMqyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwKaW5kZXggNzlkNjE1ZS4uYjY3MGUzNyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWFyL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i2KrZgtin2LHZitixINin2YTYo9iu2LfYp9ihIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+Itiq2LnYsNix2Kog2YLYsdin2KHYqSDZhdmE2YEg2KrZgtix2YrYsSDYp9mE2K7Yt9ijLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Itio2K/ZiNmGINin2LPZhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLYp9mE2KrZgdin2LXZitmEIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+ItmE2YLYt9ipINi02KfYtNipIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i2KrZhSDYp9mE2KrZgtin2Lcg2YTZgti32Kkg2KfZhNi02KfYtNipINio2YbYrNin2K0uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+Itiq2LnYsNixINin2YTYqtmC2KfYtyDZhNmC2LfYqSDYp9mE2LTYp9i02KkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+Itiq2YHYp9i12YrZhCDYqtmC2LHZitixINin2YTYrti32KMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+Itin2LPZhSDZhdiu2KrYtdixIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLYs9i32LEg2KfZhNmF2YTYrti1INin2YTYo9mI2YQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLZiNi12YEg2KrZgdi12YrZhNmKIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWF6LXJBWi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCmluZGV4IDE3NmIwMDkuLjYzNGQxMjMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iQmFxIGhlc2FiYXRsYXLEsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJCYXEgaGVzYWJhdCBmYXlsxLEgb3h1bm11ciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ImFkc8SxeiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhbGxhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJkaXNwbGV5IGfDtnLDvG50w7xzw7wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJEaXNwbGV5IGfDtnLDvG50w7xzw7wgdcSfdXJsYSDDp8mZa2lsZGkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IkRpc3BsZXkgZ8O2csO8bnTDvHPDvCDJmWzDp2F0YW4gZGV5aWwuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkJhcSBoZXNhYmF0IGRldGFsbGFyxLEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IlHEsXNhIGFkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLXPJmXRybGlrIHjDvGxhc8mZIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4ixo90cmFmbMSxIHTJmXN2aXIiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYitzcitMYXRuL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKaW5kZXggZGIxZWJmZi4uNDFhY2I4OSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJJenZlxaF0YWppIG8gZ3JlxaFrYW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkRhdG90ZWthIGl6dmXFoXRhamEgbyBncmXFoWNpIG5lIG1vxb5lIGRhIHNlIHByb8SNaXRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4ibmVpbWVub3Zhbm8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iRGV0YWxqaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJTbmltY2kgZWtyYW5hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iU25pbWFuamUgZWtyYW5hIGplIHVzcGVsby4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iU25pbWFuamUgZWtyYW5hIG5pamUgdXNwZWxvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhbGppIGl6dmXFoXRhamEgbyBncmXFoWNpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJLcmF0a2kgbmF6aXYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlJlemltZSB1IGplZG5vbSByZWR1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGV0YWxqbmkgb3BpcyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKaW5kZXggYTQ3MDk5OC4uNjYxYTBiNjUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+ItCe0YLRh9C10YLQuCDQt9CwINC/0YDQvtCz0YAuINCz0YDQtdGI0LrQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLQpNCw0LnQu9GK0YIg0YHRitGBINGB0LjQs9C90LDQuyDQt9CwINC/0YDQvtCz0YDQsNC80L3QsCDQs9GA0LXRiNC60LAg0L3QtSDQvNC+0LbQsCDQtNCwINCx0YrQtNC1INC/0YDQvtGH0LXRgtC10L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiLQsdC10Lcg0LjQvNC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+ItCf0L7QtNGA0L7QsdC90L7RgdGC0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i0JXQutGA0LDQvdC90LAg0YHQvdC40LzQutCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i0JXQutGA0LDQvdC90LDRgtCwINGB0L3QuNC80LrQsCDQsdC1INC90LDQv9GA0LDQstC10L3QsCDRg9GB0L/QtdGI0L3Qvi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i0JXQutGA0LDQvdC90LDRgtCwINGB0L3QuNC80LrQsCDQvdC1INC80L7QttCwINC00LAg0LHRitC00LUg0L3QsNC/0YDQsNCy0LXQvdCwLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLQn9C+0LTRgNC+0LHQvdC+0YHRgtC4INC30LAg0YHQuNCz0L3QsNC70LAg0LfQsCDQv9GA0L7Qs9GA0LDQvNC90LAg0LPRgNC10YjQutCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLQmtGA0LDRgtC60L4g0LjQvNC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLQldC00L3QvtGA0LXQtNC+0LLQviDQvtCx0L7QsdGJ0LXQvdC40LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLQn9C+0LTRgNC+0LHQvdC+INC+0L/QuNGB0LDQvdC40LUiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKaW5kZXggYWZhM2E0Ni4uZTcyNTZjYSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLgpqTgp43gprDgp4Hgpp/gpr/gprAg4Kaq4KeN4Kaw4Kak4Ka/4Kas4KeH4Kam4Kao4KaX4KeB4Kay4Ka/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuCmpOCnjeCmsOCngeCmn+Cmv+CmsCDgpqrgp43gprDgpqTgpr/gpqzgp4fgpqbgpqjgp4fgprAg4Kar4Ka+4KaH4Kay4Kaf4Ka/IOCmquCmoeCmvOCmviDgpq/gpr7gpq/gprzgpqjgpr8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiLgpqjgpr7gpq7gpqzgpr/gprngp4DgpqgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i4Kas4Ka/4Ka24KamIOCmrOCmv+CmrOCmsOCmoyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgprjgp43gppXgp43gprDgp4Dgpqjgprbgpp8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLgprjgp43gppXgp43gprDgp4Dgpqjgprbgpp8g4Ka44Kar4Kay4Kat4Ka+4Kas4KeHIOCmqOCnh+Cmk+Cmr+CmvOCmviDgprngpq/gprzgp4fgppvgp4fgp7ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4Ka44KeN4KaV4KeN4Kaw4KeA4Kao4Ka24KafIOCmqOCnh+Cmk+Cmr+CmvOCmviDgpq/gpr7gpq/gprzgpqjgpr/gp7ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4Kak4KeN4Kaw4KeB4Kaf4Ka/IOCmquCnjeCmsOCmpOCmv+CmrOCnh+CmpuCmqOCnh+CmsCDgpqzgpr/gpqzgprDgpqMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuCmm+Cni+CmnyDgpqjgpr7gpq4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IuCnpy3gprLgpr7gpofgpqjgp4fgprAg4Ka44Ka+4Kaw4Ka44KaC4KaV4KeN4Ka34KeH4KaqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4Kas4Ka/4Ka44KeN4Kak4Ka+4Kaw4Ka/4KakIOCmrOCmv+CmrOCmsOCmoyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwKaW5kZXggMTg4ZGE2Ny4uYThjOTU1MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iSW5mb3JtZXMgZFwnZXJyb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iTm8gc1wnaGEgcG9ndXQgbGxlZ2lyIGVsIGZpdHhlciBkZSBsXCdpbmZvcm1lIGRcJ2Vycm9ycyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+InNlbnNlIG5vbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhbGxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IkNhcHR1cmEgZGUgcGFudGFsbGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJMYSBjYXB0dXJhIGRlIHBhbnRhbGxhIHNcJ2hhIGZldCBjb3JyZWN0YW1lbnQuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+Ik5vIHNcJ2hhIHBvZ3V0IGZlciBsYSBjYXB0dXJhIGRlIHBhbnRhbGxhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhbGxzIGRlIGxcJ2luZm9ybWUgZFwnZXJyb3JzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJOb20gY3VydCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iUmVzdW0gZFwndW5hIGzDrW5pYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRlc2NyaXBjacOzIGRldGFsbGFkYSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKaW5kZXggZmRjODAyMy4uMTkzNTAxZTIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlpwcsOhdnkgbyBjaHliw6FjaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJTb3Vib3IgY2h5Ym92w6kgenByw6F2eSBuZWx6ZSBuYcSNw61zdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ImJleiBuw6F6dnUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iUG9kcm9ibm9zdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU27DrW1layBvYnJhem92a3kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJTbsOtbWVrIG9icmF6b3ZreSBieWwgw7pzcMSbxaFuxJsgcG/FmcOtemVuLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJTbsOtbWVrIG9icmF6b3ZreSBzZSBuZXBvZGHFmWlsbyBwb8WZw61kaXQuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IlBvZHJvYm5vc3RpIHpwcsOhdnkgb8KgY2h5YsSbIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJLcsOhdGvDvSBuw6F6ZXYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlNocm51dMOtIG5hIGplZGVuIMWZw6FkZWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJQb2Ryb2Juw70gcG9waXMiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCmluZGV4IDA1MDI2NTUuLjM5NzU4MDAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkZlamxyYXBwb3J0ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iRmVqbHJhcHBvcnRmaWxlbiBrdW5uZSBpa2tlIGzDpnNlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Imlra2UgbmF2bmdpdmV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+Ik9wbHlzbmluZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlNrw6ZybWJpbGxlZGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJEZXIgYmxldiB0YWdldCBldCBza8Omcm1iaWxsZWRlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJEZXIga3VubmUgaWtrZSB0YWdlcyBldCBza8Omcm1iaWxsZWRlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJGZWpscmFwcG9ydG9wbHlzbmluZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJLb3J0IG5hdm4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlNhbW1lbmZhdG5pbmcgcMOlIMOpbiBsaW5qZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRldGFsamVyZXQgYmVza3JpdmVsc2UiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCmluZGV4IDEzYzFjOTYuLmIwNDUwZGQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkZlaGxlcmJlcmljaHRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkZlaGxlcmJlcmljaHRkYXRlaSBrb25udGUgbmljaHQgZ2VsZXNlbiB3ZXJkZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iVW5iZW5hbm50Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFpbHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2NyZWVuc2hvdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IlNjcmVlbnNob3Qgd3VyZGUgYXVmZ2Vub21tZW4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlNjcmVlbnNob3Qga29ubnRlIG5pY2h0IGF1Zmdlbm9tbWVuIHdlcmRlbi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iRGV0YWlscyBkZXMgRmVobGVyYmVyaWNodHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+Ikt1cnpuYW1lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJadXNhbW1lbmZhc3N1bmcgaW4gZWluZXIgWmVpbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbAppbmRleCBhYTAzYmVjLi5lYzVmM2FjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLOkc69zrHPhs6/z4HOrc+CIM+Dz4bOsc67zrzOrM+Ez4nOvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLOlM61zr0gzq7PhM6xzr0gzrTPhc69zrHPhM6uIM63IM6xzr3OrM6zzr3Pic+Dzrcgz4TOv8+FIM6xz4HPh861zq/Ov8+FIM+EzrfPgiDOsc69zrHPhs6/z4HOrM+CIM+Dz4bOsc67zrzOrM+Ez4nOvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Is6xzr3Pjs69z4XOvM63Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+Is6bzrXPgM+Ezr/OvM6tz4HOtc65zrXPgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLOo8+EzrnOs868zrnPjM+Ez4XPgM6/IM6/zrjPjM69zrfPgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+Is6XIM67zq7PiM63IM+Ezr/PhSDPg8+EzrnOs868zrnPjM+Ez4XPgM6/z4Ugzr/OuM+Mzr3Ot8+CIM6/zrvOv866zrvOt8+Bz47OuM63zrrOtSDOvM61IM61z4DOuc+Ez4XPh86vzrEuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+Is6UzrXOvSDOrs+EzrHOvSDOtM+Fzr3Osc+Ezq4gzrcgzrvOrs+Izrcgz4TOv8+FIM+Dz4TOuc6zzrzOuc+Mz4TPhc+Azr/PhSDOv864z4zOvc63z4IuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+Is6bzrXPgM+Ezr/OvM6tz4HOtc65zrXPgiDOsc69zrHPhs6/z4HOrM+CIM+Dz4bOsc67zrzOrM+Ez4nOvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4izqXPgM6/zrrOv8+BzrnPg8+EzrnOus+MIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLOo8+Nzr3Ov8+IzrcgzrzOr86xz4Igz4POtc65z4HOrM+CIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4izpHOvc6xzrvPhc+EzrnOus6uIM+AzrXPgc65zrPPgc6xz4bOriI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lbi1yQVUvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbAppbmRleCBhOTI0N2QyLi4yNmEzZDM4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkJ1ZyByZXBvcnRzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkJ1ZyByZXBvcnQgZmlsZSBjb3VsZCBub3QgYmUgcmVhZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+InVubmFtZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iRGV0YWlscyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJTY3JlZW5zaG90Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iU2NyZWVuc2hvdCB0YWtlbiBzdWNjZXNzZnVsbHkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlNjcmVlbnNob3QgY291bGQgbm90IGJlIHRha2VuLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJCdWcgcmVwb3J0IGRldGFpbHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IlNob3J0IG5hbWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEtbGluZSBzdW1tYXJ5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGV0YWlsZWQgZGVzY3JpcHRpb24iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKaW5kZXggYTkyNDdkMi4uMjZhM2QzOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJCdWcgcmVwb3J0cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJCdWcgcmVwb3J0IGZpbGUgY291bGQgbm90IGJlIHJlYWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJ1bm5hbWVkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFpbHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2NyZWVuc2hvdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IlNjcmVlbnNob3QgdGFrZW4gc3VjY2Vzc2Z1bGx5LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJTY3JlZW5zaG90IGNvdWxkIG5vdCBiZSB0YWtlbi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iQnVnIHJlcG9ydCBkZXRhaWxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJTaG9ydCBuYW1lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLWxpbmUgc3VtbWFyeSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRldGFpbGVkIGRlc2NyaXB0aW9uIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVuLXJJTi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCmluZGV4IGE5MjQ3ZDIuLjI2YTNkMzggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iQnVnIHJlcG9ydHMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iQnVnIHJlcG9ydCBmaWxlIGNvdWxkIG5vdCBiZSByZWFkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4idW5uYW1lZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhaWxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlNjcmVlbnNob3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJTY3JlZW5zaG90IHRha2VuIHN1Y2Nlc3NmdWxseS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iU2NyZWVuc2hvdCBjb3VsZCBub3QgYmUgdGFrZW4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkJ1ZyByZXBvcnQgZGV0YWlscyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iU2hvcnQgbmFtZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iMS1saW5lIHN1bW1hcnkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXRhaWxlZCBkZXNjcmlwdGlvbiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbAppbmRleCBhYjJkZDYzLi43ZjcwZmViIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkluZm9ybWVzIGRlIGVycm9yZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iTm8gc2UgcHVkbyBsZWVyIGVsIGFyY2hpdm8gZGUgaW5mb3JtZSBkZSBlcnJvcmVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4ic2luIG5vbWJyZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhbGxlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJDYXB0dXJhIGRlIHBhbnRhbGxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iU2UgdG9tw7MgbGEgY2FwdHVyYSBkZSBwYW50YWxsYSBjb3JyZWN0YW1lbnRlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJObyBzZSBwdWRvIHRvbWFyIGxhIGNhcHR1cmEgZGUgcGFudGFsbGEuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkRldGFsbGVzIGRlbCBpbmZvcm1lIGRlIGVycm9yZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+Ik5vbWJyZSBjb3J0byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iUmVzdW1lbiBkZSB1bmEgbMOtbmVhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGVzY3JpcGNpw7NuIGNvbXBsZXRhIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbAppbmRleCBkMzJmMDEyLi5kZjA4MGQyIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJJbmZvcm1lcyBkZSBlcnJvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJObyBzZSBoYSBwb2RpZG8gbGVlciBlbCBhcmNoaXZvIGRlbCBpbmZvcm1lIGRlIGVycm9yZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJzaW4gbm9tYnJlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFsbGVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IkNhcHR1cmEgZGUgcGFudGFsbGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJMYSBjYXB0dXJhIGRlIHBhbnRhbGxhIHNlIGhhIHJlYWxpemFkbyBjb3JyZWN0YW1lbnRlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJObyBzZSBwdWVkZSByZWFsaXphciBsYSBjYXB0dXJhIGRlIHBhbnRhbGxhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhbGxlcyBkZWwgaW5mb3JtZSBkZSBlcnJvcmVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJOb21icmUgY29ydG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlJlc3VtZW4gZGUgMSBsw61uZWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXNjcmlwY2nDs24gY29tcGxldGEiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZXQtckVFL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKaW5kZXggM2VkZWZhNC4uOTRiNGI4OSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJWZWFhcnVhbmRlZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJWZWFhcnVhbmRlIGZhaWxpIGVpIMO1bm5lc3R1bnVkIGx1Z2VkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Im5pbWV0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLDnGtzaWthc2phZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJFa3JhYW5pcGlsdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IkVrcmFhbmlwaWxkaSB0ZWdlbWluZSDDtW5uZXN0dXMuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IkVrcmFhbmlwaWx0aSBlaSBzYWFudWQgdGVoYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iVmVhYXJ1YW5kZSDDvGtzaWthc2phZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iTMO8aGlrZSBuaW1pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLXJlYWxpbmUga29ra3V2w7V0ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IsOca3Npa2FzamFsaWsga2lyamVsZHVzIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWV1LXJFUy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZXUtckVTL3N0cmluZ3MueG1sCmluZGV4IGM1OTJmNTAuLmNhZDU1ZmMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZXUtckVTL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZXUtckVTL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iQWthdHNlbiB0eG9zdGVuYWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iRXppbiBpemFuIGRhIGlyYWt1cnJpIGFrYXRzZW4gdHhvc3RlbmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJpemVuZ2FiZWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iWGVoZXRhc3VuYWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iUGFudGFpbGEtYXJnYXpraWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJBdGVyYSBkYSBwYW50YWlsYS1hcmdhemtpYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iRXppbiBpemFuIGRhIGF0ZXJhIHBhbnRhaWxhLWFyZ2F6a2lhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJBa2F0c2VuIHR4b3N0ZW5hcmVuIHhlaGV0YXN1bmFrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJJemVuIGxhYnVycmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IkxlcnJvIGJha2FycmVrbyBsYWJ1cnBlbmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJBemFscGVuIHhlaGF0dWEiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCmluZGV4IDQwOWZkNTMuLmI2MTlmMTAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+Itqv2LLYp9ix2LQg2KfYtNqp2KfZhCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLZgdin24zZhCDar9iy2KfYsdi0INin2LTaqdin2YQg2K7ZiNin2YbYr9mHINmG2LTYryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Itio24zigIzZhtin2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i2KzYstim24zYp9iqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+Iti52qnYsyDYtdmB2K3Zh+KAjNmG2YXYp9uM2LQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLYudqp2LMg2LXZgdit2YfigIzZhtmF2KfbjNi0INio2Kcg2YXZiNmB2YLbjNiqINqv2LHZgdiq2Ycg2LTYry4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i2YbZhduM4oCM2KrZiNin2YYg2LnaqdizINi12YHYrdmH4oCM2YbZhdin24zYtCDar9ix2YHYqi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i2KzYstim24zYp9iqINqv2LLYp9ix2LQg2KfYtNqp2KfZhCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i2YbYp9mFINmF2K7ZgdmBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLYrtmE2KfYtdmHINuM2qkg2K7Yt9uMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i2KzYstim24zYp9iqINiv2YLbjNmCIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbAppbmRleCBiZmE5MjBhLi5hOTBmZmI1IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJWaXJoZXJhcG9ydGl0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IlZpcmhlcmFwb3J0dGl0aWVkb3N0b2EgZWkgdm9pIGx1a2VhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Im5pbWV0w7ZuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IlRpZXRvamEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iS3V2YWthYXBwYXVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iS3V2YWthYXBwYXVzIHRhbGxlbm5ldHR1LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJLdXZha2FhcHBhdWtzZW4gdGFsbGVudGFtaW5lbiBlcMOkb25uaXN0dWkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IlZpcmhlcmFwb3J0aW4gdGllZG90Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJMeWh5dCBuaW1pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJMeWh5dCB0aWl2aXN0ZWxtw6QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJZa3NpdHlpc2tvaHRhaW5lbiBrdXZhdXMiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKaW5kZXggNGRjNDQ4Mi4uNTJiZTk5ZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJSYXBwb3J0cyBkZSBib2d1ZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iSW1wb3NzaWJsZSBkZSBsaXJlIGxlIGZpY2hpZXIgZHUgcmFwcG9ydCBkZSBib2d1ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+InNhbnMgbm9tIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkTDqXRhaWxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlNhaXNpZSBkXCfDqWNyYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJMYSBzYWlzaWUgZFwnw6ljcmFuIGEgcsOpdXNzaS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUgbG9ycyBkZSBsYSBzYWlzaWUgZFwnw6ljcmFuLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEw6l0YWlscyBkdSByYXBwb3J0IGRlIGJvZ3VlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJOb20gYWJyw6lnw6kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlLDqXN1bcOpIGRcJ3VuZSBsaWduZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRlc2NyaXB0aW9uIGTDqXRhaWxsw6llIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbAppbmRleCBhM2U0ZjdkLi5lMTBlMjhlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZnIvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJSYXBwb3J0cyBkXCdlcnJldXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iSW1wb3NzaWJsZSBkZSBsaXJlIGxlIGZpY2hpZXIgZGUgcmFwcG9ydCBkZSBidWcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4ic2FucyBub20iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iRMOpdGFpbHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iQ2FwdHVyZXMgZFwnw6ljcmFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iTGEgY2FwdHVyZSBkXCfDqWNyYW4gYSBiaWVuIMOpdMOpIGVmZmVjdHXDqWUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IkltcG9zc2libGUgZFwnZWZmZWN0dWVyIHVuZSBjYXB0dXJlIGRcJ8OpY3Jhbi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iRMOpdGFpbHMgZHUgcmFwcG9ydCBkZSBidWciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+Ik5vbSBjb3VydCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iUsOpc3Vtw6kgZFwndW5lIGxpZ25lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGVzY3JpcHRpb24gZMOpdGFpbGzDqWUiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1nbC1yRVMvc3RyaW5ncy54bWwKaW5kZXggOGIyOGNhYS4uMjBmOGNkYSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1nbC1yRVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1nbC1yRVMvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJJbmZvcm1lcyBkZSBlcnJvcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJOb24gc2UgcHVpZG8gbGVyIG8gZmljaGVpcm8gZGUgaW5mb3JtZSBkZSBlcnJvcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+InNlbiBub21lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFsbGVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IkNhcHR1cmEgZGUgcGFudGFsbGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJBIGNhcHR1cmEgZGUgcGFudGFsbGEgcmVhbGl6b3VzZSBjb3JyZWN0YW1lbnRlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJOb24gc2UgcHVpZG8gcmVhbGl6YXIgYSBjYXB0dXJhIGRlIHBhbnRhbGxhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhbGxlcyBkbyBpbmZvcm1lIGRlIGVycm9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJOb21lIGFicmV2aWFkbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iUmVzdW1vIGRlIDEgbGnDsWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXNjcmljacOzbiBkZXRhbGxhZGEiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtZ3UtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKaW5kZXggOTFiMTM2Mi4uOTY3ZDI1NSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLgqqzgqpcg4Kqw4Kq/4Kqq4KuL4Kqw4KuN4Kqf4KuN4Kq4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuCqrOCqlyDgqrDgq4Dgqqrgq4vgqrDgq43gqp8g4Kqr4Kq+4KqH4KqyIOCqteCqvuCqguCqmuCrgCDgqrbgqpXgqr7gqocg4Kqo4Kql4KuAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4KqF4Kqo4Kq+4Kqu4Kq+4KqC4KqV4Kq/4KqkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuCqteCqv+Cql+CqpOCriyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgqrjgq43gqpXgq43gqrDgq4Dgqqjgqrbgq4vgqp8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLgqrjgq43gqpXgq43gqrDgq4Dgqqjgqrbgq4vgqp8g4Kq44Kqr4Kqz4Kqk4Kq+4Kqq4KuC4Kqw4KuN4Kq14KqVIOCqsuCrh+CqteCqvuCqr+Criy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4Kq44KuN4KqV4KuN4Kqw4KuA4Kqo4Kq24KuL4KqfIOCqsuCqhyDgqrbgqpXgqr7gqq/gq4sg4Kqo4Kql4KuALiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLgqqzgqpcg4Kqw4Kq/4Kqq4KuL4Kqw4KuN4Kqf4Kqo4KuAIOCqteCqv+Cql+CqpOCriyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i4Kqo4Kq+4Kqo4KuB4KqCIOCqqOCqvuCqriI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iMS3gqrDgq4fgqpbgqr7gqqjgq4sg4Kq44Kq+4Kqw4Kq+4KqC4Kq2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4Kq14Kq/4KqX4Kqk4Kq14Kq+4KqwIOCqteCqsOCrjeCqo+CqqCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKaW5kZXggNTk1ZWM3Zi4uNzBlNGYzOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i4KSs4KSXIOCksOCkv+CkquCli+CksOCljeCknyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLgpKzgpJcg4KSw4KS/4KSq4KWL4KSw4KWN4KSfIOCkq+CkvOCkvuCkh+CksiDgpKjgpLngpYDgpIIg4KSq4KSi4KS84KWAIOCknOCkviDgpLjgpJXgpYAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiLgpIXgpKjgpL7gpK7gpL7gpILgpJXgpL/gpKQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i4KS14KS/4KS14KSw4KSjIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IuCkuOCljeCkleCljeCksOClgOCkqOCktuClieCknyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuCkuOCljeCkleCljeCksOClgOCkqOCktuClieCknyDgpLjgpKvgpLLgpKTgpL7gpKrgpYLgpLDgpY3gpLXgpJUg4KSy4KS/4KSv4KS+IOCkl+Ckr+Ckvi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4KS44KWN4KSV4KWN4KSw4KWA4KSo4KS24KWJ4KSfIOCkqOCkueClgOCkgiDgpLLgpL/gpK/gpL4g4KSc4KS+IOCkuOCkleCkvi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4KSs4KSXIOCksOCkv+CkquCli+CksOCljeCknyDgpJXgpYcg4KS14KS/4KS14KSw4KSjIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLgpLjgpILgpJXgpY3gpLfgpL/gpKrgpY3gpKQg4KSo4KS+4KSuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLeCkquCkguCkleCljeCkpOCkvyDgpK7gpYfgpIIg4KS44KS+4KSw4KS+4KSC4KS2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4KS14KS/4KS44KWN4KSk4KWD4KSkIOCkteCksOCljeCko+CkqCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKaW5kZXggMTk1N2JkYi4uZjM4YTI4MSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iSXp2ai4gbyBwcm9nLiBwb2dyZcWhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJJenZqZcWhxIdlIG8gcHJvZ3JhbXNrb2ogcG9ncmXFoWNpIG5pamUgcHJvxI1pdGFubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ImJleiBuYXppdmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iUG9qZWRpbm9zdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU25pbWthIHphc2xvbmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJaYXNsb24gamUgc25pbWxqZW4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlNuaW1hbmplIHphc2xvbmEgbmlqZSB1c3BqZWxvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJQb2plZGlub3N0aSBpenZqZcWhxIdhIG8gcHJvZ3JhbXNrb2ogcG9ncmXFoWNpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJLcmF0a28gaW1lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJTYcW+ZXRhayB1IGplZG5vbSByZXRrdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRldGFsamFuIG9waXMiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sCmluZGV4IDc0YjRhYmEuLjU0NGMxMTcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkhpYmFqZWxlbnTDqXNlayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJBIGhpYmFqZWxlbnTDqXNpIGbDoWpsdCBuZW0gc2lrZXLDvGx0IGJlb2x2YXNuaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+Im7DqXZ0ZWxlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJSw6lzemxldGVrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IkvDqXBlcm55xZFrw6lwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iU2lrZXLDvGx0IGVsa8Opc3rDrXRlbmkgYSBrw6lwZXJuecWRa8OpcGV0LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJOZW0gc2lrZXLDvGx0IGVsa8Opc3rDrXRlbmkgYSBrw6lwZXJuecWRa8OpcGV0LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJIaWJhamVsZW50w6lzIHLDqXN6bGV0ZWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IlLDtnZpZCBuw6l2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJFZ3lzb3JvcyDDtnNzemVmb2dsYWzDoXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJSw6lzemxldGVzIGxlw61yw6FzIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWh5LXJBTS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaHktckFNL3N0cmluZ3MueG1sCmluZGV4IDMxN2NiMGIuLjYyNTk5NGQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaHktckFNL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaHktckFNL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i1Y7WgNWr1brVodWv1bbVpdaA1asg1bDVodW31b7VpdW/1b7VuNaC1anVtdW41oLVttW21aXWgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLVgNW21aHWgNWh1b7VuNaAINW51acg1a/VodaA1aTVodWsINW+1oDVq9W61aHVr9W21aXWgNWrINWm1aXVr9W41oLVtdaB1asg1obVodW11azVqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ItWh1bbVodW21bjWgtW2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+ItWE1aHVttaA1aHVtNWh1b3VttWl1oAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i1LfVr9aA1aHVttWrINW61aHVv9Wv1aXWgCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+ItS31a/WgNWh1bbVqyDVutWh1b/Vr9Wl1oDVqCDVsNWh1bvVuNWy1bjWgtWp1bXVodW01aIg1b3Vv9Wh1oHVvtWl1oE6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+ItWJ1bDVodW71bjVstW+1aXWgSDVvdW/1aHVttWh1awg1afVr9aA1aHVttWrINW61aHVv9Wv1aXWgNWoOiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLVjtaA1avVutWh1a/VqyDVptWl1a/VuNaC1bXWgdWrINW01aHVttaA1aHVtNWh1b3VttWl1oDVqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i1L/WgNWz1aHVvyDVodW21bjWgtW2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLUsdW01oPVuNaD1aHVo9Wr1oAg1bTVpdWvINW/1bjVstW41b4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLVhNWh1bbWgNWh1bTVodW91bYg1bbVr9Wh1oDVodWj1oDVuNaC1anVtdW41oLVtiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKaW5kZXggNTdkNGM3My4uNzQ3ZmVjZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iTGFwb3JhbiBidWciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iRmlsZSBsYXBvcmFuIGJ1ZyB0aWRhayBkYXBhdCBkaWJhY2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJ0YW5wYSBuYW1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFpbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJUYW5na2FwYW4gbGF5YXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJUYW5na2FwYW4gbGF5YXIgYmVyaGFzaWwgZGlhbWJpbC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iVGFuZ2thcGFuIGxheWFyIHRpZGFrIGRhcGF0IGRpYW1iaWwuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkRldGFpbCBsYXBvcmFuIGJ1ZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iTmFtYSBwZW5kZWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlJpbmdrYXNhbiAxIGJhcmlzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGVza3JpcHNpIGRldGFpbCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1pcy1ySVMvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAppbmRleCAzOTYwNWRiLi5kMGQzZTYwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlZpbGx1dGlsa3lubmluZ2FyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkVra2kgdmFyIGjDpmd0IGHDsCBsZXNhIMO6ciB2aWxsdXNrw71yc2x1bm5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iw6FuIGhlaXRpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJOw6FuYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2tqw6FteW5kIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iVMOza3N0IGHDsCB0YWthIHNrasOhbXluZC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iRWtraSB0w7Nrc3QgYcOwIHRha2Egc2tqw6FteW5kLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJVcHBsw71zaW5nYXIgdW0gdmlsbHV0aWxreW5uaW5ndSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iU3R1dHQgaGVpdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IkVpbm5hciBsw61udSBzYW1hbnRla3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLDjXRhcmxlZyBsw71zaW5nIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbAppbmRleCAxMGJhN2RkLi4wNTExYzU4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJSYXBwb3J0aSBzdWkgYnVnIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkltcG9zc2liaWxlIGxlZ2dlcmUgaWwgZmlsZSByZWxhdGl2byBhbGxhIHNlZ25hbGF6aW9uZSBkaSBidWciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJzZW56YSBub21lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldHRhZ2xpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlNjcmVlbnNob3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJTY3JlZW5zaG90IGFjcXVpc2l0by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iSW1wb3NzaWJpbGUgYWNxdWlzaXJlIGxvIHNjcmVlbnNob3QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkRldHRhZ2xpIGRlbGxhIHNlZ25hbGF6aW9uZSBkaSBidWciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+Ik5vbWUgYnJldmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlNpbnRlc2kgc3UgdW5hIHJpZ2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXNjcml6aW9uZSBkZXR0YWdsaWF0YSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwKaW5kZXggNWIwY2IyNi4uYjliY2FmOSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i15PXldeX15XXqiDXkdeQ15LXmdedIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+Itec15Ag16DXmdeq158g15TXmdeUINec16fXqNeV15Ag15DXqiDXp9eV15HXpSDXlNeT15XXlyDXotecINeU15HXkNeSIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i15zXnNeQINep150iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i16TXqNeY15nXnSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLXpteZ15zXldedINee16HXmiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+Item15nXnNeV150g15TXnteh15og15HXldem16Ig15HXlNem15zXl9eULiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiLXnNeQINeg15nXqtefINeU15nXlCDXnNem15zXnSDXnteh15ouIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+Itek16jXmNeZINeT15XXlyDXotecINeR15DXkiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i15vXmdeg15XXmSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i16HXmdeb15XXnSDXkdep15XXqNeUINeQ15fXqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+Iteq15nXkNeV16gg157XpNeV16jXmCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKaW5kZXggZmQ0YTE1MC4uMDViOTVlYiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i44OQ44Kw44Os44Od44O844OIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuODkOOCsOODrOODneODvOODiCDjg5XjgqHjgqTjg6vjgpLoqq3jgb/lj5bjgovjgZPjgajjgYzjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiLlkI3liY3jgarjgZciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i6Kmz57SwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IuOCueOCr+ODquODvOODs+OCt+ODp+ODg+ODiCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuOCueOCr+ODquODvOODs+OCt+ODp+ODg+ODiOOCkuaSruW9seOBl+OBvuOBl+OBn+OAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiLjgrnjgq/jg6rjg7zjg7Pjgrfjg6fjg4Pjg4jjgpLmkq7lvbHjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i44OQ44Kw44Os44Od44O844OI44Gu6Kmz57SwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLnnIHnlaXlkI0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEg6KGM44Gu5qaC6KaBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i6Kmz57Sw6Kqs5piOIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWthLXJHRS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta2EtckdFL3N0cmluZ3MueG1sCmluZGV4IDgwMmY5NDQuLjJjZmQ4MGEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta2EtckdFL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta2EtckdFL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i4YOo4YOU4YOq4YOT4YOd4YOb4YOU4YOR4YOY4YOhIOGDkOGDnOGDkuGDkOGDoOGDmOGDqOGDlOGDkeGDmCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLhg67hg5Dhg6Dhg5Xhg5Thg5bhg5Thg5Hhg5jhg6Eg4YOo4YOU4YOh4YOQ4YOu4YOU4YORIOGDkOGDnOGDkuGDkOGDoOGDmOGDqOGDmOGDoSDhg6zhg5Dhg5nhg5jhg5fhg67hg5Xhg5Ag4YOV4YOU4YOgIOGDm+GDneGDruGDlOGDoOGDruGDk+GDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+IuGDo+GDoeGDkOGDruGDlOGDmuGDnSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLhg5Phg5Thg6Lhg5Dhg5rhg5Thg5Hhg5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i4YOU4YOZ4YOg4YOQ4YOc4YOY4YOhIOGDkOGDnOGDkOGDkeGDlOGDreGDk+GDmCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuGDlOGDmeGDoOGDkOGDnOGDmOGDoSDhg5Dhg5zhg5Dhg5Hhg5Thg63hg5Phg5gg4YOS4YOQ4YOT4YOQ4YOm4YOU4YOR4YOj4YOa4YOY4YOQIOGDrOGDkOGDoOGDm+GDkOGDouGDlOGDkeGDmOGDly4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4YOU4YOZ4YOg4YOQ4YOc4YOY4YOhIOGDkOGDnOGDkOGDkeGDlOGDreGDk+GDmOGDoSDhg5Lhg5Dhg5Phg5Dhg6bhg5Thg5Hhg5Ag4YOV4YOU4YOgIOGDm+GDneGDruGDlOGDoOGDruGDk+GDkC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4YOu4YOQ4YOg4YOV4YOU4YOW4YOY4YOhIOGDqOGDlOGDoeGDkOGDruGDlOGDkSDhg5Dhg5zhg5Lhg5Dhg6Dhg5jhg6jhg5jhg6Eg4YOT4YOU4YOi4YOQ4YOa4YOU4YOR4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLhg5vhg53hg5nhg5rhg5Qg4YOh4YOQ4YOu4YOU4YOa4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLeGDruGDkOGDluGDmOGDkOGDnOGDmCDhg6Dhg5Thg5bhg5jhg6Phg5vhg5QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLhg5Phg5Thg6Lhg5Dhg5rhg6Phg6Dhg5gg4YOQ4YOm4YOs4YOU4YOg4YOQIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCmluZGV4IDI4MjUzNDIuLjI4MjliOWIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i0prQsNGC0LUg0YLRg9GA0LDQu9GLINCx0LDRj9C90LTQsNC80LDQu9Cw0YAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i0prQsNGC0LUg0YLRg9GA0LDQu9GLINC10YHQtdC/INGE0LDQudC70YvQvSDQvtKb0YMg0LzSr9C80LrRltC9INCx0L7Qu9C80LDQtNGLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i0LDRgtCw0YPRgdGL0LciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i0JzTmdC70ZbQvNC10YLRgtC10YAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i0KHQutGA0LjQvdGI0L7RgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+ItCh0LrRgNC40L3RiNC+0YIg0YHTmdGC0YLRliDRgtKv0YHRltGA0ZbQu9C00ZYuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+ItCh0LrRgNC40L3RiNC+0YIg0YLSr9GB0ZbRgNGDINC80q/QvNC60ZbQvSDQsdC+0LvQvNCw0LTRiy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i0prQsNGC0LUg0YLRg9GA0LDQu9GLINC10YHQtdC/0YLRltKjINC805nQu9GW0LzQtdGC0YLQtdGA0ZYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+ItKa0YvRgdKb0LAg0LDRgtGLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxINC20L7Qu9C00YvSmyDQttC40YvQvdGC0YvSmyDQvNOZ0LvRltC80LXRgtGC0LXRgCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+ItCV0LPQttC10Lkt0YLQtdCz0LbQtdC50LvRliDRgdC40L/QsNGC0YLQsNC80LAiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta20tcktIL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKaW5kZXggOTY2Y2VjMC4uMzU3MzU4OCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rbS1yS0gvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLhnprhnrbhnpnhnoDhnrbhnprhno7hn43hnpbhnrjhnoDhn4bhnqDhnrvhnp8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i4Z6Y4Z634Z6T4Z6i4Z624Z6F4Z6i4Z624Z6T4Z6v4Z6A4Z6f4Z624Z6a4Z6a4Z6U4Z624Z6Z4Z6A4Z624Z6O4Z+N4Z6A4Z+G4Z6g4Z674Z6f4Z6U4Z624Z6T4Z6R4Z+BIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4Z6C4Z+S4Z6Y4Z624Z6T4Z6I4Z+S4Z6Y4Z+E4Z+HIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuGeluGfkOGej+GfjOGemOGetuGek+Gem+GemOGfkuGeouGet+GejyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLhnprhnrzhnpThnpDhno/hnqLhn4HhnoDhn5LhnprhnoThn4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLhnpThnrbhnpPhnpDhno/hnprhnrzhnpThnpDhno/hnqLhn4HhnoDhn5LhnprhnoThn4vhnorhn4Thnpnhnofhn4ThnoLhnofhn5DhnpkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4Z6Y4Z634Z6T4Z6i4Z624Z6F4Z6Q4Z6P4Z6a4Z684Z6U4Z6Q4Z6P4Z6i4Z+B4Z6A4Z+S4Z6a4Z6E4Z+L4Z6U4Z624Z6T4Z6R4Z+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IuGeluGfkOGej+GfjOGemOGetuGek+Gem+GemOGfkuGeouGet+Gej+GeluGeuOGemuGelOGetuGemeGegOGetuGemuGejuGfjeGegOGfhuGeoOGeu+GenyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i4Z6I4Z+S4Z6Y4Z+E4Z+H4oCL4Z6B4Z+S4Z6b4Z64Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLhnoDhnrbhnprhnp/hnoThn5LhnoHhn4HhnpThnpjhnr3hnpnhnofhnr3hnpoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLhnoDhnrbhnprhnpbhnrfhnpbhno7hn4zhnpPhnrbhnpvhnpjhn5LhnqLhnrfhno8iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta24tcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwKaW5kZXggNmRhNTMxOS4uNzA3MTI2NCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLgsqbgs4vgsrcg4LK14LKw4LKm4LK/4LKX4LKz4LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuCyrOCyl+CzjeKAjCDgsrXgsrDgsqbgsr8g4LKr4LOI4LKy4LON4oCM4oCMIOCyheCyqOCzjeCyqOCzgSDgspPgsqbgsrLgs4Eg4LK44LK+4LKn4LON4LKv4LK14LK+4LKX4LOB4LKk4LON4LKk4LK/4LKy4LON4LKyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4LK54LOG4LK44LKw4LK/4LK44LKm4LK/4LKw4LOB4LK14LOB4LKm4LOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuCyteCyv+CyteCysOCyl+Cys+CzgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgsrjgs43gspXgs43gsrDgs4Dgsqjgs43igIzgsrbgsr7gsp/gs40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLgsrjgs43gspXgs43gsrDgs4Dgsqjgs43igIzgsrbgsr7gsp/gs43igIwg4LKv4LK24LK44LON4LK14LK/4LKv4LK+4LKX4LK/IOCypOCzhuCyl+CzhuCypuCzgeCyleCziuCys+CzjeCys+CysuCyvuCyl+Cyv+CypuCzhi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4LK44LON4LKV4LON4LKw4LOA4LKo4LON4oCM4LK24LK+4LKf4LON4oCMIOCypOCzhuCyl+CzhuCypuCzgeCyleCziuCys+CzjeCys+CysuCzgSDgsrjgsr7gsqfgs43gsq/gsrXgsr7gspfgs4HgsrXgs4Hgsqbgsr/gsrLgs43gsrIuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IuCyrOCyl+CzjSDgsrXgsrDgsqbgsr8g4LK14LK/4LK14LKw4LKX4LKz4LOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLgsprgsr/gspXgs43gspUg4LK54LOG4LK44LKw4LOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLeCyuOCyvuCysuCyv+CyqCDgsrjgsr7gsrDgsr7gsoLgsrYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLgsrXgsr/gsrXgsrDgsrXgsr7gsqYg4LK14LK/4LK14LKw4LKj4LOGIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbAppbmRleCA1ZTk2ZTZkLi40ZTNjM2Y0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLrsoTqt7gg7Iug6rOgIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuuyhOq3uCDsi6Dqs6Ag7YyM7J287J2EIOydveydhCDsiJgg7JeG7Iq164uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+IuydtOumhCDsl4bsnYwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i7IS467aA7KCV67O0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IuyKpO2BrOumsOyDtyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuyKpO2BrOumsOyDt+ydhCDssI3sl4jsirXri4jri6QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuyKpO2BrOumsOyDt+ydhCDssI3snYQg7IiYIOyXhuyKteuLiOuLpC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i67KE6re4IOyLoOqzoCDshLjrtoDsoJXrs7QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+Iuynp+ydgCDsnbTrpoQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+Iu2VnCDspIQg7JqU7JW9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i7J6Q7IS47ZWcIOyEpOuqhSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWt5LXJLRy9zdHJpbmdzLnhtbAppbmRleCBjNWI0MTQ0Li4wNTFiZTM4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWt5LXJLRy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWt5LXJLRy9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+ItCc0q/Rh9Kv0LvSr9GI0YLSr9C60YLTqdGA0LTSryDQutCw0LHQsNGA0LvQvtC+0LvQvtGAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+ItCc0q/Rh9Kv0LvSr9GI0YLSr9C6INGC0YPRg9GA0LDQu9GD0YMg0LrQsNCx0LDRgNC70LDQs9Cw0L0g0YTQsNC50Lsg0L7QutGD0LvQsdCw0Lkg0LrQvtC50LTRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ItCw0YLQsNC70YvRiNGLINC20L7QuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLQp9C+0L4t0LbQsNC50YsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i0KHQutGA0LjQvdGI0L7RgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+ItCh0LrRgNC40L3RiNC+0YIg0LjQudCz0LjQu9C40LrRgtKv0q8g0YLQsNGA0YLRi9C70LTRiy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i0KHQutGA0LjQvdGI0L7RgiDRgtCw0YDRgtGL0LvQsdCw0Lkg0LrQvtC50LTRgy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i0JzSr9GH0q/Qu9Kv0YjRgtKv0LrRgtOp0YAg0LbTqdC90q/QvdC006kg0LrQsNCx0LDRgNC00YvQvSDRh9C+0L4t0LbQsNC50YsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+ItCa0YvRgdC60LAg0LDRgtCw0LvRi9GI0YsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEg0YHQsNC/0YLRi9C6INC60L7RgNGD0YLRg9C90LTRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+ItCa0LXQvdC10L3QuNGA0Y3RjdC6INC80LDQsNC70YvQvNCw0YIiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbG8tckxBL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKaW5kZXggMDM0NjY4OC4uYTA0YTM1NSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLguqXgurLguo3igIvguofgurLgupnigIvguprgurHgupnigIvguqvgurIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i4Lqa4LuN4LuI4Lqq4Lqy4Lqh4Lqy4LqU4Lqt4LuI4Lqy4LqZ4LuE4Lqf4Lql4LuM4Lql4Lqy4LqN4LqH4Lqy4LqZ4LqC4LuN4LuJ4Lqc4Lq04LqU4Lqe4Lqy4LqU4LuE4LqU4LuJIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4Lqa4LuN4LuI4Lqh4Lq14LqK4Lq34LuIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuC6peC6suC6jeC6peC6sOC6reC6veC6lCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgup7gurLguprgu5zgu4ngurLguojgu40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLgupbgu4jgurLguo3gup7gurLguprgu5zgu4ngurLguojgu43guqrgurPgu4DguqXgurHgupTgu4HguqXgu4nguqcuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuC6muC7jeC7iOC6quC6suC6oeC6suC6lOC6luC7iOC6suC6jeC6nuC6suC6muC7nOC7ieC6suC6iOC7jeC7hOC6lOC7iS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4Lql4Lqy4LqN4oCL4Lql4Lqw4oCL4Lqt4Lq94LqU4oCL4LqB4Lqy4LqZ4Lql4Lqy4LqN4LqH4Lqy4LqZ4Lqa4Lqx4LqZ4Lqr4LqyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLguorgurfgu4jguqrgurHgu4ngupkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IuC6quC6sOC6q+C6vOC6uOC6miAxIOC7geC6luC6pyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IuC6hOC6s+C6reC6sOC6l+C6tOC6muC6suC6jeC7geC6muC6muC6peC6sOC6reC6veC6lCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1sdC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKaW5kZXggODQwNjZjMC4uOGQ4ZDMxZSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1sdC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iUmlrdMWzIGF0YXNrYWl0b3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iTmVwYXZ5a28gc3VrdXJ0aSBwcmFuZcWhaW1vIGFwaWUgcmlrdMSFIGZhaWxvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iYmUgcGF2YWRpbmltbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJJbmZvcm1hY2lqYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJFa3Jhbm8ga29waWphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iRWtyYW5vIGtvcGlqYSBzxJdrbWluZ2FpIHBhZGFyeXRhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJOZXBhdnlrbyBwYWRhcnl0aSBla3Jhbm8ga29waWpvcy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iScWhc2FtaSBwcmFuZcWhaW1vIGFwaWUgcmlrdMSFIGluZm9ybWFjaWphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJUcnVtcGFzaXMgcGF2YWRpbmltYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEgZWlsdXTEl3Mgc3V2ZXN0aW7ElyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IknFoXNhbXVzIGFwcmHFoWFzIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbAppbmRleCA5NWQxNjhjLi5kYmExYWQzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJLxLzFq2R1IHppxYZvanVtaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJOZXZhcsSTamEgbm9sYXPEq3Qga8S8xatkYXMgcMSBcnNrYXRhIGZhaWx1LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ImJleiBub3NhdWt1bWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iRGV0YWxpesSTdGEgaW5mb3JtxIFjaWphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IkVrcsSBbnV6xYbEk211bXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJFa3LEgW51esWGxJNtdW1zIGlyIHZlaWt0cyBzZWttxKtnaS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iTmV2YXLEk2phIHZlaWt0IGVrcsSBbnV6xYbEk211bXUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkvEvMWrZGFzIHDEgXJza2F0YSBpbmZvcm3EgWNpamEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IlNhxKtzaW7EgXRzIG5vc2F1a3VtcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iS29wc2F2aWxrdW1zIDHCoHJpbmRpxYbEgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRldGFsaXrEk3RzIGFwcmFrc3RzIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1rLXJNSy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCmluZGV4IDBmM2VkNWEuLjZlMjNhZDggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i0JjQt9Cy0LXRiNGC0LDQuCDQt9CwINCz0YDQtdGI0LrQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLQlNCw0YLQvtGC0LXQutCw0YLQsCDRgdC+INC40LfQstC10YjRgtCw0Zgg0LfQsCDQs9GA0LXRiNC60LAg0L3QtSDQvNC+0LbQtdGI0LUg0LTQsCDRgdC1INC/0YDQvtGH0LjRgtCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i0L3QtdC40LzQtdC90YPQstCw0L3QuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLQlNC10YLQsNC70LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i0KHQu9C40LrQsCDQvtC0INC10LrRgNCw0L3QvtGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i0KPRgdC/0LXRiNC90L4g0LUg0L3QsNC/0YDQsNCy0LXQvdCwINGB0LvQuNC60LAg0L7QtCDQtdC60YDQsNC90L7Rgi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L3QsNC/0YDQsNCy0Lgg0YHQu9C40LrQsCDQvtC0INC10LrRgNCw0L3QvtGCLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLQlNC10YLQsNC70Lgg0L3QsCDQuNC30LLQtdGI0YLQsNGY0L7RgiDQt9CwINCz0YDQtdGI0LrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i0JrRgNCw0YLQutC+INC40LzQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i0KDQtdC30LjQvNC1INCy0L4gMSDRgNC10LQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLQlNC10YLQsNC70LXQvSDQvtC/0LjRgSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbAppbmRleCAyOTBjMTBiLi43M2E0ZmZmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IuC0rOC0l+C1jSDgtLHgtL/gtKrgtY3gtKrgtYvgtbzgtJ/gtY3gtJ/gtYHgtJXgtb4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i4LSs4LSX4LWNIOC0seC0v+C0quC1jeC0quC1i+C1vOC0n+C1jeC0n+C1jSDgtKvgtK/gtb0g4LS14LS+4LSv4LS/4LSV4LWN4LSV4LS+4LSo4LS+4LSv4LS/4LSy4LWN4LSyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4LSq4LWH4LSw4LS/4LSy4LWN4LSy4LS+4LSk4LWN4LSk4LS14LW8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuC0teC0v+C0tuC0puC0vuC0guC0tuC0meC1jeC0meC1viI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgtLjgtY3igIzgtJXgtY3gtLDgtYDgtbvgtLfgtYvgtJ/gtY3gtJ/gtY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLgtLjgtY3gtJXgtY3gtLDgtYDgtbvgtLfgtYvgtJ/gtY3gtJ/gtY0g4LSO4LSf4LWB4LSk4LWN4LSk4LWBLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiLgtLjgtY3gtJXgtY3gtLDgtYDgtbvgtLfgtYvgtJ/gtY3gtJ/gtY0g4LSO4LSf4LWB4LSV4LWN4LSV4LS+4LW7IOC0leC0tOC0v+C0nuC1jeC0nuC0v+C0suC1jeC0si4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4LSs4LSX4LWNIOC0seC0v+C0quC1jeC0quC1i+C1vOC0n+C1jeC0n+C1jSDgtLXgtL/gtLbgtKbgtL7gtILgtLbgtJngtY3gtJngtb4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuC0ueC1jeC0sOC0uOC1jeC0tSDgtKjgtL7gtK7gtIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IuC0kuC0sOC1gSDgtLXgtLDgtL8g4LS44LSC4LSX4LWN4LSw4LS54LSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4LS14LS/4LS24LSm4LSu4LS+4LSvIOC0teC0v+C0teC0sOC0o+C0giI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1uLXJNTi9zdHJpbmdzLnhtbAppbmRleCA4ZjZhMmIwLi4xZjRiZTRhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1uLXJNTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1uLXJNTi9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+ItCT0Y3QvNGC0LvQuNC50L0g0YLRg9GF0LDQuSDRgtCw0LnQu9Cw0L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i0JDQu9C00LDQsNC90Ysg0YLQsNC50LvQsNC90LPQuNC50L0g0YTQsNC50LvRi9CzINGD0L3RiNC40LYg0YfQsNC00LDRhdCz0q/QuSDQsdCw0LnQvdCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i0L3RjdGAINCx0LDQudGF0LPSr9C5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+ItCU0Y3Qu9Cz0Y3RgNGN0L3Qs9Kv0LkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i0JTRjdC70LPRjdGG0LjQudC9INC30YPRgNCw0LMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLQlNGN0LvQs9GN0YbQuNC50L0g0LfRg9GA0LPQuNC50LMg0LDQvNC20LjQu9GC0YLQsNC5INCw0LLQu9Cw0LAuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+ItCU0Y3Qu9Cz0Y3RhtC40LnQvSDQt9GD0YDQsNCzINCw0LLQsNGFINCx0L7Qu9C+0LzQttCz0q/QuS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i0JDQu9C00LDQsNC90Ysg0LTRjdC70LPRjdGA0Y3QvdCz0q/QuSDRgtCw0LnQu9Cw0L0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+ItCR0L7Qs9C40L3QviDQvdGN0YAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEt0YAg0YjRg9Cz0LDQvNGL0L0g0YXRg9GA0LDQsNC90LPRg9C5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i0JTRjdC70LPRjdGA0Y3QvdCz0q/QuSDRgtCw0LnQu9Cx0LDRgCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1tci1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1yLXJJTi9zdHJpbmdzLnhtbAppbmRleCA0MGQ3YTljLi42YjA2Y2Y1IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1yLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW1yLXJJTi9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IuCkpuCli+CktyDgpIXgpLngpLXgpL7gpLIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i4KSm4KWL4KS3IOCkheCkueCkteCkvuCksiDgpKvgpL7gpIjgpLIg4KS14KS+4KSa4KSj4KWHIOCktuCkleCljeCkryDgpJ3gpL7gpLLgpYcg4KSo4KS+4KS54KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4KSF4KSo4KS+4KSu4KS/4KSkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuCkpOCkquCktuClgOCksiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgpLjgpY3gpJXgpY3gpLDgpYDgpKjgpLbgpYngpJ8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLgpLjgpY3gpJXgpY3gpLDgpYDgpKjgpLbgpYngpJ8g4KSv4KS24KS44KWN4KS14KWA4KSq4KSj4KWHIOCkmOClh+CkpOCksuCkvi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4KS44KWN4KSV4KWN4KSw4KWA4KSo4KS24KWJ4KSfIOCkmOClh+Cko+ClhyDgpLbgpJXgpY3gpK8g4KSd4KS+4KSy4KWHIOCkqOCkvuCkueClgC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4KSm4KWL4KS3IOCkheCkueCkteCkvuCksiDgpKTgpKrgpLbgpYDgpLIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuCksuCkmOClgSDgpKjgpL7gpLUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEt4KST4KSz4KWA4KSa4KS+IOCkuOCkvuCksOCkvuCkguCktiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IuCkpOCkquCktuClgOCksuCkteCkvuCksCDgpLXgpLDgpY3gpKPgpKgiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbXMtck1ZL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKaW5kZXggZGI4YjVkYy4uZTIyZjg4MCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJMYXBvcmFuIHBlcGlqYXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iRmFpbCBsYXBvcmFuIHBlcGlqYXQgdGlkYWsgZGFwYXQgZGliYWNhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4idGlkYWsgYmVybmFtYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJCdXRpcmFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlRhbmdrYXBhbiBza3JpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IlRhbmdrYXBhbiBza3JpbiBiZXJqYXlhIGRpYW1iaWwuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlRhbmdrYXBhbiBza3JpbiB0aWRhayBkYXBhdCBkaWFtYmlsLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJCdXRpcmFuIGxhcG9yYW4gcGVwaWphdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iTmFtYSBwZW5kZWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlJpbmdrYXNhbiAxIGJhcmlzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iUGVyaWhhbGFuIHRlcnBlcmluY2kiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1teS1yTU0vc3RyaW5ncy54bWwKaW5kZXggNzdjYTViZi4uNzI3Y2RjOSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1teS1yTU0vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1teS1yTU0vc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLhgIHhgLvhgK3hgK/hgLfhgJrhgL3hgIThgLrhgLjhgJnhgL7hgK8g4YCh4YCF4YCu4YCb4YCE4YC64YCB4YC24YCF4YCs4YCZ4YC74YCs4YC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuGAgeGAu+GAveGAkOGAuuGAmuGAveGAhOGAuuGAuOGAgeGAu+GAgOGAuiDhgKHhgIXhgK7hgJvhgIThgLrhgIHhgLbhgIXhgKzhgIDhgK3hgK8g4YCW4YCQ4YC64YGN4YCZ4YCb4YCV4YCrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4YCh4YCZ4YCK4YC64YCZ4YCy4YC3Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuGAoeGAnuGAseGAuOGAheGAreGAkOGAuuGAmeGAu+GArOGAuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLhgJnhgLvhgIDhgLrhgJThgL7hgKzhgJXhgLzhgIThgLog4YCc4YC74YC+4YCV4YC64YCQ4YCF4YC64YCV4YC84YCA4YC64YCV4YCv4YC2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i4YCZ4YC74YCA4YC64YCU4YC+4YCs4YCV4YC84YCE4YC6IOGAnOGAu+GAvuGAleGAuuGAkOGAheGAuuGAleGAvOGAgOGAuuGAleGAr+GAtuGAgOGAreGAryDhgKHhgLHhgKzhgIThgLrhgJnhgLzhgIThgLrhgIXhgL3hgKwg4YCb4YCt4YCv4YCA4YC64YCV4YC84YCu4YC44YCV4YC84YCu4YGLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuGAmeGAu+GAgOGAuuGAlOGAvuGArOGAleGAvOGAhOGAuiDhgJzhgLvhgL7hgJXhgLrhgJDhgIXhgLrhgJXhgLzhgIDhgLrhgJXhgK/hgLYg4YCZ4YCb4YCt4YCv4YCA4YC64YCU4YCt4YCv4YCE4YC64YCV4YCrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IuGAgeGAu+GAveGAkOGAuuGAmuGAveGAhOGAuuGAuOGAgeGAu+GAgOGAuuGAoeGAheGAruGAm+GAhOGAuuGAgeGAtuGAheGArCDhgKHhgJ7hgLHhgLjhgIXhgK3hgJDhgLrhgJnhgLvhgKzhgLgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuGAoeGAmeGAiuGAuuGAoeGAkOGAreGAr+GAgOGAseGArOGAgOGAuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i4YCc4YCt4YCv4YCE4YC64YC4IOGBgSDhgJzhgK3hgK/hgIThgLrhgLjhgKHhgIDhgLvhgInhgLrhgLjhgIHhgLvhgK/hgJXhgLoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLhgKHhgJ7hgLHhgLjhgIXhgK3hgJDhgLog4YCW4YCx4YCs4YC64YCV4YC84YCB4YC74YCA4YC6Ijwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbAppbmRleCAxNGE4NzNjLi5jNzcwMmVmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJGZWlscmFwcG9ydGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkZlaWxyYXBwb3J0ZmlsZW4ga3VubmUgaWtrZSBsZXNlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+InV0ZW4gbmF2biI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhbGplciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJTa2plcm1kdW1wIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iU2tqZXJtZHVtcGVuIGVyIHRhdHQuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlNramVybWR1bXBlbiBrdW5uZSBpa2tlIHRhcy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iRGV0YWxqZXIgb20gZmVpbHJhcHBvcnRlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iS2FsbGVuYXZuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJTYW1tZW5kcmFnIHDDpSDDqW4gbGluamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXRhbGplcnQgYmVza3JpdmVsc2UiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbmUtck5QL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1uZS1yTlAvc3RyaW5ncy54bWwKaW5kZXggMDNhZWYzYy4uNzMyZjM5OCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1uZS1yTlAvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1uZS1yTlAvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLgpKzgpJcg4KSw4KS/4KSq4KWL4KSw4KWN4KSf4KS54KSw4KWCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuCkrOCklyDgpLDgpL/gpKrgpYvgpLDgpY3gpJ8g4KSr4KS+4KSH4KSyIOCkquCkouCljeCkqCDgpLjgpJXgpL/gpI/gpKgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiIo4KSo4KS+4KSu4KS14KS/4KS54KWA4KSoKSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLgpLXgpL/gpLXgpLDgpKMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i4KS44KWN4KSV4KWN4KSw4KS/4KSo4KS24KSfIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i4KS44KWN4KSV4KWN4KSw4KS/4KSo4KS24KSfIOCkuOCkq+CksuCkpOCkvuCkquClguCksOCljeCkteCklSDgpLLgpL/gpIfgpK/gpYvgpaQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i4KS44KWN4KSV4KWN4KSw4KS/4KSo4KS24KSfIOCksuCkv+CkqCDgpLjgpJXgpL/gpI/gpKjgpaQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4KSs4KSXIOCksOCkv+CkquCli+CksOCljeCkn+CkleCliyDgpLXgpL/gpLXgpLDgpKMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuCkm+Cli+Ckn+CliyDgpKjgpL7gpK4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IuClpyDgpLLgpL7gpIfgpKjgpJXgpYsg4KS44KS+4KSw4KS+4KSC4KS2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4KS14KS/4KS44KWN4KSk4KWD4KSkIOCkteCkv+CkteCksOCkoyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKaW5kZXggOWJmY2U5NC4uMDM3OGNhNCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iRm91dGVucmFwcG9ydGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkJlc3RhbmQgbWV0IGJ1Z3JhcHBvcnQga2FuIG5pZXQgd29yZGVuIGdlbGV6ZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJuYWFtbG9vcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhaWxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlNjcmVlbnNob3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJTY3JlZW5zaG90IGlzIGdlbWFha3QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlNjcmVlbnNob3Qga2FuIG5pZXQgd29yZGVuIGdlbWFha3QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IkRldGFpbHMgdmFuIGJ1Z3JhcHBvcnQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IktvcnRlIG5hYW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlNhbWVudmF0dGluZyB2YW4gw6nDqW4gcmVnZWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJHZWRldGFpbGxlZXJkZSBiZXNjaHJpanZpbmciPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKaW5kZXggY2Y2ZGYxNy4uNzIwYmRlMCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLgqKzgqJcg4Kiw4Ki/4Kiq4KmL4Kiw4Kif4Ki+4KiCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuCorOColyDgqLDgqL/gqKrgqYvgqLDgqJ8g4Kir4Ki84Ki+4KiI4KiyIOCoquCpnOCpjeCoueCpgCDgqKjgqLngqYDgqIIg4Kic4Ki+IOCouOColeCpgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+IuCorOCov+CoqOCovuCogi3gqKjgqL7gqK4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i4Ki14KmH4Kiw4Ki14KmHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IuCouOColeCpjeCosOCpgOCoqOCouOCovOCovuConyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuCouOColeCpjeCosOCpgOCoqOCouOCovOCovuConyDgqLjgqKvgqLLgqKTgqL7gqKrgqYLgqLDgqLXgqJUg4Kiy4Ki/4KiGIOCol+Cov+CohuClpCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiLgqLjgqJXgqY3gqLDgqYDgqKjgqLjgqLzgqL7gqJ8g4Kio4Ki54KmA4KiCIOCosuCov+CohiDgqJzgqL4g4Ki44KiV4Ki/4KiG4KWkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IuCorOCpseColyDgqLDgqL/gqKrgqYvgqLDgqJ8g4Ki14KmH4Kiw4Ki14KmHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLgqJvgqYvgqJ/gqL4g4Kio4Ki+4KiuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxLeCosuCovuCoiOCoqCDgqLjgqL7gqLDgqL7gqILgqLjgqLwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLgqLXgqL/gqLjgqKXgqL7gqLAg4Ki44Ki54Ki/4KikIOCoteCosOCoo+CoqCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKaW5kZXggMGM4YTZiNC4uZDY3MTVhNSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iUmFwb3J0eSBvIGLFgsSZZGFjaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJOaWUgbW/FvG5hIG9kY3p5dGHEhyByYXBvcnR1IG8gYsWCxJlkemllIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iYmV6IG5hend5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IlN6Y3plZ8OzxYJ5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlpyenV0IGVrcmFudSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+Ilpyb2Jpb25vIHpyenV0IGVrcmFudS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iTmllIHVkYcWCbyBzacSZIHpyb2JpxIcgenJ6dXR1IGVrcmFudS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iU3pjemVnw7PFgnkgemfFgm9zemVuaWEgYsWCxJlkdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iS3LDs3RrYSBuYXp3YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iSmVkbm93aWVyc3pvd2UgcG9kc3Vtb3dhbmllIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iU3pjemVnw7PFgm93eSBvcGlzIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXB0LXJCUi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCmluZGV4IGIxOTRlY2MuLmZiMTZkZDggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcHQtckJSL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iUmVsYXTDs3Jpb3MgZGUgYnVncyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJOw6NvIGZvaSBwb3Nzw612ZWwgbGVyIG8gYXJxdWl2byBkZSByZWxhdMOzcmlvIGRlIGJ1ZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+InNlbSBub21lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFsaGVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IkNhcHR1cmFzIGRlIHRlbGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJDYXB0dXJhIGRlIHRlbGEgY29uY2x1w61kYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iTsOjbyBmb2kgcG9zc8OtdmVsIGZhemVyIGEgY2FwdHVyYSBkZSB0ZWxhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhbGhlcyBkbyByZWxhdMOzcmlvIGRvIGJ1ZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iQXBlbGlkbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iUmVzdW1vIGRlIHVtYSBsaW5oYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkRlc2NyacOnw6NvIGRldGFsaGFkYSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbAppbmRleCA3NTc1MzhjLi4wN2QzMTllIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlJlbGF0w7NyaW9zIGRlIGVycm9zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+Ik7Do28gZm9pIHBvc3PDrXZlbCBsZXIgbyBmaWNoZWlybyBkZSByZWxhdMOzcmlvIGRlIGVycm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJzZW0gbm9tZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhbGhlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJDYXB0dXJhIGRlIGVjcsOjIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iQ2FwdHVyYSBkZSBlY3LDoyB0aXJhZGEgY29tIMOqeGl0by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iTsOjbyBmb2kgcG9zc8OtdmVsIHRpcmFyIGEgY2FwdHVyYSBkZSBlY3LDoy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iRGV0YWxoZXMgZG8gcmVsYXTDs3JpbyBkZSBlcnJvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJOb21lIGFicmV2aWFkbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iUmVzdW1vIGRlIDEgbGluaGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXNjcmnDp8OjbyBkZXRhbGhhZGEiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCmluZGV4IGIxOTRlY2MuLmZiMTZkZDggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlJlbGF0w7NyaW9zIGRlIGJ1Z3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iTsOjbyBmb2kgcG9zc8OtdmVsIGxlciBvIGFycXVpdm8gZGUgcmVsYXTDs3JpbyBkZSBidWciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJzZW0gbm9tZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhbGhlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJDYXB0dXJhcyBkZSB0ZWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iQ2FwdHVyYSBkZSB0ZWxhIGNvbmNsdcOtZGEuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+Ik7Do28gZm9pIHBvc3PDrXZlbCBmYXplciBhIGNhcHR1cmEgZGUgdGVsYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iRGV0YWxoZXMgZG8gcmVsYXTDs3JpbyBkbyBidWciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IkFwZWxpZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlJlc3VtbyBkZSB1bWEgbGluaGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXNjcmnDp8OjbyBkZXRhbGhhZGEiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sCmluZGV4IDEzMmYyMWYuLjA2NGRmYWYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlJhcG9hcnRlIGRlIGVyb3JpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkZpyJlpZXJ1bCBjdSByYXBvcnR1bCBkZSBlcm9hcmUgbnUgYSBwdXR1dCBmaSBjaXRpdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ImbEg3LEgyBudW1lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkRldGFsaWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iQ2FwdHVyxIMgZGUgZWNyYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJDYXB0dXJhIGRlIGVjcmFuIGEgZm9zdCBmxINjdXTEgy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iQ2FwdHVyYSBkZSBlY3JhbiBudSBhIHB1dHV0IGZpIGbEg2N1dMSDLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhbGlpIHByaXZpbmQgcmFwb3J0dWwgZGUgZXJvYXJlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJOdW1lIHNjdXJ0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJSZXp1bWF0IGRlIHVuIHLDom5kIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGVzY3JpZXJlIGRldGFsaWF0xIMiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCmluZGV4IDVkYzU5NTMuLjMzNTA3NDAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+ItCe0YLRh9C10YLRiyDQvtCxINC+0YjQuNCx0LrQsNGFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC60YDRi9GC0Ywg0L7RgtGH0LXRgiDQvtCxINC+0YjQuNCx0LrQtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ItCx0LXQtyDQvdCw0LfQstCw0L3QuNGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+ItCU0LXRgtCw0LvQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLQodC60YDQuNC90YjQvtGC0YsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLQodC60YDQuNC90YjQvtGCINCz0L7RgtC+0LIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i0J3QtSDRg9C00LDQu9C+0YHRjCDRgdC00LXQu9Cw0YLRjCDRgdC60YDQuNC90YjQvtGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+ItCU0LXRgtCw0LvQuCDQvtGC0YfQtdGC0LAg0L7QsSDQvtGI0LjQsdC60LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+ItCa0YDQsNGC0LrQvtC1INC90LDQt9Cy0LDQvdC40LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+ItCa0YDQsNGC0LrQvtC1INC+0L/QuNGB0LDQvdC40LUg0L7RiNC40LHQutC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i0J/QvtC00YDQvtCx0L3QvtC1INC+0L/QuNGB0LDQvdC40LUiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc2ktckxLL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwKaW5kZXggYzg0NmY4Ny4uZDkxNTEwOSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLgtq/gt53gt4Ig4LeA4LeP4La74LeK4Lat4LePIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuC2r+C3neC3giDgt4Dgt4/gtrvgt4rgtq3gt48g4Lac4Lec4Lax4LeU4LeAIOC2muC3kuC2uuC3gOC3k+C2uOC2pyDgtrHgt5zgt4Tgt5Dgtprgt5Ig4LeA4LeS4La6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4Lax4La44LeKIOC2seC3nOC2muC3hSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLgt4Dgt5Lgt4Pgt4rgtq3gtrsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i4Lat4LeS4La7IOC2u+C3lOC3gCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuC3g+C3j+C2u+C3iuC2ruC2muC3gCDgtq3gt5Lgtrsg4La74LeU4LeA4Laa4LeKIOC2nOC2seC3iuC2seC3jyDgtr3gtq/gt5MuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuC2reC3kuC2uyDgtrvgt5Tgt4Dgtprgt4og4Lac4LatIOC2seC3nOC3hOC3kOC2muC3kiDgt4Dgt5LgtrouIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IuC2r+C3neC3giDgt4Dgt4/gtrvgt4rgtq3gt48g4LeA4LeS4LeD4LeK4Lat4La7Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLgtprgt5ngtqfgt5Ig4Lax4La4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLgtrTgt5rgt4Xgt5ItMSDgt4Pgt4/gtrvgt4/gtoLgt4HgtroiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLgt4Pgt4Dgt5Lgt4Pgt4rgtq3gtrsg4LeA4LeS4LeD4LeK4Lat4La74La6Ijwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbAppbmRleCBiMzk1ZDFhLi5lYzkwMDNkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJIbMOhc2VuaWEgY2jDvWIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iU8O6Ym9yIHPCoGhsw6FzZW7DrW0gY2h5Ynkgc2EgbmVwb2RhcmlsbyBwcmXEjcOtdGHFpSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ImJleiBuw6F6dnUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iUG9kcm9ibm9zdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU27DrW1rYSBvYnJhem92a3kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiJTbsOtbWthIG9icmF6b3ZreSBib2xhIHphem5hbWVuYW7DoS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iU27DrW1rdSBvYnJhem92a3kgc2EgbmVwb2RhcmlsbyB6YXpuYW1lbmHFpS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iUG9kcm9ibm9zdGkgaGzDoXNlbmlhIGNoeWJ5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiJTa3LDoXRlbsO9IG7DoXpvdiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iSmVkbm9yaWFka292w6kgemhybnV0aWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJQb2Ryb2Juw70gcG9waXMiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sCmluZGV4IDkxMDQxZTEuLmFhNjZjZTkgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlBvcm/EjWlsYSBvIG5hcGFrYWgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iRGF0b3Rla2UgcyBwb3JvxI1pbG9tIG8gbmFwYWthaCBuaSBiaWxvIG1vZ2/EjWUgcHJlYnJhdGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJuZWltZW5vdmFubyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJQb2Ryb2Jub3N0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJQb3NuZXRlayB6YXNsb25hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iUG9zbmV0ZWsgemFzbG9uIGplIGJpbCB1c3BlxaFubyB1c3R2YXJqZW4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IlBvc25ldGthIHphc2xvbiBuaSBiaWxvIG1vZ2/EjWUgdXN0dmFyaXRpLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJQb2Ryb2Jub3N0aSBvIHBvcm/EjWlsdSBvIG5hcGFrYWgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IkltZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iRW5vdnJzdGnEjW5pIHBvdnpldGVrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iUG9kcm9iZW4gb3BpcyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zcS1yQUwvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNxLXJBTC9zdHJpbmdzLnhtbAppbmRleCBlOTFhYTA5Li5kZDEzZjM0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNxLXJBTC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNxLXJBTC9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IlJhcG9ydGV0IGUgZ2FiaW1ldmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iU2tlZGFyaSBpIHJhcG9ydGltaXQgdMOrIGRlZmVrdGl0IG7DqyBrb2QgbnVrIG11bmQgdMOrIGxleG9oZWouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iZSBwYWVtw6tydHVhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJEZXRhamV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlBhbWphIGUgZWtyYW5pdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IlBhbWphIGUgZWtyYW5pdCB1IHJlYWxpenVhIG1lIHN1a3Nlcy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iUGFtamEgZSBla3Jhbml0IG51ayBtdW5kIHTDqyByZWFsaXpvaGVqLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJEZXRhamV0IGUgcmFwb3J0aW1pdCB0w6sgZ2FiaW1ldmUgbsOrIGtvZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iRW1yaSBzaGt1cnQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlDDq3JtYmxlZGhqZSBtZSAxIHJyZXNodCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IlDDq3JzaGtyaW1pIGkgZGV0YWp1YXIiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1sCmluZGV4IDFiZTQ3ZGEuLjFkYTdlY2IgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+ItCY0LfQstC10YjRgtCw0ZjQuCDQviDQs9GA0LXRiNC60LDQvNCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+ItCU0LDRgtC+0YLQtdC60LAg0LjQt9Cy0LXRiNGC0LDRmNCwINC+INCz0YDQtdGI0YbQuCDQvdC1INC80L7QttC1INC00LAg0YHQtSDQv9GA0L7Rh9C40YLQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+ItC90LXQuNC80LXQvdC+0LLQsNC90L4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i0JTQtdGC0LDRmdC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+ItCh0L3QuNC80YbQuCDQtdC60YDQsNC90LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLQodC90LjQvNCw0ZrQtSDQtdC60YDQsNC90LAg0ZjQtSDRg9GB0L/QtdC70L4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+ItCh0L3QuNC80LDRmtC1INC10LrRgNCw0L3QsCDQvdC40ZjQtSDRg9GB0L/QtdC70L4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+ItCU0LXRgtCw0ZnQuCDQuNC30LLQtdGI0YLQsNGY0LAg0L4g0LPRgNC10YjRhtC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLQmtGA0LDRgtC60Lgg0L3QsNC30LjQsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i0KDQtdC30LjQvNC1INGDINGY0LXQtNC90L7QvCDRgNC10LTRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+ItCU0LXRgtCw0ZnQvdC4INC+0L/QuNGBIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zdi9zdHJpbmdzLnhtbAppbmRleCA5ZjViNWYwLi44YWZhMGE1IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJGZWxyYXBwb3J0ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iRGV0IGdpY2sgaW50ZSBhdHQgbMOkc2EgZmVscmFwcG9ydGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4ibmFtbmzDtnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iSW5mb3JtYXRpb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2vDpHJtZHVtcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IkVuIHNrw6RybWR1bXAgaGFyIHRhZ2l0cy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iRGV0IGdpY2sgaW50ZSBhdHQgdGEgc2tyw6RtZHVtcC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iSW5mb3JtYXRpb24gZsO2ciBmZWxyYXBwb3J0ZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IktvcnRuYW1uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJTYW1tYW5mYXR0bmluZyBww6UgZW4gcmFkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4iRGV0YWxqZXJhZCBiZXNrcml2bmluZyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwKaW5kZXggNDIyY2E4MS4uNWI3MDI2MiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iUmlwb3RpIHphIGhpdGlsYWZ1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IkZhaWxpIHlhIHJpcG90aSB5YSBoaXRpbGFmdSBoYWlrdXNvbXdhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iSXNpeW8gbmEgamluYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJNYWVsZXpvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IlBpY2hhIHlhIHNrcmluaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IkltZXBpZ2EgcGljaGEgeWEgc2tyaW5pLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiJIYWlrdXBpZ2EgcGljaGEgeWEgc2tyaW5pLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJNYWVsZXpvIGt1aHVzdSByaXBvdGkgeWEgaGl0aWxhZnUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IkppbmEgZnVwaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iTXVodGFzYXJpIHdhIG1zdGFyaSBtbW9qYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+Ik1hZWxlem8geWEga2luYSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy10YS1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRhLXJJTi9zdHJpbmdzLnhtbAppbmRleCAzMWRhZjU0Li45MWViNzE4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRhLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRhLXJJTi9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IuCuquCuv+CutOCviCDgroXgrrHgrr/grpXgr43grpXgr4jgrpXgrrPgr40iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i4K6q4K6/4K604K+IIOCuheCuseCuv+CuleCvjeCuleCviOCur+CviOCuquCvjSDgrqrgrp/grr/grpXgr43grpUg4K6u4K+B4K6f4K6/4K6v4K614K6/4K6y4K+N4K6y4K+IIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4K6q4K+G4K6v4K6w4K6/4K6f4K6q4K+N4K6q4K6f4K6+4K6k4K6k4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IuCuteCuv+CuteCusOCumeCvjeCuleCus+CvjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLgrrjgr43grpXgrr/grrDgr4Dgrqngr40g4K634K6+4K6f4K+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i4K644K+N4K6V4K6/4K6w4K+A4K6p4K+NIOCut+CuvuCun+CvjSDgro7grp/gr4HgrpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuCuuOCvjeCuleCuv+CusOCvgOCuqeCvjSDgrrfgrr7grp/gr43grp/gr4gg4K6O4K6f4K+B4K6V4K+N4K6VIOCuruCvgeCun+Cuv+Cur+CuteCuv+CusuCvjeCusuCviC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i4K6q4K6/4K604K+IIOCuheCuseCuv+CuleCvjeCuleCviCDgrrXgrr/grrXgrrDgrpngr43grpXgrrPgr40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuCumuCvgeCusOCvgeCuleCvjeCuleCuquCvjSDgrqrgr4bgrq/grrDgr40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IuCumuCvgeCusOCvgeCuleCvjeCuleCuteCuv+CuteCusOCuruCvjSAo4K6S4K6w4K+BIOCuteCusOCuv+Cur+Cuv+CusuCvjSkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLgrrXgrr/grrDgrr/grrXgrr7grqkg4K614K6/4K6z4K6V4K+N4K6V4K6u4K+NIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRlLXJJTi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdGUtcklOL3N0cmluZ3MueG1sCmluZGV4IDM0YWI2ZjIuLjUxN2RkNWUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdGUtcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdGUtcklOL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i4LCs4LCX4LGNIOCwqOCwv+CwteCxh+CwpuCwv+CwleCwsuCxgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLgsKzgsJfgsY0g4LCo4LC/4LC14LGH4LCm4LC/4LCVIOCwq+CxiOCwsuCxjeKAjOCwqOCxgSDgsJrgsKbgsLXgsKHgsIIg4LC44LC+4LCn4LGN4LCv4LCq4LCh4LCy4LGH4LCm4LGBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i4LCq4LGH4LCw4LGBIOCwsuCxh+CwqOCwv+CwteCwvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLgsLXgsL/gsLXgsLDgsL7gsLLgsYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i4LC44LGN4LCV4LGN4LCw4LGA4LCo4LGN4oCM4LC34LC+4LCf4LGNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i4LC44LGN4LCV4LGN4LCw4LGA4LCo4LGN4oCM4LC34LC+4LCf4LGNIOCwteCwv+CwnOCwr+CwteCwguCwpOCwguCwl+CwviDgsKTgsYDgsK/gsKzgsKHgsL/gsILgsKbgsL8uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuCwuOCxjeCwleCxjeCwsOCxgOCwqOCxjeKAjOCwt+CwvuCwn+CxjeKAjOCwqOCxgSDgsKTgsYDgsK/gsKHgsIIg4LC44LC+4LCn4LGN4LCv4LCq4LCh4LCy4LGH4LCm4LGBLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLgsKzgsJfgsY0g4LCo4LC/4LC14LGH4LCm4LC/4LCVIOCwteCwv+CwteCwsOCwvuCwsuCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i4LCa4LC/4LCo4LGN4LCoIOCwquCxh+CwsOCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iMS3gsKrgsILgsJXgsY3gsKTgsL8g4LC44LC+4LCw4LC+4LCC4LC24LCCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4LC44LCu4LCX4LGN4LCwIOCwteCwv+CwteCwsOCwoyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKaW5kZXggMmQ5YTY1ZS4uYjczNDA5NSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i4Lij4Liy4Lii4LiH4Liy4LiZ4LiC4LmJ4Lit4Lia4LiB4Lie4Lij4LmI4Lit4LiHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuC5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4reC5iOC4suC4meC5hOC4n+C4peC5jOC4o+C4suC4ouC4h+C4suC4meC4guC5ieC4reC4muC4geC4nuC4o+C5iOC4reC4hyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+IuC5hOC4oeC5iOC4oeC4teC4iuC4t+C5iOC4rSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLguKPguLLguKLguKXguLDguYDguK3guLXguKLguJQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i4Lig4Liy4Lie4Lir4LiZ4LmJ4Liy4LiI4LitIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i4LiI4Lix4Lia4Lig4Liy4Lie4Lir4LiZ4LmJ4Liy4LiI4Lit4Liq4Liz4LmA4Lij4LmH4LiI4LmB4Lil4LmJ4LinIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuC5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4iOC4seC4muC4oOC4suC4nuC4q+C4meC5ieC4suC4iOC4reC5hOC4lOC5iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLguKPguLLguKLguKXguLDguYDguK3guLXguKLguJTguKPguLLguKLguIfguLLguJnguILguYnguK3guJrguIHguJ7guKPguYjguK3guIciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IuC4iuC4t+C5iOC4reC4ouC5iOC4rSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i4Liq4Lij4Li44LibIDEg4Lia4Lij4Lij4LiX4Lix4LiUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i4LiE4Liz4Lit4LiY4Li04Lia4Liy4Lii4LmC4LiU4Lii4Lil4Liw4LmA4Lit4Li14Lii4LiUIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbAppbmRleCA4ZmVhZDhmLi5iY2NlMWRiIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJNZ2EgdWxhdCBzYSBidWciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iSGluZGkgbWFiYXNhIGFuZyBmaWxlIG5nIHBhZy11dWxhdCBuZyBidWciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJ3YWxhbmcgcGFuZ2FsYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iTWdhIERldGFseWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2NyZWVuc2hvdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+Ik5ha3VuYW4gbmcgc2NyZWVuc2hvdC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iSGluZGkgbWFrdW5hbiBuZyBzY3JlZW5zaG90LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJNZ2EgZGV0YWx5ZSBuZyB1bGF0IG5nIGJ1ZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iTWFpa2xpbmcgcGFuZ2FsYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IkJ1b2QgbmEgbWF5IDEgbGlueWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJEZXRhbHlhZG9uZyBwYWdsYWxhcmF3YW4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sCmluZGV4IGUxZDMwY2MuLmUxZmRmMTAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IkhhdGEgcmFwb3JsYXLEsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiJIYXRhIHJhcG9ydSBkb3N5YXPEsSBva3VuYW1hZMSxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iYWRzxLF6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkF5csSxbnTEsWxhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiJFa3JhbiBnw7Zyw7xudMO8c8O8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iRWtyYW4gZ8O2csO8bnTDvHPDvCBiYcWfYXLEsXlsYSBhbMSxbmTEsS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iRWtyYW4gZ8O2csO8bnTDvHPDvCBhbMSxbmFtYWTEsS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iSGF0YSByYXBvcnUgYXlyxLFudMSxbGFyxLEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IkvEsXNhIGFkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiIxIHNhdMSxcmzEsWsgw7Z6ZXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJBeXLEsW50xLFsxLEgYcOnxLFrbGFtYSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwKaW5kZXggZjEzOTZjYi4uZGQ0M2M0YyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i0JfQstGW0YLQuCDQv9GA0L4g0L/QvtC80LjQu9C60LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i0J3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0LfQstGW0YIg0L/RgNC+INC/0L7QvNC40LvQutC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i0LHQtdC3INC90LDQt9Cy0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i0JTQtdGC0LDQu9GWIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+ItCX0L3RltC80L7QuiDQtdC60YDQsNC90LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLQl9C90ZbQvNC+0Log0LXQutGA0LDQvdCwINC30YDQvtCx0LvQtdC90L4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+ItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LfRgNC+0LHQuNGC0Lgg0LfQvdGW0LzQvtC6INC10LrRgNCw0L3QsC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i0JTQtdGC0LDQu9GWINC/0L7QstGW0LTQvtC80LvQtdC90L3RjyDQv9GA0L4g0L/QvtC80LjQu9C60YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+ItCa0L7RgNC+0YLQutCwINC90LDQt9Cy0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+ItCf0ZbQtNGB0YPQvNC+0Log0L7QtNC90LjQvCDRgNGP0LTQutC+0LwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLQlNC10YLQsNC70YzQvdC40Lkg0L7Qv9C40YEiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdXItclBLL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ci1yUEsvc3RyaW5ncy54bWwKaW5kZXggNDEyZDIzMC4uYjk3YzhiNSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ci1yUEsvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ci1yUEsvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLYqNqvINix2b7ZiNix2bnYsyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLYqNqvINix2b7ZiNix2bkg2YHYp9im2YQg2b7akdq+24wg2YbbgduM2rog2KzYpyDYs9qp24wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiLYqNi624zYsSDZhtin2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i2KrZgdi124zZhNin2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i2KfYs9qp2LHbjNmGINi02KfZuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+Itin2LPaqdix24zZhiDYtNin2bkg2qnYp9mF24zYp9io24wg2LPbkiDZhNuSINmE24zYpyDar9uM2KfblCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiLYs9qp2LHbjNmGINi02KfZuSDZhtuB24zauiDZhNuM2Kcg2KzYpyDYs9qp2KfblCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLYqNqvINix2b7ZiNix2bkg2qnbjCDYqtmB2LXbjNmE2KfYqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i2YXYrtiq2LXYsSDZhtin2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IjEg2YTYp9im2YYg2qnYpyDYrtmE2KfYtduBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGVzY3JpcHRpb24iIG1zZ2lkPSI0MTE3MDg4OTk4NzMzNTQ2Nzg0Ij4i2KrZgdi124zZhNuMINmI2LbYp9it2KoiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdXotclVaL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKaW5kZXggY2E0NmQyYS4uMjc5Yzg3NiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJYYXRvbGlrbGFyIGhpc29ib3RpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IlhhdG9saWtsYXIgaGlzb2JvdGkgZmF5bGluaSBv4oCYcWliIGJv4oCYbG1hZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJub21zaXoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4iVGFmc2lsb3RsYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iU2tyaW5zaG90Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4iU2tyaW5zaG90IHRheXlvci4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iU2tyaW5zaG90IG9saWIgYm/igJhsbWFkaS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iWGF0b2xpa2xhciBoaXNvYm90aSB0YWZzaWxvdGxhcmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IlFpc3FhIG5vbWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IlhhdG9saWtuaW5nIHFpc3FhY2hhIHRh4oCZcmlmaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkJhdGFmc2lsIHRh4oCZcmlmIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy12aS9zdHJpbmdzLnhtbAppbmRleCBlYzQzNjRlLi40ZTFlYmM3IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiJCw6FvIGPDoW8gbOG7l2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4iS2jDtG5nIHRo4buDIMSR4buNYyB04buHcCBiw6FvIGPDoW8gbOG7l2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiJjaMawYSDEkcaw4bujYyDEkeG6t3QgdMOqbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiJDaGkgdGnhur90Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IuG6om5oIGNo4bulcCBtw6BuIGjDrG5oIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4ixJDDoyBjaOG7pXAg4bqjbmggbcOgbiBow6xuaCB0aMOgbmggY8O0bmcuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+Iktow7RuZyB0aOG7gyBjaOG7pXAg4bqjbmggbcOgbiBow6xuaC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4iQ2hpIHRp4bq/dCBiw6FvIGPDoW8gbOG7l2kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IlTDqm4gbmfhuq9uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiJUw7NtIHThuq90IDEgZMOybmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiJNw7QgdOG6oyBjaGkgdGnhur90Ijwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCmluZGV4IDVhOGU1ZjcuLmI1YmE3YTkgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4i6ZSZ6K+v5oql5ZGKIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IuaXoOazleivu+WPlumUmeivr+aKpeWRiuaWh+S7tiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bm5hbWVkIiBtc2dpZD0iMjgwMDU4MjQwNjg0MjA5MjcwOSI+IuacquWRveWQjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiIgbXNnaWQ9IjIxNTgyMDQyMjg1MTA1NzYyMjciPiLor6bnu4bkv6Hmga8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4i5bGP5bmV5oiq5Zu+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iIG1zZ2lkPSI3MTc1MzQzMTgxNzY3NDI5MDg4Ij4i5bey5oiQ5Yqf5oiq5Zu+44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkIiBtc2dpZD0iNTg1MzA0OTE0MDgwNjgzNDYwMSI+IuaXoOazleaIquWbvuOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiLplJnor6/miqXlkYror6bnu4bkv6Hmga8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19uYW1lIiBtc2dpZD0iNTA4OTE5MTgzMjI3MTg1MjgyNiI+IueugOensCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4i566A55+t5pGY6KaB77yIMSDooYzvvIkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kZXNjcmlwdGlvbiIgbXNnaWQ9IjQxMTcwODg5OTg3MzM1NDY3ODQiPiLor6bnu4bor7TmmI4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWwKaW5kZXggN2U1N2NjNC4uODk2YTkyMCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWwKQEAgLTI2LDQgKzI2LDEyIEBACiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjUzMzI0ODgxNDQ3NDA1MjcxMDkiPiLpjK/oqqTloLHlkYoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0IiBtc2dpZD0iNTg2NTE3ODUxMDQ0NTM1NDg2Ij4i54Sh5rOV6K6A5Y+W6Yyv6Kqk5aCx5ZGK5qqU5qGIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4i5pyq5ZG95ZCNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+Iuips+e0sOizh+ioiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2FjdGlvbiIgbXNnaWQ9Ijg2Nzc3ODE3MjE5NDA2MTQ5OTUiPiLonqLluZXmk7flj5bnlavpnaIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF90YWtlbiIgbXNnaWQ9IjcxNzUzNDMxODE3Njc0MjkwODgiPiLmiJDlip/mi43mlJ3onqLluZXmk7flj5bnlavpnaLjgIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4i54Sh5rOV5pO35Y+W6J6i5bmV55Wr6Z2i44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fZGlhbG9nX3RpdGxlIiBtc2dpZD0iMzExMzU0OTgzOTc5ODU2NDY0NSI+IumMr+iqpOWgseWRiuips+aDhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4i57Ch56ixIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fdGl0bGUiIG1zZ2lkPSIxMjcxNjc4NTMzNzA1NTcxNzUiPiLnsKHnn63mkZjopoEgKDEg6KGMKSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+Iuips+e0sOiqquaYjiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbAppbmRleCBlNDk1ZDRhLi4yYmRmNTYxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbApAQCAtMjYsNCArMjYsMTIgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTMzMjQ4ODE0NDc0MDUyNzEwOSI+IumMr+iqpOWgseWRiiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF91bnJlYWRhYmxlX3RleHQiIG1zZ2lkPSI1ODY1MTc4NTEwNDQ1MzU0ODYiPiLnhKHms5XoroDlj5bpjK/oqqTloLHlkYrmqpTmoYgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfdW5uYW1lZCIgbXNnaWQ9IjI4MDA1ODI0MDY4NDIwOTI3MDkiPiLmnKrlkb3lkI0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iIG1zZ2lkPSIyMTU4MjA0MjI4NTEwNTc2MjI3Ij4i6Kmz57Sw6LOH5paZIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIiBtc2dpZD0iODY3Nzc4MTcyMTk0MDYxNDk5NSI+IuieouW5leaTt+WPlueVq+mdoiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IuW3suaIkOWKn+aLjeaUneieouW5leaTt+WPlueVq+mdouOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X2ZhaWxlZCIgbXNnaWQ9IjU4NTMwNDkxNDA4MDY4MzQ2MDEiPiLnhKHms5Xmi43mlJ3onqLluZXmk7flj5bnlavpnaLjgIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19kaWFsb2dfdGl0bGUiIG1zZ2lkPSIzMTEzNTQ5ODM5Nzk4NTY0NjQ1Ij4i6Yyv6Kqk5aCx5ZGK6Kmz57Sw6LOH5paZIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fbmFtZSIgbXNnaWQ9IjUwODkxOTE4MzIyNzE4NTI4MjYiPiLnsKHnqLEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb190aXRsZSIgbXNnaWQ9IjEyNzE2Nzg1MzM3MDU1NzE3NSI+IuewoeefreaRmOimgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+Iuips+e0sOiqquaYjiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWwKaW5kZXggOTFmMjk1MS4uNjUyMTA1YSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCkBAIC0yNiw0ICsyNiwxMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1MzMyNDg4MTQ0NzQwNTI3MTA5Ij4iSW1pYmlrbyB5ZXppcGhhemFtaXNvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCIgbXNnaWQ9IjU4NjUxNzg1MTA0NDUzNTQ4NiI+IklmYXllbGEgbG9tYmlrbyB3ZXNpcGhhemFtc28gYWxpa3dhemFuZ2EgdWt1ZnVuZHdhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3VubmFtZWQiIG1zZ2lkPSIyODAwNTgyNDA2ODQyMDkyNzA5Ij4iYXd1bmlraXdlIGlnYW1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X2luZm9fYWN0aW9uIiBtc2dpZD0iMjE1ODIwNDIyODUxMDU3NjIyNyI+IkltaW5pbmluZ3dhbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9hY3Rpb24iIG1zZ2lkPSI4Njc3NzgxNzIxOTQwNjE0OTk1Ij4iSXNpdGhvbWJlLXNrcmluaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9zY3JlZW5zaG90X3Rha2VuIiBtc2dpZD0iNzE3NTM0MzE4MTc2NzQyOTA4OCI+IklzaXRob21iZS1za3Jpbmkgc2l0aGF0aHdlIG5nZW1wdW1lbGVsby4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiIG1zZ2lkPSI1ODUzMDQ5MTQwODA2ODM0NjAxIj4iSXNpdGhvbWJlLXNrcmluaSBhc2lrd2F6YW5nYSB1a3V0aGF0aHdhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSIgbXNnaWQ9IjMxMTM1NDk4Mzk3OTg1NjQ2NDUiPiJJbWluaW5pbmd3YW5lIHlvbWJpa28gd2VzaXBoYXphbWlzaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX25hbWUiIG1zZ2lkPSI1MDg5MTkxODMyMjcxODUyODI2Ij4iSWdhbWEgZWxpZmlzaGFuZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX3RpdGxlIiBtc2dpZD0iMTI3MTY3ODUzMzcwNTU3MTc1Ij4iSXNpZmlueWV6byBzb211Z3FhIG9uZ3UtMSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2Rlc2NyaXB0aW9uIiBtc2dpZD0iNDExNzA4ODk5ODczMzU0Njc4NCI+IkluY2F6ZWxvIGVuZW1pbmluaW5nd2FuZSI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1NoZWxsL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKaW5kZXggYTdmMmRmNS4uZGNkNWYwNCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU2hlbGwvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TaGVsbC9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCkBAIC00NSw2ICs0NSwxNCBAQAogICAgIDwhLS0gVGl0bGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBhY3Rpb24gdGhhdCBvcGVucyB0aGUgZGlhbG9nIGZvciB0aGUgdXNlci1kZWZpbmVkIGJ1ZyByZXBvcnQgZGV0YWlscy4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfaW5mb19hY3Rpb24iPkRldGFpbHM8L3N0cmluZz4KIAorICAgIDwhLS0gVGl0bGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBhY3Rpb24gdGhhdCB0YWtlcyBhZGl0aW9uYWwgc2NyZWVuc2hvdHMuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uIj5TY3JlZW5zaG90PC9zdHJpbmc+CisKKyAgICA8IS0tIFRvYXN0IG1lc3NhZ2Ugc2VudCB3aGVuIHRoZSBhIHNjcmVlbnNob3QgZm9yIHRoZSBidWcgcmVwb3J0IHdhcyB0YWtlbiBzdWNjZXNzZnVsbHkuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW4iPlNjcmVlbnNob3QgdGFrZW4gc3VjY2VzZnVsbHkuPC9zdHJpbmc+CisgICAgPCEtLSBUb2FzdCBtZXNzYWdlIHNlbnQgd2hlbiB0aGUgYSBzY3JlZW5zaG90IGZvciB0aGUgYnVnIHJlcG9ydCB3YXMgbm90IHRha2VuIGR1ZSB0byBhbiBlcnJvci4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJidWdyZXBvcnRfc2NyZWVuc2hvdF9mYWlsZWQiPlNjcmVlbnNob3QgY291bGQgbm90IGJlIHRha2VuLjwvc3RyaW5nPgorCiAgICAgPCEtLSAgVGl0bGUgb2YgdGhlIGRpYWxvZyBhc2tpbmcgZm9yIHVzZXItZGVmaW5lZCBidWcgcmVwb3J0IGRldGFpbHMgbGlrZSBuYW1lLCB0aXRsZSwgYW5kIGRlc2NyaXB0aW9uLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImJ1Z3JlcG9ydF9pbmZvX2RpYWxvZ190aXRsZSI+QnVnIHJlcG9ydCBkZXRhaWxzPC9zdHJpbmc+CiAKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3NyYy9jb20vYW5kcm9pZC9zaGVsbC9CdWdyZXBvcnRQcm9ncmVzc1NlcnZpY2UuamF2YSBiL3BhY2thZ2VzL1NoZWxsL3NyYy9jb20vYW5kcm9pZC9zaGVsbC9CdWdyZXBvcnRQcm9ncmVzc1NlcnZpY2UuamF2YQppbmRleCA4MmVlNzEwLi5kMzEwODhjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC9zcmMvY29tL2FuZHJvaWQvc2hlbGwvQnVncmVwb3J0UHJvZ3Jlc3NTZXJ2aWNlLmphdmEKKysrIGIvcGFja2FnZXMvU2hlbGwvc3JjL2NvbS9hbmRyb2lkL3NoZWxsL0J1Z3JlcG9ydFByb2dyZXNzU2VydmljZS5qYXZhCkBAIC0xNiw2ICsxNiw3IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2hlbGw7CiAKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5Qcm9jZXNzLlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zaGVsbC5CdWdyZXBvcnRQcmVmcy5TVEFURV9TSE9XOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zaGVsbC5CdWdyZXBvcnRQcmVmcy5nZXRXYXJuaW5nU3RhdGU7CiAKQEAgLTI5LDYgKzMwLDcgQEAKIGltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwogaW1wb3J0IGphdmEudGV4dC5OdW1iZXJGb3JtYXQ7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuemlwLlppcEVudHJ5OwogaW1wb3J0IGphdmEudXRpbC56aXAuWmlwT3V0cHV0U3RyZWFtOwogCkBAIC00OCw2ICs1MCw3IEBACiBpbXBvcnQgYW5kcm9pZC5hcHAuU2VydmljZTsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ2xpcERhdGE7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHRXcmFwcGVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CkBAIC01OSw4ICs2Miw4IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKLWltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7CiBpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOworaW1wb3J0IGFuZHJvaWQub3MuVmlicmF0b3I7CiBpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnY0LmNvbnRlbnQuRmlsZVByb3ZpZGVyOwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlVXRpbHM7CkBAIC0xMTUsNiArMTE4LDggQEAKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVOVF9CVUdSRVBPUlRfU0hBUkUgPSAiYW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJVR1JFUE9SVF9TSEFSRSI7CiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFTlRfQlVHUkVQT1JUX0lORk9fTEFVTkNIID0KICAgICAgICAgICAgICJhbmRyb2lkLmludGVudC5hY3Rpb24uQlVHUkVQT1JUX0lORk9fTEFVTkNIIjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVOVF9CVUdSRVBPUlRfU0NSRUVOU0hPVCA9CisgICAgICAgICAgICAiYW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJVR1JFUE9SVF9TQ1JFRU5TSE9UIjsKIAogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFfQlVHUkVQT1JUID0gImFuZHJvaWQuaW50ZW50LmV4dHJhLkJVR1JFUE9SVCI7CiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9TQ1JFRU5TSE9UID0gImFuZHJvaWQuaW50ZW50LmV4dHJhLlNDUkVFTlNIT1QiOwpAQCAtMTI3LDYgKzEzMiwxNiBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19TRVJWSUNFX0NPTU1BTkQgPSAxOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfUE9MTCA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19ERUxBWUVEX1NDUkVFTlNIT1QgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfU0NSRUVOU0hPVF9SRVFVRVNUID0gNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1NDUkVFTlNIT1RfUkVTUE9OU0UgPSA1OworCisgICAgLyoqCisgICAgICogRGVsYXkgYmVmb3JlIGEgc2NyZWVuc2hvdCBpcyB0YWtlbi4KKyAgICAgKiA8cD4KKyAgICAgKiBTaG91bGQgYmUgYXQgbGVhc3QgMyBzZWNvbmRzLCBvdGhlcndpc2UgaXRzIHRvYXN0IG1pZ2h0IHNob3cgdXAgaW4gdGhlIHNjcmVlbnNob3QuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBTQ1JFRU5TSE9UX0RFTEFZX1NFQ09ORFMgPSAzOwogCiAgICAgLyoqIFBvbGxpbmcgZnJlcXVlbmN5LCBpbiBtaWxsaXNlY29uZHMuICovCiAgICAgc3RhdGljIGZpbmFsIGxvbmcgUE9MTElOR19GUkVRVUVOQ1kgPSAyICogRGF0ZVV0aWxzLlNFQ09ORF9JTl9NSUxMSVM7CkBAIC0xNDEsMzUgKzE1Niw1OSBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX1NVRkZJWCA9ICIubmFtZSI7CiAKICAgICAvKiogU3lzdGVtIHByb3BlcnR5IChhbmQgdmFsdWUpIHVzZWQgdG8gc3RvcCBkdW1wc3RhdGUuICovCisgICAgLy8gVE9ETzogc2hvdWxkIGNhbGwgQWN0aXZlTWFuYWdlciBBUEkgaW5zdGVhZAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDVExfU1RPUCA9ICJjdGwuc3RvcCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVR1JFUE9SVF9TRVJWSUNFID0gImJ1Z3JlcG9ydHBsdXMiOwogCisgICAgLyoqCisgICAgICogRGlyZWN0b3J5IG9uIFNoZWxsJ3MgZGF0YSBzdG9yYWdlIHdoZXJlIHNjcmVlbnNob3RzIHdpbGwgYmUgc3RvcmVkLgorICAgICAqIDxwPgorICAgICAqIE11c3QgYmUgYSBwYXRoIHN1cHBvcnRlZCBieSBpdHMgRmlsZVByb3ZpZGVyLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTQ1JFRU5TSE9UX0RJUiA9ICJidWdyZXBvcnRzIjsKKwogICAgIC8qKiBNYW5hZ2VkIGR1bXBzdGF0ZSBwcm9jZXNzZXMgKGtleWVkIGJ5IHBpZCkgKi8KICAgICBwcml2YXRlIGZpbmFsIFNwYXJzZUFycmF5PEJ1Z3JlcG9ydEluZm8+IG1Qcm9jZXNzZXMgPSBuZXcgU3BhcnNlQXJyYXk8PigpOwogCi0gICAgcHJpdmF0ZSBMb29wZXIgbVNlcnZpY2VMb29wZXI7Ci0gICAgcHJpdmF0ZSBTZXJ2aWNlSGFuZGxlciBtU2VydmljZUhhbmRsZXI7CisgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgU2VydmljZUhhbmRsZXIgbU1haW5IYW5kbGVyOworICAgIHByaXZhdGUgU2NyZWVuc2hvdEhhbmRsZXIgbVNjcmVlbnNob3RIYW5kbGVyOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBCdWdyZXBvcnRJbmZvRGlhbG9nIG1JbmZvRGlhbG9nID0gbmV3IEJ1Z3JlcG9ydEluZm9EaWFsb2coKTsKIAorICAgIHByaXZhdGUgRmlsZSBtU2NyZWVuc2hvdHNEaXI7CisKKyAgICAvKioKKyAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBhIHNjcmVlbnNob3QgaXMgYmVpbmcgdGFrZW4uCisgICAgICogPHA+CisgICAgICogVGhpcyBpcyB0aGUgb25seSBzdGF0ZSB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSAyIGhhbmRsZXJzIGFuZCBoZW5jZSBtdXN0IGhhdmUgc3luY2hyb25pemVkCisgICAgICogYWNjZXNzLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBtVGFraW5nU2NyZWVuc2hvdDsKKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG9uQ3JlYXRlKCkgewotICAgICAgICBIYW5kbGVyVGhyZWFkIHRocmVhZCA9IG5ldyBIYW5kbGVyVGhyZWFkKCJCdWdyZXBvcnRQcm9ncmVzc1NlcnZpY2VUaHJlYWQiLAotICAgICAgICAgICAgICAgIFByb2Nlc3MuVEhSRUFEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpOwotICAgICAgICB0aHJlYWQuc3RhcnQoKTsKKyAgICAgICAgbUNvbnRleHQgPSBnZXRBcHBsaWNhdGlvbkNvbnRleHQoKTsKKyAgICAgICAgbU1haW5IYW5kbGVyID0gbmV3IFNlcnZpY2VIYW5kbGVyKCJCdWdyZXBvcnRQcm9ncmVzc1NlcnZpY2VNYWluVGhyZWFkIik7CisgICAgICAgIG1TY3JlZW5zaG90SGFuZGxlciA9IG5ldyBTY3JlZW5zaG90SGFuZGxlcigiQnVncmVwb3J0UHJvZ3Jlc3NTZXJ2aWNlU2NyZWVuc2hvdFRocmVhZCIpOwogCi0gICAgICAgIG1TZXJ2aWNlTG9vcGVyID0gdGhyZWFkLmdldExvb3BlcigpOwotICAgICAgICBtU2VydmljZUhhbmRsZXIgPSBuZXcgU2VydmljZUhhbmRsZXIobVNlcnZpY2VMb29wZXIpOworICAgICAgICBtU2NyZWVuc2hvdHNEaXIgPSBuZXcgRmlsZShuZXcgQ29udGV4dFdyYXBwZXIobUNvbnRleHQpLmdldEZpbGVzRGlyKCksIFNDUkVFTlNIT1RfRElSKTsKKyAgICAgICAgaWYgKCFtU2NyZWVuc2hvdHNEaXIuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgIExvZy5pKFRBRywgIkNyZWF0aW5nIGRpcmVjdG9yeSAiICsgbVNjcmVlbnNob3RzRGlyICsgIiB0byBzdG9yZSB0ZW1wb3Jhcnkgc2NyZWVuc2hvdHMiKTsKKyAgICAgICAgICAgIGlmICghbVNjcmVlbnNob3RzRGlyLm1rZGlyKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAiICsgbVNjcmVlbnNob3RzRGlyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBpbnQgb25TdGFydENvbW1hbmQoSW50ZW50IGludGVudCwgaW50IGZsYWdzLCBpbnQgc3RhcnRJZCkgewogICAgICAgICBpZiAoaW50ZW50ICE9IG51bGwpIHsKICAgICAgICAgICAgIC8vIEhhbmRsZSBpdCBpbiBhIHNlcGFyYXRlIHRocmVhZC4KLSAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbVNlcnZpY2VIYW5kbGVyLm9idGFpbk1lc3NhZ2UoKTsKKyAgICAgICAgICAgIGZpbmFsIE1lc3NhZ2UgbXNnID0gbU1haW5IYW5kbGVyLm9idGFpbk1lc3NhZ2UoKTsKICAgICAgICAgICAgIG1zZy53aGF0ID0gTVNHX1NFUlZJQ0VfQ09NTUFORDsKICAgICAgICAgICAgIG1zZy5vYmogPSBpbnRlbnQ7Ci0gICAgICAgICAgICBtU2VydmljZUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgIG1NYWluSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgc2VydmljZSBpcyBraWxsZWQgaXQgY2Fubm90IGJlIHJlY3JlYXRlZCBiZWNhdXNlIGl0IHdvdWxkIG5vdCBrbm93IHdoaWNoCkBAIC0xODQsMjkgKzIyMywzMSBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25EZXN0cm95KCkgewotICAgICAgICBtU2VydmljZUxvb3Blci5xdWl0KCk7CisgICAgICAgIG1NYWluSGFuZGxlci5nZXRMb29wZXIoKS5xdWl0KCk7CisgICAgICAgIG1TY3JlZW5zaG90SGFuZGxlci5nZXRMb29wZXIoKS5xdWl0KCk7CiAgICAgICAgIHN1cGVyLm9uRGVzdHJveSgpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCB2b2lkIGR1bXAoRmlsZURlc2NyaXB0b3IgZmQsIFByaW50V3JpdGVyIHdyaXRlciwgU3RyaW5nW10gYXJncykgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jZXNzZXMpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBzaXplID0gbVByb2Nlc3Nlcy5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnByaW50ZigiTm8gbW9uaXRvcmVkIHByb2Nlc3NlcyIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdyaXRlci5wcmludGYoIk1vbml0b3JlZCBkdW1wc3RhdGUgcHJvY2Vzc2VzXG4iKTsKLSAgICAgICAgICAgIHdyaXRlci5wcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgIHdyaXRlci5wcmludGYoIiVzXG4iLCBtUHJvY2Vzc2VzLnZhbHVlQXQoaSkpOwotICAgICAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgc2l6ZSA9IG1Qcm9jZXNzZXMuc2l6ZSgpOworICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICB3cml0ZXIucHJpbnRmKCJObyBtb25pdG9yZWQgcHJvY2Vzc2VzIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLnByaW50ZigiTW9uaXRvcmVkIGR1bXBzdGF0ZSBwcm9jZXNzZXNcbiIpOworICAgICAgICB3cml0ZXIucHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICB3cml0ZXIucHJpbnRmKCIlc1xuIiwgbVByb2Nlc3Nlcy52YWx1ZUF0KGkpKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qKgorICAgICAqIE1haW4gdGhyZWFkIHVzZWQgdG8gaGFuZGxlIGFsbCByZXF1ZXN0cyBidXQgdGFraW5nIHNjcmVlbnNob3RzLgorICAgICAqLwogICAgIHByaXZhdGUgZmluYWwgY2xhc3MgU2VydmljZUhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyIHsKLSAgICAgICAgcHVibGljIFNlcnZpY2VIYW5kbGVyKExvb3BlciBsb29wZXIpIHsKLSAgICAgICAgICAgIHN1cGVyKGxvb3Blcik7CisgICAgICAgIHB1YmxpYyBTZXJ2aWNlSGFuZGxlcihTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgc3VwZXIobmV3TG9vcGVyKG5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQpAQCAtMjE2LDYgKzI1NywxNiBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKG1zZy53aGF0ID09IE1TR19ERUxBWUVEX1NDUkVFTlNIT1QpIHsKKyAgICAgICAgICAgICAgICB0YWtlU2NyZWVuc2hvdChtc2cuYXJnMSwgbXNnLmFyZzIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1zZy53aGF0ID09IE1TR19TQ1JFRU5TSE9UX1JFU1BPTlNFKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlU2NyZWVuc2hvdFJlc3BvbnNlKG1zZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAobXNnLndoYXQgIT0gTVNHX1NFUlZJQ0VfQ09NTUFORCkgewogICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjay4KICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJJbnZhbGlkIG1lc3NhZ2UgdHlwZTogIiArIG1zZy53aGF0KTsKQEAgLTI2Miw2ICszMTMsOSBAQAogICAgICAgICAgICAgICAgIGNhc2UgSU5URU5UX0JVR1JFUE9SVF9JTkZPX0xBVU5DSDoKICAgICAgICAgICAgICAgICAgICAgbGF1bmNoQnVncmVwb3J0SW5mb0RpYWxvZyhwaWQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIElOVEVOVF9CVUdSRVBPUlRfU0NSRUVOU0hPVDoKKyAgICAgICAgICAgICAgICAgICAgdGFrZVNjcmVlbnNob3QocGlkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBJTlRFTlRfQlVHUkVQT1JUX1NIQVJFOgogICAgICAgICAgICAgICAgICAgICBzaGFyZUJ1Z3JlcG9ydChwaWQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4Niw2ICszNDAsMzIgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBTZXBhcmF0ZSB0aHJlYWQgdXNlZCBvbmx5IHRvIHRha2Ugc2NyZWVuc2hvdHMgc28gaXQgZG9lc24ndCBibG9jayB0aGUgbWFpbiB0aHJlYWQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBTY3JlZW5zaG90SGFuZGxlciBleHRlbmRzIEhhbmRsZXIgeworICAgICAgICBwdWJsaWMgU2NyZWVuc2hvdEhhbmRsZXIoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgICAgIHN1cGVyKG5ld0xvb3BlcihuYW1lKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgaWYgKG1zZy53aGF0ICE9IE1TR19TQ1JFRU5TSE9UX1JFUVVFU1QpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJJbnZhbGlkIG1lc3NhZ2UgdHlwZTogIiArIG1zZy53aGF0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVTY3JlZW5zaG90UmVxdWVzdChtc2cpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBCdWdyZXBvcnRJbmZvIGdldEluZm8oaW50IHBpZCkgeworICAgICAgICBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8gPSBtUHJvY2Vzc2VzLmdldChwaWQpOworICAgICAgICBpZiAoaW5mbyA9PSBudWxsKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJOb3QgbW9uaXRvcmluZyBwcm9jZXNzIHdpdGggUElEICIgKyBwaWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmZvOworICAgIH0KKworICAgIC8qKgogICAgICAqIENyZWF0ZXMgdGhlIHtAbGluayBCdWdyZXBvcnRJbmZvfSBmb3IgYSBwcm9jZXNzIGFuZCBpc3N1ZSBhIHN5c3RlbSBub3RpZmljYXRpb24gdG8KICAgICAgKiBpbmRpY2F0ZSBpdHMgcHJvZ3Jlc3MuCiAgICAgICoKQEAgLTMwNCwxNCArMzg0LDE0IEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8gPSBuZXcgQnVncmVwb3J0SW5mbyhnZXRBcHBsaWNhdGlvbkNvbnRleHQoKSwgcGlkLCBuYW1lLCBtYXgpOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jZXNzZXMpIHsKLSAgICAgICAgICAgIGlmIChtUHJvY2Vzc2VzLmluZGV4T2ZLZXkocGlkKSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUElEICIgKyBwaWQgKyAiIGFscmVhZHkgd2F0Y2hlZCIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtUHJvY2Vzc2VzLnB1dChpbmZvLnBpZCwgaW5mbyk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IG5ldyBCdWdyZXBvcnRJbmZvKG1Db250ZXh0LCBwaWQsIG5hbWUsIG1heCk7CisgICAgICAgIGlmIChtUHJvY2Vzc2VzLmluZGV4T2ZLZXkocGlkKSA+PSAwKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQSUQgIiArIHBpZCArICIgYWxyZWFkeSB3YXRjaGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtUHJvY2Vzc2VzLnB1dChpbmZvLnBpZCwgaW5mbyk7CiAgICAgICAgIH0KKyAgICAgICAgLy8gVGFrZSBpbml0aWFsIHNjcmVlbnNob3QuCisgICAgICAgIHRha2VTY3JlZW5zaG90KHBpZCwgZmFsc2UpOwogICAgICAgICB1cGRhdGVQcm9ncmVzcyhpbmZvKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzI1LDI2ICs0MDUsMzUgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IGdldEFwcGxpY2F0aW9uQ29udGV4dCgpOwogICAgICAgICBmaW5hbCBOdW1iZXJGb3JtYXQgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKCk7CiAgICAgICAgIG5mLnNldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygyKTsKICAgICAgICAgbmYuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKDIpOwogICAgICAgICBmaW5hbCBTdHJpbmcgcGVyY2VudFRleHQgPSBuZi5mb3JtYXQoKGRvdWJsZSkgaW5mby5wcm9ncmVzcyAvIGluZm8ubWF4KTsKLSAgICAgICAgZmluYWwgQWN0aW9uIGNhbmNlbEFjdGlvbiA9IG5ldyBBY3Rpb24uQnVpbGRlcihudWxsLCBjb250ZXh0LmdldFN0cmluZygKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5jYW5jZWwpLCBuZXdDYW5jZWxJbnRlbnQoY29udGV4dCwgaW5mbykpLmJ1aWxkKCk7Ci0gICAgICAgIGZpbmFsIEludGVudCBpbmZvSW50ZW50ID0gbmV3IEludGVudChjb250ZXh0LCBCdWdyZXBvcnRQcm9ncmVzc1NlcnZpY2UuY2xhc3MpOworICAgICAgICBmaW5hbCBBY3Rpb24gY2FuY2VsQWN0aW9uID0gbmV3IEFjdGlvbi5CdWlsZGVyKG51bGwsIG1Db250ZXh0LmdldFN0cmluZygKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5jYW5jZWwpLCBuZXdDYW5jZWxJbnRlbnQobUNvbnRleHQsIGluZm8pKS5idWlsZCgpOworICAgICAgICBmaW5hbCBJbnRlbnQgaW5mb0ludGVudCA9IG5ldyBJbnRlbnQobUNvbnRleHQsIEJ1Z3JlcG9ydFByb2dyZXNzU2VydmljZS5jbGFzcyk7CiAgICAgICAgIGluZm9JbnRlbnQuc2V0QWN0aW9uKElOVEVOVF9CVUdSRVBPUlRfSU5GT19MQVVOQ0gpOwogICAgICAgICBpbmZvSW50ZW50LnB1dEV4dHJhKEVYVFJBX1BJRCwgaW5mby5waWQpOwogICAgICAgICBmaW5hbCBBY3Rpb24gaW5mb0FjdGlvbiA9IG5ldyBBY3Rpb24uQnVpbGRlcihudWxsLAotICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmJ1Z3JlcG9ydF9pbmZvX2FjdGlvbiksCi0gICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudC5nZXRTZXJ2aWNlKGNvbnRleHQsIGluZm8ucGlkLCBpbmZvSW50ZW50LAorICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5idWdyZXBvcnRfaW5mb19hY3Rpb24pLAorICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuZ2V0U2VydmljZShtQ29udGV4dCwgaW5mby5waWQsIGluZm9JbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50LkZMQUdfVVBEQVRFX0NVUlJFTlQpKS5idWlsZCgpOworICAgICAgICBmaW5hbCBJbnRlbnQgc2NyZWVuc2hvdEludGVudCA9IG5ldyBJbnRlbnQobUNvbnRleHQsIEJ1Z3JlcG9ydFByb2dyZXNzU2VydmljZS5jbGFzcyk7CisgICAgICAgIHNjcmVlbnNob3RJbnRlbnQuc2V0QWN0aW9uKElOVEVOVF9CVUdSRVBPUlRfU0NSRUVOU0hPVCk7CisgICAgICAgIHNjcmVlbnNob3RJbnRlbnQucHV0RXh0cmEoRVhUUkFfUElELCBpbmZvLnBpZCk7CisgICAgICAgIFBlbmRpbmdJbnRlbnQgc2NyZWVuc2hvdFBlbmRpbmdJbnRlbnQgPSBtVGFraW5nU2NyZWVuc2hvdCA/IG51bGwgOiBQZW5kaW5nSW50ZW50CisgICAgICAgICAgICAgICAgLmdldFNlcnZpY2UobUNvbnRleHQsIGluZm8ucGlkLCBzY3JlZW5zaG90SW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudC5GTEFHX1VQREFURV9DVVJSRU5UKTsKKyAgICAgICAgZmluYWwgQWN0aW9uIHNjcmVlbnNob3RBY3Rpb24gPSBuZXcgQWN0aW9uLkJ1aWxkZXIobnVsbCwKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uKSwKKyAgICAgICAgICAgICAgICBzY3JlZW5zaG90UGVuZGluZ0ludGVudCkuYnVpbGQoKTsKIAotICAgICAgICBmaW5hbCBTdHJpbmcgdGl0bGUgPSBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5idWdyZXBvcnRfaW5fcHJvZ3Jlc3NfdGl0bGUpOworICAgICAgICBmaW5hbCBTdHJpbmcgdGl0bGUgPSBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYnVncmVwb3J0X2luX3Byb2dyZXNzX3RpdGxlKTsKKwogICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1lICE9IG51bGwgPyBpbmZvLm5hbWUgOiBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5idWdyZXBvcnRfdW5uYW1lZCk7CisgICAgICAgICAgICAgICAgaW5mby5uYW1lICE9IG51bGwgPyBpbmZvLm5hbWUgOiBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYnVncmVwb3J0X3VubmFtZWQpOwogCi0gICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uLkJ1aWxkZXIoY29udGV4dCkKKyAgICAgICAgZmluYWwgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24uQnVpbGRlcihtQ29udGV4dCkKICAgICAgICAgICAgICAgICAuc2V0U21hbGxJY29uKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfYWRiKQogICAgICAgICAgICAgICAgIC5zZXRDb250ZW50VGl0bGUodGl0bGUpCiAgICAgICAgICAgICAgICAgLnNldFRpY2tlcih0aXRsZSkKQEAgLTM1MywxMyArNDQyLDE0IEBACiAgICAgICAgICAgICAgICAgLnNldFByb2dyZXNzKGluZm8ubWF4LCBpbmZvLnByb2dyZXNzLCBmYWxzZSkKICAgICAgICAgICAgICAgICAuc2V0T25nb2luZyh0cnVlKQogICAgICAgICAgICAgICAgIC5zZXRMb2NhbE9ubHkodHJ1ZSkKLSAgICAgICAgICAgICAgICAuc2V0Q29sb3IoY29udGV4dC5nZXRDb2xvcigKKyAgICAgICAgICAgICAgICAuc2V0Q29sb3IobUNvbnRleHQuZ2V0Q29sb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmNvbG9yLnN5c3RlbV9ub3RpZmljYXRpb25fYWNjZW50X2NvbG9yKSkKICAgICAgICAgICAgICAgICAuYWRkQWN0aW9uKGluZm9BY3Rpb24pCisgICAgICAgICAgICAgICAgLmFkZEFjdGlvbihzY3JlZW5zaG90QWN0aW9uKQogICAgICAgICAgICAgICAgIC5hZGRBY3Rpb24oY2FuY2VsQWN0aW9uKQogICAgICAgICAgICAgICAgIC5idWlsZCgpOwogCi0gICAgICAgIE5vdGlmaWNhdGlvbk1hbmFnZXIuZnJvbShjb250ZXh0KS5ub3RpZnkoVEFHLCBpbmZvLnBpZCwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgTm90aWZpY2F0aW9uTWFuYWdlci5mcm9tKG1Db250ZXh0KS5ub3RpZnkoVEFHLCBpbmZvLnBpZCwgbm90aWZpY2F0aW9uKTsKICAgICB9CiAKICAgICAvKioKQEAgLTM3NywxNiArNDY3LDE0IEBACiAgICAgICogRmluYWxpemVzIHRoZSBwcm9ncmVzcyBvbiBhIGdpdmVuIGJ1Z3JlcG9ydCBhbmQgY2FuY2VsIGl0cyBub3RpZmljYXRpb24uCiAgICAgICovCiAgICAgcHJpdmF0ZSB2b2lkIHN0b3BQcm9ncmVzcyhpbnQgcGlkKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVByb2Nlc3NlcykgewotICAgICAgICAgICAgaWYgKG1Qcm9jZXNzZXMuaW5kZXhPZktleShwaWQpIDwgMCkgewotICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlBJRCBub3Qgd2F0Y2hlZDogIiArIHBpZCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1Qcm9jZXNzZXMucmVtb3ZlKHBpZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdG9wU2VsZldoZW5Eb25lKCk7CisgICAgICAgIGlmIChtUHJvY2Vzc2VzLmluZGV4T2ZLZXkocGlkKSA8IDApIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIlBJRCBub3Qgd2F0Y2hlZDogIiArIHBpZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtUHJvY2Vzc2VzLnJlbW92ZShwaWQpOwogICAgICAgICB9CisgICAgICAgIHN0b3BTZWxmV2hlbkRvbmUoKTsKICAgICAgICAgTG9nLnYoVEFHLCAic3RvcFByb2dyZXNzKCIgKyBwaWQgKyAiKTogY2FuY2VsIG5vdGlmaWNhdGlvbiIpOwotICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyLmZyb20oZ2V0QXBwbGljYXRpb25Db250ZXh0KCkpLmNhbmNlbChUQUcsIHBpZCk7CisgICAgICAgIE5vdGlmaWNhdGlvbk1hbmFnZXIuZnJvbShtQ29udGV4dCkuY2FuY2VsKFRBRywgcGlkKTsKICAgICB9CiAKICAgICAvKioKQEAgLTM5NCwxMiArNDgyLDExIEBACiAgICAgICovCiAgICAgcHJpdmF0ZSB2b2lkIGNhbmNlbChpbnQgcGlkKSB7CiAgICAgICAgIExvZy52KFRBRywgImNhbmNlbDogcGlkPSIgKyBwaWQpOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jZXNzZXMpIHsKLSAgICAgICAgICAgIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IG1Qcm9jZXNzZXMuZ2V0KHBpZCk7Ci0gICAgICAgICAgICBpZiAoaW5mbyAhPSBudWxsICYmICFpbmZvLmZpbmlzaGVkKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiQ2FuY2VsbGluZyBidWdyZXBvcnQgc2VydmljZSAocGlkPSIgKyBwaWQgKyAiKSBvbiB1c2VyJ3MgcmVxdWVzdCIpOwotICAgICAgICAgICAgICAgIHNldFN5c3RlbVByb3BlcnR5KENUTF9TVE9QLCBCVUdSRVBPUlRfU0VSVklDRSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IGdldEluZm8ocGlkKTsKKyAgICAgICAgaWYgKGluZm8gIT0gbnVsbCAmJiAhaW5mby5maW5pc2hlZCkgeworICAgICAgICAgICAgTG9nLmkoVEFHLCAiQ2FuY2VsbGluZyBidWdyZXBvcnQgc2VydmljZSAocGlkPSIgKyBwaWQgKyAiKSBvbiB1c2VyJ3MgcmVxdWVzdCIpOworICAgICAgICAgICAgc2V0U3lzdGVtUHJvcGVydHkoQ1RMX1NUT1AsIEJVR1JFUE9SVF9TRVJWSUNFKTsKKyAgICAgICAgICAgIGRlbGV0ZVNjcmVlbnNob3RzKGluZm8pOwogICAgICAgICB9CiAgICAgICAgIHN0b3BQcm9ncmVzcyhwaWQpOwogICAgIH0KQEAgLTQxMCw1NCArNDk3LDUyIEBACiAgICAgICogQHJldHVybiB3aGV0aGVyIGl0IHNob3VsZCBrZWVwIHBvbGxpbmcuCiAgICAgICovCiAgICAgcHJpdmF0ZSBib29sZWFuIHBvbGxQcm9ncmVzcygpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtUHJvY2Vzc2VzKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgdG90YWwgPSBtUHJvY2Vzc2VzLnNpemUoKTsKLSAgICAgICAgICAgIGlmICh0b3RhbCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiTm8gcHJvY2VzcyB0byBwb2xsIHByb2dyZXNzLiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IGFjdGl2ZVByb2Nlc3NlcyA9IDA7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsOyBpKyspIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcGlkID0gbVByb2Nlc3Nlcy5rZXlBdChpKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8gPSBtUHJvY2Vzc2VzLnZhbHVlQXQoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGluZm8uZmluaXNoZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cudihUQUcsICJTa2lwcGluZyBmaW5pc2hlZCBwcm9jZXNzICIgKyBwaWQpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWN0aXZlUHJvY2Vzc2VzKys7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByb2dyZXNzS2V5ID0gRFVNUFNUQVRFX1BSRUZJWCArIHBpZCArIFBST0dSRVNTX1NVRkZJWDsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcHJvZ3Jlc3MgPSBTeXN0ZW1Qcm9wZXJ0aWVzLmdldEludChwcm9ncmVzc0tleSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAiU3lzdGVtIHByb3BlcnR5ICIgKyBwcm9ncmVzc0tleSArICIgaXMgbm90IHNldCB5ZXQiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IG1heCA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0SW50KERVTVBTVEFURV9QUkVGSVggKyBwaWQgKyBNQVhfU1VGRklYLCAwKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIG1heENoYW5nZWQgPSBtYXggPiAwICYmIG1heCAhPSBpbmZvLm1heDsKLSAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHByb2dyZXNzQ2hhbmdlZCA9IHByb2dyZXNzID4gMCAmJiBwcm9ncmVzcyAhPSBpbmZvLnByb2dyZXNzOwotCi0gICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzQ2hhbmdlZCB8fCBtYXhDaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9ncmVzc0NoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLnYoVEFHLCAiVXBkYXRpbmcgcHJvZ3Jlc3MgZm9yIFBJRCAiICsgcGlkICsgIiBmcm9tICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpbmZvLnByb2dyZXNzICsgIiB0byAiICsgcHJvZ3Jlc3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5wcm9ncmVzcyA9IHByb2dyZXNzOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtYXhDaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJVcGRhdGluZyBtYXggcHJvZ3Jlc3MgZm9yIFBJRCAiICsgcGlkICsgIiBmcm9tICIgKyBpbmZvLm1heAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdG8gIiArIG1heCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvLm1heCA9IG1heDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpbmZvLmxhc3RVcGRhdGUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3MoaW5mbyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZyBpbmFjdGl2ZVRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIGluZm8ubGFzdFVwZGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluYWN0aXZlVGltZSA+PSBJTkFDVElWSVRZX1RJTUVPVVQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIk5vIHByb2dyZXNzIHVwZGF0ZSBmb3IgcHJvY2VzcyAiICsgcGlkICsgIiBzaW5jZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW5mby5nZXRGb3JtYXR0ZWRMYXN0VXBkYXRlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFByb2dyZXNzKGluZm8ucGlkKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChERUJVRykgTG9nLnYoVEFHLCAicG9sbFByb2dyZXNzKCkgdG90YWw9IiArIHRvdGFsICsgIiwgYWN0aXZlcz0iICsgYWN0aXZlUHJvY2Vzc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBhY3RpdmVQcm9jZXNzZXMgPiAwOworICAgICAgICBmaW5hbCBpbnQgdG90YWwgPSBtUHJvY2Vzc2VzLnNpemUoKTsKKyAgICAgICAgaWYgKHRvdGFsID09IDApIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgIk5vIHByb2Nlc3MgdG8gcG9sbCBwcm9ncmVzcy4iKTsKICAgICAgICAgfQorICAgICAgICBpbnQgYWN0aXZlUHJvY2Vzc2VzID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgcGlkID0gbVByb2Nlc3Nlcy5rZXlBdChpKTsKKyAgICAgICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IG1Qcm9jZXNzZXMudmFsdWVBdChpKTsKKyAgICAgICAgICAgIGlmIChpbmZvLmZpbmlzaGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cudihUQUcsICJTa2lwcGluZyBmaW5pc2hlZCBwcm9jZXNzICIgKyBwaWQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWN0aXZlUHJvY2Vzc2VzKys7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJvZ3Jlc3NLZXkgPSBEVU1QU1RBVEVfUFJFRklYICsgcGlkICsgUFJPR1JFU1NfU1VGRklYOworICAgICAgICAgICAgZmluYWwgaW50IHByb2dyZXNzID0gU3lzdGVtUHJvcGVydGllcy5nZXRJbnQocHJvZ3Jlc3NLZXksIDApOworICAgICAgICAgICAgaWYgKHByb2dyZXNzID09IDApIHsKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJTeXN0ZW0gcHJvcGVydHkgIiArIHByb2dyZXNzS2V5ICsgIiBpcyBub3Qgc2V0IHlldCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWwgaW50IG1heCA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0SW50KERVTVBTVEFURV9QUkVGSVggKyBwaWQgKyBNQVhfU1VGRklYLCAwKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbWF4Q2hhbmdlZCA9IG1heCA+IDAgJiYgbWF4ICE9IGluZm8ubWF4OworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBwcm9ncmVzc0NoYW5nZWQgPSBwcm9ncmVzcyA+IDAgJiYgcHJvZ3Jlc3MgIT0gaW5mby5wcm9ncmVzczsKKworICAgICAgICAgICAgaWYgKHByb2dyZXNzQ2hhbmdlZCB8fCBtYXhDaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzQ2hhbmdlZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIlVwZGF0aW5nIHByb2dyZXNzIGZvciBQSUQgIiArIHBpZCArICIgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpbmZvLnByb2dyZXNzICsgIiB0byAiICsgcHJvZ3Jlc3MpOworICAgICAgICAgICAgICAgICAgICBpbmZvLnByb2dyZXNzID0gcHJvZ3Jlc3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtYXhDaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIlVwZGF0aW5nIG1heCBwcm9ncmVzcyBmb3IgUElEICIgKyBwaWQgKyAiIGZyb20gIiArIGluZm8ubWF4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvICIgKyBtYXgpOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1heCA9IG1heDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5mby5sYXN0VXBkYXRlID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3MoaW5mbyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvbmcgaW5hY3RpdmVUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBpbmZvLmxhc3RVcGRhdGU7CisgICAgICAgICAgICAgICAgaWYgKGluYWN0aXZlVGltZSA+PSBJTkFDVElWSVRZX1RJTUVPVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiTm8gcHJvZ3Jlc3MgdXBkYXRlIGZvciBwcm9jZXNzICIgKyBwaWQgKyAiIHNpbmNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGluZm8uZ2V0Rm9ybWF0dGVkTGFzdFVwZGF0ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RvcFByb2dyZXNzKGluZm8ucGlkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKERFQlVHKSBMb2cudihUQUcsICJwb2xsUHJvZ3Jlc3MoKSB0b3RhbD0iICsgdG90YWwgKyAiLCBhY3RpdmVzPSIgKyBhY3RpdmVQcm9jZXNzZXMpOworICAgICAgICByZXR1cm4gYWN0aXZlUHJvY2Vzc2VzID4gMDsKICAgICB9CiAKICAgICAvKioKQEAgLTQ2NywzNSArNTUyLDE0MSBAQAogICAgIHByaXZhdGUgdm9pZCBsYXVuY2hCdWdyZXBvcnRJbmZvRGlhbG9nKGludCBwaWQpIHsKICAgICAgICAgLy8gQ29weSB2YWx1ZXMgc28gaXQgZG9lc24ndCBsb2NrIG1Qcm9jZXNzZXMgd2hpbGUgVUkgaXMgYmVpbmcgdXBkYXRlZAogICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSwgdGl0bGUsIGRlc2NyaXB0aW9uOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jZXNzZXMpIHsKLSAgICAgICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IG1Qcm9jZXNzZXMuZ2V0KHBpZCk7Ci0gICAgICAgICAgICBpZiAoaW5mbyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiTm8gYnVncmVwb3J0IGluZm8gZm9yIFBJRCAiICsgcGlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuYW1lID0gaW5mby5uYW1lOwotICAgICAgICAgICAgdGl0bGUgPSBpbmZvLnRpdGxlOwotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBpbmZvLmRlc2NyaXB0aW9uOworICAgICAgICBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8gPSBnZXRJbmZvKHBpZCk7CisgICAgICAgIGlmIChpbmZvID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuYW1lID0gaW5mby5uYW1lOworICAgICAgICB0aXRsZSA9IGluZm8udGl0bGU7CisgICAgICAgIGRlc2NyaXB0aW9uID0gaW5mby5kZXNjcmlwdGlvbjsKKworICAgICAgICBjb2xsYXBzZU5vdGlmaWNhdGlvbkJhcigpOworICAgICAgICBtSW5mb0RpYWxvZy5pbml0aWFsaXplKG1Db250ZXh0LCBwaWQsIG5hbWUsIHRpdGxlLCBkZXNjcmlwdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3RhcnRpbmcgcG9pbnQgZm9yIHRha2luZyBhIHNjcmVlbnNob3QuCisgICAgICogPHA+CisgICAgICogSWYge0Bjb2RlIGRlbGF5ZWR9IGlzIHNldCwgaXQgZmlyc3QgZGlzcGxheSBhIHRvYXN0IG1lc3NhZ2UgYW5kIHdhaXRzCisgICAgICoge0BsaW5rICNTQ1JFRU5TSE9UX0RFTEFZX1NFQ09ORFN9IHNlY29uZHMgYmVmb3JlIHRha2luZyBpdCwgb3RoZXJ3aXNlIGl0IHRha2VzIHRoZSBzY3JlZW5zaG90CisgICAgICogcmlnaHQgYXdheS4KKyAgICAgKiA8cD4KKyAgICAgKiBUeXBpY2FsIHVzYWdlIGlzIGRlbGF5aW5nIHdoZW4gdGFrZW4gZnJvbSB0aGUgbm90aWZpY2F0aW9uIGFjdGlvbiwgYW5kIHRha2luZyBpdCByaWdodCBhd2F5CisgICAgICogdXBvbiByZWNlaXZpbmcgYSB7QGxpbmsgI0lOVEVOVF9CVUdSRVBPUlRfU1RBUlRFRH0uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHRha2VTY3JlZW5zaG90KGludCBwaWQsIGJvb2xlYW4gZGVsYXllZCkgeworICAgICAgICBzZXRUYWtpbmdTY3JlZW5zaG90KHRydWUpOworICAgICAgICBpZiAoZGVsYXllZCkgeworICAgICAgICAgICAgY29sbGFwc2VOb3RpZmljYXRpb25CYXIoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtc2cgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKQorICAgICAgICAgICAgICAgICAgICAuZ2V0UXVhbnRpdHlTdHJpbmcoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5wbHVyYWxzLmJ1Z3JlcG9ydF9jb3VudGRvd24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NSRUVOU0hPVF9ERUxBWV9TRUNPTkRTLCBTQ1JFRU5TSE9UX0RFTEFZX1NFQ09ORFMpOworICAgICAgICAgICAgTG9nLmkoVEFHLCBtc2cpOworICAgICAgICAgICAgLy8gU2hvdyBhIHRvYXN0IGp1c3Qgb25jZSwgb3RoZXJ3aXNlIGl0IG1pZ2h0IGJlIGNhcHR1cmVkIGluIHRoZSBzY3JlZW5zaG90LgorICAgICAgICAgICAgVG9hc3QubWFrZVRleHQobUNvbnRleHQsIG1zZywgVG9hc3QuTEVOR1RIX1NIT1JUKS5zaG93KCk7CisKKyAgICAgICAgICAgIHRha2VTY3JlZW5zaG90KHBpZCwgU0NSRUVOU0hPVF9ERUxBWV9TRUNPTkRTKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRha2VTY3JlZW5zaG90KHBpZCwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUYWtlcyBhIHNjcmVlbnNob3QgYWZ0ZXIge0Bjb2RlIGRlbGF5fSBzZWNvbmRzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB0YWtlU2NyZWVuc2hvdChpbnQgcGlkLCBpbnQgZGVsYXkpIHsKKyAgICAgICAgaWYgKGRlbGF5ID4gMCkgeworICAgICAgICAgICAgTG9nLmQoVEFHLCAiVGFraW5nIHNjcmVlbnNob3QgZm9yICIgKyBwaWQgKyAiIGluICIgKyBkZWxheSArICIgc2Vjb25kcyIpOworICAgICAgICAgICAgZmluYWwgTWVzc2FnZSBtc2cgPSBtTWFpbkhhbmRsZXIub2J0YWluTWVzc2FnZSgpOworICAgICAgICAgICAgbXNnLndoYXQgPSBNU0dfREVMQVlFRF9TQ1JFRU5TSE9UOworICAgICAgICAgICAgbXNnLmFyZzEgPSBwaWQ7CisgICAgICAgICAgICBtc2cuYXJnMiA9IGRlbGF5IC0gMTsKKyAgICAgICAgICAgIG1NYWluSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBEYXRlVXRpbHMuU0VDT05EX0lOX01JTExJUyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDbG9zZXMgdGhlIG5vdGlmaWNhdGlvbiBiYXIgZmlyc3QuCi0gICAgICAgIHNlbmRCcm9hZGNhc3QobmV3IEludGVudChJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTKSk7CisgICAgICAgIC8vIEl0J3MgdGltZSB0byB0YWtlIHRoZSBzY3JlZW5zaG90OiBsZXQgdGhlIHByb3BlciB0aHJlYWQgaGFuZGxlIGl0CisgICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IGdldEluZm8ocGlkKTsKKyAgICAgICAgaWYgKGluZm8gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZpbmFsIFN0cmluZyBzY3JlZW5zaG90UGF0aCA9CisgICAgICAgICAgICAgICAgbmV3IEZpbGUobVNjcmVlbnNob3RzRGlyLCBpbmZvLmdldFBhdGhOZXh0U2NyZWVuc2hvdCgpKS5nZXRBYnNvbHV0ZVBhdGgoKTsKIAotICAgICAgICBtSW5mb0RpYWxvZy5pbml0aWFsaXplKGdldEFwcGxpY2F0aW9uQ29udGV4dCgpLCBwaWQsIG5hbWUsIHRpdGxlLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGZpbmFsIE1lc3NhZ2UgcmVxdWVzdE1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgIHJlcXVlc3RNc2cud2hhdCA9IE1TR19TQ1JFRU5TSE9UX1JFUVVFU1Q7CisgICAgICAgIHJlcXVlc3RNc2cuYXJnMSA9IHBpZDsKKyAgICAgICAgcmVxdWVzdE1zZy5vYmogPSBzY3JlZW5zaG90UGF0aDsKKyAgICAgICAgbVNjcmVlbnNob3RIYW5kbGVyLnNlbmRNZXNzYWdlKHJlcXVlc3RNc2cpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGludGVybmFsIHtAY29kZSBtVGFraW5nU2NyZWVuc2hvdH0gc3RhdGUgYW5kIHVwZGF0ZXMgYWxsIG5vdGlmaWNhdGlvbnMgc28gdGhlaXIKKyAgICAgKiBTQ1JFRU5TSE9UIGJ1dHRvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGFjY29yZGluZ2x5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZXRUYWtpbmdTY3JlZW5zaG90KGJvb2xlYW4gZmxhZykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEJ1Z3JlcG9ydFByb2dyZXNzU2VydmljZS50aGlzKSB7CisgICAgICAgICAgICBtVGFraW5nU2NyZWVuc2hvdCA9IGZsYWc7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1Qcm9jZXNzZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVQcm9ncmVzcyhtUHJvY2Vzc2VzLnZhbHVlQXQoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNjcmVlbnNob3RSZXF1ZXN0KE1lc3NhZ2UgcmVxdWVzdE1zZykgeworICAgICAgICBTdHJpbmcgc2NyZWVuc2hvdEZpbGUgPSAoU3RyaW5nKSByZXF1ZXN0TXNnLm9iajsKKyAgICAgICAgYm9vbGVhbiB0YWtlbiA9IHRha2VTY3JlZW5zaG90KG1Db250ZXh0LCBzY3JlZW5zaG90RmlsZSk7CisgICAgICAgIHNldFRha2luZ1NjcmVlbnNob3QoZmFsc2UpOworCisgICAgICAgIGZpbmFsIE1lc3NhZ2UgcmVzdWx0TXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgcmVzdWx0TXNnLndoYXQgPSBNU0dfU0NSRUVOU0hPVF9SRVNQT05TRTsKKyAgICAgICAgcmVzdWx0TXNnLmFyZzEgPSByZXF1ZXN0TXNnLmFyZzE7CisgICAgICAgIHJlc3VsdE1zZy5hcmcyID0gdGFrZW4gPyAxIDogMDsKKyAgICAgICAgcmVzdWx0TXNnLm9iaiA9IHNjcmVlbnNob3RGaWxlOworICAgICAgICBtTWFpbkhhbmRsZXIuc2VuZE1lc3NhZ2UocmVzdWx0TXNnKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlU2NyZWVuc2hvdFJlc3BvbnNlKE1lc3NhZ2UgcmVzdWx0TXNnKSB7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gdGFrZW4gPSByZXN1bHRNc2cuYXJnMiAhPSAwOworICAgICAgICBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8gPSBnZXRJbmZvKHJlc3VsdE1zZy5hcmcxKTsKKyAgICAgICAgaWYgKGluZm8gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZpbmFsIEZpbGUgc2NyZWVuc2hvdEZpbGUgPSBuZXcgRmlsZSgoU3RyaW5nKSByZXN1bHRNc2cub2JqKTsKKworICAgICAgICBmaW5hbCBpbnQgbXNnSWQ7CisgICAgICAgIGlmICh0YWtlbikgeworICAgICAgICAgICAgaW5mby5hZGRTY3JlZW5zaG90KHNjcmVlbnNob3RGaWxlKTsKKyAgICAgICAgICAgIG1zZ0lkID0gUi5zdHJpbmcuYnVncmVwb3J0X3NjcmVlbnNob3RfdGFrZW47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUT0RPOiB0cnkgYWdhaW4gdXNpbmcgRnJhbWV3b3JrIEFQSXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHNjcmVlbmNhcC4KKyAgICAgICAgICAgIG1zZ0lkID0gUi5zdHJpbmcuYnVncmVwb3J0X3NjcmVlbnNob3RfZmFpbGVkOworICAgICAgICB9CisgICAgICAgIGZpbmFsIFN0cmluZyBtc2cgPSBtQ29udGV4dC5nZXRTdHJpbmcobXNnSWQpOworICAgICAgICBMb2cuZChUQUcsIG1zZyk7CisgICAgICAgIFRvYXN0Lm1ha2VUZXh0KG1Db250ZXh0LCBtc2csIFRvYXN0LkxFTkdUSF9TSE9SVCkuc2hvdygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlbGV0ZXMgYWxsIHNjcmVlbnNob3RzIHRha2VuIGZvciBhIGdpdmVuIGJ1Z3JlcG9ydC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZGVsZXRlU2NyZWVuc2hvdHMoQnVncmVwb3J0SW5mbyBpbmZvKSB7CisgICAgICAgIGZvciAoRmlsZSBmaWxlIDogaW5mby5zY3JlZW5zaG90RmlsZXMpIHsKKyAgICAgICAgICAgIExvZy5pKFRBRywgIkRlbGV0aW5nIHNjcmVlbnNob3QgZmlsZSAiICsgZmlsZSk7CisgICAgICAgICAgICBmaWxlLmRlbGV0ZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogRmluaXNoZXMgdGhlIHNlcnZpY2Ugd2hlbiBpdCdzIG5vdCBtb25pdG9yaW5nIGFueSBtb3JlIHByb2Nlc3Nlcy4KICAgICAgKi8KICAgICBwcml2YXRlIHZvaWQgc3RvcFNlbGZXaGVuRG9uZSgpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtUHJvY2Vzc2VzKSB7Ci0gICAgICAgICAgICBpZiAobVByb2Nlc3Nlcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cudihUQUcsICJTdGF5aW5nIGFsaXZlLCB3YWl0aW5nIGZvciBwaWRzICIgKyBtUHJvY2Vzc2VzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBMb2cudihUQUcsICJObyBtb3JlIHBpZHMgdG8gaGFuZGxlLCBzaHV0dGluZyBkb3duIik7Ci0gICAgICAgICAgICBzdG9wU2VsZigpOworICAgICAgICBpZiAobVByb2Nlc3Nlcy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIlN0YXlpbmcgYWxpdmUsIHdhaXRpbmcgZm9yIHBpZHMgIiArIG1Qcm9jZXNzZXMpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIExvZy52KFRBRywgIk5vIG1vcmUgcGlkcyB0byBoYW5kbGUsIHNodXR0aW5nIGRvd24iKTsKKyAgICAgICAgc3RvcFNlbGYoKTsKICAgICB9CiAKICAgICAvKioKQEAgLTUwMywyNCArNjk0LDI0IEBACiAgICAgICovCiAgICAgcHJpdmF0ZSB2b2lkIG9uQnVncmVwb3J0RmluaXNoZWQoaW50IHBpZCwgSW50ZW50IGludGVudCkgewogICAgICAgICBtSW5mb0RpYWxvZy5vbkJ1Z3JlcG9ydEZpbmlzaGVkKHBpZCk7Ci0gICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IGdldEFwcGxpY2F0aW9uQ29udGV4dCgpOwotICAgICAgICBCdWdyZXBvcnRJbmZvIGluZm87Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVByb2Nlc3NlcykgewotICAgICAgICAgICAgaW5mbyA9IG1Qcm9jZXNzZXMuZ2V0KHBpZCk7Ci0gICAgICAgICAgICBpZiAoaW5mbyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy8gSGFwcGVucyB3aGVuIEJVR1JFUE9SVF9GSU5JU0hFRCB3YXMgcmVjZWl2ZWQgd2l0aG91dCBhIEJVR1JFUE9SVF9TVEFSVEVECi0gICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAiQ3JlYXRpbmcgaW5mbyBmb3IgdW50cmFja2VkIHBpZCAiICsgcGlkKTsKLSAgICAgICAgICAgICAgICBpbmZvID0gbmV3IEJ1Z3JlcG9ydEluZm8oY29udGV4dCwgcGlkKTsKLSAgICAgICAgICAgICAgICBtUHJvY2Vzc2VzLnB1dChwaWQsIGluZm8pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mby5idWdyZXBvcnRGaWxlID0gZ2V0RmlsZUV4dHJhKGludGVudCwgRVhUUkFfQlVHUkVQT1JUKTsKLSAgICAgICAgICAgIGluZm8uc2NyZWVuc2hvdEZpbGUgPSBnZXRGaWxlRXh0cmEoaW50ZW50LCBFWFRSQV9TQ1JFRU5TSE9UKTsKLSAgICAgICAgICAgIGluZm8uZmluaXNoZWQgPSB0cnVlOworICAgICAgICBCdWdyZXBvcnRJbmZvIGluZm8gPSBnZXRJbmZvKHBpZCk7CisgICAgICAgIGlmIChpbmZvID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEhhcHBlbnMgd2hlbiBCVUdSRVBPUlRfRklOSVNIRUQgd2FzIHJlY2VpdmVkIHdpdGhvdXQgYSBCVUdSRVBPUlRfU1RBUlRFRCBmaXJzdC4KKyAgICAgICAgICAgIExvZy52KFRBRywgIkNyZWF0aW5nIGluZm8gZm9yIHVudHJhY2tlZCBwaWQgIiArIHBpZCk7CisgICAgICAgICAgICBpbmZvID0gbmV3IEJ1Z3JlcG9ydEluZm8obUNvbnRleHQsIHBpZCk7CisgICAgICAgICAgICBtUHJvY2Vzc2VzLnB1dChwaWQsIGluZm8pOwogICAgICAgICB9CisgICAgICAgIGluZm8ucmVuYW1lU2NyZWVuc2hvdHMobVNjcmVlbnNob3RzRGlyKTsKKyAgICAgICAgaW5mby5idWdyZXBvcnRGaWxlID0gZ2V0RmlsZUV4dHJhKGludGVudCwgRVhUUkFfQlVHUkVQT1JUKTsKKyAgICAgICAgZmluYWwgRmlsZSBzY3JlZW5zaG90ID0gZ2V0RmlsZUV4dHJhKGludGVudCwgRVhUUkFfU0NSRUVOU0hPVCk7CisgICAgICAgIGlmIChzY3JlZW5zaG90ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGluZm8uYWRkU2NyZWVuc2hvdChzY3JlZW5zaG90KTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLmZpbmlzaGVkID0gdHJ1ZTsKIAotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmYgPSBjb250ZXh0LmdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgZmluYWwgQ29uZmlndXJhdGlvbiBjb25mID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpOwogICAgICAgICBpZiAoKGNvbmYudWlNb2RlICYgQ29uZmlndXJhdGlvbi5VSV9NT0RFX1RZUEVfTUFTSykgIT0gQ29uZmlndXJhdGlvbi5VSV9NT0RFX1RZUEVfV0FUQ0gpIHsKLSAgICAgICAgICAgIHRyaWdnZXJMb2NhbE5vdGlmaWNhdGlvbihjb250ZXh0LCBpbmZvKTsKKyAgICAgICAgICAgIHRyaWdnZXJMb2NhbE5vdGlmaWNhdGlvbihtQ29udGV4dCwgaW5mbyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUzMCwxMSArNzIxLDExIEBACiAgICAgICogKHVzdWFsbHkgYnkgdHJpZ2dlcmluZyBpdCBvbiBhbm90aGVyIGNvbm5lY3RlZCBkZXZpY2UpOyB3ZSBkb24ndCBuZWVkIHRvIGRpc3BsYXkgdGhlCiAgICAgICogbm90aWZpY2F0aW9uIGluIHRoaXMgY2FzZS4KICAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHRyaWdnZXJMb2NhbE5vdGlmaWNhdGlvbihmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbykgeworICAgIHByaXZhdGUgdm9pZCB0cmlnZ2VyTG9jYWxOb3RpZmljYXRpb24oZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8pIHsKICAgICAgICAgaWYgKCFpbmZvLmJ1Z3JlcG9ydEZpbGUuZXhpc3RzKCkgfHwgIWluZm8uYnVncmVwb3J0RmlsZS5jYW5SZWFkKCkpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgIkNvdWxkIG5vdCByZWFkIGJ1Z3JlcG9ydCBmaWxlICIgKyBpbmZvLmJ1Z3JlcG9ydEZpbGUpOwotICAgICAgICAgICAgVG9hc3QubWFrZVRleHQoY29udGV4dCwgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYnVncmVwb3J0X3VucmVhZGFibGVfdGV4dCksCi0gICAgICAgICAgICAgICAgICAgIFRvYXN0LkxFTkdUSF9MT05HKS5zaG93KCk7CisgICAgICAgICAgICBUb2FzdC5tYWtlVGV4dChjb250ZXh0LCBSLnN0cmluZy5idWdyZXBvcnRfdW5yZWFkYWJsZV90ZXh0LCBUb2FzdC5MRU5HVEhfTE9ORykuc2hvdygpOworICAgICAgICAgICAgc3RvcFByb2dyZXNzKGluZm8ucGlkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01NjEsNyArNzUyLDYgQEAKICAgICAgICAgLy8gRmlsZXMgYXJlIGtlcHQgb24gcHJpdmF0ZSBzdG9yYWdlLCBzbyB0dXJuIGludG8gVXJpcyB0aGF0IHdlIGNhbgogICAgICAgICAvLyBncmFudCB0ZW1wb3JhcnkgcGVybWlzc2lvbnMgZm9yLgogICAgICAgICBmaW5hbCBVcmkgYnVncmVwb3J0VXJpID0gZ2V0VXJpKGNvbnRleHQsIGluZm8uYnVncmVwb3J0RmlsZSk7Ci0gICAgICAgIGZpbmFsIFVyaSBzY3JlZW5zaG90VXJpID0gZ2V0VXJpKGNvbnRleHQsIGluZm8uc2NyZWVuc2hvdEZpbGUpOwogCiAgICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fU0VORF9NVUxUSVBMRSk7CiAgICAgICAgIGZpbmFsIFN0cmluZyBtaW1lVHlwZSA9ICJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5idWdyZXBvcnQiOwpAQCAtNTc1LDcgKzc2NSw3IEBACiAgICAgICAgIC8vIEVYVFJBX1RFWFQgc2hvdWxkIGJlIGFuIEFycmF5TGlzdCwgYnV0IHNvbWUgY2xpZW50cyBhcmUgZXhwZWN0aW5nIGEgc2luZ2xlIFN0cmluZy4KICAgICAgICAgLy8gU28sIHRvIGF2b2lkIGFuIGV4Y2VwdGlvbiBvbiBJbnRlbnQubWlncmF0ZUV4dHJhU3RyZWFtVG9DbGlwRGF0YSgpLCB3ZSBuZWVkIHRvIG1hbnVhbGx5CiAgICAgICAgIC8vIGNyZWF0ZSB0aGUgQ2xpcERhdGEgb2JqZWN0IHdpdGggdGhlIGF0dGFjaG1lbnRzIFVSSXMuCi0gICAgICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZUJvZHkgPSBuZXcgU3RyaW5nQnVpbGRlcigiQnVpbGQgaW5mbzogIikKKyAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciBtZXNzYWdlQm9keSA9IG5ldyBTdHJpbmdCdWlsZGVyKCJCdWlsZCBpbmZvOiAiKQogICAgICAgICAgICAgLmFwcGVuZChTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uYnVpbGQuZGVzY3JpcHRpb24iKSkKICAgICAgICAgICAgIC5hcHBlbmQoIlxuU2VyaWFsIG51bWJlcjogIikKICAgICAgICAgICAgIC5hcHBlbmQoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLnNlcmlhbG5vIikpOwpAQCAtNTg2LDcgKzc3Niw4IEBACiAgICAgICAgIGZpbmFsIENsaXBEYXRhIGNsaXBEYXRhID0gbmV3IENsaXBEYXRhKG51bGwsIG5ldyBTdHJpbmdbXSB7IG1pbWVUeXBlIH0sCiAgICAgICAgICAgICAgICAgbmV3IENsaXBEYXRhLkl0ZW0obnVsbCwgbnVsbCwgbnVsbCwgYnVncmVwb3J0VXJpKSk7CiAgICAgICAgIGZpbmFsIEFycmF5TGlzdDxVcmk+IGF0dGFjaG1lbnRzID0gTGlzdHMubmV3QXJyYXlMaXN0KGJ1Z3JlcG9ydFVyaSk7Ci0gICAgICAgIGlmIChzY3JlZW5zaG90VXJpICE9IG51bGwpIHsKKyAgICAgICAgZm9yIChGaWxlIHNjcmVlbnNob3QgOiBpbmZvLnNjcmVlbnNob3RGaWxlcykgeworICAgICAgICAgICAgZmluYWwgVXJpIHNjcmVlbnNob3RVcmkgPSBnZXRVcmkoY29udGV4dCwgc2NyZWVuc2hvdCk7CiAgICAgICAgICAgICBjbGlwRGF0YS5hZGRJdGVtKG5ldyBDbGlwRGF0YS5JdGVtKG51bGwsIG51bGwsIG51bGwsIHNjcmVlbnNob3RVcmkpKTsKICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFkZChzY3JlZW5zaG90VXJpKTsKICAgICAgICAgfQpAQCAtNjA2LDI5ICs3OTcsMjUgQEAKICAgICAgKiBpbnRlbnQsIGJ1dCBpc3N1aW5nIGEgd2FybmluZyBkaWFsb2cgdGhlIGZpcnN0IHRpbWUuCiAgICAgICovCiAgICAgcHJpdmF0ZSB2b2lkIHNoYXJlQnVncmVwb3J0KGludCBwaWQpIHsKLSAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gZ2V0QXBwbGljYXRpb25Db250ZXh0KCk7Ci0gICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbzsKLSAgICAgICAgc3luY2hyb25pemVkIChtUHJvY2Vzc2VzKSB7Ci0gICAgICAgICAgICBpbmZvID0gbVByb2Nlc3Nlcy5nZXQocGlkKTsKLSAgICAgICAgICAgIGlmIChpbmZvID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBTaG91bGQgbm90IGhhcHBlbiwgc28gbG9nIGlmIGl0IGRvZXMuLi4KLSAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJJTlRFUk5BTCBFUlJPUjogbm8gaW5mbyBmb3IgUElEICIgKyBwaWQgKyAiOiAiICsgbVByb2Nlc3Nlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBmaW5hbCBCdWdyZXBvcnRJbmZvIGluZm8gPSBnZXRJbmZvKHBpZCk7CisgICAgICAgIGlmIChpbmZvID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBub3QgaGFwcGVuLCBzbyBsb2cgaWYgaXQgZG9lcy4uLgorICAgICAgICAgICAgTG9nLmUoVEFHLCAiSU5URVJOQUwgRVJST1I6IG5vIGluZm8gZm9yIFBJRCAiICsgcGlkICsgIjogIiArIG1Qcm9jZXNzZXMpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGZpbmFsIEludGVudCBzZW5kSW50ZW50ID0gYnVpbGRTZW5kSW50ZW50KGNvbnRleHQsIGluZm8pOworICAgICAgICBmaW5hbCBJbnRlbnQgc2VuZEludGVudCA9IGJ1aWxkU2VuZEludGVudChtQ29udGV4dCwgaW5mbyk7CiAgICAgICAgIGZpbmFsIEludGVudCBub3RpZkludGVudDsKIAogICAgICAgICAvLyBTZW5kIHRocm91Z2ggd2FybmluZyBkaWFsb2cgYnkgZGVmYXVsdAotICAgICAgICBpZiAoZ2V0V2FybmluZ1N0YXRlKGNvbnRleHQsIFNUQVRFX1NIT1cpID09IFNUQVRFX1NIT1cpIHsKLSAgICAgICAgICAgIG5vdGlmSW50ZW50ID0gYnVpbGRXYXJuaW5nSW50ZW50KGNvbnRleHQsIHNlbmRJbnRlbnQpOworICAgICAgICBpZiAoZ2V0V2FybmluZ1N0YXRlKG1Db250ZXh0LCBTVEFURV9TSE9XKSA9PSBTVEFURV9TSE9XKSB7CisgICAgICAgICAgICBub3RpZkludGVudCA9IGJ1aWxkV2FybmluZ0ludGVudChtQ29udGV4dCwgc2VuZEludGVudCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBub3RpZkludGVudCA9IHNlbmRJbnRlbnQ7CiAgICAgICAgIH0KICAgICAgICAgbm90aWZJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwogCiAgICAgICAgIC8vIFNlbmQgdGhlIHNoYXJlIGludGVudC4uLgotICAgICAgICBjb250ZXh0LnN0YXJ0QWN0aXZpdHkobm90aWZJbnRlbnQpOworICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KG5vdGlmSW50ZW50KTsKIAogICAgICAgICAvLyAuLi4gYW5kIHN0b3Agd2F0Y2hpbmcgdGhpcyBwcm9jZXNzLgogICAgICAgICBzdG9wUHJvZ3Jlc3MocGlkKTsKQEAgLTc4MSwxOSArOTY4LDUwIEBACiAgICAgICogVXBkYXRlcyB0aGUgdXNlci1wcm92aWRlZCBkZXRhaWxzIG9mIGEgYnVncmVwb3J0LgogICAgICAqLwogICAgIHByaXZhdGUgdm9pZCB1cGRhdGVCdWdyZXBvcnRJbmZvKGludCBwaWQsIFN0cmluZyBuYW1lLCBTdHJpbmcgdGl0bGUsIFN0cmluZyBkZXNjcmlwdGlvbikgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jZXNzZXMpIHsKLSAgICAgICAgICAgIGZpbmFsIEJ1Z3JlcG9ydEluZm8gaW5mbyA9IG1Qcm9jZXNzZXMuZ2V0KHBpZCk7Ci0gICAgICAgICAgICBpZiAoaW5mbyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiTm8gYnVncmVwb3J0IGluZm8gZm9yIFBJRCAiICsgcGlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvLnRpdGxlID0gdGl0bGU7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0gICAgICAgICAgICBpZiAobmFtZSAhPSBudWxsICYmICFpbmZvLm5hbWUuZXF1YWxzKG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1lID0gbmFtZTsKLSAgICAgICAgICAgICAgICB1cGRhdGVQcm9ncmVzcyhpbmZvKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZmluYWwgQnVncmVwb3J0SW5mbyBpbmZvID0gZ2V0SW5mbyhwaWQpOworICAgICAgICBpZiAoaW5mbyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaW5mby50aXRsZSA9IHRpdGxlOworICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgIWluZm8ubmFtZS5lcXVhbHMobmFtZSkpIHsKKyAgICAgICAgICAgIGluZm8ubmFtZSA9IG5hbWU7CisgICAgICAgICAgICB1cGRhdGVQcm9ncmVzcyhpbmZvKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjb2xsYXBzZU5vdGlmaWNhdGlvbkJhcigpIHsKKyAgICAgICAgc2VuZEJyb2FkY2FzdChuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBMb29wZXIgbmV3TG9vcGVyKFN0cmluZyBuYW1lKSB7CisgICAgICAgIGZpbmFsIEhhbmRsZXJUaHJlYWQgdGhyZWFkID0gbmV3IEhhbmRsZXJUaHJlYWQobmFtZSwgVEhSRUFEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpOworICAgICAgICB0aHJlYWQuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIHRocmVhZC5nZXRMb29wZXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUYWtlcyBhIHNjcmVlbnNob3QgYW5kIHNhdmUgaXQgdG8gdGhlIGdpdmVuIGxvY2F0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gdGFrZVNjcmVlbnNob3QoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgc2NyZWVuc2hvdEZpbGUpIHsKKyAgICAgICAgKChWaWJyYXRvcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuVklCUkFUT1JfU0VSVklDRSkpCisgICAgICAgICAgICAgICAgLnZpYnJhdGUoMTUwKTsKKyAgICAgICAgZmluYWwgUHJvY2Vzc0J1aWxkZXIgc2NyZWVuY2FwID0gbmV3IFByb2Nlc3NCdWlsZGVyKCkKKyAgICAgICAgICAgICAgICAuY29tbWFuZCgiL3N5c3RlbS9iaW4vc2NyZWVuY2FwIiwgIi1wIiwgc2NyZWVuc2hvdEZpbGUpOworICAgICAgICBMb2cuZChUQUcsICJUYWtpbmcgc2NyZWVuc2hvdCB1c2luZyAiICsgc2NyZWVuY2FwLmNvbW1hbmQoKSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgZXhpdFZhbHVlID0gc2NyZWVuY2FwLnN0YXJ0KCkud2FpdEZvcigpOworICAgICAgICAgICAgaWYgKGV4aXRWYWx1ZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMb2cuZShUQUcsICJzY3JlZW5jYXAgKCIgKyBzY3JlZW5jYXAuY29tbWFuZCgpICsgIikgZmFpbGVkOiAiICsgZXhpdFZhbHVlKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAic2NyZWVuY2FwICgiICsgc2NyZWVuY2FwLmNvbW1hbmQoKSArICIpIGZhaWxlZCIsIGUpOworICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJUaHJlYWQgaW50ZXJydXB0ZWQgd2hpbGUgc2NyZWVuY2FwIHN0aWxsIHJ1bm5pbmciKTsKKyAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuaW50ZXJydXB0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8qKgpAQCAtODQzLDcgKzEwNjEsNyBAQAogICAgICAgICAvKioKICAgICAgICAgICogU2V0cyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5kIGRpc3BsYXlzIHRoZSBkaWFsb2cuCiAgICAgICAgICAqLwotICAgICAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGluaXRpYWxpemUoQ29udGV4dCBjb250ZXh0LCBpbnQgcGlkLCBTdHJpbmcgbmFtZSwgU3RyaW5nIHRpdGxlLAorICAgICAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZShDb250ZXh0IGNvbnRleHQsIGludCBwaWQsIFN0cmluZyBuYW1lLCBTdHJpbmcgdGl0bGUsCiAgICAgICAgICAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICAvLyBGaXJzdCBpbml0aWFsaXplcyBzaW5nbGV0b24uCiAgICAgICAgICAgICBpZiAobURpYWxvZyA9PSBudWxsKSB7CkBAIC05MzcsNyArMTE1NSw3IEBACiAgICAgICAgICAqIFNhbml0aXplcyB0aGUgdXNlci1wcm92aWRlZCB2YWx1ZSBmb3IgdGhlIHtAY29kZSBuYW1lfSBmaWVsZCwgYXV0b21hdGljYWxseSByZXBsYWNpbmcKICAgICAgICAgICogaW52YWxpZCBjaGFyYWN0ZXJzIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICovCi0gICAgICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2FuaXRpemVOYW1lKCkgeworICAgICAgICBwcml2YXRlIHZvaWQgc2FuaXRpemVOYW1lKCkgewogICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBtSW5mb05hbWUuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMobVRlbXBOYW1lKSkgewogICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLnYoVEFHLCAibmFtZSBkaWRuJ3QgY2hhbmdlLCBubyBuZWVkIHRvIHNhbml0aXplOiAiICsgbmFtZSk7CkBAIC05NzMsNyArMTE5MSw3IEBACiAgICAgICAgICAqIDxwPk9uY2UgdGhlIGJ1Z3JlcG9ydCBpcyBmaW5pc2hlZCBkdW1wc3RhdGUgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIHRoZSBmaW5hbCBmaWxlcywgc28KICAgICAgICAgICogY2hhbmdpbmcgdGhlIG5hbWUgd291bGQgaGF2ZSBubyBlZmZlY3QuCiAgICAgICAgICAqLwotICAgICAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIG9uQnVncmVwb3J0RmluaXNoZWQoaW50IHBpZCkgeworICAgICAgICBwcml2YXRlIHZvaWQgb25CdWdyZXBvcnRGaW5pc2hlZChpbnQgcGlkKSB7CiAgICAgICAgICAgICBpZiAobUluZm9OYW1lICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBtSW5mb05hbWUuc2V0RW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgbUluZm9OYW1lLnNldFRleHQobVNhdmVkTmFtZSk7CkBAIC0xMDM0LDkgKzEyNTIsOSBAQAogICAgICAgICBGaWxlIGJ1Z3JlcG9ydEZpbGU7CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIFBhdGggb2YgdGhlIHNjcmVlbnNob3QgZmlsZS4KKyAgICAgICAgICogUGF0aCBvZiB0aGUgc2NyZWVuc2hvdCBmaWxlcy4KICAgICAgICAgICovCi0gICAgICAgIEZpbGUgc2NyZWVuc2hvdEZpbGU7CisgICAgICAgIExpc3Q8RmlsZT4gc2NyZWVuc2hvdEZpbGVzID0gbmV3IEFycmF5TGlzdDw+KDEpOwogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBXaGV0aGVyIGR1bXBzdGF0ZSBzZW50IGFuIGludGVudCBpbmZvcm1pbmcgaXQgaGFzIGZpbmlzaGVkLgpAQCAtMTA0NCw2ICsxMjYyLDExIEBACiAgICAgICAgIGJvb2xlYW4gZmluaXNoZWQ7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEludGVybmFsIGNvdW50ZXIgdXNlZCB0byBuYW1lIHNjcmVlbnNob3QgZmlsZXMuCisgICAgICAgICAqLworICAgICAgICBpbnQgc2NyZWVuc2hvdENvdW50ZXI7CisKKyAgICAgICAgLyoqCiAgICAgICAgICAqIENvbnN0cnVjdG9yIGZvciB0cmFja2VkIGJ1Z3JlcG9ydHMgLSB0eXBpY2FsbHkgY2FsbGVkIHVwb24gcmVjZWl2aW5nIEJVR1JFUE9SVF9TVEFSVEVELgogICAgICAgICAgKi8KICAgICAgICAgQnVncmVwb3J0SW5mbyhDb250ZXh0IGNvbnRleHQsIGludCBwaWQsIFN0cmluZyBuYW1lLCBpbnQgbWF4KSB7CkBAIC0xMDYyLDYgKzEyODUsNDUgQEAKICAgICAgICAgICAgIHRoaXMuZmluaXNoZWQgPSB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEdldHMgdGhlIG5hbWUgZm9yIG5leHQgc2NyZWVuc2hvdCBmaWxlLgorICAgICAgICAgKi8KKyAgICAgICAgU3RyaW5nIGdldFBhdGhOZXh0U2NyZWVuc2hvdCgpIHsKKyAgICAgICAgICAgIHNjcmVlbnNob3RDb3VudGVyICsrOworICAgICAgICAgICAgcmV0dXJuICJzY3JlZW5zaG90LSIgKyBwaWQgKyAiLSIgKyBzY3JlZW5zaG90Q291bnRlciArICIucG5nIjsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBTYXZlcyB0aGUgbG9jYXRpb24gb2YgYSB0YWtlbiBzY3JlZW5zaG90IHNvIGl0IGNhbiBiZSBzZW50IG91dCBhdCB0aGUgZW5kLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBhZGRTY3JlZW5zaG90KEZpbGUgc2NyZWVuc2hvdCkgeworICAgICAgICAgICAgc2NyZWVuc2hvdEZpbGVzLmFkZChzY3JlZW5zaG90KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZW5hbWUgYWxsIHNjcmVlbnNob3RzIGZpbGVzIHNvIHRoYXQgdGhleSBjb250YWluIHRoZSB1c2VyLWdlbmVyYXRlZCBuYW1lIGluc3RlYWQgb2YgcGlkLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCByZW5hbWVTY3JlZW5zaG90cyhGaWxlIHNjcmVlbnNob3REaXIpIHsKKyAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShuYW1lKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIExpc3Q8RmlsZT4gcmVuYW1lZEZpbGVzID0gbmV3IEFycmF5TGlzdDw+KHNjcmVlbnNob3RGaWxlcy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChGaWxlIG9sZEZpbGUgOiBzY3JlZW5zaG90RmlsZXMpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgb2xkTmFtZSA9IG9sZEZpbGUuZ2V0TmFtZSgpOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuZXdOYW1lID0gb2xkTmFtZS5yZXBsYWNlKEludGVnZXIudG9TdHJpbmcocGlkKSwgbmFtZSk7CisgICAgICAgICAgICAgICAgZmluYWwgRmlsZSBuZXdGaWxlOworICAgICAgICAgICAgICAgIGlmICghbmV3TmFtZS5lcXVhbHMob2xkTmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgRmlsZSByZW5hbWVkRmlsZSA9IG5ldyBGaWxlKHNjcmVlbnNob3REaXIsIG5ld05hbWUpOworICAgICAgICAgICAgICAgICAgICBuZXdGaWxlID0gb2xkRmlsZS5yZW5hbWVUbyhyZW5hbWVkRmlsZSkgPyByZW5hbWVkRmlsZSA6IG9sZEZpbGU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiTmFtZSBkaWRuJ3QgY2hhbmdlOiAiICsgb2xkTmFtZSk7IC8vIFNob3VsZG4ndCBoYXBwZW4uCisgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUgPSBvbGRGaWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZW5hbWVkRmlsZXMuYWRkKG5ld0ZpbGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2NyZWVuc2hvdEZpbGVzID0gcmVuYW1lZEZpbGVzOworICAgICAgICB9CisKICAgICAgICAgU3RyaW5nIGdldEZvcm1hdHRlZExhc3RVcGRhdGUoKSB7CiAgICAgICAgICAgICByZXR1cm4gRGF0ZVV0aWxzLmZvcm1hdERhdGVUaW1lKGNvbnRleHQsIGxhc3RVcGRhdGUsCiAgICAgICAgICAgICAgICAgICAgIERhdGVVdGlscy5GT1JNQVRfU0hPV19EQVRFIHwgRGF0ZVV0aWxzLkZPUk1BVF9TSE9XX1RJTUUpOwpAQCAtMTA3Miw3ICsxMzM0LDcgQEAKICAgICAgICAgICAgIGZpbmFsIGZsb2F0IHBlcmNlbnQgPSAoKGZsb2F0KSBwcm9ncmVzcyAqIDEwMCAvIG1heCk7CiAgICAgICAgICAgICByZXR1cm4gInBpZDogIiArIHBpZCArICIsIG5hbWU6ICIgKyBuYW1lICsgIiwgZmluaXNoZWQ6ICIgKyBmaW5pc2hlZAogICAgICAgICAgICAgICAgICAgICArICJcblx0dGl0bGU6ICIgKyB0aXRsZSArICJcblx0ZGVzY3JpcHRpb246ICIgKyBkZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAgICArICJcblx0ZmlsZTogIiArIGJ1Z3JlcG9ydEZpbGUgKyAiXG5cdHNjcmVlbnNob3Q6ICIgKyBzY3JlZW5zaG90RmlsZQorICAgICAgICAgICAgICAgICAgICArICJcblx0ZmlsZTogIiArIGJ1Z3JlcG9ydEZpbGUgKyAiXG5cdHNjcmVlbnNob3RzOiAiICsgc2NyZWVuc2hvdEZpbGVzCiAgICAgICAgICAgICAgICAgICAgICsgIlxuXHRwcm9ncmVzczogIiArIHByb2dyZXNzICsgIi8iICsgbWF4ICsgIigiICsgcGVyY2VudCArICIpIgogICAgICAgICAgICAgICAgICAgICArICJcblx0bGFzdF91cGRhdGU6ICIgKyBnZXRGb3JtYXR0ZWRMYXN0VXBkYXRlKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1NoZWxsL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9zaGVsbC9CdWdyZXBvcnRSZWNlaXZlclRlc3QuamF2YSBiL3BhY2thZ2VzL1NoZWxsL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9zaGVsbC9CdWdyZXBvcnRSZWNlaXZlclRlc3QuamF2YQppbmRleCA3ZjYwOWZhLi42YmVlNzY3IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TaGVsbC90ZXN0cy9zcmMvY29tL2FuZHJvaWQvc2hlbGwvQnVncmVwb3J0UmVjZWl2ZXJUZXN0LmphdmEKKysrIGIvcGFja2FnZXMvU2hlbGwvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL3NoZWxsL0J1Z3JlcG9ydFJlY2VpdmVyVGVzdC5qYXZhCkBAIC0yNSw2ICsyNSw3IEBACiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNoZWxsLkJ1Z3JlcG9ydFByb2dyZXNzU2VydmljZS5FWFRSQV9TQ1JFRU5TSE9UOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zaGVsbC5CdWdyZXBvcnRQcm9ncmVzc1NlcnZpY2UuSU5URU5UX0JVR1JFUE9SVF9GSU5JU0hFRDsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2hlbGwuQnVncmVwb3J0UHJvZ3Jlc3NTZXJ2aWNlLklOVEVOVF9CVUdSRVBPUlRfU1RBUlRFRDsKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2hlbGwuQnVncmVwb3J0UHJvZ3Jlc3NTZXJ2aWNlLlNDUkVFTlNIT1RfREVMQVlfU0VDT05EUzsKIAogaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW07CiBpbXBvcnQgamF2YS5pby5CdWZmZXJlZFdyaXRlcjsKQEAgLTM1LDcgKzM2LDEwIEBACiBpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKIGltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKIGltcG9ydCBqYXZhLmlvLldyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5Tb3J0ZWRTZXQ7CitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CiBpbXBvcnQgamF2YS51dGlsLnppcC5aaXBFbnRyeTsKIGltcG9ydCBqYXZhLnV0aWwuemlwLlppcElucHV0U3RyZWFtOwogaW1wb3J0IGphdmEudXRpbC56aXAuWmlwT3V0cHV0U3RyZWFtOwpAQCAtNTYsNiArNjAsNyBAQAogaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC50ZXN0LnVpYXV0b21hdG9yLlVpT2JqZWN0OwogaW1wb3J0IGFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZTsKIGltcG9ydCBhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLmFubm90YXRpb24uTGFyZ2VUZXN0OworaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZVV0aWxzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKIGltcG9ydCBjb20uYW5kcm9pZC5zaGVsbC5BY3Rpb25TZW5kTXVsdGlwbGVDb25zdW1lckFjdGl2aXR5LkN1c3RvbUFjdGlvblNlbmRNdWx0aXBsZUxpc3RlbmVyOwpAQCAtMTUxLDcgKzE1NiwyNSBAQAogCiAgICAgICAgIEJ1bmRsZSBleHRyYXMgPQogICAgICAgICAgICAgICAgIHNlbmRCdWdyZXBvcnRGaW5pc2hlZEFuZEdldFNoYXJlZEludGVudChQSUQsIG1QbGFpblRleHRQYXRoLCBtU2NyZWVuc2hvdFBhdGgpOwotICAgICAgICBhc3NlcnRBY3Rpb25TZW5kTXVsdGlwbGUoZXh0cmFzLCBCVUdSRVBPUlRfQ09OVEVOVCwgU0NSRUVOU0hPVF9DT05URU5UKTsKKyAgICAgICAgYXNzZXJ0QWN0aW9uU2VuZE11bHRpcGxlKGV4dHJhcywgQlVHUkVQT1JUX0ZJTEUsIEJVR1JFUE9SVF9DT05URU5ULCBQSUQsIE5BTUUsIFpJUF9GSUxFLAorICAgICAgICAgICAgICAgIG51bGwsIDEpOworCisgICAgICAgIGFzc2VydFNlcnZpY2VOb3RSdW5uaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdFByb2dyZXNzX3Rha2VFeHRyYVNjcmVlbnNob3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcmVzZXRQcm9wZXJ0aWVzKCk7CisgICAgICAgIHNlbmRCdWdyZXBvcnRTdGFydGVkKDEwMDApOworCisgICAgICAgIHdhaXRGb3JTY3JlZW5zaG90QnV0dG9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgdGFrZVNjcmVlbnNob3QoKTsKKyAgICAgICAgYXNzZXJ0U2NyZWVuc2hvdEJ1dHRvbkVuYWJsZWQoZmFsc2UpOworICAgICAgICB3YWl0Rm9yU2NyZWVuc2hvdEJ1dHRvbkVuYWJsZWQodHJ1ZSk7CisKKyAgICAgICAgQnVuZGxlIGV4dHJhcyA9CisgICAgICAgICAgICAgICAgc2VuZEJ1Z3JlcG9ydEZpbmlzaGVkQW5kR2V0U2hhcmVkSW50ZW50KFBJRCwgbVBsYWluVGV4dFBhdGgsIG1TY3JlZW5zaG90UGF0aCk7CisgICAgICAgIGFzc2VydEFjdGlvblNlbmRNdWx0aXBsZShleHRyYXMsIEJVR1JFUE9SVF9GSUxFLCBCVUdSRVBPUlRfQ09OVEVOVCwgUElELCBOQU1FLCBaSVBfRklMRSwKKyAgICAgICAgICAgICAgICBudWxsLCAyKTsKIAogICAgICAgICBhc3NlcnRTZXJ2aWNlTm90UnVubmluZygpOwogICAgIH0KQEAgLTE5NCw3ICsyMTcsOCBAQAogCiAgICAgICAgIEJ1bmRsZSBleHRyYXMgPSBzZW5kQnVncmVwb3J0RmluaXNoZWRBbmRHZXRTaGFyZWRJbnRlbnQoUElELCBtUGxhaW5UZXh0UGF0aCwKICAgICAgICAgICAgICAgICBtU2NyZWVuc2hvdFBhdGgpOwotICAgICAgICBhc3NlcnRBY3Rpb25TZW5kTXVsdGlwbGUoZXh0cmFzLCBUSVRMRSwgbURlc2NyaXB0aW9uLCBCVUdSRVBPUlRfQ09OVEVOVCwgU0NSRUVOU0hPVF9DT05URU5UKTsKKyAgICAgICAgYXNzZXJ0QWN0aW9uU2VuZE11bHRpcGxlKGV4dHJhcywgQlVHUkVQT1JUX0ZJTEUsIEJVR1JFUE9SVF9DT05URU5ULCBQSUQsIE5FV19OQU1FLCBUSVRMRSwKKyAgICAgICAgICAgICAgICBtRGVzY3JpcHRpb24sIDEpOwogCiAgICAgICAgIGFzc2VydFNlcnZpY2VOb3RSdW5uaW5nKCk7CiAgICAgfQpAQCAtMjI1LDggKzI0OSw4IEBACiAKICAgICAgICAgLy8gRmluYWxseSwgc2hhcmUgYnVncmVwb3J0LgogICAgICAgICBCdW5kbGUgZXh0cmFzID0gYWNjZXB0QnVncmVwb3J0QW5kR2V0U2hhcmVkSW50ZW50KCk7Ci0gICAgICAgIGFzc2VydEFjdGlvblNlbmRNdWx0aXBsZShleHRyYXMsIFRJVExFLCBtRGVzY3JpcHRpb24sIEJVR1JFUE9SVF9DT05URU5ULAotICAgICAgICAgICAgICAgIFNDUkVFTlNIT1RfQ09OVEVOVCk7CisgICAgICAgIGFzc2VydEFjdGlvblNlbmRNdWx0aXBsZShleHRyYXMsIEJVR1JFUE9SVF9GSUxFLCBCVUdSRVBPUlRfQ09OVEVOVCwgUElELCBOQU1FLCBUSVRMRSwKKyAgICAgICAgICAgICAgICBtRGVzY3JpcHRpb24sIDEpOwogCiAgICAgICAgIGFzc2VydFNlcnZpY2VOb3RSdW5uaW5nKCk7CiAgICAgfQpAQCAtMjg4LDcgKzMxMiw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIGFzc2VydFByb2dyZXNzTm90aWZpY2F0aW9uKFN0cmluZyBuYW1lLCBTdHJpbmcgcGVyY2VudCkgewotICAgICAgICAvLyBUT0RPOiBpdCBjdXJyZW50IGxvb2tzIGZvciAzIGRpc3RpbmN0IG9iamVjdHMsIHdpdGhvdXQgdGFraW5nIGFkdmFudGFnZSBvZiB0aGVpcgorICAgICAgICAvLyBUT0RPOiBpdCBjdXJyZW50bHkgbG9va3MgZm9yIDMgZGlzdGluY3Qgb2JqZWN0cywgd2l0aG91dCB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZWlyCiAgICAgICAgIC8vIHJlbGF0aW9uc2hpcC4KICAgICAgICAgb3BlblByb2dyZXNzTm90aWZpY2F0aW9uKCk7CiAgICAgICAgIExvZy52KFRBRywgIkxvb2tpbmcgZm9yIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBkZXRhaWxzOiAnIiArIG5hbWUgKyAiLSIgKyBwZXJjZW50ICsgIiciKTsKQEAgLTMxMSw3ICszMzUsNyBAQAogICAgIC8qKgogICAgICAqIFNlbmRzIGEgImJ1Z3JlcG9ydCBzdGFydGVkIiBpbnRlbnQgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCiAgICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIHNlbmRCdWdyZXBvcnRTdGFydGVkKGludCBtYXgpIHsKKyAgICBwcml2YXRlIHZvaWQgc2VuZEJ1Z3JlcG9ydFN0YXJ0ZWQoaW50IG1heCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KElOVEVOVF9CVUdSRVBPUlRfU1RBUlRFRCk7CiAgICAgICAgIGludGVudC5wdXRFeHRyYShFWFRSQV9QSUQsIFBJRCk7CiAgICAgICAgIGludGVudC5wdXRFeHRyYShFWFRSQV9OQU1FLCBOQU1FKTsKQEAgLTM3NywxNSArNDAxLDI5IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQXNzZXJ0cyB0aGUgcHJvcGVyIEFDVElPTl9TRU5EX01VTFRJUExFIGludGVudCB3YXMgc2VudC4KKyAgICAgKiBBc3NlcnRzIHRoZSBwcm9wZXIge0BsaW5rIEludGVudCNBQ1RJT05fU0VORF9NVUxUSVBMRX0gaW50ZW50IHdhcyBzZW50LgogICAgICAqLwogICAgIHByaXZhdGUgdm9pZCBhc3NlcnRBY3Rpb25TZW5kTXVsdGlwbGUoQnVuZGxlIGV4dHJhcywgU3RyaW5nIGJ1Z3JlcG9ydENvbnRlbnQsCiAgICAgICAgICAgICBTdHJpbmcgc2NyZWVuc2hvdENvbnRlbnQpIHRocm93cyBJT0V4Y2VwdGlvbiB7Ci0gICAgICAgIGFzc2VydEFjdGlvblNlbmRNdWx0aXBsZShleHRyYXMsIFpJUF9GSUxFLCBudWxsLCBidWdyZXBvcnRDb250ZW50LCBzY3JlZW5zaG90Q29udGVudCk7CisgICAgICAgIGFzc2VydEFjdGlvblNlbmRNdWx0aXBsZShleHRyYXMsIGJ1Z3JlcG9ydENvbnRlbnQsIHNjcmVlbnNob3RDb250ZW50LCBQSUQsIG51bGwsIFpJUF9GSUxFLAorICAgICAgICAgICAgICAgIG51bGwsIDApOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBhc3NlcnRBY3Rpb25TZW5kTXVsdGlwbGUoQnVuZGxlIGV4dHJhcywgU3RyaW5nIHN1YmplY3QsIFN0cmluZyBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgIFN0cmluZyBidWdyZXBvcnRDb250ZW50LCBTdHJpbmcgc2NyZWVuc2hvdENvbnRlbnQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgLyoqCisgICAgICogQXNzZXJ0cyB0aGUgcHJvcGVyIHtAbGluayBJbnRlbnQjQUNUSU9OX1NFTkRfTVVMVElQTEV9IGludGVudCB3YXMgc2VudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBleHRyYXMgZXh0cmFzIHJlY2VpdmVkIGluIHRoZSBpbnRlbnQKKyAgICAgKiBAcGFyYW0gYnVncmVwb3J0Q29udGVudCBleHBlY3RlZCBjb250ZW50IGluIHRoZSBidWdyZXBvcnQgZmlsZQorICAgICAqIEBwYXJhbSBzY3JlZW5zaG90Q29udGVudCBleHBlY3RlZCBjb250ZW50IGluIHRoZSBzY3JlZW5zaG90IGZpbGUgKHNlbnQgYnkgZHVtcHN0YXRlKSwgaWYgYW55CisgICAgICogQHBhcmFtIHBpZCBlbXVsYXRlZCBkdW1wc3RhdGUgcGlkCisgICAgICogQHBhcmFtIG5hbWUgYnVncmVwb3J0IG5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIKKyAgICAgKiBAcGFyYW0gdGl0bGUgYnVncmVwb3J0IG5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgKG9yIHJlY2VpdmVkIGJ5IGR1bXBzdGF0ZSkKKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gYnVncmVwb3J0IGRlc2NyaXB0aW9uIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyCisgICAgICogQHBhcmFtIG51bWJlclNjcmVlbnNob3RzIGV4cGVjdGVkIG51bWJlciBvZiBzY3JlZW5zaG90cyB0YWtlbiBieSBTaGVsbC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYXNzZXJ0QWN0aW9uU2VuZE11bHRpcGxlKEJ1bmRsZSBleHRyYXMsIFN0cmluZyBidWdyZXBvcnRDb250ZW50LAorICAgICAgICAgICAgU3RyaW5nIHNjcmVlbnNob3RDb250ZW50LCBpbnQgcGlkLCBTdHJpbmcgbmFtZSwgU3RyaW5nIHRpdGxlLCBTdHJpbmcgZGVzY3JpcHRpb24sCisgICAgICAgICAgICBpbnQgbnVtYmVyU2NyZWVuc2hvdHMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgIFN0cmluZyBib2R5ID0gZXh0cmFzLmdldFN0cmluZyhJbnRlbnQuRVhUUkFfVEVYVCk7CiAgICAgICAgIGFzc2VydENvbnRhaW5zUmVnZXgoIm1pc3NpbmcgYnVpbGQgaW5mbyIsCiAgICAgICAgICAgICAgICAgU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLmJ1aWxkLmRlc2NyaXB0aW9uIiksIGJvZHkpOwpAQCAtMzk1LDMxICs0MzMsNjEgQEAKICAgICAgICAgICAgIGFzc2VydENvbnRhaW5zUmVnZXgoIm1pc3NpbmcgZGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbiwgYm9keSk7CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRFcXVhbHMoIndyb25nIHN1YmplY3QiLCBzdWJqZWN0LCBleHRyYXMuZ2V0U3RyaW5nKEludGVudC5FWFRSQV9TVUJKRUNUKSk7CisgICAgICAgIGFzc2VydEVxdWFscygid3Jvbmcgc3ViamVjdCIsIHRpdGxlLCBleHRyYXMuZ2V0U3RyaW5nKEludGVudC5FWFRSQV9TVUJKRUNUKSk7CiAKICAgICAgICAgTGlzdDxVcmk+IGF0dGFjaG1lbnRzID0gZXh0cmFzLmdldFBhcmNlbGFibGVBcnJheUxpc3QoSW50ZW50LkVYVFJBX1NUUkVBTSk7Ci0gICAgICAgIGludCBleHBlY3RlZFNpemUgPSBzY3JlZW5zaG90Q29udGVudCAhPSBudWxsID8gMiA6IDE7CisgICAgICAgIGludCBleHBlY3RlZE51bWJlclNjcmVlbnNob3RzID0gbnVtYmVyU2NyZWVuc2hvdHM7CisgICAgICAgIGlmIChzY3JlZW5zaG90Q29udGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICBleHBlY3RlZE51bWJlclNjcmVlbnNob3RzICsrOyAvLyBBZGQgc2NyZWVuc2hvdCByZWNlaXZlZCBieSBkdW1wc3RhdGUKKyAgICAgICAgfQorICAgICAgICBpbnQgZXhwZWN0ZWRTaXplID0gZXhwZWN0ZWROdW1iZXJTY3JlZW5zaG90cyArIDE7IC8vIEFsbCBzY3JlZW5zaG90cyBwbHVzIHRoZSBidWdyZXBvcnQgZmlsZQogICAgICAgICBhc3NlcnRFcXVhbHMoIndyb25nIG51bWJlciBvZiBhdHRhY2htZW50cyIsIGV4cGVjdGVkU2l6ZSwgYXR0YWNobWVudHMuc2l6ZSgpKTsKIAogICAgICAgICAvLyBOZWVkIHRvIGludGVyYWN0IHRocm91Z2ggYWxsIGF0dGFjaG1lbnRzLCBzaW5jZSBvcmRlciBpcyBub3QgZ3VhcmFudGVlZC4KLSAgICAgICAgVXJpIHppcFVyaSA9IG51bGwsIHNjcmVlbnNob3RVcmkgPSBudWxsOworICAgICAgICBVcmkgemlwVXJpID0gbnVsbDsKKyAgICAgICAgTGlzdDxVcmk+IHNjcmVlbnNob3RVcmlzID0gbmV3IEFycmF5TGlzdDw+KGV4cGVjdGVkTnVtYmVyU2NyZWVuc2hvdHMpOwogICAgICAgICBmb3IgKFVyaSBhdHRhY2htZW50IDogYXR0YWNobWVudHMpIHsKICAgICAgICAgICAgIGlmIChhdHRhY2htZW50LmdldFBhdGgoKS5lbmRzV2l0aCgiLnppcCIpKSB7CiAgICAgICAgICAgICAgICAgemlwVXJpID0gYXR0YWNobWVudDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdHRhY2htZW50LmdldFBhdGgoKS5lbmRzV2l0aCgiLnBuZyIpKSB7Ci0gICAgICAgICAgICAgICAgc2NyZWVuc2hvdFVyaSA9IGF0dGFjaG1lbnQ7CisgICAgICAgICAgICAgICAgc2NyZWVuc2hvdFVyaXMuYWRkKGF0dGFjaG1lbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGFzc2VydE5vdE51bGwoImRpZCBub3QgZ2V0IC56aXAgYXR0YWNobWVudCIsIHppcFVyaSk7CiAgICAgICAgIGFzc2VydFppcENvbnRlbnQoemlwVXJpLCBCVUdSRVBPUlRfRklMRSwgQlVHUkVQT1JUX0NPTlRFTlQpOwogCi0gICAgICAgIGlmIChzY3JlZW5zaG90Q29udGVudCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBhc3NlcnROb3ROdWxsKCJkaWQgbm90IGdldCAucG5nIGF0dGFjaG1lbnQiLCBzY3JlZW5zaG90VXJpKTsKLSAgICAgICAgICAgIGFzc2VydENvbnRlbnQoc2NyZWVuc2hvdFVyaSwgU0NSRUVOU0hPVF9DT05URU5UKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydE51bGwoInNob3VsZCBub3QgaGF2ZSAucG5nIGF0dGFjaG1lbnQiLCBzY3JlZW5zaG90VXJpKTsKKyAgICAgICAgLy8gVVJJIG9mIHRoZSBzY3JlZW5zaG90IHRha2VuIGJ5IGR1bXBzdGF0ZS4KKyAgICAgICAgVXJpIGV4dGVybmFsU2NyZWVuc2hvdFVyaSA9IG51bGw7CisgICAgICAgIFNvcnRlZFNldDxTdHJpbmc+IGludGVybmFsU2NyZWVuc2hvdE5hbWVzID0gbmV3IFRyZWVTZXQ8PigpOworICAgICAgICBmb3IgKFVyaSBzY3JlZW5zaG90VXJpIDogc2NyZWVuc2hvdFVyaXMpIHsKKyAgICAgICAgICAgIFN0cmluZyBzY3JlZW5zaG90TmFtZSA9IHNjcmVlbnNob3RVcmkuZ2V0TGFzdFBhdGhTZWdtZW50KCk7CisgICAgICAgICAgICBpZiAoc2NyZWVuc2hvdE5hbWUuZW5kc1dpdGgoU0NSRUVOU0hPVF9GSUxFKSkgeworICAgICAgICAgICAgICAgIGV4dGVybmFsU2NyZWVuc2hvdFVyaSA9IHNjcmVlbnNob3RVcmk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGludGVybmFsU2NyZWVuc2hvdE5hbWVzLmFkZChzY3JlZW5zaG90TmFtZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gQ2hlY2sgZXh0ZXJuYWwgc2NyZWVuc2hvdAorICAgICAgICBpZiAoc2NyZWVuc2hvdENvbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgYXNzZXJ0Tm90TnVsbCgiZGlkIG5vdCBnZXQgLnBuZyBhdHRhY2htZW50IGZvciBleHRlcm5hbCBzY3JlZW5zaG90IiwKKyAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxTY3JlZW5zaG90VXJpKTsKKyAgICAgICAgICAgIGFzc2VydENvbnRlbnQoZXh0ZXJuYWxTY3JlZW5zaG90VXJpLCBTQ1JFRU5TSE9UX0NPTlRFTlQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0TnVsbCgic2hvdWxkIG5vdCBoYXZlIC5wbmcgYXR0YWNobWVudCBmb3IgZXh0ZXJuYWwgc2NyZWVuc2hvdCIsCisgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU2NyZWVuc2hvdFVyaSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gQ2hlY2sgaW50ZXJuYWwgc2NyZWVuc2hvdHMuCisgICAgICAgIFNvcnRlZFNldDxTdHJpbmc+IGV4cGVjdGVkTmFtZXMgPSBuZXcgVHJlZVNldDw+KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBudW1iZXJTY3JlZW5zaG90czsgaSsrKSB7CisgICAgICAgICAgICBTdHJpbmcgcHJlZml4ID0gbmFtZSAhPSBudWxsID8gbmFtZSA6IEludGVnZXIudG9TdHJpbmcocGlkKTsKKyAgICAgICAgICAgIFN0cmluZyBleHBlY3RlZE5hbWUgPSAic2NyZWVuc2hvdC0iICsgcHJlZml4ICsgIi0iICsgaSArICIucG5nIjsKKyAgICAgICAgICAgIGV4cGVjdGVkTmFtZXMuYWRkKGV4cGVjdGVkTmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gSWRlYWxseSB3ZSBzaG91bGQgdXNlIE1vcmVBc3NlcnRzLCBidXQgdGhlIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiBmYWlsdXJlIGlzIG5vdAorICAgICAgICAvLyByZWFsbHkgdXNlZnVsLgorICAgICAgICBhc3NlcnRFcXVhbHMoIndyb25nIG5hbWVzIGZvciBpbnRlcm5hbCBzY3JlZW5zaG90cyIsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWROYW1lcywgaW50ZXJuYWxTY3JlZW5zaG90TmFtZXMpOwogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBhc3NlcnRDb250ZW50KFVyaSB1cmksIFN0cmluZyBleHBlY3RlZENvbnRlbnQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CkBAIC01MDYsNiArNTc0LDQ3IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogR2V0cyB0aGUgbm90aWZpY2F0aW9uIGJ1dHRvbiB1c2VkIHRvIHRha2UgYSBzY3JlZW5zaG90LgorICAgICAqLworICAgIHByaXZhdGUgVWlPYmplY3QgZ2V0U2NyZWVuc2hvdEJ1dHRvbigpIHsKKyAgICAgICAgb3BlblByb2dyZXNzTm90aWZpY2F0aW9uKCk7CisgICAgICAgIHJldHVybiBtVWlCb3QuZ2V0VmlzaWJsZU9iamVjdCgKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYnVncmVwb3J0X3NjcmVlbnNob3RfYWN0aW9uKS50b1VwcGVyQ2FzZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUYWtlcyBhIHNjcmVlbnNob3QgdXNpbmcgdGhlIHN5c3RlbSBub3RpZmljYXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHRha2VTY3JlZW5zaG90KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFVpT2JqZWN0IHNjcmVlbnNob3RCdXR0b24gPSBnZXRTY3JlZW5zaG90QnV0dG9uKCk7CisgICAgICAgIG1VaUJvdC5jbGljayhzY3JlZW5zaG90QnV0dG9uLCAic2NyZWVuc2hvdF9idXR0b24iKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFVpT2JqZWN0IHdhaXRGb3JTY3JlZW5zaG90QnV0dG9uRW5hYmxlZChib29sZWFuIGV4cGVjdGVkRW5hYmxlZCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFVpT2JqZWN0IHNjcmVlbnNob3RCdXR0b24gPSBnZXRTY3JlZW5zaG90QnV0dG9uKCk7CisgICAgICAgIGludCBtYXhBdHRlbXB0cyA9IFNDUkVFTlNIT1RfREVMQVlfU0VDT05EUyArIDI7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbGVhbiBlbmFibGVkID0gc2NyZWVuc2hvdEJ1dHRvbi5pc0VuYWJsZWQoKTsKKyAgICAgICAgICAgIGlmIChlbmFibGVkID09IGV4cGVjdGVkRW5hYmxlZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBzY3JlZW5zaG90QnV0dG9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgTG9nLnYoVEFHLCAiU2xlZXBpbmcgZm9yIDEgc2Vjb25kIHdoaWxlIHdhaXRpbmcgZm9yIHNjcmVlbnNob3QuZW5hYmxlIHRvIGJlICIKKyAgICAgICAgICAgICAgICAgICAgKyBleHBlY3RlZEVuYWJsZWQgKyAiIChhdHRlbXB0ICIgKyBpICsgIikiKTsKKyAgICAgICAgICAgIFRocmVhZC5zbGVlcChEYXRlVXRpbHMuU0VDT05EX0lOX01JTExJUyk7CisgICAgICAgIH0gd2hpbGUgKGkgPD0gbWF4QXR0ZW1wdHMpOworICAgICAgICBmYWlsKCJzY3JlZW5zaG90LmVuYWJsZSBkaWRuJ3QgY2hhbmdlIHRvICIgKyBleHBlY3RlZEVuYWJsZWQgKyAiIGluICIgKyBtYXhBdHRlbXB0cyArICJzIik7CisgICAgICAgIHJldHVybiBzY3JlZW5zaG90QnV0dG9uOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRTY3JlZW5zaG90QnV0dG9uRW5hYmxlZChib29sZWFuIGV4cGVjdGVkRW5hYmxlZCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFVpT2JqZWN0IHNjcmVlbnNob3RCdXR0b24gPSBnZXRTY3JlZW5zaG90QnV0dG9uKCk7CisgICAgICAgIGFzc2VydEVxdWFscygid3Jvbmcgc3RhdGUgZm9yIHNjcmVlbnNob3QgYnV0dG9uICIsIGV4cGVjdGVkRW5hYmxlZCwKKyAgICAgICAgICAgICAgICBzY3JlZW5zaG90QnV0dG9uLmlzRW5hYmxlZCgpKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBIZWxwZXIgY2xhc3MgY29udGFpbmluZyB0aGUgVWlPYmplY3RzIHByZXNlbnQgaW4gdGhlIGJ1Z3JlcG9ydCBpbmZvIGRpYWxvZy4KICAgICAgKi8KICAgICBwcml2YXRlIGZpbmFsIGNsYXNzIERldGFpbHNVaSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkTWFuaWZlc3QueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCAwMmRkYWU2Li45NTQ2YzhkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkTWFuaWZlc3QueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTEzOSw2ICsxMzksOSBAQAogICAgIDwhLS0gQWRkaW5nIFF1aWNrIFNldHRpbmdzIHRpbGVzIC0tPgogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uQklORF9RVUlDS19TRVRUSU5HU19USUxFIiAvPgogCisgICAgPCEtLSBCbG9jayBub3RpZmljYXRpb25zIGlubGluZSBub3RpZmljYXRpb25zIC0tPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uVVBEQVRFX0FQUF9PUFNfU1RBVFMiIC8+CisKICAgICA8YXBwbGljYXRpb24KICAgICAgICAgYW5kcm9pZDpuYW1lPSIuU3lzdGVtVUlBcHBsaWNhdGlvbiIKICAgICAgICAgYW5kcm9pZDpwZXJzaXN0ZW50PSJ0cnVlIgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlL2ljX2NvbG9yaXplLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9pY19jb2xvcml6ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlmZDZkOQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9pY19jb2xvcml6ZS54bWwKQEAgLTAsMCArMSwyNCBAQAorPCEtLQorICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8dmVjdG9yIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICAgICAgYW5kcm9pZDp3aWR0aD0iMjQuMGRwIgorICAgICAgICBhbmRyb2lkOmhlaWdodD0iMjQuMGRwIgorICAgICAgICBhbmRyb2lkOnZpZXdwb3J0V2lkdGg9IjI0LjAiCisgICAgICAgIGFuZHJvaWQ6dmlld3BvcnRIZWlnaHQ9IjI0LjAiPgorICAgIDxwYXRoCisgICAgICAgIGFuZHJvaWQ6ZmlsbENvbG9yPSIjRkZGRkZGRkYiCisgICAgICAgIGFuZHJvaWQ6cGF0aERhdGE9Ik0yMC43MSw1LjYzbC0yLjM0LC0yLjM0Yy0wLjM5LC0wLjM5IC0xLjAyLC0wLjM5IC0xLjQxLDAuMGwtMy4xMiwzLjEyIC0xLjkzLC0xLjkxIC0xLjQxLDEuNDEgMS40MiwxLjQyTDMuMCwxNi4yNUwzLjAsMjEuMGw0Ljc1LDAuMGw4LjkyLC04LjkyIDEuNDIsMS40MiAxLjQxLC0xLjQxIC0xLjkyLC0xLjkyIDMuMTIsLTMuMTJjMC40LDAuMCAwLjQsLTEuMCAwLjAxLC0xLjQyek02LjkyLDE5LjBMNS4wLDE3LjA4bDguMDYsLTguMDYgMS45MiwxLjkyTDYuOTIsMTkuMHoiLz4KKzwvdmVjdG9yPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9ub3RpZmljYXRpb25fZ3V0cy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl9ndXRzLnhtbAppbmRleCBmMTVjOTdlLi4zY2RlZTY0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl9ndXRzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L25vdGlmaWNhdGlvbl9ndXRzLnhtbApAQCAtMTM5LDcgKzEzOSw5IEBACiAKICAgICAgICAgPC9GcmFtZUxheW91dD4KIAotICAgICAgICA8UmFkaW9Hcm91cCBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICA8UmFkaW9Hcm91cAorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2FwcGx5X3RvIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSI4ZHAiPgogICAgICAgICAgICAgPFJhZGlvQnV0dG9uIGFuZHJvaWQ6aWQ9IkAraWQvYXBwbHlfdG9fdG9waWMiCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3ByZWZlcmVuY2VfbWF0cml4LnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvcHJlZmVyZW5jZV9tYXRyaXgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZjQ4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3ByZWZlcmVuY2VfbWF0cml4LnhtbApAQCAtMCwwICsxLDEwMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPExpbmVhckxheW91dAorICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiPgorICAgIDxTcGFjZQorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIiAvPgorICAgIDxHcmlkTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvZWRpdF9ncm91cCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6cm93Q291bnQ9IjUiCisgICAgICAgIGFuZHJvaWQ6Y29sdW1uQ291bnQ9IjUiPgorCisgICAgICAgIDxTcGFjZSBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIgLz4KKworICAgICAgICA8VGV4dFZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2NvbG9yX21vZGlmaWNhdGlvbl9yIgorICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIiAvPgorCisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvY29sb3JfbW9kaWZpY2F0aW9uX2ciCisgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iIC8+CisKKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9jb2xvcl9tb2RpZmljYXRpb25fYiIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIgLz4KKworICAgICAgICA8U3BhY2UgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiIC8+CisKKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9jb2xvcl9tb2RpZmljYXRpb25fciIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIgLz4KKyAgICAgICAgPEVkaXRUZXh0IGFuZHJvaWQ6aW5wdXRUeXBlPSJudW1iZXJEZWNpbWFsIiBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIgLz4KKyAgICAgICAgPEVkaXRUZXh0IGFuZHJvaWQ6aW5wdXRUeXBlPSJudW1iZXJEZWNpbWFsIiBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIgLz4KKyAgICAgICAgPEVkaXRUZXh0IGFuZHJvaWQ6aW5wdXRUeXBlPSJudW1iZXJEZWNpbWFsIiBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIgLz4KKyAgICAgICAgPEVkaXRUZXh0IGFuZHJvaWQ6aW5wdXRUeXBlPSJudW1iZXJEZWNpbWFsIiBhbmRyb2lkOmxheW91dF93aWR0aD0iNDBkcCIgLz4KKworICAgICAgICA8VGV4dFZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2NvbG9yX21vZGlmaWNhdGlvbl9nIgorICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorCisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvY29sb3JfbW9kaWZpY2F0aW9uX2IiCisgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iIC8+CisgICAgICAgIDxFZGl0VGV4dCBhbmRyb2lkOmlucHV0VHlwZT0ibnVtYmVyRGVjaW1hbCIgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiIC8+CisgICAgICAgIDxFZGl0VGV4dCBhbmRyb2lkOmlucHV0VHlwZT0ibnVtYmVyRGVjaW1hbCIgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiIC8+CisgICAgICAgIDxFZGl0VGV4dCBhbmRyb2lkOmlucHV0VHlwZT0ibnVtYmVyRGVjaW1hbCIgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiIC8+CisgICAgICAgIDxFZGl0VGV4dCBhbmRyb2lkOmlucHV0VHlwZT0ibnVtYmVyRGVjaW1hbCIgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjQwZHAiIC8+CisKKyAgICAgICAgPFNwYWNlIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorICAgICAgICA8RWRpdFRleHQgYW5kcm9pZDppbnB1dFR5cGU9Im51bWJlckRlY2ltYWwiIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSI0MGRwIiAvPgorCisgICAgPC9HcmlkTGF5b3V0PgorICAgIDxCdXR0b24KKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9hcHBseSIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iYm90dG9tIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvY29sb3JfYXBwbHkiIC8+Cis8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvcHJlZmVyZW5jZV93aWRnZXRfc2V0dGluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9wcmVmZXJlbmNlX3dpZGdldF9zZXR0aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyYTI5NQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvcHJlZmVyZW5jZV93aWRnZXRfc2V0dGluZ3MueG1sCkBAIC0wLDAgKzEsNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxMaW5lYXJMYXlvdXQKKyAgICB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCI+CisKKyAgICA8UmFkaW9CdXR0b24KKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9yYWRpb19idXR0b24iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5FbmQ9IjRkcCIKKyAgICAgICAgYW5kcm9pZDpjbGlja2FibGU9ImZhbHNlIgorICAgICAgICBhbmRyb2lkOmZvY3VzYWJsZT0iZmFsc2UiIC8+CisKKyAgICA8VmlldworICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMWRwIgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSI/YW5kcm9pZDphdHRyL2xpc3REaXZpZGVyIiAvPgorCisgICAgPEltYWdlVmlldworICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3dpZGdldF9pY29uIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iNTBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNGRwIgorICAgICAgICBhbmRyb2lkOnRpbnQ9IkBhbmRyb2lkOmNvbG9yL2JsYWNrIgorICAgICAgICBhbmRyb2lkOnNyYz0iQGRyYXdhYmxlL2ljX3NldHRpbmdzIgorICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiIC8+CisKKzwvTGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9wcmVmZXJlbmNlX3dpZGdldF9zd2l0Y2gueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9wcmVmZXJlbmNlX3dpZGdldF9zd2l0Y2gueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NjEwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3ByZWZlcmVuY2Vfd2lkZ2V0X3N3aXRjaC54bWwKQEAgLTAsMCArMSw0NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPExpbmVhckxheW91dAorICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50Ij4KKworICAgIDxSYWRpb0J1dHRvbgorICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3JhZGlvX2J1dHRvbiIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6Y2xpY2thYmxlPSJmYWxzZSIKKyAgICAgICAgYW5kcm9pZDpmb2N1c2FibGU9ImZhbHNlIgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5FbmQ9IjRkcCIgLz4KKworICAgIDxWaWV3CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIxZHAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9Ij9hbmRyb2lkOmF0dHIvbGlzdERpdmlkZXIiIC8+CisKKyAgICA8U3dpdGNoCisgICAgICAgIGFuZHJvaWQ6aWQ9IkAqYW5kcm9pZDppZC9zd2l0Y2hfd2lkZ2V0IgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iNTBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJmYWxzZSIKKyAgICAgICAgYW5kcm9pZDpjbGlja2FibGU9ImZhbHNlIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBudWxsIiAvPgorCis8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvcXVpY2tfc3RhdHVzX2Jhcl9leHBhbmRlZF9oZWFkZXIueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9xdWlja19zdGF0dXNfYmFyX2V4cGFuZGVkX2hlYWRlci54bWwKaW5kZXggYTk5NWVjNy4uMjM3NzY4NCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9xdWlja19zdGF0dXNfYmFyX2V4cGFuZGVkX2hlYWRlci54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9xdWlja19zdGF0dXNfYmFyX2V4cGFuZGVkX2hlYWRlci54bWwKQEAgLTk2LDE0ICs5NiwxNCBAQAogICAgIDxMaW5lYXJMYXlvdXQKICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9kYXRlX3RpbWVfZ3JvdXAiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjI4ZHAiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50U3RhcnQ9InRydWUiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50VG9wPSJ0cnVlIgogICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIj4KIAogICAgICAgICA8aW5jbHVkZSBsYXlvdXQ9IkBsYXlvdXQvc3BsaXRfY2xvY2tfdmlldyIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjE2ZHAiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjJkcCIKICAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvY2xvY2siIC8+CkBAIC0xMTEsMjggKzExMSwyOCBAQAogICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLnBvbGljeS5EYXRlVmlldwogICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9kYXRlIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5TdGFydD0iNmRwIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI4ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudFRvcD0idHJ1ZSIKICAgICAgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGVTdGFydD0iQGRyYXdhYmxlL2hlYWRlcl9kb3QiCiAgICAgICAgICAgICBhbmRyb2lkOmRyYXdhYmxlUGFkZGluZz0iNmRwIgogICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgogICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iQHN0eWxlL1RleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5FeHBhbmRlZC5DbG9jayIKICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IkBkaW1lbi9xc190aW1lX2NvbGxhcHNlZF9zaXplIgorICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJ0b3AiCiAgICAgICAgICAgICBzeXN0ZW11aTpkYXRlUGF0dGVybj0iQHN0cmluZy9hYmJyZXZfd2RheV9tb250aF9kYXlfbm9feWVhcl9hbGFybSIgLz4KIAogICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkFscGhhT3B0aW1pemVkQnV0dG9uCiAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2FsYXJtX3N0YXR1cyIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50VG9wPSJ0cnVlIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjhkcCIKICAgICAgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGVQYWRkaW5nPSI2ZHAiCiAgICAgICAgICAgICBhbmRyb2lkOmRyYXdhYmxlU3RhcnQ9IkBkcmF3YWJsZS9pY19hY2Nlc3NfYWxhcm1zX3NtYWxsIgogICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiM2NGZmZmZmZiIKICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuRXhwYW5kZWQuRGF0ZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6bWluSGVpZ2h0PSIzNmRwIgogICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nU3RhcnQ9IjZkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0idG9wIgogICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSI/YW5kcm9pZDphdHRyL3NlbGVjdGFibGVJdGVtQmFja2dyb3VuZCIKICAgICAgICAgICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIgLz4KICAgICA8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9ub3RpZmljYXRpb25fcm93LnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9ub3RpZmljYXRpb25fcm93LnhtbAppbmRleCAwY2VhN2FlLi42MmZkZDQyIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbm90aWZpY2F0aW9uX3Jvdy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX25vdGlmaWNhdGlvbl9yb3cueG1sCkBAIC02NSw3ICs2NSw3IEBACiAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvbm90aWZpY2F0aW9uX2d1dHNfc3R1YiIKICAgICAgICAgYW5kcm9pZDppbmZsYXRlZElkPSJAK2lkL25vdGlmaWNhdGlvbl9ndXRzIgogICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgIC8+CiAKIDwvY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkV4cGFuZGFibGVOb3RpZmljYXRpb25Sb3c+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1hZi9zdHJpbmdzLnhtbAppbmRleCAwY2MwOWU3Li5mODFiZjIzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKQEAgLTM2NCw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJCYXR0ZXJ5c3BhYXJkZXIgaXMgYWFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlZlcm1pbmRlciB3ZXJrdmVycmlndGluZyBlbiBhZ3Rlcmdyb25kZGF0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iU2tha2VsIGJhdHRlcnliZXNwYWFyZGVyIGFmIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkluaG91ZCB2ZXJzdGVlayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBzYWwgYWxsZXMgYmVnaW4gdmFzdmFuZyB3YXQgb3Agam91IHNrZXJtIGdld3lzIHdvcmQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik1vZW5pZSB3ZWVyIHd5cyBuaWUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iVmVlIGFsbGVzIHVpdCI8L3N0cmluZz4KQEAgLTQ0OSw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iU2tha2VsIEJsdWV0b290aCBhYW4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+Ikp5IG1vZXQgQmx1ZXRvb3RoIGFhbnNrYWtlbCBvbSBqb3Ugc2xldXRlbGJvcmQgYWFuIGpvdSB0YWJsZXQgdGUga29wcGVsLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IlNrYWtlbCBhYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJQYXMgdG9lIG9wIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPi1rZW5uaXNnZXdpbmdzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iUGFzIHRvZSBvcCBhbGxlIGtlbm5pc2dld2luZ3MgdmFuIGhpZXJkaWUgcHJvZ3JhbSBhZiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJHZWJsb2trZWVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTWluIGJlbGFuZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJOb3JtYWxlIGJlbGFuZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJHcm9vdCBiZWxhbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJEcmluZ2VuZGUgYmVsYW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJNb2V0IG5vb2l0IGhpZXJkaWUga2VubmlzZ2V3aW5ncyB3eXMgbmllIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Ild5cyBvbmRlcmFhbiBkaWUga2VubmlzZ2V3aW5nbHlzIHNvbmRlciBcJ24gZ2VsdWlkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJXeXMgaGllcmRpZSBrZW5uaXNnZXdpbmdzIHNvbmRlciBnZWx1aWRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJXeXMgYm9hYW4gZGllIGtlbm5pc2dld2luZ2x5cyBlbiBtYWFrIFwnbiBnZWx1aWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iVmVyc2t5biB2bHVndGlnIG9wIGRpZSBza2VybSBlbiBtYWFrIFwnbiBnZWx1aWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWxlIGtsZXVyZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJBYW5ka2xldXJlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJHZXBhc21hYWt0ZSBrbGV1cmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJPbmJla2VuZGUga2xldXJlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IktsZXVydmVyYW5kZXJpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJXeXMga2l0c2luc3RlbGxpbmdzLXRlw6tsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJBa3RpdmVlciBnZXBhc21hYWt0ZSBvbXNrZXBwaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iUGFzIHRvZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJCZXZlc3RpZyBpbnN0ZWxsaW5ncyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IlNvbW1pZ2Uga2xldXJpbnN0ZWxsaW5ncyBrYW4gaGllcmRpZSB0b2VzdGVsIG9uYnJ1aWtiYWFyIG1hYWsuIEtsaWsgT0sgb20gaGllcmRpZSBrbGV1cmluc3RlbGxpbmdzIHRlIGJldmVzdGlnOyBhbmRlcnNpbnMgc2FsIGhpZXJkaWUgaW5zdGVsbGluZ3MgbsOhIDEwIHNla29uZGVzIHRlcnVnZ2VzdGVsIHdvcmQuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbAppbmRleCBhNmMxMzc2Li5kOTZlNzkwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYW0vc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuGNiOGIjeGMjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+4YqVIOGImOGMgOGImOGIrSDhiqDhiI3hibDhibvhiIjhiJ3hjaIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i4Ymw4Yyo4Yib4YiqIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDhibDhjKjhiJvhiKoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IuGKoOGMjeGLteGInSDhiq3hjYjhiI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLhiYHhiI3hiYHhiI0g4Yqt4Y2I4YiNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuGJoOGJpeGMgSDhiq3hjYjhiI0iPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i4Yuo4Ymj4Ym14YiqIOGKg+GLreGIjSDhiYbhjKPhiaIg4Ymg4Yit4Ym34YiNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IuGKoOGNiOGMu+GMuOGIneGKlSDhiqXhipMg4Yuo4YyA4Yit4YmjIOGLjeGIguGJpSDhi63hiYDhipXhiLPhiI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuGJo+GJteGIqiDhiYbhjKPhiaLhipUg4Yqg4Yyl4Y2LIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuGLreGLmOGJtuGJvSDhibDhi7DhiaXhiYDhi4vhiI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4Ymg4Yib4YurIOGMiOGMveGLjiDhiIvhi60g4Yuo4Ymz4Yuo4YuN4YqVIOGKkOGMiOGIrSDhiaDhiJnhiIkg4Yib4YqV4Yiz4Ym1IOGLreGMgOGIneGIq+GIjeGNoiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLhi7PhjI3hiJjhipsg4Yqg4Ymz4Yiz4YutIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuGIgeGIieGKleGInSDhiqDhjL3hi7MiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuGJpeGIieGJseGLnSDhi63hiaXhiKs/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuGLqOGJgeGIjeGNjSDhiLDhiIzhi7Phi47hipUg4Yqo4Yql4Yit4Yi14YuOIOGMoeGJo+GLiiDhjIvhiK0g4YiI4Yib4YyI4YqT4YqY4Ym1IOGJoOGImOGMgOGImOGIquGLqyDhiaXhiInhibHhi53hipUg4Yib4Yml4Yir4Ym1IOGKoOGIiOGJpeGLjuGJteGNoiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuGKoOGJpeGIqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IuGJoDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDhiJvhiLPhi4jhiYLhi6vhi47hib0g4YiL4YutIOGJsOGMjeGJpeGIrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuGKqOGLmuGIhSDhiJjhibDhjI3hiaDhiKrhi6sg4Ymg4Yia4YiY4YyhIOGIgeGIieGInSDhiJvhiLPhi4jhiYLhi6vhi47hib0g4YiL4YutIOGJsOGMjeGJpeGIrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLhi6jhibPhjIjhi7EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLhi53hiYXhibDhipsg4Yqg4Yi14Y2I4YiL4YyK4YqQ4Ym1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuGImOGLsOGJoOGKmyDhiqDhiLXhjYjhiIvhjIrhipDhibUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i4Yqo4Y2N4Ymw4YqbIOGKoOGIteGNiOGIi+GMiuGKkOGJtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuGKoOGIteGJuOGKs+GLrSDhiqDhiLXhjYjhiIvhjIrhipDhibUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuGKpeGKkOGLmuGIheGKlSDhiJvhiLPhi4jhiYLhi6vhi47hib0g4Ymg4Yyt4Yir4Yi9IOGKoOGJs+GIs+GLrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLhiaDhiJvhiLPhi4jhiYLhi6sg4Yud4Yit4Yud4YipIOGJs+GJveGKm+GLjeGKlSDhiq3hjY3hiI0g4YiL4YutIOGJoOGMuOGMpeGJsyDhiqDhiLPhi60iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuGKpeGKkOGLmuGIheGKlSDhiJvhiLPhi4jhiYLhi6vhi47hib0g4Ymg4Yy44Yyl4YmzIOGKoOGIs+GLrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i4Ymg4Yib4Yiz4YuI4YmC4Yur4YuO4Ym9IOGLneGIreGLneGIrSDhiIvhi63hipvhi40g4Yqt4Y2N4YiNIOGIi+GLrSDhiqDhiLPhi63hipMg4Yu14Yid4Y2FIOGKoOGIsOGImyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLhi4jhi7Ag4YyI4Yy4IOGIm+GLq+GLjSDhi63hiJjhiI3hiqjhibHhipMg4Yu14Yid4Y2FIOGLreGJheGIqOGMuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuGImOGLsOGJoOGKmyDhiYDhiIjhiJ7hib0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i4Yuo4YiI4YiK4Ym1IOGJgOGIiOGInuGJvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i4Yml4YyBIOGJgOGIiOGInuGJvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuGLqOGIm+GLreGJs+GLiOGJgSDhiYDhiIjhiJ7hib0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i4Yuo4YmA4YiI4YidIOGIm+GIu+GIu+GLqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IuGLqOGNiOGMo+GKlSDhiYXhipXhiaXhiK7hib0g4Yiw4YmF4YqVIOGKoOGIs+GLrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i4Yml4YyBIOGJheGLqOGIq+GKlSDhiqDhipXhiYMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLhibDhjI3hiaXhiK0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4YmF4YqV4Yml4Yiu4Ym94YqVIOGLq+GIqOGMi+GMjeGMoSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuGKoOGKleGLs+GKleGLtSDhi6jhiYDhiIjhiJ0g4YmF4YqV4Yml4Yiu4Ym9IOGLreGIheGKlSDhiJjhiKPhiKrhi6sg4Yuo4Yib4Yut4Yyg4YmF4YidIOGIiuGLq+GLsOGIreGMieGJtSDhi63hib3hiIvhiInhjaIg4Yql4YqQ4Yua4YiF4YqVIOGLqOGJgOGIiOGInSDhiYXhipXhiaXhiK7hib0g4YiI4Yib4Yio4YyL4YyI4YylIOGKpeGIuiDhi6jhiJrhiIjhi43hipUg4Yyg4YmFIOGLq+GLteGIreGMieGNoyDhiqDhiIjhiaDhiIjhi5rhi6sg4Yql4YqQ4Yua4YiFIOGJheGKleGJpeGIruGJvSDhiqgxMCDhiLDhiqjhipXhi7bhib0g4Ymg4YqL4YiLIOGLs+GMjeGInSDhi63hjIDhiJ3hiKvhiInhjaIiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWFyL3N0cmluZ3MueG1sCmluZGV4IGJiODYwMmIuLmIzZTQ5NGMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbApAQCAtMzA1LDggKzMwNSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4i2KjYrdirIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiLYqti52LDYsSDYqNiv2KEgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLYp9mE2YXYstmK2K8iPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+INij2K7YsdmJIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLYqtmC2LPZitmFINij2YHZgtmKIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i2KrZgtiz2YrZhSDYsdij2LPZiiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLYqtmC2LPZitmFINmF2K7Ytdi1Ijwvc3RyaW5nPgpAQCAtMzY5LDcgKzM2OCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+ItmI2LbYuSDYqtmI2YHZitixINin2YTYt9in2YLYqSDZgtmK2K8g2KfZhNiq2LTYutmK2YQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i2YTYrtmB2LYg2YXYs9iq2YjZiSDYp9mE2KPYr9in2KEg2YjYqNmK2KfZhtin2Kog2KfZhNiu2YTZgdmK2KkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Itil2YrZgtin2YEg2KrZiNmB2YrYsSDYtNit2YYg2KfZhNio2LfYp9ix2YrYqSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLYp9mE2YXYrdiq2YjZitin2Kog2YXYrtmB2YrYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDYs9mK2KjYr9ijINin2YTYqtmC2KfYtyDZg9mEINi02YrYoSDZitiq2YUg2LnYsdi22Ycg2LnZhNmJINin2YTYtNin2LTYqS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i2LnYr9mFINin2YTYpdi42YfYp9ixINmF2LHYqSDYo9iu2LHZiSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLZhdit2Ygg2KfZhNmD2YQiPC9zdHJpbmc+CkBAIC00NTQsNCArNDUyLDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+Itiq2LTYutmK2YQg2KfZhNio2YTZiNiq2YjYq9ifIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+ItmE2KrZiNi12YrZhCDZhNmI2K3YqSDYp9mE2YXZgdin2KrZititINio2KfZhNis2YfYp9iyINin2YTZhNmI2K3ZitiMINmK2YTYstmF2YMg2KrYtNi62YrZhCDYqNmE2YjYqtmI2Ksg2KPZiNmE2KfZiy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLYqti02LrZitmEIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4i2KfZhNiq2LfYqNmK2YIg2LnZhNmJINil2LTYudin2LHYp9iqIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+Itin2YTYqti32KjZitmCINmB2Yog2KzZhdmK2Lkg2KfZhNil2LTYudin2LHYp9iqINmF2YYg2YfYsNinINin2YTYqti32KjZitmCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+Itiq2YUg2KfZhNit2LjYsSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+Itij2YfZhdmK2Kkg2YXZhtiu2YHYttipIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+Itij2YfZhdmK2Kkg2LnYp9iv2YrYqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLYo9mH2YXZitipINi52KfZhNmK2KkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLYo9mH2YXZitipINmF2YTYrdmO2ZHYqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i2LnYr9mFINi52LHYtiDZh9iw2Ycg2KfZhNil2LTYudin2LHYp9iqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Itin2YTYudix2LYg2KPYs9mB2YQg2YLYp9im2YXYqSDYp9mE2KXYtNi52KfYsdin2Kog2KjYr9mI2YYg2KrZhtio2YrZhyDYtdmI2KrZiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i2LnYsdi2INmH2LDZhyDYp9mE2KXYtNi52KfYsdin2Kog2KjYr9mI2YYg2KrZhtio2YrZhyDYtdmI2KrZiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i2KfZhNi52LHYtiDYo9i52YTZiSDZgtin2KbZhdipINin2YTYpdi02LnYp9ix2KfYqiDZhdi5INiq2YbYqNmK2Ycg2LXZiNiq2YoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i2KfZhNi42YfZiNixINiz2LHZiti52YvYpyDYudmE2Ykg2KfZhNi02KfYtNipINmF2Lkg2KrZhtio2YrZhyDYtdmI2KrZiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Itij2YTZiNin2YYg2LnYp9iv2YrYqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLYo9mE2YjYp9mGINmE2YrZhNmK2KkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+Itij2YTZiNin2YYg2YXYrti12LXYqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+Itij2YTZiNin2YYg2LrZitixINmF2LnYsdmI2YHYqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLYpdi02LnYp9ixINin2YTYo9mE2YjYp9mGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i2KXYuNmH2KfYsSDZgtiz2YUg2KfZhNil2LnYr9in2K/Yp9iqINin2YTYs9ix2YrYudipIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLYqtmF2YPZitmGINin2YTYqtit2YjZitmEINin2YTZhdiu2LXYtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+Itiq2LfYqNmK2YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i2KrYo9mD2YrYryDYp9mE2KXYudiv2KfYr9in2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLZitmF2YPZhiDYo9mGINiq2KrYs9io2Kgg2KjYudi2INil2LnYr9in2K/Yp9iqINin2YTYo9mE2YjYp9mGINmB2Yog2KrYudi32YrZhCDYpdmF2YPYp9mG2YrYqSDYp9iz2KrYrtiv2KfZhSDYp9mE2KzZh9in2LIuINmK2YXZg9mG2YMg2KfZhNmG2YLYsSDYudmE2YkgXCLZhdmI2KfZgdmCXCIg2YTYqtij2YPZitivINil2LnYr9in2K/Yp9iqINin2YTYo9mE2YjYp9mGINmH2LDZh9iMINmI2KXZhNinINmB2LPYqtiq2YUg2KXYudin2K/YqSDYqti52YrZitmGINmH2LDZhyDYp9mE2KXYudiv2KfYr9in2Kog2KjYudivIDEwINir2YjYp9mG2Y0uIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWF6LXJBWi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCmluZGV4IGY2YTVmMGYuLjRlZmM1ZGYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYXotckFaL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJheHRhcsSxxZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBiYcWfbGFuYSBiaWxtaXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IkRhaGEgw6dveCI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gRGFoYSDDp294Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLDnGbDvHFpIELDtmwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLFnmFxdWxpIELDtmwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iRsmZcmRpIELDtmwiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iRW5lcmppIHHJmW5hyZl0aSBha3RpdmRpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJQZXJmb3JtYW5zxLEgYXphbGTEsXIgdsmZIGFyeGEgZm9uIGRhdGFzxLFuxLEgbcmZaGR1ZGxhxZ9kxLFyxLFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJFbmVyaml5yZkgccmZbmHJmXQgcmVqaW1pbmkgZGVha3RpdiBlZGluIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+Ik3JmXptdW4gZ2l6bGlkaXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gZWtyYW7EsW7EsXpkYSBvbGFuIGjJmXIgxZ9leWluIMWfyZlrbGluaSDDp8mZa8mZY8mZay4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iRGFoYSBnw7ZzdMmZcm3JmSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJIYW3EsXPEsW7EsSBzaWxpbiI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3RoIGFrdGl2bMmZxZ9zaW4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlRhYmxldGluaXpsyZkga2xhdmlhdHVyYXlhIGJhxJ9sYW5tYXEgw7zDp8O8biBpbGsgb2xhcmFxIEJsdWV0b290aFwndSBha3RpdmzJmcWfZGlybcmZbGlzaW5pei4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBa3RpdmzJmcWfZGlyaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiI8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4gYmlsZGlyacWfbMmZcmluyZkgbcO8cmFjacmZdCBlZGluIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iQnUgdMmZdGJpcWTJmW4gb2xhbiBiw7x0w7xuIGJpbGRpcmnFn2zJmXLJmSBtw7xyYWNpyZl0IGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxva2xhbm3EscWfIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iQXogyZloyZltaXl5yZl0bGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iTm9ybWFsIMmZaMmZbWl5ecmZdGxpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IsOHb3ggyZloyZltaXl5yZl0bGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJUyZljaWxpIMmZaMmZbWl5ecmZdGxpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJCdSBiaWxkaXJpxZ9syZlyaSBoZcOnIHZheHQgZ8O2c3TJmXJtyZl5aW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iQmlsZGlyacWfbMmZciBzaXlhaMSxc8SxbsSxbiBhxZ9hxJ/EsXPEsW5kYSBzyZlzc2l6IGfDtnN0yZlyaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IkJ1IGJpbGRpxZ9syZlyaSBzyZlzc2l6IGfDtnN0yZlyaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IkJpbGRpcmnFn2zJmXIgc2l5YWjEsXPEsW5kYSB5dXhhcsSxZGEgZ8O2c3TJmXJpbiB2yZkgc8mZc2xpIGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iRWtyYW5kYSBuyZl6yZlyIHNhbMSxbiB2yZkgc8mZc2xpIGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWwgcsmZbmdsyZlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IkdlY8mZIHLJmW5nbMmZcmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IljDvHN1c2kgcsmZbmdsyZlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iTmFtyZlsdW0gcsmZbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iUsmZbmcgbW9kaWZpa2FzaXlhc8SxIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iQ8mZbGQgYXlhcmxhciDDtnJ0w7x5w7xuw7wgZ8O2c3TJmXJpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iWMO8c3VzaSBkyZl5acWfaWtsaXlpIGFrdGl2IGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJUyZl0YmlxIGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQXlhcmxhcsSxIHTJmXNkaXEgZWRpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkLJmXppIHJlbmsgYXlhcmxhcsSxIGJ1IGNpaGF6xLEgeWFyYXJzxLF6IGVkyZkgYmlsyZlyLiBCdSByyZluayBheWFybGFyxLFuxLEgdMmZc2RpcSBldG3JmWsgw7zDp8O8biBPSyBiYXPEsW4sIMmZa3MgaGFsZGEgYnUgYXlhcmxhciAxMCBzYW5pecmZIHNvbnJhIHPEsWbEsXJsYW5hY2FxLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWIrc3IrTGF0bi9zdHJpbmdzLnhtbAppbmRleCBmMTRiNjQ0Li5mNDgyZTk2IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWIrc3IrTGF0bi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWIrc3IrTGF0bi9zdHJpbmdzLnhtbApAQCAtMzAyLDggKzMwMiw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4icHJldHJhxb5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJQb2tyZXRhbmplIGFwbGlrYWNpamUgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IG5pamUgdXNwZWxvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJKb8WhIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+IkpvxaEgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJQb2RlbGkgaG9yaXpvbnRhbG5vIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iUG9kZWxpIHZlcnRpa2Fsbm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iUHJpbGFnb8SRZW5vIGRlbGplbmplIjwvc3RyaW5nPgpAQCAtMzY2LDcgKzM2NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IsWgdGVkbmphIGJhdGVyaWplIGplIHVrbGp1xI1lbmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iU21hbmp1amUgcGVyZm9ybWFuc2UgaSBwb3phZGluc2tlIHBvZGF0a2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Iklza2xqdcSNaSDFoXRlZG5qdSBiYXRlcmlqZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJTYWRyxb5haiBqZSBzYWtyaXZlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDEh2UgcG/EjWV0aSBkYSBzbmltYSBzdmUgxaF0byBzZSBwcmlrYXp1amUgbmEgZWtyYW51LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOZSBwcmlrYXp1aiBwb25vdm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iT2JyacWhaSBzdmUiPC9zdHJpbmc+CkBAIC00NTEsNCArNDQ5LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IsW9ZWxpdGUgbGkgZGEgdWtsanXEjWl0ZSBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkRhIGJpc3RlIHBvdmV6YWxpIHRhc3RhdHVydSBzYSB0YWJsZXRvbSwgcHJ2byBtb3JhdGUgZGEgdWtsanXEjWl0ZSBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iVWtsanXEjWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJQcmltZW5pIG5hIG9iYXZlxaF0ZW5qYSBvIHRlbWkgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iUHJpbWVuaSBuYSBzdmEgb2JhdmXFoXRlbmphIGl6IG92ZSBhcGxpa2FjaWplIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2tpcmFuYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+Ik1hbGEgdmHFvm5vc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iVW9iacSNYWplbmEgdmHFvm5vc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iVmVsaWthIHZhxb5ub3N0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iTmFqdmXEh2EgdmHFvm5vc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik92YSBvYmF2ZcWhdGVuamEgc2UgbmlrYWRhIG5lIHByaWthenVqdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJQcmlrYXp1anUgc2UgdSBkbnUgbGlzdGUgb2JhdmXFoXRlbmphIGJleiB6dnVrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iT3ZhIG9iYXZlxaF0ZW5qYSBzZSBwcmlrYXp1anUgYmV6IHp2dWthIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJQcmlrYXp1anUgc2UgdSB2cmh1IGxpc3RlIG9iYXZlxaF0ZW5qYSBpIGVtaXR1amUgc2UgenZ1ayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJOYWtyYXRrbyBzZSBwcmlrYXp1anUgbmEgZWtyYW51IGkgZW1pdHVqZSBzZSB6dnVrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iTm9ybWFsbmUgYm9qZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOb8SHbmUgYm9qZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iUHJpbGFnb8SRZW5lIGJvamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJOZXBvem5hdGUgYm9qZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJJem1lbmEgYm9qYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlByaWthxb5pIHBsb8SNaWN1IEJyemEgcG9kZcWhYXZhbmphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJPbW9ndcSHaSBwcmlsYWdvxJFlbnUgdHJhbnNmb3JtYWNpanUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJQcmltZW5pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IlBvdHZyZGl0ZSBwb2RlxaFhdmFuamEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJOZWthIHBvZGXFoWF2YW5qYSBib2phIG1vZ3UgZGEgdcSNaW5lIHVyZcSRYWogbmV1cG90cmVibGppdmltLiBLbGlrbml0ZSBuYSBQb3R2cmRpIGRhIGJpc3RlIHBvdHZyZGlsaSBvdmEgcG9kZcWhYXZhbmphIGJvamEsIHBvxaF0byDEh2Ugc2UgdSBzdXByb3Rub20gb3ZhIHBvZGXFoWF2YW5qYSByZXNldG92YXRpIG5ha29uIDEwIHNla3VuZGkuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbAppbmRleCBmY2JiZWVmLi45NWM0YTIyIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ItGC0YrRgNGB0LXQvdC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g0L3QtSDQvNC+0LbQsCDQtNCwINGB0YLQsNGA0YLQuNGA0LAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+ItCe0YnQtSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLQntGJ0LUgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLQpdC+0YDQuNC30L7QvdGC0LDQu9C90L4g0YDQsNC30LTQtdC70Y/QvdC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i0JLQtdGA0YLQuNC60LDQu9C90L4g0YDQsNC30LTQtdC70Y/QvdC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+ItCf0LXRgNGB0L7QvdCw0LvQuNC30LjRgNCw0L3QviDRgNCw0LfQtNC10LvRj9C90LUiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i0KDQtdC20LjQvNGK0YIg0LfQsCDQt9Cw0L/QsNC30LLQsNC90LUg0L3QsCDQsdCw0YLQtdGA0LjRj9GC0LAg0LUg0LLQutC70Y7Rh9C10L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i0J3QsNC80LDQu9GP0LLQsCDQtdGE0LXQutGC0LjQstC90L7RgdGC0YLQsCDQuCDQtNCw0L3QvdC40YLQtSDQvdCwINC30LDQtNC10L0g0L/Qu9Cw0L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+ItCY0LfQutC70Y7Rh9Cy0LDQvdC1INC90LAg0YDQtdC20LjQvNCwINC30LAg0LfQsNC/0LDQt9Cy0LDQvdC1INC90LAg0LHQsNGC0LXRgNC40Y/RgtCwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+ItCh0LrRgNC40YLQviDRgdGK0LTRitGA0LbQsNC90LjQtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDRidC1INC30LDQv9C+0YfQvdC1INC00LAg0LfQsNGB0L3QtdC80LAg0LLRgdC40YfQutC+LCDQutC+0LXRgtC+INGB0LUg0L/QvtC60LDQt9Cy0LAg0L3QsCDQtdC60YDQsNC90LAg0LLQuC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i0JTQsCDQvdC1INGB0LUg0L/QvtC60LDQt9Cy0LAg0L7RgtC90L7QstC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+ItCY0LfRh9C40YHRgtCy0LDQvdC1INC90LAg0LLRgdC40YfQutC4Ijwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLQlNCwINGB0LUg0LLQutC70Y7Rh9C4INC70LggQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLQl9CwINC00LAg0YHQstGK0YDQttC10YLQtSDQutC70LDQstC40LDRgtGD0YDQsNGC0LAg0YEg0YLQsNCx0LvQtdGC0LAg0YHQuCwg0L/RitGA0LLQviDRgtGA0Y/QsdCy0LAg0LTQsCDQstC60LvRjtGH0LjRgtC1IEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLQktC60LvRjtGH0LLQsNC90LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLQn9GA0LjQu9Cw0LPQsNC90LUg0LfQsCDQuNC30LLQtdGB0YLQuNGP0YLQsCDQvdCwINGC0LXQvNCwIOKAnjx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPuKAnCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+ItCf0YDQuNC70LDQs9Cw0L3QtSDQt9CwINCy0YHQuNGH0LrQuCDQuNC30LLQtdGB0YLQuNGPINC+0YIg0YLQvtCy0LAg0L/RgNC40LvQvtC20LXQvdC40LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i0JHQu9C+0LrQuNGA0LDQvdC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i0JzQsNC70LrQsCDQstCw0LbQvdC+0YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLQndC+0YDQvNCw0LvQvdCwINCy0LDQttC90L7RgdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+ItCT0L7Qu9GP0LzQsCDQstCw0LbQvdC+0YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+ItCd0LXQvtGC0LvQvtC20L3QsCDQstCw0LbQvdC+0YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i0KLQtdC30Lgg0LjQt9Cy0LXRgdGC0LjRjyDQvdC1INGB0LUg0L/QvtC60LDQt9Cy0LDRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLQkdC10LfQt9Cy0YPRh9C90L4g0L/QvtC60LDQt9Cy0LDQvdC1INC90LDQuS3QtNC+0LvRgyDQsiDRgdC/0LjRgdGK0LrQsCDRgSDQuNC30LLQtdGB0YLQuNGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLQotC10LfQuCDQuNC30LLQtdGB0YLQuNGPINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQsdC10Lcg0LfQstGD0LoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+ItCf0L7QutCw0LfQstCw0L3QtSDQvdCw0Lkt0LPQvtGA0LUg0LIg0YHQv9C40YHRitC60LAg0YEg0LjQt9Cy0LXRgdGC0LjRjyDQuCDQuNC30LTQsNCy0LDQvdC1INC90LAg0LfQstGD0LrQvtCyINGB0LjQs9C90LDQuyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0Lgg0LjQt9C00LDQstCw0L3QtSDQvdCwINC30LLRg9C60L7QsiDRgdC40LPQvdCw0LsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLQndC+0YDQvNCw0LvQvdC4INGG0LLQtdGC0L7QstC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+ItCd0L7RidC90Lgg0YbQstC10YLQvtCy0LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+ItCf0LXRgNGB0L7QvdCw0LvQuNC30LjRgNCw0L3QuCDRhtCy0LXRgtC+0LLQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+ItCd0LXQuNC30LLQtdGB0YLQvdC4INGG0LLQtdGC0L7QstC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+ItCf0YDQvtC80Y/QvdCwINC90LAg0YbQstC10YLQvtCy0LXRgtC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i0J/QvtC60LDQt9Cy0LDQvdC1INC90LAg0L/Qu9C+0YfQutCw0YLQsCDQt9CwINCx0YrRgNC30Lgg0L3QsNGB0YLRgNC+0LnQutC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLQkNC60YLQuNCy0LjRgNCw0L3QtSDQvdCwINC/0LXRgNGB0L7QvdCw0LvQuNC30LjRgNCw0L3QvtGC0L4g0YLRgNCw0L3RgdGE0L7RgNC80LjRgNCw0L3QtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+ItCf0YDQuNC70LDQs9Cw0L3QtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLQn9C+0YLQstGK0YDQttC00LDQstCw0L3QtSDQvdCwINC90LDRgdGC0YDQvtC50LrQuNGC0LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLQndGP0LrQvtC4INC90LDRgdGC0YDQvtC50LrQuCDQt9CwINGG0LLQtdGC0L7QstC10YLQtSDQvNC+0LPQsNGCINC00LAg0L3QsNC/0YDQsNCy0Y/RgiDRgtC+0LLQsCDRg9GB0YLRgNC+0LnRgdGC0LLQviDQvdC10LjQt9C/0L7Qu9C30LLQsNC10LzQvi4g0JfQsCDQtNCwINCz0Lgg0L/QvtGC0LLRitGA0LTQuNGC0LUsINC60LvQuNC60L3QtdGC0LUg0LLRitGA0YXRgyDigJ5PS+KAnC4g0JIg0L/RgNC+0YLQuNCy0LXQvSDRgdC70YPRh9Cw0Lkg0YLQtSDRidC1INCx0YrQtNCw0YIg0L3Rg9C70LjRgNCw0L3QuCDRgdC70LXQtCAxMCDRgdC10LrRg9C90LTQuC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtYm4tckJEL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKaW5kZXggNDhkM2Y0Ni4uMzg4ODVkNSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ibi1yQkQvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuCmheCmqOCngeCmuOCmqOCnjeCmp+CmvuCmqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOCmtuCngeCmsOCngSDgppXgprDgpr4g4Kav4Ka+4Kav4Ka84Kao4Ka/4Ke3Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuCmhuCmsOCniyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLgpobgprDgp4sgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+4Kaf4Ka/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLgpoXgpqjgp4Hgpq3gp4Lgpq7gpr/gppUg4Ka44KeN4Kaq4KeN4Kay4Ka/4KafIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i4KaJ4Kay4KeN4Kay4Kau4KeN4KasIOCmuOCnjeCmquCnjeCmsuCmv+CmnyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLgppXgpr7gprjgp43gpp/gpq4g4Ka44KeN4Kaq4KeN4Kay4Ka/4KafIOCmleCmsOCngeCmqCI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLgpqzgp43gpq/gpr7gpp/gpr7gprDgpr8g4Ka44KeH4Kat4Ka+4KawIOCmmuCmvuCmsuCngSDgprDgpq/gprzgp4fgppvgp4ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i4KaV4Ka+4Kaw4KeN4KavLeCmuOCmruCnjeCmquCmvuCmpuCmqOCmviDgppMg4Kaq4Ka24KeN4Kaa4Ka+4Kam4Kaq4KafIOCmoeCnh+Cmn+CmvuCmleCnhyDgppXgpq7gpr/gpq/gprzgp4cg4Kam4KeH4Kav4Ka8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLgpqzgp43gpq/gpr7gpp/gpr7gprDgpr8g4Ka44Kae4KeN4Kaa4Kav4Ka84KaV4Ka+4Kaw4KeAIOCmrOCmqOCnjeCmpyDgppXgprDgp4HgpqgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4Kay4KeB4KaV4Ka+4Kao4KeLIOCmrOCmv+Cmt+Cmr+CmvOCmrOCmuOCnjeCmpOCngSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDgpobgpqrgpqjgpr7gprAg4Ka44KeN4KaV4KeN4Kaw4KeA4Kao4KeHIOCmpuCnh+CmluCmvuCmqOCniyDgprjgpqwg4KaV4Ka/4Kab4KeBIOCmleCnjeCmr+CmvuCmquCmmuCmvuCmsCDgppXgprDgpr4g4Ka24KeB4Kaw4KeBIOCmleCmsOCmrOCnh+ClpCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgpobgprAg4Kam4KeH4KaW4Ka+4Kas4KeH4KaoIOCmqOCmviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLgprjgpqzgppXgpr/gppvgp4Eg4Ka44Ka+4KarIOCmleCmsOCngeCmqCI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3RoIOCmmuCmvuCmsuCngSDgppXgprDgpqzgp4fgpqg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuCmhuCmquCmqOCmvuCmsCDgpp/gp43gpq/gpr7gpqzgprLgp4fgpp/gp4fgprAg4Ka44Ka+4Kal4KeHIOCmhuCmquCmqOCmvuCmsCDgppXgp4Dgpqzgp4vgprDgp43gpqEg4Ka44KaC4Kav4KeB4KaV4KeN4KakIOCmleCmsOCmpOCnhywg4KaG4Kaq4Kao4Ka+4KaV4KeHIOCmquCnjeCmsOCmpeCmruCnhyBCbHVldG9vdGgg4Kaa4Ka+4Kay4KeBIOCmleCmsOCmpOCnhyDgprngpqzgp4fgpaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLgpprgpr7gprLgp4Eg4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IOCmrOCmv+CmnOCnjeCmnuCmquCnjeCmpOCmv+Cml+CngeCmsuCmv+CmpOCnhyDgpqrgp43gprDgpq/gprzgp4vgppcg4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i4KaP4KaHIOCmheCnjeCmr+CmvuCmquCnjeCmsuCmv+CmleCnh+CmtuCmqOCnh+CmsCDgpqXgp4fgppXgp4cg4Ka44KasIOCmrOCmv+CmnOCnjeCmnuCmquCnjeCmpOCmv+CmpOCnhyDgpqrgp43gprDgpq/gprzgp4vgppcg4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IuCmheCmrOCmsOCngeCmpuCnjeCmpyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IuCmleCmriDgppfgp4HgprDgp4HgpqTgp43gpqwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i4Ka44Ka+4Kan4Ka+4Kaw4KajIOCml+CngeCmsOCngeCmpOCnjeCmrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLgpqzgp4fgprbgpr8g4KaX4KeB4Kaw4KeB4Kak4KeN4KasIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i4Kac4Kaw4KeB4Kaw4Ka/IOCml+CngeCmsOCngeCmpOCnjeCmrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i4KaP4KaHIOCmrOCmv+CmnOCnjeCmnuCmquCnjeCmpOCmv+Cml+CngeCmsuCmvyDgppXgppbgpqjgp4vgpocg4Kam4KeH4KaW4Ka+4Kao4KeLIOCmueCmrOCnhyDgpqjgpr4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i4Kas4Ka/4Kac4KeN4Kae4Kaq4KeN4Kak4Ka/IOCmpOCmvuCmsuCmv+CmleCmvuCmsCDgpqjgp4Dgpprgp4fgprAg4KaF4KaC4Ka24KeHIOCmqOCmv+Cmg+CmtuCmrOCnjeCmpuCnhyDgpqbgp4fgppbgpr7gpqjgp4sg4Ka54Kav4Ka8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLgpqjgpr/gpoPgprbgpqzgp43gpqbgp4cg4KaP4KaHIOCmrOCmv+CmnOCnjeCmnuCmquCnjeCmpOCmv+Cml+CngeCmsuCmvyDgpqbgp4fgppbgpr7gpqjgp4sg4Ka54Kav4Ka8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLgpqzgpr/gppzgp43gpp7gpqrgp43gpqTgpr8g4Kak4Ka+4Kay4Ka/4KaV4Ka+4KawIOCmtuCngOCmsOCnjeCmt+CnhyDgpqbgp4fgppbgpr7gpqjgp4sg4Ka54Kav4Ka8IOCmj+CmrOCmgiDgprbgpqzgp43gpqYg4KaV4Kaw4KeHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IuCmuOCnjeCmleCnjeCmsOCngOCmqOCnh+CmsCDgpongpqrgprDgp4cg4Kam4KeH4KaW4Ka+4Kao4KeLIOCmueCmr+CmvCDgpo/gpqzgpoIg4Ka24Kas4KeN4KamIOCmleCmsOCnhyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuCmuOCnjeCmrOCmvuCmreCmvuCmrOCmv+CmlSDgprDgppkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i4Kaw4Ka+4Kak4KeH4KawIOCmsOCmmSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i4KaV4Ka+4Ka44KeN4Kaf4KauIOCmsOCmmSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuCmheCmnOCmvuCmqOCmviDgprDgppkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i4Kaw4KaZIOCmuOCmguCmtuCni+Cmp+CmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IuCmpuCnjeCmsOCngeCmpCDgprjgp4fgpp/gpr/gpoLgprgg4Kaf4Ka+4KaH4KayIOCmpuCnh+CmluCmvuCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i4KaV4Ka+4Ka44KeN4Kaf4KauIOCmsOCnguCmquCmvuCmqOCnjeCmpOCmsCDgprjgppXgp43gprfgpq4g4KaV4Kaw4KeB4KaoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i4Kaq4KeN4Kaw4Kav4Ka84KeL4KaXIOCmleCmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLgprjgp4fgpp/gpr/gpoLgprgg4Kao4Ka/4Ka24KeN4Kaa4Ka/4KakIOCmleCmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuCmleCmv+Cmm+CngSDgprDgppngp4fgprAg4Ka44KeH4Kaf4Ka/4KaC4Ka4IOCmj+CmhyDgpqHgpr/gpq3gpr7gpofgprjgppXgp4cg4Kas4KeN4Kav4Kas4Ka54Ka+4Kaw4KeH4KawIOCmheCmr+Cni+Cml+CnjeCmryDgppXgprDgp4cg4Kam4Ka/4Kak4KeHIOCmquCmvuCmsOCnh+CntyDgpo/gpocg4Kaw4KaZ4KeH4KawIOCmuOCnh+Cmn+Cmv+CmguCmuCDgpqjgpr/gprbgp43gpprgpr/gpqQg4KaV4Kaw4Kak4KeHIOCmk+CmleCnhyDgpo8g4KaV4KeN4Kay4Ka/4KaVIOCmleCmsOCngeCmqCwg4KaF4Kao4KeN4Kav4Kal4Ka+4Kav4Ka8IOCnp+CnpiDgprjgp4fgppXgp4fgpqjgp43gpqEg4Kaq4Kaw4KeHIOCmj+CmhyDgprjgp4fgpp/gpr/gpoLgprgg4Kaq4KeB4Kao4Kaw4Ka+4Kav4Ka8IOCmuOCnh+CmnyDgprngpqzgp4fgp7ciPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCmluZGV4IGE4MzQwNGMuLmQyN2MzZWUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbApAQCAtMzY0LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IkVzdGFsdmkgZGUgYmF0ZXJpYSBhY3RpdmF0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHVlaXggZWwgcmVuZGltZW50IGkgbFwnw7pzIGRlIGxlcyBkYWRlcyBlbiBzZWdvbiBwbGEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJEZXNhY3RpdmEgbFwnZXN0YWx2aSBkZSBiYXRlcmlhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkNvbnRpbmd1dCBhbWFnYXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gY29tZW7Dp2Fyw6AgYSBlbnJlZ2lzdHJhciB0b3QgZWwgcXVlIGVzIG1vc3RyaSBhIGxhIHBhbnRhbGxhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJObyBobyB0b3JuaXMgYSBtb3N0cmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkVzYm9ycmEtaG8gdG90Ijwvc3RyaW5nPgpAQCAtNDQ5LDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJWb2xzIGFjdGl2YXIgZWwgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJQZXIgY29ubmVjdGFyIGVsIHRlY2xhdCBhbWIgbGEgdGF1bGV0YSwgcHJpbWVyIGhhcyBkXCdhY3RpdmFyIGVsIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBY3RpdmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJBcGxpY2EgYSBsZXMgbm90aWZpY2FjaW9ucyBzb2JyZSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcGxpY2EgYSB0b3RlcyBsZXMgbm90aWZpY2FjaW9ucyBkXCdhcXVlc3RhIGFwbGljYWNpw7MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvcXVlamFkZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJJbXBvcnTDoG5jaWEgYmFpeGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iSW1wb3J0w6BuY2lhIG5vcm1hbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJJbXBvcnTDoG5jaWEgYWx0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IkltcG9ydMOgbmNpYSB1cmdlbnQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik5vIG1vc3RyaXMgbWFpIGFxdWVzdGVzIG5vdGlmaWNhY2lvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iTW9zdHJhIGRlIG1hbmVyYSBzaWxlbmNpb3NhIGEgbGEgcGFydCBpbmZlcmlvciBkZSBsYSBsbGlzdGEgZGUgbm90aWZpY2FjaW9ucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iTW9zdHJhIGFxdWVzdGVzIG5vdGlmaWNhY2lvbnMgZGUgbWFuZXJhIHNpbGVuY2lvc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik1vc3RyYSBhIGxhIHBhcnQgc3VwZXJpb3IgZGUgbGEgbGxpc3RhIGRlIG5vdGlmaWNhY2lvbnMgaSBlbWV0IHVuIHNvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Ik1vc3RyYSBhIGxhIHBhbnRhbGxhIGkgZW1ldCB1biBzbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IkNvbG9ycyBub3JtYWxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IkNvbG9ycyBub2N0dXJucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ29sb3JzIHBlcnNvbmFsaXR6YXRzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iQ29sb3JzIGRlc2NvbmVndXRzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik1vZGlmaWNhY2nDsyBkZWwgY29sb3IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJNb3N0cmEgZWwgbW9zYWljIGRlIENvbmZpZ3VyYWNpw7MgcsOgcGlkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iQWN0aXZhIGxhIHRyYW5zZm9ybWFjacOzIHBlcnNvbmFsaXR6YWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iQXBsaWNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkNvbmZpcm1hIGxhIGNvbmZpZ3VyYWNpw7MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJBbGd1bmVzIG9wY2lvbnMgZGUgY29uZmlndXJhY2nDsyBkZSBjb2xvciBwb2RlbiBkZWl4YXIgZWwgZGlzcG9zaXRpdSBpbnNlcnZpYmxlLiBGZXMgY2xpYyBhIERcJ2Fjb3JkIHBlciBjb25maXJtYXIgbGEgY29uZmlndXJhY2nDsyBkZSBjb2xvcjsgZW4gY2FzIGNvbnRyYXJpLCBsYSBjb25maWd1cmFjacOzIGVzIHJlc3RhYmxpcsOgIGFsIGNhcCBkZSAxMCBzZWdvbnMuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbAppbmRleCA3ODk1OTUxLi40ZjI2ZGMxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKQEAgLTMwMyw4ICszMDMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+InZ5aGxlZGF0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJBcGxpa2FjaSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gbmVsemUgc3B1c3RpdC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iRGFsxaHDrSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiJqZcWhdMSbIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iVm9kb3Jvdm7DqSByb3pkxJtsZW7DrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IlZlcnRpa8OhbG7DrSByb3pkxJtsZW7DrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJWbGFzdG7DrSByb3pkxJtsZW7DrSI8L3N0cmluZz4KQEAgLTM2Nyw3ICszNjYsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJSZcW+aW0gw5pzcG9yYSBiYXRlcmllIGplIHphcG51dMO9LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJPbWV6dWplIHbDvWtvbiBhIGRhdGEgbmEgcG96YWTDrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iVnlwbm91dCDDunNwb3J1IGJhdGVyaWUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iU2tyeXTDvSBvYnNhaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iQXBsaWthY2UgPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiB6YcSNbmUgemF6bmFtZW7DoXZhdCB2xaFlLCBjbyBqZSB6b2JyYXplbm8gbmEgb2JyYXpvdmNlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJUdXRvIHpwcsOhdnUgcMWZw63FoXTEmyBuZXpvYnJhem92YXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iU21hemF0IHbFoWUiPC9zdHJpbmc+CkBAIC00NTIsNCArNDUwLDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IlphcG5vdXQgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJDaGNldGUtbGkga2zDoXZlc25pY2kgcMWZaXBvaml0IGvCoHRhYmxldHUsIG5lamTFmcOtdmUgbXVzw610ZSB6YXBub3V0IEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJaYXBub3V0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iUG91xb7DrXQgdcKgb3puw6FtZW7DrSB6wqBhcGxpa2FjZSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJQb3XFvsOtdCB1wqB2xaFlY2ggb3puw6FtZW7DrSB6wqB0w6l0byBhcGxpa2FjZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJCbG9rb3bDoW5vIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTsOtemvDoSBkxa9sZcW+aXRvc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iTm9ybcOhbG7DrSBkxa9sZcW+aXRvc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iVnlzb2vDoSBkxa9sZcW+aXRvc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVcmdlbnRuw60gZMWvbGXFvml0b3N0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJUYXRvIG96bsOhbWVuw60gbmlrZHkgbmV6b2JyYXpvdmF0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlRhdG8gb3puw6FtZW7DrSB6b2JyYXpvdmF0IG5hIGtvbmNpIHNlem5hbXUgYmV6IHp2dWtvdsOpaG8gdXBvem9ybsSbbsOtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJUYXRvIG96bsOhbWVuw60gem9icmF6b3ZhdCBiZXogenZ1a292w6lobyB1cG96b3JuxJtuw60iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlRhdG8gb3puw6FtZW7DrSB6b2JyYXpvdmF0IG5hIHphxI3DoXRrdSBzZXpuYW11IGHCoHVwb3pvcm5pdCBuYSBuxJsgenZ1a2VtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IlRhdG8gb3puw6FtZW7DrSB6b2JyYXpvdmF0IHDFmcOtbW8gbmEgb2JyYXpvdmNlIGHCoHVwb3pvcm5pdCBuYSBuxJsgenZ1a2VtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iTm9ybcOhbG7DrSBiYXJ2eSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOb8SNbsOtIGJhcnZ5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJWbGFzdG7DrSBiYXJ2eSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+Ik5lem7DoW3DqSBiYXJ2eSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJabcSbbmEgYmFyZXYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJab2JyYXppdCBkbGHFvmRpY2kgUnljaGzDqSBuYXN0YXZlbsOtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJVbW/Fvm5pdCBwxZlldm9kIG5hIHZsYXN0bsOtIGJhcnZ5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iUG91xb7DrXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iT3bEm8WZZW7DrSBuYXN0YXZlbsOtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iTsSba3RlcsOhIG5hc3RhdmVuw60gYmFyZXYgbW9ob3UgenDFr3NvYml0LCDFvmUgemHFmcOtemVuw60gbmVidWRlIHBvdcW+aXRlbG7DqS4gS2xpa251dMOtbSBuYSBPSyB0b3RvIG5hc3RhdmVuw60gYmFyZXYgcG90dnJkw610ZSwgdsKgb3BhxI1uw6ltIHDFmcOtcGFkxJsgc2UgbmFzdGF2ZW7DrSBwbyAxMCBzZWt1bmTDoWNoIHJlc2V0dWplLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwKaW5kZXggZTY5ZDA2OS4uM2Y4NjhhOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJzw7hnIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4ga3VubmUgaWtrZSBzdGFydGVzLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJNZXJlIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBtZXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJPcGRlbCB2YW5kcmV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iT3BkZWwgbG9kcmV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+Ik9wZGVsIGJydWdlcmRlZmluZXJldCI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJCYXR0ZXJpc3BhcmVmdW5rdGlvbiBlciBzbMOlZXQgdGlsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHVjZXJlciB5ZGVldm5lIG9nIGJhZ2dydW5kc2RhdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlYWt0aXZlciBiYXR0ZXJpc3BhcmVmdW5rdGlvbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJJbmRob2xkZXQgZXIgc2tqdWx0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IHZpbCBiZWd5bmRlIGF0IG9wdGFnZSBhbHQsIGh2YWQgZGVyIHZpc2VzIHDDpSBkaW4gc2vDpnJtLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJWaXMgaWtrZSBpZ2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlJ5ZCBhbHQiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IlZpbCBkdSBzbMOlIEJsdWV0b290aCB0aWw/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkJsdWV0b290aCBza2FsIHbDpnJlIHNsw6VldCB0aWwsIGbDuHIgZHUga2FuIGtueXR0ZSBkaXQgdGFzdGF0dXIgdGlsIGRpbiB0YWJsZXQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iU2zDpSB0aWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJBbnZlbmQgZm9yIHVuZGVycmV0bmluZ2VyIHZlZHLDuHJlbmRlIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkFudmVuZCBmb3IgYWxsZSB1bmRlcnJldG5pbmdlciBmcmEgZGVubmUgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2tlcmV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTGlsbGUgdmlndGlnaGVkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+Ik5vcm1hbCB2aWd0aWdoZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iU3RvciB2aWd0aWdoZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJQcmVzc2VyZW5kZSB2aWd0aWdoZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IlZpcyBhbGRyaWcgZGlzc2UgdW5kZXJyZXRuaW5nZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iVmlzIGx5ZGzDuHN0IG5lZGVyc3QgcMOlIGxpc3RlbiBvdmVyIHVuZGVycmV0bmluZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJWaXMgZGlzc2UgdW5kZXJyZXRuaW5nZXIgbHlkbMO4c3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlZpcyDDuHZlcnN0IHDDpSBsaXN0ZW4gb3ZlciB1bmRlcnJldG5pbmdlciwgb2cgZ2l2IGx5ZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJWaXMgcMOlIHNrw6ZybWVuLCBvZyBnaXYgbHlkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQWxtaW5kZWxpZ2UgZmFydmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+Ik5hdHRlZmFydmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJUaWxwYXNzZWRlIGZhcnZlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IlVrZW5kdGUgZmFydmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IkZhcnZlw6ZuZHJpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJWaXMgZmVsdGV0IEh1cnRpZ2UgaW5kc3RpbGxpbmdlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iQWt0aXbDqXIgdGlscGFzc2V0IGZhcnZlw6ZuZHJpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJBbnZlbmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQmVrcsOmZnQgaW5kc3RpbGxpbmdlcm5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iTm9nbGUgZmFydmVpbmRzdGlsbGluZ2VyIGthbiBtZWRmw7hyZSwgYXQgZHUgaWtrZSBrYW4gYnJ1Z2UgZW5oZWRlbi4gS2xpayBww6UgT0sgZm9yIGF0IGJla3LDpmZ0ZSBkaXNzZSBmYXJ2ZWluZHN0aWxsaW5nZXIuIEVsbGVycyBudWxzdGlsbGVzIGRpc3NlIGluZHN0aWxsaW5nZXIgZWZ0ZXIgdGkgc2VrdW5kZXIuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbAppbmRleCBkYzYyZTY1Li40Yzg3NzU4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IlN1Y2hlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4ga29ubnRlIG5pY2h0IGdlc3RhcnRldCB3ZXJkZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ik1laHIiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IHdlaXRlcmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IkdldGVpbHRlIFNjaGFsdGZsw6RjaGUg4oCTIGhvcml6b250YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJHZXRlaWx0ZSBTY2hhbHRmbMOkY2hlIOKAkyB2ZXJ0aWthbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJHZXRlaWx0ZSBTY2hhbHRmbMOkY2hlIOKAkyBiZW51dHplcmRlZmluaWVydCI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJFbmVyZ2llc3Bhcm1vZHVzIGlzdCBha3RpdmllcnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iUmVkdXppZXJ1bmcgZGVyIExlaXN0dW5nIHVuZCBIaW50ZXJncnVuZGRhdGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJFbmVyZ2llc3Bhcm1vZHVzIGRlYWt0aXZpZXJlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJJbmhhbHRlIGF1c2dlYmxlbmRldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBuaW1tdCBhbGxlIGF1ZiBJaHJlbSBCaWxkc2NoaXJtIGFuZ2V6ZWlndGVuIEFrdGl2aXTDpHRlbiBhdWYuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik5pY2h0IGVybmV1dCBhbnplaWdlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJBbGxlIGzDtnNjaGVuIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJCbHVldG9vdGggYWt0aXZpZXJlbj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iWnVtIFZlcmJpbmRlbiB2b24gVGFzdGF0dXIgdW5kIFRhYmxldCBtdXNzIEJsdWV0b290aCBha3RpdmllcnQgc2Vpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBa3RpdmllcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iRsO8ciBCZW5hY2hyaWNodGlndW5nZW4gw7xiZXIgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IGFud2VuZGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iQXVmIGFsbGUgQmVuYWNocmljaHRpZ3VuZ2VuIGRpZXNlciBBcHAgYW53ZW5kZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvY2tpZXJ0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iR2VyaW5nZSBXaWNodGlna2VpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJSZWd1bMOkcmUgV2ljaHRpZ2tlaXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iSG9oZSBXaWNodGlna2VpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlNlaHIgaG9oZSBXaWNodGlna2VpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iRGllc2UgQmVuYWNocmljaHRpZ3VuZ2VuIG5pZW1hbHMgYW56ZWlnZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iT2huZSBUb24gYW0gRW5kZSBkZXIgQmVuYWNocmljaHRpZ3VuZ3NsaXN0ZSBhbnplaWdlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iRGllc2UgQmVuYWNocmljaHRpZ3VuZ2VuIG9obmUgVG9uIGFuemVpZ2VuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJNaXQgVG9uIGdhbnogb2JlbiBpbiBkZXIgQmVuYWNocmljaHRpZ3VuZ3NsaXN0ZSBhbnplaWdlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJNaXQgVG9uIGF1ZiBkZW0gRGlzcGxheSBlaW5ibGVuZGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iU3RhbmRhcmRmYXJiZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iTmFjaHRmYXJiZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IkJlbnV0emVyZGVmaW5pZXJ0ZSBGYXJiZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJVbmJla2FubnRlIEZhcmJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJGYXJiZW4gw6RuZGVybiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IkthY2hlbCBcIlNjaG5lbGxlaW5zdGVsbHVuZ2VuXCIgYW56ZWlnZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkJlbnV0emVyZGVmaW5pZXJ0ZSBBbnBhc3N1bmcgYWt0aXZpZXJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IsOcYmVybmVobWVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkVpbnN0ZWxsdW5nZW4gYmVzdMOkdGlnZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJFaW5pZ2UgRmFyYmVpbnN0ZWxsdW5nZW4ga8O2bm5lbiBkYXp1IGbDvGhyZW4sIGRhc3MgZGFzIEdlcsOkdCBuaWNodCBtZWhyIGdlbnV0enQgd2VyZGVuIGthbm4uIEtsaWNrZSBhdWYgXCJPS1wiLCB1bSBkaWVzZSBGYXJiZWluc3RlbGx1bmdlbiB6dSBiZXN0w6R0aWdlbi4gQW5kZXJlbmZhbGxzIHdlcmRlbiBkaWVzZSBFaW5zdGVsbHVuZ2VuIGluIDEwwqBTZWt1bmRlbiB6dXLDvGNrZ2VzZXR6dC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sCmluZGV4IDljZmFkODUuLjIxZTFlZWUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4izrHOvc6xzrbOrs+EzrfPg863Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiLOlM61zr0gzq7PhM6xzr0gzrTPhc69zrHPhM6uIM63IM61zrrOus6vzr3Ot8+Dzrcgz4TOt8+CIM61z4bOsc+BzrzOv86zzq7PgiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Is6gzrXPgc65z4PPg8+Mz4TOtc+BzrEiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IM6xzrrPjM68zrEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+Is6fz4HOuc62z4zOvc+EzrnOv8+CIM60zrnOsc+Hz4nPgc65z4POvM+Mz4IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLOms6szrjOtc+Ezr/PgiDOtM65zrHPh8+Jz4HOuc+DzrzPjM+CIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+Is6gz4HOv8+DzrHPgc68zr/Pg868zq3Ovc6/z4IgzrTOuc6xz4fPic+BzrnPg868z4zPgiI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLOlyDOlc6+zr/Ouc66zr/Ovc+MzrzOt8+DzrcgzrzPgM6xz4TOsc+Bzq/Osc+CIM61zq/Ovc6xzrkgzrXOvc61z4HOs86uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+Is6czrXOuc+Ozr3Otc65IM+EzrfOvSDOsc+Az4zOtM6/z4POtyDOus6xzrkgz4TOsSDOtM61zrTOv868zq3Ovc6xIM+AzrHPgc6xz4POus63zr3Or86/z4UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Is6Rz4DOtc69zrXPgS4gzrXOvs6/zrnOui/Pg863z4IgzrzPgM6xz4TOsc+Bzq/Osc+CIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+Is6az4HPhc+Gz4wgz4DOtc+BzrnOtc+Hz4zOvM61zr3OvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4izpjOsSDOvs61zrrOuc69zq7Pg861zrkgzrcgzrrOsc+EzrHOs8+BzrHPhs6uIM+Ezr/PhSDPgM61z4HOuc61z4fOv868zq3Ovc6/z4Ugz4DOv8+FIM61zrzPhs6xzr3Or862zrXPhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDPg86xz4IgzrHPgM+MIM+EzrfOvSDOtc+GzrHPgc68zr/Os86uIDx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Is6dzrEgzrzOt869IM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM6+zrHOvc6sIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+Is6UzrnOsc6zz4HOsc+Gzq4gz4zOu8+Jzr0iPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+Is6Vzr3Otc+BzrPOv8+Azr/Or863z4POtyBCbHVldG9vdGg7Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+Is6TzrnOsSDOvc6xIM+Dz4XOvc60zq3Pg861z4TOtSDPhM6/IM+AzrvOt866z4TPgc6/zrvPjM6zzrnOvyDOvM61IM+Ezr8gdGFibGV0IM+DzrHPgiwgzrjOsSDPgM+Bzq3PgM61zrkgz4DPgc+Oz4TOsSDOvc6xIM61zr3Otc+BzrPOv8+Azr/Ouc6uz4POtc+EzrUgz4TOvyBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4izpXOvc61z4HOs86/z4DOv86vzrfPg863Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4izp3OsSDOtc+GzrHPgc68zr/Pg8+EzrXOryDPg8+EzrnPgiDOtc65zrTOv8+Azr/Ouc6uz4POtc65z4IgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4izp3OsSDOtc+GzrHPgc68zr/Pg8+EzrXOryDPg861IM+MzrvOtc+CIM+EzrnPgiDOtc65zrTOv8+Azr/Ouc6uz4POtc65z4IgzrHPgM+MIM6xz4XPhM6uzr0gz4TOt869IM61z4bOsc+BzrzOv86zzq4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4izpHPgM6/zrrOu861zrnPg868zq3Ovc61z4IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLOnM65zrrPgc6uz4IgzrLOsc+Bz43PhM63z4TOsc+CIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+Is6azrHOvc6/zr3Ouc66zq7PgiDOss6xz4HPjc+EzrfPhM6xz4IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4izpzOtc6zzqzOu863z4IgzrLOsc+Bz43PhM63z4TOsc+CIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4izpXPgM61zq/Os86/z4XPg861z4IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Is6dzrEgzrzOt869IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPgM6/z4TOrSDOsc+Fz4TOrc+CIM6/zrkgzrXOuc60zr/PgM6/zrnOrs+DzrXOuc+CIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Is6dzrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOvyDOus6sz4TPiSDPhM68zq7OvM6xIM+EzrfPgiDOu86vz4PPhM6xz4IgzrXOuc60zr/PgM6/zrnOrs+DzrXPic69IM+Hz4nPgc6vz4Igz4TOr8+EzrvOvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4izp3OsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgzrHPhc+Ezq3PgiDOv865IM61zrnOtM6/z4DOv865zq7Pg861zrnPgiDPh8+Jz4HOr8+CIM6uz4fOvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4izp3OsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzrrOv8+Bz4XPhs6uIM+EzrfPgiDOu86vz4PPhM6xz4IgzrXOuc60zr/PgM6/zrnOrs+DzrXPic69IM68zrUgzq7Ph86/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Is6dzrEgz4DPgc6/zrLOrM67zrvOv869z4TOsc65IM+Dz4TOt869IM6/zrjPjM69zrcgzrrOsc65IM69zrEgz4PPhc69zr/OtM61z43Ov869z4TOsc65IM6xz4DPjCDOus6sz4DOv865zr/OvSDOrs+Hzr8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLOms6xzr3Ov869zrnOus6sIM+Hz4HPjs68zrHPhM6xIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+Is6dz4XPh8+EzrXPgc65zr3OrCDPh8+Bz47OvM6xz4TOsSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4izqDPgc6/z4POsc+BzrzOv8+DzrzOrc69zrEgz4fPgc+OzrzOsc+EzrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLOhs6zzr3Pic+Dz4TOsSDPh8+Bz47OvM6xz4TOsSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLOpM+Bzr/PgM6/z4DOv86vzrfPg863IM+Hz4HPic68zqzPhM+Jzr0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLOlc68z4bOrM69zrnPg863IM+AzrvOsc66zrnOtM6vzr/PhSDOk8+Bzq7Os86/z4HPic69IM+Bz4XOuM68zq/Pg861z4nOvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4izpXOvc61z4HOs86/z4DOv86vzrfPg863IM+Az4HOv8+DzrHPgc68zr/Pg868zq3Ovc6/z4UgzrzOtc+EzrHPg8+HzrfOvM6xz4TOuc+DzrzOv8+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4izpXPhs6xz4HOvM6/zrPOriI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLOlc+AzrnOss61zrLOsc6vz4nPg863IM+Bz4XOuM68zq/Pg861z4nOvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+Is6fz4HOuc+DzrzOrc69zrXPgiDPgc+FzrjOvM6vz4POtc65z4Igz4fPgc+JzrzOrM+Ez4nOvSDOvM+Azr/Pgc61zq8gzr3OsSDOvM63zr0gzrXPgM65z4TPgc6tz4DOv8+Fzr0gz4TOtyDPh8+Bzq7Pg863IM6xz4XPhM6uz4Igz4TOt8+CIM+Dz4XPg866zrXPhc6uz4IuIM6azqzOvc+EzrUgzrrOu865zrogz4PPhM63zr0gzrXPgM65zrvOv86zzq4gT0sgzrPOuc6xIM69zrEgzrXPgM65zrLOtc6yzrHOuc+Oz4POtc+EzrUgzrHPhc+Ezq3PgiDPhM65z4Igz4HPhc64zrzOr8+DzrXOuc+CIM+Hz4HPic68zqzPhM+Jzr0sIM60zrnOsc+Gzr/Pgc61z4TOuc66zqwgzrjOsSDOs86vzr3Otc65IM61z4DOsc69zrHPhs6/z4HOrCDOsc+Fz4TPjs69IM+Ez4nOvSDPgc+FzrjOvM6vz4POtc+Jzr0gzrzOtc+EzqwgzrHPgM+MIDEwIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lbi1yQVUvc3RyaW5ncy54bWwKaW5kZXggMzBhMzMzYS4uZmE4YjZjMzMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCkBAIC0zNjQsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQmF0dGVyeSBzYXZlciBpcyBvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJSZWR1Y2VzIHBlcmZvcm1hbmNlIGFuZCBiYWNrZ3JvdW5kIGRhdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IlR1cm4gb2ZmIGJhdHRlcnkgc2F2ZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVudHMgaGlkZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IHdpbGwgc3RhcnQgY2FwdHVyaW5nIGV2ZXJ5dGhpbmcgdGhhdFwncyBkaXNwbGF5ZWQgb24geW91ciBzY3JlZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IkRvblwndCBzaG93IGFnYWluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkNsZWFyIGFsbCI8L3N0cmluZz4KQEAgLTQ0OSw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iVHVybiBvbiBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlRvIGNvbm5lY3QgeW91ciBrZXlib2FyZCB3aXRoIHlvdXIgdGFibGV0LCB5b3UgZmlyc3QgaGF2ZSB0byB0dXJuIG9uIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJUdXJuIG9uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBwbHkgdG8gPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcHBseSB0byBhbGwgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2NrZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJMb3cgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJOb3JtYWwgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJIaWdoIGltcG9ydGFuY2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVcmdlbnQgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iTmV2ZXIgc2hvdyB0aGVzZSBub3RpZmljYXRpb25zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlNpbGVudGx5IHNob3cgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbm90aWZpY2F0aW9uIGxpc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlNpbGVudGx5IHNob3cgdGhlc2Ugbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iU2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RpZmljYXRpb25zIGxpc3QgYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iUGVlayBvbnRvIHRoZSBzY3JlZW4gYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWwgY29sb3VycyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOaWdodCBjb2xvdXJzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJDdXN0b21pc2VkIGNvbG91cnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJVbmtub3duIGNvbG91cnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iQ29sb3VyIG1vZGlmaWNhdGlvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlNob3cgUXVpY2sgU2V0dGluZ3MgdGlsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iRW5hYmxlIGN1c3RvbWlzZWQgdHJhbnNmb3JtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iQXBwbHkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQ29uZmlybSBTZXR0aW5ncyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IlNvbWUgY29sb3VyIHNldHRpbmdzIGNhbiBtYWtlIHRoaXMgZGV2aWNlIHVudXNhYmxlLiBDbGljayBPSyB0byBjb25maXJtIHRoZXNlIGNvbG91ciBzZXR0aW5ncywgb3RoZXJ3aXNlIHRoZXNlIHNldHRpbmdzIHdpbGwgcmVzZXQgYWZ0ZXIgMTAgc2Vjb25kcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKaW5kZXggMzBhMzMzYS4uZmE4YjZjMzMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sCkBAIC0zNjQsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQmF0dGVyeSBzYXZlciBpcyBvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJSZWR1Y2VzIHBlcmZvcm1hbmNlIGFuZCBiYWNrZ3JvdW5kIGRhdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IlR1cm4gb2ZmIGJhdHRlcnkgc2F2ZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVudHMgaGlkZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IHdpbGwgc3RhcnQgY2FwdHVyaW5nIGV2ZXJ5dGhpbmcgdGhhdFwncyBkaXNwbGF5ZWQgb24geW91ciBzY3JlZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IkRvblwndCBzaG93IGFnYWluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkNsZWFyIGFsbCI8L3N0cmluZz4KQEAgLTQ0OSw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iVHVybiBvbiBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlRvIGNvbm5lY3QgeW91ciBrZXlib2FyZCB3aXRoIHlvdXIgdGFibGV0LCB5b3UgZmlyc3QgaGF2ZSB0byB0dXJuIG9uIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJUdXJuIG9uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBwbHkgdG8gPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcHBseSB0byBhbGwgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2NrZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJMb3cgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJOb3JtYWwgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJIaWdoIGltcG9ydGFuY2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVcmdlbnQgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iTmV2ZXIgc2hvdyB0aGVzZSBub3RpZmljYXRpb25zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlNpbGVudGx5IHNob3cgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbm90aWZpY2F0aW9uIGxpc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlNpbGVudGx5IHNob3cgdGhlc2Ugbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iU2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RpZmljYXRpb25zIGxpc3QgYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iUGVlayBvbnRvIHRoZSBzY3JlZW4gYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWwgY29sb3VycyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOaWdodCBjb2xvdXJzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJDdXN0b21pc2VkIGNvbG91cnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJVbmtub3duIGNvbG91cnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iQ29sb3VyIG1vZGlmaWNhdGlvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlNob3cgUXVpY2sgU2V0dGluZ3MgdGlsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iRW5hYmxlIGN1c3RvbWlzZWQgdHJhbnNmb3JtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iQXBwbHkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQ29uZmlybSBTZXR0aW5ncyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IlNvbWUgY29sb3VyIHNldHRpbmdzIGNhbiBtYWtlIHRoaXMgZGV2aWNlIHVudXNhYmxlLiBDbGljayBPSyB0byBjb25maXJtIHRoZXNlIGNvbG91ciBzZXR0aW5ncywgb3RoZXJ3aXNlIHRoZXNlIHNldHRpbmdzIHdpbGwgcmVzZXQgYWZ0ZXIgMTAgc2Vjb25kcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lbi1ySU4vc3RyaW5ncy54bWwKaW5kZXggMzBhMzMzYS4uZmE4YjZjMzMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCkBAIC0zNjQsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQmF0dGVyeSBzYXZlciBpcyBvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJSZWR1Y2VzIHBlcmZvcm1hbmNlIGFuZCBiYWNrZ3JvdW5kIGRhdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IlR1cm4gb2ZmIGJhdHRlcnkgc2F2ZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVudHMgaGlkZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IHdpbGwgc3RhcnQgY2FwdHVyaW5nIGV2ZXJ5dGhpbmcgdGhhdFwncyBkaXNwbGF5ZWQgb24geW91ciBzY3JlZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IkRvblwndCBzaG93IGFnYWluIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkNsZWFyIGFsbCI8L3N0cmluZz4KQEAgLTQ0OSw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iVHVybiBvbiBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlRvIGNvbm5lY3QgeW91ciBrZXlib2FyZCB3aXRoIHlvdXIgdGFibGV0LCB5b3UgZmlyc3QgaGF2ZSB0byB0dXJuIG9uIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJUdXJuIG9uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBwbHkgdG8gPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcHBseSB0byBhbGwgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2NrZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJMb3cgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJOb3JtYWwgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJIaWdoIGltcG9ydGFuY2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVcmdlbnQgaW1wb3J0YW5jZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iTmV2ZXIgc2hvdyB0aGVzZSBub3RpZmljYXRpb25zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlNpbGVudGx5IHNob3cgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbm90aWZpY2F0aW9uIGxpc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlNpbGVudGx5IHNob3cgdGhlc2Ugbm90aWZpY2F0aW9ucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iU2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RpZmljYXRpb25zIGxpc3QgYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iUGVlayBvbnRvIHRoZSBzY3JlZW4gYW5kIG1ha2Ugc291bmQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWwgY29sb3VycyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOaWdodCBjb2xvdXJzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJDdXN0b21pc2VkIGNvbG91cnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJVbmtub3duIGNvbG91cnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iQ29sb3VyIG1vZGlmaWNhdGlvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlNob3cgUXVpY2sgU2V0dGluZ3MgdGlsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iRW5hYmxlIGN1c3RvbWlzZWQgdHJhbnNmb3JtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iQXBwbHkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQ29uZmlybSBTZXR0aW5ncyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IlNvbWUgY29sb3VyIHNldHRpbmdzIGNhbiBtYWtlIHRoaXMgZGV2aWNlIHVudXNhYmxlLiBDbGljayBPSyB0byBjb25maXJtIHRoZXNlIGNvbG91ciBzZXR0aW5ncywgb3RoZXJ3aXNlIHRoZXNlIHNldHRpbmdzIHdpbGwgcmVzZXQgYWZ0ZXIgMTAgc2Vjb25kcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwKaW5kZXggM2ZmMjQ5Mi4uNTQ4NTBmMCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ImJ1c2NhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iTm8gc2UgcHVkbyBpbmljaWFyIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iTcOhcyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gbcOhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iRGl2aXNpw7NuIGhvcml6b250YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEaXZpc2nDs24gdmVydGljYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iRGl2aXNpw7NuIHBlcnNvbmFsaXphZGEiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQWhvcnJvIGRlIGJhdGVyw61hIGFjdGl2YWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHVjZSBlbCByZW5kaW1pZW50byB5IGVsIHVzbyBkZSBkYXRvcyBlbiBzZWd1bmRvIHBsYW5vLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iRGVzYWN0aXZhciBlbCBhaG9ycm8gZGUgYmF0ZXLDrWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVuaWRvcyBvY3VsdG9zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGNvbWVuemFyw6EgbGEgY2FwdHVyYSBkZSB0b2RvIGxvIHF1ZSBzZSBtdWVzdHJlIGVuIGxhIHBhbnRhbGxhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJObyB2b2x2ZXIgYSBtb3N0cmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkJvcnJhciB0b2RvIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLCv0FjdGl2YXIgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJQYXJhIGNvbmVjdGFyIGVsIHRlY2xhZG8gY29uIGxhIHRhYmxldCwgcHJpbWVybyBkZWJlcyBhY3RpdmFyIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBY3RpdmFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBsaWNhciBhIGxhcyBub3RpZmljYWNpb25lcyBkZSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcGxpY2FyIGEgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIGRlIGVzdGEgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb3F1ZWFkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IlBvY2EgaW1wb3J0YW5jaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iSW1wb3J0YW5jaWEgbm9ybWFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IkltcG9ydGFuY2lhIGFsdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVcmdlbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJObyBtb3N0cmFyIG51bmNhIGVzdGFzIG5vdGlmaWNhY2lvbmVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Ik1vc3RyYXIgZW4gbGEgcGFydGUgaW5mZXJpb3IgZGUgbGEgbGlzdGEgZGUgbm90aWZpY2FjaW9uZXMgc2luIGVtaXRpciBzb25pZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+Ik1vc3RyYXIgZXN0YXMgbm90aWZpY2FjaW9uZXMgZGUgbWFuZXJhIHNpbGVuY2lvc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik1vc3RyYXIgZW4gbGEgcGFydGUgc3VwZXJpb3IgZGUgbGEgbGlzdGEgZGUgbm90aWZpY2FjaW9uZXMgeSBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Ik1vc3RyYXIgZW4gbGEgcGFudGFsbGEgeSBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQ29sb3JlcyBub3JtYWxlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJDb2xvcmVzIG5vY3R1cm5vcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ29sb3JlcyBwZXJzb25hbGl6YWRvcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IkNvbG9yZXMgZGVzY29ub2NpZG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik1vZGlmaWNhY2nDs24gZGVsIGNvbG9yIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iTW9zdHJhciBlbCBtb3NhaWNvIGRlIENvbmZpZ3VyYWNpw7NuIHLDoXBpZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkhhYmlsaXRhciBsYSB0cmFuc2Zvcm1hY2nDs24gcGVyc29uYWxpemFkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkFwbGljYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQ29uZmlybWFyIGxhIGNvbmZpZ3VyYWNpw7NuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iQWxndW5hcyBvcGNpb25lcyBkZSBjb25maWd1cmFjacOzbiBkZSBjb2xvciBwdWVkZW4gcHJvdm9jYXIgcXVlIGVsIGRpc3Bvc2l0aXZvIHF1ZWRlIGludXRpbGl6YWJsZS4gSGF6IGNsaWMgZW4gQWNlcHRhciBwYXJhIGNvbmZpcm1hciBlc3RvcyBwYXLDoW1ldHJvcyBkZSBjb2xvci4gRGUgbG8gY29udHJhcmlvLCBsYSBjb25maWd1cmFjacOzbiBzZSByZXN0YWJsZWNlcsOhIGVuIGRpZXogc2VndW5kb3MuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbAppbmRleCA2NjI0MjJiLi40MWQ4M2RjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ImJ1c2NhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iTm8gc2UgaGEgcG9kaWRvIGluaWNpYXIgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJNw6FzIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBtw6FzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJEaXZpc2nDs24gaG9yaXpvbnRhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IkRpdmlzacOzbiB2ZXJ0aWNhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJEaXZpc2nDs24gcGVyc29uYWxpemFkYSI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJBaG9ycm8gZGUgYmF0ZXLDrWEgYWN0aXZhZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iUmVkdWNlIGVsIHJlbmRpbWllbnRvIHkgZWwgZW52w61vIGRlIGRhdG9zIGVuIHNlZ3VuZG8gcGxhbm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlc2FjdGl2YXIgYWhvcnJvIGRlIGJhdGVyw61hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkNvbnRlbmlkb3Mgb2N1bHRvcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBlbXBlemFyw6EgYSBjYXB0dXJhciB0b2RvIGxvIHF1ZSBhcGFyZXpjYSBlbiBsYSBwYW50YWxsYS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iTm8gdm9sdmVyIGEgbW9zdHJhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJCb3JyYXIgdG9kbyI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iwr9BY3RpdmFyIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUGFyYSBwb2RlciBjb25lY3RhciB0dSB0ZWNsYWRvIGEgdHUgdGFibGV0LCBkZWJlcyBhY3RpdmFyIGVsIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBY3RpdmFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBsaWNhciBhIGxhcyBub3RpZmljYWNpb25lcyBkZSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcGxpY2FyIGEgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIGRlIGVzdGEgYXBsaWNhY2nDs24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvcXVlYWRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iUG9jbyBpbXBvcnRhbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IkltcG9ydGFuY2lhIG5vcm1hbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJNdXkgaW1wb3J0YW50ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlVyZ2VudGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik5vIG1vc3RyYXIgZXN0YXMgbm90aWZpY2FjaW9uZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iTW9zdHJhciBlbiBsYSBwYXJ0ZSBpbmZlcmlvciBkZSBsYSBsaXN0YSBkZSBub3RpZmljYWNpb25lcyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJNb3N0cmFyIGVzdGFzIG5vdGlmaWNhY2lvbmVzIGRlIGZvcm1hIHNpbGVuY2lvc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik1vc3RyYXIgZW4gbGEgcGFydGUgc3VwZXJpb3IgZGUgbGEgbGlzdGEgZGUgbm90aWZpY2FjaW9uZXMgeSBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Ik1vc3RyYXIgZW4gbGEgcGFudGFsbGEgeSBlbWl0aXIgc29uaWRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQ29sb3JlcyBub3JtYWxlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJDb2xvcmVzIG5vY3R1cm5vcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ29sb3JlcyBwZXJzb25hbGl6YWRvcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IkNvbG9yZXMgZGVzY29ub2NpZG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik1vZGlmaWNhY2nDs24gZGUgY29sb3JlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Ik1vc3RyYXIgbW9zYWljbyBkZSBBanVzdGVzIHLDoXBpZG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJIYWJpbGl0YXIgdHJhbnNmb3JtYWNpw7NuIHBlcnNvbmFsaXphZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJBcGxpY2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkNvbmZpcm1hciBjb25maWd1cmFjacOzbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkFsZ3VuYXMgb3BjaW9uZXMgZGUgY29uZmlndXJhY2nDs24gZGUgY29sb3IgcHVlZGVuIGhhY2VyIHF1ZSBlbCBkaXNwb3NpdGl2byBubyBzZSBwdWVkYSB1dGlsaXphci4gSGF6IGNsaWMgZW4gQWNlcHRhciBwYXJhIGNvbmZpcm1hciBlc3RhIGNvbmZpZ3VyYWNpw7NuLiBTaSBubyBsbyBoYWNlcywgc2UgcmVzdGFibGVjZXLDoSBlc3RhIGNvbmZpZ3VyYWNpw7NuIGN1YW5kbyB0cmFuc2N1cnJhbiAxMCBzZWd1bmRvcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZXQtckVFL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKaW5kZXggMGZjODhjNC4uOWJiNzg5OCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ldC1yRUUvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+Im90c2luZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iUmFrZW5kdXN0IDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBlaSBzYWFudWQga8OkaXZpdGFkYS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iUm9oa2VtIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+IlZlZWwgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJIb3Jpc29udGFhbG5lIHBvb2xpdGFtaW5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iVmVydGlrYWFsbmUgcG9vbGl0YW1pbmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iS29oYW5kYXR1ZCBwb29saXRhbWluZSI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJBa3Vzw6TDpHN0amEgb24gc2lzc2UgbMO8bGl0YXR1ZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJWw6RoZW5kYWIgasO1dWRsdXN0IGphIHRhdXN0YWFuZG1laWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkFrdXPDpMOkc3RqYSB2w6RsamFsw7xsaXRhbWluZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJTaXN1IG9uIHBlaWRldHVkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGhha2thYiBqw6TDpGR2dXN0YW1hIGvDtWlrZSwgbWlkYSBla3JhYW5pbCBrdXZhdGFrc2UuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IsOEcmEga3V2YSB1dWVzdGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iVMO8aGplbmRhIGvDtWlrIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJLYXMgbMO8bGl0YWRhIEJsdWV0b290aCBzaXNzZT8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iS2xhdmlhdHV1cmkgw7xoZW5kYW1pc2VrcyB0YWh2ZWxhcnZ1dGlnYSBwZWF0ZSBlc21hbHQgQmx1ZXRvb3RoaSBzaXNzZSBsw7xsaXRhbWEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iTMO8bGl0YSBzaXNzZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IlJha2VuZGEgdGVlbWEgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IG3DpHJndWFubmV0ZSBwdWh1bCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IlJha2VuZGEgc2VsbGUgcmFrZW5kdXNlIGvDtWlnaSBtw6RyZ3Vhbm5ldGUgcHVodWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxva2Vlcml0dWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJNYWRhbCB0w6RodHN1c2UgdGFzZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJUYXZhbGluZSB0w6RodHN1c2UgdGFzZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJLw7VyZ2UgdMOkaHRzdXNlIHRhc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJLaWlyZWxvb211bGluZSB0w6RodHN1c2UgdGFzZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iw4RyYSBrdW5hZ2kgbsOkaXRhIG5laWQgbcOkcmd1YW5kZWlkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Ikt1dmEgbcOkcmd1YW5uZXRlIGxvZW5kaSBhbGxvc2FzIHZhaWtzZWx0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJLdXZhIG5lZWQgbcOkcmd1YW5kZWQgdmFpa3NlbHQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ikt1dmEgbcOkcmd1YW5uZXRlIGxvZW5kaSDDvGxhb3NhcyBrb29zIGhlbGlnYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJLdXZhIGVrcmFhbmkgc2VydmFzIGtvb3MgaGVsaWdhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iVGF2YWxpc2VkIHbDpHJ2aWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iw5Zpc2VkIHbDpHJ2aWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IktvaGFuZGF0dWQgdsOkcnZpZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IlbDpHJ2aWQgb24gdGVhZG1hdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iVsOkcnZpIG11dXRtaW5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iS3V2YSBwYWFuIEtpaXJzZWFkZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+Ikx1YmEga29oYW5kYXR1ZCB0ZWlzZW5kYW1pbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJSYWtlbmRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IlNlYWRldGUga2lubml0YW1pbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJNw7VuaSB2w6RydmlzZWFkZSBlaSBzYWEgc2VhZGV0IHbDtWliLW9sbGEga2FzdXRhZGEuIE5lbmRlIHbDpHJ2aXNlYWRldGUga2lubml0YW1pc2VrcyBrbMO1cHNha2UgT0ssIG11aWR1IGzDpGh0ZXN0YXRha3NlIG5lZWQgc2VhZGVkIDEwIHNla3VuZGkgcMOkcmFzdC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZXUtckVTL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ldS1yRVMvc3RyaW5ncy54bWwKaW5kZXggM2IwNjEzNy4uZTYyMzAzYSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ldS1yRVMvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ldS1yRVMvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ImJpbGF0dSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iRXppbiBpemFuIGRhIGhhc2kgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJHZWhpYWdvIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+IkJlc3RlIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iQmFuYWtldGEgaG9yaXpvbnRhbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJCYW5ha2V0YSBiZXJ0aWthbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iQmFuYWtldGEgcGVydHNvbmFsaXphdHVhIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IkJhdGVyaWEgYXVycmV6bGVhIGFrdGliYXR1dGEgZGFnbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJFcnJlbmRpbWVuZHVhIGV0YSBhdHpla28gcGxhbm9rbyBkYXR1YWsgbXVycml6dGVuIGRpdHUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlc2FrdGliYXR1IGJhdGVyaWEgYXVycmV6dGVrbyBhdWtlcmEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iRWR1a2lhayBlemt1dGF0dXRhIGRhdWRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGFwbGlrYXppb2FrIHBhbnRhaWxhbiBiaXN0YXJhdHplbiBkZW4gZ3V6dGlhIGdyYWJhdHVrbyBkdS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iRXogZXJha3V0c2kgYmVycmlybyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJHYXJiaXR1IGd1enRpYWsiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IkJsdWV0b290aCBlZ2luYmlkZWEgYWt0aWJhdHUgbmFoaSBkdXp1PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJUZWtsYXR1YSB0YWJsZXRhcmEga29uZWt0YXR6ZWtvLCBCbHVldG9vdGggZWdpbmJpZGVhIGFrdGliYXR1IGJlaGFyIGR1enUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iQWt0aWJhdHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJBcGxpa2F0dSBcIjx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPlwiIGdhaWFyaSBidXJ1emtvIGpha2luYXJhenBlbmVpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iQXBsaWthdHUgYXBsaWthemlvIGhvbmV0YWtvIGpha2luYXJhenBlbiBndXp0aWVpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2tlYXR1dGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJHYXJyYW50emkgdHhpa2lhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IkdhcnJhbnR6aSBub3JtYWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IkdhcnJhbnR6aSBoYW5kaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJQcmVtaWF6a29hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJFeiBlcmFrdXRzaSBqYWtpbmFyYXpwZW4gaGF1ZWsgaW5vaXoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iRXJha3V0c2kgamFraW5hcmF6cGVuIGhhdWVrIHplcnJlbmRhcmVuIGJlaGVhbGRlYW4sIGJhaW5hIHNvaW51cmlrIGVnaW4gZ2FiZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iRXJha3V0c2kgamFraW5hcmF6cGVuIGhhdWVrLCBiYWluYSBzb2ludXJpayBlZ2luIGdhYmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IkVyYWt1dHNpIGpha2luYXJhenBlbiBoYXVlayB6ZXJyZW5kYXJlbiBnb2lhbGRlYW4gZXRhIGVnaW4gc29pbnVhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IkFnZXJyYXJhemkgamFraW5hcmF6cGVuIGhhdWVrIHBhbnRhaWxhbiBldGEgZWdpbiBzb2ludWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJLb2xvcmUgbm9ybWFsYWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iR2F1ZWtvIGtvbG9yZWFrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJLb2xvcmUgcGVydHNvbmFsaXphdHVhayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IktvbG9yZSBlemV6YWd1bmFrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IktvbG9yZS1hbGRha2V0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IkVyYWt1dHNpIGV6YXJwZW4gYml6a29ycmVuIGxhdXphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJHYWl0dSBpdHh1cmFsZGFrZXRhIHBlcnRzb25hbGl6YXR1YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkFwbGlrYXR1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkJlcnJldHNpIGV6YXJwZW5hayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkJhbGl0ZWtlIGdhaWx1YSBrb2xvcmUtZXphcnBlbiBiYXR6dWVraW4gZXppbiBlcmFiaWxpIGl6YXRlYS4gS29sb3JlLWV6YXJwZW5hayBiZXJyZXN0ZWtvLCBzYWthdHUgQWRvcy4gQmVzdGVsYSwgaGFtYXIgc2VndW5kb3JlbiBidXJ1YW4gYmVycmV6YXJyaWtvIGRpcmEgZXphcnBlbmFrLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwKaW5kZXggYjhjNDI1Ni4uZjQ1YzAxYiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLYrNiz2KrYrNmIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g2LTYsdmI2Lkg2YbYtNivLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLYqNuM2LTYqtixIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDZhdmI2LHYryDYr9uM2q/YsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i2KrZgtiz24zZhSDYp9mB2YLbjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+Itiq2YLYs9uM2YUg2LnZhdmI2K/bjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLYs9mB2KfYsdi024wg2qnYsdiv2YYg2KrZgtiz24zZhSI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLYqNmH24zZhtmH4oCM2LPYp9iy24wg2KjYp9iq2LHbjCDYsdmI2LTZhiDYp9iz2KouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+Iti52YXZhNqp2LHYryDZiCDYp9i32YTYp9i52KfYqiDZvtiz4oCM2LLZhduM2YbZhyDYsdinINqp2KfZh9i0INmF24zigIzYr9mH2K8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Itio2YfbjNmG2YfigIzYs9in2LLbjCDYqNin2KrYsduMINix2Kcg2K7Yp9mF2YjYtCDaqdmG24zYryI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLZhdit2KrZiNin2YfYpyDZvtmG2YfYp9mGINmH2LPYqtmG2K8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g2LTYsdmI2Lkg2KjZhyDYttio2Lcg2YfYsSDahtuM2LLbjCDZhduM4oCM2qnZhtivINqp2Ycg2K/YsSDYtdmB2K3Zh+KAjNmG2YXYp9uM2LQg2LTZhdinINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2YXbjOKAjNi02YjYry4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i2K/ZiNio2KfYsdmHINmG2LTYp9mGINiv2KfYr9mHINmG2LTZiNivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+Itm+2KfaqSDaqdix2K/ZhiDZh9mF2Ycg2YXZiNin2LHYryI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4i2KjZhNmI2KrZiNirINix2YjYtNmGINi02YjYr9ifIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+Itio2LHYp9uMINmF2LHYqtio2Lcg2qnYsdiv2YYg2LXZgdit2YfigIzaqdmE24zYryDYqNinINix2KfbjNin2YbZhyDZhNmI2K3bjNiMINin2KjYqtiv2Kcg2KjYp9uM2K8g2KjZhNmI2KrZiNirINix2Kcg2LHZiNi02YYg2qnZhtuM2K8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i2LHZiNi02YYg2qnYsdiv2YYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLYp9i52YXYp9mEINio2LEg2LHZiNuMINin2LnZhNin2YbigIzZh9in24wgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i2KfYudmF2KfZhCDYqNixINix2YjbjCDYqtmF2KfZhSDYp9i52YTYp9mG4oCM2YfYp9uMINin24zZhiDYqNix2YbYp9mF2YciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i2YXYs9iv2YjYryDYtNiv2YciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLYp9mH2YXbjNiqINqp2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i2KfZh9mF24zYqiDZhdi52YXZiNmE24wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i2KfZh9mF24zYqiDYstuM2KfYryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+Itin2YfZhduM2Kog2YHZiNix24wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+ItmH2LHar9iyINin24zZhiDYp9i52YTYp9mG4oCM2YfYpyDZhti02KfZhiDYr9in2K/ZhyDZhti02YjZhtivIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Itio2K/ZiNmGINi12K/YpyDYr9ixINm+2KfbjNuM2YYg2YHZh9ix2LPYqiDYp9i52YTYp9mGINmG2LTYp9mGINiv2KfYr9mHINi02YjYryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i2KfbjNmGINin2LnZhNin2YbigIzZh9inINio24zigIzYtdiv2Kcg2YbYtNin2YYg2K/Yp9iv2Ycg2LTZiNmG2K8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Itiv2LEg2KjYp9mE2KfbjCDZgdmH2LHYs9iqINin2LnZhNin2YbigIzZh9inINmIINio2Ycg2YfZhdix2KfZhyDYtdiv2Kcg2YbYtNin2YYg2K/Yp9iv2Ycg2LTZiNivIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Itiv2LEg2KzZhNmI24wg2LXZgdit2Ycg2KjZhyDZh9mF2LHYp9mHINi12K/YpyDZhti02KfZhiDYr9in2K/ZhyDYtNmI2K8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLYsdmG2q/igIzZh9in24wg2LnYp9iv24wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i2LHZhtqv4oCM2YfYp9uMINi02KgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+Itix2Ybar+KAjNmH2KfbjCDYs9mB2KfYsdi024wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLYsdmG2q/igIzZh9in24wg2YbYp9mF2LTYrti1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Itin2LXZhNin2K0g2LHZhtqvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i2YbZhdin24zYtCDaqdin2LTbjCDYqtmG2LjbjNmF2KfYqiDYs9ix24zYuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i2YHYudin2YQg2qnYsdiv2YYg2KrYqNiv24zZhCDYs9mB2KfYsdi024wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLYp9i52YXYp9mE4oCMINqp2LHYr9mGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+Itiq2KPbjNuM2K8g2KrZhti424zZhdin2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLYqNi52LbbjCDYp9iyINiq2YbYuNuM2YXYp9iqINix2YbaryDZhduM4oCM2KrZiNin2YbZhtivINin24zZhiDYr9iz2Krar9in2Ycg2LHYpyDYutuM2LHZgtin2KjZhCDYp9iz2KrZgdin2K/ZhyDaqdmG2YbYry4g2KjYsdin24wg2KrYo9uM24zYryDYp9uM2YYg2KrZhti424zZhdin2Kog2LHZhtqvINix2YjbjCDCq9iq2KPbjNuM2K/CuyDaqdmE24zaqSDaqdmG24zYr9iMINiv2LEg2LrbjNixINin24zZhiDYtdmI2LHYqiDYp9uM2YYg2KrYutuM24zYsdin2Kog2KjYudivINin2LIg27HbsCDYq9in2YbbjNmHINio2KfYstmG2LTYp9mG24wg2YXbjOKAjNi02YjZhtivLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKaW5kZXggYTMyMjMyZi4uYWYxYTFlNSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJoYWt1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJTb3ZlbGx1a3NlbiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4ga8OkeW5uaXN0w6RtaW5lbiBlcMOkb25uaXN0dWkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ikxpc8Okw6QiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iKzx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBsaXPDpMOkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJWYWFrYXN1dW50YWluZW4gamFrbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IlB5c3R5c3V1bnRhaW5lbiBqYWtvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+Ik11b2thdHR1IGpha28iPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iVmlycmFuc8Okw6RzdMO2IG9uIGvDpHl0w7Zzc8OkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJham9pdHRhYSBzdW9yaXR1c2t5a3nDpCBqYSB0YXVzdGF0aWVkb25zaWlydG9hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJQb2lzdGEgdmlycmFuc8Okw6RzdMO2IGvDpHl0w7ZzdMOkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNpc8OkbHTDtiBwaWlsb3RldHR1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGFsa2FhIHRhbGxlbnRhYSBrYWlrZW4gbsOkeXTDtmxsw6RzaSBuw6RreXbDpG4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IsOEbMOkIG7DpHl0w6QgdXVkZWxsZWVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlBvaXN0YSBrYWlra2kiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+Ik90ZXRhYW5rbyBCbHVldG9vdGgga8OkeXR0w7bDtm4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkpvdHRhIHZvaXQgeWhkaXN0w6TDpCBuw6RwcMOkaW1pc3TDtm4gdGFibGV0dGlpc2ksIHNpbnVuIG9uIGVuc2luIG90ZXR0YXZhIEJsdWV0b290aCBrw6R5dHTDtsO2bi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJPdGEga8OkeXR0w7bDtm4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJTb3ZlbGxhIGFpaGVlbiA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4gaWxtb2l0dWtzaWluIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iU292ZWxsYSBrYWlra2lpbiB0w6Rtw6RuIHNvdmVsbHVrc2VuIGlsbW9pdHVrc2lpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJFc3RldHl0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iRWkga292aW4gdMOkcmtlw6QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iVMOkcmtlw6QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iSHl2aW4gdMOkcmtlw6QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJLaWlyZWVsbGluZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IsOEbMOkIGtvc2thYW4gbsOkeXTDpCBuw6RpdMOkIGlsbW9pdHVrc2lhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Ik7DpHl0w6QgaHVvbWFhbWF0dG9tYXN0aSBpbG1vaXR1c2x1ZXR0ZWxvbiBhbGFvc2Fzc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+Ik7DpHl0w6QgbsOkbcOkIGlsbW9pdHVrc2V0IGh1b21hYW1hdHRvbWFzdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik7DpHl0w6QgaWxtb2l0dWtzZXQgbHVldHRlbG9uIGvDpHJqZXNzw6QgamEgdG9pc3RhIG1lcmtracOkw6RuaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJOw6R5dMOkIGlsbW9pdHVzIG7DpHl0w7ZsbMOkIGphIHRvaXN0YSDDpMOkbmltZXJra2kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJUYXZhbGxpc2V0IHbDpHJpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJZw7Z2w6RyaXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+Ik11b2thdHV0IHbDpHJpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IlR1bnRlbWF0dG9tYXQgdsOkcml0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik11b2thdHV0IHbDpHJpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Ik7DpHl0w6QgcGlrYS1hc2V0dXNydXV0dSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iT3RhIG11b2thdHV0IHbDpHJpdCBrw6R5dHTDtsO2biI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkvDpHl0w6QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iVmFodmlzdGEgYXNldHVrc2V0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iSm90a2luIHbDpHJpYXNldHVrc2V0IHZvaXZhdCBow6Rpcml0w6QgbGFpdHRlZW4ga8OkeXR0w7bDpC4gVmFodmlzdGEgdXVkZXQgdsOkcmlhc2V0dWtzZXQgdmFsaXRzZW1hbGxhIE9LLiBNdXVzc2EgdGFwYXVrc2Vzc2EgYWllbW1hdCBhc2V0dWtzZXQgcGFsYXV0ZXRhYW4gMTAgc2VrdW5uaW4ga3VsdXR0dWEuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWZyLXJDQS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1sCmluZGV4IDViNTUxODguLjIwYThiZGMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJyZWNoZXJjaGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJJbXBvc3NpYmxlIGRlIGxhbmNlciA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IlBsdXMiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IGF1dHJlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iU8OpcGFyYXRpb24gaG9yaXpvbnRhbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJTw6lwYXJhdGlvbiB2ZXJ0aWNhbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iU8OpcGFyYXRpb24gcGVyc29ubmFsaXPDqWUiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iTGEgZm9uY3Rpb24gw4ljb25vbWllIGRcJ8OpbmVyZ2llIGVzdCBhY3RpdsOpZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJSw6lkdWlyZSBsZXMgcGVyZm9ybWFuY2VzIGV0IGRlIGZvbmQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkTDqXNhY3RpdmVyIGxcJ8OpY29ub21pc2V1ciBkXCfDqW5lcmdpZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250ZW51cyBtYXNxdcOpcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBjb21tZW5jZXIgw6AgZW5yZWdpc3RyZXIgdG91dCBjZSBxdWkgc1wnYWZmaWNoZSBzdXIgdm90cmUgw6ljcmFuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOZSBwbHVzIGFmZmljaGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlRvdXQgZWZmYWNlciI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQWN0aXZlciBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlBvdXIgY29ubmVjdGVyIHZvdHJlIGNsYXZpZXIgw6Agdm90cmUgdGFibGV0dGUsIHZvdXMgZGV2ZXogZFwnYWJvcmQgYWN0aXZlciBsYSBjb25uZWN0aXZpdMOpIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBY3RpdmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBwbGlxdWVyIMOgIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiBub3RpZmljYXRpb25zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iQXBwbGlxdWVyIMOgIHRvdXRlcyBsZXMgbm90aWZpY2F0aW9ucyBkZSBjZXR0ZSBhcHBsaWNhdGlvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJCbG9xdcOpZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IkltcG9ydGFuY2UgZmFpYmxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IkltcG9ydGFuY2Ugbm9ybWFsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJJbXBvcnRhbmNlIMOpbGV2w6llIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iSW1wb3J0YW5jZSB1cmdlbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJOZSBqYW1haXMgYWZmaWNoZXIgY2VzIG5vdGlmaWNhdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iQWZmaWNoZXIgZW4gbW9kZSBzaWxlbmNpZXV4IGF1IGJhcyBkZSBsYSBsaXN0ZSBkZSBub3RpZmljYXRpb25zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJBZmZpY2hlciBjZXMgbm90aWZpY2F0aW9ucyBlbiBtb2RlIHNpbGVuY2lldXgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IkFmZmljaGVyIGVuIGhhdXQgZGUgbGEgbGlzdGUgZGVzIG5vdGlmaWNhdGlvbnMgZXQgw6ltZXR0cmUgdW4gc29uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IkFmZmljaGVyIHN1ciBsXCfDqWNyYW4gZXQgw6ltZXR0cmUgdW4gc29uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQ291bGV1cnMgbm9ybWFsZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iQ291bGV1cnMgbm9jdHVybmVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJDb3VsZXVycyBwZXJzb25uYWxpc8OpZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJDb3VsZXVycyBpbmNvbm51ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iTW9kaWZpZXIgbGEgY291bGV1ciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IkFmZmljaGVyIGxhIHR1aWxlIGRlIGNvbmZpZ3VyYXRpb24gcmFwaWRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJBY3RpdmVyIGxhIHRyYW5zZm9ybWF0aW9uIHBlcnNvbm5hbGlzw6llIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iQXBwbGlxdWVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkNvbmZpcm1lciBsZXMgcGFyYW3DqHRyZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJDZXJ0YWlucyBwYXJhbcOodHJlcyBkZSBjb3VsZXVycyBwZXV2ZW50IHJlbmRyZSBjZXQgYXBwYXJlaWwgaW51dGlsaXNhYmxlLiBDbGlxdWV6IHN1ciDCqyBPSyDCuyBwb3VyIHZhbGlkZXIgY2VzIHBhcmFtw6h0cmVzLCBzaW5vbiBpbHMgc2Vyb250IHLDqWluaXRpYWxpc8OpcyBhcHLDqHMgMTAgc2Vjb25kZXMuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbAppbmRleCBkZDJkNWY0Li44ZTc2ZWU4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZnIvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+InJlY2hlcmNoZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IkltcG9zc2libGUgZGUgbGFuY2VyIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iUGx1cyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz7CoGF1dHJlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iU8OpcGFyYXRpb24gaG9yaXpvbnRhbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJTw6lwYXJhdGlvbiB2ZXJ0aWNhbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iU8OpcGFyYXRpb24gcGVyc29ubmFsaXPDqWUiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iTFwnw6ljb25vbWlzZXVyIGRlIGJhdHRlcmllIGVzdCBhY3RpdsOpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IkxpbWl0ZSBsZXMgcGVyZm9ybWFuY2VzIGV0IGxlcyBkb25uw6llcyBlbiBhcnJpw6hyZS1wbGFuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iRMOpc2FjdGl2ZXIgbFwnw6ljb25vbWlzZXVyIGRlIGJhdHRlcmllIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkNvbnRlbnVzIG1hc3F1w6lzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IHZhIGNvbW1lbmNlciDDoCBjYXB0dXJlciB0b3VzIGxlcyBjb250ZW51cyBhZmZpY2jDqXMgw6AgbFwnw6ljcmFuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOZSBwbHVzIGFmZmljaGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlRvdXQgZWZmYWNlciI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQWN0aXZlciBsZSBCbHVldG9vdGjCoD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUG91ciBjb25uZWN0ZXIgdW4gY2xhdmllciDDoCB2b3RyZSB0YWJsZXR0ZSwgdm91cyBkZXZleiBhdm9pciBhY3RpdsOpIGxlIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBY3RpdmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBwbGlxdWVyIGF1eCBub3RpZmljYXRpb25zIHJlbGF0aXZlcyBhdSBzdWpldCBcIjx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPlwiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iQXBwbGlxdWVyIMOgIHRvdXRlcyBsZXMgbm90aWZpY2F0aW9ucyBkZSBjZXR0ZSBhcHBsaWNhdGlvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJCbG9xdcOpZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJJbXBvcnRhbmNlIGZhaWJsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJJbXBvcnRhbmNlIG5vcm1hbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iSW1wb3J0YW5jZSDDqWxldsOpZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlVyZ2VudCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iTmUgamFtYWlzIGFmZmljaGVyIGNlcyBub3RpZmljYXRpb25zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IkFmZmljaGVyIGF1IGJhcyBkZSBsYSBsaXN0ZSBkZXMgbm90aWZpY2F0aW9ucyBlbiBtb2RlIHNpbGVuY2lldXgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IkFmZmljaGVyIGNlcyBub3RpZmljYXRpb25zIGVuIG1vZGUgc2lsZW5jaWV1eCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iQWZmaWNoZXIgZW4gaGF1dCBkZSBsYSBsaXN0ZSBkZXMgbm90aWZpY2F0aW9ucyBldCDDqW1ldHRyZSB1biBzb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iQWZmaWNoZXIgc3VyIGxcJ8OpY3JhbiBldCDDqW1ldHRyZSB1biBzb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJDb3VsZXVycyBub3JtYWxlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJDb3VsZXVycyBub2N0dXJuZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IkNvdWxldXJzIHBlcnNvbm5hbGlzw6llcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IkNvdWxldXJzIGluY29ubnVlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJNb2RpZmljYXRpb24gZGVzIGNvdWxldXJzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iQWZmaWNoZXIgbGEgdHVpbGUgZGUgY29uZmlndXJhdGlvbiByYXBpZGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkFjdGl2ZXIgbGEgdHJhbnNmb3JtYXRpb24gcGVyc29ubmFsaXPDqWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJBcHBsaXF1ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iVsOpcmlmaWVyIGxlcyBwYXJhbcOodHJlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkNlcnRhaW5zIHBhcmFtw6h0cmVzIGRlIGNvdWxldXJzIHBldXZlbnQgcmVuZHJlIGNldCBhcHBhcmVpbCBpbnV0aWxpc2FibGUuIENsaXF1ZXogc3VyIFwiT0tcIiBwb3VyIHZhbGlkZXIgY2VzIHBhcmFtw6h0cmVzLCBzYW5zIHF1b2kgaWxzIHNlcm9udCByw6lpbml0aWFsaXPDqXMgYXByw6hzIDEwwqBzZWNvbmRlcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1nbC1yRVMvc3RyaW5ncy54bWwKaW5kZXggMjJhYzcyZS4uNDU2MmQ4OWIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZ2wtckVTL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJidXNjYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ik5vbiBmb2kgcG9zaWJsZSBpbmljaWFyIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iTcOhaXMiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IG3DoWlzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJEaXZpZGlyIGVuIGhvcml6b250YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEaXZpZGlyIGVuIHZlcnRpY2FsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IkRpdmlkaXIgZGUgeGVpdG8gcGVyc29uYWxpemFkbyI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJPIGFmb3JybyBkZSBiYXRlcsOtYSBlc3TDoSBhY3RpdmFkbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJSZWR1Y2UgbyByZW5kZW1lbnRvIGUgb3MgZGF0b3MgZW4gc2VndW5kbyBwbGFubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iRGVzYWN0aXZhciBvIGFmb3JybyBkZSBiYXRlcsOtYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJDb250aWRvIG9jdWx0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBjb21lemFyw6EgYSBjYXB0dXJhciB0b2RvIG8gcXVlIGFwYXJlemEgbmEgdMO6YSBwYW50YWxsYS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iTm9uIG1vc3RyYXIgb3V0cmEgdmV6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkVsaW1pbmFyIHRvZGFzIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJRdWVyZXMgYWN0aXZhciBvIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUGFyYSBjb25lY3RhciBvIHRldSB0ZWNsYWRvIGNvIHRhYmxldCwgcHJpbWVpcm8gdGVzIHF1ZSBhY3RpdmFyIG8gQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IkFjdGl2YXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJBcGxpY2FyIMOhcyBub3RpZmljYWNpw7NucyBkZSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcGxpY2FyIGEgdG9kYXMgYXMgbm90aWZpY2FjacOzbnMgcHJvY2VkZW50ZXMgZGVzdGEgYXBsaWNhY2nDs24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvcXVlYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iSW1wb3J0YW5jaWEgYmFpeGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iSW1wb3J0YW5jaWEgbm9ybWFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IkltcG9ydGFuY2lhIGFsdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJJbXBvcnRhbmNpYSB1cnhlbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJOb24gbW9zdHJhciBudW5jYSBlc3RhcyBub3RpZmljYWNpw7NucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJNb3N0cmFyIGRlIGZvcm1hIHNpbGVuY2lvc2EgbmEgcGFydGUgaW5mZXJpb3IgZGEgbGlzdGEgZGUgbm90aWZpY2FjacOzbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+Ik1vc3RyYXIgZXN0YXMgbm90aWZpY2FjacOzbnMgZGUgZm9ybWEgc2lsZW5jaW9zYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iTW9zdHJhciBuYSBwYXJ0ZSBzdXBlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYWNpw7NucyBlIGVtaXRpciBzb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iTW9zdHJhciBuYSBwYW50YWxsYSBlIGVtaXRpciBzb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJDb3JlcyBub3JtYWlzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IkNvcmVzIG5vY3R1cm5hcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ29yZXMgcGVyc29uYWxpemFkYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJDb3JlcyBkZXNjb8OxZWNpZGFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik1vZGlmaWNhY2nDs24gZGUgY29yIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iTW9zdHJhciBtb3NhaWNvIGRlIGNvbmZpZ3VyYWNpw7NuIHLDoXBpZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkFjdGl2YXIgdHJhbnNmb3JtYWNpw7NuIHBlcnNvbmFsaXphZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJBcGxpY2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkNvbmZpcm1hciBjb25maWd1cmFjacOzbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkFsZ3VuaGFzIG9wY2nDs25zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGNvciBwb2RlbiBmYWNlciBxdWUgZXN0ZSBkaXNwb3NpdGl2byBzZXhhIGludXRpbGl6YWJsZS4gRmFpIGNsaWMgZW4gQWNlcHRhciBwYXJhIGNvbmZpcm1hciBlc3RhIGNvbmZpZ3VyYWNpw7NuIGRlIGNvcjsgZW4gY2FzbyBjb250cmFyaW8sIGEgY29uZmlndXJhY2nDs24gcmVzdGFibGVjZXJhc2UgdHJhcyAxMCBzZWd1bmRvcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtZ3UtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKaW5kZXggZDcyNTI5ZS4uNjkxNzRlZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ndS1ySU4vc3RyaW5ncy54bWwKQEAgLTM2NCw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLgqqzgq4fgqp/gqrDgq4Ag4Kq44KuH4Kq14KqwIOCqmuCqvuCqsuCrgSDgqpvgq4ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i4Kqq4KuN4Kqw4Kqm4Kqw4KuN4Kq24KqoIOCqheCqqOCrhyDgqqrgq4Pgqrfgq43gqqDgqq3gq4Lgqq7gqr8g4Kqh4KuH4Kqf4Kq+IOCqmOCqn+CqvuCqoeCrhyDgqpvgq4ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuCqrOCrheCqn+CqsOCrgCDgqrjgq4fgqrXgqrAg4Kqs4KqC4KqnIOCqleCqsOCriyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgqrjgqr7gqq7gqpfgq43gqrDgq4DgqpMg4Kqb4KuB4Kqq4Kq+4Kq14KuH4KqyIOCqm+CrhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDgqqTgqq7gqr7gqrDgq4Ag4Kq44KuN4KqV4KuN4Kqw4KuA4KqoIOCqquCqsCDgqpzgq4cg4Kqq4KuN4Kqw4Kqm4Kqw4KuN4Kq24Kq/4KqkIOCqpeCqvuCqryDgqpvgq4cg4Kqk4KuHIOCqpuCqsOCrh+CqlSDgqrXgqrjgq43gqqTgq4Hgqqjgq4cg4KqV4KuH4Kqq4KuN4Kqa4KqwIOCqleCqsOCqteCqvuCqqOCrgeCqgiDgqqrgq43gqrDgqr7gqrDgqoLgqq0g4KqV4Kqw4Kq24KuHLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgqqvgqrDgq4DgqqXgq4Ag4Kqs4Kqk4Kq+4Kq14Kq24KuLIOCqqOCqueCrgOCqgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLgqqzgqqfgq4Eg4Kq44Kq+4KqrIOCqleCqsOCriyI8L3N0cmluZz4KQEAgLTQ0OSw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3RoIOCqmuCqvuCqsuCrgSDgqpXgqrDgqrXgq4Eg4Kqb4KuHPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLgqqTgqq7gqr7gqrDgqr4g4Kqf4KuH4Kqs4KuN4Kqy4KuH4KqfIOCquOCqvuCqpeCrhyDgqpXgq4Dgqqzgq4vgqrDgq43gqqEg4KqV4Kqo4KuH4KqV4KuN4KqfIOCqleCqsOCqteCqviDgqq7gqr7gqp/gq4csIOCqpOCqruCqvuCqsOCrhyDgqqrgqrngq4fgqrLgqr7gqoIgQmx1ZXRvb3RoIOCqmuCqvuCqsuCrgSDgqpXgqrDgqrXgqr7gqqjgq4Ag4Kqc4Kqw4KuC4KqwIOCqquCqoeCqtuCrhy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLgqprgqr7gqrLgq4Eg4KqV4Kqw4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IOCquOCrguCqmuCqqOCqvuCqkyDgqqrgqrAg4Kqy4Kq+4KqX4KuBIOCqleCqsOCriyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuCqhiDgqo3gqqrgq43gqrLgqr/gqpXgq4fgqrbgqqjgqqjgq4Ag4Kqk4Kqu4Kq+4KquIOCquOCrguCqmuCqqOCqvuCqkyDgqqrgqrAg4Kqy4Kq+4KqX4KuBIOCqleCqsOCriyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLgqoXgqrXgqrDgq4vgqqfgqr/gqqQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLgqqjgqr/gqq7gq43gqqgg4Kqu4Kq54Kqk4KuN4Kq14Kqo4KuAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuCquOCqvuCqruCqvuCqqOCrjeCqryDgqq7gqrngqqTgq43gqrXgqqjgq4AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i4KqJ4Kqa4KuN4KqaIOCqruCqueCqpOCrjeCqteCqqOCrgCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuCqpOCqvuCqpOCrjeCqleCqvuCqsuCqv+CqlSDgqq7gqrngqqTgq43gqrXgqqjgq4AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuCqhiDgqrjgq4Lgqprgqqjgqr7gqpMg4KqV4KuN4Kqv4Kq+4Kqw4KuH4KqvIOCqrOCqpOCqvuCqteCqtuCriyDgqqjgqrngq4DgqoIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i4Kq44KuC4Kqa4Kqo4Kq+4Kqo4KuAIOCquOCrguCqmuCqv+CqqOCrgCDgqqjgq4Dgqprgq4cg4Kqa4KuB4Kqq4Kqa4Kq+4KqqIOCqrOCqpOCqvuCqteCriyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i4KqGIOCquOCrguCqmuCqqOCqvuCqkyDgqprgq4Hgqqrgqprgqr7gqqog4Kqs4Kqk4Kq+4Kq14KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLgqrjgq4Lgqprgqqjgqr7gqpPgqqjgq4Ag4Kq44KuC4Kqa4Kq/4Kqo4KuAIOCqn+Cri+CqmiDgqqrgqrAg4Kqs4Kqk4Kq+4Kq14KuLIOCqheCqqOCrhyDgqoXgqrXgqr7gqpwg4KqV4Kqw4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IuCquOCrjeCqleCrjeCqsOCrgOCqqCDgqqrgqrAg4Kqk4KuN4Kq14Kqw4Kq/4KqkIOCqpuCrjeCqsOCqt+CrjeCqn+CqvyDgqpXgqrDgq4sg4KqF4Kqo4KuHIOCqheCqteCqvuCqnCDgqpXgqrDgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLgqrjgqr7gqq7gqr7gqqjgq43gqq8g4Kqw4KqC4KqX4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuCqsOCqvuCqpOCrjeCqsOCqvyDgqrDgqoLgqpfgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuCqleCquOCrjeCqn+CqriDgqrDgqoLgqpfgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLgqoXgqpzgqr7gqqPgq43gqq/gqr4g4Kqw4KqC4KqX4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuCqsOCqguCqlyDgqrjgqoLgqrbgq4vgqqfgqqgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLgqp3gqqHgqqrgq4Ag4Kq44KuH4Kqf4Kq/4KqC4KqX4KuN4Kq4IOCqn+CqvuCqh+CqsiDgqqzgqqTgqr7gqrXgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuCqleCquOCrjeCqn+CqriDgqrDgq4Lgqqrgqr7gqoLgqqTgqrDgqqPgqqjgq4cg4Kq44KqV4KuN4Kq34KquIOCqleCqsOCriyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IuCqsuCqvuCql+CrgSDgqpXgqrDgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4Kq44KuH4Kqf4Kq/4KqC4KqX4KuN4Kq44Kqo4KuAIOCqquCrgeCqt+CrjeCqn+CqvyDgqpXgqrDgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLgqpXgq4fgqp/gqrLgq4DgqpUg4Kqw4KqC4KqXIOCquOCrh+Cqn+Cqv+CqguCql+CrjeCquCDgqoYg4KqJ4Kqq4KqV4Kqw4Kqj4Kqo4KuHIOCqrOCqv+CqqOCqieCqquCqr+Cri+Cql+CrgCDgqqzgqqjgqr7gqrXgq4Ag4Kq24KqV4KuHIOCqm+Crhy4g4KqGIOCqsOCqguCqlyDgqrjgq4fgqp/gqr/gqoLgqpfgq43gqrjgqqjgq4Ag4Kqq4KuB4Kq34KuN4Kqf4Kq/IOCqleCqsOCqteCqviDgqq7gqr7gqp/gq4cg4KqR4KqV4KuHIOCqleCrjeCqsuCqv+CqlSDgqpXgqrDgq4ssIOCqheCqqOCrjeCqr+CqpeCqviAxMCDgqrjgq4fgqpXgqoLgqqEg4Kqq4Kqb4KuAIOCqhiDgqrjgq4fgqp/gqr/gqoLgqpfgq43gqrgg4Kqr4Kqw4KuA4Kql4KuAIOCquOCrh+CqnyDgqqXgqrbgq4cuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbAppbmRleCA5YTNhYjJiLi4xYWI3ZjcxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKQEAgLTM2NCw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLgpKzgpYjgpJ/gpLDgpYAg4KS44KWH4KS14KSwIOCkmuCkvuCksuClgiDgpLngpYgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i4KSo4KS/4KS34KWN4oCN4KSq4KS+4KSm4KSoIOCklOCksCDgpKrgpYPgpLfgpY3gpKDgpK3gpYLgpK7gpL8g4KSh4KWH4KSf4KS+IOCkleCliyDgpJXgpK4g4KSV4KSw4KSk4KS+IOCkueCliCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i4KSs4KWI4KSf4KSw4KWAIOCkrOCkmuCkpOCkleCksOCljeCkpOCkviDgpJXgpYsg4KSs4KSC4KSmIOCkleCksOClh+CkgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgpJvgpL/gpKrgpYAg4KS54KWB4KSIIOCkuOCkvuCkruCkl+CljeCksOClgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDgpIbgpKrgpJXgpYcg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkquCksCDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KSq4KWN4KSw4KSk4KWN4KSv4KWH4KSVIOCkuOCkvuCkruCkl+CljeCksOClgCDgpJXgpYsg4KSV4KWI4KSq4KWN4KSa4KSwIOCkleCksOCkqOCkviDgpKrgpY3gpLDgpL7gpLDgpILgpK0g4KSV4KSwIOCkpuClh+Ckl+ClgC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i4KSr4KS/4KSwIOCkuOClhyDgpKgg4KSm4KS/4KSW4KS+4KSP4KSCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuCkuOCkreClgCDgpLjgpL7gpKsg4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgpAQCAtNDQ5LDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLgpKzgpY3gpLLgpYLgpJ/gpYLgpKUg4KSa4KS+4KSy4KWCIOCkleCksOClh+Ckgj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i4KSF4KSq4KSo4KWHIOCkleClgOCkrOCli+CksOCljeCkoSDgpJXgpYsg4KSF4KSq4KSo4KWHIOCkn+CliOCkrOCksuClh+CknyDgpLjgpYcg4KSV4KSo4KWH4KSV4KWN4KSfIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPLCDgpIbgpKrgpJXgpYsg4KSq4KS54KSy4KWHIOCkrOCljeCksuClguCkn+ClguCkpSDgpJrgpL7gpLLgpYIg4KSV4KSw4KSo4KS+IOCkueCli+Ckl+Ckvi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLgpJrgpL7gpLLgpYIg4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IOCkqOCli+Ckn+Ckv+Ckq+Ckv+CkleClh+CktuCkqCDgpKrgpLAg4KSy4KS+4KSX4KWCIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuCkh+CkuCDgpJDgpKog4KSV4KWHIOCkuOCkreClgCDgpKjgpYvgpJ/gpL/gpKvgpL/gpJXgpYfgpLbgpKgg4KSq4KSwIOCksuCkvuCkl+ClgiDgpJXgpLDgpYfgpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i4KSF4KS14KSw4KWL4KSn4KS/4KSkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4KSo4KS/4KSu4KWN4KSoIOCkruCkueCkpOCljeCktSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLgpLjgpL7gpK7gpL7gpKjgpY3gpK8g4KSu4KS54KSk4KWN4KS1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IuCkieCkmuCljeCkmiDgpK7gpLngpKTgpY3gpLUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLgpKTgpKTgpY3gpJXgpL7gpLIg4KSu4KS54KSk4KWN4KS1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLgpK/gpYcg4KSo4KWL4KSf4KS/4KSr4KS/4KSV4KWH4KS24KSoIOCkleCkreClgCDgpKjgpL4g4KSm4KS/4KSW4KS+4KSP4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IuCkqOCli+Ckn+Ckv+Ckq+Ckv+CkleClh+CktuCkqCDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkuOCkrOCkuOClhyDgpKjgpYDgpJrgpYcg4KSu4KWM4KSoIOCksOClguCkqiDgpLjgpYcg4KSm4KS/4KSW4KS+4KSP4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLgpK/gpYcg4KSo4KWL4KSf4KS/4KSr4KS/4KSV4KWH4KS24KSoIOCkruCljOCkqCDgpLDgpYLgpKog4KS44KWHIOCkpuCkv+CkluCkvuCkj+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i4KSo4KWL4KSf4KS/4KSr4KS/4KSV4KWH4KS24KSoIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KS44KSs4KS44KWHIOCkiuCkquCksCDgpKbgpL/gpJbgpL7gpI/gpIIg4KSU4KSwIOCkp+CljeCkteCkqOCkvyDgpJrgpLLgpL7gpI/gpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i4KS44KWN4oCN4KSV4KWN4KSw4KWA4KSoIOCkquCksCDgpI/gpJUg4KSd4KSy4KSVIOCkpuCkv+CkluCkvuCkj+CkgiDgpJTgpLAg4KSn4KWN4oCN4KS14KSo4KS/IOCkmuCksuCkvuCkj+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuCkuOCkvuCkruCkvuCkqOCljeCkryDgpLDgpILgpJciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i4KSw4KS+4KSk4KWN4KSw4KS/IOCkleClhyDgpLDgpILgpJciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuCkleCkuOCljeCkn+CkriDgpLDgpILgpJciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLgpIXgpJzgpY3gpJ7gpL7gpKQg4KSw4KSC4KSXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuCksOCkguCklyDgpKrgpLDgpL/gpLXgpLDgpY3gpKTgpKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLgpKTgpY3igI3gpLXgpLDgpL/gpKQt4KS44KWH4KSf4KS/4KSC4KSXIOCkn+CkvuCkh+CksiDgpKbgpL/gpJbgpL7gpI/gpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuCkleCkuOCljeCkn+CkriDgpLDgpYLgpKrgpL7gpILgpKTgpLDgpKMg4KS44KSV4KWN4KS34KSuIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IuCksuCkvuCkl+ClgiDgpJXgpLDgpYfgpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4KS44KWH4oCN4KWH4KSf4KS/4KSC4KSXIOCkleClgCDgpKrgpYHgpLfgpY3gpJ/gpL8g4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i4KSV4KWB4KSbIOCksOCkguCklyDgpLjgpYfgpJ/gpL/gpILgpJcg4KSH4KS4IOCkoeCkv+CkteCkvuCkh+CkuCDgpJXgpYsg4KSF4KSo4KWB4KSq4KSv4KWL4KSX4KWAIOCkrOCkqOCkviDgpLjgpJXgpKTgpYAg4KS54KWI4KSCLiDgpIfgpKgg4KSw4KSC4KSXIOCkuOClh+Ckn+Ckv+CkguCklyDgpJXgpYAg4KSq4KWB4KS34KWN4KSf4KS/IOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkoOClgOCklSDgpJXgpY3gpLLgpL/gpJUg4KSV4KSw4KWH4KSCLCDgpIXgpKjgpY3gpK/gpKXgpL4gMTAg4KS44KWH4KSV4KSC4KShIOCkleClhyDgpKzgpL7gpKYg4KSv4KWHIOCkuOClh+Ckn+Ckv+CkguCklyDgpLDgpYDgpLjgpYfgpJ8g4KS54KWLIOCknOCkvuCkj+CkguCkl+ClgC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sCmluZGV4IDFlZDg5MGMuLmE2NzI1OGMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbApAQCAtMzAyLDggKzMwMiw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4icHJldHJhxb5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJBcGxpa2FjaWphIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBuaWplIHBva3JlbnV0YS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iVmnFoWUiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iSm/FoSA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IlBvZGlqZWxpIHZvZG9yYXZubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IlBvZGlqZWxpIG9rb21pdG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iUG9kaWplbGkgcHJpbGFnb8SRZW5vIjwvc3RyaW5nPgpAQCAtMzY2LDcgKzM2NSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IsWgdGVkbmphIGJhdGVyaWplIGplIHVrbGp1xI1lbmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iU21hbmp1amUga29sacSNaW51IHJhZGEgaSBwb3phZGluc2tlIHBvZGF0a2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Iklza2xqdcSNaSB1xaF0ZWR1IGJhdGVyaWplIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNhZHLFvmFqIGplIHNrcml2ZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+IkFwbGlrYWNpamEgPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBwb8SNZXQgxIdlIHNuaW1hdGkgc3ZlIMWhdG8gc2UgcHJpa2F6dWplIG5hIHphc2xvbnUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik5lIHByaWthenVqIHBvbm92byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJJemJyacWhaSBzdmUiPC9zdHJpbmc+CkBAIC00NTEsNCArNDQ5LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IsW9ZWxpdGUgbGkgdWtsanXEjWl0aSBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkRhIGJpc3RlIHBvdmV6YWxpIHRpcGtvdm5pY3UgcyB0YWJsZXRvbSwgbW9yYXRlIHVrbGp1xI1pdGkgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IlVrbGp1xI1pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iUHJpbWlqZW5pIG5hIG9iYXZpamVzdGkgemEgdGVtdSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJQcmltaWplbmkgbmEgc3ZlIG9iYXZpamVzdGkgb3ZlIGFwbGlrYWNpamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxva2lyYW5vIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTWFsYSB2YcW+bm9zdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJVb2JpxI1hamVuYSB2YcW+bm9zdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJWZWxpa2EgdmHFvm5vc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJIaXRubyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iTmlrYWQgbmUgcHJpa2F6dWogdGUgb2JhdmlqZXN0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJQcmlrYcW+aSB0aWhvIHByaSBkbnUgcG9waXNhIG9iYXZpamVzdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlByaWthxb5pIHRlIG9iYXZpamVzdGkgdGlobyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iUHJpa2HFvmkgbmEgdnJodSBwb3Bpc2Egb2JhdmlqZXN0aSBpIGVtaXRpcmFqIHp2dcSNbmkgc2lnbmFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IlByaWthxb5pIG5hIHphc2xvbnUgaSBlbWl0aXJhaiB6dnXEjW5pIHNpZ25hbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IlVvYmnEjWFqZW5lIGJvamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iTm/Eh25lIGJvamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IlByaWxhZ2/EkWVuZSBib2plIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iTmVwb3puYXRlIGJvamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iSXptamVuYSBib2phIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iUHJpa2HFvmkgcGxvxI1pY3UgcyBicnppbSBwb3N0YXZrYW1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJPbW9ndcSHaSBwcmlsYWdvxJFlbnUgcHJlb2JyYXpidSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IlByaW1pamVuaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJQb3R2cmRpdGUgcG9zdGF2a2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJOZWtlIHBvc3RhdmtlIGJvamEgbW9ndSB1xI1pbml0aSB1cmXEkWFqIG5ldXBvdHJlYmxqaXZpbS4gS2xpa25pdGUgVSByZWR1IGRhIGJpc3RlIHBvdHZyZGlsaSBwb3N0YXZrZSBib2phIGplciDEh2Ugc2UgdSBzdXByb3Rub20gcG9uacWhdGl0aSB6YSAxMCBzZWt1bmRpLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKaW5kZXggODk3ODE1Mi4uODU4OWU5NSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJrZXJlc8OpcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iTmVtIGxlaGV0IGVsaW5kw610YW5pIGEga8O2dmV0a2V6xZF0OiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IlRvdsOhYmJpYWsiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IHRvdsOhYmJpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJPc3p0b3R0IHbDrXpzemludGVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iT3N6dG90dCBmw7xnZ8WRbGVnZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iT3N6dG90dCBlZ3nDqW5pIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IkFra3VtdWzDoXRvcmvDrW3DqWzFkSBtw7NkIGJla2FwY3NvbHZhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IkNzw7Zra2VudGkgYSB0ZWxqZXPDrXRtw6lueXQgw6lzIGEgaMOhdHTDqXJhZGF0b2sgaGFzem7DoWxhdMOhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iQWtrdW11bMOhdG9ya8OtbcOpbMWRIG3Ds2Qga2lrYXBjc29sw6FzYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJUYXJ0YWxvbSBlbHJlanR2ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iQSh6KSA8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGFsa2FsbWF6w6FzIHLDtmd6w610ZW5pIGZvZyBtaW5kZW50LCBhbWkgbWVnamVsZW5payBhIGvDqXBlcm55xZFuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOZSBqZWxlbmplbiBtZWcgdMO2YmLDqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJBeiDDtnNzemVzIHTDtnJsw6lzZSI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iRW5nZWTDqWx5ZXppIGEgQmx1ZXRvb3RoLWthcGNzb2xhdG90PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJIYSBhIGJpbGxlbnR5xbF6ZXRldCBjc2F0bGFrb3p0YXRuaSBzemVyZXRuw6kgdMOhYmxhZ8OpcMOpaGV6LCBlbMWRc3rDtnIgZW5nZWTDqWx5ZXpuaWUga2VsbCBhIEJsdWV0b290aC1rYXBjc29sYXRvdC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJCZWthcGNzb2zDoXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJBIGvDtnZldGtlesWRIMOpcnRlc8OtdMOpc2VrIGVzZXTDqW46IDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkF6IGFsa2FsbWF6w6FzIG1pbmRlbiDDqXJ0ZXPDrXTDqXNlIGVzZXTDqW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iTGV0aWx0dmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJLZXbDqXNiw6kgZm9udG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+Ik5vcm3DoWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iRm9udG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iU8O8cmfFkXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IlNvaGEgbmVtIGplbGVubmVrIG1lZyBlemVrIGF6IMOpcnRlc8OtdMOpc2VrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IkhhbmdqZWx6w6lzIG7DqWxrw7xsIGplbGVubmVrIG1lZyBheiDDqXJ0ZXPDrXTDqXNpIGxpc3RhIGFsasOhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iSGFuZyBuw6lsa8O8bCBqZWxlbm5layBtZWcgZXplayBheiDDqXJ0ZXPDrXTDqXNlayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iQXogw6lydGVzw610w6lzaSBsaXN0YSB0ZXRlasOpbiBqZWxlbm5layBtZWcgaGFuZ2plbHrDqXNzZWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iQXogw6lydGVzw610w6lzZWsgZmVsdWdyYW5hayBhIGvDqXBlcm55xZFuIGhhbmdqZWx6w6lzc2VsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iSGFneW9tw6FueW9zIHN6w61uZWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iRXN0aSBzesOtbmVrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJFZ3nDqW5pIHN6w61uZWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJJc21lcmV0bGVuIHN6w61uZWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iU3rDrW5tw7Nkb3PDrXTDoXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJHeW9yc2Jlw6FsbMOtdMOhc29rIG1vemFpa2rDoW5hayBtZWdqZWxlbsOtdMOpc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkVnecOpbmkgw6F0YWxha8OtdMOhcyBlbmdlZMOpbHllesOpc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJBbGthbG1heiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJCZcOhbGzDrXTDoXNvayBtZWdlcsWRc8OtdMOpc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJCaXpvbnlvcyBzesOtbmJlw6FsbMOtdMOhc29rIGhhc3puw6FsaGF0YXRsYW5uw6EgdGVoZXRpayBlenQgYXogZXN6a8O2enQuIEEgc3rDrW5iZcOhbGzDrXTDoXMgbWVnZXLFkXPDrXTDqXPDqWhleiBrYXR0aW50c29uIGF6IE9LIGxlaGV0xZFzw6lncmUsIG3DoXNrw7xsw7ZuYmVuIGEgcmVuZHN6ZXIgMTAgbcOhc29kcGVyY2VuIGJlbMO8bCB2aXNzemHDoWxsIGEga29yw6FiYmlyYS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaHktckFNL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1oeS1yQU0vc3RyaW5ncy54bWwKaW5kZXggYzIwMWIwOS4uMWI4ZGUwNCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1oeS1yQU0vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1oeS1yQU0vc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ItW41oDVuNW21aXVrCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4i1YDVttWh1oDVodW+1bjWgCDVudWnINWj1bjWgNWu1aHWgNWv1aXVrCA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4t1ag6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+ItSx1b7VpdWs1avVtiI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLWh9W9IDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i1YDVuNaA1avVptW41bbVodWv1aHVtiDVv9aA1bjVsNW41oLVtCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+ItWI1oLVstWy1aHVsNWh1bXVodaBINW/1oDVuNWw1bjWgtW0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+ItWA1aHVv9W41oLVryDVv9aA1bjVsNW41oLVtCI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLVhNWh1oDVv9Wv1bjWgdWrINW/1bbVv9Wl1b3VuNaC1bTVqCDVtNWr1aHWgdW+1aHVriDVpyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLVhtW+1aHVptWl1oHVttW41oLVtCDVpyDVrtWh1bbWgNWh1aLVpdW81bbVvtWh1a7VuNaC1anVtdW41oLVttWoINaHINaG1bjVttWh1bXVq9W2INW/1b7VtdWh1azVttWl1oDVqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i1LHVttW71aHVv9Wl1awg1bTVodaA1b/Vr9W41oHVqyDVv9W21b/VpdW91bjWgtW01agiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i1LLVuNW+1aHVttWk1aHVr9W41oLVqdW11bjWgtW21agg1anVodaE1oHVvtWh1a4g1aciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g1a7WgNWh1aPVq9aA1agg1a/VvdWv1b3VqyDVsNWh1b7VodaE1aHVo9aA1aXVrCDVodW11bYg1aHVtNWl1bbVtiDVq9W21bkg1oHVuNaC1oHVodWk1oDVvtW41oLVtCDVpyDVsdWl1oAg1afVr9aA1aHVttWr1bY6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+ItSx1bXVrNaH1b0g1oHVuNaC1bXWgSDVudW/1aHVrCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLVhNWh1oTWgNWl1awg1aLVuNWs1bjWgNWoIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLVhNWr1aHWgdW21aXVntWsIEJsdWV0b290aC3VqDoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i1Y3Vv9Wl1bLVttWh1bfVodaA1agg1bHVpdaAINW61azVodW21bfVpdW/1avVtiDVtNWr1aHWgdW21aXVrNW41oIg1bDVodW01aHWgCDVttWh1a0g1aHVttWw1oDVodWq1aXVt9W/INWnINW01avVodaB1bbVpdWsIEJsdWV0b290aC3VqDoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLVhNWr1aHWgdW21aXVrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+ItS/1avWgNWh1bzVpdWsIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPi3VqyDVrtWh1bbVuNaC1oHVuNaC1bTVttWl1oDVqyDVttWv1aHVv9W01aHVtNWiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i1L/Vq9aA1aHVvNWl1awg1aHVtdW9INWw1aHVvtWl1azVvtWh1a7VqyDVotW41azVuNaAINWu1aHVttW41oLWgdW41oLVtNW21aXWgNWrINW21a/VodW/1bTVodW01aIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i1LHWgNWj1aXVrNWh1oPVodWv1b7VodWuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i1ZHVodWu1oAg1a/VodaA1ofVuNaA1bjWgtWp1bXVuNaC1bYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i1Y3VuNW+1bjWgNWh1a/VodW2INWv1aHWgNaH1bjWgNW41oLVqdW11bjWgtW2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+ItSy1aHWgNWx1oAg1a/VodaA1ofVuNaA1bjWgtWp1bXVuNaC1bYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLVgNaA1aHVv9Wh1bog1a/VodaA1ofVuNaA1bjWgtWp1bXVuNaC1bYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+ItS11oDVotWl1oQg1bnWgdW41oLWgdWh1aTWgNWl1awg1aHVtdW9INWu1aHVttW41oLWgdW41oLVtNW21aXWgNWoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+ItWR1bjWgtaB1aHVpNaA1aXVrCDVrtWh1bbVuNaC1oHVuNaC1bTVttWl1oDVqyDWgdWh1bbVr9WrINW21aXWgNaE1ofVuNaC1bQg1aHVvNWh1bbWgSDVsdWh1bXVttWh1bXVq9W2INWh1abVpNWh1bbVt9Wh1bbVqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i1ZHVuNaC1oHVodWk1oDVpdWsINWh1bXVvSDVrtWh1bbVuNaC1oHVuNaC1bTVttWl1oDVtiDVodW81aHVttaBINWx1aHVtdW21aHVtdWr1bYg1aHVptWk1aHVttW31aHVttWrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLVkdW41oLWgdWh1aTWgNWl1awg1a7VodW21bjWgtaB1bjWgtW01bbVpdaA1asg1oHVodW21a/VqyDVvtWl1oDWh9W41oLVtCDWhyDVsNW21bnVpdaB1bbVpdWsINWx1aHVtdW21aHVtdWr1bYg1aHVptWk1aHVttW31aHVtiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLVkdW41oLWgdWh1aTWgNWl1awg1afVr9aA1aHVttWr1bYg1ocg1bDVttW51aXWgdW21aXVrCDVsdWh1bXVttWh1bXVq9W2INWh1abVpNWh1bbVt9Wh1bYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLVjdW41b7VuNaA1aHVr9Wh1bYg1aPVuNaC1bXVttWl1oAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i1LPVq9W31aXWgNWh1bXVq9W2INWj1bjWgtW11bbVpdaAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLVgNWh1b/VuNaC1a8g1aPVuNaC1bXVttWl1oAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLUsdW21bDVodW11b8g1aPVuNaC1bXVttWl1oAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i1LPVuNaC1bXVttWrINaD1bjWg9W41a3VuNaC1bQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLVkdW41oLVtdaBINW/1aHVrCDUsdaA1aHVoyDVr9Wh1oDVo9Wh1b7VuNaA1bjWgtW01bbVpdaA1asg1b3VodWs1avVr9WoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLVhNWr1aHWgdW21aXVrCDVsNWh1b/VuNaC1a8g1aPVuNaC1bbVodW11avVtiDVodW21oHVuNaC1bTVqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+ItS/1avWgNWh1bzVpdWsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+ItWA1aHVvdW/1aHVv9Wl1awg1a/VodaA1aPVodW+1bjWgNW41oLVtNW21aXWgNWoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i1LPVuNaC1bbVodW11avVtiDVuNaA1bjVtyDVr9Wh1oDVo9Wh1b7VuNaA1bjWgtW01bbVpdaA1agg1a/VodaA1bjVsiDVpdW2INWh1bXVvSDVvdWh1oDWhNWoINaF1aPVv9Wh1aPVuNaA1a7VtNWh1bYg1bDVodW01aHWgCDVuNW5INW61avVv9Wh1bbVqyDVpNWh1oDVsdW21aXVrDog1Y3VpdWy1bTVpdaEINS81aHVviDVr9W41bPVodWv1ajVnSDVo9W41oLVttWh1bXVq9W2INWh1bXVvSDVr9Wh1oDVo9Wh1b7VuNaA1bjWgtW01bbVpdaA1agg1bDVodW91b/VodW/1aXVrNW41oIg1bDVodW01aHWgDog1YDVodWv1aHVvNWh1a8g1aTVpdW61oTVuNaC1bQg1aHVtdW9INWv1aHWgNWj1aHVvtW41oDVuNaC1bTVttWl1oDVqCDVr9W+1aXWgNWh1a/VodW11b7VpdW2IDEwINW+1aHVtdaA1a/VtdWh1bYg1bDVpdW/1bg6Ijwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbAppbmRleCBjZTQ0MjI3Li45MDc1NDg0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKQEAgLTM2NCw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJQZW5naGVtYXQgYmF0ZXJhaSBha3RpZiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJNZW5ndXJhbmdpIGtpbmVyamEgZGFuIGRhdGEgbGF0YXIgYmVsYWthbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Ik5vbmFrdGlma2FuIHBlbmdoZW1hdCBiYXRlcmFpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IktvbnRlbiB0ZXJzZW1idW55aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBha2FuIG11bGFpIG1lbmFuZ2thcCBhcGEgc2FqYSB5YW5nIGRpdGFtcGlsa2FuIHBhZGEgbGF5YXIgQW5kYS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iSmFuZ2FuIHRhbXBpbGthbiBsYWdpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkhhcHVzIHNlbXVhIjwvc3RyaW5nPgpAQCAtNDQ5LDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJBa3RpZmthbiBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlVudHVrIG1lbmdodWJ1bmdrYW4ga2V5Ym9hcmQgZGVuZ2FuIHRhYmxldCwgdGVybGViaWggZGFodWx1IGFrdGlma2FuIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBa3RpZmthbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IlRlcmFwa2FuIGtlIG5vdGlmaWthc2kgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iVGVyYXBrYW4gdW50dWsgc2VtdWEgbm90aWZpa2FzaSBkYXJpIGFwbGlrYXNpIGluaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJEaWJsb2tpciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IlRpbmdrYXQga2VwZW50aW5nYW46IHJlbmRhaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJUaW5na2F0IGtlcGVudGluZ2FuOiBub3JtYWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iVGluZ2thdCBrZXBlbnRpbmdhbjogdGluZ2dpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iVGluZ2thdCBrZXBlbnRpbmdhbjogZGFydXJhdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iSmFuZ2FuIHBlcm5haCB0dW5qdWtrYW4gbm90aWZpa2FzaSBpbmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iVHVuanVra2FuIGRpIGJhd2FoIGRhZnRhciBub3RpZmlrYXNpIHRhbnBhIHN1YXJhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJUdW5qdWtrYW4gbm90aWZpa2FzaSBpbmkgdGFucGEgc3VhcmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlR1bmp1a2thbiBkaSBiYWdpYW4gYXRhcyBkYWZ0YXIgbm90aWZpa2FzaSBkYW4gYnVueWlrYW4gc3VhcmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iTXVuY3VsIGRpIGxheWFyIGRhbiBidW55aWthbiBzdWFyYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Ildhcm5hIG5vcm1hbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJXYXJuYSBtYWxhbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iV2FybmEga2h1c3VzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iV2FybmEgdGlkYWsgZGlrZXRhaHVpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IlBlcnViYWhhbiB3YXJuYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlRhbXBpbGthbiB1YmluIFNldGVsYW4gQ2VwYXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkFrdGlma2FuIHRyYW5zZm9ybWFzaSBraHVzdXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJUZXJhcGthbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJLb25maXJtYXNpIHNldGVsYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJCZWJlcmFwYSBzZXRlbGFuIHdhcm5hIGRhcGF0IG1lbWJ1YXQgcGVyYW5na2F0IGluaSB0aWRhayBkYXBhdCBkaWd1bmFrYW4uIEtsaWsgT0tFIHVudHVrIG1lbmdvbmZpcm1hc2kgc2V0ZWxhbiB3YXJuYSBpbmkuIEppa2EgdGlkYWssIHNldGVsYW4gaW5pIGFrYW4gZGlzZXRlbCB1bGFuZyBzZXRlbGFoIDEwIGRldGlrLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1pcy1ySVMvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAppbmRleCBjYjM1ZTgzLi41NTYwMThjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWlzLXJJUy9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4ibGVpdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IkVra2kgdmFyIGjDpmd0IGHDsCByw6ZzYSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ik1laXJhIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDDrSB2acOwYsOzdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iTMOhcsOpdHQgc2tpcHRpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJMw7PDsHLDqXR0IHNraXB0aW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IlPDqXJzbmnDsGluIHNraXB0aW5nIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+Ikt2ZWlrdCBlciDDoSByYWZobMO2w7B1c3Bhcm5hw7BpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IkRyZWd1ciDDunIgYWZrw7ZzdHVtIG9nIGJha2dydW5uc2fDtmdudW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IlNsw7Zra3ZhIMOhIHJhZmhsw7bDsHVzcGFybmHDsGkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iSW5uaWhhbGQgZmFsacOwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IG11biBmYW5nYSBhbGx0IHNlbSBiaXJ0aXN0IMOhIHNrasOhbnVtLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJFa2tpIHPDvW5hIMO+ZXR0YSBhZnR1ciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJIcmVpbnNhIGFsbHQiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+Ikt2ZWlramEgw6EgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJUaWwgYcOwIGdldGEgdGVuZ3QgbHlrbGFib3LDsGnDsCB2acOwIHNwamFsZHTDtmx2dW5hIMO+YXJmdHUgZnlyc3QgYcOwIGt2ZWlramEgw6EgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+Ikt2ZWlramEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJMw6F0YSBnaWxkYSB1bSB0aWxreW5uaW5nYXIgdmFyw7BhbmRpIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkzDoXRhIGdpbGRhIHVtIGFsbGFyIHRpbGt5bm5pbmdhciBmcsOhIMO+ZXNzdSBmb3JyaXRpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IsOadGlsb2t1w7AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJFa2tpIHN2byBtaWtpbHbDpmd0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IlZlbmp1bGVndCBtaWtpbHbDpmdpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+Ik1qw7ZnIG1pa2lsdsOmZ3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJBZmFyIMOhcsOtw7BhbmRpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJBbGRyZWkgc8O9bmEgw75lc3NhciB0aWxreW5uaW5nYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iU8O9bmEgbmXDsHN0IMOhIHRpbGt5bm5pbmdhbGlzdGFudW0gw6FuIGhsasOzw7BzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJTw71uYSDDvmVzc2FyIHRpbGt5bm5pbmdhciDDoW4gaGxqw7PDsHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlPDvW5hIGVmc3Qgw6EgdGlsa3lubmluZ2FsaXN0YW51bSBvZyBzcGlsYSBobGrDs8OwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IkJpcnRhIMOhIHNrasOhbnVtIG9nIHNwaWxhIGhsasOzw7AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJWZW5qdWxlZ2lyIGxpdGlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+Ik7DpnR1cmxpdGlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJTw6lyc25pw7BuaXIgbGl0aXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLDk8O+ZWtrdGlyIGxpdGlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IkxpdGFicmV5dGluZ2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iU8O9bmEgZmzDrXNhciDDrSBmbMO9dGlzdGlsbGluZ3VtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJLdmVpa2phIMOhIHPDqXJzbmnDsGlubmkgdW1icmV5dGluZ3UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJOb3RhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IlN0YcOwZmVzdGEgc3RpbGxpbmdhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IlN1bWFyIGxpdGFzdGlsbGluZ2FyIGt1bm5hIGHDsCBiaXRuYSDDoSBub3RhZ2lsZGkgdMOma2lzaW5zLiBWZWxkdSDigJ7DjSBsYWdp4oCcIHRpbCBhw7Agc3Rhw7BmZXN0YSDDvmVzc2FyIGxpdGFzdGlsbGluZ2FyLCBhw7Agw7bDsHJ1bSBrb3N0aSB2ZXLDsGEgbGl0aXJuaXIgZW5kdXJzdGlsbHRpciBlZnRpciB0w611IHNla8O6bmR1ci4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCmluZGV4IDE0Nzc1MmQuLmI0OWMzODcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4iY2VyY2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IkltcG9zc2liaWxlIGF2dmlhcmUgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJBbHRybyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiJBbHRyZSBhdHRpdml0w6A6IDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iRGl2aXNpb25lIGluIG9yaXp6b250YWxlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iRGl2aXNpb25lIGluIHZlcnRpY2FsZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJEaXZpc2lvbmUgcGVyc29uYWxpenphdGEiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iUmlzcGFybWlvIGVuZXJnZXRpY28gYXR0aXZvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJpZHVjZSBsZSBwcmVzdGF6aW9uaSBlIGkgZGF0aSBpbiBiYWNrZ3JvdW5kIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJEaXNhdHRpdmEgcmlzcGFybWlvIGVuZXJnZXRpY28iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGVudXRpIG5hc2Nvc3RpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGluaXppZXLDoCBhZCBhY3F1aXNpcmUgdHV0dG8gY2nDsiBjaGUgw6ggdmlzdWFsaXp6YXRvIHN1bCB0dW8gc2NoZXJtby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iTm9uIG1vc3RyYXJlIHBpw7kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iQ2FuY2VsbGEgdHV0dG8iPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IkF0dGl2YXJlIGlsIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUGVyIGNvbm5ldHRlcmUgbGEgdGFzdGllcmEgYWwgdGFibGV0LCBkZXZpIHByaW1hIGF0dGl2YXJlIGlsIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBdHRpdmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJBcHBsaWNhIGEgbm90aWZpY2hlIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkFwcGxpY2EgYSB0dXR0ZSBsZSBub3RpZmljaGUgZGkgcXVlc3RcJ2FwcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJCbG9jY2F0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IkltcG9ydGFuemEgc2NhcnNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IkltcG9ydGFuemEgbm9ybWFsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJJbXBvcnRhbnphIGVsZXZhdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJJbXBvcnRhbnphIHVyZ2VudGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik5vbiBtb3N0cmFyZSBtYWkgcXVlc3RlIG5vdGlmaWNoZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJNb3N0cmEgc2lsZW56aW9zYW1lbnRlIG5lbGxhIHBhcnRlIGluZmVyaW9yZSBkZWxsXCdlbGVuY28gZGVsbGUgbm90aWZpY2hlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJNb3N0cmEgc2lsZW56aW9zYW1lbnRlIHF1ZXN0ZSBub3RpZmljaGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik1vc3RyYSBuZWxsYSBwYXJ0ZSBzdXBlcmlvcmUgZGVsbFwnZWxlbmNvIGRlbGxlIG5vdGlmaWNoZSBlIHJpcHJvZHVjaSBzdW9ubyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJBcHJpIHN1bGxvIHNjaGVybW8gZSByaXByb2R1Y2kgc3Vvbm8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJDb2xvcmkgbm9ybWFsaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJDb2xvcmkgcGVyIGxhIG5vdHRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJDb2xvcmkgcGVyc29uYWxpenphdGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJDb2xvcmkgc2Nvbm9zY2l1dGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iTW9kaWZpY2EgZGVsIGNvbG9yZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Ik1vc3RyYSBpbCByaXF1YWRybyBJbXBvc3RhemlvbmkgcmFwaWRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJBdHRpdmEgbGEgdHJhc2Zvcm1hemlvbmUgcGVyc29uYWxpenphdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJBcHBsaWNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkNvbmZlcm1hIGxlIGltcG9zdGF6aW9uaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkFsY3VuZSBpbXBvc3RhemlvbmkgcmVsYXRpdmUgYWkgY29sb3JpIHBvdHJlYmJlcm8gcmVuZGVyZSBpbnV0aWxpenphYmlsZSBpbCBkaXNwb3NpdGl2by4gRmFpIGNsaWMgc3UgT0sgcGVyIGNvbmZlcm1hcmUgcXVlc3RlIGltcG9zdGF6aW9uaTsgaW4gY2FzbyBjb250cmFyaW8sIGxlIGltcG9zdGF6aW9uaSB2ZXJyYW5ubyByZWltcG9zdGF0ZSBkb3BvIDEwIHNlY29uZGkuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbAppbmRleCA3MGJlYTU1Li5lNmFjNWFmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwKQEAgLTMwMyw4ICszMDMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IteX16TXqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4i15zXkCDXoNeZ16rXnyDXlNeZ15Qg15zXlNek16LXmdecINeQ16ogPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLXoteV15MiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+INeg15XXodek15XXqiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i16TXmdem15XXnCDXkNeV16TXp9eZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i16TXmdem15XXnCDXkNeg15vXmSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLXpNeZ16bXldecINee15XXqteQ150g15DXmdep15nXqiI8L3N0cmluZz4KQEAgLTM2Nyw3ICszNjYsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLXqteb15XXoNeqIFwn15fXmdeh15vXldefINeR16HXldec15zXlFwnINek15XXotec16oiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i157XpNeX15nXqiDXkNeqINeU15HXmdem15XXoteZ150g15XXoNeq15XXoNeZ150g15HXqNen16IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+Iteb15HXlCDXkNeqINeU15fXmdeh15vXldefINeR16HXldec15zXlCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLXlNeq15XXm9efINee15XXodeq16giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g15nXqteX15nXnCDXnNeU16fXnNeZ15gg15DXqiDXm9ecINeU16rXldeb158g15TXnteV16bXkiDXkdee16HXmiDXqdec15ouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IteQ15wg16rXpteZ15Ig16nXldeRIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+Iteg16fXlCDXlNeb15wiPC9zdHJpbmc+CkBAIC00NTIsNCArNDUwLDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuKAj9eU15DXnSDXnNeU16TXoteZ15wg15DXqiDXlC1CbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuKAj9eb15PXmSDXnNeX15HXqCDXkNeqINeU157Xp9ec15PXqiDXnNeY15DXkdec15gsINeq15fXmdec15Qg16LXnNeZ15og15zXlNek16LXmdecINeQ16og15QtQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IteU16TXotecIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4i15TXl9ecINei15wg15TXldeT16LXldeqINep15wgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i15TXl9ecINei15wg15vXnCDXlNeU15XXk9ei15XXqiDXnteQ16TXnNeZ16fXpteZ15Qg15bXlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLXl9eh15XXnSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IteX16nXmdeR15XXqiDXoNee15XXm9eUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IteX16nXmdeR15XXqiDXqNeS15nXnNeUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IteX16nXmdeR15XXqiDXkteR15XXlNeUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i15fXqdeZ15HXldeqINeT15fXldek15QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Itec16LXldec150g15DXnCDXqtem15nXkiDXkNeqINeU15TXldeT16LXldeqINeU15DXnNeUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IteU16bXkiDXkdeX15zXpyDXlNeq15fXqteV158g16nXnCDXqNep15nXnteqINeU15TXldeT16LXldeqINeR15zXmSDXnNeU16nXnteZ16Ig16bXnNeZ15wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IteU16bXkiDXkNeqINeU15TXldeT16LXldeqINeU15DXnNeUINeR15zXmSDXnNeU16nXnteZ16Ig16bXnNeZ15wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IteU16bXkiDXkdeX15zXpyDXlNei15zXmdeV158g16nXnCDXqNep15nXnteqINeU15TXldeT16LXldeqINeV15TXqdee16Ig16bXnNeZ15wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i15TXpteSINec16jXkteiINei15wg15TXnteh15og15XXlNep157XoiDXptec15nXnCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Item15HXoteZ150g16jXkteZ15zXmdedIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+Item15HXoteZINec15nXnNeUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLXpteR16LXmdedINee15XXqteQ157XmdedINeQ15nXqdeZ16oiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLXpteR16LXmdedINec15Ag15nXk9eV16LXmdedIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Itep15nXoNeV15kg16bXkdeiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i15TXpteS16og15DXqNeZ15cg16nXnCDXlNeS15PXqNeV16og157XlNeZ16jXldeqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLXlNek16LXnCDXmNeo16DXodek15XXqNee16bXmdeUINee15XXqteQ157XqiDXkNeZ16nXmdeqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i15TXl9ecIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IteQ15nXqdeV16gg15TXkteT16jXldeqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i15TXkteT16jXldeqINem15HXoiDXnteh15XXmdee15XXqiDXotec15XXnNeV16og15zXlNek15XXmiDXkNeqINeU157Xm9ep15nXqCDXlNeW15Qg15zXkdec16rXmSDXqdee15nXqS4g15zXl9elINei15wg15DXmdep15XXqCDXm9eT15kg15zXkNep16gg15DXqiDXlNeS15PXqNeV16og15TXpteR16Ig15TXkNec15QsINeQ15fXqNeqINeU15LXk9eo15XXqiDXkNec15Qg15nXqteQ16TXodeVINec15DXl9eoIDEwINep16DXmdeV16ouIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbAppbmRleCBkOTFjM2I1Li5lN2UzYTg2IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuaknOe0oiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+44KS6ZaL5aeL44Gn44GN44G+44Gb44KT44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuOCguOBo+OBqOimi+OCiyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLku5YgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IOS7tiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i5qiq44Gr5YiG5YmyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i57im44Gr5YiG5YmyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuWIhuWJsu+8iOOCq+OCueOCv+ODoO+8iSI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLjg5Djg4Pjg4bjg6rjg7zjgrvjg7zjg5Djg7zjgYxPTiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLjg5Hjg5Xjgqnjg7zjg57jg7Pjgrnjgajjg5Djg4Pjgq/jgrDjg6njgqbjg7Pjg4njg4fjg7zjgr/jgpLliLbpmZDjgZfjgb7jgZkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuODkOODg+ODhuODquODvOOCu+ODvOODkOODvOOCkk9GRuOBq+OBl+OBvuOBmSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLjgrPjg7Pjg4bjg7Pjg4TjgYzpnZ7ooajnpLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz7jgafjgIHnlLvpnaLjgavooajnpLrjgZXjgozjgabjgYTjgovjgrPjg7Pjg4bjg7Pjg4Tjga7jgq3jg6Pjg5fjg4Hjg6PjgpLplovlp4vjgZfjgb7jgZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i5qyh5Zue44GL44KJ6KGo56S644GX44Gq44GEIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuOBmeOBueOBpua2iOWOuyI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3Ro44KST07jgavjgZfjgb7jgZnjgYvvvJ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i44K/44OW44Os44OD44OI44Gn44Kt44O844Oc44O844OJ44Gr5o6l57aa44GZ44KL44Gr44Gv44CB5pyA5Yid44GrQmx1ZXRvb3Ro44KST07jgavjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJPTuOBq+OBmeOCiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IuOAjDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPuOAjeOBrumAmuefpeOBq+mBqeeUqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuOBk+OBruOCouODl+ODquOBi+OCieOBruOBmeOBueOBpuOBrumAmuefpeOBq+mBqeeUqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLjg5bjg63jg4Pjgq/kuK0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLph43opoHluqY6IOS9jiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLph43opoHluqY6IOS4rSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLph43opoHluqY6IOmrmCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IumHjeimgeW6pjog57eK5oClIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLku4rlvozjga/jgZPjga7pgJrnn6XjgpLooajnpLrjgZfjgarjgYQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i6YCa55+l44Oq44K544OI44Gu5pyr5bC+44Gr44Oe44OK44O844Oi44O844OJ44Gn6KGo56S644GZ44KLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLjgZPjga7pgJrnn6XjgpLjg57jg4rjg7zjg6Ljg7zjg4njgafooajnpLrjgZnjgosiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IumAmuefpeODquOCueODiOOBruWFiOmgreOBq+ihqOekuuOBl+OAgemfs+WjsOOBp+OCguefpeOCieOBm+OCiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLnlLvpnaLjgavmlbDnp5LplpPooajnpLrjgZfjgIHpn7Plo7DjgafjgoLnn6XjgonjgZvjgosiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLmqJnmupbjga7oibIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i5aSc6ZaT44Gu6ImyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLjgqvjgrnjgr/jg6Djga7oibIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLkuI3mmI7jgaroibIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i6Imy44Gu5aSJ5pu0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iW+OCr+OCpOODg+OCr+ioreWuml0g44K/44Kk44Or44Gu6KGo56S6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLjgqvjgrnjgr/jg6DlpInmj5vjga7mnInlirnljJYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLpgannlKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i6Kit5a6a44Gu56K66KqNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i5LiA6YOo44Gu6Imy6Kit5a6a44KS6YGp55So44GZ44KL44Go44CB44GT44Gu56uv5pyr44KS5L2/55So44Gn44GN44Gq44GP44Gq44KL44GT44Go44GM44GC44KK44G+44GZ44CC44GT44Gu6Imy6Kit5a6a44KS56K66KqN44GZ44KL44Gr44Gv44CBW09LXSDjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgILnorroqo3jgZfjgarjgYTloLTlkIjjgIExMCDnp5LlvozjgavoqK3lrprjga/jg6rjgrvjg4Pjg4jjgZXjgozjgb7jgZnjgIIiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta2EtckdFL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKaW5kZXggNTE0MDVjYi4uNzllMGY0ZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1rYS1yR0Uvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuGDq+GDmOGDlOGDkeGDkCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LeGDmOGDoSDhg5Lhg5Dhg5vhg53hg6vhg5Dhg67hg5Thg5Hhg5Ag4YOV4YOU4YOgIOGDm+GDneGDruGDlOGDoOGDruGDk+GDkC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i4YOb4YOU4YOi4YOYIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+IuGDmeGDmOGDk+GDlOGDlSA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IuGDsOGDneGDoOGDmOGDluGDneGDnOGDouGDkOGDmuGDo+GDoOGDmCDhg5Lhg5Dhg6fhg53hg6Thg5AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLhg5Xhg5Thg6Dhg6Lhg5jhg5nhg5Dhg5rhg6Phg6Dhg5gg4YOS4YOQ4YOn4YOd4YOk4YOQIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuGDmOGDnOGDk+GDmOGDleGDmOGDk+GDo+GDkOGDmuGDo+GDoOGDmCDhg5Lhg5Dhg6fhg53hg5Hhg5AiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i4YOR4YOQ4YOi4YOQ4YOg4YOU4YOY4YOhIOGDk+GDkOGDm+GDluGDneGDkuGDmCDhg6nhg5Dhg6Dhg5fhg6Phg5rhg5jhg5AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i4YOQ4YOb4YOq4YOY4YOg4YOU4YOR4YOhIOGDrOGDkOGDoOGDm+GDkOGDk+GDneGDkeGDkOGDoSDhg5Phg5Ag4YOj4YOZ4YOQ4YOc4YOQIOGDpOGDneGDnOGDmOGDoSDhg5vhg53hg5zhg5Dhg6rhg5Thg5vhg5Thg5Hhg6EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuGDkeGDkOGDouGDkOGDoOGDlOGDmOGDoSDhg5Phg5Dhg5bhg53hg5Lhg5Xhg5jhg6Eg4YOS4YOQ4YOb4YOd4YOg4YOX4YOV4YOQIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuGDqOGDmOGDkuGDl+GDkOGDleGDoeGDmCDhg5Phg5Dhg5vhg5Dhg5rhg6Phg5rhg5jhg5AiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4YOT4YOQ4YOY4YOs4YOn4YOU4YOR4YOhIOGDmOGDmyDhg6fhg5Xhg5Thg5rhg5Dhg6Thg6Dhg5jhg6Eg4YOQ4YOm4YOR4YOU4YOt4YOT4YOV4YOQ4YOhLCDhg6Dhg5Dhg6og4YOX4YOl4YOV4YOU4YOc4YOhIOGDlOGDmeGDoOGDkOGDnOGDluGDlCDhg6nhg5Dhg5zhg6EuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IuGDkOGDpuGDkOGDoCDhg5vhg5Dhg6nhg5Xhg5Thg5zhg50iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i4YOn4YOV4YOU4YOa4YOQ4YOhIOGDkuGDkOGDoeGDo+GDpOGDl+GDkOGDleGDlOGDkeGDkCI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4i4YOS4YOh4YOj4YOg4YOXIEJsdWV0b290aC3hg5jhg6Eg4YOp4YOQ4YOg4YOX4YOV4YOQPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLhg5nhg5rhg5Dhg5Xhg5jhg5Dhg6Lhg6Phg6Dhg5jhg6Eg4YOi4YOQ4YOR4YOa4YOU4YOi4YOX4YOQ4YOcIOGDk+GDkOGDoeGDkOGDmeGDkOGDleGDqOGDmOGDoOGDlOGDkeGDmuGDkOGDkywg4YOv4YOU4YOgIOGDo+GDnOGDk+GDkCDhg6nhg5Dhg6Dhg5fhg53hg5cgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuGDqeGDkOGDoOGDl+GDleGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IuKAnjx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPuKAnCDhg6Lhg5jhg57hg5jhg6Eg4YOo4YOU4YOi4YOn4YOd4YOR4YOY4YOc4YOU4YOR4YOU4YOR4YOY4YOh4YOX4YOV4YOY4YOhIOGDm+GDmOGDoeGDkOGDk+GDkOGDkuGDlOGDkeGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuGDkOGDmyDhg5Dhg57hg5jhg6Eg4YOn4YOV4YOU4YOa4YOQIOGDqOGDlOGDouGDp+GDneGDkeGDmOGDnOGDlOGDkeGDmOGDoeGDl+GDleGDmOGDoSDhg5vhg5jhg6Hhg5Dhg5Phg5Dhg5Lhg5Thg5Hhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i4YOT4YOQ4YOR4YOa4YOd4YOZ4YOY4YOa4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4YOT4YOQ4YOR4YOQ4YOa4YOYIOGDnuGDoOGDmOGDneGDoOGDmOGDouGDlOGDouGDmCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLhg6nhg5Xhg5Thg6Phg5rhg5Thg5Hhg6Dhg5jhg5Xhg5gg4YOe4YOg4YOY4YOd4YOg4YOY4YOi4YOU4YOi4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IuGDm+GDkOGDpuGDkOGDmuGDmCDhg57hg6Dhg5jhg53hg6Dhg5jhg6Lhg5Thg6Lhg5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLhg5Lhg5Dhg5Phg5Dhg6Phg5Phg5Thg5Hhg5Thg5rhg5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuGDkOGDmyDhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5jhg6Eg4YOp4YOV4YOU4YOc4YOU4YOR4YOY4YOhIOGDqOGDlOGDrOGDp+GDleGDlOGDouGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLhg5Dhg5sg4YOo4YOU4YOi4YOn4YOd4YOR4YOY4YOc4YOU4YOR4YOU4YOR4YOY4YOhIOGDoeGDmOGDmOGDoSDhg5Hhg53hg5rhg53hg6jhg5gsIOGDo+GDruGDm+GDneGDkyDhg6nhg5Xhg5Thg5zhg5Thg5Hhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuGDkOGDmyDhg6jhg5Thg6Lhg6fhg53hg5Hhg5jhg5zhg5Thg5Hhg5Thg5Hhg5jhg6Eg4YOj4YOu4YOb4YOd4YOTIOGDqeGDleGDlOGDnOGDlOGDkeGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i4YOQ4YObIOGDqOGDlOGDouGDp+GDneGDkeGDmOGDnOGDlOGDkeGDlOGDkeGDmOGDoSDhg6Hhg5jhg5jhg6Eg4YOX4YOQ4YOV4YOo4YOYLCDhg67hg5vhg53hg5Xhg5Dhg5wg4YOh4YOY4YOS4YOc4YOQ4YOa4YOX4YOQ4YOcIOGDlOGDoOGDl+GDkOGDkyDhg6nhg5Xhg5Thg5zhg5Thg5Hhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i4YOQ4YObIOGDqOGDlOGDouGDp+GDneGDkeGDmOGDnOGDlOGDkeGDlOGDkeGDmOGDoSDhg57hg5jhg6Dhg5Phg5Dhg57hg5jhg6Ag4YOU4YOZ4YOg4YOQ4YOc4YOW4YOULCDhg67hg5vhg53hg5Xhg5Dhg5wg4YOh4YOY4YOS4YOc4YOQ4YOa4YOX4YOQ4YOcIOGDlOGDoOGDl+GDkOGDkyDhg6nhg5Xhg5Thg5zhg5Thg5Hhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLhg6nhg5Xhg5Thg6Phg5rhg5Thg5Hhg6Dhg5jhg5Xhg5gg4YOk4YOU4YOg4YOU4YOR4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuGDpuGDkOGDm+GDmOGDoSDhg6Thg5Thg6Dhg5Thg5Hhg5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuGDm+GDneGDoOGDkuGDlOGDkeGDo+GDmuGDmCDhg6Thg5Thg6Dhg5Thg5Hhg5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLhg6Phg6rhg5zhg53hg5Hhg5gg4YOk4YOU4YOg4YOU4YOR4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuGDpOGDlOGDoOGDlOGDkeGDmOGDoSDhg6jhg5Thg6rhg5Xhg5rhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLhg6Hhg6zhg6Dhg5Dhg6Thg5gg4YOe4YOQ4YOg4YOQ4YOb4YOU4YOi4YOg4YOU4YOR4YOY4YOhIOGDm+GDneGDluGDkOGDmOGDmeGDmOGDoSDhg6nhg5Xhg5Thg5zhg5Thg5Hhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuGDm+GDneGDoOGDkuGDlOGDkeGDo+GDmuGDmCDhg5Lhg5Dhg6Dhg5Phg5Dhg6Xhg5vhg5zhg5jhg6Eg4YOp4YOQ4YOg4YOX4YOV4YOQIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i4YOS4YOQ4YOb4YOd4YOn4YOU4YOc4YOU4YOR4YOQIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IuGDnuGDkOGDoOGDkOGDm+GDlOGDouGDoOGDlOGDkeGDmOGDoSDhg5Phg5Dhg5Phg5Dhg6Hhg6Lhg6Phg6Dhg5Thg5Hhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLhg6Thg5Thg6Dhg5fhg5Ag4YOW4YOd4YOS4YOY4YOU4YOg4YOXIOGDnuGDkOGDoOGDkOGDm+GDlOGDouGDoOGDoSDhg5Dhg5sg4YOb4YOd4YOs4YOn4YOd4YOR4YOY4YOa4YOd4YOR4YOQ4YOh4YOX4YOQ4YOcIOGDm+GDo+GDqOGDkOGDneGDkeGDmOGDoSDhg5Lhg5Dhg6Dhg5fhg6Phg5rhg5Thg5Hhg5Ag4YOo4YOU4YOj4YOr4YOa4YOY4YOQLiDhg6Thg5Thg6Dhg5fhg5Ag4YOQ4YOb4YOf4YOQ4YOb4YOY4YOc4YOT4YOU4YOa4YOYIOGDnuGDkOGDoOGDkOGDm+GDlOGDouGDoOGDlOGDkeGDmOGDoSDhg5Phg5Dhg6Hhg5Dhg5Phg5Dhg6Hhg6Lhg6Phg6Dhg5Thg5Hhg5rhg5Dhg5MsIOGDk+GDkOGDkOGDrOGDmeGDkOGDnuGDo+GDnOGDlOGDlyDigJ7hg5nhg5Dhg6Dhg5Lhg5jigJwt4YOW4YOULiDhg6zhg5jhg5zhg5Dhg5Dhg6bhg5vhg5Phg5Thg5Ig4YOo4YOU4YOb4YOX4YOu4YOV4YOU4YOV4YOQ4YOo4YOYLCDhg57hg5Dhg6Dhg5Dhg5vhg5Thg6Lhg6Dhg5Thg5Hhg5ggMTAg4YOs4YOQ4YOb4YOY4YOhIOGDqOGDlOGDm+GDk+GDlOGDkiDhg6nhg5Dhg5vhg53hg5jhg6fhg6Dhg5Thg5Hhg5AuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWtrLXJLWi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCmluZGV4IGNkZTRkZDguLjUxODdiNTQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta2stcktaL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLRltC30LTQtdGDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g0ZbRgdC60LUg0pvQvtGB0YMg0LzSr9C80LrRltC9INCx0L7Qu9C80LDQtNGLLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLSmtC+0YHRi9C80YjQsCI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4g0prQvtGB0YvQvNGI0LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+ItCR06nQu9GW0L3Qs9C10L0g0LrTqdC70LTQtdC90LXSoyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+ItCR06nQu9GW0L3Qs9C10L0g0YLRltC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+ItCR06nQu9GW0L3Qs9C10L0g0YLQtdKj0YjQtdC70LXRgtGW0L0iPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i0JHQsNGC0LDRgNC10Y8g0q/QvdC10LzQtNC10LPRltGIINKb0L7RgdGD0LvRiyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLTqNC90ZbQvNC00ZbQu9GW0LrRgtGWINC205nQvdC1INGE0L7QvdC00YvSmyDQtNC10YDQtdC60YLQtdGA0LTRliDQsNC30LDQudGC0LDQtNGLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLQkdCw0YLQsNGA0LXRjyDSr9C90LXQvNC00LXQs9GW0YjRgtGWINOp0YjRltGA0YMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i0JzQsNC30LzSsdC9INC20LDRgdGL0YDRi9C70pPQsNC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+INGN0LrRgNCw0L3QtNCwINC606nRgNGB0LXRgtGW0LvQs9C10L3QvdGW0qMg0LHQsNGA0LvRi9KT0YvQvSDRgtKv0YHRltGA0LUg0LHQsNGB0YLQsNC50LTRiy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i0prQsNC50YLQsCDQutOp0YDRgdC10YLQv9C10YMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i0JHQsNGA0LvRi9KT0YvQvSDRgtCw0LfQsNC70LDRgyI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3RoINGE0YPQvdC60YbQuNGP0YHRi9C9INKb0L7RgdGDINC60LXRgNC10Log0L/QtT8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i0J/QtdGA0L3QtdGC0LDSm9GC0LDQvdGLINC/0LvQsNC90YjQtdGC0LrQtSDSm9C+0YHRgyDSr9GI0ZbQvSDQsNC70LTRi9C80LXQvSBCbHVldG9vdGgg0YTRg9C90LrRhtC40Y/RgdGL0L0g0pvQvtGB0YMg0LrQtdGA0LXQui4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLSmtC+0YHRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDRhdCw0LHQsNGA0LvQsNC90LTRi9GA0YPSk9CwINKb0L7Qu9C00LDQvdGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i0J7RgdGLINKb0L7Qu9C00LDQvdCx0LDQvdGL0qMg0LHQsNGA0LvRi9KbINGF0LDQsdCw0YDQu9Cw0L3QtNGL0YDRg9C70LDRgNGL0L3QsCDSm9C+0LvQtNCw0L3RgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLQkdOp0LPQtdC70LPQtdC9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i0KLTqdC80LXQvSDQvNCw0qPRi9C30LTRi9C70YvSmyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLSmtCw0LvRi9C/0YLRiyDQvNCw0qPRi9C30LTRi9C70YvSmyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLQltC+0pPQsNGA0Ysg0LzQsNKj0YvQt9C00YvQu9GL0psiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLQqNKx0pPRi9C7INC80LDSo9GL0LfQtNGL0LvRi9KbIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLQntGB0Ysg0YXQsNCx0LDRgNC70LDQvdC00YvRgNGD0LvQsNGA0LTRiyDQtdGI0pvQsNGI0LDQvSDQutOp0YDRgdC10YLQv9C10YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i0KXQsNCx0LDRgNC70LDQvdC00YvRgNGD0LvQsNGAINGC0ZbQt9GW0LzQvdGW0qMg0YLTqdC80LXQvdCz0ZYg0LbQsNKT0YvQvdC00LAg0q/QvdGB0ZbQtyDQutOp0YDRgdC10YLRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i0J7RgdGLINGF0LDQsdCw0YDQu9Cw0L3QtNGL0YDRg9C70LDRgNC00Ysg0q/QvdGB0ZbQtyDQutOp0YDRgdC10YLRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i0KXQsNCx0LDRgNC70LDQvdC00YvRgNGD0LvQsNGA0LTRiyDRgtGW0LfRltC80ZbQvdGW0qMg0LbQvtKT0LDRgNKT0Ysg0LbQsNKT0YvQvdC00LAg0LrTqdGA0YHQtdGC0YMg0LbTmdC90LUg0LTRi9Cx0YvRgSDRiNGL0pPQsNGA0YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i0K3QutGA0LDQvdKT0LAg0LHQtdC60ZbRgtGDINC205nQvdC1INC00YvQsdGL0YEg0YjRi9KT0LDRgNGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i0prQsNC70YvQv9GC0Ysg0YLSr9GB0YLQtdGAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+ItCi0q/QvdCz0ZYg0YLSr9GB0YLQtdGAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLQkNGA0L3QsNGD0LvRiyDRgtKv0YHRgtC10YAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLQkdC10LvQs9GW0YHRltC3INGC0q/RgdGC0LXRgCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLQotKv0YHRgtGWINOp0LfQs9C10YDRgtGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i0JbRi9C70LTQsNC8INC/0LDRgNCw0LzQtdGC0YDQu9C10YAg0YLQvtGA0YvQvSDQutOp0YDRgdC10YLRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i0JDRgNC90LDRg9C70Ysg0YLSr9GA0LvQtdC90LTRltGA0YPQtNGWINKb0L7RgdGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i0prQvtC70LTQsNC90YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i0J/QsNGA0LDQvNC10YLRgNC70LXRgNC00ZYg0YDQsNGB0YLQsNGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i0JrQtdC50LHRltGAINGC0q/RgSDQv9Cw0YDQsNC80LXRgtGA0LvQtdGA0ZYg0LHSsdC7INKb0rHRgNGL0LvSk9GL0L3RiyDQv9Cw0LnQtNCw0LvQsNC90YMg0LzSr9C80LrRltC9INC10LzQtdGBINC10YLRg9GWINC80q/QvNC60ZbQvS4g0JHSsdC7INGC0q/RgSDQv9Cw0YDQsNC80LXRgtGA0LvQtdGA0ZbQvSDRgNCw0YHRgtCw0YMg0q/RiNGW0L0gT0sg0YLSr9C50LzQtdGB0ZbQvSDQsdCw0YHRi9Kj0YvQtywg05nQudGC0L/QtdGB0LUg0L/QsNGA0LDQvNC10YLRgNC70LXRgCAxMCDRgdC10LrRg9C90LTRgtCw0L0g0LrQtdC50ZbQvSDRi9GB0YvRgNGL0LvQsNC00YsuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWttLXJLSC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta20tcktIL3N0cmluZ3MueG1sCmluZGV4IGM1ZTBmODUuLjU2NjVhOTAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta20tcktIL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta20tcktIL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLhnp/hn5Lhnpzhn4LhnoThnprhnoAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IuGemOGet+Gek+KAi+GeouGetuGeheKAi+GeheGetuGelOGfi+GeleGfkuGeiuGevuGemCA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g4Z6R4Z+B4Z+UIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuGeheGfkuGemuGevuGek+GekeGfgOGejyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4g4Z6R4Z+A4Z6PIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLhnpThn4bhnpThn4LhnoDhnpXhn5Lhno/hn4HhnoAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLhnpThn4bhnpThn4LhnoDhnpThnonhn5LhnojhnpoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i4Z6U4Z+G4Z6U4Z+C4Z6A4Z6V4Z+S4Z6R4Z624Z6b4Z+L4Z6B4Z+S4Z6b4Z694Z6TIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuGegOGemOGfkuGemOGenOGet+GekuGeuOKAi+Gen+Gek+GfkuGen+GfhuKAi+GekOGfkuGemOKAi+GeguGeuuKAi+GelOGevuGegCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLhnoDhnrbhnprigIvhnpThnpPhn5LhnpDhnpnigIvhnoDhnrbhnprigIvhnpThn5Lhnprhno/hnrfhnpThno/hn5Lhno/hnrcg4Z6T4Z634Z6E4oCL4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4oCL4Z6V4Z+S4Z6R4Z+D4oCL4Z6B4Z624Z6E4Z6A4Z+S4Z6a4Z+E4Z6ZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLhnpThnrfhnpHigIvhnpLhnrbhno/hnrvigIvhnprhnoDhn5Lhnp/hnrbigIvhnpDhnrbhnpjhnpbhnpvigIvhnpDhn5LhnpgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4Z6U4Z624Z6T4oCL4Z6b4Z624Z6A4Z+L4oCL4Z6Y4Z624Z6P4Z634Z6A4Z62Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IOGek+GeueGehOKAi+GeheGetuGelOGfi+GeleGfkuGeiuGevuGemOKAi+GeheGetuGelOGfi+KAi+GemeGegOKAi+GeouGfkuGenOGeuOGfl+KAi+GeguGfkuGemuGelOGfi+GemeGfieGetuGehOKAi+GeiuGfguGem+KAi+GelOGehOGfkuGeoOGetuGeieKAi+Gem+GevuKAi+GeouGfgeGegOGfkuGemuGehOGfi+KAi+GemuGelOGen+Gfi+KAi+GeouGfkuGek+GegOGflCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLhnoDhnrvhn4bigIvhnpThnoThn5LhnqDhnrbhnonigIvhnpjhn5LhnorhnoThnpHhn4Dhno8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i4Z6f4Z6Y4Z+S4Z6i4Z624Z6P4oCL4Z6R4Z624Z+G4Z6E4Z6i4Z6f4Z+LIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLhnpThnr7hnoDhnpThn4rhn5LhnpvhnrzhnpLhnrzhnp/hnqw/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuGeiuGevuGemOGfkuGelOGeuOGel+GfkuGeh+GetuGelOGfi+GegOGfkuGej+GetuGemuGeheGeu+GeheGemuGelOGen+Gfi+GeouGfkuGek+GegOGeh+GetuGemOGeveGemeGek+GeueGehOGekOGfgeGelOGfkuGem+GfgeGej+GemuGelOGen+Gfi+GeouGfkuGek+GegCDhnqLhn5LhnpPhnoDhno/hn5Lhnprhnrzhnpzhno/hn4LhnpThnr7hnoDhnpThn4rhn5LhnpvhnrzhnpLhnrzhnp/hnofhnrbhnpjhnrvhnpPhnp/hnrfhnpPhn5QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLhnpThnr7hnoAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLhnqLhnpPhnrvhnpzhno/hn5Lhno/hnoXhn4bhnpbhn4Thn4fhnoDhnrbhnprhnofhnrzhnpPhnorhn4bhno7hnrnhnoQgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i4Z6i4Z6T4Z674Z6c4Z6P4Z+S4Z6P4Z6F4Z+G4Z6W4Z+E4Z+H4Z6A4Z624Z6a4Z6H4Z684Z6T4Z6K4Z+G4Z6O4Z654Z6E4Z6R4Z624Z+G4Z6E4Z6i4Z6f4Z+L4Z6W4Z644Z6A4Z6Y4Z+S4Z6Y4Z6c4Z634Z6S4Z644Z6T4Z+B4Z+HIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IuGelOGetuGek+GemuGetuGemuGetuGfhuGehCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IuGemOGet+Gek+Gen+GevOGenOGen+GfhuGegeGetuGek+GfiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLhnp/hn4bhnoHhnrbhnpPhn4vhnpjhnpLhn5LhnpnhnpgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i4Z6f4Z+G4Z6B4Z624Z6T4Z+L4Z6B4Z+S4Z6b4Z624Z+G4Z6EIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i4Z6f4Z+G4Z6B4Z624Z6T4Z+L4Z6H4Z624Z6U4Z6T4Z+S4Z6R4Z624Z6T4Z+LIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLhnoDhnrvhn4bhnpThnoThn5LhnqDhnrbhnonhnoDhnrbhnprhnofhnrzhnpPhnorhn4bhno7hnrnhnoThnpHhnrbhn4bhnoThnpPhn4Hhn4ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i4Z6U4Z6E4Z+S4Z6g4Z624Z6J4Z6f4Z+S4Z6E4Z624Z6P4Z+L4Z+X4Z6T4Z+F4Z6V4Z+S4Z6T4Z+C4Z6A4Z6B4Z624Z6E4Z6A4Z+S4Z6a4Z+E4Z6Y4Z6U4Z6J4Z+S4Z6H4Z644Z6T4Z+D4Z6A4Z624Z6a4Z6H4Z684Z6T4Z6K4Z+G4Z6O4Z654Z6EIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLhnpThnoThn5LhnqDhnrbhnonhnoDhnrbhnprhnofhnrzhnpPhnorhn4bhno7hnrnhnoThnpHhnrbhn4bhnoThnpPhn4Hhn4fhnp/hn5LhnoThnrbhno/hn4vhn5ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuGelOGehOGfkuGeoOGetuGeieGek+GfheGeleGfkuGek+GfguGegOGegeGetuGehOGem+GevuGelOGeieGfkuGeh+GeuOGek+Gfg+GegOGetuGemuGeh+GevOGek+GeiuGfhuGejuGeueGehCDhnpPhnrfhnoThnpThnpPhn5Lhnpvhnrrhnp/hn4bhnqHhn4HhnoQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i4Z6b4Z+E4Z6P4Z6U4Z6E4Z+S4Z6g4Z624Z6J4Z6T4Z+F4Z6b4Z6+4Z6i4Z+B4Z6A4Z+S4Z6a4Z6E4Z+LIOGek+Get+GehOGelOGek+GfkuGem+GeuuGen+GfhuGeoeGfgeGehCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuGeluGejuGfjOGekuGemOGfkuGemOGej+GetiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLhnpbhno7hn4zhnpbhn4HhnpvhnpnhnpThn4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuGeluGejuGfjOGeleGfkuGekeGetuGem+Gfi+GegeGfkuGem+GeveGekyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuGeluGejuGfjOGemOGet+Gek+Gen+GfkuGeguGetuGem+GfiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLhnoDhnrbhnprhnoDhn4Lhnp/hnpjhn5Lhnprhnr3hnpvhnpbhno7hn4wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLhnpThnoThn5LhnqDhnrbhnonhnpXhn5LhnpHhnrbhn4bhnoThnpThn5LhnprhnqLhnpThn4vhnoDhnrbhnprhnoDhn4bhno7hno/hn4vhnprhnqDhn5Dhnp8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuGelOGevuGegOGeiuGfhuGejuGevuGemuGegOGetuGemuGeleGfkuGem+GetuGen+Gfi+GelOGfkuGej+GevOGemuGeleGfkuGekeGetuGem+Gfi+GegeGfkuGem+GeveGekyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IuGeouGek+Geu+GenOGej+GfkuGejyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLhnpThnonhn5LhnofhnrbhnoDhn4vhnoDhnrbhnprhnoDhn4bhno7hno/hn4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLhnoDhnrbhnprhnoDhn4bhno7hno/hn4vhnpbhno7hn4zhnpjhnr3hnpnhnoXhn4bhnpPhnr3hnpPhnqLhnrbhnoXhnpLhn5Lhnpzhnr7hnrLhn5LhnpnhnqfhnpThnoDhnprhno7hn43hnpPhn4Hhn4fhnpjhnrfhnpPhnqLhnrbhnoXhnpThn5Lhnprhnr7hnpThnrbhnpPhn5Qg4Z6f4Z684Z6Y4Z6F4Z674Z6FIOGemeGem+Gfi+GeluGfkuGemuGemCDhnorhnr7hnpjhn5LhnpThnrjhnpThnonhn5LhnofhnrbhnoDhn4vhnoDhnrbhnprhnoDhn4bhno7hno/hn4vhnpbhno7hn4zhnpHhnrbhn4bhnoThnpPhn4Hhn4cg4Z6U4Z6+4Z6Y4Z634Z6T4Z6K4Z684Z6F4Z+S4Z6T4Z+B4Z+H4Z6R4Z+B4Z6A4Z624Z6a4Z6A4Z+G4Z6O4Z6P4Z+L4Z6R4Z624Z+G4Z6E4Z6T4Z+B4Z+H4Z6T4Z654Z6E4Z6A4Z+G4Z6O4Z6P4Z+L4Z6h4Z6+4Z6E4Z6c4Z634Z6J4Z6A4Z+S4Z6T4Z674Z6E4Z6a4Z6Z4Z+I4Z6W4Z+B4Z6bIDEwIOGenOGet+Gek+GetuGekeGeuOGelOGek+GfkuGekeGetuGelOGfi+GflCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1rbi1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbAppbmRleCA2ZTc2YjYxLi4wMzI2YTY3IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWtuLXJJTi9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4i4LK54LOB4LKh4LOB4LKV4LK+4LKfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g4LKq4LON4LKw4LK+4LKw4LKC4LKt4LK/4LK44LKy4LOBIOCyuOCyvuCypuCzjeCyr+CyteCyv+CysuCzjeCysi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i4LKH4LKo4LON4LKo4LK34LON4LKf4LOBIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDgsofgsqjgs43gsqjgsrfgs43gsp/gs4EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IuCyheCyoeCzjeCyoeCysuCyvuCyl+CyvyDgsrXgsr/gsq3gspzgsr/gsrjgsr/gsqYiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLgsrLgsoLgsqzgsrXgsr7gspfgsr8g4LK14LK/4LKt4LKc4LK/4LK44LK/4LKmIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuCyleCyuOCzjeCyn+CyruCzjSDgsrXgsr/gsq3gspzgsr/gsrjgsr/gsqYiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i4LKs4LON4LKv4LK+4LKf4LKw4LK/IOCysOCyleCzjeCyt+CylSDgsobgsqjgs40g4LKG4LKX4LK/4LKm4LOGIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IuCyleCyvuCysOCzjeCyr+CyleCzjeCyt+CyruCypOCzhiDgsq7gsqTgs43gsqTgs4Eg4LK54LK/4LKo4LON4LKo4LOG4LKy4LOGIOCyoeCzh+Cyn+CyvuCyteCyqOCzjeCyqOCzgSDgspXgsqHgsr/gsq7gs4Yg4LKu4LK+4LKh4LOB4LKk4LON4LKk4LKm4LOGIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLgsqzgs43gsq/gsr7gsp/gsrDgsr8g4LKJ4LKz4LK/4LKk4LK+4LKv4LK14LKo4LON4LKo4LOBIOCyhuCyq+CzjSDgsq7gsr7gsqHgsr8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4LK14LK/4LK34LKv4LKX4LKz4LKo4LON4LKo4LOBIOCyruCysOCzhuCyruCyvuCyoeCysuCyvuCyl+Cyv+CypuCzhiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4i4LKo4LK/4LKu4LON4LKuIOCyquCysOCypuCzhuCyryDgsq7gs4fgsrLgs4Yg4LKq4LON4LKw4LKm4LKw4LON4LK24LK/4LK44LKy4LK+4LKX4LOB4LK1IOCyjuCysuCzjeCysuCyteCyqOCzjeCyqOCzgiA8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IOCyr+CzgSDgsrjgs4bgsrDgs4bgsrngsr/gsqHgsr/gsq/gsrLgs4Eg4LKq4LON4LKw4LK+4LKw4LKC4LKt4LK/4LK44LOB4LKk4LON4LKk4LKm4LOGLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgsq7gsqTgs43gsqTgs4rgsq7gs43gsq7gs4Yg4LKk4LOL4LKw4LK/4LK44LKm4LK/4LKw4LOBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuCyjuCysuCzjeCysuCyteCyqOCzjeCyqOCzgiDgsqTgs4bgsrDgsrXgs4Hgspfgs4rgsrPgsr/gsrjgs4EiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuCyrOCzjeCysuCzguCyn+CzguCypOCzjSDgsobgsqjgs40g4LKu4LK+4LKh4LOB4LK14LOB4LKm4LOHPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLgsqjgsr/gsq7gs43gsq4g4LKV4LOA4LKs4LOL4LKw4LON4LKh4LONIOCyheCyqOCzjeCyqOCzgSDgsp/gs43gsq/gsr7gsqzgs43gsrLgs4bgsp/gs43igIzgspfgs4Yg4LK44LKC4LKq4LKw4LON4LKV4LK/4LK44LKy4LOBLCDgsqjgs4DgsrXgs4Eg4LKu4LOK4LKm4LKy4LOBIOCyrOCzjeCysuCzguCyn+CzguCypOCzjSDgsobgsqjgs40g4LKu4LK+4LKh4LKs4LOH4LKV4LK+4LKX4LOB4LKk4LON4LKk4LKm4LOGLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuCyhuCyqOCzjSDgsq7gsr7gsqHgs4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiI8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4g4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOG4LKX4LKz4LK/4LKX4LOGIOCyheCyqOCzjeCyteCyr+Cyv+CyuOCyvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuCyiCDgsoXgsqrgs43gsrLgsr/gspXgs4fgsrbgsqjgs43igIzgsqjgsr/gsoLgsqYg4LKO4LKy4LON4LKy4LK+IOCyheCyp+Cyv+CyuOCzguCymuCyqOCzhuCyl+Cys+Cyv+Cyl+CzhiDgsoXgsqjgs43gsrXgsq/gsr/gsrjgsr8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i4LKo4LK/4LKw4LON4LKs4LKC4LKn4LK/4LK44LKy4LK+4LKX4LK/4LKm4LOGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4LKV4LKh4LK/4LKu4LOGIOCyquCzjeCysOCyvuCyruCzgeCyluCzjeCyr+CypOCzhiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLgsrjgsr7gsq7gsr7gsqjgs43gsq8g4LKq4LON4LKw4LK+4LKu4LOB4LKW4LON4LKv4LKk4LOGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IuCyieCyqOCzjeCyqOCypCDgsqrgs43gsrDgsr7gsq7gs4Hgspbgs43gsq/gsqTgs4YiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLgsqTgs4HgsrDgs43gsqTgs4Eg4LKq4LON4LKw4LK+4LKu4LOB4LKW4LON4LKv4LKk4LOGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLgsogg4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOG4LKX4LKz4LKo4LON4LKo4LOBIOCyjuCyguCypuCyv+Cyl+CzgiDgsqTgs4vgsrDgsr/gsrjgsqzgs4fgsqEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i4LKF4LKn4LK/4LK44LOC4LKa4LKo4LOGIOCyquCyn+CzjeCyn+Cyv+CyryDgspXgs4bgsrPgsq3gsr7gspfgsqbgsrLgs43gsrLgsr8g4LK44LON4LKl4LKs4LON4LKn4LK14LK+4LKX4LK/IOCypOCzi+CysOCyv+CyuOCzgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i4LKIIOCyheCyp+Cyv+CyuOCzguCymuCyqOCzhuCyl+Cys+CyqOCzjeCyqOCzgSDgsrjgs43gsqXgsqzgs43gsqfgsrXgsr7gspfgsr8g4LKk4LOL4LKw4LK/4LK44LOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLgsoXgsqfgsr/gsrjgs4Lgsprgsqjgs4bgspfgsrMg4LKq4LKf4LON4LKf4LK/4LKvIOCyruCzh+CysuCzjeCyreCyvuCyl+CypuCysuCzjeCysuCyvyDgsqTgs4vgsrDgsr/gsrjgs4Eg4LKu4LKk4LON4LKk4LOBIOCyp+CzjeCyteCyqOCyvyDgsq7gsr7gsqHgs4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i4LKq4LKw4LKm4LOG4LKv4LKo4LON4LKo4LOBIOCyteCzgOCyleCzjeCyt+Cyv+CyuOCyvyDgsq7gsqTgs43gsqTgs4Eg4LKn4LON4LK14LKo4LK/IOCyruCyvuCyoeCzgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuCyuOCyvuCyruCyvuCyqOCzjeCyryDgsqzgsqPgs43gsqPgspfgsrPgs4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i4LKw4LK+4LKk4LON4LKw4LK/IOCyrOCyo+CzjeCyo+Cyl+Cys+CzgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i4LKV4LK44LON4LKf4LKu4LONIOCyrOCyo+CzjeCyo+Cyl+Cys+CzgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuCyheCyquCysOCyv+CymuCyv+CypCDgsqzgsqPgs43gsqPgspfgsrPgs4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i4LKs4LKj4LON4LKjIOCyrOCypuCysuCyvuCyteCyo+CzhiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IuCypOCzjeCyteCysOCyv+CypCDgsrjgs4bgsp/gs43gsp/gsr/gsoLgspfgs43igIzgspfgsrMg4LKf4LOI4LKy4LONIOCypOCzi+CysOCyv+CyuOCzgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i4LKV4LK44LON4LKf4LKu4LONIOCyquCysOCyv+CyteCysOCzjeCypOCyqOCzhuCyr+CyqOCzjeCyqOCzgSDgsrjgspXgs43gsrDgsr/gsq/gspfgs4rgsrPgsr/gsrjgsr8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLgsoXgsqjgs43gsrXgsq/gsr/gsrjgs4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4LK44LOG4LKf4LON4LKf4LK/4LKC4LKX4LON4oCM4LKX4LKz4LKo4LON4LKo4LOBIOCyluCymuCyv+CypOCyquCyoeCyv+CyuOCyvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuCyleCzhuCysuCyteCzgSDgsqzgsqPgs43gsqMg4LK44LOG4LKf4LON4LKf4LK/4LKC4LKX4LON4oCM4LKX4LKz4LOBIOCyiCDgsrjgsr7gsqfgsqjgsrXgsqjgs43gsqjgs4Eg4LKF4LKo4LOB4LKq4LKv4LOB4LKV4LON4LKk4LKX4LOK4LKz4LK/4LK44LKs4LK54LOB4LKm4LOBLiDgsogg4LKs4LKj4LON4LKjIOCyuOCzhuCyn+CzjeCyn+Cyv+CyguCyl+CzjeKAjOCyl+Cys+CyqOCzjeCyqOCzgSDgspbgsprgsr/gsqTgsqrgsqHgsr/gsrjgsrLgs4Eg4LK44LKw4LK/IOCyleCzjeCysuCyv+CyleCzjSDgsq7gsr7gsqHgsr8sIOCyh+CysuCzjeCysuCyteCyvuCypuCysOCzhiDgsogg4LK44LOG4LKf4LON4LKf4LK/4LKC4LKX4LON4oCM4LKX4LKz4LKo4LON4LKo4LOBIDEwIOCyuOCzhuCyleCzhuCyguCyoeCzgeCyl+CysyDgsqjgsoLgsqTgsrAg4LKu4LKw4LOB4LK54LOK4LKC4LKm4LK/4LK44LK/LiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwKaW5kZXggMDRmYmE1Mi4uYjkxMGMwNCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLqsoDsg4kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPuydhCjrpbwpIOyLnOyeke2VoCDsiJgg7JeG7Iq164uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLrjZTrs7TquLAiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+6rCcIOuNlOuztOq4sCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i7IiY7Y+JIOu2hO2VoCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IuyImOyngSDrtoTtlaAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i66ee7LakIOu2hO2VoCI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLrsLDthLDrpqwg7IS47J2067KEIOyCrOyaqSDspJEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i7ISx64qlIOuwjyDrsLHqt7jrnbzsmrTrk5wg642w7J207YSw66W8IOykhOyeheuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuuwsO2EsOumrCDsoIjslb0g6riw64qlIOyCrOyaqSDspJHsp4AiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i7Iio6rKo7KeEIOy9mO2FkOy4oCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPuyXkOyEnCDtmZTrqbTsl5Ag7ZGc7Iuc65CcIOuqqOuToCDqsoPsnYQg7Lqh7LKY7ZWY6riwIOyLnOyeke2VqeuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i64uk7IucIO2RnOyLnCDslYjtlagiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i66qo65GQIOyngOyasOq4sCI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4i67iU66Oo7Yis7Iqk66W8IOy8nOyLnOqyoOyKteuLiOq5jD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i7YKk67O065Oc66W8IO2DnOu4lOumv+yXkCDsl7DqsrDtlZjroKTrqbQg66i87KCAIOu4lOujqO2IrOyKpOulvCDsvJzslbwg7ZWp64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuyCrOyaqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDslYzrprzsl5Ag7KCB7JqpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i7J20IOyVseydmCDsoITssrQg7JWM66a87JeQIOyggeyaqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLssKjri6jrkKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLspJHsmpTrj4Qg64Ku7J2MIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuykkeyalOuPhCDrs7TthrUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i7KSR7JqU64+EIOuGkuydjCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuykkeyalOuPhCDquLTquIkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuyVjOumvCDri6Tsi5wg7ZGc7IucIOyViO2VqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLslYzrprwg66qp66GdIO2VmOuLqOyXkCDrrLTsnYzsnLzroZwg7ZGc7IucIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLrrLTsnYzsnLzroZwg7JWM66a8IO2RnOyLnCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i7JWM66a8IOuqqeuhnSDsg4Hri6jsl5Ag7ZGc7Iuc7ZWY6rOgIOyGjOumrOuhnCDslYzrprwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i7ZmU66m07JeQIO2RnOyLnO2VmOqzoCDshozrpqzroZwg7JWM66a8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i7J2867CYIOyDieyDgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLslbzqsIQg7IOJ7IOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLrp57stqQg7IOJ7IOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i7JWMIOyImCDsl4bripQg7IOJ7IOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuyDieyDgSDsiJjsoJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLruaDrpbgg7ISk7KCVIO2DgOydvCDtkZzsi5wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+Iuunnuy2pCDrs4DtmZgg7IKs7JqpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i7KCB7JqpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IuyEpOyglSDtmZXsnbgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLsnbzrtoAg7IOJ7IOBIOyEpOygleycvOuhnCDsnbjtlbQg7J20IOq4sOq4sOulvCDsgqzsmqntlZjsp4Ag66q77ZWgIOyImCDsnojsirXri4jri6QuIO2ZleyduOydhCDtgbTrpq3tlZjsl6wg7J2065+s7ZWcIOyDieyDgSDshKTsoJXsnYQg7ZmV7J247ZWY7KeAIOyViuycvOuptCAxMOy0iCDtm4Tsl5Ag7ISk7KCV7J20IOy0iOq4sO2ZlOuQqeuLiOuLpC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMta3ktcktHL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwKaW5kZXggMjU0ODQzYy4uZTcwM2UwMCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1reS1yS0cvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ItC40LfQtNOp06kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDQsdCw0YjRgtCw0Lkg0LDQu9Cz0LDQvSDQttC+0LouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+ItCU0LDQs9GLIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+ItCU0LDQs9GLIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i0KLRg9GD0YDQsNGB0YvQvdCw0L0g0LHTqdC70q/SryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+ItCi0LjQs9C40L3QtdC9INCx06nQu9Kv0q8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i0KvSo9Cz0LDQudC70LDRiNGC0YvRgNGL0LvQs9Cw0L0g0LHTqdC70q/SryI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLQkdCw0YLQsNGA0LXRj9C90Ysg0q/QvdOp0LzQtNOp0LPSr9GHINC60q/QudCz0q/Qt9Kv0LvQtNKvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+ItCY0YjRgtC40L0g0LzQsNC50L3QsNC/0YLRg9GD0LvRg9Cz0YPQvSDQvdCw0YfQsNGA0LvQsNGC0YvQvywg0YTQvtC90LTRg9C6INC00LDQudGL0L3QtNCw0YDQtNGLINGH0LXQutGC0LXQudGCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLQkdCw0YLQsNGA0LXRj9C90YvQvSDQutGD0LHQsNGC0YvQvSDSr9C906nQvNC006nQs9Kv0YfRgtKvINOp0YfSr9GA0q/QvyDQutC+0Y7RgyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLQnNCw0LfQvNGD0L3QtNCw0YAg0LbQsNGI0YvRgNGL0LvQs9Cw0L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g0Y3QutGA0LDQvdCz0LAg0YfRi9C60LrQsNC9INC90LXRgNGB0LXQvdC40L0g0LHQsNCw0YDRi9C9INGB0q/RgNOp0YLQutOpINGC0LDRgNGC0LAg0LHQsNGI0YLQsNC50YIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+ItCt0LrQuNC90YfQuCDQutOp0YDRgdOp0YLSr9C70LHTqdGB0q/QvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLQkdCw0YDQtNGL0LPRi9C9INGC0LDQt9Cw0LvQsNC/INGB0LDQu9GD0YMiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IkJsdWV0b290aCDQutKv0LnQs9Kv0LfSr9C70YHSr9C90LHSrz8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i0JHQsNGB0LrRi9GH0YLQvtCx0YPSo9GD0LfQtNGDINC/0LvQsNC90YjQtdGC0LjSo9C40LfQs9C1INGC0YPRgtCw0YjRgtGL0YDRg9GDINKv0YfSr9C9LCDQsNC00LXQs9C10L3QtNC1IEJsdWV0b290aFwn0YLRgyDQutKv0LnQs9Kv0LfSr9GI0q/So9Kv0Lcg0LrQtdGA0LXQui4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLQmtKv0LnQs9Kv0LfSr9KvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+INGN0YHQutC10YDRgtC80LXQu9C10YDQuNC90LUg0LrQvtC70LTQvtC90YPQu9GB0YPQvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+ItCj0YjRg9C7INC60L7Qu9C00L7QvdC80L7QtNC+0L0g0LDQu9GL0L3Qs9Cw0L0g0LHQsNGA0LTRi9C6INGN0YHQutC10YDRgtC80LXQu9C10YDQs9C1INC60L7Qu9C00L7QvdGD0LvRgdGD0L0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i0JHTqdCz06nRgtGC06nQu9Cz06nQvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+ItCc0LDQsNC90LjQu9Kv0q/Qu9Kv0LPSryDRgtOp0LzTqdC9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+ItCc0LDQsNC90LjQu9Kv0q/Qu9Kv0LPSryDQvtGA0YLQvtGH0L4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i0JzQsNCw0L3QuNC70q/Sr9C70q/Qs9KvINC20L7Qs9C+0YDRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+ItCc0LDQsNC90LjQu9Kv0q/Qu9Kv0LPSryDRiNCw0YjRi9C70YvRiCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i0JHRg9C7INGN0YHQutC10YDRgtC80LXQu9C10YAg0Y3RhyDQutCw0YfQsNC9INC606nRgNGB06nRgtKv0LvQsdOp0YHSr9C9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+ItCt0YHQutC10YDRgtC80LXQu9C10YAg0YLQuNC30LzQtdGB0LjQvdC40L0g0Y3SoyDRi9C70LTRi9C50YvQvdC00LAg0q/QvdGB0q/QtyDQutOp0YDRgdOp0YLSr9C70YHSr9C9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLQkdGD0Lsg0Y3RgdC60LXRgNGC0LzQtdC70LXRgCDSr9C90YHSr9C3INC606nRgNGB06nRgtKv0LvRgdKv0L0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+ItCt0YHQutC10YDRgtC80LXQu9C10YAg0YLQuNC30LzQtdGB0LjQvdC40L0g0Y3SoyDQttC+0LPQvtGA0YPRgdGD0L3QtNCwINKv0L0g0YfRi9Cz0LDRgNGL0L8g0LrTqdGA0YHTqdGC0q/Qu9GB0q/QvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLSrtC9INC80LXQvdC10L0g0LrQvtGI0YLQvtC70YPQvywg0Y3QutGA0LDQvdCz0LAg0YfRi9Cz0LDRgNGL0LvRgdGL0L0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLQmtCw0LTQuNC80LrQuCDRgtKv0YHRgtOp0YAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i0KLSr9C90LrSryDRgtKv0YHRgtOp0YAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+ItCr0qPQs9Cw0LnQu9Cw0YjRgtGL0YDRi9C70LPQsNC9INGC0q/RgdGC06nRgCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+ItCR0LXQu9Cz0LjRgdC40Lcg0YLSr9GB0YLTqdGAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+ItCi0q/RgdKv0L0g06nQt9Cz06nRgNGC0q/SryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+ItCr0LrRh9Cw0Lwg0LbTqdC90LTTqdOp0LvTqdGAINGC0LDQutGC0LDRgdGL0L0g0LrTqdGA0YHTqdGC0q/SryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i0KvSo9Cz0LDQudC70LDRiNGC0YvRgNGL0LvQs9Cw0L0g06nQt9Cz06nRgNGC0q/Sr9C90q8g0LjRiNGC0LXRgtKv0q8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLQmtC+0LvQtNC+0L3Rg9GDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+ItCW06nQvdC006nTqdC706nRgNC00q8g0YvRgNCw0YHRgtC+0L4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLQkNC50YDRi9C8INGC0q/RgSDQttOp0L3QtNOp06nQu9Op0YDSryDQsdGD0Lsg0YLSr9C30LzTqdC60YLSryDQutC+0LvQtNC+0L3Rg9C70LPRg9GBINC60YvQu9GL0L8g0LrQvtGO0YjRgyDQvNKv0LzQutKv0L0uINCR0YPQuyDRgtKv0YEg0LbTqdC90LTTqdOp0LvTqdGA0q/QvSDRi9GA0LDRgdGC0L7QviDSr9GH0q/QvSBPSyDQsdCw0YHQutGL0YfRi9C9INGH0YvQutGL0LvQtNCw0YLRi9Kj0YvQtywg0LHQvtC70LHQvtGB0L4g0LHRg9C7INC206nQvdC006nTqdC706nRgCAxMCDRgdC10LrRg9C90LTQtNCw0L0g0LrQuNC50LjQvSDQsdCw0YjRgtCw0L/QutGLINCw0LHQsNC70YvQvdCwINC60LXQu9GC0LjRgNC40LvQtdGCLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1sYW5kL2RpbWVucy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWxhbmQvZGltZW5zLnhtbAppbmRleCA0NTYzOTFkLi5jNzVhODlmIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWxhbmQvZGltZW5zLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWxhbmQvZGltZW5zLnhtbApAQCAtMjQsNSArMjQsNSBAQAogICAgIDxpbnRlZ2VyIG5hbWU9Im5vdGlmaWNhdGlvbl9wYW5lbF9sYXlvdXRfZ3Jhdml0eSI+QGludGVnZXIvc3RhbmRhcmRfbm90aWZpY2F0aW9uX3BhbmVsX2xheW91dF9ncmF2aXR5PC9pbnRlZ2VyPgogCiAgICAgPGRpbWVuIG5hbWU9ImRvY2tlZF9kaXZpZGVyX2hhbmRsZV93aWR0aCI+MmRwPC9kaW1lbj4KLSAgICA8ZGltZW4gbmFtZT0iZG9ja2VkX2RpdmlkZXJfaGFuZGxlX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9ImRvY2tlZF9kaXZpZGVyX2hhbmRsZV9oZWlnaHQiPjE2ZHA8L2RpbWVuPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWxhbmQvc3R5bGVzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbGFuZC9zdHlsZXMueG1sCmluZGV4IDk2ZDhmYjguLmI3MTFmYWEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbGFuZC9zdHlsZXMueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbGFuZC9zdHlsZXMueG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgPC9zdHlsZT4KIAogICAgIDxzdHlsZSBuYW1lPSJEb2NrZWREaXZpZGVyQmFja2dyb3VuZCI+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dpZHRoIj4xMmRwPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93aWR0aCI+MTBkcDwvaXRlbT4KICAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfaGVpZ2h0Ij5tYXRjaF9wYXJlbnQ8L2l0ZW0+CiAgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2dyYXZpdHkiPmNlbnRlcl9ob3Jpem9udGFsPC9pdGVtPgogICAgIDwvc3R5bGU+CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgPHN0eWxlIG5hbWU9IkRvY2tlZERpdmlkZXJIYW5kbGUiPgogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9ncmF2aXR5Ij5jZW50ZXJfdmVydGljYWw8L2l0ZW0+CiAgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dpZHRoIj40OGRwPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPjY0ZHA8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+OTZkcDwvaXRlbT4KICAgICA8L3N0eWxlPgogCiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbG8tckxBL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKaW5kZXggOTFhZWUxYy4uOGU0MzQwOCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1sby1yTEEvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuC6iuC6reC6geC6q+C6siI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4i4Lqa4LuN4LuI4oCL4Lqq4Lqy4oCL4Lqh4Lqy4LqU4oCL4LuA4Lql4Lq14LuI4LqhIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDgu4TgupTgu4kuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuC7gOC6nuC6teC7iOC6oeC7gOC6leC6teC6oSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4g4LuA4Lqe4Lq14LuI4Lqh4LuA4LqV4Lq14LqhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLguoHgurLgupnigIvgu4Hguo3guoHigIvguqXguqfguofigIvguoLguqfgurLguociPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLguoHgurLgupnigIvgu4Hguo3guoHigIvguqXguqfguofigIvgupXgurHgu4nguociPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i4LqB4Lqy4LqZ4oCL4LuB4LqN4LqB4oCL4LqB4Lqz4oCL4LqZ4Lq74LqU4oCL4LuA4Lqt4LqHIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuC7gOC6m+C6teC6lOKAi+C7g+C6iuC7ieKAi+C7guC6leKAi+C6m+C6sOC6ouC6seC6lOKAi+C7geC6muC6seC6lOC7gOC6leC6teC6o+C6teKAi+C7geC6peC7ieC6pyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLguqvgurzgurjgupTigIvgupvgurDigIvguqrgurTigIvgupfgurTigIvgup7gurLguprigIvgu4HguqXgurDigIvguoHgurLgupnigIvgupngurPigIvgu4Pguorgu4nigIvguoLgu43gu4nigIvguqHgurngupnigIvgup7gurfgu4ngupnguqvgurzgurHguociPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuC6m+C6tOC6lOKAi+C7guC6leKAi+C6m+C6sOKAi+C6ouC6seC6lOKAi+C7geC6muC6seC6lOKAi+C7gOC6leC6teKAi+C6o+C6tSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgu4Dgupngurfgu4nguq3guqvgurLigIvgupbgurfguoHigIvgu4Dguorgurfgu4jguq3guofigIvgu4Tguqfgu4kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4oCL4LqI4Lqw4oCL4LuA4Lql4Lq14LuI4Lqh4oCL4Lqa4Lqx4LqZ4oCL4LqX4Lq24LqB4oCL4LqX4Lq44LqB4oCL4Lqi4LuI4Lqy4LqH4oCL4LqX4Lq14LuI4oCL4Lqq4Lqw4oCL4LuB4LqU4LqH4oCL4Lqc4Lq74LqZ4oCL4LuD4LqZ4oCL4Luc4LuJ4Lqy4oCL4LqI4LuN4oCL4LqX4LuI4Lqy4LqZLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLguprgu43gu4jigIvgupXgu4nguq3guofigIvguqrgurDigIvgu4HgupTguofigIvguq3gurXguoEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i4Lql4Lq24Lqa4Lql4LuJ4Lqy4LqH4LqX4Lqx4LqH4Lud4Lq74LqUIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLgu4DgupvgurXgupTigIvgu4Pguorgu4kgQmx1ZXRvb3RoIOC6muC7jeC7iD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i4LuA4Lqe4Lq34LuI4Lqt4oCL4LuA4LqK4Lq34LuI4Lqt4Lqh4oCL4LqV4LuN4LuI4oCL4LuB4Lqb4LuJ4LqZ4oCL4Lqe4Lq04Lqh4oCL4LqC4Lqt4LqH4oCL4LqX4LuI4Lqy4LqZ4oCL4LqB4Lqx4Lqa4oCL4LuB4LqX4Lqx4Lqa4oCL4LuA4Lql4Lqx4LqU4oCL4LqC4Lqt4LqH4oCL4LqX4LuI4Lqy4LqZLCDguoHgu4jguq3gupnigIvguq3gurfgu4jgupnigIvgu53gurvgupTigIvgupfgu4jgurLgupnigIvgupXgu4nguq3guofigIvgu4DgupvgurXgupQgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuC7gOC6m+C6teC6lOKAiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IuC6meC6s+C7g+C6iuC7ieC6geC6seC6muC6geC6suC6meC7geC6iOC7ieC6h+C7gOC6leC6t+C6reC6mSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiLgupngurPgu4Pguorgu4nguoHgurHguprgupfgurjguoHguoHgurLgupngu4Hguojgu4nguofgu4DgupXgurfguq3gupnguojgurLguoHgu4Hguq3gurHguprgupngurXgu4kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i4Lqa4Lql4Lqx4Lqt4LqB4LuE4Lqn4LuJ4oCL4LuB4Lql4LuJ4LqnIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4LqE4Lqn4Lqy4Lqh4oCL4Lqq4LuN4Lqy4oCL4LqE4Lqx4LqZ4oCL4LqV4LuN4LuI4LqyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuC6hOC6p+C6suC6oeC6quC6s+C6hOC6seC6meC6m+C6u+C6geC6geC6sOC6leC6tCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLguoTguqfgurLguqHigIvguqrgu43gurLigIvguoTgurHgupnigIvguqrgurnguociPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLguoTguqfgurLguqHigIvguqrgu43gurLigIvguoTgurHgupnigIvguq7gurXguprigIvgupTgu4jguqfgupkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuC6ouC7iOC6suKAi+C6quC6sOKAi+C7geC6lOC6h+KAi+C6geC6suC6meKAi+C7geC6iOC7ieC6h+KAi+C7gOC6leC6t+C6reC6meKAi+C7gOC6q+C6vOC6u+C7iOC6suKAi+C6meC6teC7iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLguqrgurDgu4HgupTguofguqLgurngu4jguqrgu4jguqfgupnguqXgurjgu4jguqHguoLguq3guofguqXgurLguo3guoHgurLgupngu4Hguojgu4nguofgu4DgupXgurfguq3gupngu4HguprguprguqHgurXguprgu43gu4jguqrgur3guociPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuC6quC6sOC7geC6lOC6h+C6geC6suC6meC7geC6iOC7ieC6h+C7gOC6leC6t+C6reC6meC7gOC6q+C6vOC6u+C7iOC6suC6meC6teC7ieC7geC6muC6muC6muC7jeC7iOC6oeC6teC6quC6veC6hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i4Lqq4Lqw4LuB4LqU4LqH4Lqi4Lq54LuI4Lqq4LuI4Lqn4LqZ4LuA4LqX4Lq04LqH4LqC4Lqt4LqH4Lql4Lqy4LqN4LqB4Lqy4LqZ4LuB4LqI4LuJ4LqH4LuA4LqV4Lq34Lqt4LqZIOC7geC6peC6sOC6quC6u+C7iOC6h+C6quC6veC6h+C6lOC6seC6hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLgu4DgupTgurHgu4nguofguoLgurbgu4ngupngu4DgupfgurTguofguqvgupngu4ngurLguojgu40g4LuB4Lql4Lqw4Lqq4Lq74LuI4LqH4Lqq4Lq94LqH4LqU4Lqx4LqHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i4Lqq4Lq14oCL4Lqb4Lq74LqB4oCL4LqB4Lqw4oCL4LqV4Lq0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuC6quC6teKAi+C6leC6reC6meKAi+C6geC6suC6h+KAi+C6hOC6t+C6mSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i4Lqq4Lq14LuB4Lqa4Lqa4LqB4Lqz4LqZ4Lq74LqU4LuA4Lqt4LqHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i4Lqq4Lq14LqX4Lq14LuI4Lqa4LuN4LuI4Lqu4Lq54LuJ4LqI4Lqx4LqBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuC6geC6suC6meKAi+C6lOC6seC6lOKAi+C7geC6m+C6h+C6quC6tSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IuC6quC6sOC7geC6lOC6h+C7hOC6l+C6peC7jOC6geC6suC6meC6leC6seC7ieC6h+C6hOC7iOC6suC6lOC7iOC6p+C6mSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i4LuA4Lqb4Lq14LqU4LuD4LqK4LuJ4LqB4Lqy4LqZ4Lqb4LuI4Lq94LqZ4Lqq4Lq14LuB4Lqa4Lqa4LqB4Lqz4LqZ4Lq74LqU4LuA4Lqt4LqHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i4LqZ4Lqz4LuD4LqK4LuJIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IuC6ouC6t+C6meKAi+C6ouC6seC6meKAi+C6geC6suC6meKAi+C6leC6seC7ieC6h+KAi+C6hOC7iOC6siI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuC6muC6suC6h+C6geC6suC6meC6leC6seC7ieC6h+C6hOC7iOC6suC6quC6teC6quC6suC6oeC6suC6lOC7gOC6ruC6seC6lOC7g+C6q+C7ieC6reC6uOC6m+C6sOC6geC6reC6meC6meC6teC7ieC6muC7jeC7iOC6quC6suC6oeC6suC6lOC7g+C6iuC7ieC7hOC6lOC7iS4g4LqE4Lql4Lq04LqBIOC6leC6u+C6geC6peC6u+C6hyDgu4Dgup7gurfgu4jguq3guqLgurfgupnguqLgurHgupnguoHgurLgupngupXgurHgu4nguofguoTgu4jgurLguqrgurXgu4Dguqvgurzgurvgu4jgurLgupngurXgu4ksIOC6luC7ieC6suC6muC7jeC7iOC6lOC6seC7iOC6h+C6meC6seC7ieC6mSDguoHgurLgupngupXgurHgu4nguofguoTgu4jgurLgu4Dguqvgurzgurvgu4jgurLgupngurXgu4nguojgurDgupXgurHgu4nguofguoTgurfgupngu4Pgu53gu4gg4Lqr4Lq84Lqx4LqH4LqI4Lqy4LqBIDEwIOC6p+C6tOC6meC6suC6l+C6tS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sCmluZGV4IDQ4ODQwNWYuLjA0MDY2YTcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1sdC9zdHJpbmdzLnhtbApAQCAtMzAzLDggKzMwMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4icGFpZcWha2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ik5lcGF2eWtvIHBhbGVpc3RpIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iRGF1Z2lhdSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiJEYXIgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJIb3Jpem9udGFsdXMgc2thaWR5bWFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iVmVydGlrYWx1cyBza2FpZHltYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iVGlua2ludGFzIHNrYWlkeW1hcyI8L3N0cmluZz4KQEAgLTM2Nyw3ICszNjYsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJBa3VtdWxpYXRvcmlhdXMgdGF1c29qaW1vIHByaWVtb27ElyDEr2p1bmd0YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJTdW1hxb5pbmFtYXMgbmHFoXVtYXMgaXIgZm9uaW5pxbMgZHVvbWVuxbMgbmF1ZG9qaW1hcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iScWhanVuZ3RpIEFrdW11bGlhdG9yaWF1cyB0YXVzb2ppbW8gcHJpZW1vbsSZIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlR1cmlueXMgcGFzbMSXcHRhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4i4oCePHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPuKAnCBwcmFkxJdzIGZpa3N1b3RpIHZpc2vEhSwga2FzIHJvZG9tYSBqxatzxbMgZWtyYW5lLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJEYXVnaWF1IG5lYmVyb2R5dGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iVmlza8SFIGnFoXZhbHl0aSI8L3N0cmluZz4KQEAgLTQ1Miw0ICs0NTAsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4ixK5qdW5ndGkg4oCeQmx1ZXRvb3Ro4oCcPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJLYWQgZ2FsxJd0dW3El3RlIHByaWp1bmd0aSBrbGF2aWF0xatyxIUgcHJpZSBwbGFuxaFldGluaW8ga29tcGl1dGVyaW8sIHBpcm1pYXVzaWEgdHVyaXRlIMSvanVuZ3RpIOKAnkJsdWV0b290aOKAnC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLErmp1bmd0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IlRhaWt5dGkg4oCePHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+4oCcIHByYW5lxaFpbWFtcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IlRhaWt5dGkgdmlzaWVtcyBwcmFuZcWhaW1hbXMgacWhIMWhaW9zIHByb2dyYW1vcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJVxb5ibG9rdW90YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+Ik1hxb5hIHN2YXJiYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLErnByYXN0YSBzdmFyYmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iRGlkZWzElyBzdmFyYmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJTa3ViaSBzdmFyYmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik5pZWthZGEgbmVyb2R5dGkgxaFpxbMgcHJhbmXFoWltxbMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iVHlsaWFpIHJvZHl0aSBwcmFuZcWhaW3FsyBzxIVyYcWhbyBhcGHEjWlvamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlR5bGlhaSByb2R5dGkgxaFpdW9zIHByYW5lxaFpbXVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJSb2R5dGkgcHJhbmXFoWltxbMgc8SFcmHFoW8gdmlyxaF1amUgaXIgc2thbWLEl3RpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IlJvZHl0aSBla3JhbmUgaXIgc2thbWLEl3RpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4ixK5wcmFzdG9zIHNwYWx2b3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iTmFrdGllcyBzcGFsdm9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJUaW5raW50b3Mgc3BhbHZvcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+Ik5lxb5pbm9tb3Mgc3BhbHZvcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJTcGFsdsWzIGtlaXRpbWFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iUm9keXRpIFNwYXLEjWnFs2rFsyBudXN0YXR5bcWzIGnFoWtsb3RpbsSXcyBlbGVtZW50xIUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IsSuZ2FsaW50aSB0aW5raW50xIUgdHJhbnNmb3JtYXZpbcSFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iVGFpa3l0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJOdXN0YXR5bcWzIHBhdHZpcnRpbmltYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJExJdsIGthaSBrdXJpxbMgc3BhbHbFsyBudXN0YXR5bcWzIMSvcmVuZ2lueXMgZ2FsaSBixat0aSBuZXRpbmthbWFzIG5hdWRvdGkuIFNwdXN0ZWzEl2tpdGUg4oCeR2VyYWnigJwsIGthZCBwYXR2aXJ0aW50dW3El3RlIMWhaXVvcyBzcGFsdsWzIG51c3RhdHltdXMuIEtpdGFpcCDFoWllIG51c3RhdHltYWkgYnVzIG51c3RhdHl0aSBpxaEgbmF1am8gcG8gMTAgc2VrdW5kxb5pxbMuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbAppbmRleCBkYTk3NmU4Li42NDlkMDdiIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKQEAgLTMwMiw4ICszMDIsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+Ik1la2zEk3QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ik5ldmFyxJNqYSBwYWxhaXN0IGxpZXRvdG5pIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iVmFpcsSBayI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiJWxJNswqA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+Ikhvcml6b250xIFscyBkYWzEq2p1bXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJWZXJ0aWvEgWxzIGRhbMSranVtcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJQaWVsxIFnb3RzIGRhbMSranVtcyI8L3N0cmluZz4KQEAgLTM2Niw3ICszNjUsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJJZXNsxJNndHMgYWt1bXVsYXRvcmEgZW5lcsSjaWphcyB0YXVwxKvFoWFuYXMgcmXFvsSrbXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iU2FtYXppbmEgdmVpa3RzcMSTanUgdW4gZm9uYSBkYXR1cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iSXpzbMSTZ3QgYWt1bXVsYXRvcmEgamF1ZGFzIHRhdXDEq8WhYW51Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlNhdHVycyBwYXNsxJNwdHMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gc8SBa3MgdXrFhmVtdCB2aXN1LCBrYXMgdGlrcyByxIFkxKt0cyBqxatzdSBla3LEgW7EgS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iVmFpcnMgbmVyxIFkxKt0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkR6xJNzdCB2aXN1Ijwvc3RyaW5nPgpAQCAtNDUxLDQgKzQ0OSwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJWYWkgaWVzbMSTZ3QgQmx1ZXRvb3RoIHNhdmllbm9qdW11PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJMYWkgcGlldmllbm90dSB0YXN0YXTFq3J1IHBsYW7FoWV0ZGF0b3JhbSwgdmlzcGlybXMgaXIgasSBaWVzbMSTZHogQmx1ZXRvb3RoIHNhdmllbm9qdW1zLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+Ikllc2zEk2d0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iTGlldG90IHBhemnFhm9qdW1pZW0g4oCcPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+4oCdIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iTGlldG90IHZpc2llbSDFocSrcyBsaWV0b3RuZXMgcGF6acWGb2p1bWllbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJCbG/Et8STdHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJOYXYgc3ZhcsSrZ3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iUGFyYXN0cyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLEu290aSBzdmFyxKtncyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlN0ZWlkemFtcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iTmVrYWQgbmVyxIFkxKt0IMWhb3MgcGF6acWGb2p1bXVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlLEgWTEq3QgcGF6acWGb2p1bXUgc2FyYWtzdGEgYXBha8WhZGHEvMSBIGJleiBza2HFhmFzIHNpZ27EgWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJSxIFkxKt0IMWhb3MgcGF6acWGb2p1bXVzIGJleiBza2HFhmFzIHNpZ27EgWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJSxIFkxKt0IHBhemnFhm9qdW11IHNhcmFrc3RhIGF1Z8WhZGHEvMSBIHVuIGFyIHNrYcWGYXMgc2lnbsSBbHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iUsSBZMSrdCBla3LEgW7EgSBhciBza2HFhmFzIHNpZ27EgWx1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iUGFyYXN0YXMga3LEgXNhcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOYWt0cyBrcsSBc2FzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJQaWVsxIFnb3RhcyBrcsSBc2FzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iTmV6aW7EgW1hcyBrcsSBc2FzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IktyxIFzdSBwxIFydmVpZG/FoWFuYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IsSAdHJvIGllc3RhdMSranVtdSBlbGVtZW50YSByxIFkxKvFoWFuYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iUGllbMSBZ290xIFzIHDEgXJ2ZWlkb8WhYW5hcyBpZXNwxJNqb8WhYW5hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iTGlldG90Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+Ikllc3RhdMSranVtdSBhcHN0aXByaW7EgcWhYW5hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iTm90ZWlrdHUga3LEgXN1IGllc3RhdMSranVtdSBkxJPEvCDFocSrIGllcsSrY2UgdmFyIGvEvMWrdCBuZWxpZXRvamFtYS4gTGFpIGFwc3RpcHJpbsSBdHUgxaFvcyBrcsSBc3UgaWVzdGF0xKtqdW11cywgbm9rbGlrxaHEt2luaWV0IHV6IExhYmkuIEphIHRvIG5laXpkYXLEq3NpZXQsIHDEk2MgMTDCoHNla3VuZMSTbSDFoWllIGllc3RhdMSranVtaSB0aWtzIGF0aWVzdGF0xKt0aS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbWstck1LL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKaW5kZXggMTkxZGQ3OC4uOTI4YmJjZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tay1yTUsvc3RyaW5ncy54bWwKQEAgLTQyLDcgKzQyLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfY29uZmlybWF0aW9uX3RpdGxlIiBtc2dpZD0iNTI5OTU4NTQzMzA1MDM2MTYzNCI+ItCU0LDQu9C4INC00LAg0YHQtSDQstC60LvRg9GH0Lgg0YjRgtC10LTQsNGH0L7RgiDQvdCwINCx0LDRgtC10YDQuNGY0LA/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI3NTA3OTY4NDMwNDQ3OTMwMjU3Ij4i0JLQutC70YPRh9C4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9zdGFydF9hY3Rpb24iIG1zZ2lkPSI1NTc2Njk3NDUxNjc3NDg2MzIwIj4i0JLQutC70YPRh9C10YLQtSDQs9C+INGI0YLQtdC00LDRh9C+0YIg0L3QsCDQsdCw0YLQtdGA0LjRmNCwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9zZXR0aW5nc19zZXR0aW5nc19idXR0b24iIG1zZ2lkPSIzMDIzODg5OTE2Njk5MjcwMjI0Ij4i0J/QvtC00LXRgdGD0LLQsNGa0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX3NldHRpbmdzX3NldHRpbmdzX2J1dHRvbiIgbXNnaWQ9IjMwMjM4ODk5MTY2OTkyNzAyMjQiPiLQn9C+0YHRgtCw0LLQutC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9zZXR0aW5nc193aWZpX2J1dHRvbiIgbXNnaWQ9IjE3MzM5MjgxNTE2OTgzMTE5MjMiPiJXaS1GaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InN0YXR1c19iYXJfc2V0dGluZ3NfYXV0b19yb3RhdGlvbiIgbXNnaWQ9IjM3OTA0ODI1NDEzNTc3OTg0MjEiPiLQkNCy0YLQvtC80LDRgtGB0LrQviDRgNC+0YLQuNGA0LDRmtC1INC90LAg0LXQutGA0LDQvdC+0YIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX3NldHRpbmdzX211dGVfbGFiZWwiIG1zZ2lkPSI1NTQ2ODI1NDk5MTc0MjkzOTYiPiLQmNCh0JrQmy4iPC9zdHJpbmc+CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfbm9fc2ltcyIgbXNnaWQ9IjM5NTc5OTcwMTgzMjQ5OTU3ODEiPiLQndC10LzQsCDQodCY0Jwt0LrQsNGA0YLQuNGH0LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfY2Fycmllcl9uZXR3b3JrX2NoYW5nZV9tb2RlIiBtc2dpZD0iNDAxNzMwMTU4MDQ0MTMwNDMwNSI+ItCf0YDQvtC80LXQvdGD0LLQsNGa0LUg0L3QsCDQvNGA0LXQttCw0YLQsCDQvdCwINC+0L/QtdGA0LDRgtC+0YDQvtGCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfYmF0dGVyeV9sZXZlbCIgbXNnaWQ9Ijc0NTE0NzQxODcxMTMzNzE5NjUiPiLQkdCw0YLQtdGA0LjRmNCwIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDQv9GA0L7RhtC10L3RgtC4LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfc2V0dGluZ3NfYnV0dG9uIiBtc2dpZD0iNzk5NTgzOTExMjMxODkzMzgwIj4i0J/QvtC00LXRgdGD0LLQsNGa0LAg0L3QsCDRgdC40YHRgtC10LwuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYWNjZXNzaWJpbGl0eV9zZXR0aW5nc19idXR0b24iIG1zZ2lkPSI3OTk1ODM5MTEyMzE4OTMzODAiPiLQn9C+0YHRgtCw0LLQutC4INC90LAg0YHQuNGB0YLQtdC8LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfbm90aWZpY2F0aW9uc19idXR0b24iIG1zZ2lkPSI0NDk4MDAwMzY5Nzc5NDIxODkyIj4i0JjQt9Cy0LXRgdGC0YPQstCw0ZrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfcmVtb3ZlX25vdGlmaWNhdGlvbiIgbXNnaWQ9IjM2MDMwOTk1MTQ5MDIxODIzNTAiPiLQmNC30LHRgNC40YjQuCDQuNC30LLQtdGB0YLRg9Cy0LDRmtC1LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfZ3BzX2VuYWJsZWQiIG1zZ2lkPSIzNTExNDY5NDk5MjQwMTIzMDE5Ij4i0JPQn9ChINC1INC+0LLQvtC30LzQvtC20LXQvS4iPC9zdHJpbmc+CkBAIC0yNjAsNyArMjYwLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InF1aWNrX3NldHRpbmdzX21lZGlhX2RldmljZV9sYWJlbCIgbXNnaWQ9IjEzMDI5MDY4MzYzNzI2MDM3NjIiPiLQnNC10LTQuNGD0LzRgdC60Lgg0YPRgNC10LQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJxdWlja19zZXR0aW5nc19yc3NpX2xhYmVsIiBtc2dpZD0iNzcyNTY3MTMzNTU1MDY5NTU4OSI+IlJTU0kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJxdWlja19zZXR0aW5nc19yc3NpX2VtZXJnZW5jeV9vbmx5IiBtc2dpZD0iMjcxMzc3NDA0MTY3Mjg4Njc1MCI+ItCh0LDQvNC+INC40YLQvdC4INC/0L7QstC40YbQuCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InF1aWNrX3NldHRpbmdzX3NldHRpbmdzX2xhYmVsIiBtc2dpZD0iNTMyNjU1NjU5MjU3ODA2NTQwMSI+ItCf0L7QtNC10YHRg9Cy0LDRmtCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icXVpY2tfc2V0dGluZ3Nfc2V0dGluZ3NfbGFiZWwiIG1zZ2lkPSI1MzI2NTU2NTkyNTc4MDY1NDAxIj4i0J/QvtGB0YLQsNCy0LrQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InF1aWNrX3NldHRpbmdzX3RpbWVfbGFiZWwiIG1zZ2lkPSI0NjM1OTY5MTgyMjM5NzM2NDA4Ij4i0JLRgNC10LzQtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InF1aWNrX3NldHRpbmdzX3VzZXJfbGFiZWwiIG1zZ2lkPSI1MjM4OTk1NjMyMTMwODk3ODQwIj4i0IjQsNGBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icXVpY2tfc2V0dGluZ3NfdXNlcl90aXRsZSIgbXNnaWQ9IjQ0Njc2OTA0Mjc2NDIzOTI0MDMiPiLQmtC+0YDQuNGB0L3QuNC6Ijwvc3RyaW5nPgpAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4i0L/RgNC10LHQsNGA0LDRmCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+INC90LUg0LzQvtC20LUg0LTQsCDRgdC1INCy0LrQu9GD0YfQuC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i0J/QvtCy0LXRnNC1Ijwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+ItCj0YjRgtC1IDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i0KDQsNC30LTQtdC70Lgg0YXQvtGA0LjQt9C+0L3RgtCw0LvQvdC+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i0KDQsNC30LTQtdC70Lgg0LLQtdGA0YLQuNC60LDQu9C90L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i0KDQsNC30LTQtdC70Lgg0L/RgNC40LvQsNCz0L7QtNC10L3QviI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLQqNGC0LXQtNCw0YfQvtGCINC90LAg0LHQsNGC0LXRgNC40ZjQsCDQtSDQstC60LvRg9GH0LXQvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLQiNCwINC90LDQvNCw0LvRg9Cy0LAg0LjQt9Cy0LXQtNCx0LDRgtCwINC4INC/0L7QtNCw0YLQvtGG0LjRgtC1INCy0L4g0LfQsNC00L3QuNC90LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+ItCY0YHQutC70YPRh9C10YLQtSDQs9C+INGI0YLQtdC00LDRh9C+0YIg0L3QsCDQsdCw0YLQtdGA0LjRmNCwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+ItCh0L7QtNGA0LbQuNC90LjRgtC1INGB0LUg0YHQutGA0LjQtdC90LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g0ZzQtSDQt9Cw0L/QvtGH0L3QtSDQtNCwINC/0YDQtdC30LXQvNCwINGB0ZAg0YjRgtC+INGB0LUg0L/RgNC40LrQsNC20YPQstCwINC90LAg0LLQsNGI0LjQvtGCINC10LrRgNCw0L0uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+ItCd0LUg0L/QvtC60LDQttGD0LLQsNGYINC/0L7QstGC0L7RgNC90L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i0JjRgdGH0LjRgdGC0Lgg0YHDqCI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4i0JTQsCDRgdC1INCy0LrQu9GD0YfQuCBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+ItCX0LAg0LTQsCDRmNCwINC/0L7QstGA0LfQtdGC0LUg0YLQsNGB0YLQsNGC0YPRgNCw0YLQsCDRgdC+INGC0LDQsdC70LXRgtC+0YIsINC90LDRmNC/0YDQstC+INGC0YDQtdCx0LAg0LTQsCDQstC60LvRg9GH0LjRgtC1IEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLQktC60LvRg9GH0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLQktCw0LbQuCDQt9CwINC40LfQstC10YHRgtGD0LLQsNGa0LDRgtCwINC30LAgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i0JLQsNC20Lgg0LfQsCDRgdC40YLQtSDQuNC30LLQtdGB0YLRg9Cy0LDRmtCwINC+0LQg0L7QstCw0LAg0LDQv9C70LjQutCw0YbQuNGY0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i0JHQu9C+0LrQuNGA0LDQvdC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i0JzQsNC70LAg0LLQsNC20L3QvtGB0YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i0J3QvtGA0LzQsNC70L3QsCDQstCw0LbQvdC+0YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLQk9C+0LvQtdC80LAg0LLQsNC20L3QvtGB0YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLQmNGC0L3QsCDQstCw0LbQvdC+0YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i0J3QuNC60L7Qs9Cw0Ygg0L3QtSDQs9C4INC/0YDQuNC60LDQttGD0LLQsNGYINC40LfQstC10YHRgtGD0LLQsNGa0LDQstCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+ItCi0LjQstC60L4g0L/RgNC40LrQsNC20YPQstCw0Zgg0LPQuCDQvdCwINC00L3QvtGC0L4g0L3QsCDRgdC/0LjRgdC+0LrQvtGCINGB0L4g0LjQt9Cy0LXRgdGC0YPQstCw0ZrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i0KLQuNCy0LrQviDQv9GA0LjQutCw0LbRg9Cy0LDRmCDQs9C4INC40LfQstC10YHRgtGD0LLQsNGa0LDQstCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLQn9GA0LjQutCw0LbRg9Cy0LDRmCDQs9C4INC90LAg0LLRgNCy0L7RgiDQvdCwINGB0L/QuNGB0L7QutC+0YIg0YHQviDQuNC30LLQtdGB0YLRg9Cy0LDRmtCwINC4INC00LDRmCDQt9Cy0YPRh9C10L0g0YHQuNCz0L3QsNC7Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+ItCf0L7RmNCw0LLQuCDRgdC1INC90LAg0LXQutGA0LDQvdC+0YIg0Lgg0LTQsNGYINC30LLRg9GH0LXQvSDRgdC40LPQvdCw0LsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLQndC+0YDQvNCw0LvQvdC4INCx0L7QuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLQndC+0ZzQvdC4INCx0L7QuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i0J/RgNC40YHQv9C+0YHQvtCx0LXQvdC4INCx0L7QuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+ItCd0LXQv9C+0LfQvdCw0YLQuCDQsdC+0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i0J/RgNC+0LzQtdC90LAg0L3QsCDQsdC+0ZjQsNGC0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLQn9GA0LjQutCw0LbQuCDQv9C70L7Rh9C60LAg0JHRgNC30Lgg0L/QvtGB0YLQsNCy0LrQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i0J7QstC+0LfQvNC+0LbQuCDQv9GA0LjRgdC/0L7RgdC+0LHQtdC90L4g0YLRgNCw0L3RgdGE0L7RgNC80LjRgNCw0ZrQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+ItCf0YDQuNC80LXQvdC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+ItCf0L7RgtCy0YDQtNC10YLQtSDQs9C4INC/0L7RgdGC0LDQstC60LjRgtC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i0J3QtdC60L7QuCDQv9C+0YHRgtCw0LLQutC4INC90LAg0LHQvtC40YLQtSDQvNC+0LbQtSDQtNCwINCz0L4g0L3QsNC/0YDQsNCy0LDRgiDRg9GA0LXQtNC+0YIg0L3QtdGD0L/QvtGC0YDQtdCx0LvQuNCyLiDQmtC70LjQutC90LXRgtC1INC90LAg0JLQviDRgNC10LQg0LfQsCDQtNCwINCz0Lgg0L/QvtGC0LLRgNC00LjRgtC1INC+0LLQuNC1INC/0L7RgdGC0LDQstC60Lgg0L3QsCDQsdC+0LjRgtC1LCDQuNC90LDQutGDINGC0LjQtSDQv9C+0YHRgtCw0LLQutC4INGc0LUg0YHQtSDRgNC10YHQtdGC0LjRgNCw0LDRgiDQv9C+IDEwINGB0LXQutGD0L3QtNC4LiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW1sLXJJTi9zdHJpbmdzLnhtbAppbmRleCBjNTdiOWZmNy4uMmY0YjgxYSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tbC1ySU4vc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuC0pOC0v+C0sOC0r+C1geC0lSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOC0huC0sOC0guC0reC0v+C0leC1jeC0leC0vuC0qOC0vuC0r+C0v+C0suC1jeC0si4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i4LSV4LWC4LSf4LWB4LSk4LW9Ijwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDgtI7gtKPgtY3gtKPgtIIg4LSV4LWC4LSf4LS/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLgtKTgtL/gtLDgtLbgtY3gtJrgtYDgtKjgtK7gtL7gtK/gtL8g4LS14LWH4LW84LSk4LS/4LSw4LS/4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i4LSy4LSC4LSs4LSu4LS+4LSv4LS/IOC0teC1h+C1vOC0pOC0v+C0sOC0v+C0leC1jeC0leC1geC0lSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLgtIfgtLfgtY3igIzgtJ/gtL7gtKjgtYHgtLjgtYPgtKTgtK7gtL7gtK/gtL8g4LS14LWH4LW84LSk4LS/4LSw4LS/4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuC0rOC0vuC0seC1jeC0seC0seC0vyDgtLjgtYfgtLXgtbwg4LST4LSj4LS+4LSj4LWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IuC0quC1jeC0sOC0teC1vOC0pOC1jeC0pOC0qOC0teC1geC0giDgtKrgtLbgtY3gtJrgtL7gtKTgtY3gtKTgtLIg4LSh4LS+4LSx4LWN4LSx4LSv4LWB4LSCIOC0leC1geC0seC0r+C1jeKAjOC0leC1jeC0leC1geC0qOC1jeC0qOC1gSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i4LSs4LS+4LSx4LWN4LSx4LSx4LS/IOC0uOC1h+C0teC1vCDgtJPgtKvgtL7gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4LSV4LWL4LW64LSf4LS+4LSV4LWN4oCM4LSx4LWN4LSx4LWB4LSV4LW+IOC0ruC0seC0muC1jeC0muC1gSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4i4LSo4LS/4LSZ4LWN4LSZ4LSz4LWB4LSf4LWGIOC0uOC1jeC0leC1jeC0sOC1gOC0qOC0v+C1vSDgtKrgtY3gtLDgtKbgtbzgtLbgtL/gtKrgtY3gtKrgtL/gtJrgtY3gtJrgtL/gtLDgtL/gtJXgtY3gtJXgtYHgtKjgtY3gtKgg4LSO4LSy4LWN4LSy4LS+IOC0leC0vuC0sOC1jeC0r+C0meC1jeC0meC0s+C1geC0giA8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IOC0leC1jeC0r+C0vuC0quC1jeKAjOC0muC1vCDgtJrgtYbgtK/gtY3gtK/gtYHgtKjgtY3gtKjgtKTgtY0g4LSG4LSw4LSC4LSt4LS/4LSV4LWN4LSV4LWB4LSCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgtLXgtYDgtKPgtY3gtJ/gtYHgtIIg4LSV4LS+4LSj4LS/4LSV4LWN4LSV4LSw4LWB4LSk4LWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuC0juC0suC1jeC0suC0vuC0giDgtK7gtL7gtK/gtY3igIzgtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IkJsdWV0b290aCDgtJPgtKPgtL7gtJXgtY3gtJXgtKPgtYs/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuC0qOC0v+C0meC1jeC0meC0s+C1geC0n+C1hiDgtJ/gtL7gtKzgtY3igIzgtLLgtYbgtLHgtY3gtLHgtYHgtK7gtL7gtK/gtL8g4LSV4LWA4LSs4LWL4LW84LSh4LWNIOC0leC0o+C0leC1jeC0seC1jeC0seC1geC0muC1huC0r+C1jeC0r+C1geC0qOC1jeC0qOC0pOC0v+C0qOC1jSwg4LSG4LSm4LWN4LSv4LSCIEJsdWV0b290aCDgtJPgtKPgtL7gtJXgtY3gtJXgtYfgtKPgtY3gtJ/gtKTgtYHgtKPgtY3gtJ/gtY0uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i4LST4LSj4LS+4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IOC0heC0seC0v+C0r+C0v+C0quC1jeC0quC1geC0leC0s+C0v+C0suC1h+C0leC1jeC0leC1jSDgtKrgtY3gtLDgtK/gtYvgtJfgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiLgtIgg4LSG4LSq4LWN4LSq4LS/4LW9IOC0qOC0v+C0qOC1jeC0qOC1geC0s+C1jeC0syDgtI7gtLLgtY3gtLLgtL4g4LSF4LSx4LS/4LSv4LS/4LSq4LWN4LSq4LWB4LSV4LSz4LS/4LSy4LWH4LSV4LWN4LSV4LWB4LSCIOC0quC1jeC0sOC0r+C1i+C0l+C0v+C0leC1jeC0leC1geC0lSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLgtKzgtY3gtLLgtYvgtJXgtY3gtJXgtYHgtJrgtYbgtK/gtY3gtKTgtYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLgtKTgtL7gtLTgtY3gtKjgtY3gtKgg4LSq4LWN4LSw4LS+4LSn4LS+4LSo4LWN4LSv4LSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuC0uOC0vuC0p+C0vuC0sOC0oyDgtKrgtY3gtLDgtL7gtKfgtL7gtKjgtY3gtK/gtIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i4LSJ4LSv4LW84LSo4LWN4LSoIOC0quC1jeC0sOC0vuC0p+C0vuC0qOC1jeC0r+C0giI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuC0heC0n+C0v+C0r+C0qOC1jeC0pOC0sCDgtKrgtY3gtLDgtL7gtKfgtL7gtKjgtY3gtK/gtIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuC0iCDgtIXgtLHgtL/gtK/gtL/gtKrgtY3gtKrgtYHgtJXgtb4g4LSS4LSw4LS/4LSV4LWN4LSV4LSy4LWB4LSCIOC0leC0vuC0o+C0v+C0leC1jeC0leC0sOC1geC0pOC1jSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLgtIXgtLHgtL/gtK/gtL/gtKrgtY3gtKrgtY0g4LSy4LS/4LS44LWN4LSx4LWN4LSx4LS/4LSo4LWN4LSx4LWGIOC0pOC0vuC0tOC1hiDgtLbgtKzgtY3gtKbgtK7gtYHgtKPgtY3gtJ/gtL7gtJXgtY3gtJXgtL7gtKTgtYYg4LSV4LS+4LSj4LS/4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLgtIgg4LSF4LSx4LS/4LSv4LS/4LSq4LWN4LSq4LWB4LSV4LW+IOC0qOC0v+C0tuC0rOC1jeC0puC0ruC0vuC0r+C0vyDgtJXgtL7gtKPgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuC0heC0seC0v+C0r+C0v+C0quC1jeC0quC1jSDgtLLgtL/gtLjgtY3gtLHgtY3gtLHgtL/gtKjgtY3gtLHgtYYg4LSP4LSx4LWN4LSx4LS14LWB4LSCIOC0ruC1geC0leC0s+C0v+C1vSDgtJXgtL7gtKPgtL/gtJXgtY3gtJXgtYHgtJUsIOC0tuC0rOC1jeC0puC0ruC1geC0o+C1jeC0n+C0vuC0leC1jeC0leC1geC0lSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLgtLjgtY3gtJXgtY3gtLDgtYDgtKjgtL/gtb0g4LSm4LWD4LS24LWN4LSv4LSu4LS+4LSV4LWN4LSV4LWB4LSVLCDgtLbgtKzgtY3gtKbgtK7gtYHgtKPgtY3gtJ/gtL7gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLgtLjgtL7gtKfgtL7gtLDgtKMg4LS14LSw4LWN4oCN4LSj4LWN4LSj4LSZ4LWN4LSZ4LW+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuC0sOC0vuC0pOC1jeC0sOC0vyDgtLXgtLDgtY3igI3gtKPgtY3gtKPgtJngtY3gtJngtb4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuC0h+C0t+C1jeC0n+C0vuC0qOC1geC0uOC1g+C0pCDgtLXgtLDgtY3igI3gtKPgtY3gtKPgtJngtY3gtJngtb4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLgtKTgtL/gtLDgtL/gtJrgtY3gtJrgtLHgtL/gtK/gtL7gtKjgtL7gtJXgtL7gtKTgtY3gtKQg4LS14LW84LSj4LWN4LSj4LSZ4LWN4LSZ4LW+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuC0teC1vOC0o+C1jeC0oyDgtKrgtLDgtL/gtLfgtY3gtJXgtLDgtKPgtIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLgtKbgtY3gtLDgtYHgtKQg4LSV4LWN4LSw4LSu4LWA4LSV4LSw4LSjIOC0n+C1iOC1vSDgtJXgtL7gtKPgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuC0h+C0t+C1jeC0n+C0vuC0qOC1geC0uOC1g+C0pCDgtKrgtLDgtL/gtLXgtbzgtKTgtY3gtKTgtKjgtIIg4LSq4LWN4LSw4LS14LW84LSk4LWN4LSk4LSo4LSV4LWN4LS34LSu4LSu4LS+4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i4LSs4LS+4LSn4LSV4LSu4LS+4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IuC0leC1jeC0sOC0ruC1gOC0leC0sOC0o+C0giDgtLjgtY3gtKXgtL/gtLDgtYDgtJXgtLDgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLgtJrgtL/gtLIg4LS14LW84LSj4LWN4LSjIOC0leC1jeC0sOC0ruC1gOC0leC0sOC0o+C0pOC1jeC0pOC0v+C0qOC1jSDgtIgg4LSJ4LSq4LSV4LSw4LSj4LSk4LWN4LSk4LWGIOC0ieC0quC0r+C1i+C0l+C0sOC0ueC0v+C0pOC0ruC0vuC0leC1jeC0leC0vuC0qOC0vuC0leC1geC0gi4g4LSIIOC0teC1vOC0o+C1jeC0oyDgtJXgtY3gtLDgtK7gtYDgtJXgtLDgtKPgtIIg4LS44LWN4LSl4LS/4LSw4LWA4LSV4LSw4LS/4LSV4LWN4LSV4LWB4LSo4LWN4LSo4LSk4LS/4LSo4LWNIOC0tuC0sOC0vyDgtI7gtKjgtY3gtKjgtKTgtL/gtb0g4LSV4LWN4LSy4LS/4LSV4LWN4LSV4LWB4LSa4LWG4LSv4LWN4LSv4LWB4LSVLCDgtIXgtLLgtY3gtLLgtYbgtJngtY3gtJXgtL/gtb0gMTAg4LS44LWG4LSV4LWN4LSV4LW74LSh4LS/4LSo4LWNIOC0tuC1h+C0t+C0giDgtIgg4LSV4LWN4LSw4LSu4LWA4LSV4LSw4LSj4LSCIOC0quC1geC0qOC0g+C0leC1jeC0sOC0ruC1gOC0leC0sOC0v+C0leC1jeC0leC0quC1jeC0quC1huC0n+C1geC0gi4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbW4tck1OL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKaW5kZXggNTc5N2RjNy4uM2RkMDg0ZSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tbi1yTU4vc3RyaW5ncy54bWwKQEAgLTI5OSw4ICsyOTksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ItGF0LDQudGFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4t0LMg0Y3RhdC70q/Sr9C70LYg0YfQsNC00YHQsNC90LPSr9C5LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLQmNC70q/SryI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4g0JjQu9Kv0q8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+ItCl0Y3QstGC0Y3RjcKg0YfQuNCz0LvRjdC70LQg0YXRg9Cy0LDQsNGFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i0JHQvtGB0L7QviDRh9C40LPQu9GN0LvQtCDRhdGD0LLQsNCw0YUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i0KXSr9GB0YHRjdC9INGF0Y3Qu9Cx0Y3RgNGN0Y3RgCDRhdGD0LLQsNCw0YUiPC9zdHJpbmc+CkBAIC0zNjMsNyArMzYyLDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i0JHQsNGC0LXRgNC10Lkg0YXRjdC80L3RjdCz0Ycg0LDRgdCw0LDQu9GC0YLQsNC5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+ItCQ0LbQuNC70LvQsNCz0LDQsCDQsdC+0LvQvtC9INC00LDQu9C0INC00LDRgtCw0LMg0LHRg9GD0YDRg9GD0LvQvdCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLQkdCw0YLQtdGA0LXQuSDRhdGN0LzQvdGN0LPRh9C40LnQsyDRg9C90YLRgNCw0LDRhSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLQmtC+0L3RgtC10L3RgtGL0LMg0L3Rg9GD0YHQsNC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+INGC0LDQvdGLINC00Y3Qu9Cz0Y3RhiDQtNGN0Y3RgCDQs9Cw0YDQs9Cw0YHQsNC9INCx0q/RhSDQt9Kv0LnQu9C40LnQvSDQt9GD0YDQs9C40LnQsyDQsNCy0Ycg0Y3RhdGN0LvQvdGNLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLQlNCw0YXQuNC2INKv0Lsg0YXQsNGA0YPRg9C70LDRhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLQkdKv0LPQtNC40LnQsyDQsNGA0LjQu9Cz0LDRhSI8L3N0cmluZz4KQEAgLTQ0OCw0ICs0NDYsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3RoLdCzINCw0YHQsNCw0YUg0YPRgz8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i0JrQvtC80L/RjNGO0YLQtdGA0LjQudC9INCz0LDRgNCw0LAg0YLQsNCx0LvQtdGC0LDQtCDRhdC+0LvQsdC+0YXRi9C9INGC0YPQu9C0INGN0YXQu9GN0Y3QtCBCbHVldG9vdGgt0LMg0LDRgdCw0LDQvdCwINGD0YMuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i0JDRgdCw0LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDQvNGN0LTRjdCz0LTRjdC70LQg0YXRjdGA0Y3Qs9C20q/Sr9C70Y3RhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+ItCt0L3RjSDQsNC/0L8t0L0g0LHSr9GFINC80Y3QtNGN0LPQtNGN0LvQtCDRhdGN0YDRjdCz0LbSr9Kv0LvRjdGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+ItCR0LvQvtC60LvQvtGB0L7QvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+ItCR0LDQs9CwINCw0Ycg0YXQvtC70LHQvtCz0LTQvtC70YLQvtC5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+ItCt0L3Qs9C40LnQvSDQsNGHINGF0L7Qu9Cx0L7Qs9C00L7Qu9GC0L7QuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLTqNC90LTTqdGAINCw0Ycg0YXQvtC70LHQvtCz0LTQvtC70YLQvtC5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i0K/QsNGA0LDQu9GC0LDQuSDQsNGHINGF0L7Qu9Cx0L7Qs9C00L7Qu9GC0L7QuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i0K3QtNCz0Y3RjdGAINC80Y3QtNGN0LPQtNC70LjQudCzINGF0Y3Qt9GN0Y0g0Ycg0YXQsNGA0YPRg9C70LDRhdCz0q/QuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLQnNGN0LTRjdCz0LTQu9C40LnQsyDQttCw0LPRgdCw0LDQu9GC0YvQvSDQtNC+0L7QtCDRhdGN0YHRjdCz0YIg0LTRg9GD0LPSr9C5INGF0LDRgNGD0YPQu9Cw0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+ItCt0LTQs9GN0Y3RgCDQvNGN0LTRjdCz0LTQu9C40LnQsyDQtNGD0YPQs9Kv0Lkg0YXQsNGA0YPRg9C70LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i0JzRjdC00Y3Qs9C00LvQuNC50LMg0LbQsNCz0YHQsNCw0LvRgtGL0L0g0Y3RhdGN0L3QtCDQtNGD0YPRgtCw0Lkg0YXQsNGA0YPRg9C70LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLQlNGN0LvQs9GN0YbRjdC90LQg0Y/QsNGA0LDQu9GC0LDQudCz0LDQsNGAINC00YPRg9GC0LDQuSDQs9Cw0YDQs9Cw0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLQpdGN0LLQuNC50L0g06nQvdCz06kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i0KjTqdC90LjQudC9INOp0L3Qs9OpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLTqNCz06nQs9C00LzTqdC7INOp0L3Qs9OpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i0q7QuyDQvNGN0LTRjdCz0LTRjdGFINOp0L3Qs9OpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+ItOo0L3Qs9Op0L3QuNC5INOp06nRgNGH0LvTqdC70YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLQotKv0YDQs9GN0L0g0YLQvtGF0LjRgNCz0L7QvtC90Ysg0YXRjdGB0LPQuNC50LMg0YXQsNGA0YPRg9C70LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i06jQs9Op0LPQtNC806nQuyDTqdOp0YDRh9C706nQu9GC0LjQudCzINC40LTRjdCy0YXQttKv0q/Qu9GN0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLQpdGN0YDRjdCz0LbSr9Kv0LvRjdGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+ItCi0L7RhdC40YDQs9C+0L7QsyDQsdCw0YLQsNC70LPQsNCw0LbRg9GD0LvQsNGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i0JfQsNGA0LjQvCDTqdC90LPTqdC90LjQuSDRgtC+0YXQuNGA0LPQvtC+INGN0L3RjSDRgtOp0YXTqdOp0YDTqdC80LbQuNC50LMg0LDRiNC40LPQu9Cw0YUg0LHQvtC70L7QvNC20LPSr9C5INCx0L7Qu9Cz0L7QtiDQsdC+0LvQt9C+0YjQs9Kv0LkuIE9LINGC0L7QstGH0LvRg9GD0YDRi9CzINC00LDRgNC2INGN0LTQs9GN0Y3RgCDTqdC90LPTqdC90LjQuSDRgtC+0YXQuNGA0LPQvtC+0LMg0LfTqdCy0YjTqdOp0YDTqdGF0LPSr9C5INCx0L7QuyDRjdC90Y0g0YLQvtGF0LjRgNCz0L7QviDQvdGMIDEwINGB0LXQutGD0L3QtNGL0L0g0LTQsNGA0LDQsCDRiNC40L3RjdGH0LvRjdCz0LTRjdGFINCx0L7Qu9C90L4uIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW1yLXJJTi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbXItcklOL3N0cmluZ3MueG1sCmluZGV4IDJkNDYwZDkuLjU5ZWFkZjEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbXItcklOL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbXItcklOL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLgpLbgpYvgpKfgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDgpKrgpY3gpLDgpL7gpLDgpILgpK0g4KSV4KSw4KSj4KWHIOCktuCkleCljeCkryDgpJ3gpL7gpLLgpYcg4KSo4KS+4KS54KWALiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLgpIXgpKfgpL/gpJUiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4i4KSG4KSj4KSW4KWAIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i4KSV4KWN4KS34KWI4KSk4KS/4KScIOCkteCkv+CkreCkvuCknOCkv+CkpCDgpJXgpLDgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLgpIXgpKjgpYHgpLLgpILgpKwg4KS14KS/4KSt4KS+4KSc4KS/4KSkIOCkleCksOCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLgpLjgpL7gpKjgpYHgpJXgpYLgpLIg4KS14KS/4KSt4KS+4KSc4KS/4KSkIOCkleCksOCkviI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLgpKzgpYXgpJ/gpLDgpYAg4KSs4KSa4KSk4KSV4KSw4KWN4KSk4KS+IOCkmuCkvuCksuClgiDgpIbgpLngpYciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i4KSV4KS+4KSw4KWN4KSv4KSq4KWN4KSw4KSm4KSw4KWN4KS24KSoIOCkhuCko+CkvyDgpKrgpL7gpLDgpY3gpLbgpY3gpLXgpK3gpYLgpK7gpYAg4KSh4KWH4KSf4KS+IOCkleCkruClgCDgpJXgpLDgpKTgpYciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuCkrOClheCkn+CksOClgCDgpKzgpJrgpKTgpJXgpLDgpY3gpKTgpL4g4KSs4KSC4KSmIOCkleCksOCkviI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLgpLLgpKrgpLXgpL/gpLLgpYfgpLLgpYAg4KS44KS+4KSu4KSX4KWN4KSw4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IOCkhuCkquCksuCljeKAjeCkr+CkviDgpLjgpY3igI3gpJXgpY3gpLDgpYDgpKjgpLXgpLAg4KSq4KWN4KSw4KSm4KSw4KWN4KS24KS/4KSkIOCkueCli+Cko+CkvuCksOClgCDgpKrgpY3gpLDgpKTgpY3igI3gpK/gpYfgpJUg4KSX4KWL4KS34KWN4oCN4KSfIOCkleClheCkquCljeKAjeCkmuCksCDgpJXgpLDgpKPgpYcg4KSq4KWN4KSw4KS+4KSw4KSC4KStIOCkleCksOClh+Cksi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i4KSq4KWB4KSo4KWN4KS54KS+IOCkpuCksOCljeCktuCkteClgiDgpKjgpJXgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i4KS44KSw4KWN4KS1IOCkuOCkvuCkqyDgpJXgpLDgpL4iPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuCkrOCljeCksuClguCkn+ClgeCkpSDgpLjgpYHgpLDgpYIg4KSV4KSw4KS+4KSv4KSa4KWHPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLgpIbgpKrgpLLgpL4g4KSV4KWA4KSs4KWL4KSw4KWN4KShIOCkhuCkquCksuCljeCkr+CkviDgpJ/gpYXgpKzgpY3gpLLgpYfgpJ/gpLjgpLkg4KSV4KSo4KWH4KSV4KWN4KSfIOCkleCksOCko+CljeCkr+CkvuCkuOCkvuCkoOClgCwg4KSG4KSq4KSy4KWN4KSv4KS+4KSy4KS+IOCkquCljeCksOCkpeCkriDgpKzgpY3gpLLgpYLgpJ/gpYHgpKUg4KSa4KS+4KSy4KWCIOCkleCksOCko+ClhyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSG4KS54KWHLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuCkmuCkvuCksuClgiDgpJXgpLDgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiI8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4g4KS44KWC4KSa4KSo4KS+4KSC4KS14KSwIOCksuCkvuCkl+ClgiDgpJXgpLDgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiLgpK/gpL4g4KSF4KWF4KSq4KSu4KSn4KWA4KSyIOCkuOCksOCljeCktSDgpLjgpYLgpJrgpKjgpL7gpILgpLXgpLAg4KSy4KS+4KSX4KWCIOCkleCksOCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLgpIXgpLXgpLDgpYvgpKfgpL/gpKQg4KSV4KWH4KSy4KWHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4KSV4KSu4KWAIOCkruCkueCkpOCljeCkpOCljeCktSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLgpLjgpL7gpK7gpL7gpKjgpY3gpK8g4KSu4KS54KSk4KWN4KSk4KWN4KS1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IuCkuOCksOCljeCkteCkvuCkp+Ckv+CklSDgpK7gpLngpKTgpY3gpLUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLgpKTgpY3gpLXgpLDgpL/gpKQg4KSu4KS54KSk4KWN4KSk4KWN4KS1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLgpK/gpL4g4KS44KWC4KSa4KSo4KS+IOCkleCkp+ClgOCkueClgCDgpKbgpLDgpY3gpLbgpLXgpYIg4KSo4KSV4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IuCkuOClguCkmuCkqOCkviDgpLjgpYLgpJrgpYDgpJrgpY3gpK/gpL4g4KSk4KSz4KS+4KS24KWAIOCktuCkvuCkguCkpOCkquCko+ClhyDgpKbgpLDgpY3gpLbgpLXgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuCkr+CkviDgpLjgpYLgpJrgpKjgpL4g4KS24KS+4KSC4KSk4KSq4KSj4KWHIOCkpuCksOCljeCktuCkteCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i4KS44KWC4KSa4KSo4KS+IOCkuOClguCkmuClgOCkmuCljeCkr+CkviDgpLbgpYDgpLDgpY3gpLfgpLjgpY3gpKXgpL7gpKjgpYAg4KSm4KSw4KWN4KS24KS14KS+IOCkhuCko+CkvyDgpKfgpY3gpLXgpKjgpYAg4KSa4KS+4KSy4KWCIOCkleCksOCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLgpLjgpY3gpJXgpY3gpLDgpYDgpKjgpLXgpLAg4KSh4KWL4KSV4KS+4KS14KWC4KSoIOCkquCkueCkviDgpIbgpKPgpL8g4KSn4KWN4KS14KSo4KWAIOCkmuCkvuCksuClgiDgpJXgpLDgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLgpLjgpL7gpK7gpL7gpKjgpY3gpK8g4KSw4KSC4KSXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuCksOCkvuCkpOCljeCksOClgOCkmuClhyDgpLDgpILgpJciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuCkuOCkvuCkqOClgeCkleClguCksiDgpLDgpILgpJciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLgpIXgpJzgpY3gpJ7gpL7gpKQg4KSw4KSC4KSXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuCksOCkguCklyDgpLjgpYHgpKfgpL7gpLDgpKPgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLgpKbgpY3gpLDgpYHgpKQg4KS44KWH4KSf4KS/4KSC4KSX4KWN4KScIOCkn+CkvuCkh+CksiDgpKbgpLDgpY3gpLbgpLXgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuCkuOCkvuCkqOClgeCkleClguCksiDgpLDgpYLgpKrgpL7gpILgpKTgpLDgpKMg4KS44KSV4KWN4KS34KSuIOCkleCksOCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IuCksuCkvuCkl+ClgiDgpJXgpLDgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4KS44KWH4KSf4KS/4KSC4KSX4KWN4KSc4KSa4KWAIOCkquClgeCkt+CljeCkn+ClgCDgpJXgpLDgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLgpJXgpL7gpLngpYAg4KSw4KSC4KSXIOCkuOClh+Ckn+Ckv+CkguCkl+CljeCknCDgpK/gpL4g4KSh4KS/4KS14KWN4KS54KS+4KSH4KS44KSy4KS+IOCkqOCkv+CksOClgeCkquCkr+Cli+Ckl+ClgCDgpJXgpLDgpYIg4KS24KSV4KSk4KS+4KSkLiDgpK/gpL4g4KSw4KSC4KSXIOCkuOClh+Ckn+Ckv+CkguCkl+CljeCknOCkmuClgCDgpKrgpYHgpLfgpY3gpJ/gpYAg4KSV4KSw4KSj4KWN4oCN4KSv4KS+4KS44KS+4KSg4KWAIOCkoOClgOCklSDgpIbgpLngpYcg4KSm4KS+4KSs4KS+IOCkheCkqOCljeCkr+CkpeCkviDgpK/gpL4g4KS44KWH4KSf4KS/4KSC4KSX4KWN4KScIDEwIOCkuOClh+CkleCkguCkpuCkvuCkguCkqOCkguCkpOCksCDgpLDgpYDgpLjgpYfgpJ8g4KS54KWL4KSk4KWA4KSyLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1tcy1yTVkvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW1zLXJNWS9zdHJpbmdzLnhtbAppbmRleCAzZmMxZDA1Li41ZGQyMjFhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW1zLXJNWS9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW1zLXJNWS9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4iY2FyaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iVGlkYWsgZGFwYXQgbWVtdWxha2FuIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iTGFnaSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gTGFnaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iTWVuZGF0YXIgVGVycGlzYWgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJNZW5lZ2FrIFRlcnBpc2FoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IlRlcnN1YWkgVGVycGlzYWgiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iUGVuamltYXQgYmF0ZXJpIGRpaGlkdXBrYW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iTWVuZ3VyYW5na2FuIHByZXN0YXNpIGRhbiBkYXRhIGxhdGFyIGJlbGFrYW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJNYXRpa2FuIHBlbmppbWF0IGJhdGVyaSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJLYW5kdW5nYW4gdGVyc2VtYnVueWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gYWthbiBtdWxhIG1lbmdhYmFkaWthbiBzZW11YSB5YW5nIGRpcGFwYXJrYW4gcGFkYSBza3JpbiBhbmRhLi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iSmFuZ2FuIHR1bmp1a2thbiBsYWdpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+Iktvc29uZ2thbiBzZW11YSI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iSGlkdXBrYW4gQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJVbnR1ayBtZW55YW1idW5na2FuIHBhcGFuIGtla3VuY2kgYW5kYSBkZW5nYW4gdGFibGV0LCBhbmRhIHBlcmx1IG1lbmdoaWR1cGthbiBCbHVldG9vdGggdGVybGViaWggZGFodWx1LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IkhpZHVwa2FuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iR3VuYWthbiB1bnR1ayBwZW1iZXJpdGFodWFuIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+Ikd1bmFrYW4gdW50dWsgc2VtdWEgcGVtYmVyaXRhaHVhbiBkYXJpcGFkYSBhcGwgaW5pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkRpc2VrYXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJLZXBlbnRpbmdhbiByZW5kYWgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iS2VwZW50aW5nYW4gYmlhc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iS2VwZW50aW5nYW4gdGluZ2dpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iS2VwZW50aW5nYW4gc2VnZXJhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJKYW5nYW4gc2VrYWxpLWthbGkgdHVuanVra2FuIHBlbWJlcml0YWh1YW4gaW5pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlR1bmp1a2thbiBwYWRhIGJhaGFnaWFuIGJhd2FoIHNlbmFyYWkgcGVtYmVyaXRhaHVhbiBzZWNhcmEgc2VueWFwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJUdW5qdWtrYW4gcGVtYmVyaXRhaHVhbiBpbmkgc2VjYXJhIHNlbnlhcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iVHVuanVra2FuIHBhZGEgYmFoYWdpYW4gYXRhcyBzZW5hcmFpIHBlbWJlcml0YWh1YW4gZGFuIGJ1bnlpa2FuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IkludGFpIHBhZGEgc2tyaW4gZGFuIGJ1bnlpa2FuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iV2FybmEgYmlhc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iV2FybmEgbWFsYW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+Ildhcm5hIHRlcnN1YWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJXYXJuYSB0aWRhayBkaWtldGFodWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iUGVuZ3ViYWhzdWFpYW4gd2FybmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJUdW5qdWtrYW4ganViaW4gVGV0YXBhbiBQYW50YXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkRheWFrYW4gamVsbWFhbiB0ZXJzdWFpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iR3VuYWthbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJTYWhrYW4gdGV0YXBhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IlNlc2V0ZW5nYWggdGV0YXBhbiB3YXJuYSBib2xlaCBtZW5qYWRpa2FuIHBlcmFudGkgaW5pIHRpZGFrIGRhcGF0IGRpZ3VuYWthbi4gS2xpayBPSyB1bnR1ayBtZW5nZXNhaGthbiB0ZXRhcGFuIHdhcm5hIGluaSwgamlrYSB0aWRhaywgdGV0YXBhbiBpbmkgYWthbiBkaXRldGFwa2FuIHNlbXVsYSBzZWxlcGFzIDEwIHNhYXQuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW15LXJNTS9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCmluZGV4IDY5ZGNjNzcuLjI5M2UwMTAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbXktck1NL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLhgJvhgL7hgKzhgJbhgL3hgLHhgJvhgJThgLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiDhgIDhgK3hgK8g4YCZ4YCF4YCU4YCt4YCv4YCE4YC64YCV4YCr4YGLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuGAlOGAseGArOGAgOGAuuGAkeGAleGAuiI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLhgJThgLHhgKzhgIDhgLrhgJHhgJXhgLogPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IOGAgeGAryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i4YCb4YCx4YCV4YC84YCE4YC64YCK4YCuIOGAleGAreGAr+GAhOGAuuGAuOGAmeGAiuGAuiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IuGAkuGAseGAq+GAhOGAuuGAnOGAreGAr+GAgOGAuuGAleGAreGAr+GAhOGAuuGAuOGAmeGAiuGAuiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLhgIXhgK3hgJDhgLrhgIDhgLzhgK3hgK/hgIDhgLog4YCV4YCt4YCv4YCE4YC64YC44YCZ4YCK4YC6Ijwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuGAmOGAgOGAuuGAkeGAm+GAriDhgIHhgLvhgL3hgLHhgJDhgKzhgJ7hgLAg4YCW4YC94YCE4YC34YC64YCR4YCs4YC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IuGAnOGAr+GAleGAuuGAgOGAreGAr+GAhOGAuuGAmeGAvuGAr+GAgOGAreGAryDhgJzhgLvhgL7hgLHhgKzhgLfhgIHhgLvhgJzhgLvhgIDhgLog4YCU4YCx4YCs4YCA4YC64YCB4YC2IOGAkuGAseGAkOGArOGAgOGAreGAryDhgIDhgJThgLfhgLrhgJ7hgJDhgLrhgJ7hgIrhgLoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuGAmOGAgOGAuuGAkeGAm+GAriDhgIHhgLvhgL3hgLHhgJDhgKzhgJnhgL7hgK/hgIDhgK3hgK8g4YCV4YCt4YCQ4YC64YCR4YCs4YC44YCb4YCU4YC6Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuGAoeGAgOGAvOGAseGArOGAhOGAuuGAuOGAoeGAm+GArOGAmeGAu+GArOGAuCDhgJ3hgL7hgIDhgLrhgJHhgKzhgLgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4YCAIOGAnuGAhOGAuuGBjyDhgJnhgLvhgIDhgLrhgJThgL7hgKzhgJXhgLzhgIThgLog4YCV4YCx4YCr4YC64YCZ4YC+4YCsIOGAleGAvOGAnuGAkeGArOGAuOGAnuGAiuGAt+GAuiDhgKHhgJvhgKzhgJDhgK3hgK/hgIThgLrhgLjhgIDhgK3hgK8g4YCF4YCQ4YCE4YC6IOGAluGAmeGAuuGAuOGAmuGAsOGAmeGAiuGAuuGBiyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLhgJThgLHhgKzhgIDhgLrhgJHhgJXhgLog4YCZ4YCV4YC84YCV4YCr4YCU4YC+4YCE4YC34YC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuGAoeGArOGAuOGAnOGAr+GAtuGAuCDhgJvhgL7hgIThgLrhgLjhgJzhgIThgLrhgLjhgJvhgJThgLoiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuGAmOGAnOGAsOGAuOGAkOGAr+GAnuGAuiDhgJbhgL3hgIThgLfhgLrhgJvhgJnhgJzhgKzhgLjhgYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i4YCA4YCu4YC44YCY4YCv4YCQ4YC64YCA4YCt4YCvIOGAkOGAleGAuuGAmOGAnOGAgOGAuuGAlOGAvuGAhOGAt+GAuiDhgIHhgLvhgK3hgJDhgLrhgIbhgIDhgLrhgJvhgJThgLrhgYog4YCV4YCZ4YCR4YCm4YC44YCF4YC94YCsIOGAmOGAnOGAsOGAuOGAkOGAr+GAnuGAuuGAgOGAreGAryDhgJbhgL3hgIThgLfhgLrhgJXhgKvhgYsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLhgJbhgL3hgIThgLfhgLrhgJXhgKsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLhgJ7hgJDhgK3hgJXhgLHhgLjhgIHhgLvhgIDhgLogPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+IOGAgeGAr+GAnuGAreGAr+GAt+GAnuGAgOGAuuGAm+GAseGArOGAgOGAuuGAheGAseGAleGAqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuGApOGAoeGAgOGAuuGAleGAuuGAmeGAviDhgJ7hgJDhgK3hgJXhgLHhgLjhgIHhgLvhgIDhgLrhgJnhgLvhgKzhgLjhgKHhgKzhgLjhgJzhgK/hgLbhgLjhgJ7hgK3hgK/hgLcg4YCe4YCA4YC64YCb4YCx4YCs4YCA4YC64YCF4YCx4YCV4YCrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IuGAleGAreGAkOGAuuGAhuGAreGAr+GAt+GAkeGArOGAuOGAnuGAiuGAuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IuGAoeGAlOGAiuGAuuGAuOGAhOGAmuGAuuGAnuGArCDhgKHhgJvhgLHhgLjhgJXhgKvhgJ7hgIrhgLoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i4YCe4YCs4YCZ4YCU4YC64YCe4YCsIOGAoeGAm+GAseGAuOGAleGAq+GAnuGAiuGAuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLhgKHhgJzhgL3hgJThgLrhgKHhgJvhgLHhgLjhgJXhgKvhgJ7hgIrhgLoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLhgKHhgJvhgLHhgLjhgJDhgIDhgLzhgK7hgLgg4YCh4YCb4YCx4YC44YCV4YCr4YCe4YCK4YC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLhgKThgJ7hgJDhgK3hgJXhgLHhgLjhgIHhgLvhgIDhgLrhgJnhgLvhgKzhgLjhgIDhgK3hgK8g4YCY4YCa4YC64YCQ4YCx4YCs4YC34YCZ4YC+4YCZ4YCV4YC84YCV4YCr4YCU4YC+4YCE4YC34YC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IuGAnuGAkOGAreGAleGAseGAuOGAgeGAu+GAgOGAuuGAheGArOGAm+GAhOGAuuGAuOGBjyDhgKHhgLHhgKzhgIDhgLrhgIbhgK/hgLbhgLjhgJDhgL3hgIThgLog4YCQ4YCt4YCQ4YC64YCQ4YCG4YCt4YCQ4YC64YCV4YC84YCV4YCrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLhgKThgJ7hgJDhgK3hgJXhgLHhgLjhgIHhgLvhgIDhgLrhgJnhgLvhgKzhgLjhgIDhgK3hgK8g4YCQ4YCt4YCQ4YC64YCQ4YCG4YCt4YCQ4YC64YCV4YC84YCV4YCrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLhgJ7hgJDhgK3hgJXhgLHhgLjhgIHhgLvhgIDhgLrhgIXhgKzhgJvhgIThgLrhgLjhgJnhgLvhgKzhgLjhgY8g4YCR4YCt4YCV4YC64YCQ4YC94YCE4YC64YCV4YC84YCA4YCsIOGAoeGAnuGAtuGAluGAveGAhOGAt+GAuuGAleGAqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLhgJnhgLvhgIDhgLrhgJThgL7hgKzhgJXhgLzhgIThgLrhgJXhgLHhgKvhgLrhgJ7hgK3hgK/hgLcg4YCW4YCx4YCs4YC64YCV4YC84YCA4YCsIOGAoeGAnuGAtuGAluGAveGAhOGAt+GAuuGAleGAqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuGAleGAr+GAtuGAmeGAvuGAlOGAuiDhgKHhgJvhgLHhgKzhgIThgLrhgJnhgLvhgKzhgLgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i4YCKIOGAoeGAm+GAseGArOGAhOGAuuGAmeGAu+GArOGAuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i4YCF4YCt4YCQ4YC64YCA4YC84YCt4YCv4YCA4YC6IOGAoeGAm+GAseGArOGAhOGAuuGAmeGAu+GArOGAuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuGAmeGAnuGAreGAnuGAiuGAt+GAuiDhgKHhgJvhgLHhgKzhgIThgLrhgJnhgLvhgKzhgLgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i4YCh4YCb4YCx4YCs4YCE4YC6IOGAmeGAveGAmeGAuuGAuOGAmeGAtuGAmeGAvuGAryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IuGAoeGAmeGAvOGAlOGAuiDhgIbhgIDhgLrhgJDhgIThgLog4YCc4YCx4YC44YCR4YCx4YCs4YCE4YC34YC64YCA4YC94YCA4YC64YCA4YCt4YCvIOGAleGAvOGAleGAqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i4YCF4YCt4YCQ4YC64YCA4YC84YCt4YCv4YCA4YC6IOGAleGAvOGAseGArOGAhOGAuuGAuOGAnOGAsuGAmeGAvuGAr+GAgOGAreGAryDhgJbhgL3hgIThgLfhgLrhgJXhgKsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLhgKHhgJ7hgK/hgLbhgLjhgJXhgLzhgK/hgJXhgKsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4YCG4YCA4YC64YCQ4YCE4YC64YCZ4YC74YCs4YC44YCA4YCt4YCvIOGAoeGAkOGAiuGAuuGAleGAvOGAr+GAleGAqyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuGAoeGAgeGAu+GAreGAr+GAt+GAnuGAseGArCDhgKHhgJvhgLHhgKzhgIThgLrhgIbhgIDhgLrhgJDhgIDhgLrhgJnhgLvhgKzhgLjhgIAg4YCk4YCA4YCt4YCb4YCt4YCa4YCs4YCA4YCt4YCvIOGAnuGAr+GAtuGAuOGAmeGAm+GAoeGAseGArOGAhOGAuiDhgJzhgK/hgJXhgLrhgJXhgIXhgLrhgJThgK3hgK/hgIThgLrhgJXhgKvhgJ7hgIrhgLrhgYsg4YCk4YCh4YCb4YCx4YCs4YCE4YC6IOGAhuGAgOGAuuGAkOGAhOGAuuGAmeGAu+GArOGAuOGAgOGAreGAryDhgKHhgJDhgIrhgLrhgJXhgLzhgK/hgJvhgJThgLog4YCh4YCt4YCv4YCA4YCx4YCA4YCt4YCvIOGAlOGAvuGAreGAleGAuuGAleGAq+GBiiDhgJ7hgK3hgK/hgLfhgJnhgJ/hgK/hgJDhgLog4YCk4YCG4YCA4YC64YCQ4YCE4YC64YCZ4YC74YCs4YC44YCA4YCt4YCvIOGBgeGBgCDhgIXhgIDhgLnhgIDhgJThgLfhgLog4YCh4YCA4YC84YCs4YCQ4YC94YCE4YC6IOGAleGAvOGAlOGAuuGAiuGAvuGAreGAnOGAreGAr+GAgOGAuuGAleGAq+GAmeGAiuGAuuGBiyI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKaW5kZXggOTQ2NTNjZi4uZmZjMmZjZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJTw7hrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJLdW5uZSBpa2tlIHN0YXJ0ZSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ik1lciI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gdGlsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJEZWwgaG9yaXNvbnRhbHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEZWwgdmVydGlrYWx0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IkRlbCB0aWxwYXNzZXQiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQmF0dGVyaXNwYXJpbmcgZXIgcMOlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHVzZXJlciB5dGVsc2VuIG9nIGJlZ3JlbnNlciBiYWtncnVubnNkYXRhZW5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJTbMOlIGF2IGJhdHRlcmlzcGFyaW5nIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IklubmhvbGRldCBlciBza2p1bHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gdGFyIG9wcCBhbHQgc29tIHZpZXMgcMOlIHNramVybWVuIGRpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iSWtrZSB2aXMgaWdqZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iRmplcm4gYWx0Ijwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJWaWwgZHUgc2zDpSBww6UgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJGb3Igw6Uga29ibGUgdGFzdGF0dXJldCB0aWwgbmV0dGJyZXR0ZXQgZGl0dCBtw6UgZHUgZsO4cnN0IHNsw6UgcMOlIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJTbMOlIHDDpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IkJydWsgZm9yIHZhcnNsZXIgZm9yIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkJydWsgZm9yIGFsbGUgdmFyc2xlbmUgZnJhIGRlbm5lIGFwcGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2trZXJ0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTGF2IHZpa3RpZ2hldCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJWYW5saWcgdmlrdGlnaGV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IkjDuHkgdmlrdGlnaGV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iU3bDpnJ0IGjDuHkgdmlrdGlnaGV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJBbGRyaSB2aXMgZGlzc2UgdmFyc2xlbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iVmlzIG5lZGVyc3QgcMOlIHZhcnNlbGxpc3RlbiB1dGVuIGx5ZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iVmlzIGRpc3NlIHZhcnNsZW5lIHV0ZW4gbHlkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJWaXMgw7h2ZXJzdCBww6UgdmFyc2VsbGlzdGVuIG1lZCBseWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iVmlzIGZvcnQgcMOlIHNramVybWVuIG1lZCBseWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWxlIGZhcmdlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOYXR0ZmFyZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJTcGVzaWFsdGlscGFzc2VkZSBmYXJnZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJVa2plbnRlIGZhcmdlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJGYXJnZW1vZGlmaXNlcmluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlZpcyBydXRlbiBmb3IgaHVydGlnaW5uc3RpbGxpbmdlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iU2zDpSBww6Ugc3Blc2lhbHRpbHBhc3NldCBmb3J2YW5kbGluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkJydWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQmVrcmVmdCBpbm5zdGlsbGluZ2VuZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+Ik5vZW4gZmFyZ2Vpbm5zdGlsbGluZ2VyIGthbiBnasO4cmUgZGVubmUgZW5oZXRlbiB1YnJ1a2VsaWcuIEtsaWtrIHDDpSBPSyBmb3Igw6UgYmVrcmVmdGUgZGlzc2UgZmFyZ2Vpbm5zdGlsbGluZ2VuZSwgZWxsZXJzIGJsaXIgZGUgdGlsYmFrZXN0aWx0IGV0dGVyIHRpIHNla3VuZGVyLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1uZS1yTlAvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW5lLXJOUC9zdHJpbmdzLnhtbAppbmRleCBiYzRmMWE5Li42ZjQwZDU1IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW5lLXJOUC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW5lLXJOUC9zdHJpbmdzLnhtbApAQCAtMzY0LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuCkrOCljeCkr+CkvuCkn+CljeCksOCkvyDgpLjgpYfgpK3gpLAg4KSa4KS+4KSy4KWBIOCkmyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpKgg4KSwIOCkquClg+Ckt+CljeCkoOCkreClguCkruCkvyDgpKHgpYfgpJ/gpL4g4KSY4KSf4KS+4KSJ4KSB4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLgpKzgpY3gpK/gpL7gpJ/gpY3gpLDgpYAg4KSs4KSa4KSkIOCkrOCkqOCljeCkpiDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i4KSy4KWB4KSV4KWH4KSV4KS+IOCkuOCkvuCkruCkvuCkl+CljeCksOClgOCkueCksOClgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDgpLLgpYcg4KSG4KSr4KWN4KSo4KWLIOCkuOCljeCkleCljeCksOClgOCkqOCkruCkviDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KS54KWB4KSo4KWHIOCkuOCkrOCliCDgpJbgpL/gpJrgpY3gpKgg4KS24KWB4KSw4KWCIOCkl+CksOCljeCkqOClh+Ckm+ClpCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgpKvgpYfgpLDgpL8g4KSo4KSm4KWH4KSW4KS+4KSJ4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuCkuOCkrOCliCDgpLngpJ/gpL7gpIngpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CkBAIC00NDksNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuCkrOCljeCksuClgeCkn+ClgeCkpSDgpLjgpJXgpY3gpLDgpL/gpK8g4KSq4KS+4KSw4KWN4KSo4KWHIOCkueCliz8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i4KSG4KSr4KWN4KSo4KWLIOCkn+CljeCkr+CkvuCkrOCljeCksuClh+Ckn+CkuOCkgeCklyDgpJXgpL/gpKzgpYvgpLDgpY3gpKEg4KSc4KWL4KSh4KWN4KSoLCDgpKrgpLngpL/gpLLgpYcg4KSk4KSq4KS+4KSI4KSB4KSy4KWHIOCkrOCljeCksuClgeCkn+ClgeCkpSDgpLjgpJXgpY3gpLDgpL/gpK8g4KSX4KSw4KWN4KSo4KWB4KSq4KSw4KWN4KSb4KWkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i4KS44KSV4KWN4KSw4KS/4KSvIOCkquCkvuCksOCljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDgpLjgpYLgpJrgpKjgpL7gpLngpLDgpYLgpK7gpL4g4KSy4KS+4KSX4KWCIOCkl+CksOCljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuCkr+CliyDgpIXgpKjgpYHgpKrgpY3gpLDgpK/gpYvgpJfgpJXgpL4g4KS44KSs4KWIIOCkuOClguCkmuCkqOCkvuCkueCksOClguCkruCkviDgpLLgpL7gpJfgpYIg4KSX4KSw4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IuCksOCli+CkleCkv+Ckr+CliyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IuCkqOCljeCkr+ClguCkqCDgpK7gpLngpKTgpY3gpKTgpY3gpLUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i4KS44KS+4KSu4KS+4KSo4KWN4KSvIOCkruCkueCkpOCljeCkpOCljeCktSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLgpIngpJrgpY3gpJog4KSu4KS54KSk4KWN4KSk4KWN4KS1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i4KSc4KSw4KWC4KSw4KWAIOCkruCkueCkpOCljeCkpOCljeCktSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i4KSv4KWAIOCkuOClguCkmuCkqOCkvuCkueCksOClgiDgpJXgpLngpL/gpLLgpY3gpK/gpYgg4KSo4KSm4KWH4KSW4KS+4KSJ4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IuCkuOClguCkmuClgOCkleCliyDgpKvgpYfgpKbgpK7gpL4g4KSs4KS/4KSo4KS+IOCkhuCkteCkvuCknCDgpKbgpYfgpJbgpL7gpIngpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuCkr+ClgCDgpLjgpYLgpJrgpKjgpL7gpLngpLDgpYIg4KSs4KS/4KSo4KS+IOCkhuCkteCkvuCknCDgpKbgpYfgpJbgpL7gpIngpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuCkuOClguCkmuCkqOCkviDgpLjgpYLgpJrgpYDgpJXgpYsg4KS24KWA4KSw4KWN4KS34KSu4KS+IOCkpuClh+CkluCkvuCkieCkqOClgeCkueCli+CkuOCljSDgpLAg4KSG4KS14KS+4KScIOCkqOCkv+CkleCkvuCksuCljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLgpLjgpY3gpJXgpY3gpLDgpL/gpKjgpK7gpL4g4KS54KWH4KSw4KWN4KSo4KWB4KS54KWL4KS44KWNIOCksCDgpIbgpLXgpL7gpJwg4KSo4KS/4KSV4KS+4KSy4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i4KS44KS+4KSu4KS+4KSo4KWN4KSvIOCksOCkmeCkueCksOClgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLgpLDgpL7gpKTgpY3gpLDgpYAg4KSw4KSZ4KS54KSw4KWCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLgpIXgpKjgpYHgpJXgpYLgpLLgpKgg4KSw4KSZ4KS54KSw4KWCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i4KSF4KSc4KWN4KSe4KS+4KSkIOCksOCkmeCkueCksOClgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLgpLDgpJkg4KSq4KSw4KS/4KSu4KS+4KSw4KWN4KSc4KSoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i4KSm4KWN4KSw4KWB4KSkIOCkuOClh+Ckn+Ckv+CkmSDgpJ/gpL7gpIfgpLIg4KSm4KWH4KSW4KS+4KSJ4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLgpIXgpKjgpYHgpJXgpYLgpLLgpKgg4KSw4KWC4KSq4KS+4KSo4KWN4KSk4KSw4KSjIOCkuOCkleCljeCksOCkv+CkryDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLgpLLgpL7gpJfgpYIg4KSX4KSw4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IuCkuOClh+Ckn+Ckv+CkmeCkueCksOClguCkleCliyDgpKrgpYHgpLfgpY3gpJ/gpL8g4KSX4KSw4KWN4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i4KSV4KWH4KS54KWAIOCksOCkmSDgpLjgpYfgpJ/gpL/gpJngpLngpLDgpYLgpLLgpYcg4KSv4KS4IOCkr+CkqOCljeCkpOCljeCksOCksuCkvuCkiCDgpIXgpKjgpYHgpKrgpK/gpYvgpJfgpYAg4KSs4KSo4KS+4KSJ4KSoIOCkuOCkleCljeCkm+CkqOCljeClpCDgpK/gpYAg4KSw4KSZIOCkuOClh+Ckn+Ckv+CkmeCkueCksOClgiDgpKrgpYHgpLfgpY3gpJ/gpL8g4KSX4KSw4KWN4KSoIOCkoOClgOCklSDgpJsg4KSu4KS+IOCkleCljeCksuCkv+CklSDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0sIOCkheCkqOCljeCkr+CkpeCkviDgpK/gpYAg4KS44KWH4KSf4KS/4KSZ4KS54KSw4KWCIOClp+ClpiDgpLjgpYfgpJXgpYfgpKPgpY3gpKHgpKrgpJvgpL8g4KSw4KS/4KS44KWH4KSfIOCkueClgeCkqOClh+Ckm+CkqOCljeClpCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKaW5kZXggNjJjZWYwZi4uOTMxMTcxMSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJ6b2VrZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IkthbiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gbmlldCBzdGFydGVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJNZWVyIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ik5vZyA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gYW5kZXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJIb3Jpem9udGFhbCBzcGxpdHNlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IlZlcnRpY2FhbCBzcGxpdHNlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJBYW5nZXBhc3Qgc3BsaXRzZW4iPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQWNjdWJlc3BhcmluZyBpcyBpbmdlc2NoYWtlbGQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iVmVybWluZGVydCBkZSBwcmVzdGF0aWVzIGVuIGFjaHRlcmdyb25kZ2VnZXZlbnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkFjY3ViZXNwYXJpbmcgdWl0c2NoYWtlbGVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkluaG91ZCB2ZXJib3JnZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gZ2FhdCBhbGxlcyB2YXN0bGVnZ2VuIGRhdCB3b3JkdCB3ZWVyZ2VnZXZlbiBvcCBqZSBzY2hlcm0uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik5pZXQgb3BuaWV1dyB3ZWVyZ2V2ZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iQWxsZXMgd2lzc2VuIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJCbHVldG9vdGggaW5zY2hha2VsZW4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkFscyBqZSBqZSB0b2V0c2VuYm9yZCB3aWx0IHZlcmJpbmRlbiBtZXQgamUgdGFibGV0LCBtb2V0IGplIGVlcnN0IEJsdWV0b290aCBpbnNjaGFrZWxlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJJbnNjaGFrZWxlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IlRvZXBhc3NlbiBvcCBtZWxkaW5nZW4gdm9vciA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJUb2VwYXNzZW4gb3AgYWxsZSBtZWxkaW5nZW4gdmFuIGRlemUgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkdlYmxva2tlZXJkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iS2xlaW4gYmVsYW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+Ik5vcm1hYWwgYmVsYW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+Ikdyb290IGJlbGFuZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlVyZ2VudCBiZWxhbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IkRlemUgbWVsZGluZ2VuIG5vb2l0IHdlZXJnZXZlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJPbmRlciBhYW4gZGUgbGlqc3QgbWV0IG1lbGRpbmdlbiB3ZWVyZ2V2ZW4gem9uZGVyIGdlbHVpZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iRGV6ZSBtZWxkaW5nZW4gem9uZGVyIGdlbHVpZCB3ZWVyZ2V2ZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IkJvdmVuIGFhbiBkZSBsaWpzdCBtZXQgbWVsZGluZ2VuIHdlZXJnZXZlbiBlbiBnZWx1aWQgbGF0ZW4gaG9yZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iT3AgaGV0IHNjaGVybSB3ZWVyZ2V2ZW4gZW4gZ2VsdWlkIGxhdGVuIGhvcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iTm9ybWFsZSBrbGV1cmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+Ik5hY2h0a2xldXJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQWFuZ2VwYXN0ZSBrbGV1cmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iT25iZWtlbmRlIGtsZXVyZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iS2xldXJhYW5wYXNzaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iVGVnZWwgdm9vciBcJ1NuZWxsZSBpbnN0ZWxsaW5nZW5cJyB3ZWVyZ2V2ZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkFhbmdlcGFzdCB0cmFuc2Zvcm1lcmVuIGluc2NoYWtlbGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iVG9lcGFzc2VuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+Ikluc3RlbGxpbmdlbiBiZXZlc3RpZ2VuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iQmlqIHNvbW1pZ2Uga2xldXJpbnN0ZWxsaW5nZW4ga2FuIGhldCBhcHBhcmFhdCBvbmJydWlrYmFhciB3b3JkZW4uIEtsaWsgb3AgT0sgb20gZGV6ZSBrbGV1cmluc3RlbGxpbmdlbiB0ZSBiZXZlc3RpZ2VuLCBhbmRlcnMgd29yZGVuIGRlemUgaW5zdGVsbGluZ2VuIG5hIHRpZW4gc2Vjb25kZW4gZ2VyZXNldC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcGEtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKaW5kZXggZDdmZTBhMS4uMmRkOTFlYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wYS1ySU4vc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuColuCpi+ConOCpiyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IOCoqOCpguCpsCDgqJrgqL7gqLLgqYIg4Kio4Ki54KmA4KiCIOColeCosCDgqLjgqJXgqL/gqIbgpaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i4Ki54KmL4KiwIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDgqLngqYvgqLAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IuCoueCpjOCosOCpgOConOCovOCpjOCoguCon+CosiDgqLjgqKrgqLLgqL/gqJ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLgqLXgqLDgqJ/gqYDgqJXgqLIg4Ki44Kiq4Kiy4Ki/4KifIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuColeCouOCon+CoriDgqLjgqKrgqLLgqL/gqJ8iPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i4Kis4KmI4Kif4Kiw4KmAIOCouOCph+CoteCosCDgqJrgqL7gqLLgqYIg4Ki54KmIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IuCoquCpjeCosOCopuCosOCouOCovOCoqCDgqIXgqKTgqYcg4Kiq4Ki/4Kib4KmL4KiV4KmcIOCooeCovuCon+CoviDgqJjgqbHgqJ8g4KiV4Kiw4Kim4Ki+IOCoueCpiCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i4Kis4KmI4Kif4Kiw4KmAIOCouOCph+CoteCosCDgqKzgqbDgqKYg4KiV4Kiw4KmLIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuCouOCoruCpseCol+CosOCpgOCohuCogiDgqLLgqYHgqJXgqL7gqIjgqIbgqIIg4KiX4KiI4KiG4KiCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IOCoieCouSDgqLjgqK0g4KiV4KmB4KidIOColeCpiOCoquComuCosCDgqJXgqLDgqKjgqL4g4Ki44Ki84KmB4Kiw4KmCIOColeCosCDgqKbgqYfgqLXgqYfgqJfgqL4sIOConOCpiyDgqKTgqYHgqLngqL7gqKHgqYAg4Ki44KiV4KmN4Kiw4KmA4KioIOCopOCphyDgqKHgqL/gqLjgqKrgqLLgqYcg4KiV4KmA4Kik4Ki+IOConOCovuCoguCopuCoviDgqLngqYjgpaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i4Kim4KmB4Kis4Ki+4Kiw4Ki+IOCoqOCoviDgqKbgqL/gqJbgqL7gqJMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i4Ki44Ki+4Kiw4KmHIOCoueCon+CovuCokyI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQmx1ZXRvb3RoIOComuCovuCosuCpgiDgqJXgqLDgqYs/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuCohuCoquCoo+CphyDgqJ/gqYjgqKzgqLLgqYfgqJ8g4Kio4Ki+4KiyIOCohuCoquCoo+CoviDgqJXgqYAt4Kis4KmL4Kiw4KihIOColeCoqOCpiOColeConyDgqJXgqLDgqKgg4Kiy4KiILCDgqKTgqYHgqLngqL7gqKjgqYLgqbAg4Kiq4Ki54Ki/4Kiy4Ki+4KiCIEJsdWV0b290aCDgqJrgqL7gqLLgqYIg4KiV4Kiw4KioIOCopuCpgCDgqJzgqLzgqLDgqYLgqLDgqKQg4Ki54KmI4KWkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i4Kia4Ki+4Kiy4KmCIOColeCosOCpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDgqLjgqYLgqJrgqKjgqL7gqLXgqL7gqIIgXCfgqKTgqYcg4Kiy4Ki+4KiX4KmCIOColeCosOCpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuCoh+CouCDgqJDgqKog4Kim4KmA4KiG4KiCIOCouOCovuCosOCpgOCohuCogiDgqLjgqYLgqJrgqKjgqL7gqLXgqL7gqIIgXCfgqKTgqYcg4Kiy4Ki+4KiX4KmCIOColeCosOCpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLgqKzgqLLgqYzgqJUg4KiV4KmA4Kik4Ki+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4KiY4Kmx4KifIOCoruCoueCpseCopOCopOCoviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLgqLjgqKfgqL7gqLDgqKgg4Kiu4Ki54Kmx4Kik4Kik4Ki+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IuCoteCpseCopyDgqK7gqLngqbHgqKTgqKTgqL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLgqJzgqLzgqLDgqYLgqLDgqYAg4Kiu4Ki54Kmx4Kik4Kik4Ki+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLgqIfgqLngqKjgqL7gqIIg4Ki44KmC4Kia4Kio4Ki+4Ki14Ki+4KiCIOCoqOCpguCpsCDgqJXgqKbgqYcg4Kio4Ki+IOCoteCov+ColuCovuCokyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLgqLjgqYLgqJrgqKjgqL4g4Ki44KmC4Kia4KmAIOCopuCphyDgqLngqYfgqKDgqL7gqIIg4Kia4KmB4Kmx4Kiq4Kia4Ki+4KiqIOCoouCpsOColyDgqKjgqL7gqLIg4Ki14Ki/4KiW4Ki+4KiTIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLgqIfgqLngqKjgqL7gqIIg4Ki44KmC4Kia4Kio4Ki+4Ki14Ki+4KiCIOCoqOCpguCpsCDgqJrgqYHgqbHgqKrgqJrgqL7gqKog4Kii4Kmw4KiXIOCoqOCovuCosiDgqLXgqL/gqJbgqL7gqJMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuCouOCpguComuCoqOCovuCoteCovuCogiDgqLjgqYLgqJrgqYAg4Kim4KmHIOCouOCov+ColuCosCBcJ+CopOCphyDgqLXgqL/gqJbgqL7gqJMg4KiF4Kik4KmHIOCohuCoteCovuConOCovCDgqJXgqLDgqYsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i4Ki44KiV4Kiw4KmA4KioIFwn4Kik4KmHIOConeCovuCopOCpgCDgqK7gqL7gqLDgqYsg4KiF4Kik4KmHIOCohuCoteCovuConOCovCDgqJXgqLDgqYsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLgqLjgqKfgqL7gqLDgqKgg4Kiw4Kmw4KiXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuCosOCovuCopCDgqKbgqYcg4Kiw4Kmw4KiXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLgqJXgqLjgqJ/gqK4g4Kiw4Kmw4KiXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i4KiF4KiX4Ki/4KiG4KikIOCosOCpsOColyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLgqLDgqbDgqJcg4Ki44KmL4KinIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i4Kik4Kik4KiV4Ki+4KiyIOCouOCpiOCon+Cov+CpsOCol+CovuCogiDgqJ/gqL7gqIfgqLIg4Ki14Ki/4KiW4Ki+4KiTIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLgqJXgqLjgqJ/gqK4g4Kik4Kis4Kim4KmA4Kiy4KmAIOCor+Cpi+ColyDgqKzgqKPgqL7gqJMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLgqLLgqL7gqJfgqYIg4KiV4Kiw4KmLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IuCouOCpiOCon+Cov+CpsOCol+CovuCogiDgqKbgqYAg4Kiq4KmB4Ki44Ki84Kif4KmAIOColeCosOCpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuColeCpgeConSDgqLDgqbDgqJcg4Ki44KmI4Kif4Ki/4Kmw4KiX4Ki+4KiCIOCoh+CouCDgqKHgqYDgqLXgqL7gqIjgqLgg4Kio4KmC4KmwIOCorOCph+ColeCovuCosCDgqJXgqLAg4Ki44KiV4Kim4KmA4KiG4KiCIOCoueCoqOClpCDgqIfgqLngqKjgqL7gqIIg4Kiw4Kmw4KiXIOCouOCpiOCon+Cov+CpsOCol+CovuCogiDgqKbgqYAg4Kiq4KmB4Ki44Ki84Kif4KmAIOColeCosOCoqCDgqLLgqIgg4Kig4KmA4KiVIFwn4Kik4KmHIOColeCosuCov+CpseColSDgqJXgqLDgqYssIOCoqOCoueCpgOCogiDgqKTgqL7gqIIg4KiH4Ki5IOCouOCpiOCon+Cov+CpsOCol+CovuCogiAxMCDgqLjgqJXgqL/gqbDgqJ8g4Kis4Ki+4KiF4KimIOCoruCpgeCpnC3gqLjgqYjgqbHgqJ8g4Ki54KmLIOConOCovuCoo+Col+CpgOCohuCoguClpCI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKaW5kZXggMzYwZTE1ZC4uYmYyMjJiYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCkBAIC0zMDMsOCArMzAzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJzenVrYWoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ik5pZSB1ZGHFgm8gc2nEmSB1cnVjaG9tacSHIGFwbGlrYWNqaSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IldpxJljZWoiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iaSBqZXN6Y3plIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iUG9kemllbCBwb3ppb21vIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iUG9kemllbCBwaW9ub3dvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IlBvZHppZWwgbmllc3RhbmRhcmRvd28iPC9zdHJpbmc+CkBAIC0zNjcsNyArMzY2LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iT3N6Y3rEmWR6YW5pZSBiYXRlcmlpIGplc3Qgd8WCxIVjem9uZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJabW5pZWpzemEgd3lkYWpub8WbxIcgaSBvZ3JhbmljemEgZGFuZSB3IHRsZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iV3nFgsSFY3ogb3N6Y3rEmWR6YW5pZSBiYXRlcmlpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IlRyZcWbY2kgdWtyeXRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGLEmWR6aWUgemFwaXN5d2HEhyB3c3p5c3RrbywgY28gd3nFm3dpZXRsaSBzacSZIG5hIGVrcmFuaWUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik5pZSBwb2thenVqIHBvbm93bmllIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlVzdcWEIHdzenlzdGtpZSI8L3N0cmluZz4KQEAgLTQ1Miw0ICs0NTAsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iV8WCxIVjennEhyBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkFieSBwb8WCxIVjennEhyBrbGF3aWF0dXLEmSB6IHRhYmxldGVtLCBtdXNpc3ogbmFqcGllcncgd8WCxIVjennEhyBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iV8WCxIVjeiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ilphc3Rvc3VqIGRvIHBvd2lhZG9taWXFhCB0eXB1IDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+Ilphc3Rvc3VqIGRvIHdzenlzdGtpY2ggcG93aWFkb21pZcWEIHogdGVqIGFwbGlrYWNqaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJaYWJsb2tvd2FuZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+Ik1hxYJvIHdhxbxuZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJXYcW8bmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iQmFyZHpvIHdhxbxuZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlBpbG5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJOaWdkeSBuaWUgcG9rYXp1aiB0eWNoIHBvd2lhZG9taWXFhCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJQb2thenVqIG5hIGRvbGUgbGlzdHkgcG93aWFkb21pZcWEIGJleiBzeWduYcWCdSBkxbp3acSZa293ZWdvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJQb2thenVqIHRlIHBvd2lhZG9taWVuaWEgYmV6IHN5Z25hxYJ1IGTFundpxJlrb3dlZ28iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlBva2F6dWogbmEgZ8OzcnplIGxpc3R5IHBvd2lhZG9taWXFhCBpIHN5Z25hbGl6dWogZMW6d2nEmWtpZW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iV3nFm3dpZXRsYWogbmEgZWtyYW5pZSBpIG9kdHdhcnphaiBkxbp3acSZayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IktvbG9yeSBzdGFuZGFyZG93ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJLb2xvcnkgbm9jbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IktvbG9yeSBuaWVzdGFuZGFyZG93ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+Ik5pZXpuYW5lIGtvbG9yeSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJabWlhbmEga29sb3J1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iUG9rYXp1aiBrYWZlbGVrIHN6eWJraWNoIHVzdGF3aWXFhCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iV8WCxIVjeiBwcnpla3N6dGHFgmNlbmllIG5pZXN0YW5kYXJkb3dlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iWmFzdG9zdWoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iUG90d2llcmTFuiB1c3Rhd2llbmlhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iTmlla3TDs3JlIHVzdGF3aWVuaWEga29sb3LDs3cgbW9nxIUgdXRydWRuaWHEhyBrb3J6eXN0YW5pZSB6IHVyesSFZHplbmlhLiBLbGlrbmlqIE9LLCBieSBwb3R3aWVyZHppxIcgdGUgdXN0YXdpZW5pYSBrb2xvcsOzdy4gSmXFm2xpIHRlZ28gbmllIHpyb2Jpc3osIHpvc3RhbsSFIG9uZSB6cmVzZXRvd2FuZSBwbyAxMMKgc2VrdW5kYWNoLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wdC1yQlIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXB0LXJCUi9zdHJpbmdzLnhtbAppbmRleCAxYTMyMTJlLi41ZDQzZWZhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXB0LXJCUi9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXB0LXJCUi9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4icGVzcXVpc2FyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJOw6NvIGZvaSBwb3Nzw612ZWwgaW5pY2lhciA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ik1haXMiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iTWFpcyA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IkRpdmlzw6NvIGhvcml6b250YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEaXZpc8OjbyB2ZXJ0aWNhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJEaXZpc8OjbyBwZXJzb25hbGl6YWRhIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IkEgRWNvbm9taWEgZGUgYmF0ZXJpYSBlc3TDoSBhdGl2YWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHV6IG8gZGVzZW1wZW5obyBlIG9zIGRhZG9zIGVtIHNlZ3VuZG8gcGxhbm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlc2F0aXZhciBhIGVjb25vbWlhIGRlIGJhdGVyaWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGXDumRvIG9jdWx0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBjb21lw6dhcsOhIGEgY2FwdHVyYXIgdHVkbyBvIHF1ZSBmb3IgZXhpYmlkbyBuYSB0ZWxhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOw6NvIG1vc3RyYXIgbm92YW1lbnRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkxpbXBhciB0dWRvIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJBdGl2YXIgbyBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlBhcmEgY29uZWN0YXIgbyB0ZWNsYWRvIGFvIHRhYmxldCwgw6kgcHJlY2lzbyBwcmltZWlybyBhdGl2YXIgbyBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iQXRpdmFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBsaWNhciBhIG5vdGlmaWNhw6fDtWVzIGRlIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkFwbGljYXIgYSB0b2RhcyBhcyBub3RpZmljYcOnw7VlcyBkZXN0ZSBhcHAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvcXVlYWRhcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IkltcG9ydMOibmNpYSBiYWl4YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJJbXBvcnTDom5jaWEgbm9ybWFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IkltcG9ydMOibmNpYSBlbGV2YWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iSW1wb3J0w6JuY2lhIHVyZ2VudGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik51bmNhIG1vc3RyYXIgZXNzYXMgbm90aWZpY2HDp8O1ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iTW9zdHJhciBuYSBwYXJ0ZSBpbmZlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYcOnw7VlcyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJNb3N0cmFyIGVzc2FzIG5vdGlmaWNhw6fDtWVzIGRlIGZvcm1hIHNpbGVuY2lvc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik1vc3RyYXIgbmEgcGFydGUgc3VwZXJpb3IgZGEgbGlzdGEgZGUgbm90aWZpY2HDp8O1ZXMgZSBlbWl0aXIgc29tIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Ik1vc3RyYXIgcGFyY2lhbG1lbnRlIG5hIHRlbGEgZSBlbWl0aXIgc29tIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQ29yZXMgbm9ybWFpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJDb3JlcyBub3R1cm5hcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ29yZXMgcGVyc29uYWxpemFkYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJDb3JlcyBkZXNjb25oZWNpZGFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik1vZGlmaWNhw6fDo28gZGUgY29yIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iTW9zdHJhciBibG9jbyBkZSBjb25maWd1cmHDp8O1ZXMgcsOhcGlkYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkF0aXZhciB0cmFuc2Zvcm1hw6fDo28gcGVyc29uYWxpemFkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkFwbGljYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQ29uZmlybWFyIGNvbmZpZ3VyYcOnw7VlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkFsZ3VtYXMgY29uZmlndXJhw6fDtWVzIGRlIGNvciBwb2RlbSB0b3JuYXIgbyBkaXNwb3NpdGl2byBpbnV0aWxpesOhdmVsLiBDbGlxdWUgZW0gXCJPS1wiIHBhcmEgY29uZmlybWFyIGVzc2FzIGNvbmZpZ3VyYcOnw7VlcyBkZSBjb3I7IGNhc28gY29udHLDoXJpbywgZXNzYXMgY29uZmlndXJhw6fDtWVzIHNlcsOjbyByZWRlZmluaWRhcyBhcMOzcyAxMCBzZWd1bmRvcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKaW5kZXggYzk1MjQyZi4uNDRlY2Q0MSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+InBlc3F1aXNhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iTsOjbyBmb2kgcG9zc8OtdmVsIGluaWNpYXIgbyA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ik1haXMiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iTWFpcyA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IkRpdmlzw6NvIGhvcml6b250YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEaXZpc8OjbyB2ZXJ0aWNhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJEaXZpc8OjbyBwZXJzb25hbGl6YWRhIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IkEgcG91cGFuw6dhIGRlIGJhdGVyaWEgZXN0w6EgbGlnYWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHV6IG8gZGVzZW1wZW5obyBlIG9zIGRhZG9zIGRlIHNlZ3VuZG8gcGxhbm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlc2F0aXZhciBhIHBvdXBhbsOnYSBkZSBiYXRlcmlhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IkNvbnRlw7pkbyBvY3VsdG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ik8oYSkgPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiB2YWkgY29tZcOnYXIgYSBjYXB0YXIgdHVkbyBvIHF1ZSDDqSBhcHJlc2VudGFkbyBubyBlY3LDoy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4iTsOjbyBtb3N0cmFyIGRlIG5vdm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iTGltcGFyIHR1ZG8iPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IlByZXRlbmRlIGF0aXZhciBvIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUGFyYSBsaWdhciBvIHRlY2xhZG8gYW8gdGFibGV0LCB0ZW0gZGUgYXRpdmFyIHByaW1laXJvIG8gQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IkF0aXZhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IkFwbGljYXIgYSBub3RpZmljYcOnw7VlcyBkZSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcGxpY2FyIGEgdG9kYXMgYXMgbm90aWZpY2HDp8O1ZXMgZGVzdGEgYXBsaWNhw6fDo28iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvcXVlYWRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iSW1wb3J0w6JuY2lhIGJhaXhhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IkltcG9ydMOibmNpYSBub3JtYWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iSW1wb3J0w6JuY2lhIGFsdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVcmdlbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJOdW5jYSBtb3N0cmFyIGVzdGFzIG5vdGlmaWNhw6fDtWVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Ik1vc3RyYXIgbmEgcGFydGUgaW5mZXJpb3IgZGEgbGlzdGEgZGUgbm90aWZpY2HDp8O1ZXMgc2VtIHNvbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iTW9zdHJhciBlc3RhcyBub3RpZmljYcOnw7VlcyBzZW0gc29tIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJNb3N0cmFyIG5hIHBhcnRlIHN1cGVyaW9yIGRhIGxpc3RhIGRlIG5vdGlmaWNhw6fDtWVzIGUgZW1pdGlyIHNvbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJNb3N0cmFyIG5vIGVjcsOjIGUgZW1pdGlyIHNvbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IkNvcmVzIG5vcm1haXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iQ29yZXMgbm90dXJuYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IkNvcmVzIHBlcnNvbmFsaXphZGFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iQ29yZXMgZGVzY29uaGVjaWRhcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJNb2RpZmljYcOnw6NvIGRlIGNvciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Ik1vc3RyYXIgbyBtb3NhaWNvIGRlIERlZmluacOnw7VlcyByw6FwaWRhcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iQXRpdmFyIHRyYW5zZm9ybWHDp8OjbyBwZXJzb25hbGl6YWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iQXBsaWNhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJDb25maXJtYXIgYXMgZGVmaW5pw6fDtWVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iQWxndW1hcyBkZWZpbmnDp8O1ZXMgZGUgY29yIHBvZGVtIHRvcm5hciBlc3RlIGRpc3Bvc2l0aXZvIGluc3TDoXZlbC4gQ2xpcXVlIGVtIE9LIHBhcmEgY29uZmlybWFyIGVzdGFzIGRlZmluacOnw7VlcyBkZSBjb3IuIENhc28gY29udHLDoXJpbywgZXN0YXMgZGVmaW5pw6fDtWVzIHNlcsOjbyByZXBvc3RhcyBhcMOzcyAxMCBzZWd1bmRvcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCmluZGV4IDFhMzIxMmUuLjVkNDNlZmEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4icGVzcXVpc2FyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJOw6NvIGZvaSBwb3Nzw612ZWwgaW5pY2lhciA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Ik1haXMiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iTWFpcyA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IkRpdmlzw6NvIGhvcml6b250YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEaXZpc8OjbyB2ZXJ0aWNhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJEaXZpc8OjbyBwZXJzb25hbGl6YWRhIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IkEgRWNvbm9taWEgZGUgYmF0ZXJpYSBlc3TDoSBhdGl2YWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHV6IG8gZGVzZW1wZW5obyBlIG9zIGRhZG9zIGVtIHNlZ3VuZG8gcGxhbm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlc2F0aXZhciBhIGVjb25vbWlhIGRlIGJhdGVyaWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29udGXDumRvIG9jdWx0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBjb21lw6dhcsOhIGEgY2FwdHVyYXIgdHVkbyBvIHF1ZSBmb3IgZXhpYmlkbyBuYSB0ZWxhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOw6NvIG1vc3RyYXIgbm92YW1lbnRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkxpbXBhciB0dWRvIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJBdGl2YXIgbyBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlBhcmEgY29uZWN0YXIgbyB0ZWNsYWRvIGFvIHRhYmxldCwgw6kgcHJlY2lzbyBwcmltZWlybyBhdGl2YXIgbyBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iQXRpdmFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBsaWNhciBhIG5vdGlmaWNhw6fDtWVzIGRlIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IkFwbGljYXIgYSB0b2RhcyBhcyBub3RpZmljYcOnw7VlcyBkZXN0ZSBhcHAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvcXVlYWRhcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+IkltcG9ydMOibmNpYSBiYWl4YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJJbXBvcnTDom5jaWEgbm9ybWFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IkltcG9ydMOibmNpYSBlbGV2YWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iSW1wb3J0w6JuY2lhIHVyZ2VudGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik51bmNhIG1vc3RyYXIgZXNzYXMgbm90aWZpY2HDp8O1ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iTW9zdHJhciBuYSBwYXJ0ZSBpbmZlcmlvciBkYSBsaXN0YSBkZSBub3RpZmljYcOnw7VlcyBkZSBmb3JtYSBzaWxlbmNpb3NhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJNb3N0cmFyIGVzc2FzIG5vdGlmaWNhw6fDtWVzIGRlIGZvcm1hIHNpbGVuY2lvc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+Ik1vc3RyYXIgbmEgcGFydGUgc3VwZXJpb3IgZGEgbGlzdGEgZGUgbm90aWZpY2HDp8O1ZXMgZSBlbWl0aXIgc29tIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+Ik1vc3RyYXIgcGFyY2lhbG1lbnRlIG5hIHRlbGEgZSBlbWl0aXIgc29tIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQ29yZXMgbm9ybWFpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJDb3JlcyBub3R1cm5hcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ29yZXMgcGVyc29uYWxpemFkYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJDb3JlcyBkZXNjb25oZWNpZGFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Ik1vZGlmaWNhw6fDo28gZGUgY29yIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iTW9zdHJhciBibG9jbyBkZSBjb25maWd1cmHDp8O1ZXMgcsOhcGlkYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkF0aXZhciB0cmFuc2Zvcm1hw6fDo28gcGVyc29uYWxpemFkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkFwbGljYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iQ29uZmlybWFyIGNvbmZpZ3VyYcOnw7VlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkFsZ3VtYXMgY29uZmlndXJhw6fDtWVzIGRlIGNvciBwb2RlbSB0b3JuYXIgbyBkaXNwb3NpdGl2byBpbnV0aWxpesOhdmVsLiBDbGlxdWUgZW0gXCJPS1wiIHBhcmEgY29uZmlybWFyIGVzc2FzIGNvbmZpZ3VyYcOnw7VlcyBkZSBjb3I7IGNhc28gY29udHLDoXJpbywgZXNzYXMgY29uZmlndXJhw6fDtWVzIHNlcsOjbyByZWRlZmluaWRhcyBhcMOzcyAxMCBzZWd1bmRvcy4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sCmluZGV4IDNmMGIyYTQuLmU5ZTdiZGMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbApAQCAtMzAyLDggKzMwMiw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4iY8SDdXRhcmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBudSBhIHB1dHV0IHBvcm5pLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJNYWkgbXVsdCI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLDjm5jxIMgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJEaXZpemFyZSBwZSBvcml6b250YWzEgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IkRpdml6YXJlIHBlIHZlcnRpY2FsxIMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iRGl2aXphcmUgcGVyc29uYWxpemF0xIMiPC9zdHJpbmc+CkBAIC0zNjYsNyArMzY1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iRWNvbm9taXNpcmVhIGJhdGVyaWVpIGVzdGUgYWN0aXZhdMSDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlJlZHVjZSBwZXJmb3JtYW7Im2EgyJlpIGRhdGVsZSBkZSBmdW5kYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkRlemFjdGl2YcibaSBlY29ub21pc2lyZWEgYmF0ZXJpZWkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iQ29uyJtpbnV0dWwgZXN0ZSBhc2N1bnMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gdmEgw65uY2VwZSBzxIMgY2FwdHVyZXplIHRvdCBjZWVhIGNlIHNlIGFmaciZZWF6xIMgcGUgZWNyYW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik51IHNlIG1haSBhZmnImWVhesSDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IsiYdGVyZ2XIm2kgdG9hdGUgbm90aWZpY8SDcmlsZSI8L3N0cmluZz4KQEAgLTQ1MSw0ICs0NDksMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iQWN0aXZhyJtpIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUGVudHJ1IGEgY29uZWN0YSB0YXN0YXR1cmEgbGEgdGFibGV0xIMsIG1haSDDrm50w6JpIHRyZWJ1aWUgc8SDIGFjdGl2YcibaSBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iQWN0aXZhyJtpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iQXBsaWNhyJtpIG5vdGlmaWPEg3JpbG9yIGRlIHRpcCA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJBcGxpY2HIm2kgdHV0dXJvciBub3RpZmljxINyaWxvciBkZSBsYSBhY2Vhc3TEgyBhcGxpY2HIm2llIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2NhdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJJbXBvcnRhbsibxIMgcmVkdXPEgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJJbXBvcnRhbsibxIMgbm9ybWFsxIMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iSW1wb3J0YW7Im8SDIHJpZGljYXTEgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IkltcG9ydGFuyJvEgzogdXJnZW50ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iQWNlc3RlIG5vdGlmaWPEg3JpIG51IHNlIGFmaciZZWF6xIMgbmljaW9kYXTEgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJTZSBhZmnImWVhesSDIMOubiBwYXJ0ZWEgZGUgam9zIGEgbGlzdGVpIGN1IG5vdGlmaWPEg3JpIGbEg3LEgyBhIHNlIGVtaXRlIHVuIHN1bmV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJBY2VzdGUgbm90aWZpY8SDcmkgc2UgYWZpyJllYXrEgyBmxINyxIMgYSBzZSBlbWl0ZSB1biBzdW5ldCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iU2UgYWZpyJllYXrEgyDDrm4gcGFydGVhIGRlIHN1cyBhIGxpc3RlaSBjdSBub3RpZmljxINyaSDImWkgc2UgZW1pdGUgdW4gc3VuZXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iU2UgYWZpyJllYXrEgyBwZW50cnUgbyBzY3VydMSDIGR1cmF0xIMgcGUgZWNyYW4gyJlpIHNlIGVtaXRlIHVuIHN1bmV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iQ3Vsb3JpIG5vcm1hbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iQ3Vsb3JpIGRlIG5vYXB0ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iQ3Vsb3JpIHBlcnNvbmFsaXphdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJDdWxvcmkgbmVjdW5vc2N1dGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iTW9kaWZpY2FyZWEgY3Vsb3JpbG9yIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iQWZpyJlhyJtpIGNhc2V0YSBjdSBTZXTEg3JpbGUgcmFwaWRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJBY3RpdmHIm2kgdHJhbnNmb3JtYXJlYSBwZXJzb25hbGl6YXTEgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IkFwbGljYcibaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJDb25maXJtYcibaSBzZXTEg3JpbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJVbmVsZSBzZXTEg3JpIHBlbnRydSBjdWxvcmkgcG90IGZhY2UgZGlzcG96aXRpdnVsIHPEgyBudSBtYWkgZnVuY8ibaW9uZXplLiBEYcibaSBjbGljIHBlIE9LIHBlbnRydSBhIGNvbmZpcm1hIGFjZXN0ZSBzZXTEg3JpIHBlbnRydSBjdWxvcmkuIMOObiBjYXogY29udHJhciwgYWNlc3RlYSBzZSB2b3IgcmVzZXRhIGR1cMSDIDEwIHNlY3VuZGUuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbAppbmRleCBiOTJkYWRjLi5iNjhiNDM0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKQEAgLTMwMyw4ICszMDMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+ItC/0L7QuNGB0LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0LfQsNC/0YPRgdGC0LjRgtGMINC/0YDQuNC70L7QttC10L3QuNC1IFwiPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+XCIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i0JXRidGRIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+ItCV0YnRkcKgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLQoNCw0LfQtNC10LvQuNGC0Ywg0L/QviDQs9C+0YDQuNC30L7QvdGC0LDQu9C4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i0KDQsNC30LTQtdC70LjRgtGMINC/0L4g0LLQtdGA0YLQuNC60LDQu9C4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+ItCg0LDQt9C00LXQu9C40YLRjCDQv9C+LdC00YDRg9Cz0L7QvNGDIjwvc3RyaW5nPgpAQCAtMzY3LDcgKzM2Niw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+ItCS0LrQu9GO0YfQtdC9INGA0LXQttC40Lwg0Y3QvdC10YDQs9C+0YHQsdC10YDQtdC20LXQvdC40Y8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i0J7RgtC60LsuINGE0L7QvdC+0LLQvtC5INC/0LXRgNC10LTQsNGH0Lgg0LTQsNC90L3Ri9GFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLQntGC0LrQu9GO0YfQuNGC0Ywg0YDQtdC20LjQvCDRjdC90LXRgNCz0L7RgdCx0LXRgNC10LbQtdC90LjRjyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLQodC+0LTQtdGA0LbQuNC80L7QtSDRgdC60YDRi9GC0L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+ItCf0YDQuNC70L7QttC10L3QuNC1IDx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g0L/QvtC70YPRh9C40YIg0LTQvtGB0YLRg9C/INC6INC40LfQvtCx0YDQsNC20LXQvdC40Y4g0L3QsCDRjdC60YDQsNC90LUg0YPRgdGC0YDQvtC50YHRgtCy0LAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+ItCR0L7Qu9GM0YjQtSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+ItCe0YfQuNGB0YLQuNGC0Ywg0LLRgdC1Ijwvc3RyaW5nPgpAQCAtNDUyLDQgKzQ1MCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLQn9C+0LTQutC70Y7Rh9C10L3QuNC1INC/0L4gQmx1ZXRvb3RoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+ItCn0YLQvtCx0Ysg0L/QvtC00LrQu9GO0YfQuNGC0Ywg0LrQu9Cw0LLQuNCw0YLRg9GA0YMg0Log0L/Qu9Cw0L3RiNC10YLRgywg0LLQutC70Y7Rh9C40YLQtSBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i0JLQutC70Y7Rh9C40YLRjCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+ItCf0YDQuNC80LXQvdC40YLRjCDQuiDRg9Cy0LXQtNC+0LzQu9C10L3QuNGP0Lwg0L3QsCDRgtC10LzRgyBcIjx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPlwiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i0J/RgNC40LzQtdC90LjRgtGMINC60L4g0LLRgdC10Lwg0YPQstC10LTQvtC80LvQtdC90LjRj9C8INGN0YLQvtCz0L4g0L/RgNC40LvQvtC20LXQvdC40Y8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i0JHQu9C+0LrQuNGA0L7QstC60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLQndC40LfQutCw0Y8g0LLQsNC20L3QvtGB0YLRjCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLQodGA0LXQtNC90Y/RjyDQstCw0LbQvdC+0YHRgtGMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+ItCS0YvRgdC+0LrQsNGPINCy0LDQttC90L7RgdGC0YwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLQmtGA0LDQudC90Y/RjyDQstCw0LbQvdC+0YHRgtGMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLQndC1INC/0L7QutCw0LfRi9Cy0LDRgtGMINGN0YLQuCDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLQn9C+0LrQsNC30YvQstCw0YLRjCDQsdC10Lcg0LfQstGD0LrQsCDQsiDQutC+0L3RhtC1INGB0L/QuNGB0LrQsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC5LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i0J/QvtC60LDQt9GL0LLQsNGC0Ywg0YPQstC10LTQvtC80LvQtdC90LjRjyDQsdC10Lcg0LfQstGD0LrQsC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+ItCf0L7QutCw0LfRi9Cy0LDRgtGMINGB0L4g0LfQstGD0LrQvtC8INCyINC90LDRh9Cw0LvQtSDRgdC/0LjRgdC60LAg0YPQstC10LTQvtC80LvQtdC90LjQuS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i0J/QvtC60LDQt9GL0LLQsNGC0Ywg0YHQviDQt9Cy0YPQutC+0Lwg0L/QvtCy0LXRgNGFINCy0YHQtdGFINC+0LrQvtC9LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+ItCe0LHRi9GH0L3Ri9C1INGG0LLQtdGC0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i0J3QvtGH0L3Ri9C1INGG0LLQtdGC0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+ItCh0L7QsdGB0YLQstC10L3QvdGL0LUg0YbQstC10YLQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+ItCd0LXQuNC30LLQtdGB0YLQvdGL0LUg0YbQstC10YLQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLQptCy0LXRgtC+0LLRi9C1INC90LDRgdGC0YDQvtC50LrQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+ItCf0L7QutCw0LfRi9Cy0LDRgtGMINC/0LDQvdC10LvRjCDQsdGL0YHRgtGA0YvRhSDQvdCw0YHRgtGA0L7QtdC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLQktC60LvRjtGH0LjRgtGMINGB0L7QsdGB0YLQstC10L3QvdGL0LUg0L3QsNGB0YLRgNC+0LnQutC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i0J/RgNC40LzQtdC90LjRgtGMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+ItCf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0L3QsNGB0YLRgNC+0LnQutC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i0J3QtdC60L7RgtC+0YDRi9C1INGG0LLQtdGC0L7QstGL0LUg0L3QsNGB0YLRgNC+0LnQutC4INC80L7Qs9GD0YIg0LfQsNGC0YDRg9C00L3QuNGC0Ywg0YDQsNCx0L7RgtGDINGBINGD0YHRgtGA0L7QudGB0YLQstC+0LwuINCn0YLQvtCx0Ysg0L/RgNC40LzQtdC90LjRgtGMINCy0YvQsdGA0LDQvdC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0YssINC90LDQttC80LjRgtC1IFwi0J7QmlwiLiDQkiDQv9GA0L7RgtC40LLQvdC+0Lwg0YHQu9GD0YfQsNC1INC+0L3QuCDQsdGD0LTRg9GCINGB0LHRgNC+0YjQtdC90Ysg0YfQtdGA0LXQtyAxMMKg0YHQtdC60YPQvdC0LiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zaS1yTEsvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbAppbmRleCA0YTE4ZjZlLi5iOWY3ZTUzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNpLXJMSy9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4i4LeD4LeZ4LeA4LeT4La4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4g4LaG4La74La44LeK4La3IOC2muC3hSDgtrHgt5zgt4Tgt5DgtpouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuC2reC3gOC2reC3iiI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLgtq3gt4AgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLgtq3gt5Lgtrvgt4Pgt4rgt4Ag4LeA4LeZ4Lax4LeKIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IuC3g+C3kuC2u+C3g+C3iuC3gCDgt4Dgt5ngtrHgt4og4Laa4La74Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuC2heC2t+C3kuC2uOC2rSDgtr3gt5ngt4Mg4LeA4LeZ4Lax4LeKIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLgtrbgt5Dgtqfgtrvgt5Lgtrog4LeD4LeU4La74Laa4LeS4Lax4LeK4Lax4LePIOC3g+C2muC3iuKAjeC2u+C3k+C2uuC2uuC3kiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLgtprgt4rigI3gtrvgt5Lgtrrgt4/gtprgt4/gtrvgt5Lgtq3gt4rgt4Dgtrog4LeD4LeEIOC2tOC3g+C3lOC2tuC3kuC2uOC3iiDgtq/gtq3gt4rgtq0g4LaF4Lap4LeUIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i4La24LeQ4Lan4La74LeSIOC3g+C3lOC2u+C3kOC2muC3k+C2uCDgtoXgtprgt4rigI3gtrvgt5Lgtrog4Laa4La74Lax4LeK4LaxIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuC3g+C3kOC2n+C3gOC3lOC2q+C3lCDgt4Pgtrjgt4rgtrbgtrHgt4rgtrDgtq3gt48iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+IuC2lOC2tuC2nOC3miDgtq3gt5Pgtrvgtrrgt5og4Lav4La74LeK4LeB4Lax4La6IOC3gOC2sSDgt4Pgt5Hgtrgg4Lav4LeZ4La64La4IDx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4La94La24LeP4Lac4LeQ4Lax4LeT4La4IOC2huC2u+C2uOC3iuC2tyDgtprgtrvgtrEg4La94Lav4LeSLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgtrHgt5Dgt4Dgtq0g4Lax4Lec4La04LeZ4Lax4LeK4LeA4Lax4LeK4LaxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuC3g+C3kuC2uuC2veC3iuC2vSDgt4Tgt5Lgt4Pgt4og4Laa4La74Lax4LeK4LaxIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLgtrbgt4rgtr3gt5bgtqfgt5bgtq3gt4og4Laa4LeK4oCN4La74LeS4La64LeP4Lat4LeK4La44LaaIOC2muC2u+C2seC3iuC2seC2rz8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i4LaU4La24LeaIOC2uuC2reC3lOC2u+C3lCDgtrTgt5Tgt4Dgtrvgt5Tgt4Ag4LaU4La24LeaIOC2p+C3kOC2tuC3iuC2veC2p+C3iiDgtrTgtrvgt5Lgtpzgtqvgtprgtrrgtqcg4LeD4La44LeK4La24Lax4LeK4LawIOC2muC3kuC2u+C3k+C2uOC2pywg4LaU4La2IOC2tOC3heC2uOC3lOC3gCDgtrbgt4rgtr3gt5bgtqfgt5bgtq3gt4og4Laa4LeK4oCN4La74LeS4La64LeP4Lat4LeK4La44LaaIOC2muC3hSDgtrrgt5Tgtq3gt5TgtrouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i4Laa4LeK4oCN4La74LeS4La64LeP4Lat4LeK4La44LaaIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDgtq/gt5DgtrHgt5Tgtrjgt4rgtq/gt5Pgtrjgt4og4LeA4LeZ4LatIOC2uuC3nOC2r+C2seC3iuC2sSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuC2uOC3meC2uCDgtrrgt5ngtq/gt5Tgtrgg4LeA4LeZ4Lat4LeS4Lax4LeKIOC3gOC2sSDgt4Pgt5Lgtrrgtr3gt5Qg4Lav4LeQ4Lax4LeU4La44LeK4Lav4LeT4La44LeKIOC3g+C2s+C3hOC3jyDgtrrgt5zgtq/gtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i4LaF4LeA4LeE4LeS4La7IOC2muC2u+C2sSDgtr3gtq/gt5IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLgtoXgtqngt5Qg4LeA4LeQ4Lav4Lac4Lat4LeK4Laa4La4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuC3g+C3j+C2uOC3j+C2seC3iuKAjeC2uiDgt4Dgt5Dgtq/gtpzgtq3gt4rgtprgtrgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i4LeA4LeQ4Lap4LeSIOC3gOC3kOC2r+C2nOC2reC3iuC2muC2uCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuC3hOC2r+C3kuC3g+C3kiDgt4Dgt5Dgtq/gtpzgtq3gt4rgtprgtrgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuC2uOC3meC2uCDgtq/gt5DgtrHgt5Tgtrjgt4rgtq/gt5Pgtrjgt4og4Laa4LeS4LeD4LeS4Lav4LePIOC2seC3nOC2tOC3meC2seC3iuC3gOC2seC3iuC2sSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLgtq/gt5DgtrHgt5Tgtrjgt4rgtq/gt5Pgtrjgt4og4La94LeQ4La64LeS4LeD4LeK4Lat4LeU4LeA4LeZ4LeE4LeSIOC2tOC3hOC3heC3kuC2seC3iuC2uCDgtrHgt5Lgt4Hgt4rgt4Hgtrbgt4rgtq/gt4Ag4La04LeZ4Lax4LeK4LeA4Lax4LeK4LaxIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLgtrHgt5Lgt4Hgt4rgt4Hgtrbgt4rgtq/gt4Ag4La44LeZ4La4IOC2r+C3kOC2seC3lOC2uOC3iuC2r+C3k+C2uOC3iiDgtrTgt5ngtrHgt4rgt4DgtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuC2r+C3kOC2seC3lOC2uOC3iuC2r+C3k+C2uOC3iiDgtr3gt5Dgtrrgt5Lgt4Pgt4rgtq3gt5Tgt4Dgt5ngt4Tgt5Ig4LaJ4LeE4LeF4LeS4Lax4LeK4La4IOC2tOC3meC2seC3iuC3gOC2seC3iuC2sSDgt4Pgt4Qg4LeB4La24LeK4LavIOC2muC2u+C2seC3iuC2sSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiLgtq3gt5Lgtrvgtrrgtqcg4La04LeQ4La44LeS4LarIOC3geC2tuC3iuC2ryDgtprgtrvgtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLgt4Pgt4/gtrjgt4/gtrHgt4rigI3gtrog4LeA4La74LeK4LarIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuC2u+C3j+C2reC3iuKAjeC2u+C3kyDgt4Dgtrvgt4rgtqsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuC2heC2t+C3kuC2u+C3lOC2oOC3kiDgt4Dgtrvgt4rgtqsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLgtrHgt5zgtq/gtrHgt4rgtrHgt48g4LeA4La74LeK4LarIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IuC3gOC2u+C3iuC2qyDgt4Dgt5ngtrHgt4Pgt4og4Laa4LeS4La74LeT4La4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i4LaJ4Laa4LeK4La44Lax4LeKIOC3g+C3kOC2muC3g+C3k+C2uOC3iiDgtqfgtrrgt5Lgtr3gtrog4La04LeZ4Lax4LeK4LeA4Lax4LeK4LaxIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLgtoXgtrfgt5Lgtrvgt5TgtqDgt5Ig4La04La74LeS4LeA4La74LeK4Lat4Lax4La6IOC3g+C2tuC2vSDgtprgtrvgtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLgtrrgt5zgtq/gtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4LeD4LeQ4Laa4LeD4LeT4La44LeKIOC2reC3hOC3gOC3lOC2u+C3lCDgtprgtrvgtrHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLgt4Pgtrjgt4Tgtrsg4LeA4La74LeK4LarIOC3g+C3kOC2muC3g+C3k+C2uOC3iiDgtrjgt5ngtrgg4LaL4La04LeP4LaC4Lac4La6IOC2t+C3j+C3gOC3kuC2rSDgtprgt4Ug4Lax4Lec4LeE4LeQ4Laa4LeSIOC2reC2reC3iuC2reC3iuC3gOC2uuC2pyDgtrTgtq3gt4og4Laa4LeFIOC3hOC3kOC2muC3kuC2ui4g4La44LeZ4La4IOC3gOC2u+C3iuC2qyDgt4Pgt5Dgtprgt4Pgt5Pgtrjgt4og4Lat4LeE4LeA4LeU4La74LeUIOC2muC3kuC2u+C3k+C2uOC2pyDgt4Tgtrvgt5Ig4Laa4LeK4La94LeS4Laa4LeKIOC2muC2u+C2seC3iuC2sSwg4Lax4LeQ4Lat4LeE4Lec4Lat4LeKIOC2uOC3meC2uCDgt4Pgt5Dgtprgt4Pgt5Pgtrjgt4og4Lat4Lat4LeK4La04La7IDEw4Laa4LanIOC2tOC3g+C3lOC3gCDgtrrgt4Xgt5Ig4LeD4Laa4LeD4Lax4LeUIOC2h+C2rS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sCmluZGV4IDUxYTYxZmUuLjkxYTE0M2UgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbApAQCAtMzAzLDggKzMwMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4iaMS+YWRhxaUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IkFwbGlrw6FjaXUgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+IHNhIG5lcG9kYXJpbG8gc3B1c3RpxaUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iVmlhYyI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLEjmFsxaFpZSAoPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+KSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iUm96ZGVsacWlIHZvZG9yb3Zuw6kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJSb3pkZWxpxaUgenZpc2zDqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJSb3pkZWxpxaUgdmxhc3Ruw6kiPC9zdHJpbmc+CkBAIC0zNjcsNyArMzY2LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4ixaBldHJpxI0gYmF0w6lyaWUgamUgemFwbnV0w70iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iT2JtZWR6w60gdsO9a29ubm9zxaUgYSBwcmVub3Mgw7pkYWpvdiBuYSBwb3phZMOtIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJWeXBuw7rFpSDFoWV0cmnEjSBiYXTDqXJpZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJTa3J5dMO9IG9ic2FoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiJBcGxpa8OhY2lhIDx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gemHEjW5lIHphem5hbWVuw6F2YcWlIHbFoWV0b2sgb2JzYWggem9icmF6ZW7DvSBuYSB2YcWhZWogb2JyYXpvdmtlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJOYWJ1ZMO6Y2UgbmV6b2JyYXpvdmHFpSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiJWeW1hemHFpSB2xaFldGtvIjwvc3RyaW5nPgpAQCAtNDUyLDQgKzQ1MCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJaYXBuw7rFpSBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IkFrIGNoY2V0ZSBrbMOhdmVzbmljdSBwcmlwb2ppxaUga8KgdGFibGV0dSwgbmFqcHJ2IG11c8OtdGUgemFwbsO6xaUgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IlphcG7DusWlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iUG91xb5pxaUgbmEgdXBvem9ybmVuaWEgdMO9a2Fqw7pjZSBzYSB0w6lteSA8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJQb3XFvmnFpSBuYSB2xaFldGt5IHVwb3pvcm5lbmlhIHrCoHRlanRvIGFwbGlrw6FjaWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iWmFibG9rb3ZhbsOpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTsOtemthIGTDtGxlxb5pdG9zxaUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iTm9ybcOhbG5hIGTDtGxlxb5pdG9zxaUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iVnlzb2vDoSBkw7RsZcW+aXRvc8WlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iTmVvZGtsYWRuw6EgZMO0bGXFvml0b3PFpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iVGlldG8gdXBvem9ybmVuaWEgbmlrZHkgbmV6b2JyYXpvdmHFpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJab2JyYXpvdmHFpSB2wqBkb2xuZWogxI1hc3RpIHpvem5hbXUgdXBvem9ybmVuw60gYmV6IHp2dWtvdsOpaG8gc2lnbsOhbHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlRpZXRvIHVwb3pvcm5lbmlhIHpvYnJhem92YcWlIGJleiB6dnVrb3bDqWhvIHNpZ27DoWx1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJab2JyYXpvdmHFpSB2wqBob3JuZWogxI1hc3RpIHpvem5hbXUgdXBvem9ybmVuw60gc28genZ1a292w71tIHNpZ27DoWxvbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJab2JyYXpvdmHFpSBjZXogb2JyYXpvdmt1IHNvIHp2dWtvdsO9bSBzaWduw6Fsb20iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3Jtw6FsbmUgZmFyYnkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iTm/EjW7DqSBmYXJieSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iVmxhc3Ruw6kgZmFyYnkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJOZXpuw6FtZSBmYXJieSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLDmnByYXZhIGZhcmllYiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IlpvYnJhemnFpSBkbGHFvmRpY3UgUsO9Y2hsZSBuYXN0YXZlbmlhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJQb3ZvbGnFpSB2bGFzdG7DuiB0cmFuc2Zvcm3DoWNpdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IlBvdcW+acWlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IlBvdHZyZGVuaWUgbmFzdGF2ZW7DrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+Ik5pZWt0b3LDqSBuYXN0YXZlbmlhIGZhcmllYiBtw7TFvnUgdG90byB6YXJpYWRlbmllIHpuZWZ1bmvEjW5pxaUuIFRpZXRvIG5hc3RhdmVuaWEgZmFyaWViIHBvdHZyZMOtdGUga2xpa251dMOtbSBuYSB0bGHEjWlkbG8gT0ssIGluw6HEjSBzYSB0aWV0byBuYXN0YXZlbmlhIG/CoDEwIHNla8O6bmQgb2Jub3ZpYS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sCmluZGV4IGNkZmEyZTkuLjk2OTc0YWUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbApAQCAtMzAzLDggKzMwMyw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4iaXNrYW5qZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iQXBsaWthY2lqZSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gbmkgYmlsbyBtb2dvxI1lIHphZ25hdGkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IlZlxI0iPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iSW4gxaFlIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iUmF6ZGVsaSB2b2RvcmF2bm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJSYXpkZWxpIG5hdnBpxI1ubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJSYXpkZWxpIHBvIG1lcmkiPC9zdHJpbmc+CkBAIC0zNjcsNyArMzY2LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iVmFyxI1ldmFuamUgeiBlbmVyZ2lqbyBha3VtdWxhdG9yamEgamUgdmtsb3BsamVubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJPbWVqaSB6bW9nbGppdm9zdCBkZWxvdmFuamEgaW4gcHJlbm9zIHBvZGF0a292IHYgb3phZGp1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJJemtsb3AgdmFyxI1ldmFuamEgeiBlbmVyZ2lqbyBha3VtdWxhdG9yamEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iVnNlYmluYSBqZSBza3JpdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+IkFwbGlrYWNpamEgPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBibyB6YcSNZWxhIHphamVtYXRpIHZzZSwga2FyIGplIHByaWthemFubyBuYSB6YXNsb251LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJUZWdhIG5lIHByaWthxb5pIHZlxI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iSXpicmnFoWkgdnNlIjwvc3RyaW5nPgpAQCAtNDUyLDQgKzQ1MCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLFvWVsaXRlIHZrbG9waXRpIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4ixIxlIMW+ZWxpdGUgcG92ZXphdGkgdGlwa292bmljbyBpbiB0YWJsacSNbmkgcmHEjXVuYWxuaWssIHZrbG9waXRlIEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJWa2xvcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IlVwb3JhYmkgemEgb2J2ZXN0aWxhIHphIHRlbW8gPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iVXBvcmFiaSB6YSB2c2Egb2J2ZXN0aWxhIHphIHRvIGFwbGlrYWNpam8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxva2lyYW5vIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iTml6a2EgcG9tZW1ibm9zdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJPYmnEjWFqbmEgcG9tZW1ibm9zdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJWaXNva2EgcG9tZW1ibm9zdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+Ik51am5hIHBvbWVtYm5vc3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+Ik5pa29saSBuZSBwcmlrYcW+aSB0ZWggb2J2ZXN0aWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iUHJpa2HFvmkgbmEgZG51IHNlem5hbWEgb2J2ZXN0aWwgYnJleiB6dm9rYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iUHJpa2HFvmkgdGEgb2J2ZXN0aWxhIGJyZXogenZva2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlByaWthxb5pIG5hIHZyaHUgc2V6bmFtYSBvYnZlc3RpbCBpbiBwcmVkdmFqYWogenZvayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJaYSBoaXAgcG9rYcW+aSBwcmVkb2dsZWQgbmEgemFzbG9udSBpbiBwcmVkdmFqYWogenZvayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Ik9iacSNYWpuZSBiYXJ2ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOb8SNbmUgYmFydmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IkJhcnZlIHBvIG1lcmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJOZXpuYW5lIGJhcnZlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IlNwcmVtaW5qYW5qZSBiYXJ2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iUHJpa2F6IHBsb8WhxI1pY2UgcyBoaXRyaW1pIG5hc3Rhdml0dmFtaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iT21vZ2/EjWFuamUgc3ByZW1lbWJlIHBvIG1lcmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJVcG9yYWJpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IlBvdHJkaXRldiBuYXN0YXZpdGV2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iWmFyYWRpIG5la2F0ZXJpaCBiYXJ2bmloIG5hc3Rhdml0ZXYgbGFoa28gcG9zdGFuZSB0YSBuYXByYXZhIG5ldXBvcmFibmEuIEtsaWtuaXRlIMK7ViByZWR1wqssIMSNZSDFvmVsaXRlIHBvdHJkaXRpIHRlIGJhcnZuZSBuYXN0YXZpdHZlLiBWIG5hc3Byb3RuZW0gcHJpbWVydSBzZSBib2RvIMSNZXogMTAgc2VrdW5kIHBvbmFzdGF2aWxlIG5hIHBydm90bm8gdnJlZG5vc3QuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNxLXJBTC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sCmluZGV4IGVkMGFkMWUuLmI5MDRhZTEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3EtckFML3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiJrw6tya28iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Ijx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPiBudWsgbXVuZGkgdMOrIG5pc2VqLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJNw6sgc2h1bcOrIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiB0w6sgdGplcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+Ik5kYWplIGhvcml6b250YWxpc2h0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iTmRhaiB2ZXJ0aWthbGlzaHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iTmRhaiB0w6sgcGVyc29uYWxpenVhcsOrbiI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJLdXJzaW1pIGkgYmF0ZXJpc8OrIMOrc2h0w6sgaSBha3Rpdml6dWFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlBha8Orc29uIHZlcHJpbXRhcmluw6sgZGhlIHTDqyBkaMOrbmF0IG7DqyBzZm9uZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iw4dha3Rpdml6byBrdXJzaW1pbiBlIGJhdGVyaXPDqyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJQw6tybWJhanRqZXQgamFuw6sgdMOrIGZzaGVodXJhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGRvIHTDqyBmaWxsb2rDqyB0w6sgcmVnamlzdHJvasOrIMOnZG8gZ2rDqyBxw6sgc2hmYXFldCBuw6sgZWtyYW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ik1vcyBlIHNoZmFxIHPDq3Jpc2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iUGFzdHJvamkgdMOrIGdqaXRoYSI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4iVMOrIGFrdGl2aXpvaGV0IFwiYmx1ZXRvb3RoLWlcIj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iUMOrciB0w6sgbGlkaHVyIHRhc3RpZXLDq24gbWUgdGFibGV0aW4sIG7DqyBmaWxsaW0gZHVoZXQgdMOrIGFrdGl2aXpvc2ggXCJibHVldG9vdGgtaW5cIi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiJBa3Rpdml6byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IlpiYXRvamUgcMOrciBuam9mdGltZXQgbmdhIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IlpiYXRvamUgcMOrciB0w6sgZ2ppdGhhIG5qb2Z0aW1ldCBuZ2Ega3kgYXBsaWthY2lvbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJJIGJsbG9rdWFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iUsOrbmTDq3NpIGUgdWzDq3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iUsOrbmTDq3NpIG5vcm1hbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iUsOrbmTDq3NpIGUgbGFydMOrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iUsOrbmTDq3NpIHVyZ2plbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJNb3MgaSBzaGZhcSBhc25qw6toZXLDqyBrw6t0byBuam9mdGltZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJTaGZhcWkgbsOrIGhlc2h0amUgbsOrIGZ1bmQgdMOrIGxpc3TDq3Mgc8OrIG5qb2Z0aW1ldmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlNoZmFxaSBrw6t0byBuam9mdGltZSBuw6sgaGVzaHRqZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iU2hmYXFpIG7DqyBrcnllIHTDqyBsaXN0w6tzIHPDqyBuam9mdGltZXZlIGRoZSBsw6tzaG8gdGluZ3VsbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJTaGZhcSBuasOrIHbDq3NodHJpbSB0w6sgc2hwZWp0w6sgbsOrIGVrcmFuIGRoZSBsw6tzaG8gdGluZ3VsbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Ik5nanlyYXQgbm9ybWFsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJOZ2p5cmF0IGUgbmF0w6tzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJOZ2p5cmF0IGUgcGVyc29uYWxpenVhcmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJOZ2p5cmEgdMOrIHBhbmpvaHVyYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJNb2RpZmlraW1pIGkgbmdqeXLDq3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJQbGxha8OremEgU2hmYXEgY2lsw6tzaW1ldCBlIHNocGVqdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IlpiYXRvIHRyYW5zZm9ybWltaW4gZSBwZXJzb25hbGl6dWFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iWmJhdG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iS29uZmlybW8gY2lsw6tzaW1ldCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkRpc2EgY2lsw6tzaW1lIG5nanlyYXNoIG11bmQgdGEgYsOram7DqyBrw6t0w6sgcGFqaXNqZSB0w6sgcGFww6tyZG9yc2htZS4gS2xpa28gT0sgcMOrciB0w6sga29uZmlybXVhciBrw6t0byBjaWzDq3NpbWUgbmdqeXJhc2gsIHDDq3JuZHJ5c2hlIGvDq3RvIGNpbMOrc2ltZSBkbyB0w6sgcml2ZW5kb3NlbiBwYXMgMTAgc2Vrb25kYXNoLiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKaW5kZXggMjZjOTY2YS4uNjQ3MGZjYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1sCkBAIC0zMDIsOCArMzAyLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLQv9GA0LXRgtGA0LDQttC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiLQn9C+0LrRgNC10YLQsNGa0LUg0LDQv9C70LjQutCw0YbQuNGY0LUgPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+INC90LjRmNC1INGD0YHQv9C10LvQvi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i0IjQvtGIIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+ItCI0L7RiCA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+ItCf0L7QtNC10LvQuCDRhdC+0YDQuNC30L7QvdGC0LDQu9C90L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLQn9C+0LTQtdC70Lgg0LLQtdGA0YLQuNC60LDQu9C90L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i0J/RgNC40LvQsNCz0L7RktC10L3QviDQtNC10ZnQtdGa0LUiPC9zdHJpbmc+CkBAIC0zNjYsNyArMzY1LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i0KjRgtC10LTRmtCwINCx0LDRgtC10YDQuNGY0LUg0ZjQtSDRg9C60ZnRg9GH0LXQvdCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+ItCh0LzQsNGa0YPRmNC1INC/0LXRgNGE0L7RgNC80LDQvdGB0LUg0Lgg0L/QvtC30LDQtNC40L3RgdC60LUg0L/QvtC00LDRgtC60LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+ItCY0YHQutGZ0YPRh9C4INGI0YLQtdC00ZrRgyDQsdCw0YLQtdGA0LjRmNC1Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+ItCh0LDQtNGA0LbQsNGYINGY0LUg0YHQsNC60YDQuNCy0LXQvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDRm9C1INC/0L7Rh9C10YLQuCDQtNCwINGB0L3QuNC80LAg0YHQstC1INGI0YLQviDRgdC1INC/0YDQuNC60LDQt9GD0ZjQtSDQvdCwINC10LrRgNCw0L3Rgy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i0J3QtSDQv9GA0LjQutCw0LfRg9GYINC/0L7QvdC+0LLQviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLQntCx0YDQuNGI0Lgg0YHQstC1Ijwvc3RyaW5nPgpAQCAtNDUxLDQgKzQ0OSwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLQltC10LvQuNGC0LUg0LvQuCDQtNCwINGD0LrRmdGD0YfQuNGC0LUgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLQlNCwINCx0LjRgdGC0LUg0L/QvtCy0LXQt9Cw0LvQuCDRgtCw0YHRgtCw0YLRg9GA0YMg0YHQsCDRgtCw0LHQu9C10YLQvtC8LCDQv9GA0LLQviDQvNC+0YDQsNGC0LUg0LTQsCDRg9C60ZnRg9GH0LjRgtC1IEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLQo9C60ZnRg9GH0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLQn9GA0LjQvNC10L3QuCDQvdCwINC+0LHQsNCy0LXRiNGC0LXRmtCwINC+INGC0LXQvNC4IDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+ItCf0YDQuNC80LXQvdC4INC90LAg0YHQstCwINC+0LHQsNCy0LXRiNGC0LXRmtCwINC40Lcg0L7QstC1INCw0L/Qu9C40LrQsNGG0LjRmNC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+ItCR0LvQvtC60LjRgNCw0L3QsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+ItCc0LDQu9CwINCy0LDQttC90L7RgdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+ItCj0L7QsdC40YfQsNGY0LXQvdCwINCy0LDQttC90L7RgdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+ItCS0LXQu9C40LrQsCDQstCw0LbQvdC+0YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+ItCd0LDRmNCy0LXRm9CwINCy0LDQttC90L7RgdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLQntCy0LAg0L7QsdCw0LLQtdGI0YLQtdGa0LAg0YHQtSDQvdC40LrQsNC00LAg0L3QtSDQv9GA0LjQutCw0LfRg9GY0YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4i0J/RgNC40LrQsNC30YPRmNGDINGB0LUg0YMg0LTQvdGDINC70LjRgdGC0LUg0L7QsdCw0LLQtdGI0YLQtdGa0LAg0LHQtdC3INC30LLRg9C60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+ItCe0LLQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDRgdC1INC/0YDQuNC60LDQt9GD0ZjRgyDQsdC10Lcg0LfQstGD0LrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i0J/RgNC40LrQsNC30YPRmNGDINGB0LUg0YMg0LLRgNGF0YMg0LvQuNGB0YLQtSDQvtCx0LDQstC10YjRgtC10ZrQsCDQuCDQtdC80LjRgtGD0ZjQtSDRgdC1INC30LLRg9C6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+ItCd0LDQutGA0LDRgtC60L4g0YHQtSDQv9GA0LjQutCw0LfRg9GY0YMg0L3QsCDQtdC60YDQsNC90YMg0Lgg0LXQvNC40YLRg9GY0LUg0YHQtSDQt9Cy0YPQuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+ItCd0L7RgNC80LDQu9C90LUg0LHQvtGY0LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i0J3QvtGb0L3QtSDQsdC+0ZjQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i0J/RgNC40LvQsNCz0L7RktC10L3QtSDQsdC+0ZjQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+ItCd0LXQv9C+0LfQvdCw0YLQtSDQsdC+0ZjQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLQmNC30LzQtdC90LAg0LHQvtGY0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLQn9GA0LjQutCw0LbQuCDQv9C70L7Rh9C40YbRgyDQkdGA0LfQsCDQv9C+0LTQtdGI0LDQstCw0ZrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i0J7QvNC+0LPRg9Gb0Lgg0L/RgNC40LvQsNCz0L7RktC10L3RgyDRgtGA0LDQvdGB0YTQvtGA0LzQsNGG0LjRmNGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i0J/RgNC40LzQtdC90LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i0J/QvtGC0LLRgNC00LjRgtC1INC/0L7QtNC10YjQsNCy0LDRmtCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i0J3QtdC60LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LHQvtGY0LAg0LzQvtCz0YMg0LTQsCDRg9GH0LjQvdC1INGD0YDQtdGS0LDRmCDQvdC10YPQv9C+0YLRgNC10LHRmdC40LLQuNC8LiDQmtC70LjQutC90LjRgtC1INC90LAg0J/QvtGC0LLRgNC00Lgg0LTQsCDQsdC40YHRgtC1INC/0L7RgtCy0YDQtNC40LvQuCDQvtCy0LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LHQvtGY0LAsINC/0L7RiNGC0L4g0ZvQtSDRgdC1INGDINGB0YPQv9GA0L7RgtC90L7QvCDQvtCy0LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YDQtdGB0LXRgtC+0LLQsNGC0Lgg0L3QsNC60L7QvSAxMCDRgdC10LrRg9C90LTQuC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCmluZGV4IGYxZDY5MWUuLjVmMmIzOTcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zdi9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4ic8O2ayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iRGV0IGdpY2sgaW50ZSBhdHQgc3RhcnRhIGFwcGVuIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iTWVyIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiB0aWxsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJEZWxhIGhvcmlzb250ZWxsdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IkRlbGEgdmVydGlrYWx0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IkRlbGEgYW5wYXNzYWQiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iQmF0dGVyaXNwYXJsw6RnZXQgaGFyIGFrdGl2ZXJhdHMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iTWluc2thciBwcmVzdGFuZGEgb2NoIGJha2dydW5kc2RhdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IkluYWt0aXZlcmEgYmF0dGVyaXNwYXJsw6RnZXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4iSW5uZWjDpWxsIGhhciBkb2x0cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiB0YXIgZW4gYmlsZCBhdiBhbGx0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IlZpc2EgaW50ZSBpZ2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlJlbnNhIGFsbGEiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IlZpbGwgZHUgYWt0aXZlcmEgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJPbSBkdSB2aWxsIGFuc2x1dGEgdGFuZ2VudGJvcmRldCB0aWxsIHN1cmZwbGF0dGFuIG3DpXN0ZSBkdSBmw7Zyc3QgYWt0aXZlcmEgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IkFrdGl2ZXJhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iw4RuZHJhIGbDtnIgYWxsYSBhdmlzZXJpbmdhciBmw7ZyIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IsOEbmRyYSBmw7ZyIGFsbGEgYXZpc2VyaW5nYXIgZnLDpW4gZGVuIGjDpHIgYXBwZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQmxvY2tlcmFkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iT3Zpa3RpZyBhdmlzZXJpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iVmFubGlnIGF2aXNlcmluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJWaWt0aWcgYXZpc2VyaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iQnLDpWRza2FuZGUgYXZpc2VyaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJWaXNhIGFsZHJpZyBkZSBow6RyIGF2aXNlcmluZ2FybmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iVmlzYSBsw6RuZ3N0IG5lZCBww6UgbGlzdGFuLCB1dGFuIGxqdWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlZpc2EgYXZpc2VyaW5nYXJuYSB1dGFuIGxqdWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IlZpc2EgaMO2Z3N0IHVwcCBww6UgbGlzdGFuLCBtZWQgbGp1ZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJWaXNhIHDDpSBza8Okcm1lbiwgbWVkIGxqdWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJOb3JtYWxhIGbDpHJnZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iTmF0dGbDpHJnZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IkFucGFzc2FkZSBmw6RyZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iT2vDpG5kYSBmw6RyZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+IkbDpHJnw6RuZHJpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiJWaXNhIHJ1dGFuIFNuYWJiaW5zdMOkbGxuaW5nYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IkFrdGl2ZXJhIGFucGFzc2FkIG9tdmFuZGxpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJWZXJrc3TDpGxsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkJla3LDpGZ0YSBpbnN0w6RsbG5pbmdhcm5hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iVmlzc2EgZsOkcmdpbnN0w6RsbG5pbmdhciBrYW4gZ8O2cmEgZGVuIGjDpHIgZW5oZXRlbiBvYW52w6RuZGJhci4gS2xpY2thIHDDpSBPSyBvbSBkdSB2aWxsIGJla3LDpGZ0YSBmw6RyZ2luc3TDpGxsbmluZ2FybmEsIGFubmFycyDDpXRlcnN0w6RsbHMgaW5zdMOkbGxuaW5nYXJuYSBlZnRlciAxMCBzZWt1bmRlci4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCmluZGV4IDQxMDFiYTcuLjhmOTYyZGEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4idGFmdXRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJIYWlrdXdlemEga3Vhbnppc2hhIDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iWmFpZGkiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iTnlpbmdpbmUgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiJHYXdhbnlhIE1sYWxvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iR2F3YW55YSBXaW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+Ik1hYWx1bSBJbGl5b2dhd2FueXdhIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+Iktpb2tvYSBiZXRyaSBraW1ld2FzaHdhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+Ikh1cHVuZ3V6YSB1dGVuZGFqaSBuYSBkYXRhIHlhIGNoaW5pIGNoaW5pIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJaaW1hIGtpb2tvYSBiZXRyaSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJNYXVkaHVpIHlhbWVmaWNod2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz7CoGl0YWFuemEga3VwaWdhIHBpY2hhIGtpbGEga2l0dSBraW5hY2hvb255ZXNod2Ega3dlbnllIHNrcmluaSB5YWtvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJVc2lvbnllc2hlIHRlbmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iRnV0YSB6b3RlIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJKZSwgdW5nZXBlbmRhIGt1d2FzaGEgQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJJbGkgdXVuZ2FuaXNoZSBLaWJvZGkgeWFrbyBrd2VueWUga29tcHl1dGEgeWFrbyBraWJhbywgbGF6aW1hIGt3YW56YSB1d2FzaGUgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+Ildhc2hhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iVHVtaWEga2F0aWthIGFyaWZhIHphIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IlR1bWlhIGthdGlrYSBhcmlmYSB6b3RlIGt1dG9rYSBwcm9ncmFtdSBoaWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iQW1lenVpd2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJVbXVoaW11IGtpd2FuZ28gY2hhIGNoaW5pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IlVtdWhpbXUgd2Ega2l3YW5nbyBjaGEga2F3YWlkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJVbXVoaW11IHdhIGtpd2FuZ28gY2hhIGp1dSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IlVtdWhpbXUgd2EgaGFsaSB5YSBkaGFydXJhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJVc2lvbnllc2hlIGFyaWZhIGhpemkga2Ftd2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iT255ZXNoYSBrYXRpa2Egc2VoZW11IHlhIGNoaW5pIHlhIG9yb2RoYSB5YSBhcmlmYSBiaWxhIHNhdXRpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiJPbnllc2hhIGFyaWZhIGhpemkgYmlsYSBzYXV0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4iT255ZXNoYSBrYXRpa2Egc2VoZW11IHlhIGp1dSB5YSBvcm9kaGEgeWEgYXJpZmEgbmEgaXRvZSBzYXV0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJXZWthIG9ueWVzaG8gbGEga3VjaHVuZ3VsaWEga3dlbnllIHNrcmluaSBuYSBpdG9lIHNhdXRpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iUmFuZ2kgemEga2F3YWlkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJSYW5naSB6YSB1c2lrdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iUmFuZ2kgbWFhbHVtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4iUmFuZ2kgemlzaXpvanVsaWthbmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iVWJhZGlsaXNoYWppIHdhIHJhbmdpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iT255ZXNoYSBraWdhZSBjaGEgTWlwYW5naWxpbyB5YSBIYXJha2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+Ildhc2hhIHViYWRpbGlzaGFqaSBtYWFsdW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiJUdW1pYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJUaGliaXRpc2hhIG1pcGFuZ2lsaW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJCYWFkaGkgeWEgbWlwYW5naWxpbyB5YSByYW5naSBpbmF3ZXphIGt1ZmFueWEga2lmYWEgaGlraSBraXNpdHVtaWtlLiBCb2Z5YSBTYXdhIGlsaSB1dGhpYml0aXNoZSBtaXBhbmdpbGlvIGhpaSB5YSByYW5naSwgdmluZ2luZXZ5bywgbWlwYW5naWxpbyBoaWkgaXRhaml3ZWthIHVweWEgYmFhZGEgeWEgc2VrdW5kZSAxMC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdGEtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10YS1ySU4vc3RyaW5ncy54bWwKaW5kZXggZTNiZWQwOC4uYTYyNWM2ZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10YS1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10YS1ySU4vc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuCupOCvh+Cun+CvgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+4K6Q4K6k4K+NIOCupOCviuCun+CumeCvjeCulSDgrq7gr4Hgrp/grr/grq/grrXgrr/grrLgr43grrLgr4guIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuCuruCvh+CusuCvgeCuruCvjSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLgrq7gr4fgrrLgr4Hgrq7gr40gPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLgrpXgrr/grp/gr4jgrq7grp/gr43grp/grq7grr7grpXgrqrgr40g4K6q4K6/4K6w4K6/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i4K6a4K+G4K6Z4K+N4K6V4K+B4K6k4K+N4K6k4K6+4K6V4K6q4K+NIOCuquCuv+CusOCuvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLgrqTgrqngrr/grrXgrr/grrDgr4Hgrqrgr43grqrgrqTgr43grqTgrr/grrLgr40g4K6q4K6/4K6w4K6/Ijwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuCuquCvh+Cun+CvjeCun+CusOCuvyDgrprgr4fgrq7grr/grqrgr43grqrgrr7grqngr40g4K6H4K6v4K6V4K+N4K6V4K6k4K+N4K6k4K6/4K6y4K+NIOCuieCus+CvjeCus+CupOCvgSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLgrprgr4bgrq/grrLgr43grqTgrr/grrHgrqngr4jgrq/gr4Hgrq7gr40g4K6q4K6/4K6p4K+N4K6q4K+B4K6y4K6k4K+NIOCupOCusOCuteCviOCur+CvgeCuruCvjSDgrpXgr4HgrrHgr4jgrpXgr43grpXgrr/grrHgrqTgr4EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuCuquCvh+Cun+CvjeCun+CusOCuvyDgrprgr4fgrq7grr/grqrgr43grqrgrr7grqngr4gg4K6u4K+B4K6f4K6V4K+N4K6V4K+BIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuCuruCuseCviOCuqOCvjeCupOCvgeCus+CvjeCusyDgrongrrPgr43grrPgrp/grpXgr43grpXgrq7gr40iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+IuCupOCuv+CusOCviOCur+Cuv+CusuCvjSDgrpXgrr7grp/gr43grp/grqrgr43grqrgrp/gr4Hgrq7gr40g4K6F4K6p4K+I4K6k4K+N4K6k4K+I4K6v4K+B4K6u4K+NIDx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4K6q4K6f4K6u4K+G4K6f4K+B4K6V4K+N4K6V4K+B4K6u4K+NLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgrq7gr4DgrqPgr43grp/gr4Hgrq7gr40g4K6V4K6+4K6f4K+N4K6f4K6+4K6k4K+HIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuCujuCusuCvjeCusuCuvuCuteCuseCvjeCuseCviOCur+CvgeCuruCvjSDgroXgrrTgrr8iPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuCuquCvgeCus+CvguCun+CvguCupOCvjeCupOCviCDgrofgrq/grpXgr43grpXgrrXgrr4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuCuieCumeCvjeCuleCus+CvjSDgrp/gr4fgrqrgr43grrLgr4bgrp/gr43grp/gr4Hgrp/grqngr40g4K614K6/4K6a4K+I4K6q4K+N4K6q4K6y4K6V4K+I4K6v4K+IIOCuh+Cuo+CviOCuleCvjeCulSwg4K6u4K+B4K6k4K6y4K6/4K6y4K+NIOCuquCvgeCus+CvguCun+CvguCupOCvjeCupOCviCDgrofgrq/grpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IuCuh+Cur+CuleCvjeCuleCvgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDgroXgrrHgrr/grrXgrr/grqrgr43grqrgr4HgrpXgrrPgr4HgrpXgr43grpXgr4Hgrqrgr40g4K6q4K6v4K6p4K+N4K6q4K6f4K+B4K6k4K+N4K6k4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i4K6H4K6o4K+N4K6k4K6q4K+NIOCuquCur+CuqeCvjeCuquCuvuCun+CvjeCun+Cuv+CusuCuv+CusOCvgeCuqOCvjeCupOCvgSDgrrXgrrDgr4Hgrq7gr40g4K6O4K6y4K+N4K6y4K6+IOCuheCuseCuv+CuteCuv+CuquCvjeCuquCvgeCuleCus+CvgeCuleCvjeCuleCvgeCuruCvjSDgrqrgrq/grqngr43grqrgrp/gr4HgrqTgr43grqTgr4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i4K6k4K6f4K+B4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i4K6u4K+B4K6V4K+N4K6V4K6/4K6v4K6k4K+N4K6k4K+B4K614K6u4K+NICjgrpXgr4HgrrHgr4jgrrXgr4EpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuCuruCvgeCuleCvjeCuleCuv+Cur+CupOCvjeCupOCvgeCuteCuruCvjSAo4K6H4K6v4K6y4K+N4K6q4K+BKSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLgrq7gr4HgrpXgr43grpXgrr/grq/grqTgr43grqTgr4HgrrXgrq7gr40gKOCuheCupOCuv+CuleCuruCvjSkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLgrq7gr4HgrpXgr43grpXgrr/grq/grqTgr43grqTgr4HgrrXgrq7gr40gKOCuheCuteCumuCusOCuruCvjSkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuCuh+CuqOCvjeCupCDgroXgrrHgrr/grrXgrr/grqrgr43grqrgr4HgrpXgrrPgr4gg4K6S4K6w4K+B4K6q4K+L4K6k4K+B4K6u4K+NIOCuleCuvuCun+CvjeCun+CuvuCupOCvhyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLgrpLgrrLgrr/grq/grr/grqngr43grrHgrr8g4K6F4K6x4K6/4K614K6/4K6q4K+N4K6q4K+B4K6q4K+NIOCuquCun+CvjeCun+Cuv+Cur+CusuCuv+CuqeCvjSDgrpXgr4DgrrTgr4cg4K6V4K6+4K6f4K+N4K6f4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfZGVmYXVsdCIgbXNnaWQ9IjQ5MjY1Mjk2MTU5MjA2MTA4MTciPiLgrpLgrrLgrr/grq/grr/grqngr43grrHgrr8g4K6H4K6o4K+N4K6kIOCuheCuseCuv+CuteCuv+CuquCvjeCuquCvgeCuleCus+CviOCuleCvjSDgrpXgrr7grp/gr43grp/gr4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuCuheCuseCuv+CuteCuv+CuquCvjeCuquCvgeCuleCus+CvjSDgrqrgrp/gr43grp/grr/grq/grrLgrr/grqngr40g4K6u4K+H4K6y4K+NIOCuquCuleCvgeCupOCuv+Cur+Cuv+CusuCvjSDgrpLgrrLgrr/grq/gr4Hgrp/grqngr40g4K6V4K6+4K6f4K+N4K6f4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IuCukuCusuCuv+Cur+CvgeCun+CuqeCvjSDgrqTgrr/grrDgr4jgrq/grr/grrLgr40g4K6V4K6+4K6f4K+N4K6f4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i4K6H4K6v4K6y4K+N4K6q4K6+4K6pIOCuteCuo+CvjeCuo+CumeCvjeCuleCus+CvjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLgrofgrrDgrrXgr4Hgrqjgr4fgrrAg4K614K6j4K+N4K6j4K6Z4K+N4K6V4K6z4K+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLgrqTgrqngrr/grqrgr43grqrgrq/grqngr40g4K614K6j4K+N4K6j4K6Z4K+N4K6V4K6z4K+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i4K6F4K6x4K6/4K6v4K6q4K+N4K6q4K6f4K6+4K6kIOCuteCuo+CvjeCuo+CumeCvjeCuleCus+CvjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLgrrXgrqPgr43grqMg4K6u4K6+4K6x4K+N4K6x4K6u4K+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i4K614K6/4K6w4K+I4K614K+BIOCuheCuruCviOCuquCvjeCuquCvgeCuleCus+CvjSDgrp/gr4jgrrLgr4jgrpXgr40g4K6V4K6+4K6f4K+N4K6f4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLgrqTgrqngrr/grqrgr43grqrgrq/grqngr40g4K614K6j4K+N4K6jIOCuruCuvuCuseCvjeCuseCupOCvjeCupOCviCDgrofgrq/grpXgr43grpXgr4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLgrqrgrq/grqngr43grqrgrp/gr4HgrqTgr43grqTgr4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4K6F4K6u4K+I4K6q4K+N4K6q4K+B4K6V4K6z4K+IIOCuieCuseCvgeCupOCuv+CuquCvjeCuquCun+CvgeCupOCvjeCupOCvgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuCumuCuv+CusiDgrrXgrqPgr43grqMg4K6F4K6u4K+I4K6q4K+N4K6q4K+B4K6V4K6z4K+NIOCuh+CuqOCvjeCupOCumuCvjSDgrprgrr7grqTgrqngrqTgr43grqTgr4jgrqrgr40g4K6q4K6v4K6p4K+N4K6q4K6f4K+B4K6k4K+N4K6kIOCuruCvgeCun+Cuv+Cur+CuvuCupOCuquCun+CuvyDgrprgr4bgrq/gr43grq/grrLgrr7grq7gr40uIOCuh+CuqOCvjeCupCDgrrXgrqPgr43grqMg4K6F4K6u4K+I4K6q4K+N4K6q4K+B4K6V4K6z4K+IIOCuieCuseCvgeCupOCuv+CuquCvjeCuquCun+CvgeCupOCvjeCupCwg4K6a4K6w4K6/IOCujuCuqeCvjeCuquCupOCviOCuleCvjSDgrpXgrr/grrPgrr/grpXgr40g4K6a4K+G4K6v4K+N4K6v4K614K+B4K6u4K+NLCDgrofgrrLgr43grrLgr4jgrq/gr4bgrqngrr/grrLgr40g4K6H4K6o4K+N4K6kIOCuheCuruCviOCuquCvjeCuquCvgeCuleCus+CvjSAxMCDgrrXgrr/grqngrr7grp/grr/grpXgrrPgr4HgrpXgr43grpXgr4Hgrqrgr40g4K6q4K6/4K6p4K+NIOCuruCvgOCun+CvjeCun+CuruCviOCuleCvjeCuleCuquCvjeCuquCun+CvgeCuruCvjS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdGUtcklOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10ZS1ySU4vc3RyaW5ncy54bWwKaW5kZXggZTcyNWQ5NS4uOWQxNDAzZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10ZS1ySU4vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10ZS1ySU4vc3RyaW5ncy54bWwKQEAgLTM2NCw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLgsKzgsY3gsK/gsL7gsJ/gsLDgsY0g4LC44LGH4LC14LCw4LGNIOCwhuCwqOCxjSDgsJrgsYfgsK/gsKzgsKHgsL/gsILgsKbgsL8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i4LCq4LCo4LC/4LCk4LGA4LCw4LGB4LCo4LC/IOCwruCwsOCwv+Cwr+CxgSDgsKjgsYfgsKrgsKXgsY3gsK8g4LCh4LGH4LCf4LC+4LCo4LGBIOCwpOCwl+CxjeCwl+Cwv+CwuOCxjeCwpOCxgeCwguCwpuCwvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i4LCs4LGN4LCv4LC+4LCf4LCw4LGAIOCwuOCxh+CwteCwsOCxjeKAjOCwqOCxgSDgsIbgsKvgsY0g4LCa4LGH4LCv4LC/Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuCwleCwguCwn+CxhuCwguCwn+CxjeKAjOCwsuCxgSDgsKbgsL7gsJrgsKzgsKHgsY3gsKHgsL7gsK/gsL8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4LCu4LGAIOCwuOCxjeCwleCxjeCwsOCxgOCwqOCxjeKAjOCwquCxiCDgsJXgsKjgsL/gsKrgsL/gsILgsJrgsYcg4LCq4LGN4LCw4LCk4LC/4LCm4LC+4LCo4LGN4LCo4LC/IOCwleCxjeCwr+CwvuCwquCxjeCwmuCwsOCxjSDgsJrgsYfgsK/gsKHgsIIg4LCq4LGN4LCw4LC+4LCw4LCC4LCt4LC/4LC44LGN4LCk4LGB4LCC4LCm4LC/LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiLgsK7gsLPgsY3gsLLgsYAg4LCa4LGC4LCq4LC14LCm4LGN4LCm4LGBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuCwheCwqOCxjeCwqOCxgCDgsJXgsY3gsLLgsL/gsK/gsLDgsY0g4LCa4LGH4LCv4LCC4LCh4LC/Ijwvc3RyaW5nPgpAQCAtNDQ5LDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLgsKzgsY3gsLLgsYLgsJ/gsYLgsKTgsY0g4LCG4LCo4LGNIOCwmuCxh+Cwr+CwvuCwsuCwvj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4i4LCu4LGAIOCwleCxgOCwrOCxi+CwsOCxjeCwoeCxjeKAjOCwqOCxgSDgsK7gsYAg4LCf4LC+4LCs4LGN4LCy4LGG4LCf4LGN4oCM4LCk4LGLIOCwleCwqOCxhuCwleCxjeCwn+CxjSDgsJrgsYfgsK/gsKHgsL7gsKjgsL/gsJXgsL8sIOCwruCxgOCwsOCxgSDgsK7gsYHgsILgsKbgsYHgsJfgsL4g4LCs4LGN4LCy4LGC4LCf4LGC4LCk4LGNIOCwhuCwqOCxjSDgsJrgsYfgsK/gsL7gsLLgsL8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i4LCG4LCo4LGNIOCwmuCxh+Cwr+CwvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiDgsKjgsYvgsJ/gsL/gsKvgsL/gsJXgsYfgsLfgsKjgsY3igIzgsLLgsJXgsYEg4LC14LCw4LGN4LCk4LC/4LCC4LCq4LCc4LGH4LCv4LC/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4i4LCIIOCwheCwqOCxgeCwteCwsOCxjeCwpOCwqOCwgiDgsKjgsYHgsILgsKHgsL8g4LCF4LCC4LCm4LC/4LCC4LCa4LCs4LCh4LGHIOCwheCwqOCxjeCwqOCwvyDgsKjgsYvgsJ/gsL/gsKvgsL/gsJXgsYfgsLfgsKjgsY3igIzgsLLgsJXgsYEg4LC14LCw4LGN4LCk4LC/4LCC4LCq4LCc4LGH4LCv4LC/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IuCwrOCxjeCwsuCwvuCwleCxjSDgsJrgsYfgsK/gsKzgsKHgsL/gsILgsKbgsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLgsKTgsJXgsY3gsJXgsYHgsLUg4LCq4LGN4LCw4LC+4LCu4LGB4LCW4LGN4LCv4LCkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IuCwuOCwvuCwp+CwvuCwsOCwoyDgsKrgsY3gsLDgsL7gsK7gsYHgsJbgsY3gsK/gsKQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i4LCF4LCn4LC/4LCVIOCwquCxjeCwsOCwvuCwruCxgeCwluCxjeCwr+CwpCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuCwheCwpOCxjeCwr+CwteCwuOCwsCDgsKrgsY3gsLDgsL7gsK7gsYHgsJbgsY3gsK/gsKQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuCwiCDgsKjgsYvgsJ/gsL/gsKvgsL/gsJXgsYfgsLfgsKjgsY3igIzgsLLgsKjgsYEg4LCO4LCq4LGN4LCq4LGB4LCh4LGCIOCwmuCxguCwquCwpuCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLgsKjgsYvgsJ/gsL/gsKvgsL/gsJXgsYfgsLfgsKjgsY3igIzgsLIg4LCc4LC+4LCs4LC/4LCk4LC+IOCwpuCwv+Cwl+CxgeCwtSDgsK3gsL7gsJfgsILgsLLgsYsg4LC24LCs4LGN4LCm4LCCIOCwsuCxh+CwleCxgeCwguCwoeCwviDgsJrgsYLgsKrgsYHgsKTgsYHgsILgsKbgsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuCwiCDgsKjgsYvgsJ/gsL/gsKvgsL/gsJXgsYfgsLfgsKjgsY3igIzgsLLgsKjgsYEg4LC24LCs4LGN4LCm4LCCIOCwsuCxh+CwleCxgeCwguCwoeCwviDgsJrgsYLgsKrgsYHgsKTgsYHgsILgsKbgsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IuCwqOCxi+Cwn+Cwv+Cwq+Cwv+CwleCxh+Cwt+CwqOCxjeKAjOCwsiDgsJzgsL7gsKzgsL/gsKTgsL4g4LCO4LCX4LGB4LC1IOCwreCwvuCwl+CwguCwsuCxiyDgsLbgsKzgsY3gsKbgsILgsKTgsYsg4LCa4LGC4LCq4LGB4LCk4LGB4LCC4LCm4LC/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IuCwuOCxjeCwleCxjeCwsOCxgOCwqOCxjeKAjOCwquCxiCDgsLbgsYDgsJjgsY3gsLDgsILgsJfgsL4g4LC24LCs4LGN4LCm4LCC4LCk4LGLIOCwmuCxguCwquCxgeCwpOCxgeCwguCwpuCwvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuCwuOCwvuCwp+CwvuCwsOCwoyDgsLDgsILgsJfgsYHgsLLgsYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i4LCw4LC+4LCk4LGN4LCw4LC/IOCwsOCwguCwl+CxgeCwsuCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i4LCF4LCo4LGB4LCV4LGC4LCyIOCwsOCwguCwl+CxgeCwsuCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuCwpOCxhuCwsuCwv+Cwr+CwqOCwvyDgsLDgsILgsJfgsYHgsLLgsYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i4LCw4LCC4LCX4LGBIOCwuOCwteCwsOCwoyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IuCwtuCxgOCwmOCxjeCwsCDgsLjgsYbgsJ/gsY3gsJ/gsL/gsILgsJfgsY3igIzgsLIg4LCf4LGI4LCy4LGN4oCM4LCo4LGBIOCwmuCxguCwquCwguCwoeCwvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i4LCF4LCo4LGB4LCV4LGC4LCyIOCwquCwsOCwv+CwteCwsOCxjeCwpOCwqOCwqOCxgSDgsKrgsY3gsLDgsL7gsLDgsILgsK3gsL/gsILgsJrgsILgsKHgsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLgsLXgsLDgsY3gsKTgsL/gsILgsKrgsJzgsYfgsK/gsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4i4LC44LGG4LCf4LGN4LCf4LC/4LCC4LCX4LGN4oCM4LCy4LCo4LGBIOCwqOCwv+CwsOCxjeCwp+CwvuCwsOCwv+CwguCwmuCwguCwoeCwvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IuCwleCxiuCwqOCxjeCwqOCwvyDgsLDgsILgsJfgsYEg4LC44LGG4LCf4LGN4LCf4LC/4LCC4LCX4LGN4oCM4LCyIOCwteCwsuCwqCDgsIgg4LCq4LCw4LC/4LCV4LCw4LCCIOCwieCwquCwr+Cxi+Cwl+Cwv+CwguCwmuCwsuCxh+CwqOCwvyDgsLXgsL/gsKfgsILgsJfgsL4g4LCF4LCv4LC/4LCq4LGL4LC14LCa4LGN4LCa4LGBLiDgsIgg4LCw4LCC4LCX4LGBIOCwuOCxhuCwn+CxjeCwn+Cwv+CwguCwl+CxjeKAjOCwsuCwqOCxgSDgsKjgsL/gsLDgsY3gsKfgsL7gsLDgsL/gsILgsJrgsKHgsL7gsKjgsL/gsJXgsL8g4LC44LCw4LGHIOCwleCxjeCwsuCwv+CwleCxjSDgsJrgsYfgsK/gsILgsKHgsL8g4LCy4LGH4LCm4LCC4LCf4LGHIOCwiCDgsLjgsYbgsJ/gsY3gsJ/gsL/gsILgsJfgsY3igIzgsLLgsYEgMTAg4LC44LGG4LCV4LCo4LGN4LCyIOCwpOCwsOCxjeCwteCwvuCwpCDgsLDgsYDgsLjgsYbgsJ/gsY0g4LCa4LGH4LCv4LCs4LCh4LCk4LC+4LCv4LC/LiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKaW5kZXggYTYwMTU3Zi4uMzhlMDI4YyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLguITguYnguJnguKvguLIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IuC5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5gOC4o+C4tOC5iOC4oeC5g+C4iuC5iSA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04LihIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+IuC4reC4teC4gSA8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4g4LiH4Liy4LiZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLguYHguKLguIHguYPguJnguYHguJnguKfguJnguK3guJkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiLguYHguKLguIHguYPguJnguYHguJnguKfguJXguLHguYnguIciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i4LmB4Lii4LiB4LmB4Lia4Lia4LiB4Liz4Lir4LiZ4LiU4LmA4Lit4LiHIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IuC5gOC4m+C4tOC4lOC5guC4q+C4oeC4lOC4m+C4o+C4sOC4q+C4ouC4seC4lOC5geC4muC4leC5gOC4leC4reC4o+C4teC5iOC4reC4ouC4ueC5iCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiLguKXguJTguIHguLLguKPguYPguIrguYnguYHguJrguJXguYDguJXguK3guKPguLXguYjguYHguKXguLDguILguYnguK3guKHguLnguKXguYHguJrguYfguIHguIHguKPguLLguKfguJTguYwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IuC4m+C4tOC4lOC5guC4q+C4oeC4lOC4m+C4o+C4sOC4q+C4ouC4seC4lOC5geC4muC4leC5gOC4leC4reC4o+C4teC5iCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiLguYDguJnguLfguYnguK3guKvguLLguJbguLnguIHguIvguYjguK3guJnguYTguKfguYkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4g4LiI4Liw4LmA4Lij4Li04LmI4Lih4LiI4Lix4Lia4Lig4Liy4Lie4LiX4Li44LiB4Lit4Lii4LmI4Liy4LiH4LiX4Li14LmI4LmB4Liq4LiU4LiH4Lia4LiZ4Lir4LiZ4LmJ4Liy4LiI4LitIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IuC5hOC4oeC5iOC4leC5ieC4reC4h+C5geC4quC4lOC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC4meC4teC5ieC4reC4teC4gSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLguKXguYnguLLguIfguJfguLHguYnguIfguKvguKHguJQiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuC5gOC4m+C4tOC4lOC4muC4peC4ueC4l+C4ueC4mOC5hOC4q+C4oSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLguKvguLLguIHguJXguYnguK3guIfguIHguLLguKPguYDguIrguLfguYjguK3guKHguJXguYjguK3guYHguJvguYnguJnguJ7guLTguKHguJ7guYzguIHguLHguJrguYHguJfguYfguJrguYDguKXguYfguJUg4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LmA4Lib4Li04LiU4Lia4Lil4Li54LiX4Li54LiY4LiB4LmI4Lit4LiZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4i4LmA4Lib4Li04LiUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4i4LiZ4Liz4LmE4Lib4LmD4LiK4LmJ4LiB4Lix4Lia4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZIDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuC4meC4s+C5hOC4m+C5g+C4iuC5ieC4geC4seC4muC4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4l+C4seC5ieC4h+C4q+C4oeC4lOC4iOC4suC4geC5geC4reC4m+C4meC4teC5iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLguJrguKXguYfguK3guIHguYHguKXguYnguKciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLguITguKfguLLguKHguKrguLPguITguLHguI3guJXguYjguLMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i4LiE4Lin4Liy4Lih4Liq4Liz4LiE4Lix4LiN4Lib4LiB4LiV4Li0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IuC4hOC4p+C4suC4oeC4quC4s+C4hOC4seC4jeC4quC4ueC4hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IuC4hOC4p+C4suC4oeC4quC4s+C4hOC4seC4jeC5gOC4o+C5iOC4h+C4lOC5iOC4p+C4mSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i4LmE4Lih4LmI4LiV4LmJ4Lit4LiH4LmB4Liq4LiU4LiH4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IuC5geC4quC4lOC4h+C4l+C4teC5iOC4lOC5ieC4suC4meC4peC5iOC4suC4h+C4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC5guC4lOC4ouC5hOC4oeC5iOC4quC5iOC4h+C5gOC4quC4teC4ouC4hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i4LmB4Liq4LiU4LiH4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJ4LmC4LiU4Lii4LmE4Lih4LmI4Liq4LmI4LiH4LmA4Liq4Li14Lii4LiHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLguYHguKrguJTguIfguJfguLXguYjguJTguYnguLLguJnguJrguJnguILguK3guIfguKPguLLguKLguIHguLLguKPguYHguIjguYnguIfguYDguJXguLfguK3guJnguYHguKXguLDguKrguYjguIfguYDguKrguLXguKLguIciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i4LmB4Liq4LiU4LiH4Lia4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LmD4LiZ4LiK4LmI4Lin4LiH4LmA4Lin4Lil4Liy4Liq4Lix4LmJ4LiZ4LmGIOC5geC4peC4sOC4quC5iOC4h+C5gOC4quC4teC4ouC4hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuC4quC4teC4m+C4geC4leC4tCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLguKrguLXguKLguLLguKHguITguYjguLPguITguLfguJkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuC4quC4teC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5gOC4reC4hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuC4quC4teC4l+C4teC5iOC5hOC4oeC5iOC4o+C4ueC5ieC4iOC4seC4gSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLguIHguLLguKPguJvguKPguLHguJrguYDguJvguKXguLXguYjguKLguJnguKrguLUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLguYHguKrguJTguIfguYTguJfguKXguYzguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJTguYjguKfguJkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5gOC4reC4hyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IuC5g+C4iuC5iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLguKLguLfguJnguKLguLHguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKrguLXguJrguLLguIfguK3guKLguYjguLLguIfguK3guLLguIjguJfguLPguYPguKvguYnguK3guLjguJvguIHguKPguJPguYzguJnguLXguYnguYPguIrguYnguIfguLLguJnguYTguKHguYjguYTguJTguYkg4LiE4Lil4Li04LiB4LiV4LiB4Lil4LiH4LmA4Lie4Li34LmI4Lit4Lii4Li34LiZ4Lii4Lix4LiZ4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4Li14LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJIOC4oeC4tOC4ieC4sOC4meC4seC5ieC4meC4o+C4sOC4muC4muC4iOC4sOC4o+C4teC5gOC4i+C5h+C4leC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4q+C4peC4seC4h+C4iOC4suC4gSAxMCDguKfguLTguJnguLLguJfguLUiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sCmluZGV4IGExOWM5NGQuLjU4MTUwNDEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4ibWFnaGFuYXAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IkhpbmRpIG1hc2ltdWxhbiA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IkhpZ2l0IHBhIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBQYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4iU3BsaXQgSG9yaXpvbnRhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IlNwbGl0IFZlcnRpY2FsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IlNwbGl0IEN1c3RvbSI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJOYWthLW9uIGFuZyB0YWdhdGlwaWQgbmcgYmF0ZXJ5YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJCaW5hYmF3YXNhbiBhbmcgcGFnZ2FuYXAgYXQgZGF0YSBzYSBiYWNrZ3JvdW5kIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJJLW9mZiBhbmcgcGFndGl0aXBpZCBuZyBiYXRlcnlhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+Ik5ha2F0YWdvIGFuZyBtZ2EgY29udGVudCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iU2lzaW11bGFuIG5nIGktY2FwdHVyZSBuZyA8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+IGFuZyBsYWhhdCBuZyBpcGluYXBha2l0YSBzYSBpeW9uZyBzY3JlZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Ikh1d2FnIGlwYWtpdGFuZyBtdWxpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkktY2xlYXIgbGFoYXQiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+Ikktb24gYW5nIEJsdWV0b290aD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iVXBhbmcgaWtvbmVrdGEgYW5nIGl5b25nIGtleWJvYXJkIHNhIGl5b25nIHRhYmxldCwga2FpbGFuZ2FuIG1vIG11bmFuZyBpLW9uIGFuZyBCbHVldG9vdGguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iSS1vbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ik5hYWFuZ2tvcCBzYSBtZ2Egbm90aWZpY2F0aW9uIHR1bmdrb2wgc2EgPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iTmFhYW5na29wIHNhIGxhaGF0IG5nIG5vdGlmaWNhdGlvbiBtdWxhIHNhIGFwcCBuYSBpdG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4iTmEtYmxvY2siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJIaW5kaSBtYXN5YWRvbmcgbWFoYWxhZ2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iTWFoYWxhZ2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4iTmFwYWthaGFsYWdhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iTWFoYWxhZ2FuZy1tYWhhbGFnYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iSHV3YWcga2FpbGFubWFuIGlwYWtpdGEgYW5nIG1nYSBub3RpZmljYXRpb24gbmEgaXRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IlRhaGltaWsgbmEgaXBha2l0YSBzYSBpYmFiYSBuZyBsaXN0YWhhbiBuZyBub3RpZmljYXRpb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IlRhaGltaWsgbmEgaXBha2l0YSBhbmcgbWdhIG5vdGlmaWNhdGlvbiBuYSBpdG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IklwYWtpdGEgc2EgaXRhYXMgbmcgbGlzdGFoYW4gbmcgbWdhIG5vdGlmaWNhdGlvbiBhdCBtYWctcGxheSBuZyB0dW5vZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJJcGFzaWxpcCBzYSBzY3JlZW4gYXQgbWFnLXBsYXkgbmcgdHVub2ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiJNZ2Ega2FyYW5pd2FuZyBrdWxheSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJNYWRpZGlsaW0gbmEga3VsYXkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+Ik1nYSBjdXN0b20gbmEga3VsYXkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiJNZ2EgaGluZGkga2lsYWxhbmcga3VsYXkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iUGFnYmFnbyBzYSBrdWxheSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IklwYWtpdGEgYW5nIHRpbGUgbmcgTWdhIE1hYmlsaXNhbmcgU2V0dGluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iSS1lbmFibGUgYW5nIGN1c3RvbSBuYSBwYWdwYWxpdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IklsYXBhdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJLdW1waXJtYWhpbiBhbmcgbWdhIHNldHRpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJNYWFhcmluZyBoaW5kaSBtYWdhbWl0IGFuZyBkZXZpY2UgbmEgaXRvIGRhaGlsIHNhIGlsYW5nIHNldHRpbmcgbmcga3VsYXkuIEktY2xpY2sgYW5nIE9LIHVwYW5nIGt1bXBpcm1haGluIGFuZyBtZ2Egc2V0dGluZyBuZyBrdWxheSBuYSBpdG8sIGt1bmcgaGluZGkgYXkgbWFyZS1yZXNldCBhbmcgbWdhIHNldHRpbmcgbmEgaXRvIHBhZ2thdGFwb3MgbmcgMTAgc2VndW5kby4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sCmluZGV4IGYyMTA3ODMuLjY4MzI4MDggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4iYXJhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiI8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4gYmHFn2xhdMSxbGFtYWTEsS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4iRGnEn2VyIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiBUYW5lIERhaGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IllhdGF5IEF5xLFybWEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJEaWtleSBBecSxcm1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IsOWemVsIEF5xLFybWEiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iUGlsIHRhc2FycnVmdSBhw6fEsWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4iUGVyZm9ybWFuc8SxIHZlIGFya2EgcGxhbiB2ZXJpbGVyaW5pIGF6YWx0xLFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJQaWwgdGFzYXJydWZ1bnUga2FwYXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4ixLDDp2VyaWsgZ2l6bGVuZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4sIGVrcmFuxLFuxLF6ZGEgZ8O2csO8bnTDvGxlbmVuIGhlciDFn2V5aSBrYXlkZXRtZXllIGJhxZ9sYXlhY2FrLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJCaXIgZGFoYSBnw7ZzdGVybWUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iVMO8bcO8IHRlbWl6bGUiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IkJsdWV0b290aCBhw6fEsWxzxLFuIG3EsT8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX21lc3NhZ2UiIG1zZ2lkPSI5MTA2NTk1OTkwNzA4OTg1Mzg1Ij4iS2xhdnllbml6aSB0YWJsZXRpbml6ZSBiYcSfbGFtYWsgacOnaW4gw7ZuY2UgQmx1ZXRvb3RoXCd1IGHDp21hbsSxeiBnZXJla2lyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IkHDpyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+Ijx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPiBiaWxkaXJpbWxlcmluZSB1eWd1bGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiJCdSB1eWd1bGFtYWRhbiBnZWxlbiB0w7xtIGJpbGRpcmltbGVyZSB1eWd1bGFuc8SxbiBtxLE/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkVuZ2VsbGVuZGkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLDlm5lbSBkw7x6ZXlpIGTDvMWfw7xrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IsOWbmVtIGTDvHpleWkgbm9ybWFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IsOWbmVtIGTDvHpleWkgecO8a3NlayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+IsOWbmVtIGTDvHpleWkgYWNpbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iQnUgYmlsZGlyaW1sZXJpIGhpw6diaXIgemFtYW4gZ8O2c3Rlcm1lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+IkJpbGRpcmltIGxpc3Rlc2luaW4gZW4gYWx0xLFuZGEgc2Vzc2l6Y2UgZ8O2c3RlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iQnUgYmlsZGlyaW1sZXJpIHNlc3NpemNlIGfDtnN0ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IkJpbGRpcmltIGxpc3Rlc2luaW4gZW4gw7xzdMO8bmRlIGfDtnN0ZXIgdmUgc2VzIMOnxLFrYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iRWtyYW5hIGdldGlyIHZlIHNlcyDDp8Sxa2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iTm9ybWFsIHJlbmtsZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iR2VjZSByZW5rbGVyaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iw5Z6ZWwgcmVua2xlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IkJpbGlubWV5ZW4gcmVua2xlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJSZW5rIGRlxJ9pxZ9pa2xpxJ9pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iSMSxemzEsSBBeWFybGFyIGt1dHVzdW51IGfDtnN0ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IsOWemVsIGTDtm7DvMWfw7xtw7wgZXRraW5sZcWfdGlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iVXlndWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IkF5YXJsYXLEsSBvbmF5bGF5xLFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iQmF6xLEgcmVua2xlciBidSBjaWhhesSxIGt1bGxhbsSxbG1heiB5YXBhYmlsaXIuIEJ1IHJlbmtsZXJpIG9uYXlsYW1hayBpw6dpbiBUYW1hbVwnxLEgdMSxa2xhecSxbi4gVMSxa2xhbWF6c2FuxLF6IGJ1IGF5YXJsYXIgMTAgc2FuaXllIHNvbnJhIHPEsWbEsXJsYW5hY2FrdMSxci4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCmluZGV4IDhhMWVjOTcuLjk3MzYwMjggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbApAQCAtMzY2LDcgKzM2Niw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+ItCg0LXQttC40Lwg0LfQsNC+0YnQsNC00LbQtdC90L3RjyDQt9Cw0YDRj9C00YMg0LDQutGD0LzRg9C70Y/RgtC+0YDQsCDQstCy0ZbQvNC60L3QtdC90L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i0JfQvdC40LbRg9GU0YLRjNGB0Y8g0L/RgNC+0LTRg9C60YLQuNCy0L3RltGB0YLRjCDRliDQvtCx0LzQtdC20YPRjtGC0YzRgdGPINGE0L7QvdC+0LLRliDQtNCw0L3RliI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i0JLQuNC80LrQvdGD0YLQuCDRgNC10LbQuNC8INC30LDQvtGJ0LDQtNC20LXQvdC90Y8g0LfQsNGA0Y/QtNGDINCw0LrRg9C80YPQu9GP0YLQvtGA0LAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i0JLQvNGW0YHRgiDRgdGF0L7QstCw0L3QviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDQvtGC0YDQuNC80LDRlCDQtNC+0YHRgtGD0L8g0LTQviDQstGB0ZbRhSDQtNCw0L3QuNGFLCDRj9C60ZYg0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQvdCwINCy0LDRiNC+0LzRgyDQtdC60YDQsNC90ZYuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+ItCR0ZbQu9GM0YjQtSDQvdC1INC/0L7QutCw0LfRg9Cy0LDRgtC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+ItCe0YfQuNGB0YLQuNGC0Lgg0LLRgdC1Ijwvc3RyaW5nPgpAQCAtNDUxLDQgKzQ1MCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiLQo9Cy0ZbQvNC60L3Rg9GC0LggQmx1ZXRvb3RoPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLQqdC+0LEg0L/RltC04oCZ0ZTQtNC90LDRgtC4INC60LvQsNCy0ZbQsNGC0YPRgNGDINC00L4g0L/Qu9Cw0L3RiNC10YLQsCwg0YHQv9C10YDRiNGDINC/0L7RgtGA0ZbQsdC90L4g0LLQstGW0LzQutC90YPRgtC4IEJsdWV0b290aC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLQo9Cy0ZbQvNC60L3Rg9GC0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLQl9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INC00L4g0YHQv9C+0LLRltGJ0LXQvdGMINC90LAg0YLQtdC80YMgXCI8eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz5cIiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+ItCX0LDRgdGC0L7RgdGD0LLQsNGC0Lgg0LTQviDQstGB0ZbRhSDRgdC/0L7QstGW0YnQtdC90Ywg0ZbQtyDRhtGM0L7Qs9C+INC00L7QtNCw0YLQutCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+ItCX0LDQsdC70L7QutC+0LLQsNC90L4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLQndC40LfRjNC60LjQuSDQv9GA0ZbQvtGA0LjRgtC10YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i0KHRgtCw0L3QtNCw0YDRgtC90LjQuSDQv9GA0ZbQvtGA0LjRgtC10YIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i0JLQuNGB0L7QutC40Lkg0L/RgNGW0L7RgNC40YLQtdGCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i0KLQtdGA0LzRltC90L7QstC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiLQndGW0LrQvtC70Lgg0L3QtSDQv9C+0LrQsNC30YPQstCw0YLQuCDRhtGWINGB0L/QvtCy0ZbRidC10L3QvdGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+ItCf0L7QutCw0LfRg9Cy0LDRgtC4INGB0L/QvtCy0ZbRidC10L3QvdGPINCy0L3QuNC30YMg0YHQv9C40YHQutGDINCx0LXQtyDQt9Cy0YPQutC+0LLQvtCz0L4g0YHQuNCz0L3QsNC70YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+ItCf0L7QutCw0LfRg9Cy0LDRgtC4INGG0ZYg0YHQv9C+0LLRltGJ0LXQvdC90Y8g0LHQtdC3INC30LLRg9C60L7QstC+0LPQviDRgdC40LPQvdCw0LvRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i0J/QvtC60LDQt9GD0LLQsNGC0Lgg0YHQv9C+0LLRltGJ0LXQvdC90Y8g0LLQs9C+0YDRliDRgdC/0LjRgdC60YMg0LfRliDQt9Cy0YPQutC+0LLQuNC8INGB0LjQs9C90LDQu9C+0LwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i0J/QvtC60LDQt9GD0LLQsNGC0Lgg0YHQv9C+0LLRltGJ0LXQvdC90Y8g0L3QsCDQtdC60YDQsNC90ZYg0LfRliDQt9Cy0YPQutC+0LLQuNC8INGB0LjQs9C90LDQu9C+0LwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSIgbXNnaWQ9IjIxMjE5NTc5MjYwNDA1NDMxNDgiPiLQodGC0LDQvdC00LDRgNGC0L3RliDQutC+0LvRjNC+0YDQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLQndGW0YfQvdGWINC60L7Qu9GM0L7RgNC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLQmtC+0YDQuNGB0YLRg9Cy0LDRhtGM0LrRliDQutC+0LvRjNC+0YDQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+ItCd0LXQstGW0LTQvtC80ZYg0LrQvtC70YzQvtGA0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i0JfQvNGW0L3QtdC90L3RjyDQutC+0LvRjNC+0YDRltCyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4i0J/QvtC60LDQt9Cw0YLQuCDQvtC/0YbRltGOINGI0LLQuNC00LrQuNGFINC90LDQu9Cw0YjRgtGD0LLQsNC90YwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+ItCj0LLRltC80LrQvdGD0YLQuCDQutC+0YDQuNGB0YLRg9Cy0LDRhtGM0LrQtSDQv9C10YDQtdGC0LLQvtGA0LXQvdC90Y8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLQl9Cw0YHRgtC+0YHRg9Cy0LDRgtC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+ItCf0ZbQtNGC0LLQtdGA0LTQuNGC0Lgg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4i0JTQtdGP0LrRliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LrQvtC70YzQvtGA0ZbQsiDQvNC+0LbRg9GC0Ywg0LfRgNC+0LHQuNGC0Lgg0YbQtdC5INC/0YDQuNGB0YLRgNGW0Lkg0L3QtdC/0YDQuNC00LDRgtC90LjQvCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPLiDQndCw0YLQuNGB0L3RltGC0YwgT0ssINGJ0L7QsSDQv9GW0LTRgtCy0LXRgNC00LjRgtC4INC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rjywg0ZbQvdCw0LrRiNC1INGX0YUg0LHRg9C00LUg0YHQutC40L3Rg9GC0L4g0YfQtdGA0LXQtyAxMCDRgdC10LrRg9C90LQuIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXVyLXJQSy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdXItclBLL3N0cmluZ3MueG1sCmluZGV4IGVhN2E3ODAuLjI4NDg0ZWIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdXItclBLL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdXItclBLL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLYqtmE2KfYtCDaqdix24zauiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4iPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+INqp2Ygg2LTYsdmI2Lkg2YbbgduM2rog2qnbjNinINis2Kcg2LPaqdin25QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3Nob3dfaGlzdG9yeV9idXR0b25fbGFiZWwiIG1zZ2lkPSI3MDYyMDg4MTk2NDQ5NzQ3MjQ1Ij4i2YXYstuM2K8iPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4iPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+INmF2LLbjNivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfaG9yaXpvbnRhbCIgbXNnaWQ9Ijg4NDg1MTQ0NzQ1NDM0MjczMzIiPiLYqNmE2K3Yp9i4INin2YHZgtuMINin2YTaryDaqdix24zauiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+Itio2YTYrdin2Lgg2LnZhdmI2K/bjCDYp9mE2q8g2qnYsduM2roiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4i2KjZhNit2KfYuCDYrdiz2Kgg2LbYsdmI2LHYqiDYp9mE2q8g2qnYsduM2roiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i2KjbjNm52LHbjCDYs9uM2YjYsSDYotmGINuB25IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i2qnYp9ix2qnYsdiv2q/bjCDYp9mI2LEg2b7YsyDZhdmG2LjYsSDaqdinINqI24zZudinINqp2YUg2qnYsSDYr9uM2KrYpyDbgduSIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLYqNuM2bnYsduMINqp24wg2KjahtiqINii2YEg2qnYsduM2roiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i2YXZiNin2K8g2YXYrtmB24wg24HbjNq6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+INii2b4g2qnbjCDYp9iz2qnYsduM2YYg2b7YsSDaiNiz2b7ZhNuSINuB2YjZhtuSINmI2KfZhNuMINuB2LEg2obbjNiyINqp2Ygg2qnbjNm+2obYsSDaqdix2YbYpyDYtNix2YjYuSDaqdixINiv24zar9uM25QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i2K/ZiNio2KfYsduBINmG24Eg2K/aqdq+2KfYptuM2roiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4i2LPYqNq+24wg2qnZiCDYtdin2YEg2qnYsduM2roiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+Itio2YTZiNm52YjYqtq+INii2YYg2qnYsduM2rrYnyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLYp9m+2YbbkiDaqduMINio2YjYsdqIINqp2Ygg2KfZvtmG25Ig2bnbjNio2YTZuSDaqduSINiz2KfYqtq+INmF2YbYs9mE2qkg2qnYsdmG25Ig2qnbjNmE2KbbkiDZvtuB2YTbkiDYotm+INqp2Ygg2KfZvtmG2Kcg2KjZhNmIINm52YjYqtq+INii2YYg2qnYsdmG2Kcg24HZiCDar9in25QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLYotmGINqp2LHbjNq6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+INin2LfZhNin2LnYp9iqINm+2LEg2YTYp9qv2Ygg2qnYsduM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiLYp9izINin24zZviDYs9uSINiq2YXYp9mFINin2LfZhNin2LnYp9iqINm+2LEg2YTYp9qv2Ygg2qnYsduM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i2YXYs9iv2YjYryDaqdix2K/bgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imxvd19pbXBvcnRhbmNlIiBtc2dpZD0iNDEwOTkyOTk4NjEwNzE0NzkzMCI+Itqp2YUg2KfbgdmF24zYqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiLYudmF2YjZhduMINin24HZhduM2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJoaWdoX2ltcG9ydGFuY2UiIG1zZ2lkPSIxNTI3MDY2MTk1NjE0MDUwMjYzIj4i2LLbjNin2K/bgSDYp9uB2YXbjNiqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4i2YHZiNix24wg2KfbgdmF24zYqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i24zbgSDYp9i32YTYp9i52KfYqiDaqdio2r7bjCDZhdiqINiv2qnavtin2KbbjNq6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Itin2LfZhNin2LnYp9iqINqp24wg2YHbgdix2LPYqiDaqduSINiz2Kgg2LPbkiDZhtuM2obbkiDYrtin2YXZiNi024wg2LPbkiDYr9qp2r7Yp9im24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i2K7Yp9mF2YjYtNuMINiz25Ig24zbgSDYp9i32YTYp9i52KfYqiDYr9qp2r7Yp9im24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i2KfYt9mE2KfYudin2Kog2qnbjCDZgduB2LHYs9iqINm+2LEg2LPYqCDYs9uSINin2YjZvtixINiv2qnavtin2KbbjNq6INin2YjYsSDYotmI2KfYsiDahtmE2KfYptuM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i2KfYs9qp2LHbjNmGINm+2LEg2K/aqdq+2KfYptuM2rog2KfZiNixINii2YjYp9iyINqG2YTYp9im24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Iti52KfZhSDYsdmG2q8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4i2LHYp9iqINqp25Ig2LHZhtqvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiLYrdiz2Kgg2LbYsdmI2LHYqiDYsdmG2q8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfdW5rbm93biIgbXNnaWQ9IjI3MDkyMDIxMDQyNTYyNjUxMDciPiLZhtin2YXYudmE2YjZhSDYsdmG2q8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4i2LHZhtqv2YjauiDaqduMINiq2KjYr9uM2YTbjCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+ItmB2YjYsduMINiq2LHYqtuM2KjYp9iqINmI2KfZhNuMINm52KfYptmEINiv2qnavtin2KbbjNq6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiLYrdiz2Kgg2LbYsdmI2LHYqiDZudix2KfZhtiz2YHYp9ix2YUg2YHYudin2YQg2qnYsduM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9hcHBseSIgbXNnaWQ9IjkyMTI2MDIwMTI2NDEwMzQyODMiPiLZhNin2q/ZiCDaqdix24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLYqtix2KrbjNio2KfYqiDaqduMINiq2YjYq9uM2YIg2qnYsduM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLYsdmG2q/ZiNq6INqp24wg2qnahtq+INiq2LHYqtuM2KjYp9iqINin2LMg2KLZhNuSINqp2Ygg2YbYp9mC2KfYqNmEINin2LPYqti52YXYp9mEINio2YbYpyDYs9qp2KrbjCDbgduM2rrblCDYsdmG2q/ZiNq6INqp24wg2KfZhiDYqtix2KrbjNio2KfYqiDaqduMINiq2YjYq9uM2YIg2qnYsdmG25Ig2qnbjNmE2KbbkiDZudq+24zaqSDbgduSINm+2LEg2qnZhNqpINqp2LHbjNq62Iwg2KjYtdmI2LHYqiDYr9uM2q/YsSAxMCDYs9uM2qnZhtqIINio2LnYryDbjNuBINiq2LHYqtuM2KjYp9iqINix24wg2LPbjNm5INuB2Ygg2KzYp9im24zauiDar9uM25QiPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdXotclVaL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKaW5kZXggMjQ5ZGU5NS4uNGJkOWRiYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy11ei1yVVovc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+InFpZGlyaXNoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiLigJw8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz7igJ0gaWxvdmFzaW5pIGlzaGdhIHR1c2hpcmliIGJv4oCYbG1hZGkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+Iktv4oCYcHJvcSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+Ikdvcml6b250YWwgeW/igJhuYWxpc2hkYSBib+KAmGxpc2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF92ZXJ0aWNhbCIgbXNnaWQ9IjkwNzUyOTIyMzM2OTYxODA4MTMiPiJWZXJ0aWthbCB5b+KAmG5hbGlzaGRhIGJv4oCYbGlzaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiJCb3NocWEgdXN1bGRhIGJv4oCYbGlzaCI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiJRdXZ2YXQgdGVqYXNoIHJlamltaSB5b3FpbGRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IlVudW1kb3JsaWtuaSBwYXNheXRpcmFkaSB2YSBmb25kYSBpbnQtZGFuIGZveWQtbmkgY2hla2xheWRpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiJRdXZ2YXQgdGVqYXNoIGZ1bmtzaXlhc2luaSBv4oCYY2hpcmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJLb250ZW50IHlhc2hpcmlsZGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0IiBtc2dpZD0iMzA3MTQzMTAyNTQ0ODIxODkyOCI+Ijx4bGlmZjpnIGlkPSJBUFBfU0VFS0lOR19QRVJNSVNTSU9OIj4lczwveGxpZmY6Zz4gaWxvdmFzaSBxdXJpbG1hIGVrcmFuaWRhZ2kgaGFyIHFhbmRheSB0YXN2aXJuaSBrb+KAmHJpc2huaSBib3NobGF5ZGkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IkJvc2hxYSBrb+KAmHJzYXRpbG1hc2luIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IkJhcmNoYXNpbmkgdG96YWxhc2giPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IkJsdWV0b290aCB5b3FpbHNpbm1pPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiJLbGF2aWF0dXJhbmkgcGxhbnNoZXRpbmdpemdhIHVsYXNoIHVjaHVuIEJsdWV0b290aCB4aXptYXRpbmkgeW9xaXNoaW5naXoga2VyYWsuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9jb25maXJtYXRpb25fb2siIG1zZ2lkPSI2MjU4MDc0MjUwOTQ4MzA5NzE1Ij4iWW9xaXNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4i4oCcPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+4oCdIGJpbGRpcmlzaG5vbWFsYXJpZ2EgcW/igJhsbGFzaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IlVzaGJ1IGlsb3ZhbmluZyBiYXJjaGEgYmlsZGlyaXNobm9tYWxhcmlnYSBxb+KAmGxsYXNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkJsb2tsYW5nYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiJLYW1yb3EgbXVoaW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4iT+KAmHJ0YWNoYSBtdWhpbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiJKdWRhIG11aGltIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibWF4X2ltcG9ydGFuY2UiIG1zZ2lkPSI1MDg5MDA1ODcyNzE5NTYzODk0Ij4iRmF2cXVsb2RkYSBtdWhpbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iQnUgYmlsZGlyaXNobm9tYWxhciBib3NocWEga2/igJhyc2F0aWxtYXNpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJCaWxkaXJpc2hub21hbGFyIHJv4oCYeXhhdGluaW5nIG94aXJpZGEgb3ZvenNpeiBrb+KAmHJzYXRpbHNpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4iQnUgYmlsZGlyaXNobm9tYWxhciBvdm96c2l6IGtv4oCYcnNhdGlsc2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJCaWxkaXJpc2hub21hbGFyIHJv4oCYeXhhdGluaW5nIGJvc2hpZGEgb3ZveiBiaWxhbiBrb+KAmHJzYXRpbHNpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCIgbXNnaWQ9IjUyMzY5ODcxNzE5MDQ3NTYxMzQiPiJCYXJjaGEgb3luYWxhciB1c3RpZGEgc2lnbmFsIG92b3ppIGJpbGFuIGtv4oCYcnNhdGlsc2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4iT2RhdGl5IHJhbmdsYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbmlnaHQiIG1zZ2lkPSI1OTQzODE3NjIyMTA1MzA3MDcyIj4iUW9yYW10aXIgcmFuZ2xhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iRm95ZGFsYW51dmNoaSByYW5naSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+Ik5vbWHigJlsdW0gcmFuZ2xhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJSYW5nIHNvemxhbWFsYXJpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Nob3dfcXMiIG1zZ2lkPSIxNzYzMjQ0MzU0Mzk5Mjc2Njc5Ij4iVGV6a29yIHNvemxhbWFsYXIgcGFuZWxpbmkga2/igJhyc2F0aXNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSIgbXNnaWQ9IjY3MjkwMDEzMDgyMTczNDc1MDEiPiJGb3lkYWxhbnV2Y2hpIHNvemxhbWFsYXJpbmkgeW9xaXNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4iUW/igJhsbGFzaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJTb3psYW1hbGFybmkgdGFzZGlxbGFuZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IkJh4oCZemkgcmFuZyBzb3psYW1hbGFyaSBxdXJpbG1hZGFuIGZveWRhbGFuaXNobmkgcWl5aW5sYXNodGlyaXNoIG11bWtpbi4gVGFubGdhbiBwYXJhbWV0cmxhcm5pIHRhc2RpcWxhc2ggdWNodW4g4oCcT0vigJ0gdHVnbWFzaW5pIGJvc2luZy4gQWtzIGhvbGRhLCB1bGFyIDEwIHNvbml5YWRhbiBzb+KAmG5nIHFheXRhIHRpa2xhbmFkaS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sCmluZGV4IDRkMDgwMDAuLmMwOTRkNWIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy12aS9zdHJpbmdzLnhtbApAQCAtMzAxLDggKzMwMSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX3NlYXJjaF9iYXJfbGFiZWwiIG1zZ2lkPSI4MDc0OTk3NDAwMTg3ODM2Njc3Ij4idMOsbSBraeG6v20iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+Iktow7RuZyB0aOG7gyBraOG7n2kgxJHhu5luZyA8eGxpZmY6ZyBpZD0iQVBQIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IlRow6ptIjwvc3RyaW5nPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQgKDYzMzcxNTU2MDgwNTUwNjI0MjkpIC0tPgotICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0IiBtc2dpZD0iNjMzNzE1NTYwODA1NTA2MjQyOSI+Ijx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiB0w6FjIHbhu6Uga2jDoWMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IlBow6JuIHTDoWNoIG5nYW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4iUGjDom4gdMOhY2ggZOG7jWMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9jdXN0b20iIG1zZ2lkPSI0MTc3ODM3NTk3NTEzNzAxOTQzIj4iVMO5eSBjaOG7iW5oIHBow6JuIHTDoWNoIjwvc3RyaW5nPgpAQCAtMzY1LDcgKzM2NCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzNzkxODcyNjc1MDk1NTg1OSI+IlRyw6xuaCB0aeG6v3Qga2nhu4dtIHBpbiDEkWFuZyBi4bqtdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJHaeG6o20gaGnhu4d1IHN14bqldCB2w6AgZOG7ryBsaeG7h3UgbuG7gW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCIgbXNnaWQ9IjEwOTE1ODY1ODIzODExMDM4MiI+IlThuq90IHRyw6xuaCB0aeG6v3Qga2nhu4dtIHBpbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9oaWRkZW5fdGV4dCIgbXNnaWQ9IjExMzUxNjkzMDE4OTcxNTE5MDkiPiJO4buZaSBkdW5nIGLhu4sg4bqpbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBz4bq9IGLhuq90IMSR4bqndSBjaOG7pXAgbeG7jWkgdGjhu6kgaGnhu4NuIHRo4buLIHRyw6puIG3DoG4gaMOsbmguIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+Iktow7RuZyBoaeG7g24gdGjhu4sgbOG6oWkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbGVhcl9hbGxfbm90aWZpY2F0aW9uc190ZXh0IiBtc2dpZD0iODE0MTkyODg5NzcxNDYyODI4Ij4iWMOzYSB04bqldCBj4bqjIjwvc3RyaW5nPgpAQCAtNDUwLDQgKzQ0OCwyNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF90aXRsZSIgbXNnaWQ9IjUwMjcwMzc3MDY1MDA2MzUyNjkiPiJC4bqtdCBCbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IsSQ4buDIGvhur90IG7hu5FpIGLDoG4gcGjDrW0gduG7m2kgbcOheSB0w61uaCBi4bqjbmcsIHRyxrDhu5tjIHRpw6puLCBi4bqhbiBwaOG6o2kgYuG6rXQgQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IkLhuq10Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fdG9waWMiIG1zZ2lkPSIzNjQxNDAzNDg5MzE4NjU5NjY2Ij4iw4FwIGThu6VuZyBjaG8gdGjDtG5nIGLDoW8gPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iw4FwIGThu6VuZyBjaG8gdOG6pXQgY+G6oyB0aMO0bmcgYsOhbyB04burIOG7qW5nIGThu6VuZyBuw6B5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYmxvY2tlZF9pbXBvcnRhbmNlIiBtc2dpZD0iNTE5ODU3ODk4ODk3ODIzNDE2MSI+IkLhu4sgY2jhurduIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iVOG6p20gcXVhbiB0cuG7jW5nIHRo4bqlcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZmF1bHRfaW1wb3J0YW5jZSIgbXNnaWQ9IjgxOTIxMDc2ODk5OTU3NDI2NTMiPiJU4bqnbSBxdWFuIHRy4buNbmcgYsOsbmggdGjGsOG7nW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IlThuqdtIHF1YW4gdHLhu41uZyBjYW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJU4bqnbSBxdWFuIHRy4buNbmcga2jhuqluIGPhuqVwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfYmxvY2tlZCIgbXNnaWQ9IjIzOTcxOTI2NDI2NTc4NzI4NzIiPiJLaMO0bmcgYmFvIGdp4budIGhp4buDbiB0aOG7iyBjw6FjIHRow7RuZyBiw6FvIG7DoHkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9sb3ciIG1zZ2lkPSI0MzgzNTYzMjY3MzcwODU5NzI1Ij4iSGnhu4NuIHRo4buLIGltIGzhurduZyDhu58gY3Xhu5FpIGRhbmggc8OhY2ggdGjDtG5nIGLDoW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+Ikhp4buDbiB0aOG7iyBpbSBs4bq3bmcgY8OhYyB0aMO0bmcgYsOhbyBuw6B5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiJIaeG7g24gdGjhu4sg4bufIMSR4bqndSBkYW5oIHPDoWNoIHRow7RuZyBiw6FvIHbDoCBwaMOhdCByYSDDom0gdGhhbmgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iSGnhu4NuIHRo4buLIHRyw6puIG3DoG4gaMOsbmggdsOgIHBow6F0IHJhIMOibSB0aGFuaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+Ik3DoHUgdGjDtG5nIHRoxrDhu51uZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiJNw6B1IHThu5FpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X2N1c3RvbSIgbXNnaWQ9IjM2NTU1NzY0OTIzMjIyOTg3MTMiPiJNw6B1IHTDuXkgY2jhu4luaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+Ik3DoHUga2jDtG5nIHjDoWMgxJHhu4tuaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiJT4butYSDEkeG7lWkgbcOgdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Ikhp4buDbiB0aOG7iyDDtCBDw6BpIMSR4bq3dCBuaGFuaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4iQuG6rXQgY2h1eeG7g24gxJHhu5VpIHTDuXkgY2jhu4luaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IsOBcCBk4bulbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfdGl0bGUiIG1zZ2lkPSI0NzQ2NjY2NTQ1NDgwNTM0NjYzIj4iWMOhYyBuaOG6rW4gY8OgaSDEkeG6t3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiJN4buZdCBz4buRIGPDoGkgxJHhurd0IG3DoHUgY8OzIHRo4buDIGtoaeG6v24gdGhp4bq/dCBi4buLIG7DoHkga2jDtG5nIHPhu60gZOG7pW5nIMSRxrDhu6NjLiBIw6N5IG5o4bqlcCB2w6BvIE9LIMSR4buDIHjDoWMgbmjhuq1uIGPDoWMgY8OgaSDEkeG6t3QgbcOgdSBuw6B5LCBu4bq/dSBraMO0bmcgbmjhu69uZyBjw6BpIMSR4bq3dCBuw6B5IHPhur0gxJHGsOG7o2MgxJHhurd0IGzhuqFpIHNhdSAxMCBnacOieS4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKaW5kZXggZTMwMzIwZC4uM2FmNzdjMiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+IuaQnOe0oiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbGF1bmNoX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIyOTY5Mjg3ODM4MTIwNTUwNTA2Ij4i5peg5rOV5ZCv5YqoPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zaG93X2hpc3RvcnlfYnV0dG9uX2xhYmVsIiBtc2dpZD0iNzA2MjA4ODE5NjQ0OTc0NzI0NSI+IuabtOWkmiI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiLov5jmnIkgPHhsaWZmOmcgaWQ9Ik5VTUJFUiI+JWQ8L3hsaWZmOmc+IOmhuSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2hvcml6b250YWwiIG1zZ2lkPSI4ODQ4NTE0NDc0NTQzNDI3MzMyIj4i5rC05bmz5YiG5YmyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfdmVydGljYWwiIG1zZ2lkPSI5MDc1MjkyMjMzNjk2MTgwODEzIj4i5Z6C55u05YiG5YmyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IuiHquWumuS5ieWIhuWJsiI8L3N0cmluZz4KQEAgLTM2NSw3ICszNjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzc5MTg3MjY3NTA5NTU4NTkiPiLoioLnlLXliqnmiYvlt7LlvIDlkK8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl90ZXh0IiBtc2dpZD0iODIwMzE4Nzg4MTI2NjcyNjkyIj4i6ZmN5L2O5oCn6IO95bm26ZmQ5Yi25ZCO5Y+w5rWB6YePIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fYWN0aW9uX3RleHQiIG1zZ2lkPSIxMDkxNTg2NTgyMzgxMTAzODIiPiLlhbPpl63oioLnlLXliqnmiYsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiIG1zZ2lkPSIxMTM1MTY5MzAxODk3MTUxOTA5Ij4i5YaF5a655bey6ZqQ6JePIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9kaWFsb2dfdGV4dCIgbXNnaWQ9IjMwNzE0MzEwMjU0NDgyMTg5MjgiPiI8eGxpZmY6ZyBpZD0iQVBQX1NFRUtJTkdfUEVSTUlTU0lPTiI+JXM8L3hsaWZmOmc+5bCG5byA5aeL5oiq5Y+W5oKo55qE5bGP5bmV5LiK5pi+56S655qE5omA5pyJ5YaF5a6544CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWVkaWFfcHJvamVjdGlvbl9yZW1lbWJlcl90ZXh0IiBtc2dpZD0iMzEwMzUxMDg4MjE3Mjc0Njc1MiI+IuS4jeWGjeaYvuekuiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNsZWFyX2FsbF9ub3RpZmljYXRpb25zX3RleHQiIG1zZ2lkPSI4MTQxOTI4ODk3NzE0NjI4MjgiPiLlhajpg6jmuIXpmaQiPC9zdHJpbmc+CkBAIC00MTUsNyArNDEzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InN5c3RlbV91aV90dW5lciIgbXNnaWQ9IjcwODIyNDEyNzM5MjQ1MjAxOCI+Iuezu+e7n+eVjOmdouiwg+iwkOWZqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InNob3dfYmF0dGVyeV9wZXJjZW50YWdlIiBtc2dpZD0iNTQ0NDEzNjYwMDUxMjk2ODc5OCI+IuW1jOWFpeW8j+aYvuekuueUteaxoOeUtemHj+eZvuWIhuavlCDmmL7npLrltYzlhaXnmoTnlLXmsaDnlLXph4/nmb7liIbmr5QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJzaG93X2JhdHRlcnlfcGVyY2VudGFnZV9zdW1tYXJ5IiBtc2dpZD0iMzIxNTAyNTc3NTU3Njc4NjAzNyI+IuacquWFheeUteaXtuWcqOeKtuaAgeagj+Wbvuagh+WGheaYvuekuueUteaxoOeUtemHj+eZvuWIhuavlCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InF1aWNrX3NldHRpbmdzIiBtc2dpZD0iMTAwNDI5OTgxOTE3MjU0MjgiPiLlv6vpgJ/orr7nva4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJxdWlja19zZXR0aW5ncyIgbXNnaWQ9IjEwMDQyOTk4MTkxNzI1NDI4Ij4i5b+r5o236K6+572uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2JhciIgbXNnaWQ9IjQ4Nzc2NDU0NzY5NTkzMjQ3NjAiPiLnirbmgIHmoI8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJvdmVydmlldyIgbXNnaWQ9IjQwMTg2MDIwMTM4OTU5MjY5NTYiPiLmpoLop4giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkZW1vX21vZGUiIG1zZ2lkPSIyMzg5MTYzMDE4NTMzNTE0NjE5Ij4i5ryU56S65qih5byPIjwvc3RyaW5nPgpAQCAtNDMxLDcgKzQyOSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJ6ZW5fYWxhcm1fd2FybmluZyIgbXNnaWQ9IjQ0NDUzMzExOTU4MjI0NDI5MyI+IuaCqOWcqDx4bGlmZjpnIGlkPSJXSEVOIj4lMSRzPC94bGlmZjpnPuWwhuS4jeS8muWQrOWIsOS4i+asoemXuemSn+WTjemTgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFsYXJtX3RlbXBsYXRlIiBtc2dpZD0iMzk4MDA2MzQwOTM1MDUyMjczNSI+Ijx4bGlmZjpnIGlkPSJXSEVOIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFsYXJtX3RlbXBsYXRlX2ZhciIgbXNnaWQ9IjQyNDIxNzk5ODI1ODY3MTQ4MTAiPiI8eGxpZmY6ZyBpZD0iV0hFTiI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJhY2Nlc3NpYmlsaXR5X3F1aWNrX3NldHRpbmdzX2RldGFpbCIgbXNnaWQ9IjI1NzkzNjkwOTE2NzI5MDIxMDEiPiLlv6vpgJ/orr7nva7vvIw8eGxpZmY6ZyBpZD0iVElUTEUiPiVzPC94bGlmZjpnPuOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFjY2Vzc2liaWxpdHlfcXVpY2tfc2V0dGluZ3NfZGV0YWlsIiBtc2dpZD0iMjU3OTM2OTA5MTY3MjkwMjEwMSI+IuW/q+aNt+iuvue9ru+8jDx4bGlmZjpnIGlkPSJUSVRMRSI+JXM8L3hsaWZmOmc+44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWNjZXNzaWJpbGl0eV9zdGF0dXNfYmFyX2hvdHNwb3QiIG1zZ2lkPSI0MDk5MzgxMzI5OTU2NDAyODY1Ij4i54Ot54K5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWNjZXNzaWJpbGl0eV9tYW5hZ2VkX3Byb2ZpbGUiIG1zZ2lkPSI2NjEzNjQxMzYzMTEyNTg0MTIwIj4i5bel5L2c6LWE5paZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idHVuZXJfd2FybmluZ190aXRsZSIgbXNnaWQ9IjcwOTQ2ODk5MzA3OTMwMzE2ODIiPiLmmK/lkKbmnInotqPlrozlhajlj5blhrPkuo7kuKrkurrmhJ/op4kiPC9zdHJpbmc+CkBAIC00NDQsMTAgKzQ0MiwzMiBAQAogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbm90X2ZvdW5kIiBtc2dpZD0iMzQ4NDIzMjQ0MzI3Nzk5OTc0Ij4i5oKo55qE6K6+5aSH5Lit5pyq5a6J6KOF5q2k5bqU55SoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xvY2tfc2Vjb25kcyIgbXNnaWQ9Ijc2ODk1NTQxNDc1NzkxNzk1MDciPiLmmL7npLrml7bpkp/nmoTnp5LmlbAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjbG9ja19zZWNvbmRzX2Rlc2MiIG1zZ2lkPSI2MjgyNjkzMDY3MTMwNDcwNjc1Ij4i5Zyo54q25oCB5qCP5Lit5pi+56S65pe26ZKf55qE56eS5pWw44CC6L+Z5Y+v6IO95Lya5b2x5ZON55S15rGg55qE57ut6Iiq5pe26Ze044CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icXNfcmVhcnJhbmdlIiBtc2dpZD0iODA2MDkxODY5NzU1MTA2ODc2NSI+IumHjeaWsOaOkuWIl+W/q+mAn+iuvue9riI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNob3dfYnJpZ2h0bmVzcyIgbXNnaWQ9IjY2MTM5MzA4NDI4MDU5NDI1MTkiPiLlnKjlv6vpgJ/orr7nva7kuK3mmL7npLrkuq7luqbmoI8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJxc19yZWFycmFuZ2UiIG1zZ2lkPSI4MDYwOTE4Njk3NTUxMDY4NzY1Ij4i6YeN5paw5o6S5YiX5b+r5o236K6+572uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19icmlnaHRuZXNzIiBtc2dpZD0iNjYxMzkzMDg0MjgwNTk0MjUxOSI+IuWcqOW/q+aNt+iuvue9ruS4reaYvuekuuS6ruW6puagjyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4cGVyaW1lbnRhbCIgbXNnaWQ9IjYxOTgxODIzMTU1MzY3MjYxNjIiPiLlrp7pqozmgKciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IuimgeW8gOWQr+iTneeJmeWQl++8nyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfbWVzc2FnZSIgbXNnaWQ9IjkxMDY1OTU5OTA3MDg5ODUzODUiPiLopoHlsIbmgqjnmoTplK7nm5jov57mjqXliLDlubPmnb/nlLXohJHvvIzmgqjlv4XpobvlhYjlvIDlkK/ok53niZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX2NvbmZpcm1hdGlvbl9vayIgbXNnaWQ9IjYyNTgwNzQyNTA5NDgzMDk3MTUiPiLlvIDlkK8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiLlupTnlKjkuo48eGxpZmY6ZyBpZD0iVE9QSUNfTkFNRSI+JTEkczwveGxpZmY6Zz7pgJrnn6UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b19hcHAiIG1zZ2lkPSIzNjMwMTY3ODM5Mzk4MTU5NjAiPiLlupTnlKjkuo7mnaXoh6rmraTlupTnlKjnmoTmiYDmnInpgJrnn6UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJibG9ja2VkX2ltcG9ydGFuY2UiIG1zZ2lkPSI1MTk4NTc4OTg4OTc4MjM0MTYxIj4i5bGP6JS9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4i6YeN6KaB5oCn77ya5L2OIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IumHjeimgeaAp++8muS4gOiIrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImhpZ2hfaW1wb3J0YW5jZSIgbXNnaWQ9IjE1MjcwNjYxOTU2MTQwNTAyNjMiPiLph43opoHmgKfvvJrpq5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiLph43opoHmgKfvvJrntKfmgKUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9ibG9ja2VkIiBtc2dpZD0iMjM5NzE5MjY0MjY1Nzg3Mjg3MiI+IuS4gOW+i+S4jeaYvuekuui/meS6m+mAmuefpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiLlnKjpgJrnn6XliJfooajlupXpg6jmmL7npLrvvIzkvYbkuI3lj5Hlh7rmj5DnpLrpn7MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IuaYvuekuui/meS6m+mAmuefpe+8jOS9huS4jeWPkeWHuuaPkOekuumfsyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2hpZ2giIG1zZ2lkPSIzMjIyNjgwMTM2NjEyNDA4MjIzIj4i5Zyo6YCa55+l5YiX6KGo6aG26YOo5pi+56S677yM5bm25Y+R5Ye65o+Q56S66Z+zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbWF4IiBtc2dpZD0iNTIzNjk4NzE3MTkwNDc1NjEzNCI+IuWcqOWxj+W5leS4iuaMgee7reaYvuekuu+8jOW5tuWPkeWHuuaPkOekuumfsyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IuW4uOinhOminOiJsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCIgbXNnaWQ9IjU5NDM4MTc2MjIxMDUzMDcwNzIiPiLlpJzpl7TpopzoibIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfY3VzdG9tIiBtc2dpZD0iMzY1NTU3NjQ5MjMyMjI5ODcxMyI+IuiHquWumuS5ieminOiJsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IuacquefpeminOiJsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSIgbXNnaWQ9IjY5ODU0NjA0MDgwNzkwODYwOTAiPiLpopzoibLkv67mlLkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyIgbXNnaWQ9IjE3NjMyNDQzNTQzOTkyNzY2NzkiPiLmmL7npLrigJzlv6vmjbforr7nva7igJ3lm77lnZciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+IuWQr+eUqOiHquWumuS5iei9rOaNoiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IuW6lOeUqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiLnoa7orqTorr7nva4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSIgbXNnaWQ9IjkxMTYwMDEwNjkzOTc5OTY2OTEiPiLpg6jliIbpopzoibLorr7nva7lj6/og73kvJrlr7zoh7TmraTorr7lpIfml6Dms5Xkvb/nlKjjgILor7fngrnlh7vigJznoa7lrprigJ3noa7orqTov5nkupvpopzoibLorr7nva7vvIzlkKbliJnvvIzns7vnu5/lsIblnKggMTAg56eS5ZCO6YeN572u6L+Z5Lqb6K6+572u44CCIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXpoLXJISy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCmluZGV4IDk0NTQ4YmEuLjg1OTE3ODUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLmkJzlsIsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IueEoeazleWVn+WLleOAjDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPuOAjeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLmm7TlpJoiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4i6YKE5pyJIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDpoIUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IuawtOW5s+WIhuWJsiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IuWeguebtOWIhuWJsiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLoh6roqILliIblibIiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i55yB6Zu75qih5byP5bey6ZaL5ZWfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IumZjeS9juaViOiDveS4pumZkOWItuiDjOaZr+aVuOaTmuWCs+i8uCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i6Zec6ZaJ55yB6Zu75qih5byPIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuWFp+WuueW3sumaseiXjyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDlsIfplovlp4vmk7flj5bmgqjnmoTonqLluZXkuIrpoa/npLrnmoTlhaflrrnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i5LiN55So5YaN6aGv56S6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuWFqOmDqOa4hemZpCI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4i6KaB6ZaL5ZWf6JeN54mZ5ZeO77yfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuWmguimgeWwh+mNteebpOmAo+aOpeiHs+W5s+adv+mbu+iFpu+8jOiri+WFiOmWi+WVn+iXjeeJmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IumWi+WVnyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IuWll+eUqOWIsOOAjDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPuOAjemAmuefpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuWll+eUqOWIsOatpOaHieeUqOeoi+W8j+eahOaJgOaciemAmuefpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLlt7LlsIHpjpYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLkvY7ph43opoHmgKciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i5LiA6Iis6YeN6KaB5oCnIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IumrmOmHjeimgeaApyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+Iue3iuaApSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i5rC45LiN6aGv56S66YCZ5Lqb6YCa55+lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Iumhr+ekuuWcqOmAmuefpea4heWWruW6lemDqOS9huS4jeeZvOWHuumfs+aViCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i6aGv56S66YCZ5Lqb6YCa55+l5L2G5LiN55m85Ye66Z+z5pWIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLpoa/npLrlnKjpgJrnn6XmuIXllq7poILpg6jkuKbnmbzlh7rpn7PmlYgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i5LiN5pmC5pa86J6i5bmV5Ye654++5Lim55m85Ye66Z+z5pWIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i5LiA6Iis6Imy57O7Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+Iua3seayieiJsuezuyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i6Ieq6KiC6aGP6ImyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i5LiN5piO6Imy57O7Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Iumhj+iJsuS/ruaUuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Iumhr+ekuuOAjOW/q+mAn+ioreWumuOAjeWcluWhiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i5ZWf55So6Ieq6KiC6K6K6Imy5Yqf6IO9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i5aWX55SoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IueiuuiqjeioreWumiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IumDqOWIhumhj+iJsuioreWumuacg+S7pOatpOijnee9rueEoeazleS9v+eUqOOAguiri+aMieS4gOS4iyBb56K65a6aXSDliqDku6Xnorroqo3vvIzlkKbliYfpgJnkupvpoY/oibLoqK3lrprlsIfmlrwgMTAg56eS5b6M6YeN6Kit44CCIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCmluZGV4IGM0MDM1ZTEuLjM0ZmE3YWEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCkBAIC0zMDEsOCArMzAxLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2VhcmNoX2Jhcl9sYWJlbCIgbXNnaWQ9IjgwNzQ5OTc0MDAxODc4MzY2NzciPiLmkJzlsIsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX2xhdW5jaF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMjk2OTI4NzgzODEyMDU1MDUwNiI+IueEoeazleWVn+WLleOAjDx4bGlmZjpnIGlkPSJBUFAiPiVzPC94bGlmZjpnPuOAjeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiLmm7TlpJoiPC9zdHJpbmc+Ci0gICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCAoNjMzNzE1NTYwODA1NTA2MjQyOSkgLS0+Ci0gICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfaGlzdG9yeV9sYWJlbF9mb3JtYXQiIG1zZ2lkPSI2MzM3MTU1NjA4MDU1MDYyNDI5Ij4i6YKE5pyJIDx4bGlmZjpnIGlkPSJOVU1CRVIiPiVkPC94bGlmZjpnPiDpoIUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IuawtOW5s+WIhuWJsiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IuWeguebtOWIhuWJsiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X2N1c3RvbSIgbXNnaWQ9IjQxNzc4Mzc1OTc1MTM3MDE5NDMiPiLoh6roqILliIblibIiPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4i56+A57SE6ICX6Zu76YeP5qih5byP5bey5ZWf55SoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9zYXZlcl9ub3RpZmljYXRpb25fdGV4dCIgbXNnaWQ9IjgyMDMxODc4ODEyNjY3MjY5MiI+IumZjeS9juaViOiDveS4pumZkOWItuiDjOaZr+aVuOaTmuWCs+i8uCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4i6Zec6ZaJ56+A57SE6ICX6Zu76YeP5qih5byPIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+IuWFp+WuueW3sumaseiXjyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiDlsIfplovlp4vmk7flj5bmgqjnmoTonqLluZXkuIrpoa/npLrnmoTlhaflrrnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX3JlbWVtYmVyX3RleHQiIG1zZ2lkPSIzMTAzNTEwODgyMTcyNzQ2NzUyIj4i5LiN6KaB5YaN6aGv56S6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IuWFqOmDqOa4hemZpCI8L3N0cmluZz4KQEAgLTQ1MCw0ICs0NDgsMjYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfdGl0bGUiIG1zZ2lkPSI1MDI3MDM3NzA2NTAwNjM1MjY5Ij4i6KaB6ZaL5ZWf6JeN54mZ5Yqf6IO95ZeO77yfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IuWmguimgeWwh+mNteebpOmAo+e3muWIsOW5s+adv+mbu+iFpu+8jOaCqOW/hemgiOWFiOmWi+WVn+iXjeeJmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IumWi+WVnyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX3RvcGljIiBtc2dpZD0iMzY0MTQwMzQ4OTMxODY1OTY2NiI+IuWll+eUqOWIsOOAjDx4bGlmZjpnIGlkPSJUT1BJQ19OQU1FIj4lMSRzPC94bGlmZjpnPuOAjemAmuefpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcGx5X3RvX2FwcCIgbXNnaWQ9IjM2MzAxNjc4MzkzOTgxNTk2MCI+IuWll+eUqOWIsOmAmeWAi+aHieeUqOeoi+W8j+eahOaJgOaciemAmuefpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiLlsIHpjpYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsb3dfaW1wb3J0YW5jZSIgbXNnaWQ9IjQxMDk5Mjk5ODYxMDcxNDc5MzAiPiLkvY7ph43opoHmgKciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZhdWx0X2ltcG9ydGFuY2UiIG1zZ2lkPSI4MTkyMTA3Njg5OTk1NzQyNjUzIj4i5LiA6Iis6YeN6KaB5oCnIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IumrmOmHjeimgeaApyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im1heF9pbXBvcnRhbmNlIiBtc2dpZD0iNTA4OTAwNTg3MjcxOTU2Mzg5NCI+Iue3iuaApemHjeimgeaApyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4i5LiA5b6L5LiN6aGv56S66YCZ5Lqb6YCa55+lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfbG93IiBtc2dpZD0iNDM4MzU2MzI2NzM3MDg1OTcyNSI+Iumhr+ekuuWcqOmAmuefpea4heWWruW6lemDqOS4lOS4jeeZvOWHuuS7u+S9lemfs+aViCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2RlZmF1bHQiIG1zZ2lkPSI0OTI2NTI5NjE1OTIwNjEwODE3Ij4i6aGv56S66YCZ5Lqb6YCa55+l5LiU5LiN55m85Ye65Lu75L2V6Z+z5pWIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2ltcG9ydGFuY2VfaGlnaCIgbXNnaWQ9IjMyMjI2ODAxMzY2MTI0MDgyMjMiPiLpoa/npLrlnKjpgJrnn6XmuIXllq7poILnq6/kuKbnmbzlh7rpn7PmlYgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4i55+t5pqr6aGv56S65Zyo6J6i5bmV5LiK5Lim55m85Ye66Z+z5pWIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25vbmUiIG1zZ2lkPSIyMTIxOTU3OTI2MDQwNTQzMTQ4Ij4i5LiA6Iis6aGP6ImyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IuWknOmWk+mhj+iJsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4i6Ieq6KiC6aGP6ImyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X3Vua25vd24iIG1zZ2lkPSIyNzA5MjAyMTA0MjU2MjY1MTA3Ij4i5LiN5piO6aGP6ImyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfdHJhbnNmb3JtIiBtc2dpZD0iNjk4NTQ2MDQwODA3OTA4NjA5MCI+Iumhj+iJsuS/ruaUuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+Iumhr+ekuuW/q+mAn+ioreWumuWcluWhiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2VuYWJsZV9jdXN0b20iIG1zZ2lkPSI2NzI5MDAxMzA4MjE3MzQ3NTAxIj4i5ZWf55So6Ieq6KiC6aGP6Imy6K6K5o+bIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfYXBwbHkiIG1zZ2lkPSI5MjEyNjAyMDEyNjQxMDM0MjgzIj4i5aWX55SoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X3RpdGxlIiBtc2dpZD0iNDc0NjY2NjU0NTQ4MDUzNDY2MyI+IueiuuiqjeioreWumiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF9tZXNzYWdlIiBtc2dpZD0iOTExNjAwMTA2OTM5Nzk5NjY5MSI+IumDqOWIhumhj+iJsuioreWumuWPr+iDveacg+mAoOaIkOmAmemDqOijnee9rueEoeazleS9v+eUqOOAguiri+aMieS4gOS4iyBb56K65a6aXSDkvobnorroqo3mgqjopoHkvb/nlKjpgJnpoZ7poY/oibLoqK3lrprvvIzlkKbliYfns7vntbHlsIflnKggMTAg56eS5b6M6YeN6Kit6YCZ5Lqb6Kit5a6a44CCIjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbAppbmRleCA4N2I2YWFmLi5lYmQ4NTdjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWwKQEAgLTMwMSw4ICszMDEsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19zZWFyY2hfYmFyX2xhYmVsIiBtc2dpZD0iODA3NDk5NzQwMDE4NzgzNjY3NyI+InNlc2hhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19sYXVuY2hfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjI5NjkyODc4MzgxMjA1NTA1MDYiPiJBeWlrd2F6YW5nYSB1a3VxYWxhIGktPHhsaWZmOmcgaWQ9IkFQUCI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfc2hvd19oaXN0b3J5X2J1dHRvbl9sYWJlbCIgbXNnaWQ9IjcwNjIwODgxOTY0NDk3NDcyNDUiPiJPa3VuaW5naSI8L3N0cmluZz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWNlbnRzX2hpc3RvcnlfbGFiZWxfZm9ybWF0ICg2MzM3MTU1NjA4MDU1MDYyNDI5KSAtLT4KLSAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19oaXN0b3J5X2xhYmVsX2Zvcm1hdCIgbXNnaWQ9IjYzMzcxNTU2MDgwNTUwNjI0MjkiPiI8eGxpZmY6ZyBpZD0iTlVNQkVSIj4lZDwveGxpZmY6Zz4gT2t1bmluZ2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJyZWNlbnRzX211bHRpc3RhY2tfYWRkX3N0YWNrX2RpYWxvZ19zcGxpdF9ob3Jpem9udGFsIiBtc2dpZD0iODg0ODUxNDQ3NDU0MzQyNzMzMiI+IkhsdWthbmlzYSBva3V2dW5kbGlsZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlY2VudHNfbXVsdGlzdGFja19hZGRfc3RhY2tfZGlhbG9nX3NwbGl0X3ZlcnRpY2FsIiBtc2dpZD0iOTA3NTI5MjIzMzY5NjE4MDgxMyI+IkhsdWthbmlzYSBva3VtaWxlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icmVjZW50c19tdWx0aXN0YWNrX2FkZF9zdGFja19kaWFsb2dfc3BsaXRfY3VzdG9tIiBtc2dpZD0iNDE3NzgzNzU5NzUxMzcwMTk0MyI+IkhsdWthbmlzYSBrd2V6aWZpc28iPC9zdHJpbmc+CkBAIC0zNjUsNyArMzY0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjM3OTE4NzI2NzUwOTU1ODU5Ij4iSXNpbG9uZG9sb3ppIHNlYmhldGhyaSBzaXZ1bGl3ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX3RleHQiIG1zZ2lkPSI4MjAzMTg3ODgxMjY2NzI2OTIiPiJTZWhsaXNhIHVrdXNlYmVuemEgbmVkYXRoYSB5YXNlbXV2YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc2F2ZXJfbm90aWZpY2F0aW9uX2FjdGlvbl90ZXh0IiBtc2dpZD0iMTA5MTU4NjU4MjM4MTEwMzgyIj4iVmFsYSBpc2lsb25kb2xvemkgc2ViaGV0aHJpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibm90aWZpY2F0aW9uX2hpZGRlbl90ZXh0IiBtc2dpZD0iMTEzNTE2OTMwMTg5NzE1MTkwOSI+Ik9rdXF1a2V0aHdlIGt1ZmlobGl3ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fZGlhbG9nX3RleHQiIG1zZ2lkPSIzMDcxNDMxMDI1NDQ4MjE4OTI4Ij4iPHhsaWZmOmcgaWQ9IkFQUF9TRUVLSU5HX1BFUk1JU1NJT04iPiVzPC94bGlmZjpnPiBpem9xYWxhIHVrdXRod2VidWxhIHlvbmtlIGludG8gZWJvbmlzd2Ega3VzaWtyaW5pIHNha2hvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Byb2plY3Rpb25fcmVtZW1iZXJfdGV4dCIgbXNnaWQ9IjMxMDM1MTA4ODIxNzI3NDY3NTIiPiJVbmdhYm9uaXNpIGZ1dGhpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2xlYXJfYWxsX25vdGlmaWNhdGlvbnNfdGV4dCIgbXNnaWQ9IjgxNDE5Mjg4OTc3MTQ2MjgyOCI+IlN1bGEga29ua2UiPC9zdHJpbmc+CkBAIC00NTAsNCArNDQ4LDI2IEBACiAgICAgPHN0cmluZyBuYW1lPSJlbmFibGVfYmx1ZXRvb3RoX3RpdGxlIiBtc2dpZD0iNTAyNzAzNzcwNjUwMDYzNTI2OSI+IlZ1bGEgaS1CbHVldG9vdGg/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZW5hYmxlX2JsdWV0b290aF9tZXNzYWdlIiBtc2dpZD0iOTEwNjU5NTk5MDcwODk4NTM4NSI+IlVrdXplIHV4aHVtZSBpa2hpYmhvZGkgeWFraG8gbmV0aGViaHVsZXRoaSB5YWtobywga3VmYW5lbGUgdXFhbGUgbmdva3V2dWxhIGktQmx1ZXRvb3RoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVuYWJsZV9ibHVldG9vdGhfY29uZmlybWF0aW9uX29rIiBtc2dpZD0iNjI1ODA3NDI1MDk0ODMwOTcxNSI+IlZ1bGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhcHBseV90b190b3BpYyIgbXNnaWQ9IjM2NDE0MDM0ODkzMTg2NTk2NjYiPiJTZWJlbnppc2Ega3V6YXppc28gemUtPHhsaWZmOmcgaWQ9IlRPUElDX05BTUUiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwbHlfdG9fYXBwIiBtc2dpZD0iMzYzMDE2NzgzOTM5ODE1OTYwIj4iU2ViZW56aXNhIGt1em8gem9ua2UgaXphemlzbyBleml2ZWxhIGt1bG9sdSBobGVsbyBsb2t1c2ViZW56YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImJsb2NrZWRfaW1wb3J0YW5jZSIgbXNnaWQ9IjUxOTg1Nzg5ODg5NzgyMzQxNjEiPiJLdXZpbmplbHdlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibG93X2ltcG9ydGFuY2UiIG1zZ2lkPSI0MTA5OTI5OTg2MTA3MTQ3OTMwIj4iVWt1YmFsdWxla2Egb2t1cGhhbnNpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmYXVsdF9pbXBvcnRhbmNlIiBtc2dpZD0iODE5MjEwNzY4OTk5NTc0MjY1MyI+IlVrdWJhbHVsZWthIG9rdWp3YXllbGVraWxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iaGlnaF9pbXBvcnRhbmNlIiBtc2dpZD0iMTUyNzA2NjE5NTYxNDA1MDI2MyI+IlVrdWJhbHVsZWthIG9rdXBoZXp1bHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJtYXhfaW1wb3J0YW5jZSIgbXNnaWQ9IjUwODkwMDU4NzI3MTk1NjM4OTQiPiJVa3ViYWx1bGVrYSBva3VzaGVzaGF5byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2Jsb2NrZWQiIG1zZ2lkPSIyMzk3MTkyNjQyNjU3ODcyODcyIj4iVW5nYWxva290aGkgdWJvbmlzZSBsZXppIHphemlzbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX2xvdyIgbXNnaWQ9IjQzODM1NjMyNjczNzA4NTk3MjUiPiJCb25pc2Egbmdva3V0aHVsaWxlIG5nYXBoYW5zaSBrb2hsdSBsd2VzYXppc28iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9kZWZhdWx0IiBtc2dpZD0iNDkyNjUyOTYxNTkyMDYxMDgxNyI+IkJvbmlzYSBuZ29rdXRodWxpbGUgbGV6aSB6YXppc28iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9oaWdoIiBtc2dpZD0iMzIyMjY4MDEzNjYxMjQwODIyMyI+IkJvbmlzYSBuZ2FwaGV6dWx1IGtvaGx1IGx3ZXphemlzbyB1cGhpbmRlIHdlbnplIHVtc2luZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW5jZV9tYXgiIG1zZ2lkPSI1MjM2OTg3MTcxOTA0NzU2MTM0Ij4iQmhla2Ega3VzaWtyaW5pIHVwaGluZGUgd2VuemUgdW1zaW5kbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9ub25lIiBtc2dpZD0iMjEyMTk1NzkyNjA0MDU0MzE0OCI+IkltaWJhbGEgZWp3YXllbGVraWxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbWF0cml4X25pZ2h0IiBtc2dpZD0iNTk0MzgxNzYyMjEwNTMwNzA3MiI+IkltaWJhbGEgeWFzZWJ1c3VrdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iIG1zZ2lkPSIzNjU1NTc2NDkyMzIyMjk4NzEzIj4iSW1pYmFsYSB5YW5nb2t3ZXppZmlzbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIiBtc2dpZD0iMjcwOTIwMjEwNDI1NjI2NTEwNyI+IkltaWJhbGEgZW5nYXppd2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl90cmFuc2Zvcm0iIG1zZ2lkPSI2OTg1NDYwNDA4MDc5MDg2MDkwIj4iVWt1bHVuZ2lzd2Ega29tYmFsYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9zaG93X3FzIiBtc2dpZD0iMTc2MzI0NDM1NDM5OTI3NjY3OSI+IkJvbmlzYSBpdGhheWlsaSBsZXppbHVuZ2lzZWxlbG8gZXppc2hlc2hheW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9lbmFibGVfY3VzdG9tIiBtc2dpZD0iNjcyOTAwMTMwODIxNzM0NzUwMSI+Ik5pa2EgYW1hbmRsYSB1a3VndXF1bHdhIGt3YW5nb2t3ZXppZmlzbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5IiBtc2dpZD0iOTIxMjYwMjAxMjY0MTAzNDI4MyI+IlNlYmVuemlzYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSIgbXNnaWQ9IjQ3NDY2NjY1NDU0ODA1MzQ2NjMiPiJRaW5pc2VraXNhIGl6aWx1bmdpc2VsZWxvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfcmV2ZXJ0X21lc3NhZ2UiIG1zZ2lkPSI5MTE2MDAxMDY5Mzk3OTk2NjkxIj4iRXppbnllIGl6aWx1bmdpc2VsZWxvIHpvbWJhbGEgemluZ2VuemEgbGUgZGl2YXlpc2kgaW5nYXNlYmVuemlzZWtpLiBDaG9mb3phIGt1LUtVTFVOR0lMRSB1a3V6ZSB1cWluaXNla2lzZSBsZXppIHppbHVuZ2lzZWxlbG8gem9tYmFsYSwgdW1hIGt1bmdlbmphbG8gbGV6aSB6aWx1bmdpc2VsZWxvIHppem9zZXRod2Ega2FidXNoYSBuZ2VtdXZhIGt3YW1hc2VraG9uZGkgYW5ndS0xMC4iPC9zdHJpbmc+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGltZW5zLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAppbmRleCBmNzBmMzhiLi4wMzVmNTY0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2RpbWVucy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCkBAIC00OSwxMSArNDksMTQgQEAKICAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX21heF9oZWFkc191cF9oZWlnaHRfbGVnYWN5Ij4xMjhkcDwvZGltZW4+CiAKICAgICA8IS0tIEhlaWdodCBvZiBhIGhlYWRzIHVwIG5vdGlmaWNhdGlvbiBpbiB0aGUgc3RhdHVzIGJhciAtLT4KLSAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX21heF9oZWFkc191cF9oZWlnaHQiPjE0MGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ibm90aWZpY2F0aW9uX21heF9oZWFkc191cF9oZWlnaHQiPjE0MWRwPC9kaW1lbj4KIAogICAgIDwhLS0gSGVpZ2h0IG9mIGEgdGhlIHN1bW1hcnkgKCJtb3JlIGNhcmQiKSBub3RpZmljYXRpb24gb24ga2V5Z3VhcmQuIC0tPgogICAgIDxkaW1lbiBuYW1lPSJub3RpZmljYXRpb25fc3VtbWFyeV9oZWlnaHQiPjQ0ZHA8L2RpbWVuPgogCisgICAgPCEtLSBNaW5pbXVtIGxheW91dGVkIGhlaWdodCBvZiBhIG5vdGlmaWNhdGlvbiBpbiB0aGUgc3RhdHVzYmFyLS0+CisgICAgPGRpbWVuIG5hbWU9Im1pbl9ub3RpZmljYXRpb25fbGF5b3V0X2hlaWdodCI+NDhkcDwvZGltZW4+CisKICAgICA8IS0tIHNpemUgYXQgd2hpY2ggTm90aWZpY2F0aW9uIGljb25zIHdpbGwgYmUgZHJhd24gaW4gdGhlIHN0YXR1cyBiYXIgLS0+CiAgICAgPGRpbWVuIG5hbWU9InN0YXR1c19iYXJfaWNvbl9kcmF3aW5nX3NpemUiPjE3ZGlwPC9kaW1lbj4KIApAQCAtNTgwLDkgKzU4Myw5IEBACiAgICAgPGRpbWVuIG5hbWU9InFzX2hlYWRlcl9uZWdfcGFkZGluZyI+LThkcDwvZGltZW4+CiAKICAgICA8IS0tIEhvdyBoaWdoIHdlIGxpZnQgdGhlIGRpdmlkZXIgd2hlbiB0b3VjaGluZyAtLT4KLSAgICA8ZGltZW4gbmFtZT0iZG9ja2VkX3N0YWNrX2RpdmlkZXJfbGlmdF9lbGV2YXRpb24iPjZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9ImRvY2tlZF9zdGFja19kaXZpZGVyX2xpZnRfZWxldmF0aW9uIj40ZHA8L2RpbWVuPgogCi0gICAgPGRpbWVuIG5hbWU9ImRvY2tlZF9kaXZpZGVyX2hhbmRsZV93aWR0aCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9ImRvY2tlZF9kaXZpZGVyX2hhbmRsZV93aWR0aCI+MTZkcDwvZGltZW4+CiAgICAgPGRpbWVuIG5hbWU9ImRvY2tlZF9kaXZpZGVyX2hhbmRsZV9oZWlnaHQiPjJkcDwvZGltZW4+CiAKIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKaW5kZXggNTBlMDY2MS4uNDVkZGQ1MCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCkBAIC05MDYsOSArOTA2LDYgQEAKICAgICA8IS0tIEJhdHRlcnkgc2F2ZXIgbm90aWZpY2F0aW9uIGFjdGlvbiB0ZXh0LiBbQ0hBUiBMSU1JVD02MF0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3NhdmVyX25vdGlmaWNhdGlvbl9hY3Rpb25fdGV4dCI+VHVybiBvZmYgYmF0dGVyeSBzYXZlcjwvc3RyaW5nPgogCi0gICAgPCEtLSBUZXh0IHNob3duIGluIHBsYWNlIG9mIG5vdGlmaWNhdGlvbiBjb250ZW50cyB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgaGlkZGVuIG9uIGEgc2VjdXJlIGxvY2tzY3JlZW4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJub3RpZmljYXRpb25faGlkZGVuX3RleHQiPkNvbnRlbnRzIGhpZGRlbjwvc3RyaW5nPgotCiAgICAgPCEtLSBNZWRpYSBwcm9qZWN0aW9uIHBlcm1pc3Npb24gZGlhbG9nIHdhcm5pbmcgdGV4dC4gW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9wcm9qZWN0aW9uX2RpYWxvZ190ZXh0Ij48eGxpZmY6ZyBpZD0iYXBwX3NlZWtpbmdfcGVybWlzc2lvbiIgZXhhbXBsZT0iSGFuZ291dHMiPiVzPC94bGlmZjpnPiB3aWxsIHN0YXJ0IGNhcHR1cmluZyBldmVyeXRoaW5nIHRoYXRcJ3MgZGlzcGxheWVkIG9uIHlvdXIgc2NyZWVuLjwvc3RyaW5nPgogCkBAIC0xMjMxLDQgKzEyMjgsNDAgQEAKICAgICA8IS0tIFtDSEFSIExJTUlUPTEwMF0gTm90aWZpY2F0aW9uIEltcG9ydGFuY2Ugc2xpZGVyOiBtYXggaW1wb3J0YW5jZSBsZXZlbCBkZXNjcmlwdGlvbiAtLT4KICAgICA8c3RyaW5nIG5hbWU9Im5vdGlmaWNhdGlvbl9pbXBvcnRhbmNlX21heCI+UGVlayBvbnRvIHRoZSBzY3JlZW4gYW5kIG1ha2Ugc291bmQ8L3N0cmluZz4KIAorICAgIDwhLS0gTGFiZWwgZm9yIG5vIGNvbG9yIHRyYW5zZm9ybSBbQ0hBUiBMSU1JVD0zMF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfbm9uZSI+Tm9ybWFsIGNvbG9yczwvc3RyaW5nPgorCisgICAgPCEtLSBMYWJlbCBmb3IgbmlnaHQgY29sb3IgdHJhbnNmb3JtIFtDSEFSIExJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9uaWdodCI+TmlnaHQgY29sb3JzPC9zdHJpbmc+CisKKyAgICA8IS0tIExhYmVsIGZvciBjdXN0b20gY29sb3IgdHJhbnNmb3JtIFtDSEFSIExJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF9jdXN0b20iPkN1c3RvbSBjb2xvcnM8L3N0cmluZz4KKworICAgIDwhLS0gTGFiZWwgZm9yIHVua25vd24gY29sb3IgdHJhbnNmb3JtIFtDSEFSIExJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21hdHJpeF91bmtub3duIj5Vbmtub3duIGNvbG9yczwvc3RyaW5nPgorCisgICAgPCEtLSBUaXRsZSBmb3IgY29sb3IgdHJhbnNmb3JtIFtDSEFSIExJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3RyYW5zZm9ybSI+Q29sb3IgbW9kaWZpY2F0aW9uPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIGZvciBzZXR0aW5nIHRvIHNob3cgUXVpY2sgU2V0dGluZ3MgdGlsZSBbQ0hBUiBMSU1JVD02MF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tYXRyaXhfc2hvd19xcyI+U2hvdyBRdWljayBTZXR0aW5ncyB0aWxlPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIGZvciBzd2l0Y2ggdG8gZW5hYmxlIGN1c3RvbSBjb2xvciB0cmFuc2Zvcm0gW0NIQVIgTElNSVQ9NjBdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfZW5hYmxlX2N1c3RvbSI+RW5hYmxlIGN1c3RvbSB0cmFuc2Zvcm08L3N0cmluZz4KKworICAgIDwhLS0gQnV0dG9uIHRvIGFwcGx5IHNldHRpbmdzIFtDSEFSIExJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX2FwcGx5Ij5BcHBseTwvc3RyaW5nPgorCisgICAgPCEtLSBUaXRsZSBvZiB3YXJuaW5nIGRpYWxvZyBhYm91dCBiYWQgY29sb3Igc2V0dGluZ3MuIFtDSEFSIExJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX3JldmVydF90aXRsZSI+Q29uZmlybSBzZXR0aW5nczwvc3RyaW5nPgorCisgICAgPCEtLSBNZXNzYWdlIHdhcm5pbmcgdXNlciBhYm91dCBjdXN0b20gY29sb3Igc2V0dGluZ3MgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9yZXZlcnRfbWVzc2FnZSI+U29tZSBjb2xvciBzZXR0aW5ncyBjYW4gbWFrZSB0aGlzCisgICAgICAgIGRldmljZSB1bnVzYWJsZS4gQ2xpY2sgT0sgdG8gY29uZmlybSB0aGVzZSBjb2xvciBzZXR0aW5ncywKKyAgICAgICAgb3RoZXJ3aXNlIHRoZXNlIHNldHRpbmdzIHdpbGwgcmVzZXQgYWZ0ZXIgMTAgc2Vjb25kcy48L3N0cmluZz4KKworICAgIDxzdHJpbmcgbmFtZT0iY29sb3JfbW9kaWZpY2F0aW9uX3IiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPlI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbG9yX21vZGlmaWNhdGlvbl9nIiB0cmFuc2xhdGFibGU9ImZhbHNlIj5HPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJjb2xvcl9tb2RpZmljYXRpb25fYiIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+Qjwvc3RyaW5nPgorCiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbAppbmRleCBhYWQ0MjhhLi4zYjBhYjc5MSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9zdHlsZXMueG1sCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbApAQCAtMjM3LDEyICsyMzcsNiBAQAogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmdyYXZpdHkiPmNlbnRlcjwvaXRlbT4KICAgICA8L3N0eWxlPgogCi0gICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLk1hdGVyaWFsLk5vdGlmaWNhdGlvbi5QYXJlbnRoZXRpY2FsIgotICAgICAgICAgICBwYXJlbnQ9IkAqYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5NYXRlcmlhbC5Ob3RpZmljYXRpb24iPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTdHlsZSI+aXRhbGljPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+IzYwMDAwMDAwPC9pdGVtPgotICAgIDwvc3R5bGU+Ci0KICAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuTWF0ZXJpYWwuTm90aWZpY2F0aW9uLkhlYWRlclRpdGxlIgogICAgICAgICBwYXJlbnQ9IkAqYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5NYXRlcmlhbC5Ob3RpZmljYXRpb24uSW5mbyI+CiAgICAgPC9zdHlsZT4KQEAgLTMwNSwxOCArMjk5LDIyIEBACiAKICAgICA8c3R5bGUgbmFtZT0iRG9ja2VkRGl2aWRlckJhY2tncm91bmQiPgogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93aWR0aCI+bWF0Y2hfcGFyZW50PC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPjEyZHA8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+MTBkcDwvaXRlbT4KICAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eSI+Y2VudGVyX3ZlcnRpY2FsPC9pdGVtPgogICAgIDwvc3R5bGU+CiAKICAgICA8c3R5bGUgbmFtZT0iRG9ja2VkRGl2aWRlckhhbmRsZSI+CiAgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2dyYXZpdHkiPmNlbnRlcl9ob3Jpem9udGFsPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93aWR0aCI+NjRkcDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2lkdGgiPjk2ZHA8L2l0ZW0+CiAgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+NDhkcDwvaXRlbT4KICAgICA8L3N0eWxlPgogCiAgICAgPHN0eWxlIG5hbWU9IlR1bmVyU2V0dGluZ3MiIHBhcmVudD0iQGFuZHJvaWQ6c3R5bGUvVGhlbWUuTWF0ZXJpYWwuU2V0dGluZ3MiPgotICAgICAgICA8aXRlbSBuYW1lPSJwcmVmZXJlbmNlVGhlbWUiPkBhbmRyb2lkOnN0eWxlL1RoZW1lLk1hdGVyaWFsLlNldHRpbmdzPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJwcmVmZXJlbmNlVGhlbWUiPkBzdHlsZS9UdW5lclByZWZlcmVuY2VUaGVtZTwvaXRlbT4KKyAgICA8L3N0eWxlPgorCisgICAgPHN0eWxlIG5hbWU9IlR1bmVyUHJlZmVyZW5jZVRoZW1lIiBwYXJlbnQ9IkBhbmRyb2lkOnN0eWxlL1RoZW1lLk1hdGVyaWFsLlNldHRpbmdzIj4KKyAgICAgICAgPGl0ZW0gbmFtZT0iQGRyb3Bkb3duUHJlZmVyZW5jZVN0eWxlIj5Ac3R5bGUvUHJlZmVyZW5jZS5Ecm9wRG93bi5NYXRlcmlhbDwvaXRlbT4KICAgICA8L3N0eWxlPgogCiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy94bWwvdHVuZXJfcHJlZnMueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3htbC90dW5lcl9wcmVmcy54bWwKaW5kZXggNjEwMzIxNi4uZjAyZjc2MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3htbC90dW5lcl9wcmVmcy54bWwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3htbC90dW5lcl9wcmVmcy54bWwKQEAgLTEwMiw2ICsxMDIsMTEgQEAKICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9kZW1vX21vZGUiCiAgICAgICAgIGFuZHJvaWQ6ZnJhZ21lbnQ9ImNvbS5hbmRyb2lkLnN5c3RlbXVpLnR1bmVyLkRlbW9Nb2RlRnJhZ21lbnQiIC8+CiAKKyAgICA8UHJlZmVyZW5jZQorICAgICAgICBhbmRyb2lkOmtleT0iY29sb3JfdHJhbnNmb3JtIgorICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL2NvbG9yX3RyYW5zZm9ybSIKKyAgICAgICAgYW5kcm9pZDpmcmFnbWVudD0iY29tLmFuZHJvaWQuc3lzdGVtdWkudHVuZXIuQ29sb3JNYXRyaXhGcmFnbWVudCIgLz4KKwogICAgIDwhLS0gV2FybmluZywgdGhpcyBnb2VzIGxhc3QuIC0tPgogICAgIDxQcmVmZXJlbmNlCiAgICAgICAgIGFuZHJvaWQ6c3VtbWFyeT0iQHN0cmluZy90dW5lcl9wZXJzaXN0ZW50X3dhcm5pbmciCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkva2V5Ym9hcmQvS2V5Ym9hcmRVSS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL2tleWJvYXJkL0tleWJvYXJkVUkuamF2YQppbmRleCBkOTMxODU2Li40ODFiOTE4MCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL2tleWJvYXJkL0tleWJvYXJkVUkuamF2YQorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkva2V5Ym9hcmQvS2V5Ym9hcmRVSS5qYXZhCkBAIC03MCwxNyArNzAsMTkgQEAKICAgICAvLyB0aW1lIGZvciB1cyB0byByZWNlaXZlIHRoZSBzaWduYWwgdGhhdCBpdCdzIHN0YXJ0aW5nLgogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgQkxVRVRPT1RIX1NUQVJUX0RFTEFZX01JTExJUyA9IDEwICogMTAwMDsKIAorICAgIC8vIFdlIHdpbGwgYmUgc2Nhbm5pbmcgdXAgdG8gMzAgc2Vjb25kcywgYWZ0ZXIgd2hpY2ggd2UnbGwgc3RvcC4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIEJMVUVUT09USF9TQ0FOX1RJTUVPVVRfTUlMTElTID0gMzAgKiAxMDAwOworCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX05PVF9FTkFCTEVEID0gLTE7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1VOS05PV04gPSAwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFURV9XQUlUSU5HX0ZPUl9CT09UX0NPTVBMRVRFRCA9IDE7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1dBSVRJTkdfRk9SX1RBQkxFVF9NT0RFX0VYSVQgPSAyOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFURV9XQUlUSU5HX0ZPUl9ERVZJQ0VfRElTQ09WRVJZID0gMzsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfV0FJVElOR19GT1JfQkxVRVRPT1RIID0gNDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfV0FJVElOR19GT1JfU1RBVEVfUEFJUkVEID0gNTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfUEFJUklORyA9IDY7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BBSVJFRCA9IDc7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1VTRVJfQ0FOQ0VMTEVEID0gODsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfREVWSUNFX05PVF9GT1VORCA9IDk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BBSVJJTkcgPSA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFURV9QQUlSRUQgPSA2OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFURV9VU0VSX0NBTkNFTExFRCA9IDc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRFX0RFVklDRV9OT1RfRk9VTkQgPSA4OwogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19JTklUID0gMDsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX09OX0JPT1RfQ09NUExFVEVEID0gMTsKQEAgLTkyLDYgKzk0LDcgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX09OX0JMRV9TQ0FOX0ZBSUxFRCA9IDc7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19TSE9XX0JMVUVUT09USF9ESUFMT0cgPSA4OwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfRElTTUlTU19CTFVFVE9PVEhfRElBTE9HID0gOTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0JMRV9BQk9SVF9TQ0FOID0gMTA7CiAKICAgICBwcml2YXRlIHZvbGF0aWxlIEtleWJvYXJkSGFuZGxlciBtSGFuZGxlcjsKICAgICBwcml2YXRlIHZvbGF0aWxlIEtleWJvYXJkVUlIYW5kbGVyIG1VSUhhbmRsZXI7CkBAIC0xMDcsNiArMTEwLDcgQEAKICAgICBwcml2YXRlIGxvbmcgbUJvb3RDb21wbGV0ZWRUaW1lOwogCiAgICAgcHJpdmF0ZSBpbnQgbUluVGFibGV0TW9kZSA9IElucHV0TWFuYWdlci5TV0lUQ0hfU1RBVEVfVU5LTk9XTjsKKyAgICBwcml2YXRlIGludCBtU2NhbkF0dGVtcHQgPSAwOwogICAgIHByaXZhdGUgU2NhbkNhbGxiYWNrIG1TY2FuQ2FsbGJhY2s7CiAgICAgcHJpdmF0ZSBCbHVldG9vdGhEaWFsb2cgbURpYWxvZzsKIApAQCAtMzI4LDYgKzMzMiw5IEBACiAgICAgICAgICAgICAuYnVpbGQoKTsKICAgICAgICAgbVNjYW5DYWxsYmFjayA9IG5ldyBLZXlib2FyZFNjYW5DYWxsYmFjaygpOwogICAgICAgICBzY2FubmVyLnN0YXJ0U2NhbihBcnJheXMuYXNMaXN0KGZpbHRlciksIHNldHRpbmdzLCBtU2NhbkNhbGxiYWNrKTsKKworICAgICAgICBNZXNzYWdlIGFib3J0TXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQkxFX0FCT1JUX1NDQU4sICsrbVNjYW5BdHRlbXB0LCAwKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKGFib3J0TXNnLCBCTFVFVE9PVEhfU0NBTl9USU1FT1VUX01JTExJUyk7CiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIHN0b3BTY2FubmluZygpIHsKQEAgLTMzOCw2ICszNDUsMTkgQEAKICAgICB9CiAKICAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIGhhbmRsZXIgdGhyZWFkCisgICAgcHJpdmF0ZSB2b2lkIGJsZUFib3J0U2NhbkludGVybmFsKGludCBzY2FuQXR0ZW1wdCkgeworICAgICAgICBpZiAobVN0YXRlID09IFNUQVRFX1dBSVRJTkdfRk9SX0RFVklDRV9ESVNDT1ZFUlkgJiYgc2NhbkF0dGVtcHQgPT0gbVNjYW5BdHRlbXB0KSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAiQmx1ZXRvb3RoIHNjYW4gdGltZWQgb3V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdG9wU2Nhbm5pbmcoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgYWxzbyB0cnkgc2h1dHRpbmcgb2ZmIGJsdWV0b290aCBpZiB3ZSBlbmFibGVkCisgICAgICAgICAgICAvLyBpdCBpbiB0aGUgZmlyc3QgcGxhY2U/CisgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9ERVZJQ0VfTk9UX0ZPVU5EOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBoYW5kbGVyIHRocmVhZAogICAgIHByaXZhdGUgdm9pZCBvbkRldmljZUFkZGVkSW50ZXJuYWwoQ2FjaGVkQmx1ZXRvb3RoRGV2aWNlIGQpIHsKICAgICAgICAgaWYgKG1TdGF0ZSA9PSBTVEFURV9XQUlUSU5HX0ZPUl9ERVZJQ0VfRElTQ09WRVJZICYmIGQuZ2V0TmFtZSgpLmVxdWFscyhtS2V5Ym9hcmROYW1lKSkgewogICAgICAgICAgICAgc3RvcFNjYW5uaW5nKCk7CkBAIC00MjUsNiArNDQ1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9VU0VSX0NBTkNFTExFRDsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfQkxFX0FCT1JUX1NDQU46IHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHNjYW5BdHRlbXB0ID0gbXNnLmFyZzE7CisgICAgICAgICAgICAgICAgICAgIGJsZUFib3J0U2NhbkludGVybmFsKHNjYW5BdHRlbXB0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgTVNHX09OX0JMVUVUT09USF9TVEFURV9DSEFOR0VEOiB7CiAgICAgICAgICAgICAgICAgICAgIGludCBibHVldG9vdGhTdGF0ZSA9IG1zZy5hcmcxOwpAQCAtNTU1LDggKzU4MSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICJTVEFURV9XQUlUSU5HX0ZPUl9ERVZJQ0VfRElTQ09WRVJZIjsKICAgICAgICAgICAgIGNhc2UgU1RBVEVfV0FJVElOR19GT1JfQkxVRVRPT1RIOgogICAgICAgICAgICAgICAgIHJldHVybiAiU1RBVEVfV0FJVElOR19GT1JfQkxVRVRPT1RIIjsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVfV0FJVElOR19GT1JfU1RBVEVfUEFJUkVEOgotICAgICAgICAgICAgICAgIHJldHVybiAiU1RBVEVfV0FJVElOR19GT1JfU1RBVEVfUEFJUkVEIjsKICAgICAgICAgICAgIGNhc2UgU1RBVEVfUEFJUklORzoKICAgICAgICAgICAgICAgICByZXR1cm4gIlNUQVRFX1BBSVJJTkciOwogICAgICAgICAgICAgY2FzZSBTVEFURV9QQUlSRUQ6CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhY2tkaXZpZGVyL0RpdmlkZXJTbmFwQWxnb3JpdGhtLmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhY2tkaXZpZGVyL0RpdmlkZXJTbmFwQWxnb3JpdGhtLmphdmEKaW5kZXggNjllOTBjYy4uNWFmMTcyYyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YWNrZGl2aWRlci9EaXZpZGVyU25hcEFsZ29yaXRobS5qYXZhCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGFja2RpdmlkZXIvRGl2aWRlclNuYXBBbGdvcml0aG0uamF2YQpAQCAtOTgsMTAgKzk4LDEwIEBACiAKICAgICAgICAgLy8gVE9ETzogQmV0dGVyIGNhbGN1bGF0aW9uCiAgICAgICAgIHRhcmdldHMuYWRkKG5ldyBTbmFwVGFyZ2V0KC1tRGl2aWRlclNpemUsIFNuYXBUYXJnZXQuRkxBR19ESVNNSVNTX1NUQVJUKSk7Ci0gICAgICAgIHRhcmdldHMuYWRkKG5ldyBTbmFwVGFyZ2V0KChpbnQpICgwLjM4ZiAqIGRpdmlkZXJNYXgpIC0gbURpdmlkZXJTaXplIC8gMiwKKyAgICAgICAgdGFyZ2V0cy5hZGQobmV3IFNuYXBUYXJnZXQoKGludCkgKDAuMzQxNWYgKiBkaXZpZGVyTWF4KSAtIG1EaXZpZGVyU2l6ZSAvIDIsCiAgICAgICAgICAgICAgICAgU25hcFRhcmdldC5GTEFHX05PTkUpKTsKICAgICAgICAgdGFyZ2V0cy5hZGQobmV3IFNuYXBUYXJnZXQoZGl2aWRlck1heCAvIDIgLSBtRGl2aWRlclNpemUgLyAyLCBTbmFwVGFyZ2V0LkZMQUdfTk9ORSkpOwotICAgICAgICB0YXJnZXRzLmFkZChuZXcgU25hcFRhcmdldCgoaW50KSAoMC42MmYgKiBkaXZpZGVyTWF4KSAtIG1EaXZpZGVyU2l6ZSAvIDIsCisgICAgICAgIHRhcmdldHMuYWRkKG5ldyBTbmFwVGFyZ2V0KChpbnQpICgwLjY1ODVmICogZGl2aWRlck1heCkgLSBtRGl2aWRlclNpemUgLyAyLAogICAgICAgICAgICAgICAgIFNuYXBUYXJnZXQuRkxBR19OT05FKSk7CiAgICAgICAgIHRhcmdldHMuYWRkKG5ldyBTbmFwVGFyZ2V0KGRpdmlkZXJNYXgsIFNuYXBUYXJnZXQuRkxBR19ESVNNSVNTX0VORCkpOwogICAgICAgICByZXR1cm4gdGFyZ2V0czsKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGFja2RpdmlkZXIvRGl2aWRlclZpZXcuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGFja2RpdmlkZXIvRGl2aWRlclZpZXcuamF2YQppbmRleCBjMDFmMTcwLi4xMzY0MmViIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhY2tkaXZpZGVyL0RpdmlkZXJWaWV3LmphdmEKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YWNrZGl2aWRlci9EaXZpZGVyVmlldy5qYXZhCkBAIC0yNDAsOSArMjQwLDkgQEAKIAogICAgIHByaXZhdGUgdm9pZCBsaWZ0QmFja2dyb3VuZCgpIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbERpdmlzaW9uKCkpIHsKLSAgICAgICAgICAgIG1CYWNrZ3JvdW5kLmFuaW1hdGUoKS5zY2FsZVkoMS41Zik7CisgICAgICAgICAgICBtQmFja2dyb3VuZC5hbmltYXRlKCkuc2NhbGVZKDEuNGYpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUJhY2tncm91bmQuYW5pbWF0ZSgpLnNjYWxlWCgxLjVmKTsKKyAgICAgICAgICAgIG1CYWNrZ3JvdW5kLmFuaW1hdGUoKS5zY2FsZVgoMS40Zik7CiAgICAgICAgIH0KICAgICAgICAgbUJhY2tncm91bmQuYW5pbWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldEludGVycG9sYXRvcihtVG91Y2hSZXNwb25zZUludGVycG9sYXRvcikKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQmFzZVN0YXR1c0Jhci5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9CYXNlU3RhdHVzQmFyLmphdmEKaW5kZXggYTZjYTUwYS4uMzUzN2QzZSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9CYXNlU3RhdHVzQmFyLmphdmEKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9CYXNlU3RhdHVzQmFyLmphdmEKQEAgLTExMCw2ICsxMTAsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5wb2xpY3kuUHJldmlld0luZmxhdGVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5wb2xpY3kuUmVtb3RlSW5wdXRWaWV3OwogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5zdGFjay5Ob3RpZmljYXRpb25TdGFja1Njcm9sbExheW91dDsKK2ltcG9ydCBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuc3RhY2suU3RhY2tTdGF0ZUFuaW1hdG9yOwogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKQEAgLTk4OCw5ICs5ODksNyBAQAogICAgIHByb3RlY3RlZCBTd2lwZUhlbHBlci5Mb25nUHJlc3NMaXN0ZW5lciBnZXROb3RpZmljYXRpb25Mb25nQ2xpY2tlcigpIHsKICAgICAgICAgcmV0dXJuIG5ldyBTd2lwZUhlbHBlci5Mb25nUHJlc3NMaXN0ZW5lcigpIHsKICAgICAgICAgICAgIEBPdmVycmlkZQotICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gb25Mb25nUHJlc3MoVmlldyB2LCBpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAgICAgICBkaXNtaXNzUG9wdXBzKCk7Ci0KKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIG9uTG9uZ1ByZXNzKFZpZXcgdiwgZmluYWwgaW50IHgsIGZpbmFsIGludCB5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9mIEV4cGFuZGFibGVOb3RpZmljYXRpb25Sb3cpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDExLDQxICsxMDEwLDU3IEBACiAKICAgICAgICAgICAgICAgICAvLyBBbHJlYWR5IHNob3dpbmc/CiAgICAgICAgICAgICAgICAgaWYgKGd1dHMuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgewotICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJUcnlpbmcgdG8gc2hvdyBub3RpZmljYXRpb24gZ3V0cywgYnV0IGFscmVhZHkgdmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICBkaXNtaXNzUG9wdXBzKHgsIHkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgTWV0cmljc0xvZ2dlci5hY3Rpb24obUNvbnRleHQsIE1ldHJpY3NMb2dnZXIuQUNUSU9OX05PVEVfQ09OVFJPTFMpOwotICAgICAgICAgICAgICAgIGd1dHMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwogCi0gICAgICAgICAgICAgICAgZmluYWwgZG91YmxlIGhvcnogPSBNYXRoLm1heChndXRzLmdldFdpZHRoKCkgLSB4LCB4KTsKLSAgICAgICAgICAgICAgICBmaW5hbCBkb3VibGUgdmVydCA9IE1hdGgubWF4KGd1dHMuZ2V0QWN0dWFsSGVpZ2h0KCkgLSB5LCB5KTsKLSAgICAgICAgICAgICAgICBmaW5hbCBmbG9hdCByID0gKGZsb2F0KSBNYXRoLmh5cG90KGhvcnosIHZlcnQpOwotICAgICAgICAgICAgICAgIGZpbmFsIEFuaW1hdG9yIGEKLSAgICAgICAgICAgICAgICAgICAgICAgID0gVmlld0FuaW1hdGlvblV0aWxzLmNyZWF0ZUNpcmN1bGFyUmV2ZWFsKGd1dHMsIHgsIHksIDAsIHIpOwotICAgICAgICAgICAgICAgIGEuc2V0RHVyYXRpb24oNDAwKTsKLSAgICAgICAgICAgICAgICBhLnNldEludGVycG9sYXRvcihtTGluZWFyT3V0U2xvd0luKTsKLSAgICAgICAgICAgICAgICBhLnN0YXJ0KCk7Ci0KLSAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uR3V0c0V4cG9zZWQgPSBndXRzOwotCisgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHRoYXQgaXQncyBsYXlvdXRlZCBidXQgbm90IHZpc2libGUgdW50aWwgYWN0dWFsbHkgbGFpZCBvdXQKKyAgICAgICAgICAgICAgICBndXRzLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICAgICAgICAgIC8vIFBvc3QgdG8gZW5zdXJlIHRoZSB0aGUgZ3V0cyBhcmUgcHJvcGVybHkgbGF5ZWQgb3V0LgorICAgICAgICAgICAgICAgIGd1dHMucG9zdChuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3NQb3B1cHMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGd1dHMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgZG91YmxlIGhvcnogPSBNYXRoLm1heChndXRzLmdldFdpZHRoKCkgLSB4LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGRvdWJsZSB2ZXJ0ID0gTWF0aC5tYXgoZ3V0cy5nZXRIZWlnaHQoKSAtIHksIHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgZmxvYXQgciA9IChmbG9hdCkgTWF0aC5oeXBvdChob3J6LCB2ZXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIEFuaW1hdG9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBWaWV3QW5pbWF0aW9uVXRpbHMuY3JlYXRlQ2lyY3VsYXJSZXZlYWwoZ3V0cywgeCwgeSwgMCwgcik7CisgICAgICAgICAgICAgICAgICAgICAgICBhLnNldER1cmF0aW9uKFN0YWNrU3RhdGVBbmltYXRvci5BTklNQVRJT05fRFVSQVRJT05fU1RBTkRBUkQpOworICAgICAgICAgICAgICAgICAgICAgICAgYS5zZXRJbnRlcnBvbGF0b3IobUxpbmVhck91dFNsb3dJbik7CisgICAgICAgICAgICAgICAgICAgICAgICBhLnN0YXJ0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBndXRzLnNldEV4cG9zZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhY2tTY3JvbGxlci5vbkhlaWdodENoYW5nZWQobnVsbCwgdHJ1ZSAvKiBuZWVkc0FuaW1hdGlvbiAqLyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uR3V0c0V4cG9zZWQgPSBndXRzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgZGlzbWlzc1BvcHVwcygpIHsKKyAgICAgICAgZGlzbWlzc1BvcHVwcygtMSwgLTEpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkaXNtaXNzUG9wdXBzKGludCB4LCBpbnQgeSkgewogICAgICAgICBpZiAobU5vdGlmaWNhdGlvbkd1dHNFeHBvc2VkICE9IG51bGwpIHsKICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvbkd1dHMgdiA9IG1Ob3RpZmljYXRpb25HdXRzRXhwb3NlZDsKICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25HdXRzRXhwb3NlZCA9IG51bGw7CiAKICAgICAgICAgICAgIGlmICh2LmdldFdpbmRvd1Rva2VuKCkgPT0gbnVsbCkgcmV0dXJuOwotCi0gICAgICAgICAgICBmaW5hbCBpbnQgeCA9ICh2LmdldExlZnQoKSArIHYuZ2V0UmlnaHQoKSkgLyAyOwotICAgICAgICAgICAgZmluYWwgaW50IHkgPSAodi5nZXRUb3AoKSArIHYuZ2V0QWN0dWFsSGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgIGlmICh4ID09IC0xIHx8IHkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICB4ID0gKHYuZ2V0TGVmdCgpICsgdi5nZXRSaWdodCgpKSAvIDI7CisgICAgICAgICAgICAgICAgeSA9ICh2LmdldFRvcCgpICsgdi5nZXRIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWwgZG91YmxlIGhvcnogPSBNYXRoLm1heCh2LmdldFdpZHRoKCkgLSB4LCB4KTsKKyAgICAgICAgICAgIGZpbmFsIGRvdWJsZSB2ZXJ0ID0gTWF0aC5tYXgodi5nZXRIZWlnaHQoKSAtIHksIHkpOworICAgICAgICAgICAgZmluYWwgZmxvYXQgciA9IChmbG9hdCkgTWF0aC5oeXBvdChob3J6LCB2ZXJ0KTsKICAgICAgICAgICAgIGZpbmFsIEFuaW1hdG9yIGEgPSBWaWV3QW5pbWF0aW9uVXRpbHMuY3JlYXRlQ2lyY3VsYXJSZXZlYWwodiwKLSAgICAgICAgICAgICAgICAgICAgeCwgeSwgeCwgMCk7Ci0gICAgICAgICAgICBhLnNldER1cmF0aW9uKDIwMCk7CisgICAgICAgICAgICAgICAgICAgIHgsIHksIHIsIDApOworICAgICAgICAgICAgYS5zZXREdXJhdGlvbihTdGFja1N0YXRlQW5pbWF0b3IuQU5JTUFUSU9OX0RVUkFUSU9OX1NUQU5EQVJEKTsKICAgICAgICAgICAgIGEuc2V0SW50ZXJwb2xhdG9yKG1GYXN0T3V0TGluZWFySW4pOwogICAgICAgICAgICAgYS5hZGRMaXN0ZW5lcihuZXcgQW5pbWF0b3JMaXN0ZW5lckFkYXB0ZXIoKSB7CiAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCkBAIC0xMDU1LDYgKzEwNzAsOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYS5zdGFydCgpOworICAgICAgICAgICAgdi5zZXRFeHBvc2VkKGZhbHNlKTsKKyAgICAgICAgICAgIG1TdGFja1Njcm9sbGVyLm9uSGVpZ2h0Q2hhbmdlZChudWxsLCB0cnVlIC8qIG5lZWRzQW5pbWF0aW9uICovKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM4Miw2ICsxMzk5LDcgQEAKICAgICAgICAgVmlldyBjb250ZW50Vmlld0xvY2FsID0gbnVsbDsKICAgICAgICAgVmlldyBiaWdDb250ZW50Vmlld0xvY2FsID0gbnVsbDsKICAgICAgICAgVmlldyBoZWFkc1VwQ29udGVudFZpZXdMb2NhbCA9IG51bGw7CisgICAgICAgIFZpZXcgcHVibGljVmlld0xvY2FsID0gbnVsbDsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGNvbnRlbnRWaWV3TG9jYWwgPSBjb250ZW50Vmlldy5hcHBseSgKICAgICAgICAgICAgICAgICAgICAgc2JuLmdldFBhY2thZ2VDb250ZXh0KG1Db250ZXh0KSwKQEAgLTEzOTksNiArMTQxNywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudENvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1PbkNsaWNrSGFuZGxlcik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHVibGljQ29udGVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHB1YmxpY1ZpZXdMb2NhbCA9IHB1YmxpY0NvbnRlbnRWaWV3LmFwcGx5KAorICAgICAgICAgICAgICAgICAgICAgICAgc2JuLmdldFBhY2thZ2VDb250ZXh0KG1Db250ZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRDb250YWluZXJQdWJsaWMsIG1PbkNsaWNrSGFuZGxlcik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgZmluYWwgU3RyaW5nIGlkZW50ID0gc2JuLmdldFBhY2thZ2VOYW1lKCkgKyAiLzB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoc2JuLmdldElkKCkpOwpAQCAtMTQxOCwyNSArMTQ0MSw5IEBACiAgICAgICAgICAgICBoZWFkc1VwQ29udGVudFZpZXdMb2NhbC5zZXRJc1Jvb3ROYW1lc3BhY2UodHJ1ZSk7CiAgICAgICAgICAgICBjb250ZW50Q29udGFpbmVyLnNldEhlYWRzVXBDaGlsZChoZWFkc1VwQ29udGVudFZpZXdMb2NhbCk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBub3cgdGhlIHB1YmxpYyB2ZXJzaW9uCi0gICAgICAgIFZpZXcgcHVibGljVmlld0xvY2FsID0gbnVsbDsKLSAgICAgICAgaWYgKHB1YmxpY0NvbnRlbnRWaWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcHVibGljVmlld0xvY2FsID0gcHVibGljQ29udGVudFZpZXcuYXBwbHkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzYm4uZ2V0UGFja2FnZUNvbnRleHQobUNvbnRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudENvbnRhaW5lclB1YmxpYywgbU9uQ2xpY2tIYW5kbGVyKTsKLQotICAgICAgICAgICAgICAgIGlmIChwdWJsaWNWaWV3TG9jYWwgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBwdWJsaWNWaWV3TG9jYWwuc2V0SXNSb290TmFtZXNwYWNlKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBjb250ZW50Q29udGFpbmVyUHVibGljLnNldENvbnRyYWN0ZWRDaGlsZChwdWJsaWNWaWV3TG9jYWwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgaWRlbnQgPSBzYm4uZ2V0UGFja2FnZU5hbWUoKSArICIvMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhzYm4uZ2V0SWQoKSk7Ci0gICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiY291bGRuJ3QgaW5mbGF0ZSBwdWJsaWMgdmlldyBmb3Igbm90aWZpY2F0aW9uICIgKyBpZGVudCwgZSk7Ci0gICAgICAgICAgICAgICAgcHVibGljVmlld0xvY2FsID0gbnVsbDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKHB1YmxpY1ZpZXdMb2NhbCAhPSBudWxsKSB7CisgICAgICAgICAgICBwdWJsaWNWaWV3TG9jYWwuc2V0SXNSb290TmFtZXNwYWNlKHRydWUpOworICAgICAgICAgICAgY29udGVudENvbnRhaW5lclB1YmxpYy5zZXRDb250cmFjdGVkQ2hpbGQocHVibGljVmlld0xvY2FsKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEV4dHJhY3QgdGFyZ2V0IFNESyB2ZXJzaW9uLgpAQCAtMTQ0Niw2NSArMTQ1Myw3IEBACiAgICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgTG9nLmUoVEFHLCAiRmFpbGVkIGxvb2tpbmcgdXAgQXBwbGljYXRpb25JbmZvIGZvciAiICsgc2JuLmdldFBhY2thZ2VOYW1lKCksIGV4KTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChwdWJsaWNWaWV3TG9jYWwgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gQWRkIGEgYmFzaWMgbm90aWZpY2F0aW9uIHRlbXBsYXRlCi0gICAgICAgICAgICBwdWJsaWNWaWV3TG9jYWwgPSBMYXlvdXRJbmZsYXRlci5mcm9tKG1Db250ZXh0KS5pbmZsYXRlKAotICAgICAgICAgICAgICAgICAgICBSLmxheW91dC5ub3RpZmljYXRpb25fcHVibGljX2RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRDb250YWluZXJQdWJsaWMsIGZhbHNlKTsKLSAgICAgICAgICAgIHB1YmxpY1ZpZXdMb2NhbC5zZXRJc1Jvb3ROYW1lc3BhY2UodHJ1ZSk7Ci0KLSAgICAgICAgICAgIGZpbmFsIFRleHRWaWV3IHRpdGxlID0gKFRleHRWaWV3KSBwdWJsaWNWaWV3TG9jYWwuZmluZFZpZXdCeUlkKFIuaWQudGl0bGUpOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0aXRsZS5zZXRUZXh0KHBtVXNlci5nZXRBcHBsaWNhdGlvbkxhYmVsKAotICAgICAgICAgICAgICAgICAgICAgICAgcG1Vc2VyLmdldEFwcGxpY2F0aW9uSW5mbyhlbnRyeS5ub3RpZmljYXRpb24uZ2V0UGFja2FnZU5hbWUoKSwgMCkpKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgdGl0bGUuc2V0VGV4dChlbnRyeS5ub3RpZmljYXRpb24uZ2V0UGFja2FnZU5hbWUoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZpbmFsIEltYWdlVmlldyBpY29uID0gKEltYWdlVmlldykgcHVibGljVmlld0xvY2FsLmZpbmRWaWV3QnlJZChSLmlkLmljb24pOwotICAgICAgICAgICAgZmluYWwgSW1hZ2VWaWV3IHByb2ZpbGVCYWRnZSA9IChJbWFnZVZpZXcpIHB1YmxpY1ZpZXdMb2NhbC5maW5kVmlld0J5SWQoCi0gICAgICAgICAgICAgICAgICAgIFIuaWQucHJvZmlsZV9iYWRnZV9saW5lMyk7Ci0KLSAgICAgICAgICAgIGZpbmFsIFN0YXR1c0Jhckljb24gaWMgPSBuZXcgU3RhdHVzQmFySWNvbigKLSAgICAgICAgICAgICAgICAgICAgZW50cnkubm90aWZpY2F0aW9uLmdldFVzZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgZW50cnkubm90aWZpY2F0aW9uLmdldFBhY2thZ2VOYW1lKCksCi0gICAgICAgICAgICAgICAgICAgIGVudHJ5Lm5vdGlmaWNhdGlvbi5nZXROb3RpZmljYXRpb24oKS5nZXRTbWFsbEljb24oKSwKLSAgICAgICAgICAgICAgICAgICAgZW50cnkubm90aWZpY2F0aW9uLmdldE5vdGlmaWNhdGlvbigpLmljb25MZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgZW50cnkubm90aWZpY2F0aW9uLmdldE5vdGlmaWNhdGlvbigpLm51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgZW50cnkubm90aWZpY2F0aW9uLmdldE5vdGlmaWNhdGlvbigpLnRpY2tlclRleHQpOwotCi0gICAgICAgICAgICBEcmF3YWJsZSBpY29uRHJhd2FibGUgPSBTdGF0dXNCYXJJY29uVmlldy5nZXRJY29uKG1Db250ZXh0LCBpYyk7Ci0gICAgICAgICAgICBpY29uLnNldEltYWdlRHJhd2FibGUoaWNvbkRyYXdhYmxlKTsKLQotICAgICAgICAgICAgaWYgKHByb2ZpbGVCYWRnZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgRHJhd2FibGUgcHJvZmlsZURyYXdhYmxlID0gbUNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRVc2VyQmFkZ2VGb3JEZW5zaXR5KAotICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkubm90aWZpY2F0aW9uLmdldFVzZXIoKSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEcmF3YWJsZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVCYWRnZS5zZXRJbWFnZURyYXdhYmxlKHByb2ZpbGVEcmF3YWJsZSk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVCYWRnZS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZUJhZGdlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZpbmFsIFZpZXcgcHJpdmF0ZVRpbWUgPSBjb250ZW50Vmlld0xvY2FsLmZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLnRpbWUpOwotICAgICAgICAgICAgZmluYWwgRGF0ZVRpbWVWaWV3IHRpbWUgPSAoRGF0ZVRpbWVWaWV3KSBwdWJsaWNWaWV3TG9jYWwuZmluZFZpZXdCeUlkKFIuaWQudGltZSk7Ci0gICAgICAgICAgICBpZiAocHJpdmF0ZVRpbWUgIT0gbnVsbCAmJiBwcml2YXRlVGltZS5nZXRWaXNpYmlsaXR5KCkgPT0gVmlldy5WSVNJQkxFKSB7Ci0gICAgICAgICAgICAgICAgdGltZS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgdGltZS5zZXRUaW1lKGVudHJ5Lm5vdGlmaWNhdGlvbi5nZXROb3RpZmljYXRpb24oKS53aGVuKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgdGV4dCA9IChUZXh0VmlldykgcHVibGljVmlld0xvY2FsLmZpbmRWaWV3QnlJZChSLmlkLnRleHQpOwotICAgICAgICAgICAgaWYgKHRleHQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRleHQuc2V0VGV4dChSLnN0cmluZy5ub3RpZmljYXRpb25faGlkZGVuX3RleHQpOwotICAgICAgICAgICAgICAgIHRleHQuc2V0VGV4dEFwcGVhcmFuY2UobUNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBSLnN0eWxlLlRleHRBcHBlYXJhbmNlX01hdGVyaWFsX05vdGlmaWNhdGlvbl9QYXJlbnRoZXRpY2FsKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29udGVudENvbnRhaW5lclB1YmxpYy5zZXRDb250cmFjdGVkQ2hpbGQocHVibGljVmlld0xvY2FsKTsKLSAgICAgICAgICAgIGVudHJ5LmF1dG9SZWRhY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgZW50cnkuYXV0b1JlZGFjdGVkID0gZW50cnkubm90aWZpY2F0aW9uLmdldE5vdGlmaWNhdGlvbigpLnB1YmxpY1ZlcnNpb24gPT0gbnVsbDsKIAogICAgICAgICBpZiAoTVVMVElVU0VSX0RFQlVHKSB7CiAgICAgICAgICAgICBUZXh0VmlldyBkZWJ1ZyA9IChUZXh0Vmlldykgcm93LmZpbmRWaWV3QnlJZChSLmlkLmRlYnVnX2luZm8pOwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9FeHBhbmRhYmxlTm90aWZpY2F0aW9uUm93LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0V4cGFuZGFibGVOb3RpZmljYXRpb25Sb3cuamF2YQppbmRleCA4NzRiNzZhLi44Mzg1M2EyIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0V4cGFuZGFibGVOb3RpZmljYXRpb25Sb3cuamF2YQorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0V4cGFuZGFibGVOb3RpZmljYXRpb25Sb3cuamF2YQpAQCAtMjUsMTIgKzI1LDEwIEBACiBpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKIGltcG9ydCBhbmRyb2lkLnNlcnZpY2Uubm90aWZpY2F0aW9uLlN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKIGltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuTm90aWZpY2F0aW9uSGVhZGVyVmlldzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlld1N0dWI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50OwotaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uTGluZWFySW50ZXJwb2xhdG9yOwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkNocm9ub21ldGVyOwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3czsKQEAgLTQ5LDEzICs0NywxMSBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfRElWSURFUl9BTFBIQSA9IDB4Mjk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTE9SRURfRElWSURFUl9BTFBIQSA9IDB4N0I7Ci0gICAgcHJpdmF0ZSBmaW5hbCBMaW5lYXJJbnRlcnBvbGF0b3IgbUxpbmVhckludGVycG9sYXRvciA9IG5ldyBMaW5lYXJJbnRlcnBvbGF0b3IoKTsKICAgICBwcml2YXRlIGZpbmFsIGludCBtTm90aWZpY2F0aW9uTWluSGVpZ2h0TGVnYWN5OwogICAgIHByaXZhdGUgZmluYWwgaW50IG1NYXhIZWFkc1VwSGVpZ2h0TGVnYWN5OwogICAgIHByaXZhdGUgZmluYWwgaW50IG1NYXhIZWFkc1VwSGVpZ2h0OwogICAgIHByaXZhdGUgZmluYWwgaW50IG1Ob3RpZmljYXRpb25NaW5IZWlnaHQ7CiAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbU5vdGlmaWNhdGlvbk1heEhlaWdodDsKLSAgICBwcml2YXRlIGludCBtUm93TWluSGVpZ2h0OwogCiAgICAgLyoqIERvZXMgdGhpcyByb3cgY29udGFpbiBsYXlvdXRzIHRoYXQgY2FuIGFkYXB0IHRvIHJvdyBleHBhbnNpb24gKi8KICAgICBwcml2YXRlIGJvb2xlYW4gbUV4cGFuZGFibGU7CkBAIC0xMTcsNyArMTEzLDcgQEAKICAgICBwcml2YXRlIE9uQ2xpY2tMaXN0ZW5lciBtRXhwYW5kQ2xpY2tMaXN0ZW5lciA9IG5ldyBPbkNsaWNrTGlzdGVuZXIoKSB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgewotICAgICAgICAgICAgaWYgKG1Hcm91cE1hbmFnZXIuaXNTdW1tYXJ5T2ZHcm91cChtU3RhdHVzQmFyTm90aWZpY2F0aW9uKSkgeworICAgICAgICAgICAgaWYgKCFtU2hvd2luZ1B1YmxpYyAmJiBtR3JvdXBNYW5hZ2VyLmlzU3VtbWFyeU9mR3JvdXAobVN0YXR1c0Jhck5vdGlmaWNhdGlvbikpIHsKICAgICAgICAgICAgICAgICBtR3JvdXBNYW5hZ2VyLnRvZ2dsZUdyb3VwRXhwYW5zaW9uKG1TdGF0dXNCYXJOb3RpZmljYXRpb24pOwogICAgICAgICAgICAgICAgIG1PbkV4cGFuZENsaWNrTGlzdGVuZXIub25FeHBhbmRDbGlja2VkKEV4cGFuZGFibGVOb3RpZmljYXRpb25Sb3cudGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgIG1Hcm91cE1hbmFnZXIuaXNHcm91cEV4cGFuZGVkKG1TdGF0dXNCYXJOb3RpZmljYXRpb24pKTsKQEAgLTIxMiw2ICsyMDgsOCBAQAogICAgICAgICAgICAgbU5vdGlmaWNhdGlvblBhcmVudC51cGRhdGVDaGlsZHJlbkhlYWRlckFwcGVhcmFuY2UoKTsKICAgICAgICAgfQogICAgICAgICBvbkNoaWxkcmVuQ291bnRDaGFuZ2VkKCk7CisgICAgICAgIC8vIFRoZSBwdWJsaWMgbGF5b3V0cyBleHBhbmQgYnV0dG9uIGlzIGFsd2F5cyB2aXNpYmxlCisgICAgICAgIG1QdWJsaWNMYXlvdXQudXBkYXRlRXhwYW5kQnV0dG9ucyh0cnVlKTsKICAgICAgICAgdXBkYXRlTGltaXRzKCk7CiAgICAgfQogCkBAIC0yMjYsMTAgKzIyNCw5IEBACiAgICAgICAgICAgICAgICAgIT0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5zdGF0dXNfYmFyX2xhdGVzdF9ldmVudF9jb250ZW50OwogICAgICAgICBpbnQgaGVhZHNVcGhlaWdodCA9IGhlYWRzVXBDdXN0b20gJiYgYmVmb3JlTiA/IG1NYXhIZWFkc1VwSGVpZ2h0TGVnYWN5CiAgICAgICAgICAgICAgICAgOiBtTWF4SGVhZHNVcEhlaWdodDsKLSAgICAgICAgbVJvd01pbkhlaWdodCA9IG1pbkhlaWdodDsKICAgICAgICAgbU1heFZpZXdIZWlnaHQgPSBtTm90aWZpY2F0aW9uTWF4SGVpZ2h0OwotICAgICAgICBtUHJpdmF0ZUxheW91dC5zZXRIZWlnaHRzKG1Sb3dNaW5IZWlnaHQsIGhlYWRzVXBoZWlnaHQpOwotICAgICAgICBtUHVibGljTGF5b3V0LnNldEhlaWdodHMobVJvd01pbkhlaWdodCwgaGVhZHNVcGhlaWdodCk7CisgICAgICAgIG1Qcml2YXRlTGF5b3V0LnNldEhlaWdodHMobWluSGVpZ2h0LCBoZWFkc1VwaGVpZ2h0LCBtTm90aWZpY2F0aW9uTWF4SGVpZ2h0KTsKKyAgICAgICAgbVB1YmxpY0xheW91dC5zZXRIZWlnaHRzKG1pbkhlaWdodCwgaGVhZHNVcGhlaWdodCwgbU5vdGlmaWNhdGlvbk1heEhlaWdodCk7CiAgICAgfQogCiAgICAgcHVibGljIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBnZXRTdGF0dXNCYXJOb3RpZmljYXRpb24oKSB7CkBAIC00ODksNyArNDg2LDYgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKICAgICAgICAgc3VwZXIucmVzZXQoKTsKLSAgICAgICAgbVJvd01pbkhlaWdodCA9IDA7CiAgICAgICAgIGZpbmFsIGJvb2xlYW4gd2FzRXhwYW5kZWQgPSBpc0V4cGFuZGVkKCk7CiAgICAgICAgIG1NYXhWaWV3SGVpZ2h0ID0gMDsKICAgICAgICAgbUV4cGFuZGFibGUgPSBmYWxzZTsKQEAgLTUxOCwxMSArNTE0LDYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgYm9vbGVhbiBmaWx0ZXJNb3Rpb25FdmVudChNb3Rpb25FdmVudCBldmVudCkgewotICAgICAgICByZXR1cm4gbUlzSGVhZHNVcCB8fCBzdXBlci5maWx0ZXJNb3Rpb25FdmVudChldmVudCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgb25GaW5pc2hJbmZsYXRlKCkgewogICAgICAgICBzdXBlci5vbkZpbmlzaEluZmxhdGUoKTsKICAgICAgICAgbVB1YmxpY0xheW91dCA9IChOb3RpZmljYXRpb25Db250ZW50VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZXhwYW5kZWRQdWJsaWMpOwpAQCAtNTU4LDEyICs1NDksMTUgQEAKICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgdXBkYXRlQ2hpbGRyZW5WaXNpYmlsaXR5KCkgeworICAgICAgICBtUHJpdmF0ZUxheW91dC5zZXRWaXNpYmlsaXR5KCFtU2hvd2luZ1B1YmxpYyAmJiAhbUlzU3VtbWFyeVdpdGhDaGlsZHJlbiA/IFZJU0lCTEUKKyAgICAgICAgICAgICAgICA6IElOVklTSUJMRSk7CiAgICAgICAgIGlmIChtQ2hpbGRyZW5Db250YWluZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1DaGlsZHJlbkNvbnRhaW5lci5zZXRWaXNpYmlsaXR5KG1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW4gPyBWSVNJQkxFIDogSU5WSVNJQkxFKTsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkhlYWRlci5zZXRWaXNpYmlsaXR5KG1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW4gPyBWSVNJQkxFIDogSU5WSVNJQkxFKTsKLSAgICAgICAgbVByaXZhdGVMYXlvdXQuc2V0VmlzaWJpbGl0eSghbUlzU3VtbWFyeVdpdGhDaGlsZHJlbiA/IFZJU0lCTEUgOiBJTlZJU0lCTEUpOworICAgICAgICBtQ2hpbGRyZW5Db250YWluZXIuc2V0VmlzaWJpbGl0eSghbVNob3dpbmdQdWJsaWMgJiYgbUlzU3VtbWFyeVdpdGhDaGlsZHJlbiA/IFZJU0lCTEUKKyAgICAgICAgICAgICAgICA6IElOVklTSUJMRSk7CisgICAgICAgIG1Ob3RpZmljYXRpb25IZWFkZXIuc2V0VmlzaWJpbGl0eSghbVNob3dpbmdQdWJsaWMgJiYgbUlzU3VtbWFyeVdpdGhDaGlsZHJlbiA/IFZJU0lCTEUKKyAgICAgICAgICAgICAgICA6IElOVklTSUJMRSk7CiAgICAgICAgIC8vIFRoZSBsaW1pdHMgbWlnaHQgaGF2ZSBjaGFuZ2VkIGlmIHRoZSB2aWV3IHN1ZGRlbmx5IGJlY2FtZSBhIGdyb3VwIG9yIHZpY2UgdmVyc2EKICAgICAgICAgdXBkYXRlTGltaXRzKCk7CiAgICAgfQpAQCAtNzE1LDcgKzcwOSw3IEBACiAgICAgICAgIGlmIChleHBhbmQgJiYgbUV4cGFuZGFibGUpIHsKICAgICAgICAgICAgIHNldEFjdHVhbEhlaWdodChtTWF4RXhwYW5kSGVpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNldEFjdHVhbEhlaWdodChtUm93TWluSGVpZ2h0KTsKKyAgICAgICAgICAgIHNldEFjdHVhbEhlaWdodChnZXRNaW5IZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcyNSwyMCArNzE5LDI0IEBACiAgICAgICAgICAgICByZXR1cm4gZ2V0QWN0dWFsSGVpZ2h0KCk7CiAgICAgICAgIH0KICAgICAgICAgYm9vbGVhbiBpbkV4cGFuc2lvblN0YXRlID0gaXNFeHBhbmRlZCgpOwotICAgICAgICBpZiAobVNlbnNpdGl2ZSAmJiBtSGlkZVNlbnNpdGl2ZUZvckludHJpbnNpY0hlaWdodCkgewotICAgICAgICAgICAgcmV0dXJuIG1Sb3dNaW5IZWlnaHQ7CisgICAgICAgIGlmIChtR3V0cyAhPSBudWxsICYmIG1HdXRzLmFyZUd1dHNFeHBvc2VkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBtR3V0cy5nZXRIZWlnaHQoKTsKKyAgICAgICAgfSBlbHNlIGlmICgoaXNDaGlsZEluR3JvdXAoKSAmJiAhaXNHcm91cEV4cGFuZGVkKCkpKSB7CisgICAgICAgICAgICByZXR1cm4gbVByaXZhdGVMYXlvdXQuZ2V0TWluSGVpZ2h0KCk7CisgICAgICAgIH0gZWxzZSBpZiAobVNlbnNpdGl2ZSAmJiBtSGlkZVNlbnNpdGl2ZUZvckludHJpbnNpY0hlaWdodCkgeworICAgICAgICAgICAgcmV0dXJuIGdldE1pbkhlaWdodCgpOwogICAgICAgICB9IGVsc2UgaWYgKG1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW4gJiYgIW1PbktleWd1YXJkKSB7CiAgICAgICAgICAgICByZXR1cm4gbUNoaWxkcmVuQ29udGFpbmVyLmdldEludHJpbnNpY0hlaWdodCgpOwogICAgICAgICB9IGVsc2UgaWYgKG1Jc0hlYWRzVXApIHsKICAgICAgICAgICAgIGlmIChpbkV4cGFuc2lvblN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KG1NYXhFeHBhbmRIZWlnaHQsIG1IZWFkc1VwSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZ2V0TWF4RXhwYW5kSGVpZ2h0KCksIG1IZWFkc1VwSGVpZ2h0KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KG1Sb3dNaW5IZWlnaHQsIG1IZWFkc1VwSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZ2V0TWluSGVpZ2h0KCksIG1IZWFkc1VwSGVpZ2h0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghaW5FeHBhbnNpb25TdGF0ZSB8fCAoaXNDaGlsZEluR3JvdXAoKSAmJiAhaXNHcm91cEV4cGFuZGVkKCkpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TWluSGVpZ2h0KCk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAoaW5FeHBhbnNpb25TdGF0ZSkgewogICAgICAgICAgICAgcmV0dXJuIGdldE1heEV4cGFuZEhlaWdodCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGdldE1pbkhlaWdodCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04NDUsOCArODQzLDcgQEAKICAgICAgICAgICAgIG1QdWJsaWNMYXlvdXQuc2V0QWxwaGEoMWYpOwogICAgICAgICAgICAgbVByaXZhdGVMYXlvdXQuc2V0QWxwaGEoMWYpOwogICAgICAgICAgICAgbVB1YmxpY0xheW91dC5zZXRWaXNpYmlsaXR5KG1TaG93aW5nUHVibGljID8gVmlldy5WSVNJQkxFIDogVmlldy5JTlZJU0lCTEUpOwotICAgICAgICAgICAgbVByaXZhdGVMYXlvdXQuc2V0VmlzaWJpbGl0eSghbVNob3dpbmdQdWJsaWMgJiYgIW1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW4gPyBWaWV3LlZJU0lCTEUKLSAgICAgICAgICAgICAgICAgICAgOiBWaWV3LklOVklTSUJMRSk7CisgICAgICAgICAgICB1cGRhdGVDaGlsZHJlblZpc2liaWxpdHkoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFuaW1hdGVTaG93aW5nUHVibGljKGRlbGF5LCBkdXJhdGlvbik7CiAgICAgICAgIH0KQEAgLTg1NywyNyArODU0LDM1IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIGFuaW1hdGVTaG93aW5nUHVibGljKGxvbmcgZGVsYXksIGxvbmcgZHVyYXRpb24pIHsKLSAgICAgICAgZmluYWwgVmlldyBzb3VyY2UgPSBtU2hvd2luZ1B1YmxpYyA/IG1Qcml2YXRlTGF5b3V0IDogbVB1YmxpY0xheW91dDsKLSAgICAgICAgVmlldyB0YXJnZXQgPSBtU2hvd2luZ1B1YmxpYyA/IG1QdWJsaWNMYXlvdXQgOiBtUHJpdmF0ZUxheW91dDsKLSAgICAgICAgc291cmNlLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgdGFyZ2V0LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgdGFyZ2V0LnNldEFscGhhKDBmKTsKLSAgICAgICAgc291cmNlLmFuaW1hdGUoKS5jYW5jZWwoKTsKLSAgICAgICAgdGFyZ2V0LmFuaW1hdGUoKS5jYW5jZWwoKTsKLSAgICAgICAgc291cmNlLmFuaW1hdGUoKQotICAgICAgICAgICAgICAgIC5hbHBoYSgwZikKLSAgICAgICAgICAgICAgICAuc2V0U3RhcnREZWxheShkZWxheSkKLSAgICAgICAgICAgICAgICAuc2V0RHVyYXRpb24oZHVyYXRpb24pCi0gICAgICAgICAgICAgICAgLndpdGhFbmRBY3Rpb24obmV3IFJ1bm5hYmxlKCkgewotICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIHRhcmdldC5hbmltYXRlKCkKLSAgICAgICAgICAgICAgICAuYWxwaGEoMWYpCi0gICAgICAgICAgICAgICAgLnNldFN0YXJ0RGVsYXkoZGVsYXkpCi0gICAgICAgICAgICAgICAgLnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICAgICAgVmlld1tdIHByaXZhdGVWaWV3cyA9IG1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW4gPworICAgICAgICAgICAgICAgIG5ldyBWaWV3W10ge21DaGlsZHJlbkNvbnRhaW5lciwgbU5vdGlmaWNhdGlvbkhlYWRlcn0KKyAgICAgICAgICAgICAgICA6IG5ldyBWaWV3W10ge21Qcml2YXRlTGF5b3V0fTsKKyAgICAgICAgVmlld1tdIHB1YmxpY1ZpZXdzID0gbmV3IFZpZXdbXSB7bVB1YmxpY0xheW91dH07CisgICAgICAgIFZpZXdbXSBoaWRkZW5DaGlsZHJlbiA9IG1TaG93aW5nUHVibGljID8gcHJpdmF0ZVZpZXdzIDogcHVibGljVmlld3M7CisgICAgICAgIFZpZXdbXSBzaG93bkNoaWxkcmVuID0gbVNob3dpbmdQdWJsaWMgPyBwdWJsaWNWaWV3cyA6IHByaXZhdGVWaWV3czsKKyAgICAgICAgZm9yIChmaW5hbCBWaWV3IGhpZGRlblZpZXcgOiBoaWRkZW5DaGlsZHJlbikgeworICAgICAgICAgICAgaGlkZGVuVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBoaWRkZW5WaWV3LmFuaW1hdGUoKS5jYW5jZWwoKTsKKyAgICAgICAgICAgIGhpZGRlblZpZXcuYW5pbWF0ZSgpCisgICAgICAgICAgICAgICAgICAgIC5hbHBoYSgwZikKKyAgICAgICAgICAgICAgICAgICAgLnNldFN0YXJ0RGVsYXkoZGVsYXkpCisgICAgICAgICAgICAgICAgICAgIC5zZXREdXJhdGlvbihkdXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgLndpdGhFbmRBY3Rpb24obmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChWaWV3IHNob3dWaWV3IDogc2hvd25DaGlsZHJlbikgeworICAgICAgICAgICAgc2hvd1ZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgc2hvd1ZpZXcuc2V0QWxwaGEoMGYpOworICAgICAgICAgICAgc2hvd1ZpZXcuYW5pbWF0ZSgpLmNhbmNlbCgpOworICAgICAgICAgICAgc2hvd1ZpZXcuYW5pbWF0ZSgpCisgICAgICAgICAgICAgICAgICAgIC5hbHBoYSgxZikKKyAgICAgICAgICAgICAgICAgICAgLnNldFN0YXJ0RGVsYXkoZGVsYXkpCisgICAgICAgICAgICAgICAgICAgIC5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgdXBkYXRlVmV0b0J1dHRvbigpIHsKQEAgLTk1Niw2ICs5NjEsOSBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBnZXRNaW5IZWlnaHQoKSB7CisgICAgICAgIGlmIChtSXNTdW1tYXJ5V2l0aENoaWxkcmVuICYmICFpc0dyb3VwRXhwYW5kZWQoKSAmJiAhbVNob3dpbmdQdWJsaWMpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2hpbGRyZW5Db250YWluZXIuZ2V0TWluSGVpZ2h0KCk7CisgICAgICAgIH0KICAgICAgICAgTm90aWZpY2F0aW9uQ29udGVudFZpZXcgc2hvd2luZ0xheW91dCA9IGdldFNob3dpbmdMYXlvdXQoKTsKICAgICAgICAgcmV0dXJuIHNob3dpbmdMYXlvdXQuZ2V0TWluSGVpZ2h0KCk7CiAgICAgfQpAQCAtOTYzLDE3ICs5NzEsMTIgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgaW50IGdldE1pbkV4cGFuZEhlaWdodCgpIHsKICAgICAgICAgaWYgKG1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW4gJiYgIW1PbktleWd1YXJkKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNoaWxkcmVuQ29udGFpbmVyLmdldE1pbkhlaWdodCgpOworICAgICAgICAgICAgcmV0dXJuIG1DaGlsZHJlbkNvbnRhaW5lci5nZXRNaW5FeHBhbmRIZWlnaHQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZ2V0TWluSGVpZ2h0KCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIGJvb2xlYW4gc2hvdWxkTGltaXRWaWV3SGVpZ2h0KCkgewotICAgICAgICByZXR1cm4gIW1Jc1N1bW1hcnlXaXRoQ2hpbGRyZW47Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgc2V0Q2xpcFRvcEFtb3VudChpbnQgY2xpcFRvcEFtb3VudCkgewogICAgICAgICBzdXBlci5zZXRDbGlwVG9wQW1vdW50KGNsaXBUb3BBbW91bnQpOwogICAgICAgICBtUHJpdmF0ZUxheW91dC5zZXRDbGlwVG9wQW1vdW50KGNsaXBUb3BBbW91bnQpOwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9FeHBhbmRhYmxlVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9FeHBhbmRhYmxlVmlldy5qYXZhCmluZGV4IDU5Y2JkNDAuLmQ2ODU1YTUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRXhwYW5kYWJsZVZpZXcuamF2YQorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0V4cGFuZGFibGVWaWV3LmphdmEKQEAgLTIwLDEwICsyMCwxMCBAQAogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQ7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OwogaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKIGltcG9ydCBjb20uYW5kcm9pZC5zeXN0ZW11aS5SOwogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5zdGFjay5Ob3RpZmljYXRpb25TdGFja1Njcm9sbExheW91dDsKIApAQCAtNDUsNyArNDUsNiBAQAogICAgIHByaXZhdGUgc3RhdGljIFJlY3QgbUNsaXBSZWN0ID0gbmV3IFJlY3QoKTsKICAgICBwcml2YXRlIGJvb2xlYW4gbVdpbGxCZUdvbmU7CiAgICAgcHJpdmF0ZSBpbnQgbU1pbkNsaXBUb3BBbW91bnQgPSAwOwotICAgIHByaXZhdGUgYm9vbGVhbiBtTWVhc3VyZWRUb29IaWdoOwogCiAgICAgcHVibGljIEV4cGFuZGFibGVWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CiAgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKQEAgLTU1LDEzICs1NCwxMCBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgb25NZWFzdXJlKGludCB3aWR0aE1lYXN1cmVTcGVjLCBpbnQgaGVpZ2h0TWVhc3VyZVNwZWMpIHsKLSAgICAgICAgYm9vbGVhbiBsaW1pdFZpZXdIZWlnaHQgPSBzaG91bGRMaW1pdFZpZXdIZWlnaHQoKTsKICAgICAgICAgZmluYWwgaW50IGdpdmVuU2l6ZSA9IE1lYXN1cmVTcGVjLmdldFNpemUoaGVpZ2h0TWVhc3VyZVNwZWMpOwotICAgICAgICBpbnQgb3duTWF4SGVpZ2h0ID0gbGltaXRWaWV3SGVpZ2h0ID8gbU1heFZpZXdIZWlnaHQgOiBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgaW50IG93bk1heEhlaWdodCA9IEludGVnZXIuTUFYX1ZBTFVFOwogICAgICAgICBpbnQgaGVpZ2h0TW9kZSA9IE1lYXN1cmVTcGVjLmdldE1vZGUoaGVpZ2h0TWVhc3VyZVNwZWMpOwotICAgICAgICBib29sZWFuIGhhc0ZpeGVkSGVpZ2h0ID0gaGVpZ2h0TW9kZSA9PSBNZWFzdXJlU3BlYy5FWEFDVExZOwotICAgICAgICBpZiAoaGFzRml4ZWRIZWlnaHQpIHsKLSAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBoZWlnaHQgc2V0IGluIG91ciBsYXlvdXQsIHNvIHdlIHdhbnQgdG8gYmUgYXQgbW9zdCBhcyBiaWcgYXMgZ2l2ZW4KKyAgICAgICAgaWYgKGhlaWdodE1vZGUgIT0gTWVhc3VyZVNwZWMuVU5TUEVDSUZJRUQgJiYgZ2l2ZW5TaXplICE9IDApIHsKICAgICAgICAgICAgIG93bk1heEhlaWdodCA9IE1hdGgubWluKGdpdmVuU2l6ZSwgb3duTWF4SGVpZ2h0KTsKICAgICAgICAgfQogICAgICAgICBpbnQgbmV3SGVpZ2h0U3BlYyA9IE1lYXN1cmVTcGVjLm1ha2VNZWFzdXJlU3BlYyhvd25NYXhIZWlnaHQsIE1lYXN1cmVTcGVjLkFUX01PU1QpOwpAQCAtNzcsNyArNzMsNyBAQAogICAgICAgICAgICAgaWYgKGxheW91dFBhcmFtcy5oZWlnaHQgIT0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpIHsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0UGFyYW1zLmhlaWdodCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFuIGFjdHVhbCBoZWlnaHQgaXMgc2V0Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkSGVpZ2h0U3BlYyA9IGxheW91dFBhcmFtcy5oZWlnaHQgPiBvd25NYXhIZWlnaHQgJiYgbGltaXRWaWV3SGVpZ2h0CisgICAgICAgICAgICAgICAgICAgIGNoaWxkSGVpZ2h0U3BlYyA9IGxheW91dFBhcmFtcy5oZWlnaHQgPiBvd25NYXhIZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgID8gTWVhc3VyZVNwZWMubWFrZU1lYXN1cmVTcGVjKG93bk1heEhlaWdodCwgTWVhc3VyZVNwZWMuRVhBQ1RMWSkKICAgICAgICAgICAgICAgICAgICAgICAgIDogTWVhc3VyZVNwZWMubWFrZU1lYXN1cmVTcGVjKGxheW91dFBhcmFtcy5oZWlnaHQsIE1lYXN1cmVTcGVjLkVYQUNUTFkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTkwLDcgKzg2LDggQEAKICAgICAgICAgICAgICAgICBtTWF0Y2hQYXJlbnRWaWV3cy5hZGQoY2hpbGQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGludCBvd25IZWlnaHQgPSBoYXNGaXhlZEhlaWdodCA/IG93bk1heEhlaWdodCA6IE1hdGgubWluKG93bk1heEhlaWdodCwgbWF4Q2hpbGRIZWlnaHQpOworICAgICAgICBpbnQgb3duSGVpZ2h0ID0gaGVpZ2h0TW9kZSA9PSBNZWFzdXJlU3BlYy5FWEFDVExZCisgICAgICAgICAgICAgICAgPyBnaXZlblNpemUgOiBNYXRoLm1pbihvd25NYXhIZWlnaHQsIG1heENoaWxkSGVpZ2h0KTsKICAgICAgICAgbmV3SGVpZ2h0U3BlYyA9IE1lYXN1cmVTcGVjLm1ha2VNZWFzdXJlU3BlYyhvd25IZWlnaHQsIE1lYXN1cmVTcGVjLkVYQUNUTFkpOwogICAgICAgICBmb3IgKFZpZXcgY2hpbGQgOiBtTWF0Y2hQYXJlbnRWaWV3cykgewogICAgICAgICAgICAgY2hpbGQubWVhc3VyZShnZXRDaGlsZE1lYXN1cmVTcGVjKApAQCAtMTAwLDExICs5Nyw2IEBACiAgICAgICAgIG1NYXRjaFBhcmVudFZpZXdzLmNsZWFyKCk7CiAgICAgICAgIGludCB3aWR0aCA9IE1lYXN1cmVTcGVjLmdldFNpemUod2lkdGhNZWFzdXJlU3BlYyk7CiAgICAgICAgIHNldE1lYXN1cmVkRGltZW5zaW9uKHdpZHRoLCBvd25IZWlnaHQpOwotICAgICAgICBtTWVhc3VyZWRUb29IaWdoID0gaGVpZ2h0TW9kZSAhPSBNZWFzdXJlU3BlYy5VTlNQRUNJRklFRCAmJiBvd25IZWlnaHQgPiBnaXZlblNpemU7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIGJvb2xlYW4gc2hvdWxkTGltaXRWaWV3SGVpZ2h0KCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTEzMywyNiArMTI1LDExIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hHZW5lcmljTW90aW9uRXZlbnQoTW90aW9uRXZlbnQgZXYpIHsKLSAgICAgICAgaWYgKGZpbHRlck1vdGlvbkV2ZW50KGV2KSkgewotICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoR2VuZXJpY01vdGlvbkV2ZW50KGV2KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2KSB7Ci0gICAgICAgIGlmIChmaWx0ZXJNb3Rpb25FdmVudChldikpIHsKLSAgICAgICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaFRvdWNoRXZlbnQoZXYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgYm9vbGVhbiBmaWx0ZXJNb3Rpb25FdmVudChNb3Rpb25FdmVudCBldmVudCkgewotICAgICAgICByZXR1cm4gZXZlbnQuZ2V0QWN0aW9uTWFza2VkKCkgIT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04KLSAgICAgICAgICAgICAgICAmJiBldmVudC5nZXRBY3Rpb25NYXNrZWQoKSAhPSBNb3Rpb25FdmVudC5BQ1RJT05fSE9WRVJfRU5URVIKLSAgICAgICAgICAgICAgICAmJiBldmVudC5nZXRBY3Rpb25NYXNrZWQoKSAhPSBNb3Rpb25FdmVudC5BQ1RJT05fSE9WRVJfTU9WRQotICAgICAgICAgICAgICAgIHx8IGV2ZW50LmdldFkoKSA+IG1DbGlwVG9wQW1vdW50ICYmIGV2ZW50LmdldFkoKSA8IG1BY3R1YWxIZWlnaHQ7CisgICAgcHVibGljIGJvb2xlYW4gcG9pbnRJblZpZXcoZmxvYXQgbG9jYWxYLCBmbG9hdCBsb2NhbFksIGZsb2F0IHNsb3ApIHsKKyAgICAgICAgZmxvYXQgdG9wID0gbUNsaXBUb3BBbW91bnQ7CisgICAgICAgIGZsb2F0IGJvdHRvbSA9IG1BY3R1YWxIZWlnaHQ7CisgICAgICAgIHJldHVybiBsb2NhbFggPj0gLXNsb3AgJiYgbG9jYWxZID49IHRvcCAtIHNsb3AgJiYgbG9jYWxYIDwgKChtUmlnaHQgLSBtTGVmdCkgKyBzbG9wKSAmJgorICAgICAgICAgICAgICAgIGxvY2FsWSA8IChib3R0b20gKyBzbG9wKTsKICAgICB9CiAKICAgICAvKioKQEAgLTM5Nyw3ICszNzQsOCBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGJvb2xlYW4gaGFzT3ZlcmxhcHBpbmdSZW5kZXJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBzdXBlci5oYXNPdmVybGFwcGluZ1JlbmRlcmluZygpICYmICFtTWVhc3VyZWRUb29IaWdoOworICAgICAgICAvLyBPdGhlcndpc2UgaXQgd2lsbCBiZSBjbGlwcGVkCisgICAgICAgIHJldHVybiBzdXBlci5oYXNPdmVybGFwcGluZ1JlbmRlcmluZygpICYmIGdldEFjdHVhbEhlaWdodCgpIDw9IGdldEhlaWdodCgpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25Db250ZW50Vmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25Db250ZW50Vmlldy5qYXZhCmluZGV4IDZkOTAzMjkuLjAyYTM5ZTcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uQ29udGVudFZpZXcuamF2YQorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL05vdGlmaWNhdGlvbkNvbnRlbnRWaWV3LmphdmEKQEAgLTI0LDYgKzI0LDcgQEAKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmY7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmWGZlcm1vZGU7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OworaW1wb3J0IGFuZHJvaWQub3MuQnVpbGQ7CiBpbXBvcnQgYW5kcm9pZC5zZXJ2aWNlLm5vdGlmaWNhdGlvbi5TdGF0dXNCYXJOb3RpZmljYXRpb247CiBpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuTm90aWZpY2F0aW9uSGVhZGVyVmlldzsKQEAgLTU4LDYgKzU5LDggQEAKICAgICBwcml2YXRlIGZpbmFsIGludCBtUm91bmRSZWN0UmFkaXVzOwogICAgIHByaXZhdGUgZmluYWwgSW50ZXJwb2xhdG9yIG1MaW5lYXJJbnRlcnBvbGF0b3IgPSBuZXcgTGluZWFySW50ZXJwb2xhdG9yKCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1Sb3VuZFJlY3RDbGlwcGluZ0VuYWJsZWQ7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbU1pbkNvbnRyYWN0ZWRIZWlnaHQ7CisKIAogICAgIHByaXZhdGUgVmlldyBtQ29udHJhY3RlZENoaWxkOwogICAgIHByaXZhdGUgVmlldyBtRXhwYW5kZWRDaGlsZDsKQEAgLTgwLDYgKzgzLDcgQEAKICAgICBwcml2YXRlIGJvb2xlYW4gbUlzQ2hpbGRJbkdyb3VwOwogICAgIHByaXZhdGUgaW50IG1TbWFsbEhlaWdodDsKICAgICBwcml2YXRlIGludCBtSGVhZHNVcEhlaWdodDsKKyAgICBwcml2YXRlIGludCBtTm90aWZpY2F0aW9uTWF4SGVpZ2h0OwogICAgIHByaXZhdGUgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG1TdGF0dXNCYXJOb3RpZmljYXRpb247CiAgICAgcHJpdmF0ZSBOb3RpZmljYXRpb25Hcm91cE1hbmFnZXIgbUdyb3VwTWFuYWdlcjsKICAgICBwcml2YXRlIFJlbW90ZUlucHV0Q29udHJvbGxlciBtUmVtb3RlSW5wdXRDb250cm9sbGVyOwpAQCAtMTAyLDYgKzEwNiw4IEBACiAgICAgICAgIH0KICAgICB9OwogICAgIHByaXZhdGUgT25DbGlja0xpc3RlbmVyIG1FeHBhbmRDbGlja0xpc3RlbmVyOworICAgIHByaXZhdGUgYm9vbGVhbiBtQmVmb3JlTjsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUV4cGFuZGFibGU7CiAKICAgICBwdWJsaWMgTm90aWZpY2F0aW9uQ29udGVudFZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKICAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwpAQCAtMTExLDEzICsxMTcsMTYgQEAKICAgICAgICAgICAgICAgICBSLmRpbWVuLm5vdGlmaWNhdGlvbl9tYXRlcmlhbF9yb3VuZGVkX3JlY3RfcmFkaXVzKTsKICAgICAgICAgbVJvdW5kUmVjdENsaXBwaW5nRW5hYmxlZCA9IGdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgUi5ib29sLmNvbmZpZ19ub3RpZmljYXRpb25zX3JvdW5kX3JlY3RfY2xpcHBpbmcpOworICAgICAgICBtTWluQ29udHJhY3RlZEhlaWdodCA9IGdldFJlc291cmNlcygpLmdldERpbWVuc2lvblBpeGVsU2l6ZSgKKyAgICAgICAgICAgICAgICBSLmRpbWVuLm1pbl9ub3RpZmljYXRpb25fbGF5b3V0X2hlaWdodCk7CiAgICAgICAgIHJlc2V0KHRydWUpOwogICAgICAgICBzZXRPdXRsaW5lUHJvdmlkZXIobU91dGxpbmVQcm92aWRlcik7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgc2V0SGVpZ2h0cyhpbnQgc21hbGxIZWlnaHQsIGludCBoZWFkc1VwTWF4SGVpZ2h0KSB7CisgICAgcHVibGljIHZvaWQgc2V0SGVpZ2h0cyhpbnQgc21hbGxIZWlnaHQsIGludCBoZWFkc1VwTWF4SGVpZ2h0LCBpbnQgbWF4SGVpZ2h0KSB7CiAgICAgICAgIG1TbWFsbEhlaWdodCA9IHNtYWxsSGVpZ2h0OwogICAgICAgICBtSGVhZHNVcEhlaWdodCA9IGhlYWRzVXBNYXhIZWlnaHQ7CisgICAgICAgIG1Ob3RpZmljYXRpb25NYXhIZWlnaHQgPSBtYXhIZWlnaHQ7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xMzEsMTMgKzE0MCwyMyBAQAogICAgICAgICB9CiAgICAgICAgIGludCBtYXhDaGlsZEhlaWdodCA9IDA7CiAgICAgICAgIGlmIChtQ29udHJhY3RlZENoaWxkICE9IG51bGwpIHsKLSAgICAgICAgICAgIGludCBzaXplID0gTWF0aC5taW4obWF4U2l6ZSwgbVNtYWxsSGVpZ2h0KTsKLSAgICAgICAgICAgIG1Db250cmFjdGVkQ2hpbGQubWVhc3VyZSh3aWR0aE1lYXN1cmVTcGVjLAotICAgICAgICAgICAgICAgICAgICBNZWFzdXJlU3BlYy5tYWtlTWVhc3VyZVNwZWMoc2l6ZSwgTWVhc3VyZVNwZWMuRVhBQ1RMWSkpOwotICAgICAgICAgICAgbWF4Q2hpbGRIZWlnaHQgPSBNYXRoLm1heChtYXhDaGlsZEhlaWdodCwgbUNvbnRyYWN0ZWRDaGlsZC5nZXRNZWFzdXJlZEhlaWdodCgpKTsKKyAgICAgICAgICAgIGludCBoZWlnaHRTcGVjOworICAgICAgICAgICAgaWYgKHNob3VsZENvbnRyYWN0ZWRCZUZpeGVkU2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgaW50IHNpemUgPSBNYXRoLm1pbihtYXhTaXplLCBtU21hbGxIZWlnaHQpOworICAgICAgICAgICAgICAgIGhlaWdodFNwZWMgPSBNZWFzdXJlU3BlYy5tYWtlTWVhc3VyZVNwZWMoc2l6ZSwgTWVhc3VyZVNwZWMuRVhBQ1RMWSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGhlaWdodFNwZWMgPSBNZWFzdXJlU3BlYy5tYWtlTWVhc3VyZVNwZWMobWF4U2l6ZSwgTWVhc3VyZVNwZWMuQVRfTU9TVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQ29udHJhY3RlZENoaWxkLm1lYXN1cmUod2lkdGhNZWFzdXJlU3BlYywgaGVpZ2h0U3BlYyk7CisgICAgICAgICAgICBpbnQgbWVhc3VyZWRIZWlnaHQgPSBtQ29udHJhY3RlZENoaWxkLmdldE1lYXN1cmVkSGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAobWVhc3VyZWRIZWlnaHQgPCBtTWluQ29udHJhY3RlZEhlaWdodCkgeworICAgICAgICAgICAgICAgIGhlaWdodFNwZWMgPSBNZWFzdXJlU3BlYy5tYWtlTWVhc3VyZVNwZWMobU1pbkNvbnRyYWN0ZWRIZWlnaHQsIE1lYXN1cmVTcGVjLkVYQUNUTFkpOworICAgICAgICAgICAgICAgIG1Db250cmFjdGVkQ2hpbGQubWVhc3VyZSh3aWR0aE1lYXN1cmVTcGVjLCBoZWlnaHRTcGVjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1heENoaWxkSGVpZ2h0ID0gTWF0aC5tYXgobWF4Q2hpbGRIZWlnaHQsIG1lYXN1cmVkSGVpZ2h0KTsKICAgICAgICAgfQogICAgICAgICBpZiAobUV4cGFuZGVkQ2hpbGQgIT0gbnVsbCkgewotICAgICAgICAgICAgaW50IHNpemUgPSBtYXhTaXplOworICAgICAgICAgICAgaW50IHNpemUgPSBNYXRoLm1pbihtYXhTaXplLCBtTm90aWZpY2F0aW9uTWF4SGVpZ2h0KTsKICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMgbGF5b3V0UGFyYW1zID0gbUV4cGFuZGVkQ2hpbGQuZ2V0TGF5b3V0UGFyYW1zKCk7CiAgICAgICAgICAgICBpZiAobGF5b3V0UGFyYW1zLmhlaWdodCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgLy8gQW4gYWN0dWFsIGhlaWdodCBpcyBzZXQKQEAgLTE3MCw2ICsxODksMTAgQEAKICAgICAgICAgc2V0TWVhc3VyZWREaW1lbnNpb24od2lkdGgsIG93bkhlaWdodCk7CiAgICAgfQogCisgICAgcHJpdmF0ZSBib29sZWFuIHNob3VsZENvbnRyYWN0ZWRCZUZpeGVkU2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIG1CZWZvcmVOICYmIG1Db250cmFjdGVkV3JhcHBlciBpbnN0YW5jZW9mIE5vdGlmaWNhdGlvbkN1c3RvbVZpZXdXcmFwcGVyOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkgewogICAgICAgICBzdXBlci5vbkxheW91dChjaGFuZ2VkLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwpAQCAtMjkyLDE0ICszMTUsMTQgQEAKICAgICAgICAgfSBlbHNlIGlmIChtSXNIZWFkc1VwICYmIG1IZWFkc1VwQ2hpbGQgIT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuIG1IZWFkc1VwQ2hpbGQuZ2V0SGVpZ2h0KCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1TbWFsbEhlaWdodDsKKyAgICAgICAgcmV0dXJuIG1Db250cmFjdGVkQ2hpbGQuZ2V0SGVpZ2h0KCk7CiAgICAgfQogCiAgICAgcHVibGljIGludCBnZXRNaW5IZWlnaHQoKSB7CiAgICAgICAgIGlmIChtSXNDaGlsZEluR3JvdXAgJiYgIWlzR3JvdXBFeHBhbmRlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gbVNpbmdsZUxpbmVWaWV3LmdldEhlaWdodCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIG1TbWFsbEhlaWdodDsKKyAgICAgICAgICAgIHJldHVybiBtQ29udHJhY3RlZENoaWxkLmdldEhlaWdodCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzUsNiArNDU4LDkgQEAKICAgICAgICAgaWYgKCFub0V4cGFuZGVkQ2hpbGQgJiYgbUNvbnRlbnRIZWlnaHQgPT0gbUV4cGFuZGVkQ2hpbGQuZ2V0SGVpZ2h0KCkpIHsKICAgICAgICAgICAgIHJldHVybiBWSVNJQkxFX1RZUEVfRVhQQU5ERUQ7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1Jc0NoaWxkSW5Hcm91cCAmJiAhaXNHcm91cEV4cGFuZGVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBWSVNJQkxFX1RZUEVfU0lOR0xFTElORTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChtSXNIZWFkc1VwICYmIG1IZWFkc1VwQ2hpbGQgIT0gbnVsbCkgewogICAgICAgICAgICAgaWYgKG1Db250ZW50SGVpZ2h0IDw9IG1IZWFkc1VwQ2hpbGQuZ2V0SGVpZ2h0KCkgfHwgbm9FeHBhbmRlZENoaWxkKSB7CkBAIC00NDMsOSArNDY5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gVklTSUJMRV9UWVBFX0VYUEFOREVEOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1Jc0NoaWxkSW5Hcm91cCAmJiAhaXNHcm91cEV4cGFuZGVkKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVklTSUJMRV9UWVBFX1NJTkdMRUxJTkU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1Db250ZW50SGVpZ2h0IDw9IG1TbWFsbEhlaWdodCB8fCBub0V4cGFuZGVkQ2hpbGQpIHsKKyAgICAgICAgICAgIGlmIChtQ29udGVudEhlaWdodCA8PSBtQ29udHJhY3RlZENoaWxkLmdldEhlaWdodCgpIHx8IG5vRXhwYW5kZWRDaGlsZCkgewogICAgICAgICAgICAgICAgIHJldHVybiBWSVNJQkxFX1RZUEVfQ09OVFJBQ1RFRDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZJU0lCTEVfVFlQRV9FWFBBTkRFRDsKQEAgLTQ2OSw2ICs0OTMsNyBAQAogICAgIHB1YmxpYyB2b2lkIHNldEhlYWRzVXAoYm9vbGVhbiBoZWFkc1VwKSB7CiAgICAgICAgIG1Jc0hlYWRzVXAgPSBoZWFkc1VwOwogICAgICAgICBzZWxlY3RMYXlvdXQoZmFsc2UgLyogYW5pbWF0ZSAqLywgdHJ1ZSAvKiBmb3JjZSAqLyk7CisgICAgICAgIHVwZGF0ZUV4cGFuZEJ1dHRvbnMobUV4cGFuZGFibGUpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtNDkwLDYgKzUxNSw3IEBACiAKICAgICBwdWJsaWMgdm9pZCBvbk5vdGlmaWNhdGlvblVwZGF0ZWQoTm90aWZpY2F0aW9uRGF0YS5FbnRyeSBlbnRyeSkgewogICAgICAgICBtU3RhdHVzQmFyTm90aWZpY2F0aW9uID0gZW50cnkubm90aWZpY2F0aW9uOworICAgICAgICBtQmVmb3JlTiA9IGVudHJ5LnRhcmdldFNkayA8IEJ1aWxkLlZFUlNJT05fQ09ERVMuTjsKICAgICAgICAgdXBkYXRlU2luZ2xlTGluZVZpZXcoKTsKICAgICAgICAgYXBwbHlSZW1vdGVJbnB1dChlbnRyeSk7CiAgICAgICAgIHNlbGVjdExheW91dChmYWxzZSAvKiBhbmltYXRlICovLCB0cnVlIC8qIGZvcmNlICovKTsKQEAgLTU4Nyw2ICs2MTMsMTMgQEAKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB1cGRhdGVFeHBhbmRCdXR0b25zKGJvb2xlYW4gZXhwYW5kYWJsZSkgeworICAgICAgICBtRXhwYW5kYWJsZSA9IGV4cGFuZGFibGU7CisgICAgICAgIC8vIGlmIHRoZSBleHBhbmRlZCBjaGlsZCBoYXMgdGhlIHNhbWUgaGVpZ2h0IGFzIHRoZSBjb2xsYXBzZWQgb25lIHdlIGhpZGUgaXQuCisgICAgICAgIGlmIChtRXhwYW5kZWRDaGlsZCAhPSBudWxsICYmIG1FeHBhbmRlZENoaWxkLmdldEhlaWdodCgpICE9IDAgJiYKKyAgICAgICAgICAgICAgICAoKG1Jc0hlYWRzVXAgJiYgbUV4cGFuZGVkQ2hpbGQuZ2V0SGVpZ2h0KCkgPT0gbUhlYWRzVXBDaGlsZC5nZXRIZWlnaHQoKSkgfHwKKyAgICAgICAgICAgICAgICAoIW1Jc0hlYWRzVXAgJiYgbUV4cGFuZGVkQ2hpbGQuZ2V0SGVpZ2h0KCkgPT0gbUNvbnRyYWN0ZWRDaGlsZC5nZXRIZWlnaHQoKSkpKSB7CisgICAgICAgICAgICBleHBhbmRhYmxlID0gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1FeHBhbmRlZENoaWxkICE9IG51bGwpIHsKICAgICAgICAgICAgIG1FeHBhbmRlZFdyYXBwZXIudXBkYXRlRXhwYW5kYWJpbGl0eShleHBhbmRhYmxlLCBtRXhwYW5kQ2xpY2tMaXN0ZW5lcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uRGF0YS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25EYXRhLmphdmEKaW5kZXggYzQ1OGQyMS4uZjc2ODBhNyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25EYXRhLmphdmEKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25EYXRhLmphdmEKQEAgLTExNSwxNyArMTE1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkTm90aWZpY2F0aW9uQnVpbGRlci5tYWtlQmlnQ29udGVudFZpZXcoKTsKICAgICAgICAgICAgICAgICBmaW5hbCBSZW1vdGVWaWV3cyBuZXdIZWFkc1VwQ29udGVudFZpZXcgPQogICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZE5vdGlmaWNhdGlvbkJ1aWxkZXIubWFrZUhlYWRzVXBDb250ZW50VmlldygpOwotICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvbiB1cGRhdGVkUHVibGljTm90aWZpY2F0aW9uID0gdXBkYXRlZE5vdGlmaWNhdGlvbi5wdWJsaWNWZXJzaW9uOwotICAgICAgICAgICAgICAgIGZpbmFsIFJlbW90ZVZpZXdzIG5ld1B1YkNvbnRlbnRWaWV3ID0gKHVwZGF0ZWRQdWJsaWNOb3RpZmljYXRpb24gIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgID8gTm90aWZpY2F0aW9uLkJ1aWxkZXIucmVjb3ZlckJ1aWxkZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eCwgdXBkYXRlZFB1YmxpY05vdGlmaWNhdGlvbikubWFrZUNvbnRlbnRWaWV3KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZW1vdGVWaWV3cyBuZXdQdWJsaWNOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgID0gdXBkYXRlZE5vdGlmaWNhdGlvbkJ1aWxkZXIubWFrZVB1YmxpY0NvbnRlbnRWaWV3KCk7CiAKICAgICAgICAgICAgICAgICBhcHBseUluUGxhY2UgPSBjb21wYXJlUmVtb3RlVmlld3MoY2FjaGVkQ29udGVudFZpZXcsIG5ld0NvbnRlbnRWaWV3KQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgY29tcGFyZVJlbW90ZVZpZXdzKGNhY2hlZEJpZ0NvbnRlbnRWaWV3LCBuZXdCaWdDb250ZW50VmlldykKICAgICAgICAgICAgICAgICAgICAgICAgICYmIGNvbXBhcmVSZW1vdGVWaWV3cyhjYWNoZWRIZWFkc1VwQ29udGVudFZpZXcsIG5ld0hlYWRzVXBDb250ZW50VmlldykKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGNvbXBhcmVSZW1vdGVWaWV3cyhjYWNoZWRQdWJsaWNDb250ZW50VmlldywgbmV3UHViQ29udGVudFZpZXcpOwotICAgICAgICAgICAgICAgIGNhY2hlZFB1YmxpY0NvbnRlbnRWaWV3ID0gbmV3UHViQ29udGVudFZpZXc7CisgICAgICAgICAgICAgICAgICAgICAgICAmJiBjb21wYXJlUmVtb3RlVmlld3MoY2FjaGVkUHVibGljQ29udGVudFZpZXcsIG5ld1B1YmxpY05vdGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgY2FjaGVkUHVibGljQ29udGVudFZpZXcgPSBuZXdQdWJsaWNOb3RpZmljYXRpb247CiAgICAgICAgICAgICAgICAgY2FjaGVkSGVhZHNVcENvbnRlbnRWaWV3ID0gbmV3SGVhZHNVcENvbnRlbnRWaWV3OwogICAgICAgICAgICAgICAgIGNhY2hlZEJpZ0NvbnRlbnRWaWV3ID0gbmV3QmlnQ29udGVudFZpZXc7CiAgICAgICAgICAgICAgICAgY2FjaGVkQ29udGVudFZpZXcgPSBuZXdDb250ZW50VmlldzsKQEAgLTEzNiwxNCArMTMzLDggQEAKICAgICAgICAgICAgICAgICBjYWNoZWRDb250ZW50VmlldyA9IGJ1aWxkZXIubWFrZUNvbnRlbnRWaWV3KCk7CiAgICAgICAgICAgICAgICAgY2FjaGVkQmlnQ29udGVudFZpZXcgPSBidWlsZGVyLm1ha2VCaWdDb250ZW50VmlldygpOwogICAgICAgICAgICAgICAgIGNhY2hlZEhlYWRzVXBDb250ZW50VmlldyA9IGJ1aWxkZXIubWFrZUhlYWRzVXBDb250ZW50VmlldygpOworICAgICAgICAgICAgICAgIGNhY2hlZFB1YmxpY0NvbnRlbnRWaWV3ID0gYnVpbGRlci5tYWtlUHVibGljQ29udGVudFZpZXcoKTsKIAotICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvbiBwdWJsaWNOb3RpZmljYXRpb24gPQotICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmdldE5vdGlmaWNhdGlvbigpLnB1YmxpY1ZlcnNpb247Ci0gICAgICAgICAgICAgICAgaWYgKHB1YmxpY05vdGlmaWNhdGlvbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvbi5CdWlsZGVyIHB1YmxpY0J1aWxkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IE5vdGlmaWNhdGlvbi5CdWlsZGVyLnJlY292ZXJCdWlsZGVyKGN0eCwgcHVibGljTm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVkUHVibGljQ29udGVudFZpZXcgPSBwdWJsaWNCdWlsZGVyLm1ha2VDb250ZW50VmlldygpOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhcHBseUluUGxhY2UgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhcHBseUluUGxhY2U7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL05vdGlmaWNhdGlvbkd1dHMuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uR3V0cy5qYXZhCmluZGV4IDU3ZGI4MGEuLjY4NTBmN2UgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uR3V0cy5qYXZhCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uR3V0cy5qYXZhCkBAIC0xNiw2ICsxNiw3IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOwogCitpbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLklkUmVzOwogaW1wb3J0IGFuZHJvaWQuYXBwLklOb3RpZmljYXRpb25NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKQEAgLTMwLDYgKzMxLDcgQEAKIGltcG9ydCBhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dDsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmFkaW9CdXR0b247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cDsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5TZWVrQmFyOwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OwogCkBAIC00Myw2ICs0NSw3IEBACiAgICAgcHJpdmF0ZSBEcmF3YWJsZSBtQmFja2dyb3VuZDsKICAgICBwcml2YXRlIGludCBtQ2xpcFRvcEFtb3VudDsKICAgICBwcml2YXRlIGludCBtQWN0dWFsSGVpZ2h0OworICAgIHByaXZhdGUgYm9vbGVhbiBtRXhwb3NlZDsKIAogICAgIHB1YmxpYyBOb3RpZmljYXRpb25HdXRzKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CiAgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKQEAgLTEwMSwyNCArMTA0LDUxIEBACiAgICAgICAgICAgICAgICAgPyBuZXcgTm90aWZpY2F0aW9uLlRvcGljKE5vdGlmaWNhdGlvbi5UT1BJQ19ERUZBVUxULCBtQ29udGV4dC5nZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZGVmYXVsdF9ub3RpZmljYXRpb25fdG9waWNfbGFiZWwpKQogICAgICAgICAgICAgICAgIDogc2JuLmdldE5vdGlmaWNhdGlvbigpLmdldFRvcGljKCk7CisgICAgICAgIGJvb2xlYW4gZG9lc0FwcFVzZVRvcGljcyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZG9lc0FwcFVzZVRvcGljcyA9IHNJTk0uZG9lc0FwcFVzZVRvcGljcyhzYm4uZ2V0UGFja2FnZU5hbWUoKSwgc2JuLmdldFVpZCgpKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHt9CisgICAgICAgIGZpbmFsIGJvb2xlYW4gYXBwVXNlc1RvcGljcyA9IGRvZXNBcHBVc2VUb3BpY3M7CiAKICAgICAgICAgZmluYWwgUmFkaW9CdXR0b24gYXBwbHlUb1RvcGljID0gKFJhZGlvQnV0dG9uKSByb3cuZmluZFZpZXdCeUlkKFIuaWQuYXBwbHlfdG9fdG9waWMpOwotICAgICAgICBpZiAoc2JuLmdldE5vdGlmaWNhdGlvbigpLmdldFRvcGljKCkgIT0gbnVsbCkgewotICAgICAgICAgICAgYXBwbHlUb1RvcGljLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgIGFwcGx5VG9Ub3BpYy5zZXRDaGVja2VkKHRydWUpOwotICAgICAgICAgICAgYXBwbHlUb1RvcGljLnNldFRleHQobUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmFwcGx5X3RvX3RvcGljLCB0b3BpYy5nZXRMYWJlbCgpKSk7Ci0gICAgICAgICAgICByb3cuZmluZFZpZXdCeUlkKFIuaWQuYXBwbHlfdG9fYXBwKS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgIH0KLQorICAgICAgICBhcHBseVRvVG9waWMuc2V0Q2hlY2tlZCh0cnVlKTsKKyAgICAgICAgZmluYWwgVmlldyBhcHBseVRvQXBwID0gcm93LmZpbmRWaWV3QnlJZChSLmlkLmFwcGx5X3RvX2FwcCk7CiAgICAgICAgIGZpbmFsIFRleHRWaWV3IHRvcGljU3VtbWFyeSA9ICgoVGV4dFZpZXcpIHJvdy5maW5kVmlld0J5SWQoUi5pZC5zdW1tYXJ5KSk7CiAgICAgICAgIGZpbmFsIFRleHRWaWV3IHRvcGljVGl0bGUgPSAoKFRleHRWaWV3KSByb3cuZmluZFZpZXdCeUlkKFIuaWQudGl0bGUpKTsKLSAgICAgICAgU2Vla0JhciBzZWVrQmFyID0gKFNlZWtCYXIpIHJvdy5maW5kVmlld0J5SWQoUi5pZC5zZWVrYmFyKTsKKyAgICAgICAgZmluYWwgU2Vla0JhciBzZWVrQmFyID0gKFNlZWtCYXIpIHJvdy5maW5kVmlld0J5SWQoUi5pZC5zZWVrYmFyKTsKKyAgICAgICAgZmluYWwgUmFkaW9Hcm91cCBhcHBseVRvID0gKFJhZGlvR3JvdXApIHJvdy5maW5kVmlld0J5SWQoUi5pZC5hcHBseV90byk7CisgICAgICAgIGFwcGx5VG8uc2V0T25DaGVja2VkQ2hhbmdlTGlzdGVuZXIobmV3IFJhZGlvR3JvdXAuT25DaGVja2VkQ2hhbmdlTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2hlY2tlZENoYW5nZWQoUmFkaW9Hcm91cCBncm91cCwgQElkUmVzIGludCBjaGVja2VkSWQpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoZWNrZWRJZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSLmlkLmFwcGx5X3RvX3RvcGljOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNJTk0uc2V0VG9waWNJbXBvcnRhbmNlKHNibi5nZXRQYWNrYWdlTmFtZSgpLCBzYm4uZ2V0VWlkKCksIHRvcGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vla0Jhci5nZXRQcm9ncmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0lOTS5zZXRBcHBJbXBvcnRhbmNlKHNibi5nZXRQYWNrYWdlTmFtZSgpLCBzYm4uZ2V0VWlkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVrQmFyLmdldFByb2dyZXNzKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gOigKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCiAgICAgICAgIHNlZWtCYXIuc2V0TWF4KDQpOwogICAgICAgICBzZWVrQmFyLnNldE9uU2Vla0JhckNoYW5nZUxpc3RlbmVyKG5ldyBTZWVrQmFyLk9uU2Vla0JhckNoYW5nZUxpc3RlbmVyKCkgewogICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvblByb2dyZXNzQ2hhbmdlZChTZWVrQmFyIHNlZWtCYXIsIGludCBwcm9ncmVzcywgYm9vbGVhbiBmcm9tVXNlcikgewogICAgICAgICAgICAgICAgIHVwZGF0ZVRpdGxlQW5kU3VtbWFyeShwcm9ncmVzcyk7CiAgICAgICAgICAgICAgICAgaWYgKGZyb21Vc2VyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcHBVc2VzVG9waWNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBseVRvVG9waWMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBseVRvVG9waWMuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmFwcGx5X3RvX3RvcGljLCB0b3BpYy5nZXRMYWJlbCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBseVRvQXBwLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9Ub3BpYy5pc0NoZWNrZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNJTk0uc2V0VG9waWNJbXBvcnRhbmNlKHNibi5nZXRQYWNrYWdlTmFtZSgpLCBzYm4uZ2V0VWlkKCksIHRvcGljLApAQCAtMTk1LDQgKzIyNSwxMiBAQAogICAgICAgICAvLyBQcmV2ZW50cyB0aGlzIHZpZXcgZnJvbSBjcmVhdGluZyBhIGxheWVyIHdoZW4gYWxwaGEgaXMgYW5pbWF0aW5nLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RXhwb3NlZChib29sZWFuIGV4cG9zZWQpIHsKKyAgICAgICAgbUV4cG9zZWQgPSBleHBvc2VkOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGFyZUd1dHNFeHBvc2VkKCkgeworICAgICAgICByZXR1cm4gbUV4cG9zZWQ7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9waG9uZS9RU1RpbGVIb3N0LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3Bob25lL1FTVGlsZUhvc3QuamF2YQppbmRleCA3ZjI3YmE3Li5lNmQ4MzdhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3Bob25lL1FTVGlsZUhvc3QuamF2YQorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3Bob25lL1FTVGlsZUhvc3QuamF2YQpAQCAtNjQsNiArNjQsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5wb2xpY3kuVXNlckluZm9Db250cm9sbGVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5wb2xpY3kuVXNlclN3aXRjaGVyQ29udHJvbGxlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIucG9saWN5Llplbk1vZGVDb250cm9sbGVyOworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnR1bmVyLkNvbG9yTWF0cml4VGlsZTsKIGltcG9ydCBjb20uYW5kcm9pZC5zeXN0ZW11aS50dW5lci5UdW5lclNlcnZpY2U7CiBpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkudHVuZXIuVHVuZXJTZXJ2aWNlLlR1bmFibGU7CiAKQEAgLTM2OCw2ICszNjksOCBAQAogICAgICAgICBlbHNlIGlmICh0aWxlU3BlYy5lcXVhbHMoImhvdHNwb3QiKSkgcmV0dXJuIG5ldyBIb3RzcG90VGlsZSh0aGlzKTsKICAgICAgICAgZWxzZSBpZiAodGlsZVNwZWMuZXF1YWxzKCJ1c2VyIikpIHJldHVybiBuZXcgVXNlclRpbGUodGhpcyk7CiAgICAgICAgIGVsc2UgaWYgKHRpbGVTcGVjLmVxdWFscygiYmF0dGVyeSIpKSByZXR1cm4gbmV3IEJhdHRlcnlUaWxlKHRoaXMpOworICAgICAgICBlbHNlIGlmICh0aWxlU3BlYy5lcXVhbHMoQ29sb3JNYXRyaXhUaWxlLkNPTE9SX01BVFJJWF9TUEVDKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3JNYXRyaXhUaWxlKHRoaXMpOwogICAgICAgICAvLyBJbnRlbnQgdGlsZXMuCiAgICAgICAgIGVsc2UgaWYgKHRpbGVTcGVjLnN0YXJ0c1dpdGgoSW50ZW50VGlsZS5QUkVGSVgpKSByZXR1cm4gSW50ZW50VGlsZS5jcmVhdGUodGhpcyx0aWxlU3BlYyk7CiAgICAgICAgIGVsc2UgaWYgKHRpbGVTcGVjLnN0YXJ0c1dpdGgoQ3VzdG9tVGlsZS5QUkVGSVgpKSByZXR1cm4gQ3VzdG9tVGlsZS5jcmVhdGUodGhpcyx0aWxlU3BlYyk7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3BvbGljeS9IZWFkc1VwTWFuYWdlci5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9wb2xpY3kvSGVhZHNVcE1hbmFnZXIuamF2YQppbmRleCA1Y2ZkMTc0Li5iMzhjM2ZlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3BvbGljeS9IZWFkc1VwTWFuYWdlci5qYXZhCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvcG9saWN5L0hlYWRzVXBNYW5hZ2VyLmphdmEKQEAgLTM3OCwyMyArMzc4LDIyIEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1IYXNQaW5uZWROb3RpZmljYXRpb24pIHsKLSAgICAgICAgICAgIGludCBtaW5YID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgICAgICBpbnQgbWluWCA9IDA7CiAgICAgICAgICAgICBpbnQgbWF4WCA9IDA7Ci0gICAgICAgICAgICBpbnQgbWluWSA9IEludGVnZXIuTUFYX1ZBTFVFOwogICAgICAgICAgICAgaW50IG1heFkgPSAwOwogICAgICAgICAgICAgZm9yIChIZWFkc1VwRW50cnkgZW50cnkgOiBtU29ydGVkRW50cmllcykgewogICAgICAgICAgICAgICAgIEV4cGFuZGFibGVOb3RpZmljYXRpb25Sb3cgcm93ID0gZW50cnkuZW50cnkucm93OwogICAgICAgICAgICAgICAgIGlmIChyb3cuaXNQaW5uZWQoKSkgewogICAgICAgICAgICAgICAgICAgICByb3cuZ2V0TG9jYXRpb25PblNjcmVlbihtVG1wVHdvQXJyYXkpOwotICAgICAgICAgICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgbVRtcFR3b0FycmF5WzBdKTsKLSAgICAgICAgICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIDApOwotICAgICAgICAgICAgICAgICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgbVRtcFR3b0FycmF5WzBdICsgcm93LmdldFdpZHRoKCkpOwotICAgICAgICAgICAgICAgICAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgcm93LmdldEhlYWRzVXBIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1pblggPSBtVG1wVHdvQXJyYXlbMF07CisgICAgICAgICAgICAgICAgICAgIG1heFggPSBtVG1wVHdvQXJyYXlbMF0gKyByb3cuZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4WSA9IHJvdy5nZXRIZWFkc1VwSGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5mby5zZXRUb3VjaGFibGVJbnNldHMoVmlld1RyZWVPYnNlcnZlci5JbnRlcm5hbEluc2V0c0luZm8uVE9VQ0hBQkxFX0lOU0VUU19SRUdJT04pOwotICAgICAgICAgICAgaW5mby50b3VjaGFibGVSZWdpb24uc2V0KG1pblgsIG1pblksIG1heFgsIG1heFkgKyBtTm90aWZpY2F0aW9uc1RvcFBhZGRpbmcpOworICAgICAgICAgICAgaW5mby50b3VjaGFibGVSZWdpb24uc2V0KG1pblgsIDAsIG1heFgsIG1heFkgKyBtTm90aWZpY2F0aW9uc1RvcFBhZGRpbmcpOwogICAgICAgICB9IGVsc2UgaWYgKG1IZWFkc1VwR29pbmdBd2F5IHx8IG1XYWl0aW5nT25Db2xsYXBzZVdoZW5Hb2luZ0F3YXkpIHsKICAgICAgICAgICAgIGluZm8uc2V0VG91Y2hhYmxlSW5zZXRzKFZpZXdUcmVlT2JzZXJ2ZXIuSW50ZXJuYWxJbnNldHNJbmZvLlRPVUNIQUJMRV9JTlNFVFNfUkVHSU9OKTsKICAgICAgICAgICAgIGluZm8udG91Y2hhYmxlUmVnaW9uLnNldCgwLCAwLCBtU3RhdHVzQmFyV2luZG93Vmlldy5nZXRXaWR0aCgpLCBtU3RhdHVzQmFySGVpZ2h0KTsKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvc3RhY2svTm90aWZpY2F0aW9uQ2hpbGRyZW5Db250YWluZXIuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvc3RhY2svTm90aWZpY2F0aW9uQ2hpbGRyZW5Db250YWluZXIuamF2YQppbmRleCBiZWFhM2FkLi5iYWNjZDJjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3N0YWNrL05vdGlmaWNhdGlvbkNoaWxkcmVuQ29udGFpbmVyLmphdmEKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9zdGFjay9Ob3RpZmljYXRpb25DaGlsZHJlbkNvbnRhaW5lci5qYXZhCkBAIC01Niw2ICs1Niw3IEBACiAgICAgcHJpdmF0ZSBFeHBhbmRhYmxlTm90aWZpY2F0aW9uUm93IG1Ob3RpZmljYXRpb25QYXJlbnQ7CiAgICAgcHJpdmF0ZSBIeWJyaWROb3RpZmljYXRpb25WaWV3IG1Hcm91cE92ZXJmbG93Q29udGFpbmVyOwogICAgIHByaXZhdGUgVmlld1N0YXRlIG1Hcm91cE92ZXJGbG93U3RhdGU7CisgICAgcHJpdmF0ZSBpbnQgbVJlYWxIZWlnaHQ7CiAKICAgICBwdWJsaWMgTm90aWZpY2F0aW9uQ2hpbGRyZW5Db250YWluZXIoQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgIHRoaXMoY29udGV4dCwgbnVsbCk7CkBAIC0xMTEsOCArMTEyLDggQEAKICAgICAgICAgaW50IGhlaWdodE1vZGUgPSBNZWFzdXJlU3BlYy5nZXRNb2RlKGhlaWdodE1lYXN1cmVTcGVjKTsKICAgICAgICAgYm9vbGVhbiBoYXNGaXhlZEhlaWdodCA9IGhlaWdodE1vZGUgPT0gTWVhc3VyZVNwZWMuRVhBQ1RMWTsKICAgICAgICAgYm9vbGVhbiBpc0hlaWdodExpbWl0ZWQgPSBoZWlnaHRNb2RlID09IE1lYXN1cmVTcGVjLkFUX01PU1Q7CisgICAgICAgIGludCBzaXplID0gTWVhc3VyZVNwZWMuZ2V0U2l6ZShoZWlnaHRNZWFzdXJlU3BlYyk7CiAgICAgICAgIGlmIChoYXNGaXhlZEhlaWdodCB8fCBpc0hlaWdodExpbWl0ZWQpIHsKLSAgICAgICAgICAgIGludCBzaXplID0gTWVhc3VyZVNwZWMuZ2V0U2l6ZShoZWlnaHRNZWFzdXJlU3BlYyk7CiAgICAgICAgICAgICBvd25NYXhIZWlnaHQgPSBNYXRoLm1pbihvd25NYXhIZWlnaHQsIHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGludCBuZXdIZWlnaHRTcGVjID0gTWVhc3VyZVNwZWMubWFrZU1lYXN1cmVTcGVjKG93bk1heEhlaWdodCwgTWVhc3VyZVNwZWMuQVRfTU9TVCk7CkBAIC0xMzMsOSArMTM0LDE5IEBACiAgICAgICAgIGlmIChtR3JvdXBPdmVyZmxvd0NvbnRhaW5lciAhPSBudWxsKSB7CiAgICAgICAgICAgICBtR3JvdXBPdmVyZmxvd0NvbnRhaW5lci5tZWFzdXJlKHdpZHRoTWVhc3VyZVNwZWMsIG5ld0hlaWdodFNwZWMpOwogICAgICAgICB9CisgICAgICAgIG1SZWFsSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBpZiAoaGVpZ2h0TW9kZSAhPSBNZWFzdXJlU3BlYy5VTlNQRUNJRklFRCkgeworICAgICAgICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCBzaXplKTsKKyAgICAgICAgfQogICAgICAgICBzZXRNZWFzdXJlZERpbWVuc2lvbih3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiAKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBwb2ludEluVmlldyhmbG9hdCBsb2NhbFgsIGZsb2F0IGxvY2FsWSwgZmxvYXQgc2xvcCkgeworICAgICAgICByZXR1cm4gbG9jYWxYID49IC1zbG9wICYmIGxvY2FsWSA+PSAtc2xvcCAmJiBsb2NhbFggPCAoKG1SaWdodCAtIG1MZWZ0KSArIHNsb3ApICYmCisgICAgICAgICAgICAgICAgbG9jYWxZIDwgKG1SZWFsSGVpZ2h0ICsgc2xvcCk7CisgICAgfQorCiAgICAgLyoqCiAgICAgICogQWRkIGEgY2hpbGQgbm90aWZpY2F0aW9uIHRvIHRoaXMgdmlldy4KICAgICAgKgpAQCAtNDUyLDYgKzQ2MywxMCBAQAogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0TWluSGVpZ2h0KCkgeworICAgICAgICByZXR1cm4gZ2V0SW50cmluc2ljSGVpZ2h0KE5VTUJFUl9PRl9DSElMRFJFTl9XSEVOX0NPTExBUFNFRCk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRNaW5FeHBhbmRIZWlnaHQoKSB7CiAgICAgICAgIHJldHVybiBnZXRJbnRyaW5zaWNIZWlnaHQoZ2V0TWF4QWxsb3dlZFZpc2libGVDaGlsZHJlbih0cnVlIC8qIGZvcmNlQ29sbGFwc2VkICovKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3N0YWNrL05vdGlmaWNhdGlvblN0YWNrU2Nyb2xsTGF5b3V0LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3N0YWNrL05vdGlmaWNhdGlvblN0YWNrU2Nyb2xsTGF5b3V0LmphdmEKaW5kZXggMmNlMTlhMi4uMGVkMTUyNyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9zdGFjay9Ob3RpZmljYXRpb25TdGFja1Njcm9sbExheW91dC5qYXZhCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvc3RhY2svTm90aWZpY2F0aW9uU3RhY2tTY3JvbGxMYXlvdXQuamF2YQpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgLyoqCiAgICAgICogVGhlIGFsZ29yaXRobSB3aGljaCBjYWxjdWxhdGVzIHRoZSBwcm9wZXJ0aWVzIGZvciBvdXIgY2hpbGRyZW4KICAgICAgKi8KLSAgICBwcml2YXRlIFN0YWNrU2Nyb2xsQWxnb3JpdGhtIG1TdGFja1Njcm9sbEFsZ29yaXRobTsKKyAgICBwcml2YXRlIGZpbmFsIFN0YWNrU2Nyb2xsQWxnb3JpdGhtIG1TdGFja1Njcm9sbEFsZ29yaXRobTsKIAogICAgIC8qKgogICAgICAqIFRoZSBjdXJyZW50IFN0YXRlIHRoaXMgTGF5b3V0IGlzIGluCkBAIC0yNTgsNiArMjU4LDcgQEAKIAogICAgICAgICBtU3dpcGVIZWxwZXIgPSBuZXcgU3dpcGVIZWxwZXIoU3dpcGVIZWxwZXIuWCwgdGhpcywgZ2V0Q29udGV4dCgpKTsKICAgICAgICAgbVN3aXBlSGVscGVyLnNldExvbmdQcmVzc0xpc3RlbmVyKG1Mb25nUHJlc3NMaXN0ZW5lcik7CisgICAgICAgIG1TdGFja1Njcm9sbEFsZ29yaXRobSA9IG5ldyBTdGFja1Njcm9sbEFsZ29yaXRobShjb250ZXh0KTsKICAgICAgICAgaW5pdFZpZXcoY29udGV4dCk7CiAgICAgICAgIGlmIChERUJVRykgewogICAgICAgICAgICAgc2V0V2lsbE5vdERyYXcoZmFsc2UpOwpAQCAtMzAzLDggKzMwNCw3IEBACiAgICAgICAgICAgICAgICAgLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLm5vdGlmaWNhdGlvbl9taW5faGVpZ2h0KTsKICAgICAgICAgbUJvdHRvbVN0YWNrUGVla1NpemUgPSBjb250ZXh0LmdldFJlc291cmNlcygpCiAgICAgICAgICAgICAgICAgLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLmJvdHRvbV9zdGFja19wZWVrX2Ftb3VudCk7Ci0gICAgICAgIG1TdGFja1Njcm9sbEFsZ29yaXRobSA9IG5ldyBTdGFja1Njcm9sbEFsZ29yaXRobShjb250ZXh0KTsKLSAgICAgICAgbVN0YWNrU2Nyb2xsQWxnb3JpdGhtLnNldERpbW1lZChtQW1iaWVudFN0YXRlLmlzRGltbWVkKCkpOworICAgICAgICBtU3RhY2tTY3JvbGxBbGdvcml0aG0uaW5pdFZpZXcoY29udGV4dCk7CiAgICAgICAgIG1QYWRkaW5nQmV0d2VlbkVsZW1lbnRzRGltbWVkID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKQogICAgICAgICAgICAgICAgIC5nZXREaW1lbnNpb25QaXhlbFNpemUoUi5kaW1lbi5ub3RpZmljYXRpb25fcGFkZGluZ19kaW1tZWQpOwogICAgICAgICBtUGFkZGluZ0JldHdlZW5FbGVtZW50c05vcm1hbCA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkKQEAgLTEzMzgsNyArMTMzOCw3IEBACiAgICAgLyoqCiAgICAgICogQHJldHVybiB0aGUgZmlyc3QgY2hpbGQgd2hpY2ggaGFzIHZpc2liaWxpdHkgdW5lcXVhbCB0byBHT05FCiAgICAgICovCi0gICAgcHJpdmF0ZSBFeHBhbmRhYmxlVmlldyBnZXRGaXJzdENoaWxkTm90R29uZSgpIHsKKyAgICBwdWJsaWMgRXhwYW5kYWJsZVZpZXcgZ2V0Rmlyc3RDaGlsZE5vdEdvbmUoKSB7CiAgICAgICAgIGludCBjaGlsZENvdW50ID0gZ2V0Q2hpbGRDb3VudCgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkQ291bnQ7IGkrKykgewogICAgICAgICAgICAgVmlldyBjaGlsZCA9IGdldENoaWxkQXQoaSk7CkBAIC0yODM2LDcgKzI4MzYsNiBAQAogICAgIHB1YmxpYyB2b2lkIHNldEhlYWRzVXBNYW5hZ2VyKEhlYWRzVXBNYW5hZ2VyIGhlYWRzVXBNYW5hZ2VyKSB7CiAgICAgICAgIG1IZWFkc1VwTWFuYWdlciA9IGhlYWRzVXBNYW5hZ2VyOwogICAgICAgICBtQW1iaWVudFN0YXRlLnNldEhlYWRzVXBNYW5hZ2VyKGhlYWRzVXBNYW5hZ2VyKTsKLSAgICAgICAgbVN0YWNrU2Nyb2xsQWxnb3JpdGhtLnNldEhlYWRzVXBNYW5hZ2VyKGhlYWRzVXBNYW5hZ2VyKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBnZW5lcmF0ZUhlYWRzVXBBbmltYXRpb24oRXhwYW5kYWJsZU5vdGlmaWNhdGlvblJvdyByb3csIGJvb2xlYW4gaXNIZWFkc1VwKSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3N0YWNrL1N0YWNrU2Nyb2xsQWxnb3JpdGhtLmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL3N0YWNrL1N0YWNrU2Nyb2xsQWxnb3JpdGhtLmphdmEKaW5kZXggNTliNDQ2Yi4uNTQ5Njk2MyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9zdGFjay9TdGFja1Njcm9sbEFsZ29yaXRobS5qYXZhCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvc3RhY2svU3RhY2tTY3JvbGxBbGdvcml0aG0uamF2YQpAQCAtMjUsNyArMjUsNiBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CiBpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkV4cGFuZGFibGVOb3RpZmljYXRpb25Sb3c7CiBpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkV4cGFuZGFibGVWaWV3OwotaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5wb2xpY3kuSGVhZHNVcE1hbmFnZXI7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwpAQCAtNjgsMTkgKzY3LDIyIEBACiAgICAgcHJpdmF0ZSBpbnQgbUJvdHRvbVN0YWNrU2xvd0Rvd25MZW5ndGg7CiAgICAgcHJpdmF0ZSBpbnQgbVRvcFN0YWNrU2xvd0Rvd25MZW5ndGg7CiAgICAgcHJpdmF0ZSBpbnQgbUNvbGxhcHNlU2Vjb25kQ2FyZFBhZGRpbmc7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1Jc1NtYWxsU2NyZWVuOwotICAgIHByaXZhdGUgaW50IG1NYXhOb3RpZmljYXRpb25IZWlnaHQ7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1TY2FsZURpbW1lZDsKLSAgICBwcml2YXRlIEhlYWRzVXBNYW5hZ2VyIG1IZWFkc1VwTWFuYWdlcjsKKyAgICBwcml2YXRlIEV4cGFuZGFibGVWaWV3IG1GaXJzdENoaWxkOwogICAgIHByaXZhdGUgaW50IG1GaXJzdENoaWxkTWluSGVpZ2h0OworICAgIHByaXZhdGUgYm9vbGVhbiBtRGltbWVkOwogCiAgICAgcHVibGljIFN0YWNrU2Nyb2xsQWxnb3JpdGhtKENvbnRleHQgY29udGV4dCkgewotICAgICAgICBpbml0Q29uc3RhbnRzKGNvbnRleHQpOwotICAgICAgICB1cGRhdGVQYWRkaW5nKGZhbHNlKTsKKyAgICAgICAgaW5pdFZpZXcoY29udGV4dCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVBhZGRpbmcoYm9vbGVhbiBkaW1tZWQpIHsKLSAgICAgICAgbVBhZGRpbmdCZXR3ZWVuRWxlbWVudHMgPSBkaW1tZWQgJiYgbVNjYWxlRGltbWVkCisgICAgcHVibGljIHZvaWQgaW5pdFZpZXcoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIGluaXRDb25zdGFudHMoY29udGV4dCk7CisgICAgICAgIHVwZGF0ZVBhZGRpbmcoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlUGFkZGluZygpIHsKKyAgICAgICAgbVBhZGRpbmdCZXR3ZWVuRWxlbWVudHMgPSBtRGltbWVkICYmIG1TY2FsZURpbW1lZAogICAgICAgICAgICAgICAgID8gbVBhZGRpbmdCZXR3ZWVuRWxlbWVudHNEaW1tZWQKICAgICAgICAgICAgICAgICA6IG1QYWRkaW5nQmV0d2VlbkVsZW1lbnRzTm9ybWFsOwogICAgICAgICBtVG9wU3RhY2tUb3RhbFNpemUgPSBtVG9wU3RhY2tTbG93RG93bkxlbmd0aCArIG1QYWRkaW5nQmV0d2VlbkVsZW1lbnRzCkBAIC0xMTAsOCArMTEyLDYgQEAKICAgICAgICAgICAgICAgICAuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4ubm90aWZpY2F0aW9uc190b3BfcGFkZGluZyk7CiAgICAgICAgIG1Db2xsYXBzZWRTaXplID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKQogICAgICAgICAgICAgICAgIC5nZXREaW1lbnNpb25QaXhlbFNpemUoUi5kaW1lbi5ub3RpZmljYXRpb25fbWluX2hlaWdodCk7Ci0gICAgICAgIG1NYXhOb3RpZmljYXRpb25IZWlnaHQgPSBjb250ZXh0LmdldFJlc291cmNlcygpCi0gICAgICAgICAgICAgICAgLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLm5vdGlmaWNhdGlvbl9tYXhfaGVpZ2h0KTsKICAgICAgICAgbVRvcFN0YWNrUGVla1NpemUgPSBjb250ZXh0LmdldFJlc291cmNlcygpCiAgICAgICAgICAgICAgICAgLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLnRvcF9zdGFja19wZWVrX2Ftb3VudCk7CiAgICAgICAgIG1Cb3R0b21TdGFja1BlZWtTaXplID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAgICAgICAgIGFsZ29yaXRobVN0YXRlLnNjcm9sbGVkUGl4ZWxzVG9wID0gMDsKICAgICAgICAgYWxnb3JpdGhtU3RhdGUuaXRlbXNJbkJvdHRvbVN0YWNrID0gMC4wZjsKICAgICAgICAgYWxnb3JpdGhtU3RhdGUucGFydGlhbEluQm90dG9tID0gMC4wZjsKKyAgICAgICAgbUZpcnN0Q2hpbGRNaW5IZWlnaHQgPSBtRmlyc3RDaGlsZCA9PSBudWxsID8gMCA6IG1GaXJzdENoaWxkLmdldE1pbkhlaWdodCgpOwogICAgICAgICBmbG9hdCBib3R0b21PdmVyU2Nyb2xsID0gYW1iaWVudFN0YXRlLmdldE92ZXJTY3JvbGxBbW91bnQoZmFsc2UgLyogb25Ub3AgKi8pOwogCiAgICAgICAgIGludCBzY3JvbGxZID0gYW1iaWVudFN0YXRlLmdldFNjcm9sbFkoKTsKQEAgLTU0NCw3ICs1NDUsNyBAQAogICAgICAgICAgICAgaWYgKHJvdy5pc1Bpbm5lZCgpKSB7CiAgICAgICAgICAgICAgICAgY2hpbGRTdGF0ZS55VHJhbnNsYXRpb24gPSBNYXRoLm1heChjaGlsZFN0YXRlLnlUcmFuc2xhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25zVG9wUGFkZGluZyk7Ci0gICAgICAgICAgICAgICAgY2hpbGRTdGF0ZS5oZWlnaHQgPSByb3cuZ2V0SGVhZHNVcEhlaWdodCgpOworICAgICAgICAgICAgICAgIGNoaWxkU3RhdGUuaGVpZ2h0ID0gTWF0aC5tYXgocm93LmdldEhlYWRzVXBIZWlnaHQoKSwgY2hpbGRTdGF0ZS5oZWlnaHQpOwogICAgICAgICAgICAgICAgIGlmICghaXNUb3BFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCBhIGhlYWRzVXAgZG9lc24ndCB2ZXJ0aWNhbGx5IGV4dGVuZCBmdXJ0aGVyIHRoYW4gdGhlIGhlYWRzLXVwIGF0CiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0b3AgbW9zdCB6LXBvc2l0aW9uCkBAIC05MzMsMTAgKzkzNCw3IEBACiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5DaGFuZ2VkKGZpbmFsIE5vdGlmaWNhdGlvblN0YWNrU2Nyb2xsTGF5b3V0IGhvc3RWaWV3KSB7Ci0gICAgICAgIGludCBmaXJzdEl0ZW1NaW5IZWlnaHQgPSBob3N0Vmlldy5nZXRGaXJzdEl0ZW1NaW5IZWlnaHQoKTsKLSAgICAgICAgaWYgKGZpcnN0SXRlbU1pbkhlaWdodCAhPSBtRmlyc3RDaGlsZE1pbkhlaWdodCkgewotICAgICAgICAgICAgbUZpcnN0Q2hpbGRNaW5IZWlnaHQgPSBmaXJzdEl0ZW1NaW5IZWlnaHQ7Ci0gICAgICAgIH0KKyAgICAgICAgbUZpcnN0Q2hpbGQgPSBob3N0Vmlldy5nZXRGaXJzdENoaWxkTm90R29uZSgpOwogICAgICAgICBpZiAobUlzRXhwYW5zaW9uQ2hhbmdpbmcpIHsKICAgICAgICAgICAgIGhvc3RWaWV3LnBvc3QobmV3IFJ1bm5hYmxlKCkgewogICAgICAgICAgICAgICAgIEBPdmVycmlkZQpAQCAtOTQ4LDcgKzk0Niw4IEBACiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0RGltbWVkKGJvb2xlYW4gZGltbWVkKSB7Ci0gICAgICAgIHVwZGF0ZVBhZGRpbmcoZGltbWVkKTsKKyAgICAgICAgbURpbW1lZCA9IGRpbW1lZDsKKyAgICAgICAgdXBkYXRlUGFkZGluZygpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG9uUmVzZXQoRXhwYW5kYWJsZVZpZXcgdmlldykgewpAQCAtOTU3LDEwICs5NTYsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgc2V0SGVhZHNVcE1hbmFnZXIoSGVhZHNVcE1hbmFnZXIgaGVhZHNVcE1hbmFnZXIpIHsKLSAgICAgICAgbUhlYWRzVXBNYW5hZ2VyID0gaGVhZHNVcE1hbmFnZXI7Ci0gICAgfQotCiAgICAgY2xhc3MgU3RhY2tTY3JvbGxBbGdvcml0aG1TdGF0ZSB7CiAKICAgICAgICAgLyoqCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvdHVuZXIvQ29sb3JNYXRyaXhGcmFnbWVudC5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3R1bmVyL0NvbG9yTWF0cml4RnJhZ21lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWQxYjA2Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3R1bmVyL0NvbG9yTWF0cml4RnJhZ21lbnQuamF2YQpAQCAtMCwwICsxLDM1NSBAQAorLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS50dW5lcjsKKworaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5OdWxsYWJsZTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5EaWFsb2c7CitpbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nRnJhZ21lbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC52MTQucHJlZmVyZW5jZS5QcmVmZXJlbmNlRnJhZ21lbnQ7CitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnYxNC5wcmVmZXJlbmNlLlN3aXRjaFByZWZlcmVuY2U7CitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnY3LnByZWZlcmVuY2UuRHJvcERvd25QcmVmZXJlbmNlOworaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC52Ny5wcmVmZXJlbmNlLlByZWZlcmVuY2U7CitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnY3LnByZWZlcmVuY2UuUHJlZmVyZW5jZVZpZXdIb2xkZXI7CitpbXBvcnQgYW5kcm9pZC50ZXh0LkVkaXRhYmxlOworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRXYXRjaGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0OworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLnBob25lLlFTVGlsZUhvc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKKworcHVibGljIGNsYXNzIENvbG9yTWF0cml4RnJhZ21lbnQgZXh0ZW5kcyBQcmVmZXJlbmNlRnJhZ21lbnQgaW1wbGVtZW50cyBUdW5lclNlcnZpY2UuVHVuYWJsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkNvbG9yTWF0cml4RnJhZ21lbnQiOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ1VTVE9NX0lOREVYID0gMjsKKworICAgIC8vIE5pZ2h0IG1vZGUgfj0gMzQwMCBLCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgZmxvYXRbXSBOSUdIVF9WQUxVRVMgPSBuZXcgZmxvYXRbXSB7CisgICAgICAgIDEsIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAgMCwgLjc1NGYsIDAsICAgICAwLAorICAgICAgICAwLCAwLCAgICAgLjUxNmYsIDAsCisgICAgICAgIDAsIDAsICAgICAwLCAgICAgMSwKKyAgICB9OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXRbXSBJREVOVElUWV9NQVRSSVggPSBuZXcgZmxvYXRbXXsKKyAgICAgICAgICAgIDEsIDAsIDAsIDAsCisgICAgICAgICAgICAwLCAxLCAwLCAwLAorICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgIDAsIDAsIDAsIDEsCisgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIFJFU0VUX0RFTEFZID0gMTAwMDA7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbUN1c3RvbUVuYWJsZWQ7CisgICAgcHJpdmF0ZSBEcm9wRG93blByZWZlcmVuY2UgbVNlbGVjdFByZWZlcmVuY2U7CisgICAgcHJpdmF0ZSBTdHJpbmcgbUN1cnJlbnRWYWx1ZTsKKyAgICBwcml2YXRlIFN0cmluZyBtQ3VzdG9tVmFsdWVzOworICAgIHByaXZhdGUgU3dpdGNoUHJlZmVyZW5jZSBtRW5hYmxlQ3VzdG9tUHJlZmVyZW5jZTsKKyAgICBwcml2YXRlIE1hdHJpeFByZWZlcmVuY2UgbUN1c3RvbVByZWZlcmVuY2U7CisgICAgcHJpdmF0ZSBTd2l0Y2hQcmVmZXJlbmNlIG1TaG93UXM7CisgICAgcHJpdmF0ZSBTdHJpbmcgbVRpbGVzOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25DcmVhdGUoQE51bGxhYmxlIEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpIHsKKyAgICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKworICAgICAgICBDb250ZXh0IGNvbnRleHQgPSBnZXRDb250ZXh0KCk7CisgICAgICAgIFR1bmVyU2VydmljZS5nZXQoY29udGV4dCkuYWRkVHVuYWJsZSh0aGlzLCBDb2xvck1hdHJpeFRpbGUuQ09MT1JfTUFUUklYX0NVU1RPTV9FTkFCTEVELAorICAgICAgICAgICAgICAgIENvbG9yTWF0cml4VGlsZS5DT0xPUl9NQVRSSVhfQ1VTVE9NX1ZBTFVFUywgUVNUaWxlSG9zdC5USUxFU19TRVRUSU5HLAorICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5BQ0NFU1NJQklMSVRZX0RJU1BMQVlfQ09MT1JfTUFUUklYKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZVByZWZlcmVuY2VzKEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUsIFN0cmluZyByb290S2V5KSB7CisgICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IGdldFByZWZlcmVuY2VNYW5hZ2VyKCkuZ2V0Q29udGV4dCgpOworICAgICAgICBzZXRQcmVmZXJlbmNlU2NyZWVuKGdldFByZWZlcmVuY2VNYW5hZ2VyKCkuY3JlYXRlUHJlZmVyZW5jZVNjcmVlbihjb250ZXh0KSk7CisKKyAgICAgICAgbVNlbGVjdFByZWZlcmVuY2UgPSBuZXcgRHJvcERvd25QcmVmZXJlbmNlKGNvbnRleHQpOworICAgICAgICBtU2VsZWN0UHJlZmVyZW5jZS5zZXRUaXRsZShSLnN0cmluZy5jb2xvcl90cmFuc2Zvcm0pOworICAgICAgICBtU2VsZWN0UHJlZmVyZW5jZS5zZXRTdW1tYXJ5KCIlcyIpOworICAgICAgICBtU2VsZWN0UHJlZmVyZW5jZS5zZXRPblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcihuZXcgUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gb25QcmVmZXJlbmNlQ2hhbmdlKFByZWZlcmVuY2UgcHJlZmVyZW5jZSwgT2JqZWN0IG5ld1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLnB1dFN0cmluZyhjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkFDQ0VTU0lCSUxJVFlfRElTUExBWV9DT0xPUl9NQVRSSVgsIGdldFZhbHVlcygpW2luZGV4XSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBnZXRQcmVmZXJlbmNlU2NyZWVuKCkuYWRkUHJlZmVyZW5jZShtU2VsZWN0UHJlZmVyZW5jZSk7CisKKyAgICAgICAgbVNob3dRcyA9IG5ldyBTd2l0Y2hQcmVmZXJlbmNlKGNvbnRleHQpOworICAgICAgICBtU2hvd1FzLnNldFRpdGxlKFIuc3RyaW5nLmNvbG9yX21hdHJpeF9zaG93X3FzKTsKKyAgICAgICAgbVNob3dRcy5zZXRPblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcihuZXcgUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gb25QcmVmZXJlbmNlQ2hhbmdlKFByZWZlcmVuY2UgcHJlZmVyZW5jZSwgT2JqZWN0IG5ld1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBzaG93VGlsZSA9IChCb29sZWFuKSBuZXdWYWx1ZTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmV3VGlsZXM7CisgICAgICAgICAgICAgICAgaWYgKHNob3dUaWxlKSB7CisgICAgICAgICAgICAgICAgICAgIG5ld1RpbGVzID0gbVRpbGVzICE9IG51bGwgPyBtVGlsZXMgKyAiLCIgKyBDb2xvck1hdHJpeFRpbGUuQ09MT1JfTUFUUklYX1NQRUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJkZWZhdWx0LCIgKyBDb2xvck1hdHJpeFRpbGUuQ09MT1JfTUFUUklYX1NQRUM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGlsZXMgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UaWxlcy5yZXBsYWNlKG1UaWxlcy5jb250YWlucyhDb2xvck1hdHJpeFRpbGUuQ09MT1JfTUFUUklYX1NQRUMrICIsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IENvbG9yTWF0cml4VGlsZS5DT0xPUl9NQVRSSVhfU1BFQyArICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIiwiICsgQ29sb3JNYXRyaXhUaWxlLkNPTE9SX01BVFJJWF9TUEVDLCAiIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5wdXRTdHJpbmcoY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgUVNUaWxlSG9zdC5USUxFU19TRVRUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGlsZXMpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgZ2V0UHJlZmVyZW5jZVNjcmVlbigpLmFkZFByZWZlcmVuY2UobVNob3dRcyk7CisKKyAgICAgICAgbUVuYWJsZUN1c3RvbVByZWZlcmVuY2UgPSBuZXcgU3dpdGNoUHJlZmVyZW5jZShjb250ZXh0KTsKKyAgICAgICAgbUVuYWJsZUN1c3RvbVByZWZlcmVuY2Uuc2V0VGl0bGUoUi5zdHJpbmcuY29sb3JfZW5hYmxlX2N1c3RvbSk7CisgICAgICAgIG1FbmFibGVDdXN0b21QcmVmZXJlbmNlLnNldE9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyKAorICAgICAgICAgICAgICAgIG5ldyBQcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBvblByZWZlcmVuY2VDaGFuZ2UoUHJlZmVyZW5jZSBwcmVmZXJlbmNlLCBPYmplY3QgbmV3VmFsdWUpIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIGVuYWJsZWQgPSAoQm9vbGVhbikgbmV3VmFsdWU7CisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLnB1dEludChjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JNYXRyaXhUaWxlLkNPTE9SX01BVFJJWF9DVVNUT01fRU5BQkxFRCwgZW5hYmxlZCA/IDEgOiAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGdldFByZWZlcmVuY2VTY3JlZW4oKS5hZGRQcmVmZXJlbmNlKG1FbmFibGVDdXN0b21QcmVmZXJlbmNlKTsKKworICAgICAgICBtQ3VzdG9tUHJlZmVyZW5jZSA9IG5ldyBNYXRyaXhQcmVmZXJlbmNlKGNvbnRleHQpOworICAgICAgICBnZXRQcmVmZXJlbmNlU2NyZWVuKCkuYWRkUHJlZmVyZW5jZShtQ3VzdG9tUHJlZmVyZW5jZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25EZXN0cm95KCkgeworICAgICAgICBzdXBlci5vbkRlc3Ryb3koKTsKKyAgICAgICAgVHVuZXJTZXJ2aWNlLmdldChnZXRDb250ZXh0KCkpLnJlbW92ZVR1bmFibGUodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25UdW5pbmdDaGFuZ2VkKFN0cmluZyBrZXksIFN0cmluZyBuZXdWYWx1ZSkgeworICAgICAgICBpZiAoQ29sb3JNYXRyaXhUaWxlLkNPTE9SX01BVFJJWF9DVVNUT01fRU5BQkxFRC5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgbUN1c3RvbUVuYWJsZWQgPSBuZXdWYWx1ZSAhPSBudWxsICYmIEludGVnZXIucGFyc2VJbnQobmV3VmFsdWUpICE9IDA7CisgICAgICAgICAgICBtRW5hYmxlQ3VzdG9tUHJlZmVyZW5jZS5zZXRDaGVja2VkKG1DdXN0b21FbmFibGVkKTsKKyAgICAgICAgICAgIG1DdXN0b21QcmVmZXJlbmNlLnNldEVuYWJsZWQobUN1c3RvbUVuYWJsZWQpOworICAgICAgICAgICAgdXBkYXRlU2VsZWN0T3B0aW9ucygpOworICAgICAgICB9IGVsc2UgaWYgKENvbG9yTWF0cml4VGlsZS5DT0xPUl9NQVRSSVhfQ1VTVE9NX1ZBTFVFUy5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgbUN1c3RvbVZhbHVlcyA9IG5ld1ZhbHVlOworICAgICAgICAgICAgbUN1c3RvbVByZWZlcmVuY2Uuc2V0VmFsdWVzKG1DdXN0b21WYWx1ZXMpOworICAgICAgICAgICAgdXBkYXRlU2VsZWN0T3B0aW9ucygpOworICAgICAgICB9IGVsc2UgaWYgKFFTVGlsZUhvc3QuVElMRVNfU0VUVElORy5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgbVRpbGVzID0gbmV3VmFsdWU7CisgICAgICAgICAgICBib29sZWFuIGhhc1RpbGUgPSBuZXdWYWx1ZSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICYmIG5ld1ZhbHVlLmNvbnRhaW5zKENvbG9yTWF0cml4VGlsZS5DT0xPUl9NQVRSSVhfU1BFQyk7CisgICAgICAgICAgICBtU2hvd1FzLnNldENoZWNrZWQoaGFzVGlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ3VycmVudFZhbHVlID0gbmV3VmFsdWU7CisgICAgICAgICAgICB1cGRhdGVTZWxlY3RPcHRpb25zKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU2VsZWN0T3B0aW9ucygpIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBDVVNUT01fSU5ERVggKyAobUN1c3RvbUVuYWJsZWQgPyAxIDogMCk7CisgICAgICAgIFN0cmluZ1tdIHZhbHVlcyA9IG5ldyBTdHJpbmdbTl07CisgICAgICAgIENoYXJTZXF1ZW5jZVtdIHRvdGFsTmFtZXMgPSBnZXRDb2xvclRpdGxlcyhnZXRDb250ZXh0KCkpOworICAgICAgICBDaGFyU2VxdWVuY2VbXSBuYW1lcyA9IG5ldyBDaGFyU2VxdWVuY2VbTl07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBTdHJpbmcudmFsdWVPZihpKTsKKyAgICAgICAgICAgIG5hbWVzW2ldID0gdG90YWxOYW1lc1tpXTsKKyAgICAgICAgfQorICAgICAgICBtU2VsZWN0UHJlZmVyZW5jZS5zZXRFbnRyaWVzKG5hbWVzKTsKKyAgICAgICAgbVNlbGVjdFByZWZlcmVuY2Uuc2V0RW50cnlWYWx1ZXModmFsdWVzKTsKKyAgICAgICAgU3RyaW5nW10gZW50cmllcyA9IGdldFZhbHVlcygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKE9iamVjdHMuZXF1YWxzKGVudHJpZXNbaV0sIG1DdXJyZW50VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgbVNlbGVjdFByZWZlcmVuY2Uuc2V0VmFsdWVJbmRleChpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbVNlbGVjdFByZWZlcmVuY2Uuc2V0U3VtbWFyeShSLnN0cmluZy5jb2xvcl9tYXRyaXhfdW5rbm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZ1tdIGdldFZhbHVlcygpIHsKKyAgICAgICAgU3RyaW5nW10gcmV0ID0gZ2V0Q29sb3JUcmFuc2Zvcm1zKCk7CisgICAgICAgIC8vIEZpbGwgaW4gY3VzdG9tIGJhc2VkIG9uIHR1bmVyIHNldHRpbmdzLgorICAgICAgICByZXRbQ1VTVE9NX0lOREVYXSA9IG1DdXN0b21WYWx1ZXM7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN0YXJ0UmV2ZXJ0VGltZXIoKSB7CisgICAgICAgIGdldFZpZXcoKS5wb3N0RGVsYXllZChtUmVzZXRDb2xvck1hdHJpeCwgUkVTRVRfREVMQVkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBvbkFwcGx5KCkgeworICAgICAgICBTZXR0aW5ncy5TZWN1cmUucHV0U3RyaW5nKGdldENvbnRleHQoKS5nZXRDb250ZW50UmVzb2x2ZXIoKSwKKyAgICAgICAgICAgICAgICBDb2xvck1hdHJpeFRpbGUuQ09MT1JfTUFUUklYX0NVU1RPTV9WQUxVRVMsIG1DdXJyZW50VmFsdWUpOworICAgICAgICBnZXRWaWV3KCkucmVtb3ZlQ2FsbGJhY2tzKG1SZXNldENvbG9yTWF0cml4KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgb25SZXZlcnQoKSB7CisgICAgICAgIGdldFZpZXcoKS5yZW1vdmVDYWxsYmFja3MobVJlc2V0Q29sb3JNYXRyaXgpOworICAgICAgICBtUmVzZXRDb2xvck1hdHJpeC5ydW4oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldENvbG9yVHJhbnNmb3JtcygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICB0b1N0cmluZyhOSUdIVF9WQUxVRVMpLAorICAgICAgICAgICAgICAgIG51bGwsIC8vIEJsYW5rIHNwb3QgZm9yIGN1c3RvbSB2YWx1ZXMKKyAgICAgICAgICAgICAgICBudWxsLCAvLyBVbmtub3duCisgICAgICAgIH07CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBDaGFyU2VxdWVuY2VbXSBnZXRDb2xvclRpdGxlcyhDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDaGFyU2VxdWVuY2VbXSB7CisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuY29sb3JfbWF0cml4X25vbmUpLAorICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmNvbG9yX21hdHJpeF9uaWdodCksCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuY29sb3JfbWF0cml4X2N1c3RvbSksCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuY29sb3JfbWF0cml4X3Vua25vd24pLAorICAgICAgICB9OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyB0b1N0cmluZyhmbG9hdFtdIHZhbHVlcykgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZXNbaV0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBSdW5uYWJsZSBtUmVzZXRDb2xvck1hdHJpeCA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICgoRGlhbG9nRnJhZ21lbnQpIGdldEZyYWdtZW50TWFuYWdlcigpLmZpbmRGcmFnbWVudEJ5VGFnKCJSZXZlcnRXYXJuaW5nIikpLmRpc21pc3MoKTsKKyAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5wdXRTdHJpbmcoZ2V0Q29udGV4dCgpLmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQUNDRVNTSUJJTElUWV9ESVNQTEFZX0NPTE9SX01BVFJJWCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBjbGFzcyBNYXRyaXhQcmVmZXJlbmNlIGV4dGVuZHMgUHJlZmVyZW5jZSBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyIHsKKyAgICAgICAgcHJpdmF0ZSBmbG9hdFtdIG1WYWx1ZXM7CisKKyAgICAgICAgcHVibGljIE1hdHJpeFByZWZlcmVuY2UoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgICAgIHNldExheW91dFJlc291cmNlKFIubGF5b3V0LnByZWZlcmVuY2VfbWF0cml4KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFZhbHVlcyhTdHJpbmcgY3VzdG9tVmFsdWVzKSB7CisgICAgICAgICAgICBpZiAoY3VzdG9tVmFsdWVzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtVmFsdWVzID0gSURFTlRJVFlfTUFUUklYOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSBzdHJWYWx1ZXMgPSBjdXN0b21WYWx1ZXMuc3BsaXQoIiwiKTsKKyAgICAgICAgICAgICAgICBtVmFsdWVzID0gbmV3IGZsb2F0W3N0clZhbHVlcy5sZW5ndGhdOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtVmFsdWVzW2ldID0gRmxvYXQucGFyc2VGbG9hdChzdHJWYWx1ZXNbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vdGlmeUNoYW5nZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvbkJpbmRWaWV3SG9sZGVyKFByZWZlcmVuY2VWaWV3SG9sZGVyIGhvbGRlcikgeworICAgICAgICAgICAgc3VwZXIub25CaW5kVmlld0hvbGRlcihob2xkZXIpOworICAgICAgICAgICAgVmlld0dyb3VwIHZnID0gKFZpZXdHcm91cCkgaG9sZGVyLml0ZW1WaWV3LmZpbmRWaWV3QnlJZChSLmlkLmVkaXRfZ3JvdXApOworICAgICAgICAgICAgaWYgKG1WYWx1ZXMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBjaGlsZEluZGV4ID0gMDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpbmRleCA9IGk7CisgICAgICAgICAgICAgICAgd2hpbGUgKCEodmcuZ2V0Q2hpbGRBdChjaGlsZEluZGV4KSBpbnN0YW5jZW9mIEVkaXRUZXh0KSkgeworICAgICAgICAgICAgICAgICAgICBjaGlsZEluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmFsIEVkaXRUZXh0IGVkaXRUZXh0ID0gKEVkaXRUZXh0KSB2Zy5nZXRDaGlsZEF0KGNoaWxkSW5kZXgrKyk7CisgICAgICAgICAgICAgICAgZWRpdFRleHQuc2V0VGV4dChTdHJpbmcudmFsdWVPZihtVmFsdWVzW2ldKSk7CisgICAgICAgICAgICAgICAgZWRpdFRleHQuYWRkVGV4dENoYW5nZWRMaXN0ZW5lcihuZXcgVGV4dFdhdGNoZXIoKSB7CisgICAgICAgICAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBhZnRlclRleHRDaGFuZ2VkKEVkaXRhYmxlIHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShzLnRvU3RyaW5nKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVmFsdWVzW2luZGV4XSA9IEZsb2F0LnBhcnNlRmxvYXQocy50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVZhbHVlc1tpbmRleF0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uVGV4dENoYW5nZWQoQ2hhclNlcXVlbmNlIHMsIGludCBzdGFydCwgaW50IGJlZm9yZSwgaW50IGNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgYmVmb3JlVGV4dENoYW5nZWQoQ2hhclNlcXVlbmNlIHMsIGludCBzdGFydCwgaW50IGNvdW50LCBpbnQgYWZ0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKChCdXR0b24pIGhvbGRlci5pdGVtVmlldy5maW5kVmlld0J5SWQoUi5pZC5hcHBseSkpLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLnB1dFN0cmluZyhnZXRDb250ZXh0KCkuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5BQ0NFU1NJQklMSVRZX0RJU1BMQVlfQ09MT1JfTUFUUklYLAorICAgICAgICAgICAgICAgICAgICBDb2xvck1hdHJpeEZyYWdtZW50LnRvU3RyaW5nKG1WYWx1ZXMpKTsKKyAgICAgICAgICAgIFJldmVydFdhcm5pbmcuc2hvdyhDb2xvck1hdHJpeEZyYWdtZW50LnRoaXMpOworICAgICAgICB9CisKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJldmVydFdhcm5pbmcgZXh0ZW5kcyBEaWFsb2dGcmFnbWVudAorICAgICAgICAgICAgaW1wbGVtZW50cyBEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIHsKKworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2hvdyhDb2xvck1hdHJpeEZyYWdtZW50IGZyYWdtZW50KSB7CisgICAgICAgICAgICBSZXZlcnRXYXJuaW5nIHdhcm5pbmcgPSBuZXcgUmV2ZXJ0V2FybmluZygpOworICAgICAgICAgICAgd2FybmluZy5zZXRUYXJnZXRGcmFnbWVudChmcmFnbWVudCwgMCk7CisgICAgICAgICAgICB3YXJuaW5nLnNob3coZnJhZ21lbnQuZ2V0RnJhZ21lbnRNYW5hZ2VyKCksICJSZXZlcnRXYXJuaW5nIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIERpYWxvZyBvbkNyZWF0ZURpYWxvZyhCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgICAgICBBbGVydERpYWxvZyBhbGVydERpYWxvZyA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKGdldENvbnRleHQoKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKFIuc3RyaW5nLmNvbG9yX3JldmVydF90aXRsZSkKKyAgICAgICAgICAgICAgICAgICAgLnNldE1lc3NhZ2UoUi5zdHJpbmcuY29sb3JfcmV2ZXJ0X21lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgIC5zZXRQb3NpdGl2ZUJ1dHRvbihSLnN0cmluZy5vaywgdGhpcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICAgICAgYWxlcnREaWFsb2cuc2V0Q2FuY2VsZWRPblRvdWNoT3V0c2lkZSh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBhbGVydERpYWxvZzsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvbkNhbmNlbChEaWFsb2dJbnRlcmZhY2UgZGlhbG9nKSB7CisgICAgICAgICAgICBzdXBlci5vbkNhbmNlbChkaWFsb2cpOworICAgICAgICAgICAgKChDb2xvck1hdHJpeEZyYWdtZW50KSBnZXRUYXJnZXRGcmFnbWVudCgpKS5vblJldmVydCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soRGlhbG9nSW50ZXJmYWNlIGRpYWxvZywgaW50IHdoaWNoKSB7CisgICAgICAgICAgICAoKENvbG9yTWF0cml4RnJhZ21lbnQpIGdldFRhcmdldEZyYWdtZW50KCkpLm9uQXBwbHkoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS90dW5lci9Db2xvck1hdHJpeFRpbGUuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS90dW5lci9Db2xvck1hdHJpeFRpbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmQyMzUyCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3R1bmVyL0NvbG9yTWF0cml4VGlsZS5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnR1bmVyOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9nZ2luZy5NZXRyaWNzTG9nZ2VyOworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkucXMuUVNUaWxlOworaW1wb3J0IGxpYmNvcmUudXRpbC5PYmplY3RzOworCitwdWJsaWMgY2xhc3MgQ29sb3JNYXRyaXhUaWxlIGV4dGVuZHMgUVNUaWxlPFFTVGlsZS5TdGF0ZT4gaW1wbGVtZW50cyBUdW5lclNlcnZpY2UuVHVuYWJsZSB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT0xPUl9NQVRSSVhfQ1VTVE9NX0VOQUJMRUQgPSAidHVuZXJfY29sb3JfY3VzdG9tX2VuYWJsZWQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTE9SX01BVFJJWF9DVVNUT01fVkFMVUVTID0gInR1bmVyX2NvbG9yX2N1c3RvbV92YWx1ZXMiOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09MT1JfTUFUUklYX1NQRUMgPSAiY29sb3JzIjsKKworICAgIHByaXZhdGUgaW50IG1JbmRleDsKKyAgICBwcml2YXRlIFN0cmluZyBtQ3VycmVudFZhbHVlOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1DdXN0b21FbmFibGVkOworICAgIHByaXZhdGUgU3RyaW5nW10gbVZhbHVlczsKKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZVtdIG1WYWx1ZVRpdGxlczsKKworICAgIHB1YmxpYyBDb2xvck1hdHJpeFRpbGUoSG9zdCBob3N0KSB7CisgICAgICAgIHN1cGVyKGhvc3QpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldExpc3RlbmluZyhib29sZWFuIGxpc3RlbmluZykgeworICAgICAgICBpZiAobGlzdGVuaW5nKSB7CisgICAgICAgICAgICBtVmFsdWVzID0gQ29sb3JNYXRyaXhGcmFnbWVudC5nZXRDb2xvclRyYW5zZm9ybXMoKTsKKyAgICAgICAgICAgIG1WYWx1ZVRpdGxlcyA9IENvbG9yTWF0cml4RnJhZ21lbnQuZ2V0Q29sb3JUaXRsZXMobUNvbnRleHQpOworICAgICAgICAgICAgVHVuZXJTZXJ2aWNlLmdldChtQ29udGV4dCkuYWRkVHVuYWJsZSh0aGlzLCBDT0xPUl9NQVRSSVhfQ1VTVE9NX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgIENPTE9SX01BVFJJWF9DVVNUT01fVkFMVUVTLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQUNDRVNTSUJJTElUWV9ESVNQTEFZX0NPTE9SX01BVFJJWCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUdW5lclNlcnZpY2UuZ2V0KG1Db250ZXh0KS5yZW1vdmVUdW5hYmxlKHRoaXMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFN0YXRlIG5ld1RpbGVTdGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTdGF0ZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUNsaWNrKCkgeworICAgICAgICBtSW5kZXgrKzsKKyAgICAgICAgaWYgKCFtQ3VzdG9tRW5hYmxlZCAmJiAobUluZGV4ID09IENvbG9yTWF0cml4RnJhZ21lbnQuQ1VTVE9NX0lOREVYKSkgeworICAgICAgICAgICAgbUluZGV4Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1JbmRleCA9PSBtVmFsdWVzLmxlbmd0aCAtIDEpIHsKKyAgICAgICAgICAgIG1JbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgU2V0dGluZ3MuU2VjdXJlLnB1dFN0cmluZ0ZvclVzZXIobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkFDQ0VTU0lCSUxJVFlfRElTUExBWV9DT0xPUl9NQVRSSVgsIG1WYWx1ZXNbbUluZGV4XSwKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKSk7CisgICAgICAgIHJlZnJlc2hTdGF0ZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uVHVuaW5nQ2hhbmdlZChTdHJpbmcga2V5LCBTdHJpbmcgbmV3VmFsdWUpIHsKKyAgICAgICAgaWYgKENPTE9SX01BVFJJWF9DVVNUT01fRU5BQkxFRC5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgbUN1c3RvbUVuYWJsZWQgPSBuZXdWYWx1ZSAhPSBudWxsICYmIEludGVnZXIucGFyc2VJbnQobmV3VmFsdWUpICE9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoQ09MT1JfTUFUUklYX0NVU1RPTV9WQUxVRVMuZXF1YWxzKGtleSkpIHsKKyAgICAgICAgICAgIG1WYWx1ZXNbQ29sb3JNYXRyaXhGcmFnbWVudC5DVVNUT01fSU5ERVhdID0gbmV3VmFsdWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ3VycmVudFZhbHVlID0gbmV3VmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGFzdCB2YWx1ZSBpcyB1bmtub3duLCBkZWZhdWx0IHRvIHRoYXQuCisgICAgICAgIG1JbmRleCA9IG1WYWx1ZXMubGVuZ3RoIC0gMTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtVmFsdWVzLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAgICAgICAgaWYgKE9iamVjdHMuZXF1YWwobUN1cnJlbnRWYWx1ZSwgbVZhbHVlc1tpXSkpIHsKKyAgICAgICAgICAgICAgICBtSW5kZXggPSBpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJlZnJlc2hTdGF0ZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVVwZGF0ZVN0YXRlKFN0YXRlIHN0YXRlLCBPYmplY3QgYXJnKSB7CisgICAgICAgIHN0YXRlLmljb24gPSBSZXNvdXJjZUljb24uZ2V0KFIuZHJhd2FibGUuaWNfY29sb3JpemUpOworICAgICAgICBzdGF0ZS5sYWJlbCA9IG1WYWx1ZVRpdGxlc1ttSW5kZXhdOworICAgICAgICBzdGF0ZS5jb250ZW50RGVzY3JpcHRpb24gPSBtVmFsdWVUaXRsZXNbbUluZGV4XTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGdldE1ldHJpY3NDYXRlZ29yeSgpIHsKKyAgICAgICAgcmV0dXJuIE1ldHJpY3NMb2dnZXIuUVNfQ09MT1JfTUFUUklYOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTW91bnRTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01vdW50U2VydmljZS5qYXZhCmluZGV4IDE4NGY4OTAuLjZjY2NmMzggMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTW91bnRTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Nb3VudFNlcnZpY2UuamF2YQpAQCAtMjQsNiArMjQsNyBAQAogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlhtbFV0aWxzLndyaXRlSW50QXR0cmlidXRlOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlhtbFV0aWxzLndyaXRlTG9uZ0F0dHJpYnV0ZTsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5YbWxVdGlscy53cml0ZVN0cmluZ0F0dHJpYnV0ZTsKKwogaW1wb3J0IHN0YXRpYyBvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyLkVORF9ET0NVTUVOVDsKIGltcG9ydCBzdGF0aWMgb3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlci5TVEFSVF9UQUc7CiAKQEAgLTg5LDkgKzkwLDYgQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuVGltZVV0aWxzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5YbWw7CiAKLWltcG9ydCBsaWJjb3JlLmlvLklvVXRpbHM7Ci1pbXBvcnQgbGliY29yZS51dGlsLkVtcHR5QXJyYXk7Ci0KIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hbm5vdGF0aW9ucy5HdWFyZGVkQnk7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLklNZWRpYUNvbnRhaW5lclNlcnZpY2U7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuU29tZUFyZ3M7CkBAIC0xMDYsNiArMTA0LDkgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuTmF0aXZlRGFlbW9uQ29ubmVjdG9yLlNlbnNpdGl2ZUFyZzsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIucG0uUGFja2FnZU1hbmFnZXJTZXJ2aWNlOwogCitpbXBvcnQgbGliY29yZS5pby5Jb1V0aWxzOworaW1wb3J0IGxpYmNvcmUudXRpbC5FbXB0eUFycmF5OworCiBpbXBvcnQgb3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlcjsKIGltcG9ydCBvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uOwogaW1wb3J0IG9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXI7CkBAIC04MDcsOCArODA4LDggQEAKICAgICAgICAgICAgICAgICAvLyBTeXN0ZW0gdXNlciBkb2VzIG5vdCBoYXZlIG1lZGlhIHByb3ZpZGVyLCBzbyBza2lwLgogICAgICAgICAgICAgICAgIGlmICh1c2VyLmlzU3lzdGVtT25seSgpKSBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgIGZpbmFsIFByb3ZpZGVySW5mbyBwcm92aWRlciA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtUG1zLnJlc29sdmVDb250ZW50UHJvdmlkZXIoTWVkaWFTdG9yZS5BVVRIT1JJVFksIDAsIHVzZXIuaWQpOworICAgICAgICAgICAgICAgIGZpbmFsIFByb3ZpZGVySW5mbyBwcm92aWRlciA9IG1QbXMucmVzb2x2ZUNvbnRlbnRQcm92aWRlcihNZWRpYVN0b3JlLkFVVEhPUklUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0VOQ1JZUFRJT05fQVdBUkVfQU5EX1VOQVdBUkUsIHVzZXIuaWQpOwogICAgICAgICAgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGZpbmFsIElBY3Rpdml0eU1hbmFnZXIgYW0gPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICB0cnkgewpAQCAtMjgxMiw5ICsyODEzLDMzIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFBhcmNlbEZpbGVEZXNjcmlwdG9yIG1vdW50QXBwRnVzZShTdHJpbmcgbmFtZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIFRPRE86IEludm9rZSB2b2xkIHRvIG1vdW50IGFwcCBmdXNlLgotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICBwdWJsaWMgUGFyY2VsRmlsZURlc2NyaXB0b3IgbW91bnRBcHBGdXNlKGZpbmFsIFN0cmluZyBuYW1lKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICAgICAgZmluYWwgTmF0aXZlRGFlbW9uRXZlbnQgZXZlbnQgPQorICAgICAgICAgICAgICAgICAgICBtQ29ubmVjdG9yLmV4ZWN1dGUoImFwcGZ1c2UiLCAibW91bnQiLCB1aWQsIG5hbWUpOworICAgICAgICAgICAgaWYgKGV2ZW50LmdldEZpbGVEZXNjcmlwdG9ycygpID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVtb3RlRXhjZXB0aW9uKCJBcHBGdXNlIEZEIGZyb20gdm9sZCBpcyBudWxsLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFBhcmNlbEZpbGVEZXNjcmlwdG9yLmZyb21GZCgKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuZ2V0RmlsZURlc2NyaXB0b3JzKClbMF0sCisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBuZXcgUGFyY2VsRmlsZURlc2NyaXB0b3IuT25DbG9zZUxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNsb3NlKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBOYXRpdmVEYWVtb25FdmVudCBldmVudCA9IG1Db25uZWN0b3IuZXhlY3V0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwZnVzZSIsICJ1bm1vdW50IiwgdWlkLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gdW5tb3VudEV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJGYWlsZWQgdG8gdW5tb3VudCBhcHBmdXNlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBlLnJldGhyb3dBc1BhcmNlbGFibGVFeGNlcHRpb24oKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTM1OTIsMTIgKzM2MTcsMTggQEAKICAgICAgICAgfQogCiAgICAgICAgIHB3LnByaW50bG4oKTsKLSAgICAgICAgcHcucHJpbnRsbigibUNvbm5lY3Rpb246Iik7CisgICAgICAgIHB3LnByaW50bG4oIm1Db25uZWN0b3I6Iik7CiAgICAgICAgIHB3LmluY3JlYXNlSW5kZW50KCk7CiAgICAgICAgIG1Db25uZWN0b3IuZHVtcChmZCwgcHcsIGFyZ3MpOwogICAgICAgICBwdy5kZWNyZWFzZUluZGVudCgpOwogCiAgICAgICAgIHB3LnByaW50bG4oKTsKKyAgICAgICAgcHcucHJpbnRsbigibUNyeXB0Q29ubmVjdG9yOiIpOworICAgICAgICBwdy5pbmNyZWFzZUluZGVudCgpOworICAgICAgICBtQ3J5cHRDb25uZWN0b3IuZHVtcChmZCwgcHcsIGFyZ3MpOworICAgICAgICBwdy5kZWNyZWFzZUluZGVudCgpOworCisgICAgICAgIHB3LnByaW50bG4oKTsKICAgICAgICAgcHcucHJpbnQoIkxhc3QgbWFpbnRlbmFuY2U6ICIpOwogICAgICAgICBwdy5wcmludGxuKFRpbWVVdGlscy5mb3JtYXRGb3JMb2dnaW5nKG1MYXN0TWFpbnRlbmFuY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FjY291bnRzL0FjY291bnRNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hY2NvdW50cy9BY2NvdW50TWFuYWdlclNlcnZpY2UuamF2YQppbmRleCBjYTUyMTJhLi5hYTk5NDQyIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FjY291bnRzL0FjY291bnRNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYWNjb3VudHMvQWNjb3VudE1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTM3LDcgKzM3LDkgQEAKIGltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CiBpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50OworaW1wb3J0IGFuZHJvaWQuYXBwLmFkbWluLkRldmljZUFkbWluSW5mbzsKIGltcG9ydCBhbmRyb2lkLmFwcC5hZG1pbi5EZXZpY2VQb2xpY3lNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLmFkbWluLkRldmljZVBvbGljeU1hbmFnZXJJbnRlcm5hbDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXM7CkBAIC04Miw2ICs4NCw3IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5BcnJheVV0aWxzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuSW5kZW50aW5nUHJpbnRXcml0ZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLkZnVGhyZWFkOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5Mb2NhbFNlcnZpY2VzOwogaW1wb3J0IGNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0Lkxpc3RzOwogaW1wb3J0IGNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0LlNldHM7CiAKQEAgLTgzMCw3ICs4MzMsOCBAQAogICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKG1zZyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50cyh1c2VySWQpIHx8ICFjYW5Vc2VyTW9kaWZ5QWNjb3VudHNGb3JUeXBlKHVzZXJJZCwgYWNjb3VudC50eXBlKSkgeworICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50cyh1c2VySWQsIGNhbGxpbmdVaWQpIHx8CisgICAgICAgICAgICAgICAgIWNhblVzZXJNb2RpZnlBY2NvdW50c0ZvclR5cGUodXNlcklkLCBhY2NvdW50LnR5cGUsIGNhbGxpbmdVaWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMTI1OSw3ICsxMjYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC50eXBlKTsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihtc2cpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzKHVzZXJJZCkpIHsKKyAgICAgICAgaWYgKCFjYW5Vc2VyTW9kaWZ5QWNjb3VudHModXNlcklkLCBjYWxsaW5nVWlkKSkgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICByZXNwb25zZS5vbkVycm9yKEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfVVNFUl9SRVNUUklDVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgIlVzZXIgY2Fubm90IG1vZGlmeSBhY2NvdW50cyIpOwpAQCAtMTI2Nyw3ICsxMjcxLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50c0ZvclR5cGUodXNlcklkLCBhY2NvdW50LnR5cGUpKSB7CisgICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzRm9yVHlwZSh1c2VySWQsIGFjY291bnQudHlwZSwgY2FsbGluZ1VpZCkpIHsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uc2Uub25FcnJvcihBY2NvdW50TWFuYWdlci5FUlJPUl9DT0RFX01BTkFHRU1FTlRfRElTQUJMRURfRk9SX0FDQ09VTlRfVFlQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICJVc2VyIGNhbm5vdCBtb2RpZnkgYWNjb3VudHMgb2YgdGhpcyB0eXBlIChwb2xpY3kpLiIpOwpAQCAtMTMyMSw5ICsxMzI1LDYgQEAKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihtc2cpOwogICAgICAgICB9CiAgICAgICAgIFVzZXJBY2NvdW50cyBhY2NvdW50cyA9IGdldFVzZXJBY2NvdW50c0ZvckNhbGxlcigpOwotICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50cyh1c2VySWQpIHx8ICFjYW5Vc2VyTW9kaWZ5QWNjb3VudHNGb3JUeXBlKHVzZXJJZCwgYWNjb3VudC50eXBlKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIGxvZ1JlY29yZChhY2NvdW50cywgRGVidWdEYkhlbHBlci5BQ1RJT05fQ0FMTEVEX0FDQ09VTlRfUkVNT1ZFLCBUQUJMRV9BQ0NPVU5UUyk7CiAgICAgICAgIGxvbmcgaWRlbnRpdHlUb2tlbiA9IGNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgIHRyeSB7CkBAIC0yMTQ2LDggKzIxNDcsOSBAQAogICAgICAgICBpZiAoYWNjb3VudFR5cGUgPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYWNjb3VudFR5cGUgaXMgbnVsbCIpOwogCiAgICAgICAgIC8vIElzIHVzZXIgZGlzYWxsb3dlZCBmcm9tIG1vZGlmeWluZyBhY2NvdW50cz8KLSAgICAgICAgaW50IHVzZXJJZCA9IEJpbmRlci5nZXRDYWxsaW5nVXNlckhhbmRsZSgpLmdldElkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKCFjYW5Vc2VyTW9kaWZ5QWNjb3VudHModXNlcklkKSkgeworICAgICAgICBmaW5hbCBpbnQgdWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKKyAgICAgICAgZmluYWwgaW50IHVzZXJJZCA9IFVzZXJIYW5kbGUuZ2V0VXNlcklkKHVpZCk7CisgICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzKHVzZXJJZCwgdWlkKSkgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICByZXNwb25zZS5vbkVycm9yKEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfVVNFUl9SRVNUUklDVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgIlVzZXIgaXMgbm90IGFsbG93ZWQgdG8gYWRkIGFuIGFjY291bnQhIik7CkBAIC0yMTU2LDcgKzIxNTgsNyBAQAogICAgICAgICAgICAgc2hvd0NhbnRBZGRBY2NvdW50KEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfVVNFUl9SRVNUUklDVEVELCB1c2VySWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzRm9yVHlwZSh1c2VySWQsIGFjY291bnRUeXBlKSkgeworICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50c0ZvclR5cGUodXNlcklkLCBhY2NvdW50VHlwZSwgdWlkKSkgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICByZXNwb25zZS5vbkVycm9yKEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfTUFOQUdFTUVOVF9ESVNBQkxFRF9GT1JfQUNDT1VOVF9UWVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgIlVzZXIgY2Fubm90IG1vZGlmeSBhY2NvdW50cyBvZiB0aGlzIHR5cGUgKHBvbGljeSkuIik7CkBAIC0yMTY4LDcgKzIxNzAsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgZmluYWwgaW50IHBpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7Ci0gICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOwogICAgICAgICBmaW5hbCBCdW5kbGUgb3B0aW9ucyA9IChvcHRpb25zSW4gPT0gbnVsbCkgPyBuZXcgQnVuZGxlKCkgOiBvcHRpb25zSW47CiAgICAgICAgIG9wdGlvbnMucHV0SW50KEFjY291bnRNYW5hZ2VyLktFWV9DQUxMRVJfVUlELCB1aWQpOwogICAgICAgICBvcHRpb25zLnB1dEludChBY2NvdW50TWFuYWdlci5LRVlfQ0FMTEVSX1BJRCwgcGlkKTsKQEAgLTIyMzAsNyArMjIzMSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBJcyB1c2VyIGRpc2FsbG93ZWQgZnJvbSBtb2RpZnlpbmcgYWNjb3VudHM/Ci0gICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzKHVzZXJJZCkpIHsKKyAgICAgICAgaWYgKCFjYW5Vc2VyTW9kaWZ5QWNjb3VudHModXNlcklkLCBjYWxsaW5nVWlkKSkgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICByZXNwb25zZS5vbkVycm9yKEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfVVNFUl9SRVNUUklDVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgIlVzZXIgaXMgbm90IGFsbG93ZWQgdG8gYWRkIGFuIGFjY291bnQhIik7CkBAIC0yMjM5LDcgKzIyNDAsNyBAQAogICAgICAgICAgICAgc2hvd0NhbnRBZGRBY2NvdW50KEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfVVNFUl9SRVNUUklDVEVELCB1c2VySWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzRm9yVHlwZSh1c2VySWQsIGFjY291bnRUeXBlKSkgeworICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50c0ZvclR5cGUodXNlcklkLCBhY2NvdW50VHlwZSwgY2FsbGluZ1VpZCkpIHsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uc2Uub25FcnJvcihBY2NvdW50TWFuYWdlci5FUlJPUl9DT0RFX01BTkFHRU1FTlRfRElTQUJMRURfRk9SX0FDQ09VTlRfVFlQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICJVc2VyIGNhbm5vdCBtb2RpZnkgYWNjb3VudHMgb2YgdGhpcyB0eXBlIChwb2xpY3kpLiIpOwpAQCAtMjMxMCw4ICsyMzExLDkgQEAKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY291bnRUeXBlIGlzIG51bGwiKTsKICAgICAgICAgfQogCi0gICAgICAgIGludCB1c2VySWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VzZXJIYW5kbGUoKS5nZXRJZGVudGlmaWVyKCk7Ci0gICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzKHVzZXJJZCkpIHsKKyAgICAgICAgZmluYWwgaW50IHVpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7CisgICAgICAgIGZpbmFsIGludCB1c2VySWQgPSBVc2VySGFuZGxlLmdldFVzZXJJZCh1aWQpOworICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50cyh1c2VySWQsIHVpZCkpIHsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uc2Uub25FcnJvcihBY2NvdW50TWFuYWdlci5FUlJPUl9DT0RFX1VTRVJfUkVTVFJJQ1RFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICJVc2VyIGlzIG5vdCBhbGxvd2VkIHRvIGFkZCBhbiBhY2NvdW50ISIpOwpAQCAtMjMyMCw3ICsyMzIyLDcgQEAKICAgICAgICAgICAgIHNob3dDYW50QWRkQWNjb3VudChBY2NvdW50TWFuYWdlci5FUlJPUl9DT0RFX1VTRVJfUkVTVFJJQ1RFRCwgdXNlcklkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50c0ZvclR5cGUodXNlcklkLCBhY2NvdW50VHlwZSkpIHsKKyAgICAgICAgaWYgKCFjYW5Vc2VyTW9kaWZ5QWNjb3VudHNGb3JUeXBlKHVzZXJJZCwgYWNjb3VudFR5cGUsIHVpZCkpIHsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uc2Uub25FcnJvcihBY2NvdW50TWFuYWdlci5FUlJPUl9DT0RFX01BTkFHRU1FTlRfRElTQUJMRURfRk9SX0FDQ09VTlRfVFlQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICJVc2VyIGNhbm5vdCBtb2RpZnkgYWNjb3VudHMgb2YgdGhpcyB0eXBlIChwb2xpY3kpLiIpOwpAQCAtMjMzMiw3ICsyMzM0LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIGZpbmFsIGludCBwaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOwotICAgICAgICBmaW5hbCBpbnQgdWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKICAgICAgICAgZmluYWwgQnVuZGxlIG9wdGlvbnMgPSAob3B0aW9uc0luID09IG51bGwpID8gbmV3IEJ1bmRsZSgpIDogb3B0aW9uc0luOwogICAgICAgICBvcHRpb25zLnB1dEludChBY2NvdW50TWFuYWdlci5LRVlfQ0FMTEVSX1VJRCwgdWlkKTsKICAgICAgICAgb3B0aW9ucy5wdXRJbnQoQWNjb3VudE1hbmFnZXIuS0VZX0NBTExFUl9QSUQsIHBpZCk7CkBAIC0yNDk3LDggKzI0OTgsOSBAQAogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigic2Vzc2lvbkJ1bmRsZSBpcyBlbXB0eSIpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IHVzZXJJZCA9IEJpbmRlci5nZXRDYWxsaW5nVXNlckhhbmRsZSgpLmdldElkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKCFjYW5Vc2VyTW9kaWZ5QWNjb3VudHModXNlcklkKSkgeworICAgICAgICBmaW5hbCBpbnQgdWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKKyAgICAgICAgZmluYWwgaW50IHVzZXJJZCA9IFVzZXJIYW5kbGUuZ2V0VXNlcklkKHVpZCk7CisgICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzKHVzZXJJZCwgdWlkKSkgewogICAgICAgICAgICAgc2VuZEVycm9yUmVzcG9uc2UocmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAgIEFjY291bnRNYW5hZ2VyLkVSUk9SX0NPREVfVVNFUl9SRVNUUklDVEVELAogICAgICAgICAgICAgICAgICAgICAiVXNlciBpcyBub3QgYWxsb3dlZCB0byBhZGQgYW4gYWNjb3VudCEiKTsKQEAgLTI1MDcsNyArMjUwOSw2IEBACiAgICAgICAgIH0KIAogICAgICAgICBmaW5hbCBpbnQgcGlkID0gQmluZGVyLmdldENhbGxpbmdQaWQoKTsKLSAgICAgICAgZmluYWwgaW50IHVpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7CiAgICAgICAgIGZpbmFsIEJ1bmRsZSBkZWNyeXB0ZWRCdW5kbGU7CiAgICAgICAgIGZpbmFsIFN0cmluZyBhY2NvdW50VHlwZTsKICAgICAgICAgLy8gRmlyc3QgZGVjcnlwdCBzZXNzaW9uIGJ1bmRsZSB0byBnZXQgYWNjb3VudCB0eXBlIGZvciBjaGVja2luZyBwZXJtaXNzaW9uLgpAQCAtMjU1NCw3ICsyNTU1LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghY2FuVXNlck1vZGlmeUFjY291bnRzRm9yVHlwZSh1c2VySWQsIGFjY291bnRUeXBlKSkgeworICAgICAgICBpZiAoIWNhblVzZXJNb2RpZnlBY2NvdW50c0ZvclR5cGUodXNlcklkLCBhY2NvdW50VHlwZSwgdWlkKSkgewogICAgICAgICAgICAgc2VuZEVycm9yUmVzcG9uc2UoCiAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICBBY2NvdW50TWFuYWdlci5FUlJPUl9DT0RFX01BTkFHRU1FTlRfRElTQUJMRURfRk9SX0FDQ09VTlRfVFlQRSwKQEAgLTQzMTksNyArNDMyMCwxMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBib29sZWFuIGNhblVzZXJNb2RpZnlBY2NvdW50cyhpbnQgdXNlcklkKSB7CisgICAgcHJpdmF0ZSBib29sZWFuIGNhblVzZXJNb2RpZnlBY2NvdW50cyhpbnQgdXNlcklkLCBpbnQgY2FsbGluZ1VpZCkgeworICAgICAgICAvLyB0aGUgbWFuYWdpbmcgYXBwIGNhbiBhbHdheXMgbW9kaWZ5IGFjY291bnRzCisgICAgICAgIGlmIChpc1Byb2ZpbGVPd25lcihjYWxsaW5nVWlkKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKGdldFVzZXJNYW5hZ2VyKCkuZ2V0VXNlclJlc3RyaWN0aW9ucyhuZXcgVXNlckhhbmRsZSh1c2VySWQpKQogICAgICAgICAgICAgICAgIC5nZXRCb29sZWFuKFVzZXJNYW5hZ2VyLkRJU0FMTE9XX01PRElGWV9BQ0NPVU5UUykpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzMjcsNyArNDMzMiwxMSBAQAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBwcml2YXRlIGJvb2xlYW4gY2FuVXNlck1vZGlmeUFjY291bnRzRm9yVHlwZShpbnQgdXNlcklkLCBTdHJpbmcgYWNjb3VudFR5cGUpIHsKKyAgICBwcml2YXRlIGJvb2xlYW4gY2FuVXNlck1vZGlmeUFjY291bnRzRm9yVHlwZShpbnQgdXNlcklkLCBTdHJpbmcgYWNjb3VudFR5cGUsIGludCBjYWxsaW5nVWlkKSB7CisgICAgICAgIC8vIHRoZSBtYW5hZ2luZyBhcHAgY2FuIGFsd2F5cyBtb2RpZnkgYWNjb3VudHMKKyAgICAgICAgaWYgKGlzUHJvZmlsZU93bmVyKGNhbGxpbmdVaWQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBEZXZpY2VQb2xpY3lNYW5hZ2VyIGRwbSA9IChEZXZpY2VQb2xpY3lNYW5hZ2VyKSBtQ29udGV4dAogICAgICAgICAgICAgICAgIC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuREVWSUNFX1BPTElDWV9TRVJWSUNFKTsKICAgICAgICAgU3RyaW5nW10gdHlwZXNBcnJheSA9IGRwbS5nZXRBY2NvdW50VHlwZXNXaXRoTWFuYWdlbWVudERpc2FibGVkQXNVc2VyKHVzZXJJZCk7CkBAIC00MzQyLDYgKzQzNTEsMTMgQEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgcHJpdmF0ZSBib29sZWFuIGlzUHJvZmlsZU93bmVyKGludCB1aWQpIHsKKyAgICAgICAgZmluYWwgRGV2aWNlUG9saWN5TWFuYWdlckludGVybmFsIGRwbWkgPQorICAgICAgICAgICAgICAgIExvY2FsU2VydmljZXMuZ2V0U2VydmljZShEZXZpY2VQb2xpY3lNYW5hZ2VySW50ZXJuYWwuY2xhc3MpOworICAgICAgICByZXR1cm4gKGRwbWkgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAmJiBkcG1pLmlzQWN0aXZlQWRtaW5XaXRoUG9saWN5KHVpZCwgRGV2aWNlQWRtaW5JbmZvLlVTRVNfUE9MSUNZX1BST0ZJTEVfT1dORVIpOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUFwcFBlcm1pc3Npb24oQWNjb3VudCBhY2NvdW50LCBTdHJpbmcgYXV0aFRva2VuVHlwZSwgaW50IHVpZCwgYm9vbGVhbiB2YWx1ZSkKICAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5TWFuYWdlclNlcnZpY2UuamF2YQppbmRleCBlMWM4MjU2Li4zZThkYzRlIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5TWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5TWFuYWdlclNlcnZpY2UuamF2YQpAQCAtNTMsNiArNTMsNyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5maXJld2FsbC5JbnRlbnRGaXJld2FsbDsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIucG0uSW5zdGFsbGVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXNiYXIuU3RhdHVzQmFyTWFuYWdlckludGVybmFsOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci52ci5Wck1hbmFnZXJJbnRlcm5hbDsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIud20uQXBwVHJhbnNpdGlvbjsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIud20uV2luZG93TWFuYWdlclNlcnZpY2U7CiAKQEAgLTMyMyw2ICszMjQsNyBAQAogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuUE9TVEZJWF9WSVNJQkxFX0JFSElORDsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLlRBR19BTTsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLlRBR19XSVRIX0NMQVNTX05BTUU7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5BY3Rpdml0eUNvbnRhaW5lci5GT1JDRV9ORVdfVEFTS19GTEFHUzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5U3RhY2tTdXBlcnZpc29yLkZPUkNFX0ZPQ1VTOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlTdGFja1N1cGVydmlzb3IuT05fVE9QOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlTdGFja1N1cGVydmlzb3IuUFJFU0VSVkVfV0lORE9XUzsKQEAgLTUxMCw2ICs1MTIsOCBAQAogICAgIC8qKiBSdW4gYWxsIEFjdGl2aXR5U3RhY2tzIHRocm91Z2ggdGhpcyAqLwogICAgIEFjdGl2aXR5U3RhY2tTdXBlcnZpc29yIG1TdGFja1N1cGVydmlzb3I7CiAKKyAgICBBY3Rpdml0eVN0YXJ0ZXIgbUFjdGl2aXR5U3RhcnRlcjsKKwogICAgIC8qKiBUYXNrIHN0YWNrIGNoYW5nZSBsaXN0ZW5lcnMuICovCiAgICAgcHJpdmF0ZSBSZW1vdGVDYWxsYmFja0xpc3Q8SVRhc2tTdGFja0xpc3RlbmVyPiBtVGFza1N0YWNrTGlzdGVuZXJzID0KICAgICAgICAgICAgIG5ldyBSZW1vdGVDYWxsYmFja0xpc3Q8SVRhc2tTdGFja0xpc3RlbmVyPigpOwpAQCAtMTQ0MCw2ICsxNDQ0LDcgQEAKICAgICBzdGF0aWMgZmluYWwgaW50IElETEVfVUlEU19NU0cgPSA2MDsKICAgICBzdGF0aWMgZmluYWwgaW50IFNZU1RFTV9VU0VSX1VOTE9DS19NU0cgPSA2MTsKICAgICBzdGF0aWMgZmluYWwgaW50IExPR19TVEFDS19TVEFURSA9IDYyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgVlJfTU9ERV9DSEFOR0VfTVNHID0gNjM7CiAKICAgICBzdGF0aWMgZmluYWwgaW50IEZJUlNUX0FDVElWSVRZX1NUQUNLX01TRyA9IDEwMDsKICAgICBzdGF0aWMgZmluYWwgaW50IEZJUlNUX0JST0FEQ0FTVF9RVUVVRV9NU0cgPSAyMDA7CkBAIC0xNzg2LDcgKzE3OTEsNyBAQAogICAgICAgICAgICAgfSBicmVhazsKICAgICAgICAgICAgIGNhc2UgRE9fUEVORElOR19BQ1RJVklUWV9MQVVOQ0hFU19NU0c6IHsKICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UudGhpcykgewotICAgICAgICAgICAgICAgICAgICBtU3RhY2tTdXBlcnZpc29yLmRvUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXNMb2NrZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVN0YXJ0ZXIuZG9QZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZCh0cnVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBLSUxMX0FQUExJQ0FUSU9OX01TRzogewpAQCAtMjE1NCw2ICsyMTU5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIG1TdGFja1N1cGVydmlzb3IubG9nU3RhY2tTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZSX01PREVfQ0hBTkdFX01TRzogeworICAgICAgICAgICAgICAgIFZyTWFuYWdlckludGVybmFsIHZyU2VydmljZSA9IExvY2FsU2VydmljZXMuZ2V0U2VydmljZShWck1hbmFnZXJJbnRlcm5hbC5jbGFzcyk7CisgICAgICAgICAgICAgICAgdnJTZXJ2aWNlLnNldFZyTW9kZShtc2cuYXJnMSAhPSAwKTsKKyAgICAgICAgICAgIH0gYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9OwpAQCAtMjI5MCw2ICsyMjk5LDcgQEAKICAgICBwdWJsaWMgdm9pZCBzZXRXaW5kb3dNYW5hZ2VyKFdpbmRvd01hbmFnZXJTZXJ2aWNlIHdtKSB7CiAgICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gd207CiAgICAgICAgIG1TdGFja1N1cGVydmlzb3Iuc2V0V2luZG93TWFuYWdlcih3bSk7CisgICAgICAgIG1BY3Rpdml0eVN0YXJ0ZXIuc2V0V2luZG93TWFuYWdlcih3bSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0VXNhZ2VTdGF0c01hbmFnZXIoVXNhZ2VTdGF0c01hbmFnZXJJbnRlcm5hbCB1c2FnZVN0YXRzTWFuYWdlcikgewpAQCAtMjQ3Nyw2ICsyNDg3LDcgQEAKICAgICAgICAgbUludGVudEZpcmV3YWxsID0gbmV3IEludGVudEZpcmV3YWxsKG5ldyBJbnRlbnRGaXJld2FsbEludGVyZmFjZSgpLCBtSGFuZGxlcik7CiAgICAgICAgIG1SZWNlbnRUYXNrcyA9IG5ldyBSZWNlbnRUYXNrcyh0aGlzKTsKICAgICAgICAgbVN0YWNrU3VwZXJ2aXNvciA9IG5ldyBBY3Rpdml0eVN0YWNrU3VwZXJ2aXNvcih0aGlzLCBtUmVjZW50VGFza3MpOworICAgICAgICBtQWN0aXZpdHlTdGFydGVyID0gbmV3IEFjdGl2aXR5U3RhcnRlcih0aGlzLCBtU3RhY2tTdXBlcnZpc29yKTsKICAgICAgICAgbVRhc2tQZXJzaXN0ZXIgPSBuZXcgVGFza1BlcnNpc3RlcihzeXN0ZW1EaXIsIG1TdGFja1N1cGVydmlzb3IsIG1SZWNlbnRUYXNrcyk7CiAKICAgICAgICAgbVByb2Nlc3NDcHVUaHJlYWQgPSBuZXcgVGhyZWFkKCJDcHVUcmFja2VyIikgewpAQCAtMjc3Niw2ICsyNzg3LDcgQEAKICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEZvY3VzZWRBcHAoci5hcHBUb2tlbiwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICAgICAgYXBwbHlVcGRhdGVMb2NrU3RhdGVMb2NrZWQocik7CisgICAgICAgIGFwcGx5VXBkYXRlVnJNb2RlTG9ja2VkKHIpOwogICAgICAgICBpZiAobUZvY3VzZWRBY3Rpdml0eS51c2VySWQgIT0gbUxhc3RGb2N1c2VkVXNlcklkKSB7CiAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhGT1JFR1JPVU5EX1BST0ZJTEVfQ0hBTkdFRF9NU0cpOwogICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZSgKQEAgLTI4NzIsNiArMjg4NCwxMSBAQAogICAgICAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoSU1NRVJTSVZFX01PREVfTE9DS19NU0csIChuZXh0U3RhdGUpID8gMSA6IDAsIDAsIHIpKTsKICAgICB9CiAKKyAgICBmaW5hbCB2b2lkIGFwcGx5VXBkYXRlVnJNb2RlTG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIpIHsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShWUl9NT0RFX0NIQU5HRV9NU0csIChyLmlzVnJBY3Rpdml0eSkgPyAxIDogMCwgMCkpOworICAgIH0KKwogICAgIGZpbmFsIHZvaWQgc2hvd0Fza0NvbXBhdE1vZGVEaWFsb2dMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgewogICAgICAgICBNZXNzYWdlIG1zZyA9IE1lc3NhZ2Uub2J0YWluKCk7CiAgICAgICAgIG1zZy53aGF0ID0gU0hPV19DT01QQVRfTU9ERV9ESUFMT0dfVUlfTVNHOwpAQCAtMzU3Myw2ICszNTkwLDcgQEAKICAgICBJbnRlbnQgZ2V0SG9tZUludGVudCgpIHsKICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQobVRvcEFjdGlvbiwgbVRvcERhdGEgIT0gbnVsbCA/IFVyaS5wYXJzZShtVG9wRGF0YSkgOiBudWxsKTsKICAgICAgICAgaW50ZW50LnNldENvbXBvbmVudChtVG9wQ29tcG9uZW50KTsKKyAgICAgICAgaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0RFQlVHX0VOQ1JZUFRJT05fVFJJQUdFRCk7CiAgICAgICAgIGlmIChtRmFjdG9yeVRlc3QgIT0gRmFjdG9yeVRlc3QuRkFDVE9SWV9URVNUX0xPV19MRVZFTCkgewogICAgICAgICAgICAgaW50ZW50LmFkZENhdGVnb3J5KEludGVudC5DQVRFR09SWV9IT01FKTsKICAgICAgICAgfQpAQCAtMzYwMSw3ICszNjE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoYXBwID09IG51bGwgfHwgYXBwLmluc3RydW1lbnRhdGlvbkNsYXNzID09IG51bGwpIHsKICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoaW50ZW50LmdldEZsYWdzKCkgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSyk7Ci0gICAgICAgICAgICAgICAgbVN0YWNrU3VwZXJ2aXNvci5zdGFydEhvbWVBY3Rpdml0eShpbnRlbnQsIGFJbmZvLCByZWFzb24pOworICAgICAgICAgICAgICAgIG1BY3Rpdml0eVN0YXJ0ZXIuc3RhcnRIb21lQWN0aXZpdHlMb2NrZWQoaW50ZW50LCBhSW5mbywgcmVhc29uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zNjc5LDcgKzM2OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwogICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KG5ldyBDb21wb25lbnROYW1lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpLmFjdGl2aXR5SW5mby5wYWNrYWdlTmFtZSwgcmkuYWN0aXZpdHlJbmZvLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgbVN0YWNrU3VwZXJ2aXNvci5zdGFydEFjdGl2aXR5TG9ja2VkKG51bGwsIGludGVudCwgbnVsbCAvKmVwaGVtZXJhbEludGVudCovLAorICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlTdGFydGVyLnN0YXJ0QWN0aXZpdHlMb2NrZWQobnVsbCwgaW50ZW50LCBudWxsIC8qZXBoZW1lcmFsSW50ZW50Ki8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgcmkuYWN0aXZpdHlJbmZvLCBudWxsIC8qckluZm8qLywgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgMCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAwLCAwLCAwLCBudWxsLCBmYWxzZSwgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQwMDYsNiArNDAyNCwyNSBAQAogICAgICAgICAgICAgICAgIFVzZXJIYW5kbGUuZ2V0Q2FsbGluZ1VzZXJJZCgpKTsKICAgICB9CiAKKyAgICBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eShJbnRlbnQgaW50ZW50LCBBY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5BY3Rpdml0eUNvbnRhaW5lciBjb250YWluZXIpIHsKKyAgICAgICAgZW5mb3JjZU5vdElzb2xhdGVkQ2FsbGVyKCJBY3Rpdml0eUNvbnRhaW5lci5zdGFydEFjdGl2aXR5Iik7CisgICAgICAgIGZpbmFsIGludCB1c2VySWQgPSBtVXNlckNvbnRyb2xsZXIuaGFuZGxlSW5jb21pbmdVc2VyKEJpbmRlci5nZXRDYWxsaW5nUGlkKCksCisgICAgICAgICAgICAgICAgQmluZGVyLmdldENhbGxpbmdVaWQoKSwgbVN0YWNrU3VwZXJ2aXNvci5tQ3VycmVudFVzZXIsIGZhbHNlLAorICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuQUxMT1dfRlVMTF9PTkxZLCAiQWN0aXZpdHlDb250YWluZXIiLCBudWxsKTsKKworICAgICAgICAvLyBUT0RPOiBTd2l0Y2ggdG8gdXNlciBhcHAgc3RhY2tzIGhlcmUuCisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGludGVudC5nZXRUeXBlKCk7CisgICAgICAgIGZpbmFsIFVyaSBkYXRhID0gaW50ZW50LmdldERhdGEoKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IG51bGwgJiYgZGF0YSAhPSBudWxsICYmICJjb250ZW50Ii5lcXVhbHMoZGF0YS5nZXRTY2hlbWUoKSkpIHsKKyAgICAgICAgICAgIG1pbWVUeXBlID0gZ2V0UHJvdmlkZXJNaW1lVHlwZShkYXRhLCB1c2VySWQpOworICAgICAgICB9CisgICAgICAgIGNvbnRhaW5lci5jaGVja0VtYmVkZGVkQWxsb3dlZElubmVyKHVzZXJJZCwgaW50ZW50LCBtaW1lVHlwZSk7CisKKyAgICAgICAgaW50ZW50LmFkZEZsYWdzKEZPUkNFX05FV19UQVNLX0ZMQUdTKTsKKyAgICAgICAgcmV0dXJuIG1BY3Rpdml0eVN0YXJ0ZXIuc3RhcnRBY3Rpdml0eU1heVdhaXQobnVsbCwgLTEsIG51bGwsIGludGVudCwgbWltZVR5cGUsIG51bGwsIG51bGwsIG51bGwsCisgICAgICAgICAgICAgICAgbnVsbCwgMCwgMCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UsIHVzZXJJZCwgY29udGFpbmVyLCBudWxsKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlBc1VzZXIoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgU3RyaW5nIGNhbGxpbmdQYWNrYWdlLAogICAgICAgICAgICAgSW50ZW50IGludGVudCwgU3RyaW5nIHJlc29sdmVkVHlwZSwgSUJpbmRlciByZXN1bHRUbywgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLApAQCAtNDAxNCw3ICs0MDUxLDcgQEAKICAgICAgICAgdXNlcklkID0gbVVzZXJDb250cm9sbGVyLmhhbmRsZUluY29taW5nVXNlcihCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpLCBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLAogICAgICAgICAgICAgICAgIHVzZXJJZCwgZmFsc2UsIEFMTE9XX0ZVTExfT05MWSwgInN0YXJ0QWN0aXZpdHkiLCBudWxsKTsKICAgICAgICAgLy8gVE9ETzogU3dpdGNoIHRvIHVzZXIgYXBwIHN0YWNrcyBoZXJlLgotICAgICAgICByZXR1cm4gbVN0YWNrU3VwZXJ2aXNvci5zdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIC0xLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LAorICAgICAgICByZXR1cm4gbUFjdGl2aXR5U3RhcnRlci5zdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIC0xLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LAogICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSwgbnVsbCwgbnVsbCwgcmVzdWx0VG8sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIHN0YXJ0RmxhZ3MsCiAgICAgICAgICAgICAgICAgcHJvZmlsZXJJbmZvLCBudWxsLCBudWxsLCBiT3B0aW9ucywgZmFsc2UsIHVzZXJJZCwgbnVsbCwgbnVsbCk7CiAgICAgfQpAQCAtNDA3Nyw3ICs0MTE0LDcgQEAKIAogICAgICAgICAvLyBUT0RPOiBTd2l0Y2ggdG8gdXNlciBhcHAgc3RhY2tzIGhlcmUuCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbnQgcmV0ID0gbVN0YWNrU3VwZXJ2aXNvci5zdGFydEFjdGl2aXR5TWF5V2FpdChudWxsLCB0YXJnZXRVaWQsIHRhcmdldFBhY2thZ2UsIGludGVudCwKKyAgICAgICAgICAgIGludCByZXQgPSBtQWN0aXZpdHlTdGFydGVyLnN0YXJ0QWN0aXZpdHlNYXlXYWl0KG51bGwsIHRhcmdldFVpZCwgdGFyZ2V0UGFja2FnZSwgaW50ZW50LAogICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFR5cGUsIG51bGwsIG51bGwsIHJlc3VsdFRvLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCBzdGFydEZsYWdzLCBudWxsLAogICAgICAgICAgICAgICAgICAgICBudWxsLCBudWxsLCBiT3B0aW9ucywgaWdub3JlVGFyZ2V0U2VjdXJpdHksIHVzZXJJZCwgbnVsbCwgbnVsbCk7CiAgICAgICAgICAgICByZXR1cm4gcmV0OwpAQCAtNDEwNiw3ICs0MTQzLDcgQEAKICAgICAgICAgICAgICAgICB1c2VySWQsIGZhbHNlLCBBTExPV19GVUxMX09OTFksICJzdGFydEFjdGl2aXR5QW5kV2FpdCIsIG51bGwpOwogICAgICAgICBXYWl0UmVzdWx0IHJlcyA9IG5ldyBXYWl0UmVzdWx0KCk7CiAgICAgICAgIC8vIFRPRE86IFN3aXRjaCB0byB1c2VyIGFwcCBzdGFja3MgaGVyZS4KLSAgICAgICAgbVN0YWNrU3VwZXJ2aXNvci5zdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIC0xLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LCByZXNvbHZlZFR5cGUsCisgICAgICAgIG1BY3Rpdml0eVN0YXJ0ZXIuc3RhcnRBY3Rpdml0eU1heVdhaXQoY2FsbGVyLCAtMSwgY2FsbGluZ1BhY2thZ2UsIGludGVudCwgcmVzb2x2ZWRUeXBlLAogICAgICAgICAgICAgICAgIG51bGwsIG51bGwsIHJlc3VsdFRvLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCBzdGFydEZsYWdzLCBwcm9maWxlckluZm8sIHJlcywgbnVsbCwKICAgICAgICAgICAgICAgICBiT3B0aW9ucywgZmFsc2UsIHVzZXJJZCwgbnVsbCwgbnVsbCk7CiAgICAgICAgIHJldHVybiByZXM7CkBAIC00MTIwLDcgKzQxNTcsNyBAQAogICAgICAgICB1c2VySWQgPSBtVXNlckNvbnRyb2xsZXIuaGFuZGxlSW5jb21pbmdVc2VyKEJpbmRlci5nZXRDYWxsaW5nUGlkKCksIEJpbmRlci5nZXRDYWxsaW5nVWlkKCksCiAgICAgICAgICAgICAgICAgdXNlcklkLCBmYWxzZSwgQUxMT1dfRlVMTF9PTkxZLCAic3RhcnRBY3Rpdml0eVdpdGhDb25maWciLCBudWxsKTsKICAgICAgICAgLy8gVE9ETzogU3dpdGNoIHRvIHVzZXIgYXBwIHN0YWNrcyBoZXJlLgotICAgICAgICBpbnQgcmV0ID0gbVN0YWNrU3VwZXJ2aXNvci5zdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIC0xLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LAorICAgICAgICBpbnQgcmV0ID0gbUFjdGl2aXR5U3RhcnRlci5zdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIC0xLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LAogICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSwgbnVsbCwgbnVsbCwgcmVzdWx0VG8sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIHN0YXJ0RmxhZ3MsCiAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCwgY29uZmlnLCBiT3B0aW9ucywgZmFsc2UsIHVzZXJJZCwgbnVsbCwgbnVsbCk7CiAgICAgICAgIHJldHVybiByZXQ7CkBAIC00MTc4LDcgKzQyMTUsNyBAQAogICAgICAgICB1c2VySWQgPSBtVXNlckNvbnRyb2xsZXIuaGFuZGxlSW5jb21pbmdVc2VyKGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQsIHVzZXJJZCwgZmFsc2UsCiAgICAgICAgICAgICAgICAgQUxMT1dfRlVMTF9PTkxZLCAic3RhcnRWb2ljZUFjdGl2aXR5IiwgbnVsbCk7CiAgICAgICAgIC8vIFRPRE86IFN3aXRjaCB0byB1c2VyIGFwcCBzdGFja3MgaGVyZS4KLSAgICAgICAgcmV0dXJuIG1TdGFja1N1cGVydmlzb3Iuc3RhcnRBY3Rpdml0eU1heVdhaXQobnVsbCwgY2FsbGluZ1VpZCwgY2FsbGluZ1BhY2thZ2UsIGludGVudCwKKyAgICAgICAgcmV0dXJuIG1BY3Rpdml0eVN0YXJ0ZXIuc3RhcnRBY3Rpdml0eU1heVdhaXQobnVsbCwgY2FsbGluZ1VpZCwgY2FsbGluZ1BhY2thZ2UsIGludGVudCwKICAgICAgICAgICAgICAgICByZXNvbHZlZFR5cGUsIHNlc3Npb24sIGludGVyYWN0b3IsIG51bGwsIG51bGwsIDAsIHN0YXJ0RmxhZ3MsIHByb2ZpbGVySW5mbywgbnVsbCwKICAgICAgICAgICAgICAgICBudWxsLCBiT3B0aW9ucywgZmFsc2UsIHVzZXJJZCwgbnVsbCwgbnVsbCk7CiAgICAgfQpAQCAtNDI4OSw3ICs0MzI2LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgICAgIGludCByZXMgPSBtU3RhY2tTdXBlcnZpc29yLnN0YXJ0QWN0aXZpdHlMb2NrZWQoci5hcHAudGhyZWFkLCBpbnRlbnQsCisgICAgICAgICAgICBpbnQgcmVzID0gbUFjdGl2aXR5U3RhcnRlci5zdGFydEFjdGl2aXR5TG9ja2VkKHIuYXBwLnRocmVhZCwgaW50ZW50LAogICAgICAgICAgICAgICAgICAgICBudWxsIC8qZXBoZW1lcmFsSW50ZW50Ki8sIHIucmVzb2x2ZWRUeXBlLCBhSW5mbywgbnVsbCAvKnJJbmZvKi8sIG51bGwsCiAgICAgICAgICAgICAgICAgICAgIG51bGwsIHJlc3VsdFRvICE9IG51bGwgPyByZXN1bHRUby5hcHBUb2tlbiA6IG51bGwsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIC0xLAogICAgICAgICAgICAgICAgICAgICByLmxhdW5jaGVkRnJvbVVpZCwgci5sYXVuY2hlZEZyb21QYWNrYWdlLCAtMSwgci5sYXVuY2hlZEZyb21VaWQsIDAsIG9wdGlvbnMsCkBAIC00Mzc0LDcgKzQ0MTEsNyBAQAogICAgICAgICAgICAgICAgIHVzZXJJZCwgZmFsc2UsIEFMTE9XX0ZVTExfT05MWSwgInN0YXJ0QWN0aXZpdHlJblBhY2thZ2UiLCBudWxsKTsKIAogICAgICAgICAvLyBUT0RPOiBTd2l0Y2ggdG8gdXNlciBhcHAgc3RhY2tzIGhlcmUuCi0gICAgICAgIGludCByZXQgPSBtU3RhY2tTdXBlcnZpc29yLnN0YXJ0QWN0aXZpdHlNYXlXYWl0KG51bGwsIHVpZCwgY2FsbGluZ1BhY2thZ2UsIGludGVudCwKKyAgICAgICAgaW50IHJldCA9IG1BY3Rpdml0eVN0YXJ0ZXIuc3RhcnRBY3Rpdml0eU1heVdhaXQobnVsbCwgdWlkLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LAogICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSwgbnVsbCwgbnVsbCwgcmVzdWx0VG8sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIHN0YXJ0RmxhZ3MsCiAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCwgbnVsbCwgYk9wdGlvbnMsIGZhbHNlLCB1c2VySWQsIGNvbnRhaW5lciwgaW5UYXNrKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTQzODgsNyArNDQyNSw3IEBACiAgICAgICAgIHVzZXJJZCA9IG1Vc2VyQ29udHJvbGxlci5oYW5kbGVJbmNvbWluZ1VzZXIoQmluZGVyLmdldENhbGxpbmdQaWQoKSwgQmluZGVyLmdldENhbGxpbmdVaWQoKSwKICAgICAgICAgICAgICAgICB1c2VySWQsIGZhbHNlLCBBTExPV19GVUxMX09OTFksICJzdGFydEFjdGl2aXR5IiwgbnVsbCk7CiAgICAgICAgIC8vIFRPRE86IFN3aXRjaCB0byB1c2VyIGFwcCBzdGFja3MgaGVyZS4KLSAgICAgICAgaW50IHJldCA9IG1TdGFja1N1cGVydmlzb3Iuc3RhcnRBY3Rpdml0aWVzKGNhbGxlciwgLTEsIGNhbGxpbmdQYWNrYWdlLCBpbnRlbnRzLAorICAgICAgICBpbnQgcmV0ID0gbUFjdGl2aXR5U3RhcnRlci5zdGFydEFjdGl2aXRpZXMoY2FsbGVyLCAtMSwgY2FsbGluZ1BhY2thZ2UsIGludGVudHMsCiAgICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlcywgcmVzdWx0VG8sIGJPcHRpb25zLCB1c2VySWQpOwogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KQEAgLTQ0MDAsNyArNDQzNyw3IEBACiAgICAgICAgIHVzZXJJZCA9IG1Vc2VyQ29udHJvbGxlci5oYW5kbGVJbmNvbWluZ1VzZXIoQmluZGVyLmdldENhbGxpbmdQaWQoKSwgQmluZGVyLmdldENhbGxpbmdVaWQoKSwKICAgICAgICAgICAgICAgICB1c2VySWQsIGZhbHNlLCBBTExPV19GVUxMX09OTFksICJzdGFydEFjdGl2aXR5SW5QYWNrYWdlIiwgbnVsbCk7CiAgICAgICAgIC8vIFRPRE86IFN3aXRjaCB0byB1c2VyIGFwcCBzdGFja3MgaGVyZS4KLSAgICAgICAgaW50IHJldCA9IG1TdGFja1N1cGVydmlzb3Iuc3RhcnRBY3Rpdml0aWVzKG51bGwsIHVpZCwgY2FsbGluZ1BhY2thZ2UsIGludGVudHMsIHJlc29sdmVkVHlwZXMsCisgICAgICAgIGludCByZXQgPSBtQWN0aXZpdHlTdGFydGVyLnN0YXJ0QWN0aXZpdGllcyhudWxsLCB1aWQsIGNhbGxpbmdQYWNrYWdlLCBpbnRlbnRzLCByZXNvbHZlZFR5cGVzLAogICAgICAgICAgICAgICAgIHJlc3VsdFRvLCBiT3B0aW9ucywgdXNlcklkKTsKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CkBAIC04MTkzLDYgKzgyMzAsMTggQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBJQmluZGVyIGdldFVyaVBlcm1pc3Npb25Pd25lckZvckFjdGl2aXR5KElCaW5kZXIgYWN0aXZpdHlUb2tlbikgeworICAgICAgICBlbmZvcmNlTm90SXNvbGF0ZWRDYWxsZXIoImdldFVyaVBlcm1pc3Npb25Pd25lckZvckFjdGl2aXR5Iik7CisgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gQWN0aXZpdHlSZWNvcmQuaXNJblN0YWNrTG9ja2VkKGFjdGl2aXR5VG9rZW4pOworICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkFjdGl2aXR5IGRvZXMgbm90IGV4aXN0OyB0b2tlbj0iCisgICAgICAgICAgICAgICAgICAgICAgICArIGFjdGl2aXR5VG9rZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHIuZ2V0VXJpUGVybWlzc2lvbnNMb2NrZWQoKS5nZXRFeHRlcm5hbFRva2VuTG9ja2VkKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHVyaSBUaGlzIHVyaSBtdXN0IE5PVCBjb250YWluIGFuIGVtYmVkZGVkIHVzZXJJZC4KICAgICAgKiBAcGFyYW0gc291cmNlVXNlcklkIFRoZSB1c2VySWQgaW4gd2hpY2ggdGhlIHVyaSBpcyB0byBiZSByZXNvbHZlZC4KQEAgLTk3NTAsOSArOTc5OSwxMCBAQAogICAgIHByaXZhdGUgZmluYWwgTGlzdDxQcm92aWRlckluZm8+IGdlbmVyYXRlQXBwbGljYXRpb25Qcm92aWRlcnNMb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHApIHsKICAgICAgICAgTGlzdDxQcm92aWRlckluZm8+IHByb3ZpZGVycyA9IG51bGw7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBQYXJjZWxlZExpc3RTbGljZTxQcm92aWRlckluZm8+IHNsaWNlID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLgotICAgICAgICAgICAgICAgIHF1ZXJ5Q29udGVudFByb3ZpZGVycyhhcHAucHJvY2Vzc05hbWUsIGFwcC51aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBTVE9DS19QTV9GTEFHUyB8IFBhY2thZ2VNYW5hZ2VyLkdFVF9VUklfUEVSTUlTU0lPTl9QQVRURVJOUyk7CisgICAgICAgICAgICBQYXJjZWxlZExpc3RTbGljZTxQcm92aWRlckluZm8+IHNsaWNlID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpCisgICAgICAgICAgICAgICAgICAgIC5xdWVyeUNvbnRlbnRQcm92aWRlcnMoYXBwLnByb2Nlc3NOYW1lLCBhcHAudWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUT0NLX1BNX0ZMQUdTIHwgUGFja2FnZU1hbmFnZXIuR0VUX1VSSV9QRVJNSVNTSU9OX1BBVFRFUk5TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhY2thZ2VNYW5hZ2VyLk1BVENIX0VOQ1JZUFRJT05fREVGQVVMVCk7CiAgICAgICAgICAgICBwcm92aWRlcnMgPSBzbGljZSAhPSBudWxsID8gc2xpY2UuZ2V0TGlzdCgpIDogbnVsbDsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgIH0KQEAgLTExNzI2LDYgKzExNzc2LDI2IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzZXRWck1vZGUoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBlbmFibGVkKSB7CisgICAgICAgIGlmICghbUNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5oYXNTeXN0ZW1GZWF0dXJlKFBhY2thZ2VNYW5hZ2VyLkZFQVRVUkVfVlJfTU9ERSkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiVlIgbW9kZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgZGV2aWNlISIpOworICAgICAgICB9CisKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHIgPSBBY3Rpdml0eVJlY29yZC5pc0luU3RhY2tMb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHIuaXNWckFjdGl2aXR5ID0gZW5hYmxlZDsKKworICAgICAgICAgICAgLy8gVXBkYXRlIGFzc29jaWF0ZWQgc3RhdGUgaWYgdGhpcyBhY3Rpdml0eSBpcyBjdXJyZW50bHkgZm9jdXNlZAorICAgICAgICAgICAgaWYgKHIgPT0gbUZvY3VzZWRBY3Rpdml0eSkgeworICAgICAgICAgICAgICAgIGFwcGx5VXBkYXRlVnJNb2RlTG9ja2VkKHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgcHVibGljIGJvb2xlYW4gaXNUb3BBY3Rpdml0eUltbWVyc2l2ZSgpIHsKICAgICAgICAgZW5mb3JjZU5vdElzb2xhdGVkQ2FsbGVyKCJzdGFydEFjdGl2aXR5Iik7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewpAQCAtMTY5MzksNiArMTcwMDksOSBAQAogCiAgICAgcHJpdmF0ZSBMaXN0PFJlc29sdmVJbmZvPiBjb2xsZWN0UmVjZWl2ZXJDb21wb25lbnRzKEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsCiAgICAgICAgICAgICBpbnQgY2FsbGluZ1VpZCwgaW50W10gdXNlcnMpIHsKKyAgICAgICAgLy8gVE9ETzogY29tZSBiYWNrIGFuZCByZW1vdmUgdGhpcyBhc3N1bXB0aW9uIHRvIHRyaWFnZSBhbGwgYnJvYWRjYXN0cworICAgICAgICBpbnQgcG1GbGFncyA9IFNUT0NLX1BNX0ZMQUdTIHwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9ERUZBVUxUOworCiAgICAgICAgIExpc3Q8UmVzb2x2ZUluZm8+IHJlY2VpdmVycyA9IG51bGw7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBIYXNoU2V0PENvbXBvbmVudE5hbWU+IHNpbmdsZVVzZXJSZWNlaXZlcnMgPSBudWxsOwpAQCAtMTY5NTEsNyArMTcwMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgTGlzdDxSZXNvbHZlSW5mbz4gbmV3UmVjZWl2ZXJzID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlJbnRlbnRSZWNlaXZlcnMoaW50ZW50LCByZXNvbHZlZFR5cGUsIFNUT0NLX1BNX0ZMQUdTLCB1c2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeUludGVudFJlY2VpdmVycyhpbnRlbnQsIHJlc29sdmVkVHlwZSwgcG1GbGFncywgdXNlcik7CiAgICAgICAgICAgICAgICAgaWYgKHVzZXIgIT0gVXNlckhhbmRsZS5VU0VSX1NZU1RFTSAmJiBuZXdSZWNlaXZlcnMgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUgc3lzdGVtIHVzZXIsIHdlIG5lZWQgdG8gY2hlY2sgZm9yCiAgICAgICAgICAgICAgICAgICAgIC8vIGFueSByZWNlaXZlcnMgdGhhdCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0LgpAQCAtMjA4MzcsNyArMjA5MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgYXBwIHRocmVhZCAiICsgYXBwVGhyZWFkKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbVN0YWNrU3VwZXJ2aXNvci5zdGFydEFjdGl2aXR5TWF5V2FpdChhcHBUaHJlYWQsIC0xLCBjYWxsaW5nUGFja2FnZSwgaW50ZW50LAorICAgICAgICAgICAgcmV0dXJuIG1BY3Rpdml0eVN0YXJ0ZXIuc3RhcnRBY3Rpdml0eU1heVdhaXQoYXBwVGhyZWFkLCAtMSwgY2FsbGluZ1BhY2thZ2UsIGludGVudCwKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAwLCAwLCBudWxsLCBudWxsLAogICAgICAgICAgICAgICAgICAgICBudWxsLCBiT3B0aW9ucywgZmFsc2UsIGNhbGxpbmdVc2VyLCBudWxsLCB0cik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlSZWNvcmQuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlSZWNvcmQuamF2YQppbmRleCAzZGEwZjhkLi40ZDkxMjBiIDEwMDc1NQotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5UmVjb3JkLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlY29yZC5qYXZhCkBAIC0xODEsNiArMTgxLDcgQEAKICAgICBib29sZWFuIGZvcmNlTmV3Q29uZmlnOyAvLyBmb3JjZSByZS1jcmVhdGUgd2l0aCBuZXcgY29uZmlnIG5leHQgdGltZQogICAgIGludCBsYXVuY2hDb3VudDsgICAgICAgIC8vIGNvdW50IG9mIGxhdW5jaGVzIHNpbmNlIGxhc3Qgc3RhdGUKICAgICBsb25nIGxhc3RMYXVuY2hUaW1lOyAgICAvLyB0aW1lIG9mIGxhc3QgbGF1Y2ggb2YgdGhpcyBhY3Rpdml0eQorICAgIGJvb2xlYW4gaXNWckFjdGl2aXR5OyAgIC8vIGlzIHRoZSBhY3Rpdml0eSBydW5uaW5nIGluIFZSIG1vZGU/CiAgICAgQXJyYXlMaXN0PEFjdGl2aXR5Q29udGFpbmVyPiBtQ2hpbGRDb250YWluZXJzID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eUNvbnRhaW5lcj4oKTsKIAogICAgIFN0cmluZyBzdHJpbmdOYW1lOyAgICAgIC8vIGZvciBjYWNoaW5nIG9mIHRvU3RyaW5nKCkuCkBAIC0zMTcsNiArMzE4LDcgQEAKICAgICAgICAgICAgICAgICBwdy5wcmludCgiIGZvcmNlTmV3Q29uZmlnPSIpOyBwdy5wcmludGxuKGZvcmNlTmV3Q29uZmlnKTsKICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIm1BY3Rpdml0eVR5cGU9Iik7CiAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihhY3Rpdml0eVR5cGVUb1N0cmluZyhtQWN0aXZpdHlUeXBlKSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJ2ck1vZGU9Iik7IHB3LnByaW50bG4oaXNWckFjdGl2aXR5KTsKICAgICAgICAgaWYgKGRpc3BsYXlTdGFydFRpbWUgIT0gMCB8fCBzdGFydFRpbWUgIT0gMCkgewogICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImRpc3BsYXlTdGFydFRpbWU9Iik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5U3RhcnRUaW1lID09IDApIHB3LnByaW50KCIwIik7CkBAIC02NTAsNiArNjUyLDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW1tZXJzaXZlID0gKGFJbmZvLmZsYWdzICYgQWN0aXZpdHlJbmZvLkZMQUdfSU1NRVJTSVZFKSAhPSAwOworICAgICAgICAgICAgaXNWckFjdGl2aXR5ID0gKGFJbmZvLmZsYWdzICYgQWN0aXZpdHlJbmZvLkZMQUdfRU5BQkxFX1ZSX01PREUpICE9IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZWFsQWN0aXZpdHkgPSBudWxsOwogICAgICAgICAgICAgdGFza0FmZmluaXR5ID0gbnVsbDsKQEAgLTY2MSw2ICs2NjQsNyBAQAogICAgICAgICAgICAgbm9EaXNwbGF5ID0gZmFsc2U7CiAgICAgICAgICAgICBtQWN0aXZpdHlUeXBlID0gQVBQTElDQVRJT05fQUNUSVZJVFlfVFlQRTsKICAgICAgICAgICAgIGltbWVyc2l2ZSA9IGZhbHNlOworICAgICAgICAgICAgaXNWckFjdGl2aXR5ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlTdGFjay5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEKaW5kZXggNTgyYTFmZS4uMTQ5MmUyMyAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEKQEAgLTc1LDcgKzc1LDYgQEAKIGltcG9ydCBhbmRyb2lkLm9zLlVzZXJIYW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5zZXJ2aWNlLnZvaWNlLklWb2ljZUludGVyYWN0aW9uU2Vzc2lvbjsKIGltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKIApAQCAtMzM2Myw3ICszMzYyLDcgQEAKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eUluZm8gYUluZm8gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QWN0aXZpdHlJbmZvKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RJbnRlbnQuZ2V0Q29tcG9uZW50KCksIDAsIHNyZWMudXNlcklkKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IHJlcyA9IG1TdGFja1N1cGVydmlzb3Iuc3RhcnRBY3Rpdml0eUxvY2tlZChzcmVjLmFwcC50aHJlYWQsIGRlc3RJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgIGludCByZXMgPSBtU2VydmljZS5tQWN0aXZpdHlTdGFydGVyLnN0YXJ0QWN0aXZpdHlMb2NrZWQoc3JlYy5hcHAudGhyZWFkLCBkZXN0SW50ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgLyplcGhlbWVyYWxJbnRlbnQqLywgbnVsbCwgYUluZm8sIG51bGwgLypySW5mbyovLCBudWxsLCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBUb2tlbiwgbnVsbCwgMCwgLTEsIHBhcmVudC5sYXVuY2hlZEZyb21VaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmxhdW5jaGVkRnJvbVBhY2thZ2UsIC0xLCBwYXJlbnQubGF1bmNoZWRGcm9tVWlkLCAwLCBudWxsLApkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5qYXZhCmluZGV4IDE4YmYxYzMuLjMyNjcxYWNmIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5U3RhY2tTdXBlcnZpc29yLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5qYXZhCkBAIC0zMSw1MSArMzEsMzcgQEAKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlN0YWNrSWQuSU5WQUxJRF9TVEFDS19JRDsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlN0YWNrSWQuTEFTVF9TVEFUSUNfU1RBQ0tfSUQ7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlci5TdGFja0lkLlBJTk5FRF9TVEFDS19JRDsKLWltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RBU0s7Ci1pbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5JbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9UT1A7Ci1pbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5JbnRlbnQuRkxBR19BQ1RJVklUWV9MQVVOQ0hfVE9fU0lERTsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LkludGVudC5GTEFHX0FDVElWSVRZX01VTFRJUExFX1RBU0s7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5JbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKLWltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LkludGVudC5GTEFHX0FDVElWSVRZX1RBU0tfT05fSE9NRTsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mby5GTEFHX1NIT1dfRk9SX0FMTF9VU0VSUzsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRDsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5UcmFjZS5UUkFDRV9UQUdfQUNUSVZJVFlfTUFOQUdFUjsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX0FMTDsKLWltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX0NPTkZJR1VSQVRJT047CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5ERUJVR19DT05UQUlORVJTOwotaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfRk9DVVM7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5ERUJVR19JRExFOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfTE9DS1NDUkVFTjsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX0xPQ0tUQVNLOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfUEFVU0U7Ci1pbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5ERUJVR19QRVJNSVNTSU9OU19SRVZJRVc7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5ERUJVR19SRUNFTlRTOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfUkVMRUFTRTsKLWltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX1JFU1VMVFM7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5ERUJVR19TVEFDSzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX1NUQVRFUzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX1NXSVRDSDsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX1RBU0tTOwotaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfVVNFUl9MRUFWSU5HOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfVklTSUJMRV9CRUhJTkQ7Ci1pbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX0NPTkZJR1VSQVRJT047CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX0NPTlRBSU5FUlM7Ci1pbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX0ZPQ1VTOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuUE9TVEZJWF9JRExFOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuUE9TVEZJWF9MT0NLVEFTSzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLlBPU1RGSVhfUEFVU0U7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX1JFQ0VOVFM7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX1JFTEVBU0U7Ci1pbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX1JFU1VMVFM7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX1NUQUNLOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuUE9TVEZJWF9TVEFURVM7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX1NXSVRDSDsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLlBPU1RGSVhfVEFTS1M7Ci1pbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX1VTRVJfTEVBVklORzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLlBPU1RGSVhfVklTSUJMRV9CRUhJTkQ7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5UQUdfQU07CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5UQUdfV0lUSF9DTEFTU19OQU1FOwotaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5BTklNQVRFOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5GSVJTVF9TVVBFUlZJU09SX1NUQUNLX01TRzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5UmVjb3JkLkFQUExJQ0FUSU9OX0FDVElWSVRZX1RZUEU7CiBpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVJlY29yZC5IT01FX0FDVElWSVRZX1RZUEU7CkBAIC0xMDcsOSArOTMsNiBAQAogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eUNvbnRhaW5lckNhbGxiYWNrOwogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlci5XYWl0UmVzdWx0OwotaW1wb3J0IGFuZHJvaWQuYXBwLklBcHBsaWNhdGlvblRocmVhZDsKLWltcG9ydCBhbmRyb2lkLmFwcC5LZXlndWFyZE1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKIGltcG9ydCBhbmRyb2lkLmFwcC5Qcm9maWxlckluZm87CiBpbXBvcnQgYW5kcm9pZC5hcHAuUmVzdWx0SW5mbzsKIGltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOwpAQCAtMTE4LDcgKzEwMSw2IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LklJbnRlbnRTZW5kZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm87CkBAIC0xMzMsMTAgKzExNSw3IEBACiBpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5kaXNwbGF5LlZpcnR1YWxEaXNwbGF5OwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuaW5wdXQuSW5wdXRNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuaW5wdXQuSW5wdXRNYW5hZ2VySW50ZXJuYWw7Ci1pbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuQnVpbGQ7Ci1pbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5EZWJ1ZzsKIGltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwpAQCAtMTY4LDggKzE0Nyw2IEBACiBpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0RXZlbnQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CiAKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5OwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5JVm9pY2VJbnRlcmFjdG9yOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmNvbnRlbnQuUmVmZXJyZXJJbnRlbnQ7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuVHJhbnNmZXJQaXBlOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5JU3RhdHVzQmFyU2VydmljZTsKQEAgLTE4OSwyMSArMTY2LDE3IEBACiAKIHB1YmxpYyBmaW5hbCBjbGFzcyBBY3Rpdml0eVN0YWNrU3VwZXJ2aXNvciBpbXBsZW1lbnRzIERpc3BsYXlMaXN0ZW5lciB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9IFRBR19XSVRIX0NMQVNTX05BTUUgPyAiQWN0aXZpdHlTdGFja1N1cGVydmlzb3IiIDogVEFHX0FNOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfQ09ORklHVVJBVElPTiA9IFRBRyArIFBPU1RGSVhfQ09ORklHVVJBVElPTjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX0NPTlRBSU5FUlMgPSBUQUcgKyBQT1NURklYX0NPTlRBSU5FUlM7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19GT0NVUyA9IFRBRyArIFBPU1RGSVhfRk9DVVM7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19JRExFID0gVEFHICsgUE9TVEZJWF9JRExFOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfTE9DS1RBU0sgPSBUQUcgKyBQT1NURklYX0xPQ0tUQVNLOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfUEFVU0UgPSBUQUcgKyBQT1NURklYX1BBVVNFOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfUkVDRU5UUyA9IFRBRyArIFBPU1RGSVhfUkVDRU5UUzsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX1JFTEVBU0UgPSBUQUcgKyBQT1NURklYX1JFTEVBU0U7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19SRVNVTFRTID0gVEFHICsgUE9TVEZJWF9SRVNVTFRTOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfU1RBQ0sgPSBUQUcgKyBQT1NURklYX1NUQUNLOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfU1RBVEVTID0gVEFHICsgUE9TVEZJWF9TVEFURVM7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19TV0lUQ0ggPSBUQUcgKyBQT1NURklYX1NXSVRDSDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX1RBU0tTID0gVEFHICsgUE9TVEZJWF9UQVNLUzsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19UQVNLUyA9IFRBRyArIFBPU1RGSVhfVEFTS1M7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19WSVNJQkxFX0JFSElORCA9IFRBRyArIFBPU1RGSVhfVklTSUJMRV9CRUhJTkQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19VU0VSX0xFQVZJTkcgPSBUQUcgKyBQT1NURklYX1VTRVJfTEVBVklORzsKIAogICAgIC8qKiBIb3cgbG9uZyB3ZSB3YWl0IHVudGlsIGdpdmluZyB1cCBvbiB0aGUgbGFzdCBhY3Rpdml0eSB0ZWxsaW5nIHVzIGl0IGlzIGlkbGUuICovCiAgICAgc3RhdGljIGZpbmFsIGludCBJRExFX1RJTUVPVVQgPSAxMCAqIDEwMDA7CkBAIC0yMzUsNyArMjA4LDcgQEAKIAogICAgIC8vIFVzZWQgdG8gaW5kaWNhdGUgaWYgYW4gb2JqZWN0IChlLmcuIHN0YWNrKSB0aGF0IHdlIGFyZSB0cnlpbmcgdG8gZ2V0CiAgICAgLy8gc2hvdWxkIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdCBhbHJlYWR5LgotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gQ1JFQVRFX0lGX05FRURFRCA9IHRydWU7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gQ1JFQVRFX0lGX05FRURFRCA9IHRydWU7CiAKICAgICAvLyBVc2VkIHRvIGluZGljYXRlIHRoYXQgd2luZG93cyBvZiBhY3Rpdml0aWVzIHNob3VsZCBiZSBwcmVzZXJ2ZWQgZHVyaW5nIHRoZSByZXNpemUuCiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gUFJFU0VSVkVfV0lORE9XUyA9IHRydWU7CkBAIC0zMDgsMTQgKzI4MSwxNCBAQAogICAgIHByaXZhdGUgaW50IG1DdXJUYXNrSWQgPSAwOwogCiAgICAgLyoqIFRoZSBjdXJyZW50IHVzZXIgKi8KLSAgICBwcml2YXRlIGludCBtQ3VycmVudFVzZXI7CisgICAgaW50IG1DdXJyZW50VXNlcjsKIAogICAgIC8qKiBUaGUgc3RhY2sgY29udGFpbmluZyB0aGUgbGF1bmNoZXIgYXBwLiBBc3N1bWVkIHRvIGFsd2F5cyBiZSBhdHRhY2hlZCB0bwogICAgICAqIERpc3BsYXkuREVGQVVMVF9ESVNQTEFZLiAqLwotICAgIHByaXZhdGUgQWN0aXZpdHlTdGFjayBtSG9tZVN0YWNrOworICAgIEFjdGl2aXR5U3RhY2sgbUhvbWVTdGFjazsKIAogICAgIC8qKiBUaGUgc3RhY2sgY3VycmVudGx5IHJlY2VpdmluZyBpbnB1dCBvciBsYXVuY2hpbmcgdGhlIG5leHQgYWN0aXZpdHkuICovCi0gICAgcHJpdmF0ZSBBY3Rpdml0eVN0YWNrIG1Gb2N1c2VkU3RhY2s7CisgICAgQWN0aXZpdHlTdGFjayBtRm9jdXNlZFN0YWNrOwogCiAgICAgLyoqIElmIHRoaXMgaXMgdGhlIHNhbWUgYXMgbUZvY3VzZWRTdGFjayB0aGVuIHRoZSBhY3Rpdml0eSBvbiB0aGUgdG9wIG9mIHRoZSBmb2N1c2VkIHN0YWNrIGhhcwogICAgICAqIGJlZW4gcmVzdW1lZC4gSWYgc3RhY2tzIGFyZSBjaGFuZ2luZyBwb3NpdGlvbiB0aGlzIHdpbGwgaG9sZCB0aGUgb2xkIHN0YWNrIHVudGlsIHRoZSBuZXcKQEAgLTM5Nyw4ICszNzAsNiBAQAogICAgICAqLwogICAgIHByaXZhdGUgTG9ja1Rhc2tOb3RpZnkgbUxvY2tUYXNrTm90aWZ5OwogCi0gICAgZmluYWwgQXJyYXlMaXN0PFBlbmRpbmdBY3Rpdml0eUxhdW5jaD4gbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzID0gbmV3IEFycmF5TGlzdDw+KCk7Ci0KICAgICAvKiogVXNlZCB0byBrZWVwIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKCkgZnJvbSBiZWluZyBlbnRlcmVkIHJlY3Vyc2l2ZWx5ICovCiAgICAgYm9vbGVhbiBpblJlc3VtZVRvcEFjdGl2aXR5OwogCkBAIC0xMDE3LDI3MCArOTg4LDYgQEAKICAgICAgICAgcmV0dXJuIHJlc29sdmVBY3Rpdml0eShpbnRlbnQsIHJJbmZvLCBzdGFydEZsYWdzLCBwcm9maWxlckluZm8pOwogICAgIH0KIAotICAgIHZvaWQgc3RhcnRIb21lQWN0aXZpdHkoSW50ZW50IGludGVudCwgQWN0aXZpdHlJbmZvIGFJbmZvLCBTdHJpbmcgcmVhc29uKSB7Ci0gICAgICAgIG1vdmVIb21lU3RhY2tUYXNrVG9Ub3AoSE9NRV9BQ1RJVklUWV9UWVBFLCByZWFzb24pOwotICAgICAgICBzdGFydEFjdGl2aXR5TG9ja2VkKG51bGwgLypjYWxsZXIqLywgaW50ZW50LCBudWxsIC8qZXBoZW1lcmFsSW50ZW50Ki8sCi0gICAgICAgICAgICAgICAgbnVsbCAvKnJlc29sdmVkVHlwZSovLCBhSW5mbywgbnVsbCAvKnJJbmZvKi8sIG51bGwgLyp2b2ljZVNlc3Npb24qLywKLSAgICAgICAgICAgICAgICBudWxsIC8qdm9pY2VJbnRlcmFjdG9yKi8sIG51bGwgLypyZXN1bHRUbyovLCBudWxsIC8qcmVzdWx0V2hvKi8sCi0gICAgICAgICAgICAgICAgMCAvKnJlcXVlc3RDb2RlKi8sIDAgLypjYWxsaW5nUGlkKi8sIDAgLypjYWxsaW5nVWlkKi8sIG51bGwgLypjYWxsaW5nUGFja2FnZSovLAotICAgICAgICAgICAgICAgIDAgLypyZWFsQ2FsbGluZ1BpZCovLCAwIC8qcmVhbENhbGxpbmdVaWQqLywgMCAvKnN0YXJ0RmxhZ3MqLywgbnVsbCAvKm9wdGlvbnMqLywKLSAgICAgICAgICAgICAgICBmYWxzZSAvKmlnbm9yZVRhcmdldFNlY3VyaXR5Ki8sIGZhbHNlIC8qY29tcG9uZW50U3BlY2lmaWVkKi8sICBudWxsIC8qb3V0QWN0aXZpdHkqLywKLSAgICAgICAgICAgICAgICBudWxsIC8qY29udGFpbmVyKi8sIG51bGwgLyppblRhc2sqLyk7Ci0gICAgICAgIGlmIChpblJlc3VtZVRvcEFjdGl2aXR5KSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gcmVzdW1lIHNlY3Rpb24gYWxyZWFkeSwgaG9tZSBhY3Rpdml0eSB3aWxsIGJlIGluaXRpYWxpemVkLCBidXQgbm90Ci0gICAgICAgICAgICAvLyByZXN1bWVkICh0byBhdm9pZCByZWN1cnNpdmUgcmVzdW1lKSBhbmQgd2lsbCBzdGF5IHRoYXQgd2F5IHVudGlsIHNvbWV0aGluZyBwb2tlcyBpdAotICAgICAgICAgICAgLy8gYWdhaW4uIFdlIG5lZWQgdG8gc2NoZWR1bGUgYW5vdGhlciByZXN1bWUuCi0gICAgICAgICAgICBzY2hlZHVsZVJlc3VtZVRvcEFjdGl2aXRpZXMoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZpbmFsIGludCBzdGFydEFjdGl2aXR5TWF5V2FpdChJQXBwbGljYXRpb25UaHJlYWQgY2FsbGVyLCBpbnQgY2FsbGluZ1VpZCwKLSAgICAgICAgICAgIFN0cmluZyBjYWxsaW5nUGFja2FnZSwgSW50ZW50IGludGVudCwgU3RyaW5nIHJlc29sdmVkVHlwZSwKLSAgICAgICAgICAgIElWb2ljZUludGVyYWN0aW9uU2Vzc2lvbiB2b2ljZVNlc3Npb24sIElWb2ljZUludGVyYWN0b3Igdm9pY2VJbnRlcmFjdG9yLAotICAgICAgICAgICAgSUJpbmRlciByZXN1bHRUbywgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLCBpbnQgc3RhcnRGbGFncywKLSAgICAgICAgICAgIFByb2ZpbGVySW5mbyBwcm9maWxlckluZm8sIFdhaXRSZXN1bHQgb3V0UmVzdWx0LCBDb25maWd1cmF0aW9uIGNvbmZpZywKLSAgICAgICAgICAgIEJ1bmRsZSBiT3B0aW9ucywgYm9vbGVhbiBpZ25vcmVUYXJnZXRTZWN1cml0eSwgaW50IHVzZXJJZCwKLSAgICAgICAgICAgIElBY3Rpdml0eUNvbnRhaW5lciBpQ29udGFpbmVyLCBUYXNrUmVjb3JkIGluVGFzaykgewotICAgICAgICAvLyBSZWZ1c2UgcG9zc2libGUgbGVha2VkIGZpbGUgZGVzY3JpcHRvcnMKLSAgICAgICAgaWYgKGludGVudCAhPSBudWxsICYmIGludGVudC5oYXNGaWxlRGVzY3JpcHRvcnMoKSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRmlsZSBkZXNjcmlwdG9ycyBwYXNzZWQgaW4gSW50ZW50Iik7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgIT0gbnVsbDsKLQotICAgICAgICAvLyBTYXZlIGEgY29weSBpbiBjYXNlIGVwaGVtZXJhbCBuZWVkcyBpdAotICAgICAgICBmaW5hbCBJbnRlbnQgZXBoZW1lcmFsSW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOwotICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhlIGNsaWVudCdzIG9iamVjdCEKLSAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOwotCi0gICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0gcmVzb2x2ZUludGVudChpbnRlbnQsIHJlc29sdmVkVHlwZSwgdXNlcklkKTsKLSAgICAgICAgLy8gQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IG9mIHRoZSBJbnRlbnQuCi0gICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbyA9IHJlc29sdmVBY3Rpdml0eShpbnRlbnQsIHJJbmZvLCBzdGFydEZsYWdzLCBwcm9maWxlckluZm8pOwotCi0gICAgICAgIEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zID0gQWN0aXZpdHlPcHRpb25zLmZyb21CdW5kbGUoYk9wdGlvbnMpOwotICAgICAgICBBY3Rpdml0eUNvbnRhaW5lciBjb250YWluZXIgPSAoQWN0aXZpdHlDb250YWluZXIpaUNvbnRhaW5lcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5lciAhPSBudWxsICYmIGNvbnRhaW5lci5tUGFyZW50QWN0aXZpdHkgIT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICAgICBjb250YWluZXIubVBhcmVudEFjdGl2aXR5LnN0YXRlICE9IFJFU1VNRUQpIHsKLSAgICAgICAgICAgICAgICAvLyBDYW5ub3Qgc3RhcnQgYSBjaGlsZCBhY3Rpdml0eSBpZiB0aGUgcGFyZW50IGlzIG5vdCByZXN1bWVkLgotICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfQ0FOQ0VMRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaW5hbCBpbnQgcmVhbENhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOwotICAgICAgICAgICAgZmluYWwgaW50IHJlYWxDYWxsaW5nVWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKLSAgICAgICAgICAgIGludCBjYWxsaW5nUGlkOwotICAgICAgICAgICAgaWYgKGNhbGxpbmdVaWQgPj0gMCkgewotICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSAtMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gcmVhbENhbGxpbmdQaWQ7Ci0gICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IHJlYWxDYWxsaW5nVWlkOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGluZ1VpZCA9IC0xOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHN0YWNrOwotICAgICAgICAgICAgaWYgKGNvbnRhaW5lciA9PSBudWxsIHx8IGNvbnRhaW5lci5tU3RhY2suaXNPbkhvbWVEaXNwbGF5KCkpIHsKLSAgICAgICAgICAgICAgICBzdGFjayA9IG1Gb2N1c2VkU3RhY2s7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0YWNrID0gY29udGFpbmVyLm1TdGFjazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YWNrLm1Db25maWdXaWxsQ2hhbmdlID0gY29uZmlnICE9IG51bGwgJiYgbVNlcnZpY2UubUNvbmZpZ3VyYXRpb24uZGlmZihjb25maWcpICE9IDA7Ci0gICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBR19DT05GSUdVUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAiU3RhcnRpbmcgYWN0aXZpdHkgd2hlbiBjb25maWcgd2lsbCBjaGFuZ2UgPSAiICsgc3RhY2subUNvbmZpZ1dpbGxDaGFuZ2UpOwotCi0gICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwotCi0gICAgICAgICAgICBpZiAoYUluZm8gIT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICAgICAoYUluZm8uYXBwbGljYXRpb25JbmZvLnByaXZhdGVGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZBcHBsaWNhdGlvbkluZm8uUFJJVkFURV9GTEFHX0NBTlRfU0FWRV9TVEFURSkgIT0gMCkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIGEgaGVhdnktd2VpZ2h0IHByb2Nlc3MhICBDaGVjayB0byBzZWUgaWYgd2UgYWxyZWFkeQotICAgICAgICAgICAgICAgIC8vIGhhdmUgYW5vdGhlciwgZGlmZmVyZW50IGhlYXZ5LXdlaWdodCBwcm9jZXNzIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgaWYgKGFJbmZvLnByb2Nlc3NOYW1lLmVxdWFscyhhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtU2VydmljZS5tSGVhdnlXZWlnaHRQcm9jZXNzICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2Vzcy5pbmZvLnVpZCAhPSBhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MucHJvY2Vzc05hbWUuZXF1YWxzKGFJbmZvLnByb2Nlc3NOYW1lKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcHBDYWxsaW5nVWlkID0gY2FsbGluZ1VpZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgY2FsbGVyQXBwID0gbVNlcnZpY2UuZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxlckFwcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcENhbGxpbmdVaWQgPSBjYWxsZXJBcHAuaW5mby51aWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVuYWJsZSB0byBmaW5kIGFwcCBmb3IgY2FsbGVyICIgKyBjYWxsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIChwaWQ9IiArIGNhbGxpbmdQaWQgKyAiKSB3aGVuIHN0YXJ0aW5nOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50LnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUEVSTUlTU0lPTl9ERU5JRUQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBJSW50ZW50U2VuZGVyIHRhcmdldCA9IG1TZXJ2aWNlLmdldEludGVudFNlbmRlckxvY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyLklOVEVOVF9TRU5ERVJfQUNUSVZJVFksICJhbmRyb2lkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwQ2FsbGluZ1VpZCwgdXNlcklkLCBudWxsLCBudWxsLCAwLCBuZXcgSW50ZW50W10geyBpbnRlbnQgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgcmVzb2x2ZWRUeXBlIH0sIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlbmRpbmdJbnRlbnQuRkxBR19PTkVfU0hPVCwgbnVsbCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIEludGVudCBuZXdJbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdENvZGUgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxlciBpcyByZXF1ZXN0aW5nIGEgcmVzdWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuS0VZX0hBU19SRVNVTFQsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfSU5URU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZW50U2VuZGVyKHRhcmdldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MuYWN0aXZpdGllcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgaGlzdCA9IG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MuYWN0aXZpdGllcy5nZXQoMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfQ1VSX0FQUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3QucGFja2FnZU5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuS0VZX0NVUl9UQVNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdC50YXNrLnRhc2tJZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LktFWV9ORVdfQVBQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhSW5mby5wYWNrYWdlTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQuc2V0RmxhZ3MoaW50ZW50LmdldEZsYWdzKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnNldENsYXNzTmFtZSgiYW5kcm9pZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3SW50ZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlciA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U3BlY2lmaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJJbmZvID0gcmVzb2x2ZUludGVudChpbnRlbnQsIG51bGwgLypyZXNvbHZlZFR5cGUqLywgdXNlcklkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvID0gckluZm8gIT0gbnVsbCA/IHJJbmZvLmFjdGl2aXR5SW5mbyA6IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYUluZm8gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvID0gbVNlcnZpY2UuZ2V0QWN0aXZpdHlJbmZvRm9yVXNlcihhSW5mbywgdXNlcklkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaW50IHJlcyA9IHN0YXJ0QWN0aXZpdHlMb2NrZWQoY2FsbGVyLCBpbnRlbnQsIGVwaGVtZXJhbEludGVudCwgcmVzb2x2ZWRUeXBlLAotICAgICAgICAgICAgICAgICAgICBhSW5mbywgckluZm8sIHZvaWNlU2Vzc2lvbiwgdm9pY2VJbnRlcmFjdG9yLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRUbywgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwgY2FsbGluZ1BpZCwKLSAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCwgY2FsbGluZ1BhY2thZ2UsIHJlYWxDYWxsaW5nUGlkLCByZWFsQ2FsbGluZ1VpZCwgc3RhcnRGbGFncywKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgaWdub3JlVGFyZ2V0U2VjdXJpdHksIGNvbXBvbmVudFNwZWNpZmllZCwgbnVsbCwgY29udGFpbmVyLCBpblRhc2spOwotCi0gICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwotCi0gICAgICAgICAgICBpZiAoc3RhY2subUNvbmZpZ1dpbGxDaGFuZ2UpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGFsc28gd2FudHMgdG8gc3dpdGNoIHRvIGEgbmV3IGNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgLy8gZG8gc28gbm93LiAgVGhpcyBhbGxvd3MgYSBjbGVhbiBzd2l0Y2gsIGFzIHdlIGFyZSB3YWl0aW5nCi0gICAgICAgICAgICAgICAgLy8gZm9yIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIHBhdXNlIChzbyB3ZSB3aWxsIG5vdCBkZXN0cm95Ci0gICAgICAgICAgICAgICAgLy8gaXQpLCBhbmQgaGF2ZSBub3QgeWV0IHN0YXJ0ZWQgdGhlIG5leHQgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgbVNlcnZpY2UuZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfQ09ORklHVVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1cGRhdGVDb25maWd1cmF0aW9uKCkiKTsKLSAgICAgICAgICAgICAgICBzdGFjay5tQ29uZmlnV2lsbENoYW5nZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHX0NPTkZJR1VSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAiVXBkYXRpbmcgdG8gbmV3IGNvbmZpZ3VyYXRpb24gYWZ0ZXIgc3RhcnRpbmcgYWN0aXZpdHkuIik7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlQ29uZmlndXJhdGlvbkxvY2tlZChjb25maWcsIG51bGwsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG91dFJlc3VsdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0UmVzdWx0LnJlc3VsdCA9IHJlczsKLSAgICAgICAgICAgICAgICBpZiAocmVzID09IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nQWN0aXZpdHlMYXVuY2hlZC5hZGQob3V0UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS53YWl0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCFvdXRSZXN1bHQudGltZW91dCAmJiBvdXRSZXN1bHQud2hvID09IG51bGwpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9UQVNLX1RPX0ZST05UKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBzdGFjay50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHIubm93VmlzaWJsZSAmJiByLnN0YXRlID09IFJFU1VNRUQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aW1lb3V0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQud2hvID0gbmV3IENvbXBvbmVudE5hbWUoci5pbmZvLnBhY2thZ2VOYW1lLCByLmluZm8ubmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudG90YWxUaW1lID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aGlzVGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGhpc1RpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLmFkZChvdXRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLndhaXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIW91dFJlc3VsdC50aW1lb3V0ICYmIG91dFJlc3VsdC53aG8gPT0gbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0aWVzKElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsIGludCBjYWxsaW5nVWlkLCBTdHJpbmcgY2FsbGluZ1BhY2thZ2UsCi0gICAgICAgICAgICBJbnRlbnRbXSBpbnRlbnRzLCBTdHJpbmdbXSByZXNvbHZlZFR5cGVzLCBJQmluZGVyIHJlc3VsdFRvLAotICAgICAgICAgICAgQnVuZGxlIGJPcHRpb25zLCBpbnQgdXNlcklkKSB7Ci0gICAgICAgIGlmIChpbnRlbnRzID09IG51bGwpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiaW50ZW50cyBpcyBudWxsIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc29sdmVkVHlwZXMgPT0gbnVsbCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJyZXNvbHZlZFR5cGVzIGlzIG51bGwiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW50ZW50cy5sZW5ndGggIT0gcmVzb2x2ZWRUeXBlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudHMgYXJlIGxlbmd0aCBkaWZmZXJlbnQgdGhhbiByZXNvbHZlZFR5cGVzIik7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIGludCBjYWxsaW5nUGlkOwotICAgICAgICBpZiAoY2FsbGluZ1VpZCA+PSAwKSB7Ci0gICAgICAgICAgICBjYWxsaW5nUGlkID0gLTE7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2FsbGVyID09IG51bGwpIHsKLSAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOwotICAgICAgICAgICAgY2FsbGluZ1VpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGluZ1VpZCA9IC0xOwotICAgICAgICB9Ci0gICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7Ci0gICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmRbXSBvdXRBY3Rpdml0eSA9IG5ldyBBY3Rpdml0eVJlY29yZFsxXTsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8aW50ZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gaW50ZW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGludGVudCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIFJlZnVzZSBwb3NzaWJsZSBsZWFrZWQgZmlsZSBkZXNjcmlwdG9ycwotICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZW50ICE9IG51bGwgJiYgaW50ZW50Lmhhc0ZpbGVEZXNjcmlwdG9ycygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJGaWxlIGRlc2NyaXB0b3JzIHBhc3NlZCBpbiBJbnRlbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkID0gaW50ZW50LmdldENvbXBvbmVudCgpICE9IG51bGw7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbW9kaWZ5IHRoZSBjbGllbnQncyBvYmplY3QhCi0gICAgICAgICAgICAgICAgICAgIGludGVudCA9IG5ldyBJbnRlbnQoaW50ZW50KTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0YXJnZXQgb2YgdGhlIEludGVudC4KLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlJbmZvIGFJbmZvID0gcmVzb2x2ZUFjdGl2aXR5KGludGVudCwgcmVzb2x2ZWRUeXBlc1tpXSwgMCwgbnVsbCwgdXNlcklkKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogTmV3LCBjaGVjayBpZiB0aGlzIGlzIGNvcnJlY3QKLSAgICAgICAgICAgICAgICAgICAgYUluZm8gPSBtU2VydmljZS5nZXRBY3Rpdml0eUluZm9Gb3JVc2VyKGFJbmZvLCB1c2VySWQpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChhSW5mbyAhPSBudWxsICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFJbmZvLmFwcGxpY2F0aW9uSW5mby5wcml2YXRlRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgQXBwbGljYXRpb25JbmZvLlBSSVZBVEVfRkxBR19DQU5UX1NBVkVfU1RBVEUpICAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkxBR19DQU5UX1NBVkVfU1RBVEUgbm90IHN1cHBvcnRlZCBoZXJlIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucyA9IEFjdGl2aXR5T3B0aW9ucy5mcm9tQnVuZGxlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPT0gaW50ZW50cy5sZW5ndGggLSAxID8gYk9wdGlvbnMgOiBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IHJlcyA9IHN0YXJ0QWN0aXZpdHlMb2NrZWQoY2FsbGVyLCBpbnRlbnQsIG51bGwgLyplcGhlbWVyYWxJbnRlbnQqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFR5cGVzW2ldLCBhSW5mbywgbnVsbCAvKnJJbmZvKi8sIG51bGwsIG51bGwsIHJlc3VsdFRvLCBudWxsLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsaW5nUGlkLCBjYWxsaW5nVWlkLCBjYWxsaW5nUGFja2FnZSwgY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLCBmYWxzZSwgY29tcG9uZW50U3BlY2lmaWVkLCBvdXRBY3Rpdml0eSwgbnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0VG8gPSBvdXRBY3Rpdml0eVswXSAhPSBudWxsID8gb3V0QWN0aXZpdHlbMF0uYXBwVG9rZW4gOiBudWxsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1M7Ci0gICAgfQotCiAgICAgZmluYWwgYm9vbGVhbiByZWFsU3RhcnRBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAogICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBhcHAsIGJvb2xlYW4gYW5kUmVzdW1lLCBib29sZWFuIGNoZWNrQ29uZmlnKQogICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CkBAIC0xNTAwLDM0OCArMTIwNyw3IEBACiAgICAgICAgICAgICAgICAgImFjdGl2aXR5Iiwgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCksIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlMb2NrZWQoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgSW50ZW50IGludGVudCwgSW50ZW50IGVwaGVtZXJhbEludGVudCwKLSAgICAgICAgICAgIFN0cmluZyByZXNvbHZlZFR5cGUsIEFjdGl2aXR5SW5mbyBhSW5mbywgUmVzb2x2ZUluZm8gckluZm8sCi0gICAgICAgICAgICBJVm9pY2VJbnRlcmFjdGlvblNlc3Npb24gdm9pY2VTZXNzaW9uLCBJVm9pY2VJbnRlcmFjdG9yIHZvaWNlSW50ZXJhY3RvciwKLSAgICAgICAgICAgIElCaW5kZXIgcmVzdWx0VG8sIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgaW50IGNhbGxpbmdQaWQsIGludCBjYWxsaW5nVWlkLAotICAgICAgICAgICAgU3RyaW5nIGNhbGxpbmdQYWNrYWdlLCBpbnQgcmVhbENhbGxpbmdQaWQsIGludCByZWFsQ2FsbGluZ1VpZCwgaW50IHN0YXJ0RmxhZ3MsCi0gICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgYm9vbGVhbiBpZ25vcmVUYXJnZXRTZWN1cml0eSwgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQsCi0gICAgICAgICAgICBBY3Rpdml0eVJlY29yZFtdIG91dEFjdGl2aXR5LCBBY3Rpdml0eUNvbnRhaW5lciBjb250YWluZXIsIFRhc2tSZWNvcmQgaW5UYXNrKSB7Ci0gICAgICAgIGludCBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUzsKLQotICAgICAgICBQcm9jZXNzUmVjb3JkIGNhbGxlckFwcCA9IG51bGw7Ci0gICAgICAgIGlmIChjYWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgY2FsbGVyQXBwID0gbVNlcnZpY2UuZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7Ci0gICAgICAgICAgICBpZiAoY2FsbGVyQXBwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGVyQXBwLnBpZDsKLSAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gY2FsbGVyQXBwLmluZm8udWlkOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGZpbmQgYXBwIGZvciBjYWxsZXIgIiArIGNhbGxlcgotICAgICAgICAgICAgICAgICAgICAgICsgIiAocGlkPSIgKyBjYWxsaW5nUGlkICsgIikgd2hlbiBzdGFydGluZzogIgotICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50LnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGVyciA9IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9QRVJNSVNTSU9OX0RFTklFRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIGludCB1c2VySWQgPSBhSW5mbyAhPSBudWxsID8gVXNlckhhbmRsZS5nZXRVc2VySWQoYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCkgOiAwOwotCi0gICAgICAgIGlmIChlcnIgPT0gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIFNsb2cuaShUQUcsICJTVEFSVCB1IiArIHVzZXJJZCArICIgeyIgKyBpbnRlbnQudG9TaG9ydFN0cmluZyh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgKyAifSBmcm9tIHVpZCAiICsgY2FsbGluZ1VpZAotICAgICAgICAgICAgICAgICAgICArICIgb24gZGlzcGxheSAiICsgKGNvbnRhaW5lciA9PSBudWxsID8gKG1Gb2N1c2VkU3RhY2sgPT0gbnVsbCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheS5ERUZBVUxUX0RJU1BMQVkgOiBtRm9jdXNlZFN0YWNrLm1EaXNwbGF5SWQpIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGFpbmVyLm1BY3Rpdml0eURpc3BsYXkgPT0gbnVsbCA/IERpc3BsYXkuREVGQVVMVF9ESVNQTEFZIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tQWN0aXZpdHlEaXNwbGF5Lm1EaXNwbGF5SWQpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBBY3Rpdml0eVJlY29yZCBzb3VyY2VSZWNvcmQgPSBudWxsOwotICAgICAgICBBY3Rpdml0eVJlY29yZCByZXN1bHRSZWNvcmQgPSBudWxsOwotICAgICAgICBpZiAocmVzdWx0VG8gIT0gbnVsbCkgewotICAgICAgICAgICAgc291cmNlUmVjb3JkID0gaXNJbkFueVN0YWNrTG9ja2VkKHJlc3VsdFRvKTsKLSAgICAgICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoVEFHX1JFU1VMVFMsCi0gICAgICAgICAgICAgICAgICAgICJXaWxsIHNlbmQgcmVzdWx0IHRvICIgKyByZXN1bHRUbyArICIgIiArIHNvdXJjZVJlY29yZCk7Ci0gICAgICAgICAgICBpZiAoc291cmNlUmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWVzdENvZGUgPj0gMCAmJiAhc291cmNlUmVjb3JkLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQgPSBzb3VyY2VSZWNvcmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgaW50IGxhdW5jaEZsYWdzID0gaW50ZW50LmdldEZsYWdzKCk7Ci0KLSAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIEludGVudC5GTEFHX0FDVElWSVRZX0ZPUldBUkRfUkVTVUxUKSAhPSAwICYmIHNvdXJjZVJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBUcmFuc2ZlciB0aGUgcmVzdWx0IHRhcmdldCBmcm9tIHRoZSBzb3VyY2UgYWN0aXZpdHkgdG8gdGhlIG5ldwotICAgICAgICAgICAgLy8gb25lIGJlaW5nIHN0YXJ0ZWQsIGluY2x1ZGluZyBhbnkgZmFpbHVyZXMuCi0gICAgICAgICAgICBpZiAocmVxdWVzdENvZGUgPj0gMCkgewotICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0ZPUldBUkRfQU5EX1JFUVVFU1RfQ09ORkxJQ1Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHRSZWNvcmQgPSBzb3VyY2VSZWNvcmQucmVzdWx0VG87Ci0gICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwgJiYgIXJlc3VsdFJlY29yZC5pc0luU3RhY2tMb2NrZWQoKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHRXaG8gPSBzb3VyY2VSZWNvcmQucmVzdWx0V2hvOwotICAgICAgICAgICAgcmVxdWVzdENvZGUgPSBzb3VyY2VSZWNvcmQucmVxdWVzdENvZGU7Ci0gICAgICAgICAgICBzb3VyY2VSZWNvcmQucmVzdWx0VG8gPSBudWxsOwotICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLnJlbW92ZVJlc3VsdHNMb2NrZWQoc291cmNlUmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWNvcmQubGF1bmNoZWRGcm9tVWlkID09IGNhbGxpbmdVaWQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgbmV3IGFjdGl2aXR5IGlzIGJlaW5nIGxhdW5jaGVkIGZyb20gdGhlIHNhbWUgdWlkIGFzIHRoZSBwcmV2aW91cwotICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGluIHRoZSBmbG93LCBhbmQgYXNraW5nIHRvIGZvcndhcmQgaXRzIHJlc3VsdCBiYWNrIHRvIHRoZQotICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzLiAgSW4gdGhpcyBjYXNlIHRoZSBhY3Rpdml0eSBpcyBzZXJ2aW5nIGFzIGEgdHJhbXBvbGluZSBiZXR3ZWVuCi0gICAgICAgICAgICAgICAgLy8gdGhlIHR3bywgc28gd2UgYWxzbyB3YW50IHRvIHVwZGF0ZSBpdHMgbGF1bmNoZWRGcm9tUGFja2FnZSB0byBiZSB0aGUKLSAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIHRoZSBwcmV2aW91cyBhY3Rpdml0eS4gIE5vdGUgdGhhdCB0aGlzIGlzIHNhZmUsIHNpbmNlIHdlIGtub3cKLSAgICAgICAgICAgICAgICAvLyB0aGVzZSB0d28gcGFja2FnZXMgY29tZSBmcm9tIHRoZSBzYW1lIHVpZDsgdGhlIGNhbGxlciBjb3VsZCBqdXN0IGFzCi0gICAgICAgICAgICAgICAgLy8gd2VsbCBoYXZlIHN1cHBsaWVkIHRoYXQgc2FtZSBwYWNrYWdlIG5hbWUgaXRzZWxmLiAgVGhpcyBzcGVjaWZpYWxseQotICAgICAgICAgICAgICAgIC8vIGRlYWxzIHdpdGggdGhlIGNhc2Ugb2YgYW4gaW50ZW50IHBpY2tlci9jaG9vc2VyIGJlaW5nIGxhdW5jaGVkIGluIHRoZSBhcHAKLSAgICAgICAgICAgICAgICAvLyBmbG93IHRvIHJlZGlyZWN0IHRvIGFuIGFjdGl2aXR5IHBpY2tlZCBieSB0aGUgdXNlciwgd2hlcmUgd2Ugd2FudCB0aGUgZmluYWwKLSAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSB0byBjb25zaWRlciBpdCB0byBoYXZlIGJlZW4gbGF1bmNoZWQgYnkgdGhlIHByZXZpb3VzIGFwcCBhY3Rpdml0eS4KLSAgICAgICAgICAgICAgICBjYWxsaW5nUGFja2FnZSA9IHNvdXJjZVJlY29yZC5sYXVuY2hlZEZyb21QYWNrYWdlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVyciA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUyAmJiBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCBhIGNsYXNzIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gSW50ZW50LgotICAgICAgICAgICAgLy8gVGhhdCdzIHRoZSBlbmQgb2YgdGhhdCEKLSAgICAgICAgICAgIGVyciA9IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9JTlRFTlRfTk9UX1JFU09MVkVEOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVyciA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUyAmJiBhSW5mbyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBXZSBjb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpYyBjbGFzcyBzcGVjaWZpZWQgaW4gdGhlIEludGVudC4KLSAgICAgICAgICAgIC8vIEFsc28gdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAgICAgICAgICAgIGVyciA9IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9DTEFTU19OT1RfRk9VTkQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZXJyID09IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTICYmIHNvdXJjZVJlY29yZCAhPSBudWxsCi0gICAgICAgICAgICAgICAgJiYgc291cmNlUmVjb3JkLnRhc2sudm9pY2VTZXNzaW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgYmVpbmcgbGF1bmNoZWQgYXMgcGFydCBvZiBhIHZvaWNlIHNlc3Npb24sIHdlIG5lZWQKLSAgICAgICAgICAgIC8vIHRvIGVuc3VyZSB0aGF0IGl0IGlzIHNhZmUgdG8gZG8gc28uICBJZiB0aGUgdXBjb21pbmcgYWN0aXZpdHkgd2lsbCBhbHNvCi0gICAgICAgICAgICAvLyBiZSBwYXJ0IG9mIHRoZSB2b2ljZSBzZXNzaW9uLCB3ZSBjYW4gb25seSBsYXVuY2ggaXQgaWYgaXQgaGFzIGV4cGxpY2l0bHkKLSAgICAgICAgICAgIC8vIHNhaWQgaXQgc3VwcG9ydHMgdGhlIFZPSUNFIGNhdGVnb3J5LCBvciBpdCBpcyBhIHBhcnQgb2YgdGhlIGNhbGxpbmcgYXBwLgotICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIEZMQUdfQUNUSVZJVFlfTkVXX1RBU0spID09IDAKLSAgICAgICAgICAgICAgICAgICAgJiYgc291cmNlUmVjb3JkLmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCAhPSBhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgaW50ZW50LmFkZENhdGVnb3J5KEludGVudC5DQVRFR09SWV9WT0lDRSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmFjdGl2aXR5U3VwcG9ydHNJbnRlbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldENvbXBvbmVudCgpLCBpbnRlbnQsIHJlc29sdmVkVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3Rpdml0eSBiZWluZyBzdGFydGVkIGluIGN1cnJlbnQgdm9pY2UgdGFzayBkb2VzIG5vdCBzdXBwb3J0IHZvaWNlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9OT1RfVk9JQ0VfQ09NUEFUSUJMRTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJGYWlsdXJlIGNoZWNraW5nIHZvaWNlIGNhcGFiaWxpdGllcyIsIGUpOwotICAgICAgICAgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfTk9UX1ZPSUNFX0NPTVBBVElCTEU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVyciA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUyAmJiB2b2ljZVNlc3Npb24gIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBzdGFydGluZyBhIG5ldyB2b2ljZSBzZXNzaW9uLCBqdXN0IG1ha2Ugc3VyZSB0aGUgdGFyZ2V0Ci0gICAgICAgICAgICAvLyBpcyBhY3R1YWxseSBhbGxvd2luZyBpdCB0byBydW4gdGhpcyB3YXkuCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmICghQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmFjdGl2aXR5U3VwcG9ydHNJbnRlbnQoaW50ZW50LmdldENvbXBvbmVudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2aXR5IGJlaW5nIHN0YXJ0ZWQgaW4gbmV3IHZvaWNlIHRhc2sgZG9lcyBub3Qgc3VwcG9ydDogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX05PVF9WT0lDRV9DT01QQVRJQkxFOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkZhaWx1cmUgY2hlY2tpbmcgdm9pY2UgY2FwYWJpbGl0aWVzIiwgZSk7Ci0gICAgICAgICAgICAgICAgZXJyID0gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX05PVF9WT0lDRV9DT01QQVRJQkxFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgQWN0aXZpdHlTdGFjayByZXN1bHRTdGFjayA9IHJlc3VsdFJlY29yZCA9PSBudWxsID8gbnVsbCA6IHJlc3VsdFJlY29yZC50YXNrLnN0YWNrOwotCi0gICAgICAgIGlmIChlcnIgIT0gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJlc3VsdFN0YWNrLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOwotICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2xlYW4gYWJvcnQgPSAhY2hlY2tTdGFydEFueUFjdGl2aXR5UGVybWlzc2lvbihpbnRlbnQsIGFJbmZvLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAotICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQsIGNhbGxpbmdQYWNrYWdlLCBpZ25vcmVUYXJnZXRTZWN1cml0eSwgY2FsbGVyQXBwLAotICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0U3RhY2spOwotICAgICAgICBhYm9ydCB8PSAhbVNlcnZpY2UubUludGVudEZpcmV3YWxsLmNoZWNrU3RhcnRBY3Rpdml0eShpbnRlbnQsIGNhbGxpbmdVaWQsCi0gICAgICAgICAgICAgICAgY2FsbGluZ1BpZCwgcmVzb2x2ZWRUeXBlLCBhSW5mby5hcHBsaWNhdGlvbkluZm8pOwotCi0gICAgICAgIGlmIChtU2VydmljZS5tQ29udHJvbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBJbnRlbnQgd2UgZ2l2ZSB0byB0aGUgd2F0Y2hlciBoYXMgdGhlIGV4dHJhIGRhdGEKLSAgICAgICAgICAgICAgICAvLyBzdHJpcHBlZCBvZmYsIHNpbmNlIGl0IGNhbiBjb250YWluIHByaXZhdGUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgSW50ZW50IHdhdGNoSW50ZW50ID0gaW50ZW50LmNsb25lRmlsdGVyKCk7Ci0gICAgICAgICAgICAgICAgYWJvcnQgfD0gIW1TZXJ2aWNlLm1Db250cm9sbGVyLmFjdGl2aXR5U3RhcnRpbmcod2F0Y2hJbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBtU2VydmljZS5tQ29udHJvbGxlciA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBVc2VySW5mbyB1c2VyID0gZ2V0VXNlckluZm8odXNlcklkKTsKLSAgICAgICAgS2V5Z3VhcmRNYW5hZ2VyIGttID0gKEtleWd1YXJkTWFuYWdlcikgbVNlcnZpY2UubUNvbnRleHQKLSAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LktFWUdVQVJEX1NFUlZJQ0UpOwotICAgICAgICBpZiAodXNlci5pc01hbmFnZWRQcm9maWxlKCkKLSAgICAgICAgICAgICAgICAmJiBMb2NrUGF0dGVyblV0aWxzLmlzU2VwYXJhdGVXb3JrQ2hhbGxlbmdlRW5hYmxlZCgpCi0gICAgICAgICAgICAgICAgJiYga20uaXNEZXZpY2VMb2NrZWQodXNlcklkKSkgewotICAgICAgICAgICAgSUludGVudFNlbmRlciB0YXJnZXQgPSBtU2VydmljZS5nZXRJbnRlbnRTZW5kZXJMb2NrZWQoCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlci5JTlRFTlRfU0VOREVSX0FDVElWSVRZLCBjYWxsaW5nUGFja2FnZSwKLSAgICAgICAgICAgICAgICAgICAgQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBudWxsLCBudWxsLCAwLCBuZXcgSW50ZW50W117IGludGVudCB9LAotICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW117IHJlc29sdmVkVHlwZSB9LAotICAgICAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQgfCBQZW5kaW5nSW50ZW50LkZMQUdfT05FX1NIT1QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlbmRpbmdJbnRlbnQuRkxBR19JTU1VVEFCTEUsIG51bGwpOwotICAgICAgICAgICAgZmluYWwgaW50IGZsYWdzID0gaW50ZW50LmdldEZsYWdzKCk7Ci0gICAgICAgICAgICBmaW5hbCBJbnRlbnQgbmV3SW50ZW50ID0ga20uY3JlYXRlQ29uZmlybURldmljZUNyZWRlbnRpYWxJbnRlbnQobnVsbCwgbnVsbCwgdXNlci5pZCk7Ci0gICAgICAgICAgICBpZiAobmV3SW50ZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpbnRlbnQgPSBuZXdJbnRlbnQ7Ci0gICAgICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKGZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLCi0gICAgICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX0VYQ0xVREVfRlJPTV9SRUNFTlRTKTsKLSAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX1BBQ0tBR0VfTkFNRSwgYUluZm8ucGFja2FnZU5hbWUpOwotICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfSU5URU5ULCBuZXcgSW50ZW50U2VuZGVyKHRhcmdldCkpOwotCi0gICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlID0gbnVsbDsKLSAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gcmVhbENhbGxpbmdVaWQ7Ci0gICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IHJlYWxDYWxsaW5nUGlkOwotCi0gICAgICAgICAgICAgICAgVXNlckluZm8gcGFyZW50ID0gVXNlck1hbmFnZXIuZ2V0KG1TZXJ2aWNlLm1Db250ZXh0KS5nZXRQcm9maWxlUGFyZW50KHVzZXJJZCk7Ci0gICAgICAgICAgICAgICAgckluZm8gPSByZXNvbHZlSW50ZW50KGludGVudCwgcmVzb2x2ZWRUeXBlLCBwYXJlbnQuaWQpOwotICAgICAgICAgICAgICAgIGFJbmZvID0gcmVzb2x2ZUFjdGl2aXR5KGludGVudCwgckluZm8sIHN0YXJ0RmxhZ3MsIG51bGwgLypwcm9maWxlckluZm8qLyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYWJvcnQpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJlc3VsdFN0YWNrLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIFdlIHByZXRlbmQgdG8gdGhlIGNhbGxlciB0aGF0IGl0IHdhcyByZWFsbHkgc3RhcnRlZCwgYnV0Ci0gICAgICAgICAgICAvLyB0aGV5IHdpbGwganVzdCBnZXQgYSBjYW5jZWwgcmVzdWx0LgotICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOwotICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgcGVybWlzc2lvbnMgbmVlZCBhIHJldmlldyBiZWZvcmUgYW55IG9mIHRoZSBhcHAgY29tcG9uZW50cyBjYW4gcnVuLCB3ZQotICAgICAgICAvLyBsYXVuY2ggdGhlIHJldmlldyBhY3Rpdml0eSBhbmQgcGFzcyBhIHBlbmRpbmcgaW50ZW50IHRvIHN0YXJ0IHRoZSBhY3Rpdml0eQotICAgICAgICAvLyB3ZSBhcmUgdG8gbGF1bmNoaW5nIG5vdyBhZnRlciB0aGUgcmV2aWV3IGlzIGNvbXBsZXRlZC4KLSAgICAgICAgaWYgKEJ1aWxkLlBFUk1JU1NJT05TX1JFVklFV19SRVFVSVJFRCAmJiBhSW5mbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAobVNlcnZpY2UuZ2V0UGFja2FnZU1hbmFnZXJJbnRlcm5hbExvY2tlZCgpLmlzUGVybWlzc2lvbnNSZXZpZXdSZXF1aXJlZCgKLSAgICAgICAgICAgICAgICAgICAgYUluZm8ucGFja2FnZU5hbWUsIHVzZXJJZCkpIHsKLSAgICAgICAgICAgICAgICBJSW50ZW50U2VuZGVyIHRhcmdldCA9IG1TZXJ2aWNlLmdldEludGVudFNlbmRlckxvY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlci5JTlRFTlRfU0VOREVSX0FDVElWSVRZLCBjYWxsaW5nUGFja2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQsIHVzZXJJZCwgbnVsbCwgbnVsbCwgMCwgbmV3IEludGVudFtde2ludGVudH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW117cmVzb2x2ZWRUeXBlfSwgUGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVuZGluZ0ludGVudC5GTEFHX09ORV9TSE9ULCBudWxsKTsKLQotICAgICAgICAgICAgICAgIGZpbmFsIGludCBmbGFncyA9IGludGVudC5nZXRGbGFncygpOwotICAgICAgICAgICAgICAgIEludGVudCBuZXdJbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fUkVWSUVXX1BFUk1JU1NJT05TKTsKLSAgICAgICAgICAgICAgICBuZXdJbnRlbnQuc2V0RmxhZ3MoZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfRVhDTFVERV9GUk9NX1JFQ0VOVFMpOwotICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfUEFDS0FHRV9OQU1FLCBhSW5mby5wYWNrYWdlTmFtZSk7Ci0gICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9JTlRFTlQsIG5ldyBJbnRlbnRTZW5kZXIodGFyZ2V0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfUkVTVUxUX05FRURFRCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGludGVudCA9IG5ld0ludGVudDsKLQotICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IHJlYWxDYWxsaW5nVWlkOwotICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSByZWFsQ2FsbGluZ1BpZDsKLQotICAgICAgICAgICAgICAgIHJJbmZvID0gcmVzb2x2ZUludGVudChpbnRlbnQsIHJlc29sdmVkVHlwZSwgdXNlcklkKTsKLSAgICAgICAgICAgICAgICBhSW5mbyA9IHJlc29sdmVBY3Rpdml0eShpbnRlbnQsIHJJbmZvLCBzdGFydEZsYWdzLCBudWxsIC8qcHJvZmlsZXJJbmZvKi8pOwotCi0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BFUk1JU1NJT05TX1JFVklFVykgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiU1RBUlQgdSIgKyB1c2VySWQgKyAiIHsiICsgaW50ZW50LnRvU2hvcnRTdHJpbmcodHJ1ZSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBmYWxzZSkgKyAifSBmcm9tIHVpZCAiICsgY2FsbGluZ1VpZCArICIgb24gZGlzcGxheSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoY29udGFpbmVyID09IG51bGwgPyAobUZvY3VzZWRTdGFjayA9PSBudWxsID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5LkRFRkFVTFRfRElTUExBWSA6IG1Gb2N1c2VkU3RhY2subURpc3BsYXlJZCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWluZXIubUFjdGl2aXR5RGlzcGxheSA9PSBudWxsID8gRGlzcGxheS5ERUZBVUxUX0RJU1BMQVkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1BY3Rpdml0eURpc3BsYXkubURpc3BsYXlJZCkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGVwaGVtZXJhbCBhcHAsIGFib3J0IHRoZSBwcm9jZXNzIG9mIGxhdW5jaGluZyB0aGUgcmVzb2x2ZWQgaW50ZW50LgotICAgICAgICAvLyBJbnN0ZWFkLCBsYXVuY2ggdGhlIGVwaGVtZXJhbCBpbnN0YWxsZXIuIE9uY2UgdGhlIGluc3RhbGxlciBpcyBmaW5pc2hlZCwgaXQKLSAgICAgICAgLy8gc3RhcnRzIGVpdGhlciB0aGUgaW50ZW50IHdlIHJlc29sdmVkIGhlcmUgW29uIGluc3RhbGwgZXJyb3JdIG9yIHRoZSBlcGhlbWVyYWwKLSAgICAgICAgLy8gYXBwIFtvbiBpbnN0YWxsIHN1Y2Nlc3NdLgotICAgICAgICBpZiAockluZm8gIT0gbnVsbCAmJiBySW5mby5lcGhlbWVyYWxSZXNvbHZlSW5mbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBDcmVhdGUgYSBwZW5kaW5nIGludGVudCB0byBzdGFydCB0aGUgaW50ZW50IHJlc29sdmVkIGhlcmUuCi0gICAgICAgICAgICBmaW5hbCBJSW50ZW50U2VuZGVyIGZhaWx1cmVUYXJnZXQgPSBtU2VydmljZS5nZXRJbnRlbnRTZW5kZXJMb2NrZWQoCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlci5JTlRFTlRfU0VOREVSX0FDVElWSVRZLCBjYWxsaW5nUGFja2FnZSwKLSAgICAgICAgICAgICAgICAgICAgQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBudWxsLCBudWxsLCAwLCBuZXcgSW50ZW50W117IGludGVudCB9LAotICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW117IHJlc29sdmVkVHlwZSB9LAotICAgICAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQgfCBQZW5kaW5nSW50ZW50LkZMQUdfT05FX1NIT1QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlbmRpbmdJbnRlbnQuRkxBR19JTU1VVEFCTEUsIG51bGwpOwotCi0gICAgICAgICAgICAvLyBDcmVhdGUgYSBwZW5kaW5nIGludGVudCB0byBzdGFydCB0aGUgZXBoZW1lcmFsIGFwcGxpY2F0aW9uOyBmb3JjZSBpdCB0byBiZQotICAgICAgICAgICAgLy8gZGlyZWN0ZWQgdG8gdGhlIGVwaGVtZXJhbCBwYWNrYWdlLgotICAgICAgICAgICAgZXBoZW1lcmFsSW50ZW50LnNldFBhY2thZ2UockluZm8uZXBoZW1lcmFsUmVzb2x2ZUluZm8uZ2V0UGFja2FnZU5hbWUoKSk7Ci0gICAgICAgICAgICBmaW5hbCBJSW50ZW50U2VuZGVyIGVwaGVtZXJhbFRhcmdldCA9IG1TZXJ2aWNlLmdldEludGVudFNlbmRlckxvY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyLklOVEVOVF9TRU5ERVJfQUNUSVZJVFksIGNhbGxpbmdQYWNrYWdlLAotICAgICAgICAgICAgICAgICAgICBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCB1c2VySWQsIG51bGwsIG51bGwsIDAsIG5ldyBJbnRlbnRbXXsgZXBoZW1lcmFsSW50ZW50IH0sCi0gICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsgcmVzb2x2ZWRUeXBlIH0sCi0gICAgICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVCB8IFBlbmRpbmdJbnRlbnQuRkxBR19PTkVfU0hPVAotICAgICAgICAgICAgICAgICAgICB8IFBlbmRpbmdJbnRlbnQuRkxBR19JTU1VVEFCTEUsIG51bGwpOwotCi0gICAgICAgICAgICBpbnQgZmxhZ3MgPSBpbnRlbnQuZ2V0RmxhZ3MoKTsKLSAgICAgICAgICAgIGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgIGludGVudC5zZXRGbGFncyhmbGFncwotICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLCi0gICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfRVhDTFVERV9GUk9NX1JFQ0VOVFMpOwotICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9QQUNLQUdFX05BTUUsCi0gICAgICAgICAgICAgICAgICAgIHJJbmZvLmVwaGVtZXJhbFJlc29sdmVJbmZvLmdldFBhY2thZ2VOYW1lKCkpOwotICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9FUEhFTUVSQUxfRkFJTFVSRSwgbmV3IEludGVudFNlbmRlcihmYWlsdXJlVGFyZ2V0KSk7Ci0gICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0VQSEVNRVJBTF9TVUNDRVNTLCBuZXcgSW50ZW50U2VuZGVyKGVwaGVtZXJhbFRhcmdldCkpOwotCi0gICAgICAgICAgICByZXNvbHZlZFR5cGUgPSBudWxsOwotICAgICAgICAgICAgY2FsbGluZ1VpZCA9IHJlYWxDYWxsaW5nVWlkOwotICAgICAgICAgICAgY2FsbGluZ1BpZCA9IHJlYWxDYWxsaW5nUGlkOwotCi0gICAgICAgICAgICBySW5mbyA9IHJJbmZvLmVwaGVtZXJhbEluc3RhbGxlcjsKLSAgICAgICAgICAgIGFJbmZvID0gcmVzb2x2ZUFjdGl2aXR5KGludGVudCwgckluZm8sIHN0YXJ0RmxhZ3MsIG51bGwgLypwcm9maWxlckluZm8qLyk7Ci0gICAgICAgIH0KLQotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbmV3IEFjdGl2aXR5UmVjb3JkKG1TZXJ2aWNlLCBjYWxsZXJBcHAsIGNhbGxpbmdVaWQsIGNhbGxpbmdQYWNrYWdlLAotICAgICAgICAgICAgICAgIGludGVudCwgcmVzb2x2ZWRUeXBlLCBhSW5mbywgbVNlcnZpY2UubUNvbmZpZ3VyYXRpb24sIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLAotICAgICAgICAgICAgICAgIHJlcXVlc3RDb2RlLCBjb21wb25lbnRTcGVjaWZpZWQsIHZvaWNlU2Vzc2lvbiAhPSBudWxsLCB0aGlzLCBjb250YWluZXIsIG9wdGlvbnMpOwotICAgICAgICBpZiAob3V0QWN0aXZpdHkgIT0gbnVsbCkgewotICAgICAgICAgICAgb3V0QWN0aXZpdHlbMF0gPSByOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHIuYXBwVGltZVRyYWNrZXIgPT0gbnVsbCAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBkaWRuJ3Qgc3BlY2lmeSBhbiBleHBsaWNpdCB0aW1lIHRyYWNrZXIsIHdlIHdhbnQgdG8gY29udGludWUKLSAgICAgICAgICAgIC8vIHRyYWNraW5nIHVuZGVyIGFueSBpdCBoYXMuCi0gICAgICAgICAgICByLmFwcFRpbWVUcmFja2VyID0gc291cmNlUmVjb3JkLmFwcFRpbWVUcmFja2VyOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgQWN0aXZpdHlTdGFjayBzdGFjayA9IG1Gb2N1c2VkU3RhY2s7Ci0gICAgICAgIGlmICh2b2ljZVNlc3Npb24gPT0gbnVsbCAmJiAoc3RhY2subVJlc3VtZWRBY3Rpdml0eSA9PSBudWxsCi0gICAgICAgICAgICAgICAgfHwgc3RhY2subVJlc3VtZWRBY3Rpdml0eS5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgIT0gY2FsbGluZ1VpZCkpIHsKLSAgICAgICAgICAgIGlmICghbVNlcnZpY2UuY2hlY2tBcHBTd2l0Y2hBbGxvd2VkTG9ja2VkKGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQsCi0gICAgICAgICAgICAgICAgICAgIHJlYWxDYWxsaW5nUGlkLCByZWFsQ2FsbGluZ1VpZCwgIkFjdGl2aXR5IHN0YXJ0IikpIHsKLSAgICAgICAgICAgICAgICBQZW5kaW5nQWN0aXZpdHlMYXVuY2ggcGFsID0gIG5ldyBQZW5kaW5nQWN0aXZpdHlMYXVuY2gociwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCwgc3RhcnRGbGFncywgc3RhY2ssIGNhbGxlckFwcCk7Ci0gICAgICAgICAgICAgICAgbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLmFkZChwYWwpOwotICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NXSVRDSEVTX0NBTkNFTEVEOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1TZXJ2aWNlLm1EaWRBcHBTd2l0Y2gpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHNlY29uZCBhbGxvd2VkIHN3aXRjaCBzaW5jZSB3ZSBzdG9wcGVkIHN3aXRjaGVzLAotICAgICAgICAgICAgLy8gc28gbm93IGp1c3QgZ2VuZXJhbGx5IGFsbG93IHN3aXRjaGVzLiAgVXNlIGNhc2U6IHVzZXIgcHJlc3NlcwotICAgICAgICAgICAgLy8gaG9tZSAoc3dpdGNoZXMgZGlzYWJsZWQsIHN3aXRjaCB0byBob21lLCBtRGlkQXBwU3dpdGNoIG5vdyB0cnVlKTsKLSAgICAgICAgICAgIC8vIHVzZXIgdGFwcyBhIGhvbWUgaWNvbiAoY29taW5nIGZyb20gaG9tZSBzbyBhbGxvd2VkLCB3ZSBoaXQgaGVyZQotICAgICAgICAgICAgLy8gYW5kIG5vdyBhbGxvdyBhbnlvbmUgdG8gc3dpdGNoIGFnYWluKS4KLSAgICAgICAgICAgIG1TZXJ2aWNlLm1BcHBTd2l0Y2hlc0FsbG93ZWRUaW1lID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLm1EaWRBcHBTd2l0Y2ggPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9QZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChmYWxzZSk7Ci0KLSAgICAgICAgZXJyID0gc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChyLCBzb3VyY2VSZWNvcmQsIHZvaWNlU2Vzc2lvbiwgdm9pY2VJbnRlcmFjdG9yLAotICAgICAgICAgICAgICAgIHN0YXJ0RmxhZ3MsIHRydWUsIG9wdGlvbnMsIGluVGFzayk7Ci0KLSAgICAgICAgaWYgKGVyciA8IDApIHsKLSAgICAgICAgICAgIC8vIElmIHNvbWVvbmUgYXNrZWQgdG8gaGF2ZSB0aGUga2V5Z3VhcmQgZGlzbWlzc2VkIG9uIHRoZSBuZXh0Ci0gICAgICAgICAgICAvLyBhY3Rpdml0eSBzdGFydCwgYnV0IHdlIGFyZSBub3QgYWN0dWFsbHkgZG9pbmcgYW4gYWN0aXZpdHkKLSAgICAgICAgICAgIC8vIHN3aXRjaC4uLiAganVzdCBkaXNtaXNzIHRoZSBrZXlndWFyZCBub3csIGJlY2F1c2Ugd2UKLSAgICAgICAgICAgIC8vIHByb2JhYmx5IHdhbnQgdG8gc2VlIHdoYXRldmVyIGlzIGJlaGluZCBpdC4KLSAgICAgICAgICAgIG5vdGlmeUFjdGl2aXR5RHJhd25Gb3JLZXlndWFyZCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIGNoZWNrU3RhcnRBbnlBY3Rpdml0eVBlcm1pc3Npb24oSW50ZW50IGludGVudCwgQWN0aXZpdHlJbmZvIGFJbmZvLAorICAgIGJvb2xlYW4gY2hlY2tTdGFydEFueUFjdGl2aXR5UGVybWlzc2lvbihJbnRlbnQgaW50ZW50LCBBY3Rpdml0eUluZm8gYUluZm8sCiAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsIGludCBjYWxsaW5nUGlkLCBpbnQgY2FsbGluZ1VpZCwKICAgICAgICAgICAgIFN0cmluZyBjYWxsaW5nUGFja2FnZSwgYm9vbGVhbiBpZ25vcmVUYXJnZXRTZWN1cml0eSwgUHJvY2Vzc1JlY29yZCBjYWxsZXJBcHAsCiAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByZXN1bHRSZWNvcmQsIEFjdGl2aXR5U3RhY2sgcmVzdWx0U3RhY2spIHsKQEAgLTE5MDEsNyArMTI2Nyw3IEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHByaXZhdGUgVXNlckluZm8gZ2V0VXNlckluZm8oaW50IHVzZXJJZCkgeworICAgIFVzZXJJbmZvIGdldFVzZXJJbmZvKGludCB1c2VySWQpIHsKICAgICAgICAgZmluYWwgbG9uZyBpZGVudGl0eSA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgcmV0dXJuIFVzZXJNYW5hZ2VyLmdldChtU2VydmljZS5tQ29udGV4dCkuZ2V0VXNlckluZm8odXNlcklkKTsKQEAgLTE5NzksMTA0ICsxMzQ1LDYgQEAKICAgICAgICAgcmV0dXJuIEFDVElWSVRZX1JFU1RSSUNUSU9OX05PTkU7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBBY3Rpdml0eVN0YWNrIGNvbXB1dGVTdGFja0ZvY3VzKEFjdGl2aXR5UmVjb3JkIHIsIGJvb2xlYW4gbmV3VGFzaywgUmVjdCBib3VuZHMsCi0gICAgICAgICAgICBpbnQgbGF1bmNoRmxhZ3MpIHsKLSAgICAgICAgZmluYWwgVGFza1JlY29yZCB0YXNrID0gci50YXNrOwotICAgICAgICBpZiAoIShyLmlzQXBwbGljYXRpb25BY3Rpdml0eSgpIHx8ICh0YXNrICE9IG51bGwgJiYgdGFzay5pc0FwcGxpY2F0aW9uVGFzaygpKSkpIHsKLSAgICAgICAgICAgIHJldHVybiBtSG9tZVN0YWNrOwotICAgICAgICB9Ci0KLSAgICAgICAgQWN0aXZpdHlTdGFjayBzdGFjayA9IGdldExhdW5jaFRvU2lkZVN0YWNrKHIsIGxhdW5jaEZsYWdzLCB0YXNrKTsKLSAgICAgICAgaWYgKHN0YWNrICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFjazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0YXNrICE9IG51bGwgJiYgdGFzay5zdGFjayAhPSBudWxsKSB7Ci0gICAgICAgICAgICBzdGFjayA9IHRhc2suc3RhY2s7Ci0gICAgICAgICAgICBpZiAoc3RhY2suaXNPbkhvbWVEaXNwbGF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobUZvY3VzZWRTdGFjayAhPSBzdGFjaykgewotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfRk9DVVMgfHwgREVCVUdfU1RBQ0spIFNsb2cuZChUQUdfRk9DVVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXB1dGVTdGFja0ZvY3VzOiBTZXR0aW5nICIgKyAiZm9jdXNlZCBzdGFjayB0byByPSIgKyByCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdGFzaz0iICsgdGFzayk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTIHx8IERFQlVHX1NUQUNLKSBTbG9nLmQoVEFHX0ZPQ1VTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wdXRlU3RhY2tGb2N1czogRm9jdXNlZCBzdGFjayBhbHJlYWR5PSIgKyBtRm9jdXNlZFN0YWNrKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc3RhY2s7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBBY3Rpdml0eUNvbnRhaW5lciBjb250YWluZXIgPSByLm1Jbml0aWFsQWN0aXZpdHlDb250YWluZXI7Ci0gICAgICAgIGlmIChjb250YWluZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHRpbWUgcHV0IGl0IG9uIHRoZSBkZXNpcmVkIHN0YWNrLCBhZnRlciB0aGlzIHB1dCBvbiB0YXNrIHN0YWNrLgotICAgICAgICAgICAgci5tSW5pdGlhbEFjdGl2aXR5Q29udGFpbmVyID0gbnVsbDsKLSAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubVN0YWNrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIGZ1bGxzY3JlZW4gc3RhY2sgY2FuIGNvbnRhaW4gYW55IHRhc2sgcmVnYXJkbGVzcyBvZiBpZiB0aGUgdGFzayBpcyByZXNpemVhYmxlCi0gICAgICAgIC8vIG9yIG5vdC4gU28sIHdlIGxldCB0aGUgdGFzayBnbyBpbiB0aGUgZnVsbHNjcmVlbiB0YXNrIGlmIGl0IGlzIHRoZSBmb2N1cyBzdGFjay4KLSAgICAgICAgLy8gSWYgdGhlIGZyZWVmb3JtIG9yIGRvY2tlZCBzdGFjayBoYXMgZm9jdXMsIGFuZCB0aGUgYWN0aXZpdHkgdG8gYmUgbGF1bmNoZWQgaXMgcmVzaXplYWJsZSwKLSAgICAgICAgLy8gd2UgY2FuIGFsc28gcHV0IGl0IGluIHRoZSBmb2N1c2VkIHN0YWNrLgotICAgICAgICBmaW5hbCBpbnQgZm9jdXNlZFN0YWNrSWQgPSBtRm9jdXNlZFN0YWNrLm1TdGFja0lkOwotICAgICAgICBmaW5hbCBib29sZWFuIGNhblVzZUZvY3VzZWRTdGFjayA9Ci0gICAgICAgICAgICAgICAgZm9jdXNlZFN0YWNrSWQgPT0gRlVMTFNDUkVFTl9XT1JLU1BBQ0VfU1RBQ0tfSUQKLSAgICAgICAgICAgICAgICB8fCBmb2N1c2VkU3RhY2tJZCA9PSBET0NLRURfU1RBQ0tfSUQKLSAgICAgICAgICAgICAgICB8fCAoZm9jdXNlZFN0YWNrSWQgPT0gRlJFRUZPUk1fV09SS1NQQUNFX1NUQUNLX0lEICYmIHIuaW5mby5yZXNpemVhYmxlKTsKLSAgICAgICAgaWYgKGNhblVzZUZvY3VzZWRTdGFjawotICAgICAgICAgICAgICAgICYmICghbmV3VGFzayB8fCBtRm9jdXNlZFN0YWNrLm1BY3Rpdml0eUNvbnRhaW5lci5pc0VsaWdpYmxlRm9yTmV3VGFza3MoKSkpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19GT0NVUyB8fCBERUJVR19TVEFDSykgU2xvZy5kKFRBR19GT0NVUywKLSAgICAgICAgICAgICAgICAgICAgImNvbXB1dGVTdGFja0ZvY3VzOiBIYXZlIGEgZm9jdXNlZCBzdGFjaz0iICsgbUZvY3VzZWRTdGFjayk7Ci0gICAgICAgICAgICByZXR1cm4gbUZvY3VzZWRTdGFjazsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIGZpcnN0IHRyeSB0byBwdXQgdGhlIHRhc2sgaW4gdGhlIGZpcnN0IGR5bmFtaWMgc3RhY2suCi0gICAgICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVN0YWNrPiBob21lRGlzcGxheVN0YWNrcyA9IG1Ib21lU3RhY2subVN0YWNrczsKLSAgICAgICAgZm9yIChpbnQgc3RhY2tOZHggPSBob21lRGlzcGxheVN0YWNrcy5zaXplKCkgLSAxOyBzdGFja05keCA+PSAwOyAtLXN0YWNrTmR4KSB7Ci0gICAgICAgICAgICBzdGFjayA9IGhvbWVEaXNwbGF5U3RhY2tzLmdldChzdGFja05keCk7Ci0gICAgICAgICAgICBpZiAoIVN0YWNrSWQuaXNTdGF0aWNTdGFjayhzdGFjay5tU3RhY2tJZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfRk9DVVMgfHwgREVCVUdfU1RBQ0spIFNsb2cuZChUQUdfRk9DVVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0ZVN0YWNrRm9jdXM6IFNldHRpbmcgZm9jdXNlZCBzdGFjaz0iICsgc3RhY2spOwotICAgICAgICAgICAgICAgIHJldHVybiBzdGFjazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1aXRhYmxlIGR5bmFtaWMgc3RhY2sgdGhlbiB3ZSBmaWd1cmUgb3V0IHdoaWNoIHN0YXRpYyBzdGFjayB0byB1c2UuCi0gICAgICAgIGZpbmFsIGludCBzdGFja0lkID0gdGFzayAhPSBudWxsID8gdGFzay5nZXRMYXVuY2hTdGFja0lkKCkgOgotICAgICAgICAgICAgICAgICAgICBib3VuZHMgIT0gbnVsbCA/IEZSRUVGT1JNX1dPUktTUEFDRV9TVEFDS19JRCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlVMTFNDUkVFTl9XT1JLU1BBQ0VfU1RBQ0tfSUQ7Ci0gICAgICAgIHN0YWNrID0gZ2V0U3RhY2soc3RhY2tJZCwgQ1JFQVRFX0lGX05FRURFRCwgT05fVE9QKTsKLSAgICAgICAgaWYgKERFQlVHX0ZPQ1VTIHx8IERFQlVHX1NUQUNLKSBTbG9nLmQoVEFHX0ZPQ1VTLCAiY29tcHV0ZVN0YWNrRm9jdXM6IE5ldyBzdGFjayByPSIKLSAgICAgICAgICAgICAgICArIHIgKyAiIHN0YWNrSWQ9IiArIHN0YWNrLm1TdGFja0lkKTsKLSAgICAgICAgcmV0dXJuIHN0YWNrOwotICAgIH0KLQotICAgIHByaXZhdGUgQWN0aXZpdHlTdGFjayBnZXRMYXVuY2hUb1NpZGVTdGFjayhBY3Rpdml0eVJlY29yZCByLCBpbnQgbGF1bmNoRmxhZ3MsIFRhc2tSZWNvcmQgdGFzaykgewotICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9MQVVOQ0hfVE9fU0lERSkgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlIHBhcmVudCBhY3Rpdml0eSBkb2Vzbid0IHdhbnQgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBvbiB0b3Agb2YgaXRzZWxmLCBidXQKLSAgICAgICAgLy8gaW5zdGVhZCB0cmllcyB0byBwdXQgaXQgb250byBvdGhlciBzaWRlIGluIHNpZGUtYnktc2lkZSBtb2RlLgotICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHBhcmVudFN0YWNrID0gdGFzayAhPSBudWxsID8gdGFzay5zdGFjawotICAgICAgICAgICAgICAgIDogci5tSW5pdGlhbEFjdGl2aXR5Q29udGFpbmVyICE9IG51bGwgPyByLm1Jbml0aWFsQWN0aXZpdHlDb250YWluZXIubVN0YWNrCi0gICAgICAgICAgICAgICAgOiBtRm9jdXNlZFN0YWNrOwotICAgICAgICBpZiAocGFyZW50U3RhY2sgIT0gbnVsbCAmJiBwYXJlbnRTdGFjay5tU3RhY2tJZCA9PSBET0NLRURfU1RBQ0tfSUQpIHsKLSAgICAgICAgICAgIC8vIElmIHBhcmVudCB3YXMgaW4gZG9ja2VkIHN0YWNrLCB0aGUgbmF0dXJhbCBwbGFjZSB0byBsYXVuY2ggYW5vdGhlciBhY3Rpdml0eQotICAgICAgICAgICAgLy8gd2lsbCBiZSBmdWxsc2NyZWVuLCBzbyBpdCBjYW4gYXBwZWFyIGFsb25nc2lkZSB0aGUgZG9ja2VkIHdpbmRvdy4KLSAgICAgICAgICAgIHJldHVybiBnZXRTdGFjayhGVUxMU0NSRUVOX1dPUktTUEFDRV9TVEFDS19JRCwgQ1JFQVRFX0lGX05FRURFRCwgT05fVE9QKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgbm90IGluIHRoZSBkb2NrZWQgc3RhY2ssIHdlIGNoZWNrIGlmIHRoZXJlIGlzIGRvY2tlZCB3aW5kb3cKLSAgICAgICAgICAgIC8vIGFuZCBpZiB5ZXMsIHdlIHdpbGwgbGF1bmNoIGludG8gdGhhdCBzdGFjay4gSWYgbm90LCB3ZSBqdXN0IHB1dCB0aGUgbmV3Ci0gICAgICAgICAgICAvLyBhY3Rpdml0eSBpbnRvIHBhcmVudCdzIHN0YWNrLCBiZWNhdXNlIHdlIGNhbid0IGZpbmQgYSBiZXR0ZXIgcGxhY2UuCi0gICAgICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHN0YWNrID0gZ2V0U3RhY2soRE9DS0VEX1NUQUNLX0lEKTsKLSAgICAgICAgICAgIGlmIChzdGFjayAhPSBudWxsICYmICFzdGFjay5pc1N0YWNrVmlzaWJsZUxvY2tlZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBkb2NrZWQgc3RhY2ssIGJ1dCBpdCBpc24ndCB2aXNpYmxlLCBzbyB3ZSBjYW4ndCBsYXVuY2ggaW50byB0aGF0LgotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhY2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBib29sZWFuIHNldEZvY3VzZWRTdGFjayhBY3Rpdml0eVJlY29yZCByLCBTdHJpbmcgcmVhc29uKSB7CiAgICAgICAgIGlmIChyID09IG51bGwpIHsKICAgICAgICAgICAgIC8vIE5vdCBzdXJlIHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZG8sIGJ1dCBpdCBpcyBub3QgZ29pbmcgdG8gd29yay4uLgpAQCAtMjA5MSw3MzUgKzEzNTksMTQgQEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlVbmNoZWNrZWRMb2NrZWQoZmluYWwgQWN0aXZpdHlSZWNvcmQgciwgQWN0aXZpdHlSZWNvcmQgc291cmNlUmVjb3JkLAotICAgICAgICAgICAgSVZvaWNlSW50ZXJhY3Rpb25TZXNzaW9uIHZvaWNlU2Vzc2lvbiwgSVZvaWNlSW50ZXJhY3RvciB2b2ljZUludGVyYWN0b3IsIGludCBzdGFydEZsYWdzLAotICAgICAgICAgICAgYm9vbGVhbiBkb1Jlc3VtZSwgQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIFRhc2tSZWNvcmQgaW5UYXNrKSB7Ci0gICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSByLmludGVudDsKLSAgICAgICAgZmluYWwgaW50IGNhbGxpbmdVaWQgPSByLmxhdW5jaGVkRnJvbVVpZDsKLQotICAgICAgICBib29sZWFuIG92ZXJyaWRlQm91bmRzID0gZmFsc2U7CisgICAgUmVjdCBnZXRPdmVycmlkZUJvdW5kcyhBY3Rpdml0eVJlY29yZCByLCBBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgVGFza1JlY29yZCBpblRhc2spIHsKICAgICAgICAgUmVjdCBuZXdCb3VuZHMgPSBudWxsOwogICAgICAgICBpZiAob3B0aW9ucyAhPSBudWxsICYmIChyLmluZm8ucmVzaXplYWJsZSB8fCAoaW5UYXNrICE9IG51bGwgJiYgaW5UYXNrLm1SZXNpemVhYmxlKSkpIHsKICAgICAgICAgICAgIGlmIChjYW5Vc2VBY3Rpdml0eU9wdGlvbnNMYXVuY2hCb3VuZHMob3B0aW9ucykpIHsKLSAgICAgICAgICAgICAgICBvdmVycmlkZUJvdW5kcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgbmV3Qm91bmRzID0gb3B0aW9ucy5nZXRMYXVuY2hCb3VuZHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIC8vIEluIHNvbWUgZmxvd3MgaW4gdG8gdGhpcyBmdW5jdGlvbiwgd2UgcmV0cmlldmUgdGhlIHRhc2sgcmVjb3JkIGFuZCBob2xkIG9uIHRvIGl0Ci0gICAgICAgIC8vIHdpdGhvdXQgYSBsb2NrIGJlZm9yZSBjYWxsaW5nIGJhY2sgaW4gdG8gaGVyZS4uLiAgc28gdGhlIHRhc2sgYXQgdGhpcyBwb2ludCBtYXkKLSAgICAgICAgLy8gbm90IGFjdHVhbGx5IGJlIGluIHJlY2VudHMuICBDaGVjayBmb3IgdGhhdCwgYW5kIGlmIGl0IGlzbid0IGluIHJlY2VudHMganVzdAotICAgICAgICAvLyBjb25zaWRlciBpdCBpbnZhbGlkLgotICAgICAgICBpZiAoaW5UYXNrICE9IG51bGwgJiYgIWluVGFzay5pblJlY2VudHMpIHsKLSAgICAgICAgICAgIFNsb2cudyhUQUcsICJTdGFydGluZyBhY3Rpdml0eSBpbiB0YXNrIG5vdCBpbiByZWNlbnRzOiAiICsgaW5UYXNrKTsKLSAgICAgICAgICAgIGluVGFzayA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBib29sZWFuIGxhdW5jaFNpbmdsZVRvcCA9IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UT1A7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gbGF1bmNoU2luZ2xlSW5zdGFuY2UgPSByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0U7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gbGF1bmNoU2luZ2xlVGFzayA9IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLOwotCi0gICAgICAgIGludCBsYXVuY2hGbGFncyA9IGludGVudC5nZXRGbGFncygpOwotICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UKSAhPSAwICYmCi0gICAgICAgICAgICAgICAgKGxhdW5jaFNpbmdsZUluc3RhbmNlIHx8IGxhdW5jaFNpbmdsZVRhc2spKSB7Ci0gICAgICAgICAgICAvLyBXZSBoYXZlIGEgY29uZmxpY3QgYmV0d2VlbiB0aGUgSW50ZW50IGFuZCB0aGUgQWN0aXZpdHkgbWFuaWZlc3QsIG1hbmlmZXN0IHdpbnMuCi0gICAgICAgICAgICBTbG9nLmkoVEFHLCAiSWdub3JpbmcgRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQsIGxhdW5jaE1vZGUgaXMgIiArCi0gICAgICAgICAgICAgICAgICAgICJcInNpbmdsZUluc3RhbmNlXCIgb3IgXCJzaW5nbGVUYXNrXCIiKTsKLSAgICAgICAgICAgIGxhdW5jaEZsYWdzICY9Ci0gICAgICAgICAgICAgICAgICAgIH4oSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UIHwgRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAoci5pbmZvLmRvY3VtZW50TGF1bmNoTW9kZSkgewotICAgICAgICAgICAgICAgIGNhc2UgQWN0aXZpdHlJbmZvLkRPQ1VNRU5UX0xBVU5DSF9OT05FOgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5ET0NVTUVOVF9MQVVOQ0hfSU5UT19FWElTVElORzoKLSAgICAgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5ET0NVTUVOVF9MQVVOQ0hfQUxXQVlTOgotICAgICAgICAgICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQWN0aXZpdHlJbmZvLkRPQ1VNRU5UX0xBVU5DSF9ORVZFUjoKLSAgICAgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgJj0gfkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBib29sZWFuIGxhdW5jaFRhc2tCZWhpbmQgPSByLm1MYXVuY2hUYXNrQmVoaW5kCi0gICAgICAgICAgICAgICAgJiYgIWxhdW5jaFNpbmdsZVRhc2sgJiYgIWxhdW5jaFNpbmdsZUluc3RhbmNlCi0gICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UKSAhPSAwOwotCi0gICAgICAgIGlmIChyLnJlc3VsdFRvICE9IG51bGwgJiYgKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMAotICAgICAgICAgICAgICAgICYmIHIucmVzdWx0VG8udGFzay5zdGFjayAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uIHRoaXMgYWN0aXZpdHkgaXMgYmVpbmcgbGF1bmNoZWQgaW50byBhIG5ldwotICAgICAgICAgICAgLy8gdGFzay4uLiAgeWV0IHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCBhIHJlc3VsdCBiYWNrLiAgV2VsbCwgdGhhdAotICAgICAgICAgICAgLy8gaXMgcHJldHR5IG1lc3NlZCB1cCwgc28gaW5zdGVhZCBpbW1lZGlhdGVseSBzZW5kIGJhY2sgYSBjYW5jZWwKLSAgICAgICAgICAgIC8vIGFuZCBsZXQgdGhlIG5ldyB0YXNrIGNvbnRpbnVlIGxhdW5jaGVkIGFzIG5vcm1hbCB3aXRob3V0IGEKLSAgICAgICAgICAgIC8vIGRlcGVuZGVuY3kgb24gaXRzIG9yaWdpbmF0b3IuCi0gICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgaXMgbGF1bmNoaW5nIGFzIGEgbmV3IHRhc2ssIHNvIGNhbmNlbGxpbmcgYWN0aXZpdHkgcmVzdWx0LiIpOwotICAgICAgICAgICAgci5yZXN1bHRUby50YXNrLnN0YWNrLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKLSAgICAgICAgICAgICAgICAgICAgci5yZXN1bHRUbywgci5yZXN1bHRXaG8sIHIucmVxdWVzdENvZGUsCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCk7Ci0gICAgICAgICAgICByLnJlc3VsdFRvID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQpICE9IDAgJiYgci5yZXN1bHRUbyA9PSBudWxsKSB7Ci0gICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBGTEFHX0FDVElWSVRZX05FV19UQVNLOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgYXJlIGFjdHVhbGx5IGdvaW5nIHRvIGxhdW5jaCBpbiB0byBhIG5ldyB0YXNrLCB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZQotICAgICAgICAvLyB3ZSBmdXJ0aGVyIHdhbnQgdG8gZG8gbXVsdGlwbGUgdGFzay4KLSAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIEZMQUdfQUNUSVZJVFlfTkVXX1RBU0spICE9IDApIHsKLSAgICAgICAgICAgIGlmIChsYXVuY2hUYXNrQmVoaW5kCi0gICAgICAgICAgICAgICAgICAgIHx8IHIuaW5mby5kb2N1bWVudExhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkRPQ1VNRU5UX0xBVU5DSF9BTFdBWVMpIHsKLSAgICAgICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBGTEFHX0FDVElWSVRZX01VTFRJUExFX1RBU0s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSdsbCBpbnZva2Ugb25Vc2VyTGVhdmluZyBiZWZvcmUgb25QYXVzZSBvbmx5IGlmIHRoZSBsYXVuY2hpbmcKLSAgICAgICAgLy8gYWN0aXZpdHkgZGlkIG5vdCBleHBsaWNpdGx5IHN0YXRlIHRoYXQgdGhpcyBpcyBhbiBhdXRvbWF0ZWQgbGF1bmNoLgotICAgICAgICBtVXNlckxlYXZpbmcgPSAobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19VU0VSX0FDVElPTikgPT0gMDsKLSAgICAgICAgaWYgKERFQlVHX1VTRVJfTEVBVklORykgU2xvZy52KFRBR19VU0VSX0xFQVZJTkcsCi0gICAgICAgICAgICAgICAgInN0YXJ0QWN0aXZpdHkoKSA9PiBtVXNlckxlYXZpbmc9IiArIG1Vc2VyTGVhdmluZyk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgYXNrZWQgbm90IHRvIHJlc3VtZSBhdCB0aGlzIHBvaW50LCB3ZSBtYWtlIG5vdGUKLSAgICAgICAgLy8gb2YgdGhpcyBpbiB0aGUgcmVjb3JkIHNvIHRoYXQgd2UgY2FuIHNraXAgaXQgd2hlbiB0cnlpbmcgdG8gZmluZAotICAgICAgICAvLyB0aGUgdG9wIHJ1bm5pbmcgYWN0aXZpdHkuCi0gICAgICAgIGlmICghZG9SZXN1bWUgfHwgIW9rVG9TaG93TG9ja2VkKHIpKSB7Ci0gICAgICAgICAgICByLmRlbGF5ZWRSZXN1bWUgPSB0cnVlOwotICAgICAgICAgICAgZG9SZXN1bWUgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIEFjdGl2aXR5UmVjb3JkIG5vdFRvcCA9Ci0gICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfUFJFVklPVVNfSVNfVE9QKSAhPSAwID8gciA6IG51bGw7Ci0KLSAgICAgICAgLy8gSWYgdGhlIG9ubHlJZk5lZWRlZCBmbGFnIGlzIHNldCwgdGhlbiB3ZSBjYW4gZG8gdGhpcyBpZiB0aGUgYWN0aXZpdHkKLSAgICAgICAgLy8gYmVpbmcgbGF1bmNoZWQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBtYWtpbmcgdGhlIGNhbGwuLi4gIG9yLCBhcwotICAgICAgICAvLyBhIHNwZWNpYWwgY2FzZSwgaWYgd2UgZG8gbm90IGtub3cgdGhlIGNhbGxlciB0aGVuIHdlIGNvdW50IHRoZQotICAgICAgICAvLyBjdXJyZW50IHRvcCBhY3Rpdml0eSBhcyB0aGUgY2FsbGVyLgotICAgICAgICBpZiAoKHN0YXJ0RmxhZ3MmQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0ZMQUdfT05MWV9JRl9ORUVERUQpICE9IDApIHsKLSAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGNoZWNrZWRDYWxsZXIgPSBzb3VyY2VSZWNvcmQ7Ci0gICAgICAgICAgICBpZiAoY2hlY2tlZENhbGxlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tlZENhbGxlciA9IG1Gb2N1c2VkU3RhY2sudG9wUnVubmluZ05vbkRlbGF5ZWRBY3Rpdml0eUxvY2tlZChub3RUb3ApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFjaGVja2VkQ2FsbGVyLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGlzIG5vdCB0aGUgc2FtZSBhcyBsYXVuY2hlciwgc28gYWx3YXlzIG5lZWRlZC4KLSAgICAgICAgICAgICAgICBzdGFydEZsYWdzICY9IH5BY3Rpdml0eU1hbmFnZXIuU1RBUlRfRkxBR19PTkxZX0lGX05FRURFRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJvb2xlYW4gYWRkaW5nVG9UYXNrID0gZmFsc2U7Ci0gICAgICAgIFRhc2tSZWNvcmQgcmV1c2VUYXNrID0gbnVsbDsKLQotICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGlzIG5vdCBjb21pbmcgZnJvbSBhbm90aGVyIGFjdGl2aXR5LCBidXQgaGFzIGdpdmVuIHVzIGFuCi0gICAgICAgIC8vIGV4cGxpY2l0IHRhc2sgaW50byB3aGljaCB0aGV5IHdvdWxkIGxpa2UgdXMgdG8gbGF1bmNoIHRoZSBuZXcgYWN0aXZpdHksCi0gICAgICAgIC8vIHRoZW4gbGV0J3Mgc2VlIGFib3V0IGRvaW5nIHRoYXQuCi0gICAgICAgIGlmIChzb3VyY2VSZWNvcmQgPT0gbnVsbCAmJiBpblRhc2sgIT0gbnVsbCAmJiBpblRhc2suc3RhY2sgIT0gbnVsbCkgewotICAgICAgICAgICAgZmluYWwgSW50ZW50IGJhc2VJbnRlbnQgPSBpblRhc2suZ2V0QmFzZUludGVudCgpOwotICAgICAgICAgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgcm9vdCA9IGluVGFzay5nZXRSb290QWN0aXZpdHkoKTsKLSAgICAgICAgICAgIGlmIChiYXNlSW50ZW50ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTGF1bmNoaW5nIGludG8gdGFzayB3aXRob3V0IGJhc2UgaW50ZW50OiAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIGluVGFzayk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIHRoaXMgdGFzayBpcyBlbXB0eSwgdGhlbiB3ZSBhcmUgYWRkaW5nIHRoZSBmaXJzdCBhY3Rpdml0eSAtLSBpdAotICAgICAgICAgICAgLy8gZGV0ZXJtaW5lcyB0aGUgcm9vdCwgYW5kIG11c3QgYmUgbGF1bmNoaW5nIGFzIGEgTkVXX1RBU0suCi0gICAgICAgICAgICBpZiAobGF1bmNoU2luZ2xlSW5zdGFuY2UgfHwgbGF1bmNoU2luZ2xlVGFzaykgewotICAgICAgICAgICAgICAgIGlmICghYmFzZUludGVudC5nZXRDb21wb25lbnQoKS5lcXVhbHMoci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVHJ5aW5nIHRvIGxhdW5jaCBzaW5nbGVJbnN0YW5jZS9UYXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHIgKyAiIGludG8gZGlmZmVyZW50IHRhc2sgIiArIGluVGFzayk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyb290ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOwotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDYWxsZXIgd2l0aCBpblRhc2sgIiArIGluVGFzawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBoYXMgcm9vdCAiICsgcm9vdCArICIgYnV0IHRhcmdldCBpcyBzaW5nbGVJbnN0YW5jZS9UYXNrIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiB0YXNrIGlzIGVtcHR5LCB0aGVuIGFkb3B0IHRoZSBpbnRlcmVzdGluZyBpbnRlbnQgbGF1bmNoIGZsYWdzIGluIHRvIHRoZQotICAgICAgICAgICAgLy8gYWN0aXZpdHkgYmVpbmcgc3RhcnRlZC4KLSAgICAgICAgICAgIGlmIChyb290ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmxhZ3NPZkludGVyZXN0ID0gRkxBR19BQ1RJVklUWV9ORVdfVEFTSwotICAgICAgICAgICAgICAgICAgICAgICAgfCBGTEFHX0FDVElWSVRZX01VTFRJUExFX1RBU0sgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVUQUlOX0lOX1JFQ0VOVFM7Ci0gICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgPSAobGF1bmNoRmxhZ3MmfmZsYWdzT2ZJbnRlcmVzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKGJhc2VJbnRlbnQuZ2V0RmxhZ3MoKSZmbGFnc09mSW50ZXJlc3QpOwotICAgICAgICAgICAgICAgIGludGVudC5zZXRGbGFncyhsYXVuY2hGbGFncyk7Ci0gICAgICAgICAgICAgICAgaW5UYXNrLnNldEludGVudChyKTsKLSAgICAgICAgICAgICAgICBhZGRpbmdUb1Rhc2sgPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBJZiB0aGUgdGFzayBpcyBub3QgZW1wdHkgYW5kIHRoZSBjYWxsZXIgaXMgYXNraW5nIHRvIHN0YXJ0IGl0IGFzIHRoZSByb290Ci0gICAgICAgICAgICAvLyBvZiBhIG5ldyB0YXNrLCB0aGVuIHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gc3RhcnQgdGhpcyBvbiB0aGUgdGFzay4gIFdlCi0gICAgICAgICAgICAvLyB3aWxsIGJyaW5nIHRoZSB0YXNrIHRvIHRoZSBmcm9udCwgYW5kIHBvc3NpYmx5IGdpdmUgaXQgYSBuZXcgaW50ZW50LgotICAgICAgICAgICAgfSBlbHNlIGlmICgobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV1c2VUYXNrID0gaW5UYXNrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5UYXNrID0gbnVsbDsKLSAgICAgICAgICAgIC8vIExhdW5jaCBSZXNvbHZlckFjdGl2aXR5IGluIHRoZSBzb3VyY2UgdGFzaywgc28gdGhhdCBpdCBzdGF5cyBpbiB0aGUgdGFzawotICAgICAgICAgICAgLy8gYm91bmRzIHdoZW4gaW4gZnJlZWZvcm0gd29ya3NwYWNlLgotICAgICAgICAgICAgLy8gQWxzbyBwdXQgbm9EaXNwbGF5IGFjdGl2aXRpZXMgaW4gdGhlIHNvdXJjZSB0YXNrLiBUaGVzZSBieSBpdHNlbGYgY2FuCi0gICAgICAgICAgICAvLyBiZSBwbGFjZWQgaW4gYW55IHRhc2svc3RhY2ssIGhvd2V2ZXIgaXQgY291bGQgbGF1bmNoIG90aGVyIGFjdGl2aXRpZXMKLSAgICAgICAgICAgIC8vIGxpa2UgUmVzb2x2ZXJBY3Rpdml0eSwgYW5kIHdlIHdhbnQgdGhvc2UgdG8gc3RheSBpbiB0aGUgb3JpZ2luYWwgdGFzay4KLSAgICAgICAgICAgIGlmICgoci5pc1Jlc29sdmVyQWN0aXZpdHkoKSB8fCByLm5vRGlzcGxheSkgJiYgc291cmNlUmVjb3JkICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICAgJiYgc291cmNlUmVjb3JkLmlzRnJlZWZvcm0oKSkgIHsKLSAgICAgICAgICAgICAgICBhZGRpbmdUb1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGluVGFzayA9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoc291cmNlUmVjb3JkID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGlzIG5vdCBiZWluZyBzdGFydGVkIGZyb20gYW5vdGhlci4uLiAgaW4gdGhpcwotICAgICAgICAgICAgICAgIC8vIGNhc2Ugd2UgLWFsd2F5cy0gc3RhcnQgYSBuZXcgdGFzay4KLSAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgPT0gMCAmJiBpblRhc2sgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAic3RhcnRBY3Rpdml0eSBjYWxsZWQgZnJvbSBub24tQWN0aXZpdHkgY29udGV4dDsgZm9yY2luZyAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgZm9yOiAiICsgaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVJlY29yZC5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIGFjdGl2aXR5IHdobyBpcyBzdGFydGluZyB1cyBpcyBydW5uaW5nIGFzIGEgc2luZ2xlCi0gICAgICAgICAgICAgICAgLy8gaW5zdGFuY2UuLi4gIHRoaXMgbmV3IGFjdGl2aXR5IGl0IGlzIHN0YXJ0aW5nIG11c3QgZ28gb24gaXRzCi0gICAgICAgICAgICAgICAgLy8gb3duIHRhc2suCi0gICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobGF1bmNoU2luZ2xlSW5zdGFuY2UgfHwgbGF1bmNoU2luZ2xlVGFzaykgewotICAgICAgICAgICAgICAgIC8vIFRoZSBhY3Rpdml0eSBiZWluZyBzdGFydGVkIGlzIGEgc2luZ2xlIGluc3RhbmNlLi4uICBpdCBhbHdheXMKLSAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdW5jaGVkIGludG8gaXRzIG93biB0YXNrLgotICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBBY3Rpdml0eUluZm8gbmV3VGFza0luZm8gPSBudWxsOwotICAgICAgICBJbnRlbnQgbmV3VGFza0ludGVudCA9IG51bGw7Ci0gICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgc291cmNlU3RhY2s7Ci0gICAgICAgIGlmIChzb3VyY2VSZWNvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKHNvdXJjZVJlY29yZC5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc291cmNlIGlzIGZpbmlzaGluZywgd2UgY2FuJ3QgZnVydGhlciBjb3VudCBpdCBhcyBvdXIgc291cmNlLiAgVGhpcwotICAgICAgICAgICAgICAgIC8vIGlzIGJlY2F1c2UgdGhlIHRhc2sgaXQgaXMgYXNzb2NpYXRlZCB3aXRoIG1heSBub3cgYmUgZW1wdHkgYW5kIG9uIGl0cyB3YXkgb3V0LAotICAgICAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IHdhbnQgdG8gYmxpbmRseSB0aHJvdyBpdCBpbiB0byB0aGF0IHRhc2suICBJbnN0ZWFkIHdlIHdpbGwgdGFrZQotICAgICAgICAgICAgICAgIC8vIHRoZSBORVdfVEFTSyBmbG93IGFuZCB0cnkgdG8gZmluZCBhIHRhc2sgZm9yIGl0LiBCdXQgc2F2ZSB0aGUgdGFzayBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIG5ldyB0YXNrLgotICAgICAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX05FV19UQVNLKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJzdGFydEFjdGl2aXR5IGNhbGxlZCBmcm9tIGZpbmlzaGluZyAiICsgc291cmNlUmVjb3JkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOyBmb3JjaW5nICIgKyAiSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgZm9yOiAiICsgaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKLSAgICAgICAgICAgICAgICAgICAgbmV3VGFza0luZm8gPSBzb3VyY2VSZWNvcmQuaW5mbzsKLSAgICAgICAgICAgICAgICAgICAgbmV3VGFza0ludGVudCA9IHNvdXJjZVJlY29yZC50YXNrLmludGVudDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gbnVsbDsKLSAgICAgICAgICAgICAgICBzb3VyY2VTdGFjayA9IG51bGw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNvdXJjZVN0YWNrID0gc291cmNlUmVjb3JkLnRhc2suc3RhY2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzb3VyY2VTdGFjayA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sZWFuIG1vdmVkSG9tZSA9IGZhbHNlOwotICAgICAgICBBY3Rpdml0eVN0YWNrIHRhcmdldFN0YWNrOwotCi0gICAgICAgIGludGVudC5zZXRGbGFncyhsYXVuY2hGbGFncyk7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gbm9BbmltYXRpb24gPSAobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19BTklNQVRJT04pICE9IDA7Ci0KLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgaW50ZW50QWN0aXZpdHkgPSBnZXRSZXVzYWJsZUludGVudEFjdGl2aXR5KHIsIGluVGFzaywgaW50ZW50LAotICAgICAgICAgICAgICAgIGxhdW5jaFNpbmdsZUluc3RhbmNlLCBsYXVuY2hTaW5nbGVUYXNrLCBsYXVuY2hGbGFncyk7Ci0gICAgICAgIGlmIChpbnRlbnRBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBXaGVuIHRoZSBmbGFncyBORVdfVEFTSyBhbmQgQ0xFQVJfVEFTSyBhcmUgc2V0LCB0aGVuIHRoZSB0YXNrIGdldHMgcmV1c2VkCi0gICAgICAgICAgICAvLyBidXQgc3RpbGwgbmVlZHMgdG8gYmUgYSBsb2NrIHRhc2sgbW9kZSB2aW9sYXRpb24gc2luY2UgdGhlIHRhc2sgZ2V0cwotICAgICAgICAgICAgLy8gY2xlYXJlZCBvdXQgYW5kIHRoZSBkZXZpY2Ugd291bGQgb3RoZXJ3aXNlIGxlYXZlIHRoZSBsb2NrZWQgdGFzay4KLSAgICAgICAgICAgIGlmIChpc0xvY2tUYXNrTW9kZVZpb2xhdGlvbihpbnRlbnRBY3Rpdml0eS50YXNrLAotICAgICAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MgJiAoRkxBR19BQ1RJVklUWV9ORVdfVEFTSyB8IEZMQUdfQUNUSVZJVFlfQ0xFQVJfVEFTSykpCi0gICAgICAgICAgICAgICAgICAgID09IChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9DTEVBUl9UQVNLKSkpIHsKLSAgICAgICAgICAgICAgICBzaG93TG9ja1Rhc2tUb2FzdCgpOwotICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJzdGFydEFjdGl2aXR5VW5jaGVja2VkOiBBdHRlbXB0IHRvIHZpb2xhdGUgTG9jayBUYXNrIE1vZGUiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9MT0NLX1RBU0tfTU9ERV9WSU9MQVRJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoci50YXNrID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByLnRhc2sgPSBpbnRlbnRBY3Rpdml0eS50YXNrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGludGVudEFjdGl2aXR5LnRhc2suaW50ZW50ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIHRhc2sgd2FzIHN0YXJ0ZWQgYmVjYXVzZSBvZiBtb3ZlbWVudCBvZiB0aGUgYWN0aXZpdHkgYmFzZWQgb24gYWZmaW5pdHkuLi4KLSAgICAgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgbGF1bmNoaW5nIGl0LCB3ZSBjYW4gYXNzaWduIHRoZSBiYXNlIGludGVudC4KLSAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS50YXNrLnNldEludGVudChyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGFyZ2V0U3RhY2sgPSBpbnRlbnRBY3Rpdml0eS50YXNrLnN0YWNrOwotICAgICAgICAgICAgdGFyZ2V0U3RhY2subUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IHRhc2sgaXMgbm90IGluIHRoZSBmcm9udCwgdGhlbiB3ZSBuZWVkCi0gICAgICAgICAgICAvLyB0byBicmluZyBpdCB0byB0aGUgZnJvbnQuLi4gIGV4Y2VwdC4uLiAgd2VsbCwgd2l0aAotICAgICAgICAgICAgLy8gU0lOR0xFX1RBU0tfTEFVTkNIIGl0J3Mgbm90IGVudGlyZWx5IGNsZWFyLiAgV2UnZCBsaWtlCi0gICAgICAgICAgICAvLyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGlmIGEgbmV3IGluc3RhbmNlIHdhcwotICAgICAgICAgICAgLy8gYmVpbmcgc3RhcnRlZCwgd2hpY2ggbWVhbnMgbm90IGJyaW5naW5nIGl0IHRvIHRoZSBmcm9udAotICAgICAgICAgICAgLy8gaWYgdGhlIGNhbGxlciBpcyBub3QgaXRzZWxmIGluIHRoZSBmcm9udC4KLSAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgZm9jdXNTdGFjayA9IGdldEZvY3VzZWRTdGFjaygpOwotICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgY3VyVG9wID0gKGZvY3VzU3RhY2sgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgPyBudWxsIDogZm9jdXNTdGFjay50b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7Ci0gICAgICAgICAgICBib29sZWFuIG1vdmVkVG9Gcm9udCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGN1clRvcCAhPSBudWxsICYmIChjdXJUb3AudGFzayAhPSBpbnRlbnRBY3Rpdml0eS50YXNrIHx8Ci0gICAgICAgICAgICAgICAgICAgIGN1clRvcC50YXNrICE9IGZvY3VzU3RhY2sudG9wVGFzaygpKSkgewotICAgICAgICAgICAgICAgIHIuaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX0JST1VHSFRfVE9fRlJPTlQpOwotICAgICAgICAgICAgICAgIGlmIChzb3VyY2VSZWNvcmQgPT0gbnVsbCB8fCAoc291cmNlU3RhY2sudG9wQWN0aXZpdHkoKSAhPSBudWxsICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdGFjay50b3BBY3Rpdml0eSgpLnRhc2sgPT0gc291cmNlUmVjb3JkLnRhc2spKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBkbyB3YW50IHRvIHB1c2ggdGhpcyBvbmUgaW50byB0aGUgdXNlcidzIGZhY2UsIHJpZ2h0IG5vdy4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhdW5jaFRhc2tCZWhpbmQgJiYgc291cmNlUmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LnNldFRhc2tUb0FmZmlsaWF0ZVdpdGgoc291cmNlUmVjb3JkLnRhc2spOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1vdmVkSG9tZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgc2lkZVN0YWNrID0gZ2V0TGF1bmNoVG9TaWRlU3RhY2sociwgbGF1bmNoRmxhZ3MsIHIudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWRlU3RhY2sgPT0gbnVsbCB8fCBzaWRlU3RhY2sgPT0gdGFyZ2V0U3RhY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBtb3ZlIHRvIHRoZSBmcm9udCwgaWYgd2UgYXJlbid0IGdvaW5nIHRvIGxhdW5jaCBvbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgc3RhY2suIElmIHdlIGxhdW5jaCBvbiBhIGRpZmZlcmVudCBzdGFjaywgd2Ugd2lsbCBwdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0YXNrIG9uIHRvcCB0aGVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChpbnRlbnRBY3Rpdml0eS50YXNrLCBub0FuaW1hdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsIHIuYXBwVGltZVRyYWNrZXIsICJicmluZ2luZ0ZvdW5kVGFza1RvRnJvbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkVG9Gcm9udCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9UQVNLX09OX0hPTUUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9UQVNLX09OX0hPTUUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsZXIgd2FudHMgdG8gYXBwZWFyIG9uIGhvbWUgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS50YXNrLnNldFRhc2tUb1JldHVyblRvKEhPTUVfQUNUSVZJVFlfVFlQRSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFtb3ZlZFRvRnJvbnQgJiYgZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cuZChUQUdfVEFTS1MsICJCcmluZyB0byBmcm9udCB0YXJnZXQ6ICIgKyB0YXJnZXRTdGFjawotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGZyb20gIiArIGludGVudEFjdGl2aXR5KTsKLSAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5tb3ZlVG9Gcm9udCgiaW50ZW50QWN0aXZpdHlGb3VuZCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGhhcyByZXF1ZXN0ZWQgdGhhdCB0aGUgdGFyZ2V0IHRhc2sgYmUKLSAgICAgICAgICAgIC8vIHJlc2V0LCB0aGVuIGRvIHNvLgotICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIEludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgaW50ZW50QWN0aXZpdHkgPSB0YXJnZXRTdGFjay5yZXNldFRhc2tJZk5lZWRlZExvY2tlZChpbnRlbnRBY3Rpdml0eSwgcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKHN0YXJ0RmxhZ3MgJiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfRkxBR19PTkxZX0lGX05FRURFRCkgIT0gMCkgewotICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3RhcnQgYSBuZXcgYWN0aXZpdHksIGFuZAotICAgICAgICAgICAgICAgIC8vIHRoZSBjbGllbnQgc2FpZCBub3QgdG8gZG8gYW55dGhpbmcgaWYgdGhhdAotICAgICAgICAgICAgICAgIC8vIGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0ISAgQW5kIGZvciBwYXJhbm9pYSwgbWFrZQotICAgICAgICAgICAgICAgIC8vIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0aWVzTG9ja2VkKHRhcmdldFN0YWNrLCBudWxsLCBvcHRpb25zKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdG8gbm90aWZ5IEtleWd1YXJkIGFzIHdlbGwgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFuIGFwcAotICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGxhdGVyLgotICAgICAgICAgICAgICAgICAgICBpZiAoIW1vdmVkVG9Gcm9udCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5QWN0aXZpdHlEcmF3bkZvcktleWd1YXJkKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJTdGFja0xvY2tlZChyLnVzZXJJZCwgdGFyZ2V0U3RhY2spOwotICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUkVUVVJOX0lOVEVOVF9UT19DQUxMRVI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgKEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX0NMRUFSX1RBU0spKQotICAgICAgICAgICAgICAgICAgICA9PSAoRkxBR19BQ1RJVklUWV9ORVdfVEFTSyB8IEZMQUdfQUNUSVZJVFlfQ0xFQVJfVEFTSykpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVyIGhhcyByZXF1ZXN0ZWQgdG8gY29tcGxldGVseSByZXBsYWNlIGFueQotICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIHRhc2sgd2l0aCBpdHMgbmV3IGFjdGl2aXR5LiAgV2VsbCB0aGF0IHNob3VsZAotICAgICAgICAgICAgICAgIC8vIG5vdCBiZSB0b28gaGFyZC4uLgotICAgICAgICAgICAgICAgIHJldXNlVGFzayA9IGludGVudEFjdGl2aXR5LnRhc2s7Ci0gICAgICAgICAgICAgICAgcmV1c2VUYXNrLnBlcmZvcm1DbGVhclRhc2tMb2NrZWQoKTsKLSAgICAgICAgICAgICAgICByZXVzZVRhc2suc2V0SW50ZW50KHIpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX0NMRUFSX1RPUCkgIT0gMAotICAgICAgICAgICAgICAgICAgICB8fCBsYXVuY2hTaW5nbGVJbnN0YW5jZSB8fCBsYXVuY2hTaW5nbGVUYXNrKSB7Ci0gICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBzaXR1YXRpb24gd2Ugd2FudCB0byByZW1vdmUgYWxsIGFjdGl2aXRpZXMKLSAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSB0YXNrIHVwIHRvIHRoZSBvbmUgYmVpbmcgc3RhcnRlZC4gIEluIG1vc3QKLSAgICAgICAgICAgICAgICAvLyBjYXNlcyB0aGlzIG1lYW5zIHdlIGFyZSByZXNldHRpbmcgdGhlIHRhc2sgdG8gaXRzCi0gICAgICAgICAgICAgICAgLy8gaW5pdGlhbCBzdGF0ZS4KLSAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3AgPSBpbnRlbnRBY3Rpdml0eS50YXNrLnBlcmZvcm1DbGVhclRhc2tMb2NrZWQociwgbGF1bmNoRmxhZ3MpOwotICAgICAgICAgICAgICAgIGlmICh0b3AgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodG9wLmZyb250T2ZUYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3Rpdml0eSBhbGlhc2VzIG1heSBtZWFuIHdlIHVzZSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVudHMgZm9yIHRoZSB0b3AgYWN0aXZpdHksIHNvIG1ha2Ugc3VyZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRhc2sgbm93IGhhcyB0aGUgaWRlbnRpdHkgb2YgdGhlIG5ldwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgdG9wLnRhc2suc2V0SW50ZW50KHIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5U3RhY2subG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwgdG9wLnRhc2spOwotICAgICAgICAgICAgICAgICAgICB0b3AuZGVsaXZlck5ld0ludGVudExvY2tlZChjYWxsaW5nVWlkLCByLmludGVudCwgci5sYXVuY2hlZEZyb21QYWNrYWdlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBBIHNwZWNpYWwgY2FzZTogd2UgbmVlZCB0byBzdGFydCB0aGUgYWN0aXZpdHkgYmVjYXVzZSBpdCBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudGx5IHJ1bm5pbmcsIGFuZCB0aGUgY2FsbGVyIGhhcyBhc2tlZCB0byBjbGVhciB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAvLyB0YXNrIHRvIGhhdmUgdGhpcyBhY3Rpdml0eSBhdCB0aGUgdG9wLgotICAgICAgICAgICAgICAgICAgICBhZGRpbmdUb1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAvLyBOb3cgcHJldGVuZCBsaWtlIHRoaXMgYWN0aXZpdHkgaXMgYmVpbmcgc3RhcnRlZCBieSB0aGUgdG9wIG9mIGl0cwotICAgICAgICAgICAgICAgICAgICAvLyB0YXNrLCBzbyBpdCBpcyBwdXQgaW4gdGhlIHJpZ2h0IHBsYWNlLgotICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSBpbnRlbnRBY3Rpdml0eTsKLSAgICAgICAgICAgICAgICAgICAgVGFza1JlY29yZCB0YXNrID0gc291cmNlUmVjb3JkLnRhc2s7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0YXNrICE9IG51bGwgJiYgdGFzay5zdGFjayA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUYXJnZXQgc3RhY2sgZ290IGNsZWFyZWQgd2hlbiB3ZSBhbGwgYWN0aXZpdGllcyB3ZXJlIHJlbW92ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFib3ZlLiBHbyBhaGVhZCBhbmQgcmVzZXQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjayA9IGNvbXB1dGVTdGFja0ZvY3VzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQsIGZhbHNlIC8qIG5ld1Rhc2sgKi8sIG51bGwgLyogYm91bmRzICovLCBsYXVuY2hGbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5hZGRUYXNrKHRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsYXVuY2hUYXNrQmVoaW5kIC8qIHRvVG9wICovLCAic3RhcnRBY3Rpdml0eVVuY2hlY2tlZCIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHIucmVhbEFjdGl2aXR5LmVxdWFscyhpbnRlbnRBY3Rpdml0eS50YXNrLnJlYWxBY3Rpdml0eSkpIHsKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UgdGhlIHRvcCBhY3Rpdml0eSBvbiB0aGUgdGFzayBpcyB0aGUKLSAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIHRoZSBvbmUgYmVpbmcgbGF1bmNoZWQsIHNvIHdlIHRha2UgdGhhdAotICAgICAgICAgICAgICAgIC8vIGFzIGEgcmVxdWVzdCB0byBicmluZyB0aGUgdGFzayB0byB0aGUgZm9yZWdyb3VuZC4KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdG9wIGFjdGl2aXR5IGluIHRoZSB0YXNrIGlzIHRoZSByb290Ci0gICAgICAgICAgICAgICAgLy8gYWN0aXZpdHksIGRlbGl2ZXIgdGhpcyBuZXcgaW50ZW50IHRvIGl0IGlmIGl0Ci0gICAgICAgICAgICAgICAgLy8gZGVzaXJlcy4KLSAgICAgICAgICAgICAgICBpZiAoKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSAhPSAwIHx8IGxhdW5jaFNpbmdsZVRvcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGludGVudEFjdGl2aXR5LnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5U3RhY2subG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGludGVudEFjdGl2aXR5LmZyb250T2ZUYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS50YXNrLnNldEludGVudChyKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIuaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIubGF1bmNoZWRGcm9tUGFja2FnZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghci5pbnRlbnQuZmlsdGVyRXF1YWxzKGludGVudEFjdGl2aXR5LnRhc2suaW50ZW50KSkgewotICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgYXJlIGxhdW5jaGluZyB0aGUgcm9vdCBhY3Rpdml0eQotICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgdGFzaywgYnV0IHdpdGggYSBkaWZmZXJlbnQgaW50ZW50LiAgV2UKLSAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIHN0YXJ0IGEgbmV3IGluc3RhbmNlIG9uIHRvcC4KLSAgICAgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gaW50ZW50QWN0aXZpdHk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpID09IDApIHsKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UgYW4gYWN0aXZpdHkgaXMgYmVpbmcgbGF1bmNoZWQgaW4gdG8gYW4KLSAgICAgICAgICAgICAgICAvLyBleGlzdGluZyB0YXNrLCB3aXRob3V0IHJlc2V0dGluZyB0aGF0IHRhc2suICBUaGlzCi0gICAgICAgICAgICAgICAgLy8gaXMgdHlwaWNhbGx5IHRoZSBzaXR1YXRpb24gb2YgbGF1bmNoaW5nIGFuIGFjdGl2aXR5Ci0gICAgICAgICAgICAgICAgLy8gZnJvbSBhIG5vdGlmaWNhdGlvbiBvciBzaG9ydGN1dC4gIFdlIHdhbnQgdG8gcGxhY2UKLSAgICAgICAgICAgICAgICAvLyB0aGUgbmV3IGFjdGl2aXR5IG9uIHRvcCBvZiB0aGUgY3VycmVudCB0YXNrLgotICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gaW50ZW50QWN0aXZpdHk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFpbnRlbnRBY3Rpdml0eS50YXNrLnJvb3RXYXNSZXNldCkgewotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgbGF1bmNoaW5nIGluIHRvIGFuIGV4aXN0aW5nIHRhc2sKLSAgICAgICAgICAgICAgICAvLyB0aGF0IGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZCBmcm9tIGl0cyBmcm9udCBkb29yLgotICAgICAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IHRhc2sgaGFzIGJlZW4gYnJvdWdodCB0byB0aGUgZnJvbnQuCi0gICAgICAgICAgICAgICAgLy8gSWRlYWxseSwgd2UnZCBwcm9iYWJseSBsaWtlIHRvIHBsYWNlIHRoaXMgbmV3IHRhc2sKLSAgICAgICAgICAgICAgICAvLyBhdCB0aGUgYm90dG9tIG9mIGl0cyBzdGFjaywgYnV0IHRoYXQncyBhIGxpdHRsZSBoYXJkCi0gICAgICAgICAgICAgICAgLy8gdG8gZG8gd2l0aCB0aGUgY3VycmVudCBvcmdhbml6YXRpb24gb2YgdGhlIGNvZGUgc28KLSAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlJ2xsIGp1c3QgZHJvcCBpdC4KLSAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS50YXNrLnNldEludGVudChyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYWRkaW5nVG9UYXNrICYmIHJldXNlVGFzayA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZGlkbid0IGRvIGFueXRoaW5nLi4uICBidXQgaXQgd2FzIG5lZWRlZCAoYS5rLmEuLCBjbGllbnQKLSAgICAgICAgICAgICAgICAvLyBkb24ndCB1c2UgdGhhdCBpbnRlbnQhKSAgQW5kIGZvciBwYXJhbm9pYSwgbWFrZQotICAgICAgICAgICAgICAgIC8vIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5yZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsLCBvcHRpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtb3ZlZFRvRnJvbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0byBub3RpZnkgS2V5Z3VhcmQgYXMgd2VsbCBpZiB3ZSBhcmUgbm90IHJ1bm5pbmcgYW4gYXBwCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGxhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5QWN0aXZpdHlEcmF3bkZvcktleWd1YXJkKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJTdGFja0xvY2tlZChyLnVzZXJJZCwgdGFyZ2V0U3RhY2spOwotICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfVEFTS19UT19GUk9OVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vU3RyaW5nIHVyaSA9IHIuaW50ZW50LnRvVVJJKCk7Ci0gICAgICAgIC8vSW50ZW50IGludGVudDIgPSBuZXcgSW50ZW50KHVyaSk7Ci0gICAgICAgIC8vU2xvZy5pKFRBRywgIkdpdmVuIGludGVudDogIiArIHIuaW50ZW50KTsKLSAgICAgICAgLy9TbG9nLmkoVEFHLCAiVVJJIGlzOiAiICsgdXJpKTsKLSAgICAgICAgLy9TbG9nLmkoVEFHLCAiVG8gaW50ZW50OiAiICsgaW50ZW50Mik7Ci0KLSAgICAgICAgaWYgKHIucGFja2FnZU5hbWUgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGJlaW5nIGxhdW5jaGVkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgY3VycmVudGx5Ci0gICAgICAgICAgICAvLyBhdCB0aGUgdG9wLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgc2hvdWxkIG9ubHkgYmUgbGF1bmNoZWQKLSAgICAgICAgICAgIC8vIG9uY2UuCi0gICAgICAgICAgICBBY3Rpdml0eVN0YWNrIHRvcFN0YWNrID0gbUZvY3VzZWRTdGFjazsKLSAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcCA9IHRvcFN0YWNrLnRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobm90VG9wKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZG9udFN0YXJ0ID0gdG9wICE9IG51bGwgJiYgci5yZXN1bHRUbyA9PSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmIHRvcC5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSAmJiB0b3AudXNlcklkID09IHIudXNlcklkCi0gICAgICAgICAgICAgICAgICAgICYmIHRvcC5hcHAgIT0gbnVsbCAmJiB0b3AuYXBwLnRocmVhZCAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmICgobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSAhPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGF1bmNoU2luZ2xlVG9wIHx8IGxhdW5jaFNpbmdsZVRhc2spOwotICAgICAgICAgICAgaWYgKGRvbnRTdGFydCkgewotICAgICAgICAgICAgICAgIEFjdGl2aXR5U3RhY2subG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgdG9wLCB0b3AudGFzayk7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIHBhcmFub2lhLCBtYWtlIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgIHRvcFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0aWVzTG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoKHN0YXJ0RmxhZ3MgJiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfRkxBR19PTkxZX0lGX05FRURFRCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCBhbmQgdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbwotICAgICAgICAgICAgICAgICAgICAvLyBhbnl0aGluZyBpZiB0aGF0IGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0IQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b3AuZGVsaXZlck5ld0ludGVudExvY2tlZChjYWxsaW5nVWlkLCByLmludGVudCwgci5sYXVuY2hlZEZyb21QYWNrYWdlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0RFTElWRVJFRF9UT19UT1A7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoci5yZXN1bHRUbyAhPSBudWxsICYmIHIucmVzdWx0VG8udGFzay5zdGFjayAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgci5yZXN1bHRUby50YXNrLnN0YWNrLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwgci5yZXN1bHRUbywgci5yZXN1bHRXaG8sCi0gICAgICAgICAgICAgICAgICAgICAgICByLnJlcXVlc3RDb2RlLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOwotICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9DTEFTU19OT1RfRk9VTkQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sZWFuIG5ld1Rhc2sgPSBmYWxzZTsKLSAgICAgICAgYm9vbGVhbiBrZWVwQ3VyVHJhbnNpdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIFRhc2tSZWNvcmQgdGFza1RvQWZmaWxpYXRlID0gbGF1bmNoVGFza0JlaGluZCAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbCA/Ci0gICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLnRhc2sgOiBudWxsOwotCi0gICAgICAgIC8vIFNob3VsZCB0aGlzIGJlIGNvbnNpZGVyZWQgYSBuZXcgdGFzaz8KLSAgICAgICAgaWYgKHIucmVzdWx0VG8gPT0gbnVsbCAmJiBpblRhc2sgPT0gbnVsbCAmJiAhYWRkaW5nVG9UYXNrCi0gICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgewotICAgICAgICAgICAgbmV3VGFzayA9IHRydWU7Ci0gICAgICAgICAgICB0YXJnZXRTdGFjayA9IGNvbXB1dGVTdGFja0ZvY3VzKHIsIG5ld1Rhc2ssIG5ld0JvdW5kcywgbGF1bmNoRmxhZ3MpOwotICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0U3RhY2subW92ZVRvRnJvbnQoInN0YXJ0aW5nTmV3VGFzayIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocmV1c2VUYXNrID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByLnNldFRhc2sodGFyZ2V0U3RhY2suY3JlYXRlVGFza1JlY29yZChnZXROZXh0VGFza0lkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdUYXNrSW5mbyAhPSBudWxsID8gbmV3VGFza0luZm8gOiByLmluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdUYXNrSW50ZW50ICE9IG51bGwgPyBuZXdUYXNrSW50ZW50IDogaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgdm9pY2VTZXNzaW9uLCB2b2ljZUludGVyYWN0b3IsICFsYXVuY2hUYXNrQmVoaW5kIC8qIHRvVG9wICovKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb0FmZmlsaWF0ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlQm91bmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHIudGFzay51cGRhdGVPdmVycmlkZUNvbmZpZ3VyYXRpb24obmV3Qm91bmRzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHX1RBU0tTLAotICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgciArICIgaW4gbmV3IHRhc2sgIiArIHIudGFzayk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHIuc2V0VGFzayhyZXVzZVRhc2ssIHRhc2tUb0FmZmlsaWF0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNMb2NrVGFza01vZGVWaW9sYXRpb24oci50YXNrKSkgewotICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJBdHRlbXB0ZWQgTG9jayBUYXNrIE1vZGUgdmlvbGF0aW9uIHI9IiArIHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUkVUVVJOX0xPQ0tfVEFTS19NT0RFX1ZJT0xBVElPTjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbW92ZWRIb21lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmCi0gICAgICAgICAgICAgICAgICAgICAgICAoRkxBR19BQ1RJVklUWV9ORVdfVEFTSyB8IEZMQUdfQUNUSVZJVFlfVEFTS19PTl9IT01FKSkKLSAgICAgICAgICAgICAgICAgICAgICAgID09IChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9UQVNLX09OX0hPTUUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENhbGxlciB3YW50cyB0byBhcHBlYXIgb24gaG9tZSBhY3Rpdml0eSwgc28gYmVmb3JlIHN0YXJ0aW5nCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoZWlyIG93biBhY3Rpdml0eSB3ZSB3aWxsIGJyaW5nIGhvbWUgdG8gdGhlIGZyb250LgotICAgICAgICAgICAgICAgICAgICByLnRhc2suc2V0VGFza1RvUmV0dXJuVG8oSE9NRV9BQ1RJVklUWV9UWVBFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc291cmNlUmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgIGZpbmFsIFRhc2tSZWNvcmQgc291cmNlVGFzayA9IHNvdXJjZVJlY29yZC50YXNrOwotICAgICAgICAgICAgaWYgKGlzTG9ja1Rhc2tNb2RlVmlvbGF0aW9uKHNvdXJjZVRhc2spKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkF0dGVtcHRlZCBMb2NrIFRhc2sgTW9kZSB2aW9sYXRpb24gcj0iICsgcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9SRVRVUk5fTE9DS19UQVNLX01PREVfVklPTEFUSU9OOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0U3RhY2sgPSBudWxsOwotICAgICAgICAgICAgaWYgKHNvdXJjZVRhc2suc3RhY2sudG9wVGFzaygpICE9IHNvdXJjZVRhc2spIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYWxsb3cgY2hhbmdpbmcgc3RhY2sgaWYgdGhlIHRhcmdldCB0YXNrIGlzIG5vdCB0aGUgdG9wIG9uZSwKLSAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugd2Ugd291bGQgbW92ZSB0aGUgbGF1bmNoaW5nIHRhc2sgdG8gdGhlIG90aGVyIHNpZGUsIHJhdGhlciB0aGFuIHNob3cKLSAgICAgICAgICAgICAgICAvLyB0d28gc2lkZSBieSBzaWRlLgotICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrID0gZ2V0TGF1bmNoVG9TaWRlU3RhY2sociwgbGF1bmNoRmxhZ3MsIHIudGFzayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodGFyZ2V0U3RhY2sgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrID0gc291cmNlVGFzay5zdGFjazsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0U3RhY2sgIT0gc291cmNlVGFzay5zdGFjaykgewotICAgICAgICAgICAgICAgIG1vdmVUYXNrVG9TdGFja0xvY2tlZChzb3VyY2VUYXNrLnRhc2tJZCwgdGFyZ2V0U3RhY2subVN0YWNrSWQsIE9OX1RPUCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZPUkNFX0ZPQ1VTLCAibGF1bmNoVG9TaWRlIiwgIUFOSU1BVEUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0U3RhY2subW92ZVRvRnJvbnQoInNvdXJjZVN0YWNrVG9Gcm9udCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZmluYWwgVGFza1JlY29yZCB0b3BUYXNrID0gdGFyZ2V0U3RhY2sudG9wVGFzaygpOwotICAgICAgICAgICAgaWYgKHRvcFRhc2sgIT0gc291cmNlVGFzaykgewotICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChzb3VyY2VUYXNrLCBub0FuaW1hdGlvbiwgb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwVGltZVRyYWNrZXIsICJzb3VyY2VUYXNrVG9Gcm9udCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFhZGRpbmdUb1Rhc2sgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RPUCkgIT0gMCkgewotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgYXJlIGFkZGluZyB0aGUgYWN0aXZpdHkgdG8gYW4gZXhpc3RpbmcKLSAgICAgICAgICAgICAgICAvLyB0YXNrLCBidXQgdGhlIGNhbGxlciBoYXMgYXNrZWQgdG8gY2xlYXIgdGhhdCB0YXNrIGlmIHRoZQotICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGlzIGFscmVhZHkgcnVubmluZy4KLSAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3AgPSBzb3VyY2VUYXNrLnBlcmZvcm1DbGVhclRhc2tMb2NrZWQociwgbGF1bmNoRmxhZ3MpOwotICAgICAgICAgICAgICAgIGtlZXBDdXJUcmFuc2l0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAodG9wICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIuaW50ZW50LCByLmxhdW5jaGVkRnJvbVBhY2thZ2UpOwotICAgICAgICAgICAgICAgICAgICAvLyBGb3IgcGFyYW5vaWEsIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvcnJlY3RseQotICAgICAgICAgICAgICAgICAgICAvLyByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9ERUxJVkVSRURfVE9fVE9QOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIWFkZGluZ1RvVGFzayAmJgotICAgICAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVPUkRFUl9UT19GUk9OVCkgIT0gMCkgewotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgYXJlIGxhdW5jaGluZyBhbiBhY3Rpdml0eSBpbiBvdXIgb3duIHRhc2sKLSAgICAgICAgICAgICAgICAvLyB0aGF0IG1heSBhbHJlYWR5IGJlIHJ1bm5pbmcgc29tZXdoZXJlIGluIHRoZSBoaXN0b3J5LCBhbmQKLSAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHNodWZmbGUgaXQgdG8gdGhlIGZyb250IG9mIHRoZSBzdGFjayBpZiBzby4KLSAgICAgICAgICAgICAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCB0b3AgPSBzb3VyY2VUYXNrLmZpbmRBY3Rpdml0eUluSGlzdG9yeUxvY2tlZChyKTsKLSAgICAgICAgICAgICAgICBpZiAodG9wICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgVGFza1JlY29yZCB0YXNrID0gdG9wLnRhc2s7Ci0gICAgICAgICAgICAgICAgICAgIHRhc2subW92ZUFjdGl2aXR5VG9Gcm9udExvY2tlZCh0b3ApOwotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVN0YWNrLmxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRhc2spOwotICAgICAgICAgICAgICAgICAgICB0b3AudXBkYXRlT3B0aW9uc0xvY2tlZChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgdG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5pbnRlbnQsIHIubGF1bmNoZWRGcm9tUGFja2FnZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBBbiBleGlzdGluZyBhY3Rpdml0eSBpcyBzdGFydGluZyB0aGlzIG5ldyBhY3Rpdml0eSwgc28gd2Ugd2FudAotICAgICAgICAgICAgLy8gdG8ga2VlcCB0aGUgbmV3IG9uZSBpbiB0aGUgc2FtZSB0YXNrIGFzIHRoZSBvbmUgdGhhdCBpcyBzdGFydGluZwotICAgICAgICAgICAgLy8gaXQuCi0gICAgICAgICAgICByLnNldFRhc2soc291cmNlVGFzaywgbnVsbCk7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUdfVEFTS1MsICJTdGFydGluZyBuZXcgYWN0aXZpdHkgIiArIHIKLSAgICAgICAgICAgICAgICAgICAgKyAiIGluIGV4aXN0aW5nIHRhc2sgIiArIHIudGFzayArICIgZnJvbSBzb3VyY2UgIiArIHNvdXJjZVJlY29yZCk7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChpblRhc2sgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBpcyBhc2tpbmcgdGhhdCB0aGUgbmV3IGFjdGl2aXR5IGJlIHN0YXJ0ZWQgaW4gYW4gZXhwbGljaXQKLSAgICAgICAgICAgIC8vIHRhc2sgaXQgaGFzIHByb3ZpZGVkIHRvIHVzLgotICAgICAgICAgICAgaWYgKGlzTG9ja1Rhc2tNb2RlVmlvbGF0aW9uKGluVGFzaykpIHsKLSAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiQXR0ZW1wdGVkIExvY2sgVGFzayBNb2RlIHZpb2xhdGlvbiByPSIgKyByKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9MT0NLX1RBU0tfTU9ERV9WSU9MQVRJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAob3ZlcnJpZGVCb3VuZHMpIHsKLSAgICAgICAgICAgICAgICBpblRhc2sudXBkYXRlT3ZlcnJpZGVDb25maWd1cmF0aW9uKG5ld0JvdW5kcyk7Ci0gICAgICAgICAgICAgICAgaW50IHN0YWNrSWQgPSBpblRhc2suZ2V0TGF1bmNoU3RhY2tJZCgpOwotICAgICAgICAgICAgICAgIGlmIChzdGFja0lkICE9IGluVGFzay5zdGFjay5tU3RhY2tJZCkgewotICAgICAgICAgICAgICAgICAgICBtb3ZlVGFza1RvU3RhY2tVbmNoZWNrZWRMb2NrZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5UYXNrLCBzdGFja0lkLCBPTl9UT1AsICFGT1JDRV9GT0NVUywgImluVGFza1RvRnJvbnQiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdGFjayA9IGluVGFzay5zdGFjazsKLSAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChpblRhc2ssIG5vQW5pbWF0aW9uLCBvcHRpb25zLCByLmFwcFRpbWVUcmFja2VyLAotICAgICAgICAgICAgICAgICAgICAiaW5UYXNrVG9Gcm9udCIpOwotCi0gICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBhY3R1YWxseSBsYXVuY2ggdGhlIG5ldyBhY3Rpdml0eSBpbiB0byB0aGUgdGFzaywKLSAgICAgICAgICAgIC8vIG9yIGp1c3QgcmV1c2UgdGhlIGN1cnJlbnQgYWN0aXZpdHkgb24gdG9wLgotICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdG9wID0gaW5UYXNrLmdldFRvcEFjdGl2aXR5KCk7Ci0gICAgICAgICAgICBpZiAodG9wICE9IG51bGwgJiYgdG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpICYmIHRvcC51c2VySWQgPT0gci51c2VySWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGF1bmNoU2luZ2xlVG9wIHx8IGxhdW5jaFNpbmdsZVRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCB0b3AsIHRvcC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChzdGFydEZsYWdzJkFjdGl2aXR5TWFuYWdlci5TVEFSVF9GTEFHX09OTFlfSUZfTkVFREVEKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjbGllbnQgc2FpZCBub3QgdG8gZG8gYW55dGhpbmcgaWYgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhlIGNhc2UsIHNvIHRoaXMgaXMgaXQhCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIuaW50ZW50LCByLmxhdW5jaGVkRnJvbVBhY2thZ2UpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0RFTElWRVJFRF9UT19UT1A7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWFkZGluZ1RvVGFzaykgewotICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gaGF2ZSB0aGlzIGFjdGl2aXR5IGFkZGVkIHRvIHRoZSB0YXNrLCBzbyBqdXN0Ci0gICAgICAgICAgICAgICAgLy8gc3RvcCBoZXJlIGJ1dCBzdGlsbCB0ZWxsIHRoZSBjYWxsZXIgdGhhdCB3ZSBjb25zdW1lZCB0aGUgaW50ZW50LgotICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1RBU0tfVE9fRlJPTlQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHIuc2V0VGFzayhpblRhc2ssIG51bGwpOwotICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHX1RBU0tTLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCi0gICAgICAgICAgICAgICAgICAgICsgIiBpbiBleHBsaWNpdCB0YXNrICIgKyByLnRhc2spOwotCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIG5vdCBiZWluZyBzdGFydGVkIGZyb20gYW4gZXhpc3RpbmcgYWN0aXZpdHksIGFuZCBub3QgcGFydAotICAgICAgICAgICAgLy8gb2YgYSBuZXcgdGFzay4uLiAganVzdCBwdXQgaXQgaW4gdGhlIHRvcCB0YXNrLCB0aG91Z2ggdGhlc2UgZGF5cwotICAgICAgICAgICAgLy8gdGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4uCi0gICAgICAgICAgICB0YXJnZXRTdGFjayA9IGNvbXB1dGVTdGFja0ZvY3VzKHIsIG5ld1Rhc2ssIG51bGwgLyogYm91bmRzICovLCBsYXVuY2hGbGFncyk7Ci0gICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5tb3ZlVG9Gcm9udCgiYWRkaW5nVG9Ub3BUYXNrIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwcmV2ID0gdGFyZ2V0U3RhY2sudG9wQWN0aXZpdHkoKTsKLSAgICAgICAgICAgIHIuc2V0VGFzayhwcmV2ICE9IG51bGwgPyBwcmV2LnRhc2sgOiB0YXJnZXRTdGFjay5jcmVhdGVUYXNrUmVjb3JkKGdldE5leHRUYXNrSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmluZm8sIGludGVudCwgbnVsbCwgbnVsbCwgdHJ1ZSksIG51bGwpOwotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIubW92ZVRhc2tUb1RvcChyLnRhc2sudGFza0lkKTsKLSAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBR19UQVNLUywgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgcgotICAgICAgICAgICAgICAgICAgICArICIgaW4gbmV3IGd1ZXNzZWQgIiArIHIudGFzayk7Ci0gICAgICAgIH0KLQotICAgICAgICBtU2VydmljZS5ncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIucGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgaW50ZW50LCByLmdldFVyaVBlcm1pc3Npb25zTG9ja2VkKCksIHIudXNlcklkKTsKLQotICAgICAgICBpZiAoc291cmNlUmVjb3JkICE9IG51bGwgJiYgc291cmNlUmVjb3JkLmlzUmVjZW50c0FjdGl2aXR5KCkpIHsKLSAgICAgICAgICAgIHIudGFzay5zZXRUYXNrVG9SZXR1cm5UbyhSRUNFTlRTX0FDVElWSVRZX1RZUEUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXdUYXNrKSB7Ci0gICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9DUkVBVEVfVEFTSywgci51c2VySWQsIHIudGFzay50YXNrSWQpOwotICAgICAgICB9Ci0gICAgICAgIEFjdGl2aXR5U3RhY2subG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fQ1JFQVRFX0FDVElWSVRZLCByLCByLnRhc2spOwotICAgICAgICB0YXJnZXRTdGFjay5tTGFzdFBhdXNlZEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgdGFyZ2V0U3RhY2suc3RhcnRBY3Rpdml0eUxvY2tlZChyLCBuZXdUYXNrLCBrZWVwQ3VyVHJhbnNpdGlvbiwgb3B0aW9ucyk7Ci0gICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgaWYgKCFsYXVuY2hUYXNrQmVoaW5kKSB7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKHIsICJzdGFydGVkQWN0aXZpdHkiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXRpZXNMb2NrZWQodGFyZ2V0U3RhY2ssIHIsIG9wdGlvbnMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGFyZ2V0U3RhY2suYWRkUmVjZW50QWN0aXZpdHlMb2NrZWQocik7Ci0gICAgICAgIH0KLSAgICAgICAgdXBkYXRlVXNlclN0YWNrTG9ja2VkKHIudXNlcklkLCB0YXJnZXRTdGFjayk7Ci0KLSAgICAgICAgaWYgKCFyLnRhc2subVJlc2l6ZWFibGUgJiYgaXNTdGFja0RvY2tlZEluRWZmZWN0KHRhcmdldFN0YWNrLm1TdGFja0lkKSkgewotICAgICAgICAgICAgc2hvd05vblJlc2l6ZWFibGVEb2NrVG9hc3Qoci50YXNrLnRhc2tJZCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRGVjaWRlIHdoZXRoZXIgdGhlIG5ldyBhY3Rpdml0eSBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBhbiBleGlzdGluZyB0YXNrLiBSZXR1cm5zIG51bGwgaWYgbm90Ci0gICAgICogb3IgYW4gQWN0aXZpdHlSZWNvcmQgd2l0aCB0aGUgdGFzayBpbnRvIHdoaWNoIHRoZSBuZXcgYWN0aXZpdHkgc2hvdWxkIGJlIGFkZGVkLgotICAgICAqLwotICAgIHByaXZhdGUgQWN0aXZpdHlSZWNvcmQgZ2V0UmV1c2FibGVJbnRlbnRBY3Rpdml0eShBY3Rpdml0eVJlY29yZCByLCBUYXNrUmVjb3JkIGluVGFzaywgSW50ZW50IGludGVudCwKLSAgICAgICAgICAgIGJvb2xlYW4gbGF1bmNoU2luZ2xlSW5zdGFuY2UsIGJvb2xlYW4gbGF1bmNoU2luZ2xlVGFzaywgaW50IGxhdW5jaEZsYWdzKSB7Ci0gICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHRyeSB0byBwbGFjZSB0aGUgbmV3IGFjdGl2aXR5IGluIHRvIGFuIGV4aXN0aW5nIHRhc2suICBXZSBhbHdheXMKLSAgICAgICAgLy8gZG8gdGhpcyBpZiB0aGUgdGFyZ2V0IGFjdGl2aXR5IGlzIHNpbmdsZVRhc2sgb3Igc2luZ2xlSW5zdGFuY2U7IHdlIHdpbGwgYWxzbyBkbwotICAgICAgICAvLyB0aGlzIGlmIE5FV19UQVNLIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIHRoZXJlIGlzIG5vdCBhbiBhZGRpdGlvbmFsIHF1YWxpZmllciB0ZWxsaW5nCi0gICAgICAgIC8vIHVzIHRvIHN0aWxsIHBsYWNlIGl0IGluIGEgbmV3IHRhc2s6IG11bHRpIHRhc2ssIGFsd2F5cyBkb2MgbW9kZSwgb3IgYmVpbmcgYXNrZWQgdG8KLSAgICAgICAgLy8gbGF1bmNoIHRoaXMgYXMgYSBuZXcgdGFzayBiZWhpbmQgdGhlIGN1cnJlbnQgb25lLgotICAgICAgICBib29sZWFuIHB1dEludG9FeGlzdGluZ1Rhc2sgPSAoKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCAmJgotICAgICAgICAgICAgICAgIChsYXVuY2hGbGFncyAmIEZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSykgPT0gMCkKLSAgICAgICAgICAgICAgICB8fCBsYXVuY2hTaW5nbGVJbnN0YW5jZSB8fCBsYXVuY2hTaW5nbGVUYXNrOwotICAgICAgICAvLyBJZiBicmluZyB0byBmcm9udCBpcyByZXF1ZXN0ZWQsIGFuZCBubyByZXN1bHQgaXMgcmVxdWVzdGVkIGFuZCB3ZSBoYXZlIG5vdAotICAgICAgICAvLyBiZWVuIGdpdmVuIGFuIGV4cGxpY2l0IHRhc2sgdG8gbGF1bmNoIGluIHRvLCBhbmQKLSAgICAgICAgLy8gd2UgY2FuIGZpbmQgYSB0YXNrIHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCB0aGlzIHNhbWUKLSAgICAgICAgLy8gY29tcG9uZW50LCB0aGVuIGluc3RlYWQgb2YgbGF1bmNoaW5nIGJyaW5nIHRoYXQgb25lIHRvIHRoZSBmcm9udC4KLSAgICAgICAgcHV0SW50b0V4aXN0aW5nVGFzayAmPSBpblRhc2sgPT0gbnVsbCAmJiByLnJlc3VsdFRvID09IG51bGw7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIGludGVudEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgaWYgKHB1dEludG9FeGlzdGluZ1Rhc2spIHsKLSAgICAgICAgICAgIC8vIFNlZSBpZiB0aGVyZSBpcyBhIHRhc2sgdG8gYnJpbmcgdG8gdGhlIGZyb250LiAgSWYgdGhpcyBpcwotICAgICAgICAgICAgLy8gYSBTSU5HTEVfSU5TVEFOQ0UgYWN0aXZpdHksIHRoZXJlIGNhbiBiZSBvbmUgYW5kIG9ubHkgb25lCi0gICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiBpdCBpbiB0aGUgaGlzdG9yeSwgYW5kIGl0IGlzIGFsd2F5cyBpbiBpdHMgb3duCi0gICAgICAgICAgICAvLyB1bmlxdWUgdGFzaywgc28gd2UgZG8gYSBzcGVjaWFsIHNlYXJjaC4KLSAgICAgICAgICAgIGludGVudEFjdGl2aXR5ID0gbGF1bmNoU2luZ2xlSW5zdGFuY2UgPwotICAgICAgICAgICAgICAgICAgICBmaW5kQWN0aXZpdHlMb2NrZWQoaW50ZW50LCByLmluZm8pIDogZmluZFRhc2tMb2NrZWQocik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGludGVudEFjdGl2aXR5OwotICAgIH0KLQotICAgIGZpbmFsIHZvaWQgZG9QZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChib29sZWFuIGRvUmVzdW1lKSB7Ci0gICAgICAgIHdoaWxlICghbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUGVuZGluZ0FjdGl2aXR5TGF1bmNoIHBhbCA9IG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChwYWwuciwgcGFsLnNvdXJjZVJlY29yZCwgbnVsbCwgbnVsbCwgcGFsLnN0YXJ0RmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBkb1Jlc3VtZSAmJiBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuaXNFbXB0eSgpLCBudWxsLCBudWxsKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkV4Y2VwdGlvbiBkdXJpbmcgcGVuZGluZyBhY3Rpdml0eSBsYXVuY2ggcGFsPSIgKyBwYWwsIGUpOwotICAgICAgICAgICAgICAgIHBhbC5zZW5kRXJyb3JSZXN1bHQoZS5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCByZW1vdmVQZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChBY3Rpdml0eVN0YWNrIHN0YWNrKSB7Ci0gICAgICAgIGZvciAoaW50IHBhbE5keCA9IG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcy5zaXplKCkgLSAxOyBwYWxOZHggPj0gMDsgLS1wYWxOZHgpIHsKLSAgICAgICAgICAgIFBlbmRpbmdBY3Rpdml0eUxhdW5jaCBwYWwgPSBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuZ2V0KHBhbE5keCk7Ci0gICAgICAgICAgICBpZiAocGFsLnN0YWNrID09IHN0YWNrKSB7Ci0gICAgICAgICAgICAgICAgbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLnJlbW92ZShwYWxOZHgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXdCb3VuZHM7CiAgICAgfQogCiAgICAgdm9pZCBzZXRMYXVuY2hTb3VyY2UoaW50IHVpZCkgewpAQCAtNDU1MSw3ICszMDk4LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBzaG93Tm9uUmVzaXplYWJsZURvY2tUb2FzdChpbnQgdGFza0lkKSB7CisgICAgdm9pZCBzaG93Tm9uUmVzaXplYWJsZURvY2tUb2FzdChpbnQgdGFza0lkKSB7CiAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNjaGVkdWxlU2hvd05vblJlc2l6ZWFibGVEb2NrVG9hc3QodGFza0lkKTsKICAgICB9CiAKQEAgLTQ5NjgsNyArMzUxNSw3IEBACiAgICAgICAgICAgICAgICAgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICBtU3RhY2suZmluaXNoQWxsQWN0aXZpdGllc0xvY2tlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzTG9ja2VkKG1TdGFjayk7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1BY3Rpdml0eVN0YXJ0ZXIucmVtb3ZlUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXNMb2NrZWQobVN0YWNrKTsKICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ5ODcsMjIgKzM1MzQsNyBAQAogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHkoSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgbVNlcnZpY2UuZW5mb3JjZU5vdElzb2xhdGVkQ2FsbGVyKCJBY3Rpdml0eUNvbnRhaW5lci5zdGFydEFjdGl2aXR5Iik7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgdXNlcklkID0gbVNlcnZpY2UubVVzZXJDb250cm9sbGVyLmhhbmRsZUluY29taW5nVXNlcihCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpLAotICAgICAgICAgICAgICAgICAgICBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCBtQ3VycmVudFVzZXIsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkFMTE9XX0ZVTExfT05MWSwgIkFjdGl2aXR5Q29udGFpbmVyIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIC8vIFRPRE86IFN3aXRjaCB0byB1c2VyIGFwcCBzdGFja3MgaGVyZS4KLSAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGludGVudC5nZXRUeXBlKCk7Ci0gICAgICAgICAgICBmaW5hbCBVcmkgZGF0YSA9IGludGVudC5nZXREYXRhKCk7Ci0gICAgICAgICAgICBpZiAobWltZVR5cGUgPT0gbnVsbCAmJiBkYXRhICE9IG51bGwgJiYgImNvbnRlbnQiLmVxdWFscyhkYXRhLmdldFNjaGVtZSgpKSkgewotICAgICAgICAgICAgICAgIG1pbWVUeXBlID0gbVNlcnZpY2UuZ2V0UHJvdmlkZXJNaW1lVHlwZShkYXRhLCB1c2VySWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2hlY2tFbWJlZGRlZEFsbG93ZWRJbm5lcih1c2VySWQsIGludGVudCwgbWltZVR5cGUpOwotCi0gICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoRk9SQ0VfTkVXX1RBU0tfRkxBR1MpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0QWN0aXZpdHlNYXlXYWl0KG51bGwsIC0xLCBudWxsLCBpbnRlbnQsIG1pbWVUeXBlLCBudWxsLCBudWxsLCBudWxsLCBudWxsLAotICAgICAgICAgICAgICAgICAgICAwLCAwLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBmYWxzZSwgdXNlcklkLCB0aGlzLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtU2VydmljZS5zdGFydEFjdGl2aXR5KGludGVudCwgdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTUwMjYsNyArMzU1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZPUkNFX05FV19UQVNLX0ZMQUdTLCBGT1JDRV9ORVdfVEFTS19GTEFHUywgbnVsbCwgdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIHZvaWQgY2hlY2tFbWJlZGRlZEFsbG93ZWRJbm5lcihpbnQgdXNlcklkLCBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlKSB7CisgICAgICAgIHZvaWQgY2hlY2tFbWJlZGRlZEFsbG93ZWRJbm5lcihpbnQgdXNlcklkLCBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlKSB7CiAgICAgICAgICAgICBBY3Rpdml0eUluZm8gYUluZm8gPSByZXNvbHZlQWN0aXZpdHkoaW50ZW50LCByZXNvbHZlZFR5cGUsIDAsIG51bGwsIHVzZXJJZCk7CiAgICAgICAgICAgICBpZiAoYUluZm8gIT0gbnVsbCAmJiAoYUluZm8uZmxhZ3MgJiBBY3Rpdml0eUluZm8uRkxBR19BTExPV19FTUJFRERFRCkgPT0gMCkgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlTdGFydGVyLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5U3RhcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNmUxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5U3RhcnRlci5qYXZhCkBAIC0wLDAgKzEsMTU0NSBAQAorcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuYW07CisKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlN0YWNrSWQuRE9DS0VEX1NUQUNLX0lEOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuU3RhY2tJZC5GUkVFRk9STV9XT1JLU1BBQ0VfU1RBQ0tfSUQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlci5TdGFja0lkLkZVTExTQ1JFRU5fV09SS1NQQUNFX1NUQUNLX0lEOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQuSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfVEFTSzsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RPUDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LkludGVudC5GTEFHX0FDVElWSVRZX0xBVU5DSF9UT19TSURFOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQuSW50ZW50LkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSzsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQuSW50ZW50LkZMQUdfQUNUSVZJVFlfVEFTS19PTl9IT01FOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfQ09ORklHVVJBVElPTjsKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX0ZPQ1VTOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfUEVSTUlTU0lPTlNfUkVWSUVXOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfUkVTVUxUUzsKK2ltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5TWFuYWdlckRlYnVnQ29uZmlnLkRFQlVHX1NUQUNLOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuREVCVUdfVEFTS1M7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5ERUJVR19VU0VSX0xFQVZJTkc7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX0NPTkZJR1VSQVRJT047CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5QT1NURklYX0ZPQ1VTOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuUE9TVEZJWF9SRVNVTFRTOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyRGVidWdDb25maWcuUE9TVEZJWF9VU0VSX0xFQVZJTkc7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5UQUdfQU07CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJEZWJ1Z0NvbmZpZy5UQUdfV0lUSF9DTEFTU19OQU1FOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5BTklNQVRFOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlSZWNvcmQuSE9NRV9BQ1RJVklUWV9UWVBFOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlSZWNvcmQuUkVDRU5UU19BQ1RJVklUWV9UWVBFOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlTdGFjay5BY3Rpdml0eVN0YXRlLlJFU1VNRUQ7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5DUkVBVEVfSUZfTkVFREVEOworaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlTdGFja1N1cGVydmlzb3IuRk9SQ0VfRk9DVVM7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5PTl9UT1A7CitpbXBvcnQgc3RhdGljIGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5UQUdfVEFTS1M7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlPcHRpb25zOworaW1wb3J0IGFuZHJvaWQuYXBwLkFwcEdsb2JhbHM7CitpbXBvcnQgYW5kcm9pZC5hcHAuSUFjdGl2aXR5Q29udGFpbmVyOworaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuSUFwcGxpY2F0aW9uVGhyZWFkOworaW1wb3J0IGFuZHJvaWQuYXBwLktleWd1YXJkTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50OworaW1wb3J0IGFuZHJvaWQuYXBwLlByb2ZpbGVySW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFNlbmRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uVXNlckluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1aWxkOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQub3MuVXNlckhhbmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlVzZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuc2VydmljZS52b2ljZS5JVm9pY2VJbnRlcmFjdGlvblNlc3Npb247CitpbXBvcnQgYW5kcm9pZC51dGlsLkV2ZW50TG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5EaXNwbGF5OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eTsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSVZvaWNlSW50ZXJhY3RvcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlTdGFja1N1cGVydmlzb3IuUGVuZGluZ0FjdGl2aXR5TGF1bmNoOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci53bS5XaW5kb3dNYW5hZ2VyU2VydmljZTsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogQ29udHJvbGxlciBmb3IgaW50ZXJwcmV0aW5nIGhvdyBhbmQgdGhlbiBsYXVuY2hpbmcgYWN0aXZpdGllcy4KKyAqCisgKiBUaGlzIGNsYXNzIGNvbGxlY3RzIGFsbCB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIGhvdyBhbiBpbnRlbnQgYW5kIGZsYWdzIHNob3VsZCBiZSB0dXJuZWQgaW50bworICogYW4gYWN0aXZpdHkgYW5kIGFzc29jaWF0ZWQgdGFzayBhbmQgc3RhY2suCisgKi8KK3B1YmxpYyBjbGFzcyBBY3Rpdml0eVN0YXJ0ZXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSBUQUdfV0lUSF9DTEFTU19OQU1FID8gIkFjdGl2aXR5U3RhcnRlciIgOiBUQUdfQU07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19SRVNVTFRTID0gVEFHICsgUE9TVEZJWF9SRVNVTFRTOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfRk9DVVMgPSBUQUcgKyBQT1NURklYX0ZPQ1VTOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfQ09ORklHVVJBVElPTiA9IFRBRyArIFBPU1RGSVhfQ09ORklHVVJBVElPTjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHX1VTRVJfTEVBVklORyA9IFRBRyArIFBPU1RGSVhfVVNFUl9MRUFWSU5HOworCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIG1TZXJ2aWNlOworICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlTdGFja1N1cGVydmlzb3IgbVN1cGVydmlzb3I7CisgICAgcHJpdmF0ZSBXaW5kb3dNYW5hZ2VyU2VydmljZSBtV2luZG93TWFuYWdlcjsKKworICAgIGZpbmFsIEFycmF5TGlzdDxQZW5kaW5nQWN0aXZpdHlMYXVuY2g+IG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcyA9IG5ldyBBcnJheUxpc3Q8PigpOworCisgICAgQWN0aXZpdHlTdGFydGVyKEFjdGl2aXR5TWFuYWdlclNlcnZpY2Ugc2VydmljZSwgQWN0aXZpdHlTdGFja1N1cGVydmlzb3Igc3VwZXJ2aXNvcikgeworICAgICAgICBtU2VydmljZSA9IHNlcnZpY2U7CisgICAgICAgIG1TdXBlcnZpc29yID0gc3VwZXJ2aXNvcjsKKyAgICB9CisKKyAgICBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eUxvY2tlZChJQXBwbGljYXRpb25UaHJlYWQgY2FsbGVyLCBJbnRlbnQgaW50ZW50LCBJbnRlbnQgZXBoZW1lcmFsSW50ZW50LAorICAgICAgICAgICAgU3RyaW5nIHJlc29sdmVkVHlwZSwgQWN0aXZpdHlJbmZvIGFJbmZvLCBSZXNvbHZlSW5mbyBySW5mbywKKyAgICAgICAgICAgIElWb2ljZUludGVyYWN0aW9uU2Vzc2lvbiB2b2ljZVNlc3Npb24sIElWb2ljZUludGVyYWN0b3Igdm9pY2VJbnRlcmFjdG9yLAorICAgICAgICAgICAgSUJpbmRlciByZXN1bHRUbywgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLCBpbnQgY2FsbGluZ1BpZCwgaW50IGNhbGxpbmdVaWQsCisgICAgICAgICAgICBTdHJpbmcgY2FsbGluZ1BhY2thZ2UsIGludCByZWFsQ2FsbGluZ1BpZCwgaW50IHJlYWxDYWxsaW5nVWlkLCBpbnQgc3RhcnRGbGFncywKKyAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBib29sZWFuIGlnbm9yZVRhcmdldFNlY3VyaXR5LCBib29sZWFuIGNvbXBvbmVudFNwZWNpZmllZCwKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkW10gb3V0QWN0aXZpdHksIEFjdGl2aXR5U3RhY2tTdXBlcnZpc29yLkFjdGl2aXR5Q29udGFpbmVyIGNvbnRhaW5lciwKKyAgICAgICAgICAgIFRhc2tSZWNvcmQgaW5UYXNrKSB7CisgICAgICAgIGludCBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUzsKKworICAgICAgICBQcm9jZXNzUmVjb3JkIGNhbGxlckFwcCA9IG51bGw7CisgICAgICAgIGlmIChjYWxsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgY2FsbGVyQXBwID0gbVNlcnZpY2UuZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7CisgICAgICAgICAgICBpZiAoY2FsbGVyQXBwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGVyQXBwLnBpZDsKKyAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gY2FsbGVyQXBwLmluZm8udWlkOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGZpbmQgYXBwIGZvciBjYWxsZXIgIiArIGNhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIChwaWQ9IiArIGNhbGxpbmdQaWQgKyAiKSB3aGVuIHN0YXJ0aW5nOiAiCisgICAgICAgICAgICAgICAgICAgICAgICArIGludGVudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgdXNlcklkID0gYUluZm8gIT0gbnVsbCA/IFVzZXJIYW5kbGUuZ2V0VXNlcklkKGFJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQpIDogMDsKKworICAgICAgICBpZiAoZXJyID09IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBTbG9nLmkoVEFHLCAiU1RBUlQgdSIgKyB1c2VySWQgKyAiIHsiICsgaW50ZW50LnRvU2hvcnRTdHJpbmcodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCisgICAgICAgICAgICAgICAgICAgICsgIn0gZnJvbSB1aWQgIiArIGNhbGxpbmdVaWQKKyAgICAgICAgICAgICAgICAgICAgKyAiIG9uIGRpc3BsYXkgIiArIChjb250YWluZXIgPT0gbnVsbCA/IChtU3VwZXJ2aXNvci5tRm9jdXNlZFN0YWNrID09IG51bGwgPworICAgICAgICAgICAgICAgICAgICBEaXNwbGF5LkRFRkFVTFRfRElTUExBWSA6IG1TdXBlcnZpc29yLm1Gb2N1c2VkU3RhY2subURpc3BsYXlJZCkgOgorICAgICAgICAgICAgICAgICAgICAoY29udGFpbmVyLm1BY3Rpdml0eURpc3BsYXkgPT0gbnVsbCA/IERpc3BsYXkuREVGQVVMVF9ESVNQTEFZIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIubUFjdGl2aXR5RGlzcGxheS5tRGlzcGxheUlkKSkpOworICAgICAgICB9CisKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgc291cmNlUmVjb3JkID0gbnVsbDsKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgcmVzdWx0UmVjb3JkID0gbnVsbDsKKyAgICAgICAgaWYgKHJlc3VsdFRvICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNvdXJjZVJlY29yZCA9IG1TdXBlcnZpc29yLmlzSW5BbnlTdGFja0xvY2tlZChyZXN1bHRUbyk7CisgICAgICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KFRBR19SRVNVTFRTLAorICAgICAgICAgICAgICAgICAgICAiV2lsbCBzZW5kIHJlc3VsdCB0byAiICsgcmVzdWx0VG8gKyAiICIgKyBzb3VyY2VSZWNvcmQpOworICAgICAgICAgICAgaWYgKHNvdXJjZVJlY29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RDb2RlID49IDAgJiYgIXNvdXJjZVJlY29yZC5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkID0gc291cmNlUmVjb3JkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBsYXVuY2hGbGFncyA9IGludGVudC5nZXRGbGFncygpOworCisgICAgICAgIGlmICgobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9GT1JXQVJEX1JFU1VMVCkgIT0gMCAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVHJhbnNmZXIgdGhlIHJlc3VsdCB0YXJnZXQgZnJvbSB0aGUgc291cmNlIGFjdGl2aXR5IHRvIHRoZSBuZXcKKyAgICAgICAgICAgIC8vIG9uZSBiZWluZyBzdGFydGVkLCBpbmNsdWRpbmcgYW55IGZhaWx1cmVzLgorICAgICAgICAgICAgaWYgKHJlcXVlc3RDb2RlID49IDApIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9GT1JXQVJEX0FORF9SRVFVRVNUX0NPTkZMSUNUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0UmVjb3JkID0gc291cmNlUmVjb3JkLnJlc3VsdFRvOworICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsICYmICFyZXN1bHRSZWNvcmQuaXNJblN0YWNrTG9ja2VkKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0V2hvID0gc291cmNlUmVjb3JkLnJlc3VsdFdobzsKKyAgICAgICAgICAgIHJlcXVlc3RDb2RlID0gc291cmNlUmVjb3JkLnJlcXVlc3RDb2RlOworICAgICAgICAgICAgc291cmNlUmVjb3JkLnJlc3VsdFRvID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZC5yZW1vdmVSZXN1bHRzTG9ja2VkKHNvdXJjZVJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc291cmNlUmVjb3JkLmxhdW5jaGVkRnJvbVVpZCA9PSBjYWxsaW5nVWlkKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG5ldyBhY3Rpdml0eSBpcyBiZWluZyBsYXVuY2hlZCBmcm9tIHRoZSBzYW1lIHVpZCBhcyB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSBpbiB0aGUgZmxvdywgYW5kIGFza2luZyB0byBmb3J3YXJkIGl0cyByZXN1bHQgYmFjayB0byB0aGUKKyAgICAgICAgICAgICAgICAvLyBwcmV2aW91cy4gIEluIHRoaXMgY2FzZSB0aGUgYWN0aXZpdHkgaXMgc2VydmluZyBhcyBhIHRyYW1wb2xpbmUgYmV0d2VlbgorICAgICAgICAgICAgICAgIC8vIHRoZSB0d28sIHNvIHdlIGFsc28gd2FudCB0byB1cGRhdGUgaXRzIGxhdW5jaGVkRnJvbVBhY2thZ2UgdG8gYmUgdGhlCisgICAgICAgICAgICAgICAgLy8gc2FtZSBhcyB0aGUgcHJldmlvdXMgYWN0aXZpdHkuICBOb3RlIHRoYXQgdGhpcyBpcyBzYWZlLCBzaW5jZSB3ZSBrbm93CisgICAgICAgICAgICAgICAgLy8gdGhlc2UgdHdvIHBhY2thZ2VzIGNvbWUgZnJvbSB0aGUgc2FtZSB1aWQ7IHRoZSBjYWxsZXIgY291bGQganVzdCBhcworICAgICAgICAgICAgICAgIC8vIHdlbGwgaGF2ZSBzdXBwbGllZCB0aGF0IHNhbWUgcGFja2FnZSBuYW1lIGl0c2VsZi4gIFRoaXMgc3BlY2lmaWFsbHkKKyAgICAgICAgICAgICAgICAvLyBkZWFscyB3aXRoIHRoZSBjYXNlIG9mIGFuIGludGVudCBwaWNrZXIvY2hvb3NlciBiZWluZyBsYXVuY2hlZCBpbiB0aGUgYXBwCisgICAgICAgICAgICAgICAgLy8gZmxvdyB0byByZWRpcmVjdCB0byBhbiBhY3Rpdml0eSBwaWNrZWQgYnkgdGhlIHVzZXIsIHdoZXJlIHdlIHdhbnQgdGhlIGZpbmFsCisgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgdG8gY29uc2lkZXIgaXQgdG8gaGF2ZSBiZWVuIGxhdW5jaGVkIGJ5IHRoZSBwcmV2aW91cyBhcHAgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgY2FsbGluZ1BhY2thZ2UgPSBzb3VyY2VSZWNvcmQubGF1bmNoZWRGcm9tUGFja2FnZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnIgPT0gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1MgJiYgaW50ZW50LmdldENvbXBvbmVudCgpID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFdlIGNvdWxkbid0IGZpbmQgYSBjbGFzcyB0aGF0IGNhbiBoYW5kbGUgdGhlIGdpdmVuIEludGVudC4KKyAgICAgICAgICAgIC8vIFRoYXQncyB0aGUgZW5kIG9mIHRoYXQhCisgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfSU5URU5UX05PVF9SRVNPTFZFRDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnIgPT0gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1MgJiYgYUluZm8gPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWMgY2xhc3Mgc3BlY2lmaWVkIGluIHRoZSBJbnRlbnQuCisgICAgICAgICAgICAvLyBBbHNvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfQ0xBU1NfTk9UX0ZPVU5EOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVyciA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUyAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIHNvdXJjZVJlY29yZC50YXNrLnZvaWNlU2Vzc2lvbiAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIGJlaW5nIGxhdW5jaGVkIGFzIHBhcnQgb2YgYSB2b2ljZSBzZXNzaW9uLCB3ZSBuZWVkCisgICAgICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCBpdCBpcyBzYWZlIHRvIGRvIHNvLiAgSWYgdGhlIHVwY29taW5nIGFjdGl2aXR5IHdpbGwgYWxzbworICAgICAgICAgICAgLy8gYmUgcGFydCBvZiB0aGUgdm9pY2Ugc2Vzc2lvbiwgd2UgY2FuIG9ubHkgbGF1bmNoIGl0IGlmIGl0IGhhcyBleHBsaWNpdGx5CisgICAgICAgICAgICAvLyBzYWlkIGl0IHN1cHBvcnRzIHRoZSBWT0lDRSBjYXRlZ29yeSwgb3IgaXQgaXMgYSBwYXJ0IG9mIHRoZSBjYWxsaW5nIGFwcC4KKyAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX05FV19UQVNLKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICYmIHNvdXJjZVJlY29yZC5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgIT0gYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGludGVudC5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfVk9JQ0UpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5hY3Rpdml0eVN1cHBvcnRzSW50ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRDb21wb25lbnQoKSwgaW50ZW50LCByZXNvbHZlZFR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZpdHkgYmVpbmcgc3RhcnRlZCBpbiBjdXJyZW50IHZvaWNlIHRhc2sgZG9lcyBub3Qgc3VwcG9ydCB2b2ljZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IEFjdGl2aXR5TWFuYWdlci5TVEFSVF9OT1RfVk9JQ0VfQ09NUEFUSUJMRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJGYWlsdXJlIGNoZWNraW5nIHZvaWNlIGNhcGFiaWxpdGllcyIsIGUpOworICAgICAgICAgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfTk9UX1ZPSUNFX0NPTVBBVElCTEU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGVyciA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUyAmJiB2b2ljZVNlc3Npb24gIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBzdGFydGluZyBhIG5ldyB2b2ljZSBzZXNzaW9uLCBqdXN0IG1ha2Ugc3VyZSB0aGUgdGFyZ2V0CisgICAgICAgICAgICAvLyBpcyBhY3R1YWxseSBhbGxvd2luZyBpdCB0byBydW4gdGhpcyB3YXkuCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmICghQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmFjdGl2aXR5U3VwcG9ydHNJbnRlbnQoaW50ZW50LmdldENvbXBvbmVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2aXR5IGJlaW5nIHN0YXJ0ZWQgaW4gbmV3IHZvaWNlIHRhc2sgZG9lcyBub3Qgc3VwcG9ydDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlbnQpOworICAgICAgICAgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfTk9UX1ZPSUNFX0NPTVBBVElCTEU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRmFpbHVyZSBjaGVja2luZyB2b2ljZSBjYXBhYmlsaXRpZXMiLCBlKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfTk9UX1ZPSUNFX0NPTVBBVElCTEU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHJlc3VsdFN0YWNrID0gcmVzdWx0UmVjb3JkID09IG51bGwgPyBudWxsIDogcmVzdWx0UmVjb3JkLnRhc2suc3RhY2s7CisKKyAgICAgICAgaWYgKGVyciAhPSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUykgeworICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0U3RhY2suc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGFib3J0ID0gIW1TdXBlcnZpc29yLmNoZWNrU3RhcnRBbnlBY3Rpdml0eVBlcm1pc3Npb24oaW50ZW50LCBhSW5mbywgcmVzdWx0V2hvLAorICAgICAgICAgICAgICAgIHJlcXVlc3RDb2RlLCBjYWxsaW5nUGlkLCBjYWxsaW5nVWlkLCBjYWxsaW5nUGFja2FnZSwgaWdub3JlVGFyZ2V0U2VjdXJpdHksIGNhbGxlckFwcCwKKyAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQsIHJlc3VsdFN0YWNrKTsKKyAgICAgICAgYWJvcnQgfD0gIW1TZXJ2aWNlLm1JbnRlbnRGaXJld2FsbC5jaGVja1N0YXJ0QWN0aXZpdHkoaW50ZW50LCBjYWxsaW5nVWlkLAorICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQsIHJlc29sdmVkVHlwZSwgYUluZm8uYXBwbGljYXRpb25JbmZvKTsKKworICAgICAgICBpZiAobVNlcnZpY2UubUNvbnRyb2xsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgSW50ZW50IHdlIGdpdmUgdG8gdGhlIHdhdGNoZXIgaGFzIHRoZSBleHRyYSBkYXRhCisgICAgICAgICAgICAgICAgLy8gc3RyaXBwZWQgb2ZmLCBzaW5jZSBpdCBjYW4gY29udGFpbiBwcml2YXRlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEludGVudCB3YXRjaEludGVudCA9IGludGVudC5jbG9uZUZpbHRlcigpOworICAgICAgICAgICAgICAgIGFib3J0IHw9ICFtU2VydmljZS5tQ29udHJvbGxlci5hY3Rpdml0eVN0YXJ0aW5nKHdhdGNoSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgYUluZm8uYXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubUNvbnRyb2xsZXIgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVXNlckluZm8gdXNlciA9IG1TdXBlcnZpc29yLmdldFVzZXJJbmZvKHVzZXJJZCk7CisgICAgICAgIEtleWd1YXJkTWFuYWdlciBrbSA9IChLZXlndWFyZE1hbmFnZXIpIG1TZXJ2aWNlLm1Db250ZXh0CisgICAgICAgICAgICAgICAgLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5LRVlHVUFSRF9TRVJWSUNFKTsKKyAgICAgICAgaWYgKHVzZXIuaXNNYW5hZ2VkUHJvZmlsZSgpCisgICAgICAgICAgICAgICAgJiYgTG9ja1BhdHRlcm5VdGlscy5pc1NlcGFyYXRlV29ya0NoYWxsZW5nZUVuYWJsZWQoKQorICAgICAgICAgICAgICAgICYmIGttLmlzRGV2aWNlTG9ja2VkKHVzZXJJZCkpIHsKKyAgICAgICAgICAgIElJbnRlbnRTZW5kZXIgdGFyZ2V0ID0gbVNlcnZpY2UuZ2V0SW50ZW50U2VuZGVyTG9ja2VkKAorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXIuSU5URU5UX1NFTkRFUl9BQ1RJVklUWSwgY2FsbGluZ1BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgIEJpbmRlci5nZXRDYWxsaW5nVWlkKCksIHVzZXJJZCwgbnVsbCwgbnVsbCwgMCwgbmV3IEludGVudFtdeyBpbnRlbnQgfSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyByZXNvbHZlZFR5cGUgfSwKKyAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UIHwgUGVuZGluZ0ludGVudC5GTEFHX09ORV9TSE9UCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZW5kaW5nSW50ZW50LkZMQUdfSU1NVVRBQkxFLCBudWxsKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBmbGFncyA9IGludGVudC5nZXRGbGFncygpOworICAgICAgICAgICAgZmluYWwgSW50ZW50IG5ld0ludGVudCA9IGttLmNyZWF0ZUNvbmZpcm1EZXZpY2VDcmVkZW50aWFsSW50ZW50KG51bGwsIG51bGwsIHVzZXIuaWQpOworICAgICAgICAgICAgaWYgKG5ld0ludGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3SW50ZW50OworICAgICAgICAgICAgICAgIGludGVudC5zZXRGbGFncyhmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7CisgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9QQUNLQUdFX05BTUUsIGFJbmZvLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0lOVEVOVCwgbmV3IEludGVudFNlbmRlcih0YXJnZXQpKTsKKworICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSA9IG51bGw7CisgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IHJlYWxDYWxsaW5nVWlkOworICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSByZWFsQ2FsbGluZ1BpZDsKKworICAgICAgICAgICAgICAgIFVzZXJJbmZvIHBhcmVudCA9IFVzZXJNYW5hZ2VyLmdldChtU2VydmljZS5tQ29udGV4dCkuZ2V0UHJvZmlsZVBhcmVudCh1c2VySWQpOworICAgICAgICAgICAgICAgIHJJbmZvID0gbVN1cGVydmlzb3IucmVzb2x2ZUludGVudChpbnRlbnQsIHJlc29sdmVkVHlwZSwgcGFyZW50LmlkKTsKKyAgICAgICAgICAgICAgICBhSW5mbyA9IG1TdXBlcnZpc29yLnJlc29sdmVBY3Rpdml0eShpbnRlbnQsIHJJbmZvLCBzdGFydEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAvKnByb2ZpbGVySW5mbyovKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChhYm9ydCkgeworICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0U3RhY2suc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLCByZXN1bHRSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gV2UgcHJldGVuZCB0byB0aGUgY2FsbGVyIHRoYXQgaXQgd2FzIHJlYWxseSBzdGFydGVkLCBidXQKKyAgICAgICAgICAgIC8vIHRoZXkgd2lsbCBqdXN0IGdldCBhIGNhbmNlbCByZXN1bHQuCisgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7CisgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1M7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBwZXJtaXNzaW9ucyBuZWVkIGEgcmV2aWV3IGJlZm9yZSBhbnkgb2YgdGhlIGFwcCBjb21wb25lbnRzIGNhbiBydW4sIHdlCisgICAgICAgIC8vIGxhdW5jaCB0aGUgcmV2aWV3IGFjdGl2aXR5IGFuZCBwYXNzIGEgcGVuZGluZyBpbnRlbnQgdG8gc3RhcnQgdGhlIGFjdGl2aXR5CisgICAgICAgIC8vIHdlIGFyZSB0byBsYXVuY2hpbmcgbm93IGFmdGVyIHRoZSByZXZpZXcgaXMgY29tcGxldGVkLgorICAgICAgICBpZiAoQnVpbGQuUEVSTUlTU0lPTlNfUkVWSUVXX1JFUVVJUkVEICYmIGFJbmZvICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChtU2VydmljZS5nZXRQYWNrYWdlTWFuYWdlckludGVybmFsTG9ja2VkKCkuaXNQZXJtaXNzaW9uc1Jldmlld1JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBhSW5mby5wYWNrYWdlTmFtZSwgdXNlcklkKSkgeworICAgICAgICAgICAgICAgIElJbnRlbnRTZW5kZXIgdGFyZ2V0ID0gbVNlcnZpY2UuZ2V0SW50ZW50U2VuZGVyTG9ja2VkKAorICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyLklOVEVOVF9TRU5ERVJfQUNUSVZJVFksIGNhbGxpbmdQYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCwgdXNlcklkLCBudWxsLCBudWxsLCAwLCBuZXcgSW50ZW50W117aW50ZW50fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXXtyZXNvbHZlZFR5cGV9LCBQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZW5kaW5nSW50ZW50LkZMQUdfT05FX1NIT1QsIG51bGwpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGZsYWdzID0gaW50ZW50LmdldEZsYWdzKCk7CisgICAgICAgICAgICAgICAgSW50ZW50IG5ld0ludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9SRVZJRVdfUEVSTUlTU0lPTlMpOworICAgICAgICAgICAgICAgIG5ld0ludGVudC5zZXRGbGFncyhmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7CisgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9QQUNLQUdFX05BTUUsIGFJbmZvLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0lOVEVOVCwgbmV3IEludGVudFNlbmRlcih0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9SRVNVTFRfTkVFREVELCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3SW50ZW50OworCisgICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlID0gbnVsbDsKKyAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gcmVhbENhbGxpbmdVaWQ7CisgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IHJlYWxDYWxsaW5nUGlkOworCisgICAgICAgICAgICAgICAgckluZm8gPSBtU3VwZXJ2aXNvci5yZXNvbHZlSW50ZW50KGludGVudCwgcmVzb2x2ZWRUeXBlLCB1c2VySWQpOworICAgICAgICAgICAgICAgIGFJbmZvID0gbVN1cGVydmlzb3IucmVzb2x2ZUFjdGl2aXR5KGludGVudCwgckluZm8sIHN0YXJ0RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsIC8qcHJvZmlsZXJJbmZvKi8pOworCisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BFUk1JU1NJT05TX1JFVklFVykgeworICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiU1RBUlQgdSIgKyB1c2VySWQgKyAiIHsiICsgaW50ZW50LnRvU2hvcnRTdHJpbmcodHJ1ZSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBmYWxzZSkgKyAifSBmcm9tIHVpZCAiICsgY2FsbGluZ1VpZCArICIgb24gZGlzcGxheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoY29udGFpbmVyID09IG51bGwgPyAobVN1cGVydmlzb3IubUZvY3VzZWRTdGFjayA9PSBudWxsID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5LkRFRkFVTFRfRElTUExBWSA6IG1TdXBlcnZpc29yLm1Gb2N1c2VkU3RhY2subURpc3BsYXlJZCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWluZXIubUFjdGl2aXR5RGlzcGxheSA9PSBudWxsID8gRGlzcGxheS5ERUZBVUxUX0RJU1BMQVkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1BY3Rpdml0eURpc3BsYXkubURpc3BsYXlJZCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGVwaGVtZXJhbCBhcHAsIGFib3J0IHRoZSBwcm9jZXNzIG9mIGxhdW5jaGluZyB0aGUgcmVzb2x2ZWQgaW50ZW50LgorICAgICAgICAvLyBJbnN0ZWFkLCBsYXVuY2ggdGhlIGVwaGVtZXJhbCBpbnN0YWxsZXIuIE9uY2UgdGhlIGluc3RhbGxlciBpcyBmaW5pc2hlZCwgaXQKKyAgICAgICAgLy8gc3RhcnRzIGVpdGhlciB0aGUgaW50ZW50IHdlIHJlc29sdmVkIGhlcmUgW29uIGluc3RhbGwgZXJyb3JdIG9yIHRoZSBlcGhlbWVyYWwKKyAgICAgICAgLy8gYXBwIFtvbiBpbnN0YWxsIHN1Y2Nlc3NdLgorICAgICAgICBpZiAockluZm8gIT0gbnVsbCAmJiBySW5mby5lcGhlbWVyYWxSZXNvbHZlSW5mbyAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgYSBwZW5kaW5nIGludGVudCB0byBzdGFydCB0aGUgaW50ZW50IHJlc29sdmVkIGhlcmUuCisgICAgICAgICAgICBmaW5hbCBJSW50ZW50U2VuZGVyIGZhaWx1cmVUYXJnZXQgPSBtU2VydmljZS5nZXRJbnRlbnRTZW5kZXJMb2NrZWQoCisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlci5JTlRFTlRfU0VOREVSX0FDVElWSVRZLCBjYWxsaW5nUGFja2FnZSwKKyAgICAgICAgICAgICAgICAgICAgQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBudWxsLCBudWxsLCAwLCBuZXcgSW50ZW50W117IGludGVudCB9LAorICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW117IHJlc29sdmVkVHlwZSB9LAorICAgICAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQgfCBQZW5kaW5nSW50ZW50LkZMQUdfT05FX1NIT1QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlbmRpbmdJbnRlbnQuRkxBR19JTU1VVEFCTEUsIG51bGwpOworCisgICAgICAgICAgICAvLyBDcmVhdGUgYSBwZW5kaW5nIGludGVudCB0byBzdGFydCB0aGUgZXBoZW1lcmFsIGFwcGxpY2F0aW9uOyBmb3JjZSBpdCB0byBiZQorICAgICAgICAgICAgLy8gZGlyZWN0ZWQgdG8gdGhlIGVwaGVtZXJhbCBwYWNrYWdlLgorICAgICAgICAgICAgZXBoZW1lcmFsSW50ZW50LnNldFBhY2thZ2UockluZm8uZXBoZW1lcmFsUmVzb2x2ZUluZm8uZ2V0UGFja2FnZU5hbWUoKSk7CisgICAgICAgICAgICBmaW5hbCBJSW50ZW50U2VuZGVyIGVwaGVtZXJhbFRhcmdldCA9IG1TZXJ2aWNlLmdldEludGVudFNlbmRlckxvY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyLklOVEVOVF9TRU5ERVJfQUNUSVZJVFksIGNhbGxpbmdQYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCB1c2VySWQsIG51bGwsIG51bGwsIDAsIG5ldyBJbnRlbnRbXXsgZXBoZW1lcmFsSW50ZW50IH0sCisgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsgcmVzb2x2ZWRUeXBlIH0sCisgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVCB8IFBlbmRpbmdJbnRlbnQuRkxBR19PTkVfU0hPVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVuZGluZ0ludGVudC5GTEFHX0lNTVVUQUJMRSwgbnVsbCk7CisKKyAgICAgICAgICAgIGludCBmbGFncyA9IGludGVudC5nZXRGbGFncygpOworICAgICAgICAgICAgaW50ZW50ID0gbmV3IEludGVudCgpOworICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKGZsYWdzCisgICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7CisgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX1BBQ0tBR0VfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgckluZm8uZXBoZW1lcmFsUmVzb2x2ZUluZm8uZ2V0UGFja2FnZU5hbWUoKSk7CisgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0VQSEVNRVJBTF9GQUlMVVJFLCBuZXcgSW50ZW50U2VuZGVyKGZhaWx1cmVUYXJnZXQpKTsKKyAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfRVBIRU1FUkFMX1NVQ0NFU1MsIG5ldyBJbnRlbnRTZW5kZXIoZXBoZW1lcmFsVGFyZ2V0KSk7CisKKyAgICAgICAgICAgIHJlc29sdmVkVHlwZSA9IG51bGw7CisgICAgICAgICAgICBjYWxsaW5nVWlkID0gcmVhbENhbGxpbmdVaWQ7CisgICAgICAgICAgICBjYWxsaW5nUGlkID0gcmVhbENhbGxpbmdQaWQ7CisKKyAgICAgICAgICAgIHJJbmZvID0gckluZm8uZXBoZW1lcmFsSW5zdGFsbGVyOworICAgICAgICAgICAgYUluZm8gPSBtU3VwZXJ2aXNvci5yZXNvbHZlQWN0aXZpdHkoaW50ZW50LCBySW5mbywgc3RhcnRGbGFncywgbnVsbCAvKnByb2ZpbGVySW5mbyovKTsKKyAgICAgICAgfQorCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBuZXcgQWN0aXZpdHlSZWNvcmQobVNlcnZpY2UsIGNhbGxlckFwcCwgY2FsbGluZ1VpZCwgY2FsbGluZ1BhY2thZ2UsCisgICAgICAgICAgICAgICAgaW50ZW50LCByZXNvbHZlZFR5cGUsIGFJbmZvLCBtU2VydmljZS5tQ29uZmlndXJhdGlvbiwgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sCisgICAgICAgICAgICAgICAgcmVxdWVzdENvZGUsIGNvbXBvbmVudFNwZWNpZmllZCwgdm9pY2VTZXNzaW9uICE9IG51bGwsIG1TdXBlcnZpc29yLCBjb250YWluZXIsCisgICAgICAgICAgICAgICAgb3B0aW9ucyk7CisgICAgICAgIGlmIChvdXRBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICBvdXRBY3Rpdml0eVswXSA9IHI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoci5hcHBUaW1lVHJhY2tlciA9PSBudWxsICYmIHNvdXJjZVJlY29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGRpZG4ndCBzcGVjaWZ5IGFuIGV4cGxpY2l0IHRpbWUgdHJhY2tlciwgd2Ugd2FudCB0byBjb250aW51ZQorICAgICAgICAgICAgLy8gdHJhY2tpbmcgdW5kZXIgYW55IGl0IGhhcy4KKyAgICAgICAgICAgIHIuYXBwVGltZVRyYWNrZXIgPSBzb3VyY2VSZWNvcmQuYXBwVGltZVRyYWNrZXI7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHN0YWNrID0gbVN1cGVydmlzb3IubUZvY3VzZWRTdGFjazsKKyAgICAgICAgaWYgKHZvaWNlU2Vzc2lvbiA9PSBudWxsICYmIChzdGFjay5tUmVzdW1lZEFjdGl2aXR5ID09IG51bGwKKyAgICAgICAgICAgICAgICB8fCBzdGFjay5tUmVzdW1lZEFjdGl2aXR5LmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCAhPSBjYWxsaW5nVWlkKSkgeworICAgICAgICAgICAgaWYgKCFtU2VydmljZS5jaGVja0FwcFN3aXRjaEFsbG93ZWRMb2NrZWQoY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwKKyAgICAgICAgICAgICAgICAgICAgcmVhbENhbGxpbmdQaWQsIHJlYWxDYWxsaW5nVWlkLCAiQWN0aXZpdHkgc3RhcnQiKSkgeworICAgICAgICAgICAgICAgIFBlbmRpbmdBY3Rpdml0eUxhdW5jaCBwYWwgPSAgbmV3IFBlbmRpbmdBY3Rpdml0eUxhdW5jaChyLAorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLCBzdGFydEZsYWdzLCBzdGFjaywgY2FsbGVyQXBwKTsKKyAgICAgICAgICAgICAgICBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuYWRkKHBhbCk7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOworICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1dJVENIRVNfQ0FOQ0VMRUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobVNlcnZpY2UubURpZEFwcFN3aXRjaCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Vjb25kIGFsbG93ZWQgc3dpdGNoIHNpbmNlIHdlIHN0b3BwZWQgc3dpdGNoZXMsCisgICAgICAgICAgICAvLyBzbyBub3cganVzdCBnZW5lcmFsbHkgYWxsb3cgc3dpdGNoZXMuICBVc2UgY2FzZTogdXNlciBwcmVzc2VzCisgICAgICAgICAgICAvLyBob21lIChzd2l0Y2hlcyBkaXNhYmxlZCwgc3dpdGNoIHRvIGhvbWUsIG1EaWRBcHBTd2l0Y2ggbm93IHRydWUpOworICAgICAgICAgICAgLy8gdXNlciB0YXBzIGEgaG9tZSBpY29uIChjb21pbmcgZnJvbSBob21lIHNvIGFsbG93ZWQsIHdlIGhpdCBoZXJlCisgICAgICAgICAgICAvLyBhbmQgbm93IGFsbG93IGFueW9uZSB0byBzd2l0Y2ggYWdhaW4pLgorICAgICAgICAgICAgbVNlcnZpY2UubUFwcFN3aXRjaGVzQWxsb3dlZFRpbWUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbVNlcnZpY2UubURpZEFwcFN3aXRjaCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBkb1BlbmRpbmdBY3Rpdml0eUxhdW5jaGVzTG9ja2VkKGZhbHNlKTsKKworICAgICAgICBlcnIgPSBzdGFydEFjdGl2aXR5VW5jaGVja2VkTG9ja2VkKHIsIHNvdXJjZVJlY29yZCwgdm9pY2VTZXNzaW9uLAorICAgICAgICAgICAgICAgIHZvaWNlSW50ZXJhY3Rvciwgc3RhcnRGbGFncywgdHJ1ZSwgb3B0aW9ucywgaW5UYXNrKTsKKworICAgICAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICAgICAgLy8gSWYgc29tZW9uZSBhc2tlZCB0byBoYXZlIHRoZSBrZXlndWFyZCBkaXNtaXNzZWQgb24gdGhlIG5leHQKKyAgICAgICAgICAgIC8vIGFjdGl2aXR5IHN0YXJ0LCBidXQgd2UgYXJlIG5vdCBhY3R1YWxseSBkb2luZyBhbiBhY3Rpdml0eQorICAgICAgICAgICAgLy8gc3dpdGNoLi4uICBqdXN0IGRpc21pc3MgdGhlIGtleWd1YXJkIG5vdywgYmVjYXVzZSB3ZQorICAgICAgICAgICAgLy8gcHJvYmFibHkgd2FudCB0byBzZWUgd2hhdGV2ZXIgaXMgYmVoaW5kIGl0LgorICAgICAgICAgICAgbVN1cGVydmlzb3Iubm90aWZ5QWN0aXZpdHlEcmF3bkZvcktleWd1YXJkKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0SG9tZUFjdGl2aXR5TG9ja2VkKEludGVudCBpbnRlbnQsIEFjdGl2aXR5SW5mbyBhSW5mbywgU3RyaW5nIHJlYXNvbikgeworICAgICAgICBtU3VwZXJ2aXNvci5tb3ZlSG9tZVN0YWNrVGFza1RvVG9wKEhPTUVfQUNUSVZJVFlfVFlQRSwgcmVhc29uKTsKKyAgICAgICAgc3RhcnRBY3Rpdml0eUxvY2tlZChudWxsIC8qY2FsbGVyKi8sIGludGVudCwgbnVsbCAvKmVwaGVtZXJhbEludGVudCovLAorICAgICAgICAgICAgICAgIG51bGwgLypyZXNvbHZlZFR5cGUqLywgYUluZm8sIG51bGwgLypySW5mbyovLCBudWxsIC8qdm9pY2VTZXNzaW9uKi8sCisgICAgICAgICAgICAgICAgbnVsbCAvKnZvaWNlSW50ZXJhY3RvciovLCBudWxsIC8qcmVzdWx0VG8qLywgbnVsbCAvKnJlc3VsdFdobyovLAorICAgICAgICAgICAgICAgIDAgLypyZXF1ZXN0Q29kZSovLCAwIC8qY2FsbGluZ1BpZCovLCAwIC8qY2FsbGluZ1VpZCovLCBudWxsIC8qY2FsbGluZ1BhY2thZ2UqLywKKyAgICAgICAgICAgICAgICAwIC8qcmVhbENhbGxpbmdQaWQqLywgMCAvKnJlYWxDYWxsaW5nVWlkKi8sIDAgLypzdGFydEZsYWdzKi8sIG51bGwgLypvcHRpb25zKi8sCisgICAgICAgICAgICAgICAgZmFsc2UgLyppZ25vcmVUYXJnZXRTZWN1cml0eSovLCBmYWxzZSAvKmNvbXBvbmVudFNwZWNpZmllZCovLCAgbnVsbCAvKm91dEFjdGl2aXR5Ki8sCisgICAgICAgICAgICAgICAgbnVsbCAvKmNvbnRhaW5lciovLCBudWxsIC8qaW5UYXNrKi8pOworICAgICAgICBpZiAobVN1cGVydmlzb3IuaW5SZXN1bWVUb3BBY3Rpdml0eSkgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHJlc3VtZSBzZWN0aW9uIGFscmVhZHksIGhvbWUgYWN0aXZpdHkgd2lsbCBiZSBpbml0aWFsaXplZCwgYnV0IG5vdAorICAgICAgICAgICAgLy8gcmVzdW1lZCAodG8gYXZvaWQgcmVjdXJzaXZlIHJlc3VtZSkgYW5kIHdpbGwgc3RheSB0aGF0IHdheSB1bnRpbCBzb21ldGhpbmcgcG9rZXMgaXQKKyAgICAgICAgICAgIC8vIGFnYWluLiBXZSBuZWVkIHRvIHNjaGVkdWxlIGFub3RoZXIgcmVzdW1lLgorICAgICAgICAgICAgbVN1cGVydmlzb3Iuc2NoZWR1bGVSZXN1bWVUb3BBY3Rpdml0aWVzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eU1heVdhaXQoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgaW50IGNhbGxpbmdVaWQsCisgICAgICAgICAgICBTdHJpbmcgY2FsbGluZ1BhY2thZ2UsIEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsCisgICAgICAgICAgICBJVm9pY2VJbnRlcmFjdGlvblNlc3Npb24gdm9pY2VTZXNzaW9uLCBJVm9pY2VJbnRlcmFjdG9yIHZvaWNlSW50ZXJhY3RvciwKKyAgICAgICAgICAgIElCaW5kZXIgcmVzdWx0VG8sIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgaW50IHN0YXJ0RmxhZ3MsCisgICAgICAgICAgICBQcm9maWxlckluZm8gcHJvZmlsZXJJbmZvLCBJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQgb3V0UmVzdWx0LCBDb25maWd1cmF0aW9uIGNvbmZpZywKKyAgICAgICAgICAgIEJ1bmRsZSBiT3B0aW9ucywgYm9vbGVhbiBpZ25vcmVUYXJnZXRTZWN1cml0eSwgaW50IHVzZXJJZCwKKyAgICAgICAgICAgIElBY3Rpdml0eUNvbnRhaW5lciBpQ29udGFpbmVyLCBUYXNrUmVjb3JkIGluVGFzaykgeworICAgICAgICAvLyBSZWZ1c2UgcG9zc2libGUgbGVha2VkIGZpbGUgZGVzY3JpcHRvcnMKKyAgICAgICAgaWYgKGludGVudCAhPSBudWxsICYmIGludGVudC5oYXNGaWxlRGVzY3JpcHRvcnMoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRmlsZSBkZXNjcmlwdG9ycyBwYXNzZWQgaW4gSW50ZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgIT0gbnVsbDsKKworICAgICAgICAvLyBTYXZlIGEgY29weSBpbiBjYXNlIGVwaGVtZXJhbCBuZWVkcyBpdAorICAgICAgICBmaW5hbCBJbnRlbnQgZXBoZW1lcmFsSW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOworICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhlIGNsaWVudCdzIG9iamVjdCEKKyAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOworCisgICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0gbVN1cGVydmlzb3IucmVzb2x2ZUludGVudChpbnRlbnQsIHJlc29sdmVkVHlwZSwgdXNlcklkKTsKKyAgICAgICAgLy8gQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IG9mIHRoZSBJbnRlbnQuCisgICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbyA9IG1TdXBlcnZpc29yLnJlc29sdmVBY3Rpdml0eShpbnRlbnQsIHJJbmZvLCBzdGFydEZsYWdzLCBwcm9maWxlckluZm8pOworCisgICAgICAgIEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zID0gQWN0aXZpdHlPcHRpb25zLmZyb21CdW5kbGUoYk9wdGlvbnMpOworICAgICAgICBBY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5BY3Rpdml0eUNvbnRhaW5lciBjb250YWluZXIgPQorICAgICAgICAgICAgICAgIChBY3Rpdml0eVN0YWNrU3VwZXJ2aXNvci5BY3Rpdml0eUNvbnRhaW5lcilpQ29udGFpbmVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICBpZiAoY29udGFpbmVyICE9IG51bGwgJiYgY29udGFpbmVyLm1QYXJlbnRBY3Rpdml0eSAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tUGFyZW50QWN0aXZpdHkuc3RhdGUgIT0gUkVTVU1FRCkgeworICAgICAgICAgICAgICAgIC8vIENhbm5vdCBzdGFydCBhIGNoaWxkIGFjdGl2aXR5IGlmIHRoZSBwYXJlbnQgaXMgbm90IHJlc3VtZWQuCisgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9DQU5DRUxFRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIGludCByZWFsQ2FsbGluZ1BpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgcmVhbENhbGxpbmdVaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICAgICAgaW50IGNhbGxpbmdQaWQ7CisgICAgICAgICAgICBpZiAoY2FsbGluZ1VpZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSByZWFsQ2FsbGluZ1BpZDsKKyAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gcmVhbENhbGxpbmdVaWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBjYWxsaW5nVWlkID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgc3RhY2s7CisgICAgICAgICAgICBpZiAoY29udGFpbmVyID09IG51bGwgfHwgY29udGFpbmVyLm1TdGFjay5pc09uSG9tZURpc3BsYXkoKSkgeworICAgICAgICAgICAgICAgIHN0YWNrID0gbVN1cGVydmlzb3IubUZvY3VzZWRTdGFjazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBjb250YWluZXIubVN0YWNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhY2subUNvbmZpZ1dpbGxDaGFuZ2UgPSBjb25maWcgIT0gbnVsbCAmJiBtU2VydmljZS5tQ29uZmlndXJhdGlvbi5kaWZmKGNvbmZpZykgIT0gMDsKKyAgICAgICAgICAgIGlmIChERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHX0NPTkZJR1VSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICJTdGFydGluZyBhY3Rpdml0eSB3aGVuIGNvbmZpZyB3aWxsIGNoYW5nZSA9ICIgKyBzdGFjay5tQ29uZmlnV2lsbENoYW5nZSk7CisKKyAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisKKyAgICAgICAgICAgIGlmIChhSW5mbyAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgIChhSW5mby5hcHBsaWNhdGlvbkluZm8ucHJpdmF0ZUZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBBcHBsaWNhdGlvbkluZm8uUFJJVkFURV9GTEFHX0NBTlRfU0FWRV9TVEFURSkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIGEgaGVhdnktd2VpZ2h0IHByb2Nlc3MhICBDaGVjayB0byBzZWUgaWYgd2UgYWxyZWFkeQorICAgICAgICAgICAgICAgIC8vIGhhdmUgYW5vdGhlciwgZGlmZmVyZW50IGhlYXZ5LXdlaWdodCBwcm9jZXNzIHJ1bm5pbmcuCisgICAgICAgICAgICAgICAgaWYgKGFJbmZvLnByb2Nlc3NOYW1lLmVxdWFscyhhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFByb2Nlc3NSZWNvcmQgaGVhdnkgPSBtU2VydmljZS5tSGVhdnlXZWlnaHRQcm9jZXNzOworICAgICAgICAgICAgICAgICAgICBpZiAoaGVhdnkgIT0gbnVsbCAmJiAoaGVhdnkuaW5mby51aWQgIT0gYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFoZWF2eS5wcm9jZXNzTmFtZS5lcXVhbHMoYUluZm8ucHJvY2Vzc05hbWUpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFwcENhbGxpbmdVaWQgPSBjYWxsaW5nVWlkOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBjYWxsZXJBcHAgPSBtU2VydmljZS5nZXRSZWNvcmRGb3JBcHBMb2NrZWQoY2FsbGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVyQXBwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwQ2FsbGluZ1VpZCA9IGNhbGxlckFwcC5pbmZvLnVpZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGZpbmQgYXBwIGZvciBjYWxsZXIgIiArIGNhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAocGlkPSIgKyBjYWxsaW5nUGlkICsgIikgd2hlbiBzdGFydGluZzogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBJSW50ZW50U2VuZGVyIHRhcmdldCA9IG1TZXJ2aWNlLmdldEludGVudFNlbmRlckxvY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyLklOVEVOVF9TRU5ERVJfQUNUSVZJVFksICJhbmRyb2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwQ2FsbGluZ1VpZCwgdXNlcklkLCBudWxsLCBudWxsLCAwLCBuZXcgSW50ZW50W10geyBpbnRlbnQgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgcmVzb2x2ZWRUeXBlIH0sIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVuZGluZ0ludGVudC5GTEFHX09ORV9TSE9ULCBudWxsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50IG5ld0ludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0Q29kZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGlzIHJlcXVlc3RpbmcgYSByZXN1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfSEFTX1JFU1VMVCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LktFWV9JTlRFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlbnRTZW5kZXIodGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhdnkuYWN0aXZpdGllcy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgaGlzdCA9IGhlYXZ5LmFjdGl2aXRpZXMuZ2V0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuS0VZX0NVUl9BUFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0LnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LktFWV9DVVJfVEFTSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3QudGFzay50YXNrSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfTkVXX0FQUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUluZm8ucGFja2FnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnNldEZsYWdzKGludGVudC5nZXRGbGFncygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5zZXRDbGFzc05hbWUoImFuZHJvaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudCA9IG5ld0ludGVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gQmluZGVyLmdldENhbGxpbmdQaWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFNwZWNpZmllZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBySW5mbyA9IG1TdXBlcnZpc29yLnJlc29sdmVJbnRlbnQoaW50ZW50LCBudWxsIC8qcmVzb2x2ZWRUeXBlKi8sIHVzZXJJZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhSW5mbyA9IHJJbmZvICE9IG51bGwgPyBySW5mby5hY3Rpdml0eUluZm8gOiBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFJbmZvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhSW5mbyA9IG1TZXJ2aWNlLmdldEFjdGl2aXR5SW5mb0ZvclVzZXIoYUluZm8sIHVzZXJJZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCByZXMgPSBzdGFydEFjdGl2aXR5TG9ja2VkKGNhbGxlciwgaW50ZW50LCBlcGhlbWVyYWxJbnRlbnQsIHJlc29sdmVkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgYUluZm8sIHJJbmZvLCB2b2ljZVNlc3Npb24sIHZvaWNlSW50ZXJhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0VG8sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIGNhbGxpbmdQaWQsCisgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQsIGNhbGxpbmdQYWNrYWdlLCByZWFsQ2FsbGluZ1BpZCwgcmVhbENhbGxpbmdVaWQsIHN0YXJ0RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsIGlnbm9yZVRhcmdldFNlY3VyaXR5LCBjb21wb25lbnRTcGVjaWZpZWQsIG51bGwsIGNvbnRhaW5lciwgaW5UYXNrKTsKKworICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKKworICAgICAgICAgICAgaWYgKHN0YWNrLm1Db25maWdXaWxsQ2hhbmdlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBhbHNvIHdhbnRzIHRvIHN3aXRjaCB0byBhIG5ldyBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIC8vIGRvIHNvIG5vdy4gIFRoaXMgYWxsb3dzIGEgY2xlYW4gc3dpdGNoLCBhcyB3ZSBhcmUgd2FpdGluZworICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgY3VycmVudCBhY3Rpdml0eSB0byBwYXVzZSAoc28gd2Ugd2lsbCBub3QgZGVzdHJveQorICAgICAgICAgICAgICAgIC8vIGl0KSwgYW5kIGhhdmUgbm90IHlldCBzdGFydGVkIHRoZSBuZXh0IGFjdGl2aXR5LgorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX0NPTkZJR1VSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAidXBkYXRlQ29uZmlndXJhdGlvbigpIik7CisgICAgICAgICAgICAgICAgc3RhY2subUNvbmZpZ1dpbGxDaGFuZ2UgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBR19DT05GSUdVUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVwZGF0aW5nIHRvIG5ldyBjb25maWd1cmF0aW9uIGFmdGVyIHN0YXJ0aW5nIGFjdGl2aXR5LiIpOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb25Mb2NrZWQoY29uZmlnLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChvdXRSZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dFJlc3VsdC5yZXN1bHQgPSByZXM7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5tV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQuYWRkKG91dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2Uud2FpdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICghb3V0UmVzdWx0LnRpbWVvdXQgJiYgb3V0UmVzdWx0LndobyA9PSBudWxsKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfVEFTS19UT19GUk9OVCkgeworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gc3RhY2sudG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyLm5vd1Zpc2libGUgJiYgci5zdGF0ZSA9PSBSRVNVTUVEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGltZW91dCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LndobyA9IG5ldyBDb21wb25lbnROYW1lKHIuaW5mby5wYWNrYWdlTmFtZSwgci5pbmZvLm5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LnRvdGFsVGltZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGhpc1RpbWUgPSAwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LnRoaXNUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5tV2FpdGluZ0FjdGl2aXR5VmlzaWJsZS5hZGQob3V0UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS53YWl0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCFvdXRSZXN1bHQudGltZW91dCAmJiBvdXRSZXN1bHQud2hvID09IG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgfQorCisgICAgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlVbmNoZWNrZWRMb2NrZWQoZmluYWwgQWN0aXZpdHlSZWNvcmQgciwgQWN0aXZpdHlSZWNvcmQgc291cmNlUmVjb3JkLAorICAgICAgICAgICAgSVZvaWNlSW50ZXJhY3Rpb25TZXNzaW9uIHZvaWNlU2Vzc2lvbiwgSVZvaWNlSW50ZXJhY3RvciB2b2ljZUludGVyYWN0b3IsIGludCBzdGFydEZsYWdzLAorICAgICAgICAgICAgYm9vbGVhbiBkb1Jlc3VtZSwgQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIFRhc2tSZWNvcmQgaW5UYXNrKSB7CisgICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSByLmludGVudDsKKyAgICAgICAgZmluYWwgaW50IGNhbGxpbmdVaWQgPSByLmxhdW5jaGVkRnJvbVVpZDsKKworICAgICAgICBmaW5hbCBSZWN0IG5ld0JvdW5kcyA9IG1TdXBlcnZpc29yLmdldE92ZXJyaWRlQm91bmRzKHIsIG9wdGlvbnMsIGluVGFzayk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gb3ZlcnJpZGVCb3VuZHMgPSBuZXdCb3VuZHMgIT0gbnVsbDsKKworICAgICAgICAvLyBJbiBzb21lIGZsb3dzIGluIHRvIHRoaXMgZnVuY3Rpb24sIHdlIHJldHJpZXZlIHRoZSB0YXNrIHJlY29yZCBhbmQgaG9sZCBvbiB0byBpdAorICAgICAgICAvLyB3aXRob3V0IGEgbG9jayBiZWZvcmUgY2FsbGluZyBiYWNrIGluIHRvIGhlcmUuLi4gIHNvIHRoZSB0YXNrIGF0IHRoaXMgcG9pbnQgbWF5CisgICAgICAgIC8vIG5vdCBhY3R1YWxseSBiZSBpbiByZWNlbnRzLiAgQ2hlY2sgZm9yIHRoYXQsIGFuZCBpZiBpdCBpc24ndCBpbiByZWNlbnRzIGp1c3QKKyAgICAgICAgLy8gY29uc2lkZXIgaXQgaW52YWxpZC4KKyAgICAgICAgaWYgKGluVGFzayAhPSBudWxsICYmICFpblRhc2suaW5SZWNlbnRzKSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCAiU3RhcnRpbmcgYWN0aXZpdHkgaW4gdGFzayBub3QgaW4gcmVjZW50czogIiArIGluVGFzayk7CisgICAgICAgICAgICBpblRhc2sgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBsYXVuY2hTaW5nbGVUb3AgPSByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVE9QOworICAgICAgICBmaW5hbCBib29sZWFuIGxhdW5jaFNpbmdsZUluc3RhbmNlID0gci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFOworICAgICAgICBmaW5hbCBib29sZWFuIGxhdW5jaFNpbmdsZVRhc2sgPSByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSzsKKyAgICAgICAgaW50IGxhdW5jaEZsYWdzID0gYWRqdXN0TGF1bmNoRmxhZ3NUb0RvY3VtZW50TW9kZShyLCBsYXVuY2hTaW5nbGVJbnN0YW5jZSwgbGF1bmNoU2luZ2xlVGFzaywKKyAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0RmxhZ3MoKSk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gbGF1bmNoVGFza0JlaGluZCA9IHIubUxhdW5jaFRhc2tCZWhpbmQKKyAgICAgICAgICAgICAgICAmJiAhbGF1bmNoU2luZ2xlVGFzayAmJiAhbGF1bmNoU2luZ2xlSW5zdGFuY2UKKyAgICAgICAgICAgICAgICAmJiAobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQpICE9IDA7CisKKyAgICAgICAgaWYgKHIucmVzdWx0VG8gIT0gbnVsbCAmJiAobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwCisgICAgICAgICAgICAgICAgJiYgci5yZXN1bHRUby50YXNrLnN0YWNrICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24gdGhpcyBhY3Rpdml0eSBpcyBiZWluZyBsYXVuY2hlZCBpbnRvIGEgbmV3CisgICAgICAgICAgICAvLyB0YXNrLi4uICB5ZXQgdGhlIGNhbGxlciBoYXMgcmVxdWVzdGVkIGEgcmVzdWx0IGJhY2suICBXZWxsLCB0aGF0CisgICAgICAgICAgICAvLyBpcyBwcmV0dHkgbWVzc2VkIHVwLCBzbyBpbnN0ZWFkIGltbWVkaWF0ZWx5IHNlbmQgYmFjayBhIGNhbmNlbAorICAgICAgICAgICAgLy8gYW5kIGxldCB0aGUgbmV3IHRhc2sgY29udGludWUgbGF1bmNoZWQgYXMgbm9ybWFsIHdpdGhvdXQgYQorICAgICAgICAgICAgLy8gZGVwZW5kZW5jeSBvbiBpdHMgb3JpZ2luYXRvci4KKyAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBpcyBsYXVuY2hpbmcgYXMgYSBuZXcgdGFzaywgc28gY2FuY2VsbGluZyBhY3Rpdml0eSByZXN1bHQuIik7CisgICAgICAgICAgICByLnJlc3VsdFRvLnRhc2suc3RhY2suc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAorICAgICAgICAgICAgICAgICAgICByLnJlc3VsdFRvLCByLnJlc3VsdFdobywgci5yZXF1ZXN0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKKyAgICAgICAgICAgIHIucmVzdWx0VG8gPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIEludGVudC5GTEFHX0FDVElWSVRZX05FV19ET0NVTUVOVCkgIT0gMCAmJiByLnJlc3VsdFRvID09IG51bGwpIHsKKyAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBhcmUgYWN0dWFsbHkgZ29pbmcgdG8gbGF1bmNoIGluIHRvIGEgbmV3IHRhc2ssIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlCisgICAgICAgIC8vIHdlIGZ1cnRoZXIgd2FudCB0byBkbyBtdWx0aXBsZSB0YXNrLgorICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgeworICAgICAgICAgICAgaWYgKGxhdW5jaFRhc2tCZWhpbmQKKyAgICAgICAgICAgICAgICAgICAgfHwgci5pbmZvLmRvY3VtZW50TGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uRE9DVU1FTlRfTEFVTkNIX0FMV0FZUykgeworICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlJ2xsIGludm9rZSBvblVzZXJMZWF2aW5nIGJlZm9yZSBvblBhdXNlIG9ubHkgaWYgdGhlIGxhdW5jaGluZworICAgICAgICAvLyBhY3Rpdml0eSBkaWQgbm90IGV4cGxpY2l0bHkgc3RhdGUgdGhhdCB0aGlzIGlzIGFuIGF1dG9tYXRlZCBsYXVuY2guCisgICAgICAgIG1TdXBlcnZpc29yLm1Vc2VyTGVhdmluZyA9IChsYXVuY2hGbGFncyAmIEludGVudC5GTEFHX0FDVElWSVRZX05PX1VTRVJfQUNUSU9OKSA9PSAwOworICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHX1VTRVJfTEVBVklORywKKyAgICAgICAgICAgICAgICAic3RhcnRBY3Rpdml0eSgpID0+IG1Vc2VyTGVhdmluZz0iICsgbVN1cGVydmlzb3IubVVzZXJMZWF2aW5nKTsKKworICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGhhcyBhc2tlZCBub3QgdG8gcmVzdW1lIGF0IHRoaXMgcG9pbnQsIHdlIG1ha2Ugbm90ZQorICAgICAgICAvLyBvZiB0aGlzIGluIHRoZSByZWNvcmQgc28gdGhhdCB3ZSBjYW4gc2tpcCBpdCB3aGVuIHRyeWluZyB0byBmaW5kCisgICAgICAgIC8vIHRoZSB0b3AgcnVubmluZyBhY3Rpdml0eS4KKyAgICAgICAgaWYgKCFkb1Jlc3VtZSB8fCAhbVN1cGVydmlzb3Iub2tUb1Nob3dMb2NrZWQocikpIHsKKyAgICAgICAgICAgIHIuZGVsYXllZFJlc3VtZSA9IHRydWU7CisgICAgICAgICAgICBkb1Jlc3VtZSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgbm90VG9wID0KKyAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MgJiBJbnRlbnQuRkxBR19BQ1RJVklUWV9QUkVWSU9VU19JU19UT1ApICE9IDAgPyByIDogbnVsbDsKKworICAgICAgICAvLyBJZiB0aGUgb25seUlmTmVlZGVkIGZsYWcgaXMgc2V0LCB0aGVuIHdlIGNhbiBkbyB0aGlzIGlmIHRoZSBhY3Rpdml0eQorICAgICAgICAvLyBiZWluZyBsYXVuY2hlZCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIG1ha2luZyB0aGUgY2FsbC4uLiAgb3IsIGFzCisgICAgICAgIC8vIGEgc3BlY2lhbCBjYXNlLCBpZiB3ZSBkbyBub3Qga25vdyB0aGUgY2FsbGVyIHRoZW4gd2UgY291bnQgdGhlCisgICAgICAgIC8vIGN1cnJlbnQgdG9wIGFjdGl2aXR5IGFzIHRoZSBjYWxsZXIuCisgICAgICAgIGlmICgoc3RhcnRGbGFncyZBY3Rpdml0eU1hbmFnZXIuU1RBUlRfRkxBR19PTkxZX0lGX05FRURFRCkgIT0gMCkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgY2hlY2tlZENhbGxlciA9IHNvdXJjZVJlY29yZDsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQ2FsbGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjaGVja2VkQ2FsbGVyID0gbVN1cGVydmlzb3IubUZvY3VzZWRTdGFjay50b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKAorICAgICAgICAgICAgICAgICAgICAgICAgbm90VG9wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY2hlY2tlZENhbGxlci5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSkgeworICAgICAgICAgICAgICAgIC8vIENhbGxlciBpcyBub3QgdGhlIHNhbWUgYXMgbGF1bmNoZXIsIHNvIGFsd2F5cyBuZWVkZWQuCisgICAgICAgICAgICAgICAgc3RhcnRGbGFncyAmPSB+QWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0ZMQUdfT05MWV9JRl9ORUVERUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGFkZGluZ1RvVGFzayA9IGZhbHNlOworICAgICAgICBUYXNrUmVjb3JkIHJldXNlVGFzayA9IG51bGw7CisKKyAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBub3QgY29taW5nIGZyb20gYW5vdGhlciBhY3Rpdml0eSwgYnV0IGhhcyBnaXZlbiB1cyBhbgorICAgICAgICAvLyBleHBsaWNpdCB0YXNrIGludG8gd2hpY2ggdGhleSB3b3VsZCBsaWtlIHVzIHRvIGxhdW5jaCB0aGUgbmV3IGFjdGl2aXR5LAorICAgICAgICAvLyB0aGVuIGxldCdzIHNlZSBhYm91dCBkb2luZyB0aGF0LgorICAgICAgICBpZiAoc291cmNlUmVjb3JkID09IG51bGwgJiYgaW5UYXNrICE9IG51bGwgJiYgaW5UYXNrLnN0YWNrICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIEludGVudCBiYXNlSW50ZW50ID0gaW5UYXNrLmdldEJhc2VJbnRlbnQoKTsKKyAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHJvb3QgPSBpblRhc2suZ2V0Um9vdEFjdGl2aXR5KCk7CisgICAgICAgICAgICBpZiAoYmFzZUludGVudCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxhdW5jaGluZyBpbnRvIHRhc2sgd2l0aG91dCBiYXNlIGludGVudDogIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBpblRhc2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGlzIHRhc2sgaXMgZW1wdHksIHRoZW4gd2UgYXJlIGFkZGluZyB0aGUgZmlyc3QgYWN0aXZpdHkgLS0gaXQKKyAgICAgICAgICAgIC8vIGRldGVybWluZXMgdGhlIHJvb3QsIGFuZCBtdXN0IGJlIGxhdW5jaGluZyBhcyBhIE5FV19UQVNLLgorICAgICAgICAgICAgaWYgKGxhdW5jaFNpbmdsZUluc3RhbmNlIHx8IGxhdW5jaFNpbmdsZVRhc2spIHsKKyAgICAgICAgICAgICAgICBpZiAoIWJhc2VJbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKHIuaW50ZW50LmdldENvbXBvbmVudCgpKSkgeworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU9wdGlvbnMuYWJvcnQob3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRyeWluZyB0byBsYXVuY2ggc2luZ2xlSW5zdGFuY2UvVGFzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByICsgIiBpbnRvIGRpZmZlcmVudCB0YXNrICIgKyBpblRhc2spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocm9vdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ2FsbGVyIHdpdGggaW5UYXNrICIgKyBpblRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgaGFzIHJvb3QgIiArIHJvb3QgKyAiIGJ1dCB0YXJnZXQgaXMgc2luZ2xlSW5zdGFuY2UvVGFzayIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGFzayBpcyBlbXB0eSwgdGhlbiBhZG9wdCB0aGUgaW50ZXJlc3RpbmcgaW50ZW50IGxhdW5jaCBmbGFncyBpbiB0byB0aGUKKyAgICAgICAgICAgIC8vIGFjdGl2aXR5IGJlaW5nIHN0YXJ0ZWQuCisgICAgICAgICAgICBpZiAocm9vdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IGZsYWdzT2ZJbnRlcmVzdCA9IEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UCisgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX1JFVEFJTl9JTl9SRUNFTlRTOworICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzID0gKGxhdW5jaEZsYWdzJn5mbGFnc09mSW50ZXJlc3QpCisgICAgICAgICAgICAgICAgICAgICAgICB8IChiYXNlSW50ZW50LmdldEZsYWdzKCkmZmxhZ3NPZkludGVyZXN0KTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MobGF1bmNoRmxhZ3MpOworICAgICAgICAgICAgICAgIGluVGFzay5zZXRJbnRlbnQocik7CisgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0YXNrIGlzIG5vdCBlbXB0eSBhbmQgdGhlIGNhbGxlciBpcyBhc2tpbmcgdG8gc3RhcnQgaXQgYXMgdGhlIHJvb3QKKyAgICAgICAgICAgICAgICAvLyBvZiBhIG5ldyB0YXNrLCB0aGVuIHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gc3RhcnQgdGhpcyBvbiB0aGUgdGFzay4gIFdlCisgICAgICAgICAgICAgICAgLy8gd2lsbCBicmluZyB0aGUgdGFzayB0byB0aGUgZnJvbnQsIGFuZCBwb3NzaWJseSBnaXZlIGl0IGEgbmV3IGludGVudC4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgeworICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IGZhbHNlOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldXNlVGFzayA9IGluVGFzazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluVGFzayA9IG51bGw7CisgICAgICAgICAgICAvLyBMYXVuY2ggUmVzb2x2ZXJBY3Rpdml0eSBpbiB0aGUgc291cmNlIHRhc2ssIHNvIHRoYXQgaXQgc3RheXMgaW4gdGhlIHRhc2sKKyAgICAgICAgICAgIC8vIGJvdW5kcyB3aGVuIGluIGZyZWVmb3JtIHdvcmtzcGFjZS4KKyAgICAgICAgICAgIC8vIEFsc28gcHV0IG5vRGlzcGxheSBhY3Rpdml0aWVzIGluIHRoZSBzb3VyY2UgdGFzay4gVGhlc2UgYnkgaXRzZWxmIGNhbgorICAgICAgICAgICAgLy8gYmUgcGxhY2VkIGluIGFueSB0YXNrL3N0YWNrLCBob3dldmVyIGl0IGNvdWxkIGxhdW5jaCBvdGhlciBhY3Rpdml0aWVzCisgICAgICAgICAgICAvLyBsaWtlIFJlc29sdmVyQWN0aXZpdHksIGFuZCB3ZSB3YW50IHRob3NlIHRvIHN0YXkgaW4gdGhlIG9yaWdpbmFsIHRhc2suCisgICAgICAgICAgICBpZiAoKHIuaXNSZXNvbHZlckFjdGl2aXR5KCkgfHwgci5ub0Rpc3BsYXkpICYmIHNvdXJjZVJlY29yZCAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICYmIHNvdXJjZVJlY29yZC5pc0ZyZWVmb3JtKCkpICB7CisgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpblRhc2sgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHNvdXJjZVJlY29yZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3QgYmVpbmcgc3RhcnRlZCBmcm9tIGFub3RoZXIuLi4gIGluIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBjYXNlIHdlIC1hbHdheXMtIHN0YXJ0IGEgbmV3IHRhc2suCisgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmIEZMQUdfQUNUSVZJVFlfTkVXX1RBU0spID09IDAgJiYgaW5UYXNrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgInN0YXJ0QWN0aXZpdHkgY2FsbGVkIGZyb20gbm9uLUFjdGl2aXR5IGNvbnRleHQ7IGZvcmNpbmcgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLIGZvcjogIiArIGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VSZWNvcmQubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBhY3Rpdml0eSB3aG8gaXMgc3RhcnRpbmcgdXMgaXMgcnVubmluZyBhcyBhIHNpbmdsZQorICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlLi4uICB0aGlzIG5ldyBhY3Rpdml0eSBpdCBpcyBzdGFydGluZyBtdXN0IGdvIG9uIGl0cworICAgICAgICAgICAgICAgIC8vIG93biB0YXNrLgorICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxhdW5jaFNpbmdsZUluc3RhbmNlIHx8IGxhdW5jaFNpbmdsZVRhc2spIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZCBpcyBhIHNpbmdsZSBpbnN0YW5jZS4uLiAgaXQgYWx3YXlzCisgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXVuY2hlZCBpbnRvIGl0cyBvd24gdGFzay4KKyAgICAgICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBGTEFHX0FDVElWSVRZX05FV19UQVNLOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQWN0aXZpdHlJbmZvIG5ld1Rhc2tJbmZvID0gbnVsbDsKKyAgICAgICAgSW50ZW50IG5ld1Rhc2tJbnRlbnQgPSBudWxsOworICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHNvdXJjZVN0YWNrOworICAgICAgICBpZiAoc291cmNlUmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2VSZWNvcmQuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNvdXJjZSBpcyBmaW5pc2hpbmcsIHdlIGNhbid0IGZ1cnRoZXIgY291bnQgaXQgYXMgb3VyIHNvdXJjZS4gIFRoaXMKKyAgICAgICAgICAgICAgICAvLyBpcyBiZWNhdXNlIHRoZSB0YXNrIGl0IGlzIGFzc29jaWF0ZWQgd2l0aCBtYXkgbm93IGJlIGVtcHR5IGFuZCBvbiBpdHMgd2F5IG91dCwKKyAgICAgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCB3YW50IHRvIGJsaW5kbHkgdGhyb3cgaXQgaW4gdG8gdGhhdCB0YXNrLiAgSW5zdGVhZCB3ZSB3aWxsIHRha2UKKyAgICAgICAgICAgICAgICAvLyB0aGUgTkVXX1RBU0sgZmxvdyBhbmQgdHJ5IHRvIGZpbmQgYSB0YXNrIGZvciBpdC4gQnV0IHNhdmUgdGhlIHRhc2sgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgdGFzay4KKyAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAic3RhcnRBY3Rpdml0eSBjYWxsZWQgZnJvbSBmaW5pc2hpbmcgIiArIHNvdXJjZVJlY29yZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjsgZm9yY2luZyAiICsgIkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLIGZvcjogIiArIGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7CisgICAgICAgICAgICAgICAgICAgIG5ld1Rhc2tJbmZvID0gc291cmNlUmVjb3JkLmluZm87CisgICAgICAgICAgICAgICAgICAgIG5ld1Rhc2tJbnRlbnQgPSBzb3VyY2VSZWNvcmQudGFzay5pbnRlbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCA9IG51bGw7CisgICAgICAgICAgICAgICAgc291cmNlU3RhY2sgPSBudWxsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGFjayA9IHNvdXJjZVJlY29yZC50YXNrLnN0YWNrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc291cmNlU3RhY2sgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBtb3ZlZEhvbWUgPSBmYWxzZTsKKyAgICAgICAgQWN0aXZpdHlTdGFjayB0YXJnZXRTdGFjazsKKworICAgICAgICBpbnRlbnQuc2V0RmxhZ3MobGF1bmNoRmxhZ3MpOworICAgICAgICBmaW5hbCBib29sZWFuIG5vQW5pbWF0aW9uID0gKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fQU5JTUFUSU9OKSAhPSAwOworCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIGludGVudEFjdGl2aXR5ID0gZ2V0UmV1c2FibGVJbnRlbnRBY3Rpdml0eShyLCBpblRhc2ssIGludGVudCwKKyAgICAgICAgICAgICAgICBsYXVuY2hTaW5nbGVJbnN0YW5jZSwgbGF1bmNoU2luZ2xlVGFzaywgbGF1bmNoRmxhZ3MpOworICAgICAgICBpZiAoaW50ZW50QWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gV2hlbiB0aGUgZmxhZ3MgTkVXX1RBU0sgYW5kIENMRUFSX1RBU0sgYXJlIHNldCwgdGhlbiB0aGUgdGFzayBnZXRzIHJldXNlZAorICAgICAgICAgICAgLy8gYnV0IHN0aWxsIG5lZWRzIHRvIGJlIGEgbG9jayB0YXNrIG1vZGUgdmlvbGF0aW9uIHNpbmNlIHRoZSB0YXNrIGdldHMKKyAgICAgICAgICAgIC8vIGNsZWFyZWQgb3V0IGFuZCB0aGUgZGV2aWNlIHdvdWxkIG90aGVyd2lzZSBsZWF2ZSB0aGUgbG9ja2VkIHRhc2suCisgICAgICAgICAgICBpZiAobVN1cGVydmlzb3IuaXNMb2NrVGFza01vZGVWaW9sYXRpb24oaW50ZW50QWN0aXZpdHkudGFzaywKKyAgICAgICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzICYgKEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX0NMRUFSX1RBU0spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9DTEVBUl9UQVNLKSkpIHsKKyAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5zaG93TG9ja1Rhc2tUb2FzdCgpOworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJzdGFydEFjdGl2aXR5VW5jaGVja2VkOiBBdHRlbXB0IHRvIHZpb2xhdGUgTG9jayBUYXNrIE1vZGUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9MT0NLX1RBU0tfTU9ERV9WSU9MQVRJT047CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoci50YXNrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByLnRhc2sgPSBpbnRlbnRBY3Rpdml0eS50YXNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGludGVudEFjdGl2aXR5LnRhc2suaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHRhc2sgd2FzIHN0YXJ0ZWQgYmVjYXVzZSBvZiBtb3ZlbWVudCBvZiB0aGUgYWN0aXZpdHkgYmFzZWQgb24gYWZmaW5pdHkuLi4KKyAgICAgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgbGF1bmNoaW5nIGl0LCB3ZSBjYW4gYXNzaWduIHRoZSBiYXNlIGludGVudC4KKyAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eS50YXNrLnNldEludGVudChyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGFyZ2V0U3RhY2sgPSBpbnRlbnRBY3Rpdml0eS50YXNrLnN0YWNrOworICAgICAgICAgICAgdGFyZ2V0U3RhY2subUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7CisgICAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IHRhc2sgaXMgbm90IGluIHRoZSBmcm9udCwgdGhlbiB3ZSBuZWVkCisgICAgICAgICAgICAvLyB0byBicmluZyBpdCB0byB0aGUgZnJvbnQuLi4gIGV4Y2VwdC4uLiAgd2VsbCwgd2l0aAorICAgICAgICAgICAgLy8gU0lOR0xFX1RBU0tfTEFVTkNIIGl0J3Mgbm90IGVudGlyZWx5IGNsZWFyLiAgV2UnZCBsaWtlCisgICAgICAgICAgICAvLyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGlmIGEgbmV3IGluc3RhbmNlIHdhcworICAgICAgICAgICAgLy8gYmVpbmcgc3RhcnRlZCwgd2hpY2ggbWVhbnMgbm90IGJyaW5naW5nIGl0IHRvIHRoZSBmcm9udAorICAgICAgICAgICAgLy8gaWYgdGhlIGNhbGxlciBpcyBub3QgaXRzZWxmIGluIHRoZSBmcm9udC4KKyAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgZm9jdXNTdGFjayA9IG1TdXBlcnZpc29yLmdldEZvY3VzZWRTdGFjaygpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgY3VyVG9wID0gKGZvY3VzU3RhY2sgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgPyBudWxsIDogZm9jdXNTdGFjay50b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7CisgICAgICAgICAgICBib29sZWFuIG1vdmVkVG9Gcm9udCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGN1clRvcCAhPSBudWxsICYmIChjdXJUb3AudGFzayAhPSBpbnRlbnRBY3Rpdml0eS50YXNrIHx8CisgICAgICAgICAgICAgICAgICAgIGN1clRvcC50YXNrICE9IGZvY3VzU3RhY2sudG9wVGFzaygpKSkgeworICAgICAgICAgICAgICAgIHIuaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX0JST1VHSFRfVE9fRlJPTlQpOworICAgICAgICAgICAgICAgIGlmIChzb3VyY2VSZWNvcmQgPT0gbnVsbCB8fCAoc291cmNlU3RhY2sudG9wQWN0aXZpdHkoKSAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdGFjay50b3BBY3Rpdml0eSgpLnRhc2sgPT0gc291cmNlUmVjb3JkLnRhc2spKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBkbyB3YW50IHRvIHB1c2ggdGhpcyBvbmUgaW50byB0aGUgdXNlcidzIGZhY2UsIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhdW5jaFRhc2tCZWhpbmQgJiYgc291cmNlUmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LnNldFRhc2tUb0FmZmlsaWF0ZVdpdGgoc291cmNlUmVjb3JkLnRhc2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1vdmVkSG9tZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgc2lkZVN0YWNrID0gZ2V0TGF1bmNoVG9TaWRlU3RhY2sociwgbGF1bmNoRmxhZ3MsIHIudGFzayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzaWRlU3RhY2sgPT0gbnVsbCB8fCBzaWRlU3RhY2sgPT0gdGFyZ2V0U3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBtb3ZlIHRvIHRoZSBmcm9udCwgaWYgd2UgYXJlbid0IGdvaW5nIHRvIGxhdW5jaCBvbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgc3RhY2suIElmIHdlIGxhdW5jaCBvbiBhIGRpZmZlcmVudCBzdGFjaywgd2Ugd2lsbCBwdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0YXNrIG9uIHRvcCB0aGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChpbnRlbnRBY3Rpdml0eS50YXNrLCBub0FuaW1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgci5hcHBUaW1lVHJhY2tlciwgImJyaW5naW5nRm91bmRUYXNrVG9Gcm9udCIpOworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZWRUb0Zyb250ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgKEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX1RBU0tfT05fSE9NRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gKEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX1RBU0tfT05fSE9NRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxlciB3YW50cyB0byBhcHBlYXIgb24gaG9tZSBhY3Rpdml0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LnRhc2suc2V0VGFza1RvUmV0dXJuVG8oSE9NRV9BQ1RJVklUWV9UWVBFKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW1vdmVkVG9Gcm9udCAmJiBkb1Jlc3VtZSkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy5kKFRBR19UQVNLUywgIkJyaW5nIHRvIGZyb250IHRhcmdldDogIiArIHRhcmdldFN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICArICIgZnJvbSAiICsgaW50ZW50QWN0aXZpdHkpOworICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUb0Zyb250KCJpbnRlbnRBY3Rpdml0eUZvdW5kIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCB0aGF0IHRoZSB0YXJnZXQgdGFzayBiZQorICAgICAgICAgICAgLy8gcmVzZXQsIHRoZW4gZG8gc28uCisgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpICE9IDApIHsKKyAgICAgICAgICAgICAgICBpbnRlbnRBY3Rpdml0eSA9IHRhcmdldFN0YWNrLnJlc2V0VGFza0lmTmVlZGVkTG9ja2VkKGludGVudEFjdGl2aXR5LCByKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoc3RhcnRGbGFncyAmIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9GTEFHX09OTFlfSUZfTkVFREVEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBzdGFydCBhIG5ldyBhY3Rpdml0eSwgYW5kCisgICAgICAgICAgICAgICAgLy8gdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbyBhbnl0aGluZyBpZiB0aGF0CisgICAgICAgICAgICAgICAgLy8gaXMgdGhlIGNhc2UsIHNvIHRoaXMgaXMgaXQhICBBbmQgZm9yIHBhcmFub2lhLCBtYWtlCisgICAgICAgICAgICAgICAgLy8gc3VyZSB3ZSBoYXZlIGNvcnJlY3RseSByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdXBlcnZpc29yLnJlc3VtZVRvcEFjdGl2aXRpZXNMb2NrZWQodGFyZ2V0U3RhY2ssIG51bGwsIG9wdGlvbnMpOworCisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0byBub3RpZnkgS2V5Z3VhcmQgYXMgd2VsbCBpZiB3ZSBhcmUgbm90IHJ1bm5pbmcgYW4gYXBwCisgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmICghbW92ZWRUb0Zyb250KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5ub3RpZnlBY3Rpdml0eURyYXduRm9yS2V5Z3VhcmQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVN1cGVydmlzb3IudXBkYXRlVXNlclN0YWNrTG9ja2VkKHIudXNlcklkLCB0YXJnZXRTdGFjayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MgJiAoRkxBR19BQ1RJVklUWV9ORVdfVEFTSyB8IEZMQUdfQUNUSVZJVFlfQ0xFQVJfVEFTSykpCisgICAgICAgICAgICAgICAgICAgID09IChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9DTEVBUl9UQVNLKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCB0byBjb21wbGV0ZWx5IHJlcGxhY2UgYW55CisgICAgICAgICAgICAgICAgLy8gZXhpc3RpbmcgdGFzayB3aXRoIGl0cyBuZXcgYWN0aXZpdHkuICBXZWxsIHRoYXQgc2hvdWxkCisgICAgICAgICAgICAgICAgLy8gbm90IGJlIHRvbyBoYXJkLi4uCisgICAgICAgICAgICAgICAgcmV1c2VUYXNrID0gaW50ZW50QWN0aXZpdHkudGFzazsKKyAgICAgICAgICAgICAgICByZXVzZVRhc2sucGVyZm9ybUNsZWFyVGFza0xvY2tlZCgpOworICAgICAgICAgICAgICAgIHJldXNlVGFzay5zZXRJbnRlbnQocik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKChsYXVuY2hGbGFncyAmIEZMQUdfQUNUSVZJVFlfQ0xFQVJfVE9QKSAhPSAwCisgICAgICAgICAgICAgICAgICAgIHx8IGxhdW5jaFNpbmdsZUluc3RhbmNlIHx8IGxhdW5jaFNpbmdsZVRhc2spIHsKKyAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIHNpdHVhdGlvbiB3ZSB3YW50IHRvIHJlbW92ZSBhbGwgYWN0aXZpdGllcworICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIHRhc2sgdXAgdG8gdGhlIG9uZSBiZWluZyBzdGFydGVkLiAgSW4gbW9zdAorICAgICAgICAgICAgICAgIC8vIGNhc2VzIHRoaXMgbWVhbnMgd2UgYXJlIHJlc2V0dGluZyB0aGUgdGFzayB0byBpdHMKKyAgICAgICAgICAgICAgICAvLyBpbml0aWFsIHN0YXRlLgorICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcCA9IGludGVudEFjdGl2aXR5LnRhc2sucGVyZm9ybUNsZWFyVGFza0xvY2tlZChyLCBsYXVuY2hGbGFncyk7CisgICAgICAgICAgICAgICAgaWYgKHRvcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0b3AuZnJvbnRPZlRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdGl2aXR5IGFsaWFzZXMgbWF5IG1lYW4gd2UgdXNlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZW50cyBmb3IgdGhlIHRvcCBhY3Rpdml0eSwgc28gbWFrZSBzdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGFzayBub3cgaGFzIHRoZSBpZGVudGl0eSBvZiB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICB0b3AudGFzay5zZXRJbnRlbnQocik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7CisgICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIuaW50ZW50LCByLmxhdW5jaGVkRnJvbVBhY2thZ2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEEgc3BlY2lhbCBjYXNlOiB3ZSBuZWVkIHRvIHN0YXJ0IHRoZSBhY3Rpdml0eSBiZWNhdXNlIGl0IGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50bHkgcnVubmluZywgYW5kIHRoZSBjYWxsZXIgaGFzIGFza2VkIHRvIGNsZWFyIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIC8vIHRhc2sgdG8gaGF2ZSB0aGlzIGFjdGl2aXR5IGF0IHRoZSB0b3AuCisgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBwcmV0ZW5kIGxpa2UgdGhpcyBhY3Rpdml0eSBpcyBiZWluZyBzdGFydGVkIGJ5IHRoZSB0b3Agb2YgaXRzCisgICAgICAgICAgICAgICAgICAgIC8vIHRhc2ssIHNvIGl0IGlzIHB1dCBpbiB0aGUgcmlnaHQgcGxhY2UuCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCA9IGludGVudEFjdGl2aXR5OworICAgICAgICAgICAgICAgICAgICBUYXNrUmVjb3JkIHRhc2sgPSBzb3VyY2VSZWNvcmQudGFzazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2sgIT0gbnVsbCAmJiB0YXNrLnN0YWNrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhcmdldCBzdGFjayBnb3QgY2xlYXJlZCB3aGVuIHdlIGFsbCBhY3Rpdml0aWVzIHdlcmUgcmVtb3ZlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWJvdmUuIEdvIGFoZWFkIGFuZCByZXNldCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrID0gY29tcHV0ZVN0YWNrRm9jdXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCwgZmFsc2UgLyogbmV3VGFzayAqLywgbnVsbCAvKiBib3VuZHMgKi8sIGxhdW5jaEZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLmFkZFRhc2sodGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxhdW5jaFRhc2tCZWhpbmQgLyogdG9Ub3AgKi8sICJzdGFydEFjdGl2aXR5VW5jaGVja2VkIik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoci5yZWFsQWN0aXZpdHkuZXF1YWxzKGludGVudEFjdGl2aXR5LnRhc2sucmVhbEFjdGl2aXR5KSkgeworICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgdG9wIGFjdGl2aXR5IG9uIHRoZSB0YXNrIGlzIHRoZQorICAgICAgICAgICAgICAgIC8vIHNhbWUgYXMgdGhlIG9uZSBiZWluZyBsYXVuY2hlZCwgc28gd2UgdGFrZSB0aGF0CisgICAgICAgICAgICAgICAgLy8gYXMgYSByZXF1ZXN0IHRvIGJyaW5nIHRoZSB0YXNrIHRvIHRoZSBmb3JlZ3JvdW5kLgorICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0b3AgYWN0aXZpdHkgaW4gdGhlIHRhc2sgaXMgdGhlIHJvb3QKKyAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSwgZGVsaXZlciB0aGlzIG5ldyBpbnRlbnQgdG8gaXQgaWYgaXQKKyAgICAgICAgICAgICAgICAvLyBkZXNpcmVzLgorICAgICAgICAgICAgICAgIGlmICgoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1NJTkdMRV9UT1ApICE9IDAgfHwgbGF1bmNoU2luZ2xlVG9wKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW50ZW50QWN0aXZpdHkucmVhbEFjdGl2aXR5LmVxdWFscyhyLnJlYWxBY3Rpdml0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LnRhc2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZW50QWN0aXZpdHkuZnJvbnRPZlRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LnRhc2suc2V0SW50ZW50KHIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5pbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5sYXVuY2hlZEZyb21QYWNrYWdlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFyLmludGVudC5maWx0ZXJFcXVhbHMoaW50ZW50QWN0aXZpdHkudGFzay5pbnRlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgbGF1bmNoaW5nIHRoZSByb290IGFjdGl2aXR5CisgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSB0YXNrLCBidXQgd2l0aCBhIGRpZmZlcmVudCBpbnRlbnQuICBXZQorICAgICAgICAgICAgICAgICAgICAvLyBzaG91bGQgc3RhcnQgYSBuZXcgaW5zdGFuY2Ugb24gdG9wLgorICAgICAgICAgICAgICAgICAgICBhZGRpbmdUb1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSBpbnRlbnRBY3Rpdml0eTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhbiBhY3Rpdml0eSBpcyBiZWluZyBsYXVuY2hlZCBpbiB0byBhbgorICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIHRhc2ssIHdpdGhvdXQgcmVzZXR0aW5nIHRoYXQgdGFzay4gIFRoaXMKKyAgICAgICAgICAgICAgICAvLyBpcyB0eXBpY2FsbHkgdGhlIHNpdHVhdGlvbiBvZiBsYXVuY2hpbmcgYW4gYWN0aXZpdHkKKyAgICAgICAgICAgICAgICAvLyBmcm9tIGEgbm90aWZpY2F0aW9uIG9yIHNob3J0Y3V0LiAgV2Ugd2FudCB0byBwbGFjZQorICAgICAgICAgICAgICAgIC8vIHRoZSBuZXcgYWN0aXZpdHkgb24gdG9wIG9mIHRoZSBjdXJyZW50IHRhc2suCisgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSBpbnRlbnRBY3Rpdml0eTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWludGVudEFjdGl2aXR5LnRhc2sucm9vdFdhc1Jlc2V0KSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGFyZSBsYXVuY2hpbmcgaW4gdG8gYW4gZXhpc3RpbmcgdGFzaworICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBzdGFydGVkIGZyb20gaXRzIGZyb250IGRvb3IuCisgICAgICAgICAgICAgICAgLy8gVGhlIGN1cnJlbnQgdGFzayBoYXMgYmVlbiBicm91Z2h0IHRvIHRoZSBmcm9udC4KKyAgICAgICAgICAgICAgICAvLyBJZGVhbGx5LCB3ZSdkIHByb2JhYmx5IGxpa2UgdG8gcGxhY2UgdGhpcyBuZXcgdGFzaworICAgICAgICAgICAgICAgIC8vIGF0IHRoZSBib3R0b20gb2YgaXRzIHN0YWNrLCBidXQgdGhhdCdzIGEgbGl0dGxlIGhhcmQKKyAgICAgICAgICAgICAgICAvLyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IG9yZ2FuaXphdGlvbiBvZiB0aGUgY29kZSBzbworICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UnbGwganVzdCBkcm9wIGl0LgorICAgICAgICAgICAgICAgIGludGVudEFjdGl2aXR5LnRhc2suc2V0SW50ZW50KHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFhZGRpbmdUb1Rhc2sgJiYgcmV1c2VUYXNrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkaWRuJ3QgZG8gYW55dGhpbmcuLi4gIGJ1dCBpdCB3YXMgbmVlZGVkIChhLmsuYS4sIGNsaWVudAorICAgICAgICAgICAgICAgIC8vIGRvbid0IHVzZSB0aGF0IGludGVudCEpICBBbmQgZm9yIHBhcmFub2lhLCBtYWtlCisgICAgICAgICAgICAgICAgLy8gc3VyZSB3ZSBoYXZlIGNvcnJlY3RseSByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwsIG9wdGlvbnMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW1vdmVkVG9Gcm9udCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIG5vdGlmeSBLZXlndWFyZCBhcyB3ZWxsIGlmIHdlIGFyZSBub3QgcnVubmluZyBhbiBhcHAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5ub3RpZnlBY3Rpdml0eURyYXduRm9yS2V5Z3VhcmQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVN1cGVydmlzb3IudXBkYXRlVXNlclN0YWNrTG9ja2VkKHIudXNlcklkLCB0YXJnZXRTdGFjayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9UQVNLX1RPX0ZST05UOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy9TdHJpbmcgdXJpID0gci5pbnRlbnQudG9VUkkoKTsKKyAgICAgICAgLy9JbnRlbnQgaW50ZW50MiA9IG5ldyBJbnRlbnQodXJpKTsKKyAgICAgICAgLy9TbG9nLmkoVEFHLCAiR2l2ZW4gaW50ZW50OiAiICsgci5pbnRlbnQpOworICAgICAgICAvL1Nsb2cuaShUQUcsICJVUkkgaXM6ICIgKyB1cmkpOworICAgICAgICAvL1Nsb2cuaShUQUcsICJUbyBpbnRlbnQ6ICIgKyBpbnRlbnQyKTsKKworICAgICAgICBpZiAoci5wYWNrYWdlTmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgYmVpbmcgbGF1bmNoZWQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIGF0IHRoZSB0b3AsIHRoZW4gd2UgbmVlZCB0byBjaGVjayBpZiBpdCBzaG91bGQgb25seSBiZSBsYXVuY2hlZAorICAgICAgICAgICAgLy8gb25jZS4KKyAgICAgICAgICAgIEFjdGl2aXR5U3RhY2sgdG9wU3RhY2sgPSBtU3VwZXJ2aXNvci5tRm9jdXNlZFN0YWNrOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdG9wID0gdG9wU3RhY2sudG9wUnVubmluZ05vbkRlbGF5ZWRBY3Rpdml0eUxvY2tlZChub3RUb3ApOworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBkb250U3RhcnQgPSB0b3AgIT0gbnVsbCAmJiByLnJlc3VsdFRvID09IG51bGwKKyAgICAgICAgICAgICAgICAgICAgJiYgdG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpICYmIHRvcC51c2VySWQgPT0gci51c2VySWQKKyAgICAgICAgICAgICAgICAgICAgJiYgdG9wLmFwcCAhPSBudWxsICYmIHRvcC5hcHAudGhyZWFkICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgJiYgKChsYXVuY2hGbGFncyAmIEludGVudC5GTEFHX0FDVElWSVRZX1NJTkdMRV9UT1ApICE9IDAKKyAgICAgICAgICAgICAgICAgICAgfHwgbGF1bmNoU2luZ2xlVG9wIHx8IGxhdW5jaFNpbmdsZVRhc2spOworICAgICAgICAgICAgaWYgKGRvbnRTdGFydCkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5U3RhY2subG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgdG9wLCB0b3AudGFzayk7CisgICAgICAgICAgICAgICAgLy8gRm9yIHBhcmFub2lhLCBtYWtlIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgorICAgICAgICAgICAgICAgIHRvcFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgeworICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5yZXN1bWVUb3BBY3Rpdml0aWVzTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXJ0RmxhZ3MgJiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfRkxBR19PTkxZX0lGX05FRURFRCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCBhbmQgdGhlIGNsaWVudCBzYWlkIG5vdCB0byBkbworICAgICAgICAgICAgICAgICAgICAvLyBhbnl0aGluZyBpZiB0aGF0IGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0IQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0b3AuZGVsaXZlck5ld0ludGVudExvY2tlZChjYWxsaW5nVWlkLCByLmludGVudCwgci5sYXVuY2hlZEZyb21QYWNrYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0RFTElWRVJFRF9UT19UT1A7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoci5yZXN1bHRUbyAhPSBudWxsICYmIHIucmVzdWx0VG8udGFzay5zdGFjayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgci5yZXN1bHRUby50YXNrLnN0YWNrLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwgci5yZXN1bHRUbywgci5yZXN1bHRXaG8sCisgICAgICAgICAgICAgICAgICAgICAgICByLnJlcXVlc3RDb2RlLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zLmFib3J0KG9wdGlvbnMpOworICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9DTEFTU19OT1RfRk9VTkQ7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIG5ld1Rhc2sgPSBmYWxzZTsKKyAgICAgICAgYm9vbGVhbiBrZWVwQ3VyVHJhbnNpdGlvbiA9IGZhbHNlOworCisgICAgICAgIGZpbmFsIFRhc2tSZWNvcmQgdGFza1RvQWZmaWxpYXRlID0gbGF1bmNoVGFza0JlaGluZCAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbCA/CisgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLnRhc2sgOiBudWxsOworCisgICAgICAgIC8vIFNob3VsZCB0aGlzIGJlIGNvbnNpZGVyZWQgYSBuZXcgdGFzaz8KKyAgICAgICAgaWYgKHIucmVzdWx0VG8gPT0gbnVsbCAmJiBpblRhc2sgPT0gbnVsbCAmJiAhYWRkaW5nVG9UYXNrCisgICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgeworICAgICAgICAgICAgbmV3VGFzayA9IHRydWU7CisgICAgICAgICAgICB0YXJnZXRTdGFjayA9IGNvbXB1dGVTdGFja0ZvY3VzKHIsIG5ld1Rhc2ssIG5ld0JvdW5kcywgbGF1bmNoRmxhZ3MpOworICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0U3RhY2subW92ZVRvRnJvbnQoInN0YXJ0aW5nTmV3VGFzayIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmV1c2VUYXNrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByLnNldFRhc2sodGFyZ2V0U3RhY2suY3JlYXRlVGFza1JlY29yZChtU3VwZXJ2aXNvci5nZXROZXh0VGFza0lkKCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdUYXNrSW5mbyAhPSBudWxsID8gbmV3VGFza0luZm8gOiByLmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdUYXNrSW50ZW50ICE9IG51bGwgPyBuZXdUYXNrSW50ZW50IDogaW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pY2VTZXNzaW9uLCB2b2ljZUludGVyYWN0b3IsICFsYXVuY2hUYXNrQmVoaW5kIC8qIHRvVG9wICovKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb0FmZmlsaWF0ZSk7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlQm91bmRzKSB7CisgICAgICAgICAgICAgICAgICAgIHIudGFzay51cGRhdGVPdmVycmlkZUNvbmZpZ3VyYXRpb24obmV3Qm91bmRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHX1RBU0tTLAorICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgciArICIgaW4gbmV3IHRhc2sgIiArIHIudGFzayk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHIuc2V0VGFzayhyZXVzZVRhc2ssIHRhc2tUb0FmZmlsaWF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVN1cGVydmlzb3IuaXNMb2NrVGFza01vZGVWaW9sYXRpb24oci50YXNrKSkgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJBdHRlbXB0ZWQgTG9jayBUYXNrIE1vZGUgdmlvbGF0aW9uIHI9IiArIHIpOworICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfUkVUVVJOX0xPQ0tfVEFTS19NT0RFX1ZJT0xBVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbW92ZWRIb21lKSB7CisgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyAmCisgICAgICAgICAgICAgICAgICAgICAgICAoRkxBR19BQ1RJVklUWV9ORVdfVEFTSyB8IEZMQUdfQUNUSVZJVFlfVEFTS19PTl9IT01FKSkKKyAgICAgICAgICAgICAgICAgICAgICAgID09IChGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9UQVNLX09OX0hPTUUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENhbGxlciB3YW50cyB0byBhcHBlYXIgb24gaG9tZSBhY3Rpdml0eSwgc28gYmVmb3JlIHN0YXJ0aW5nCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZWlyIG93biBhY3Rpdml0eSB3ZSB3aWxsIGJyaW5nIGhvbWUgdG8gdGhlIGZyb250LgorICAgICAgICAgICAgICAgICAgICByLnRhc2suc2V0VGFza1RvUmV0dXJuVG8oSE9NRV9BQ1RJVklUWV9UWVBFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlUmVjb3JkICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFRhc2tSZWNvcmQgc291cmNlVGFzayA9IHNvdXJjZVJlY29yZC50YXNrOworICAgICAgICAgICAgaWYgKG1TdXBlcnZpc29yLmlzTG9ja1Rhc2tNb2RlVmlvbGF0aW9uKHNvdXJjZVRhc2spKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkF0dGVtcHRlZCBMb2NrIFRhc2sgTW9kZSB2aW9sYXRpb24gcj0iICsgcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9SRVRVUk5fTE9DS19UQVNLX01PREVfVklPTEFUSU9OOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFyZ2V0U3RhY2sgPSBudWxsOworICAgICAgICAgICAgaWYgKHNvdXJjZVRhc2suc3RhY2sudG9wVGFzaygpICE9IHNvdXJjZVRhc2spIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYWxsb3cgY2hhbmdpbmcgc3RhY2sgaWYgdGhlIHRhcmdldCB0YXNrIGlzIG5vdCB0aGUgdG9wIG9uZSwKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugd2Ugd291bGQgbW92ZSB0aGUgbGF1bmNoaW5nIHRhc2sgdG8gdGhlIG90aGVyIHNpZGUsIHJhdGhlciB0aGFuIHNob3cKKyAgICAgICAgICAgICAgICAvLyB0d28gc2lkZSBieSBzaWRlLgorICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrID0gZ2V0TGF1bmNoVG9TaWRlU3RhY2sociwgbGF1bmNoRmxhZ3MsIHIudGFzayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGFyZ2V0U3RhY2sgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrID0gc291cmNlVGFzay5zdGFjazsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0U3RhY2sgIT0gc291cmNlVGFzay5zdGFjaykgeworICAgICAgICAgICAgICAgIG1TdXBlcnZpc29yLm1vdmVUYXNrVG9TdGFja0xvY2tlZChzb3VyY2VUYXNrLnRhc2tJZCwgdGFyZ2V0U3RhY2subVN0YWNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICBPTl9UT1AsIEZPUkNFX0ZPQ1VTLCAibGF1bmNoVG9TaWRlIiwgIUFOSU1BVEUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgdGFyZ2V0U3RhY2subW92ZVRvRnJvbnQoInNvdXJjZVN0YWNrVG9Gcm9udCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWwgVGFza1JlY29yZCB0b3BUYXNrID0gdGFyZ2V0U3RhY2sudG9wVGFzaygpOworICAgICAgICAgICAgaWYgKHRvcFRhc2sgIT0gc291cmNlVGFzaykgeworICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChzb3VyY2VUYXNrLCBub0FuaW1hdGlvbiwgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwVGltZVRyYWNrZXIsICJzb3VyY2VUYXNrVG9Gcm9udCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFhZGRpbmdUb1Rhc2sgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RPUCkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgYXJlIGFkZGluZyB0aGUgYWN0aXZpdHkgdG8gYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAvLyB0YXNrLCBidXQgdGhlIGNhbGxlciBoYXMgYXNrZWQgdG8gY2xlYXIgdGhhdCB0YXNrIGlmIHRoZQorICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGlzIGFscmVhZHkgcnVubmluZy4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3AgPSBzb3VyY2VUYXNrLnBlcmZvcm1DbGVhclRhc2tMb2NrZWQociwgbGF1bmNoRmxhZ3MpOworICAgICAgICAgICAgICAgIGtlZXBDdXJUcmFuc2l0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAodG9wICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7CisgICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIuaW50ZW50LCByLmxhdW5jaGVkRnJvbVBhY2thZ2UpOworICAgICAgICAgICAgICAgICAgICAvLyBGb3IgcGFyYW5vaWEsIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvcnJlY3RseQorICAgICAgICAgICAgICAgICAgICAvLyByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9ERUxJVkVSRURfVE9fVE9QOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWFkZGluZ1RvVGFzayAmJgorICAgICAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVPUkRFUl9UT19GUk9OVCkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgYXJlIGxhdW5jaGluZyBhbiBhY3Rpdml0eSBpbiBvdXIgb3duIHRhc2sKKyAgICAgICAgICAgICAgICAvLyB0aGF0IG1heSBhbHJlYWR5IGJlIHJ1bm5pbmcgc29tZXdoZXJlIGluIHRoZSBoaXN0b3J5LCBhbmQKKyAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHNodWZmbGUgaXQgdG8gdGhlIGZyb250IG9mIHRoZSBzdGFjayBpZiBzby4KKyAgICAgICAgICAgICAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCB0b3AgPSBzb3VyY2VUYXNrLmZpbmRBY3Rpdml0eUluSGlzdG9yeUxvY2tlZChyKTsKKyAgICAgICAgICAgICAgICBpZiAodG9wICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgVGFza1JlY29yZCB0YXNrID0gdG9wLnRhc2s7CisgICAgICAgICAgICAgICAgICAgIHRhc2subW92ZUFjdGl2aXR5VG9Gcm9udExvY2tlZCh0b3ApOworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVN0YWNrLmxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRhc2spOworICAgICAgICAgICAgICAgICAgICB0b3AudXBkYXRlT3B0aW9uc0xvY2tlZChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgdG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5pbnRlbnQsIHIubGF1bmNoZWRGcm9tUGFja2FnZSk7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBBbiBleGlzdGluZyBhY3Rpdml0eSBpcyBzdGFydGluZyB0aGlzIG5ldyBhY3Rpdml0eSwgc28gd2Ugd2FudAorICAgICAgICAgICAgLy8gdG8ga2VlcCB0aGUgbmV3IG9uZSBpbiB0aGUgc2FtZSB0YXNrIGFzIHRoZSBvbmUgdGhhdCBpcyBzdGFydGluZworICAgICAgICAgICAgLy8gaXQuCisgICAgICAgICAgICByLnNldFRhc2soc291cmNlVGFzaywgbnVsbCk7CisgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUdfVEFTS1MsICJTdGFydGluZyBuZXcgYWN0aXZpdHkgIiArIHIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGluIGV4aXN0aW5nIHRhc2sgIiArIHIudGFzayArICIgZnJvbSBzb3VyY2UgIiArIHNvdXJjZVJlY29yZCk7CisKKyAgICAgICAgfSBlbHNlIGlmIChpblRhc2sgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBpcyBhc2tpbmcgdGhhdCB0aGUgbmV3IGFjdGl2aXR5IGJlIHN0YXJ0ZWQgaW4gYW4gZXhwbGljaXQKKyAgICAgICAgICAgIC8vIHRhc2sgaXQgaGFzIHByb3ZpZGVkIHRvIHVzLgorICAgICAgICAgICAgaWYgKG1TdXBlcnZpc29yLmlzTG9ja1Rhc2tNb2RlVmlvbGF0aW9uKGluVGFzaykpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiQXR0ZW1wdGVkIExvY2sgVGFzayBNb2RlIHZpb2xhdGlvbiByPSIgKyByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9MT0NLX1RBU0tfTU9ERV9WSU9MQVRJT047CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3ZlcnJpZGVCb3VuZHMpIHsKKyAgICAgICAgICAgICAgICBpblRhc2sudXBkYXRlT3ZlcnJpZGVDb25maWd1cmF0aW9uKG5ld0JvdW5kcyk7CisgICAgICAgICAgICAgICAgaW50IHN0YWNrSWQgPSBpblRhc2suZ2V0TGF1bmNoU3RhY2tJZCgpOworICAgICAgICAgICAgICAgIGlmIChzdGFja0lkICE9IGluVGFzay5zdGFjay5tU3RhY2tJZCkgeworICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5tb3ZlVGFza1RvU3RhY2tVbmNoZWNrZWRMb2NrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5UYXNrLCBzdGFja0lkLCBPTl9UT1AsICFGT1JDRV9GT0NVUywgImluVGFza1RvRnJvbnQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0YXJnZXRTdGFjayA9IGluVGFzay5zdGFjazsKKyAgICAgICAgICAgIHRhcmdldFN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChpblRhc2ssIG5vQW5pbWF0aW9uLCBvcHRpb25zLCByLmFwcFRpbWVUcmFja2VyLAorICAgICAgICAgICAgICAgICAgICAiaW5UYXNrVG9Gcm9udCIpOworCisgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBhY3R1YWxseSBsYXVuY2ggdGhlIG5ldyBhY3Rpdml0eSBpbiB0byB0aGUgdGFzaywKKyAgICAgICAgICAgIC8vIG9yIGp1c3QgcmV1c2UgdGhlIGN1cnJlbnQgYWN0aXZpdHkgb24gdG9wLgorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdG9wID0gaW5UYXNrLmdldFRvcEFjdGl2aXR5KCk7CisgICAgICAgICAgICBpZiAodG9wICE9IG51bGwgJiYgdG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpICYmIHRvcC51c2VySWQgPT0gci51c2VySWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgIT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGF1bmNoU2luZ2xlVG9wIHx8IGxhdW5jaFNpbmdsZVRhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCB0b3AsIHRvcC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChzdGFydEZsYWdzJkFjdGl2aXR5TWFuYWdlci5TVEFSVF9GTEFHX09OTFlfSUZfTkVFREVEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0YXJ0IGEgbmV3IGFjdGl2aXR5LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjbGllbnQgc2FpZCBub3QgdG8gZG8gYW55dGhpbmcgaWYgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhlIGNhc2UsIHNvIHRoaXMgaXMgaXQhCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRvcC5kZWxpdmVyTmV3SW50ZW50TG9ja2VkKGNhbGxpbmdVaWQsIHIuaW50ZW50LCByLmxhdW5jaGVkRnJvbVBhY2thZ2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0RFTElWRVJFRF9UT19UT1A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWFkZGluZ1RvVGFzaykgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gaGF2ZSB0aGlzIGFjdGl2aXR5IGFkZGVkIHRvIHRoZSB0YXNrLCBzbyBqdXN0CisgICAgICAgICAgICAgICAgLy8gc3RvcCBoZXJlIGJ1dCBzdGlsbCB0ZWxsIHRoZSBjYWxsZXIgdGhhdCB3ZSBjb25zdW1lZCB0aGUgaW50ZW50LgorICAgICAgICAgICAgICAgIEFjdGl2aXR5T3B0aW9ucy5hYm9ydChvcHRpb25zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1RBU0tfVE9fRlJPTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHIuc2V0VGFzayhpblRhc2ssIG51bGwpOworICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHX1RBU0tTLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCisgICAgICAgICAgICAgICAgICAgICsgIiBpbiBleHBsaWNpdCB0YXNrICIgKyByLnRhc2spOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIG5vdCBiZWluZyBzdGFydGVkIGZyb20gYW4gZXhpc3RpbmcgYWN0aXZpdHksIGFuZCBub3QgcGFydAorICAgICAgICAgICAgLy8gb2YgYSBuZXcgdGFzay4uLiAganVzdCBwdXQgaXQgaW4gdGhlIHRvcCB0YXNrLCB0aG91Z2ggdGhlc2UgZGF5cworICAgICAgICAgICAgLy8gdGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgICAgICB0YXJnZXRTdGFjayA9IGNvbXB1dGVTdGFja0ZvY3VzKHIsIG5ld1Rhc2ssIG51bGwgLyogYm91bmRzICovLCBsYXVuY2hGbGFncyk7CisgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgICAgICB0YXJnZXRTdGFjay5tb3ZlVG9Gcm9udCgiYWRkaW5nVG9Ub3BUYXNrIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwcmV2ID0gdGFyZ2V0U3RhY2sudG9wQWN0aXZpdHkoKTsKKyAgICAgICAgICAgIHIuc2V0VGFzayhwcmV2ICE9IG51bGwgPyBwcmV2LnRhc2sgOiB0YXJnZXRTdGFjay5jcmVhdGVUYXNrUmVjb3JkKAorICAgICAgICAgICAgICAgICAgICBtU3VwZXJ2aXNvci5nZXROZXh0VGFza0lkKCksIHIuaW5mbywgaW50ZW50LCBudWxsLCBudWxsLCB0cnVlKSwgbnVsbCk7CisgICAgICAgICAgICBtV2luZG93TWFuYWdlci5tb3ZlVGFza1RvVG9wKHIudGFzay50YXNrSWQpOworICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHX1RBU0tTLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCisgICAgICAgICAgICAgICAgICAgICsgIiBpbiBuZXcgZ3Vlc3NlZCAiICsgci50YXNrKTsKKyAgICAgICAgfQorCisgICAgICAgIG1TZXJ2aWNlLmdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5wYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICBpbnRlbnQsIHIuZ2V0VXJpUGVybWlzc2lvbnNMb2NrZWQoKSwgci51c2VySWQpOworCisgICAgICAgIGlmIChzb3VyY2VSZWNvcmQgIT0gbnVsbCAmJiBzb3VyY2VSZWNvcmQuaXNSZWNlbnRzQWN0aXZpdHkoKSkgeworICAgICAgICAgICAgci50YXNrLnNldFRhc2tUb1JldHVyblRvKFJFQ0VOVFNfQUNUSVZJVFlfVFlQRSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld1Rhc2spIHsKKyAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX0NSRUFURV9UQVNLLCByLnVzZXJJZCwgci50YXNrLnRhc2tJZCk7CisgICAgICAgIH0KKyAgICAgICAgQWN0aXZpdHlTdGFjay5sb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9DUkVBVEVfQUNUSVZJVFksIHIsIHIudGFzayk7CisgICAgICAgIHRhcmdldFN0YWNrLm1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICB0YXJnZXRTdGFjay5zdGFydEFjdGl2aXR5TG9ja2VkKHIsIG5ld1Rhc2ssIGtlZXBDdXJUcmFuc2l0aW9uLCBvcHRpb25zKTsKKyAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICBpZiAoIWxhdW5jaFRhc2tCZWhpbmQpIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQociwgInN0YXJ0ZWRBY3Rpdml0eSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVN1cGVydmlzb3IucmVzdW1lVG9wQWN0aXZpdGllc0xvY2tlZCh0YXJnZXRTdGFjaywgciwgb3B0aW9ucyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0YXJnZXRTdGFjay5hZGRSZWNlbnRBY3Rpdml0eUxvY2tlZChyKTsKKyAgICAgICAgfQorICAgICAgICBtU3VwZXJ2aXNvci51cGRhdGVVc2VyU3RhY2tMb2NrZWQoci51c2VySWQsIHRhcmdldFN0YWNrKTsKKworICAgICAgICBpZiAoIXIudGFzay5tUmVzaXplYWJsZSAmJiBtU3VwZXJ2aXNvci5pc1N0YWNrRG9ja2VkSW5FZmZlY3QodGFyZ2V0U3RhY2subVN0YWNrSWQpKSB7CisgICAgICAgICAgICBtU3VwZXJ2aXNvci5zaG93Tm9uUmVzaXplYWJsZURvY2tUb2FzdChyLnRhc2sudGFza0lkKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCBhZGp1c3RMYXVuY2hGbGFnc1RvRG9jdW1lbnRNb2RlKEFjdGl2aXR5UmVjb3JkIHIsIGJvb2xlYW4gbGF1bmNoU2luZ2xlSW5zdGFuY2UsCisgICAgICAgICAgICBib29sZWFuIGxhdW5jaFNpbmdsZVRhc2ssIGludCBsYXVuY2hGbGFncykgeworICAgICAgICBpZiAoKGxhdW5jaEZsYWdzICYgSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UKSAhPSAwICYmCisgICAgICAgICAgICAgICAgKGxhdW5jaFNpbmdsZUluc3RhbmNlIHx8IGxhdW5jaFNpbmdsZVRhc2spKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIGEgY29uZmxpY3QgYmV0d2VlbiB0aGUgSW50ZW50IGFuZCB0aGUgQWN0aXZpdHkgbWFuaWZlc3QsIG1hbmlmZXN0IHdpbnMuCisgICAgICAgICAgICBTbG9nLmkoVEFHLCAiSWdub3JpbmcgRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQsIGxhdW5jaE1vZGUgaXMgIiArCisgICAgICAgICAgICAgICAgICAgICJcInNpbmdsZUluc3RhbmNlXCIgb3IgXCJzaW5nbGVUYXNrXCIiKTsKKyAgICAgICAgICAgIGxhdW5jaEZsYWdzICY9CisgICAgICAgICAgICAgICAgICAgIH4oSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UIHwgRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoci5pbmZvLmRvY3VtZW50TGF1bmNoTW9kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQWN0aXZpdHlJbmZvLkRPQ1VNRU5UX0xBVU5DSF9OT05FOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5ET0NVTUVOVF9MQVVOQ0hfSU5UT19FWElTVElORzoKKyAgICAgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX0RPQ1VNRU5UOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5ET0NVTUVOVF9MQVVOQ0hfQUxXQVlTOgorICAgICAgICAgICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfRE9DVU1FTlQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQWN0aXZpdHlJbmZvLkRPQ1VNRU5UX0xBVU5DSF9ORVZFUjoKKyAgICAgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgJj0gfkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxhdW5jaEZsYWdzOworICAgIH0KKworICAgIGZpbmFsIGludCBzdGFydEFjdGl2aXRpZXMoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgaW50IGNhbGxpbmdVaWQsIFN0cmluZyBjYWxsaW5nUGFja2FnZSwKKyAgICAgICAgICAgIEludGVudFtdIGludGVudHMsIFN0cmluZ1tdIHJlc29sdmVkVHlwZXMsIElCaW5kZXIgcmVzdWx0VG8sCisgICAgICAgICAgICBCdW5kbGUgYk9wdGlvbnMsIGludCB1c2VySWQpIHsKKyAgICAgICAgaWYgKGludGVudHMgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJpbnRlbnRzIGlzIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzb2x2ZWRUeXBlcyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInJlc29sdmVkVHlwZXMgaXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChpbnRlbnRzLmxlbmd0aCAhPSByZXNvbHZlZFR5cGVzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW50ZW50cyBhcmUgbGVuZ3RoIGRpZmZlcmVudCB0aGFuIHJlc29sdmVkVHlwZXMiKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgaW50IGNhbGxpbmdQaWQ7CisgICAgICAgIGlmIChjYWxsaW5nVWlkID49IDApIHsKKyAgICAgICAgICAgIGNhbGxpbmdQaWQgPSAtMTsKKyAgICAgICAgfSBlbHNlIGlmIChjYWxsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgY2FsbGluZ1BpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CisgICAgICAgICAgICBjYWxsaW5nVWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBjYWxsaW5nVWlkID0gLTE7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZFtdIG91dEFjdGl2aXR5ID0gbmV3IEFjdGl2aXR5UmVjb3JkWzFdOworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxpbnRlbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBpbnRlbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVmdXNlIHBvc3NpYmxlIGxlYWtlZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCAmJiBpbnRlbnQuaGFzRmlsZURlc2NyaXB0b3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkZpbGUgZGVzY3JpcHRvcnMgcGFzc2VkIGluIEludGVudCIpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgIT0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhlIGNsaWVudCdzIG9iamVjdCEKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChpbnRlbnQpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldCBvZiB0aGUgSW50ZW50LgorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eUluZm8gYUluZm8gPSBtU3VwZXJ2aXNvci5yZXNvbHZlQWN0aXZpdHkoaW50ZW50LCByZXNvbHZlZFR5cGVzW2ldLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIHVzZXJJZCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IE5ldywgY2hlY2sgaWYgdGhpcyBpcyBjb3JyZWN0CisgICAgICAgICAgICAgICAgICAgIGFJbmZvID0gbVNlcnZpY2UuZ2V0QWN0aXZpdHlJbmZvRm9yVXNlcihhSW5mbywgdXNlcklkKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoYUluZm8gIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhSW5mby5hcHBsaWNhdGlvbkluZm8ucHJpdmF0ZUZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIEFwcGxpY2F0aW9uSW5mby5QUklWQVRFX0ZMQUdfQ0FOVF9TQVZFX1NUQVRFKSAgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZMQUdfQ0FOVF9TQVZFX1NUQVRFIG5vdCBzdXBwb3J0ZWQgaGVyZSIpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSBBY3Rpdml0eU9wdGlvbnMuZnJvbUJ1bmRsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID09IGludGVudHMubGVuZ3RoIC0gMSA/IGJPcHRpb25zIDogbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGludCByZXMgPSBzdGFydEFjdGl2aXR5TG9ja2VkKGNhbGxlciwgaW50ZW50LCBudWxsIC8qZXBoZW1lcmFsSW50ZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRUeXBlc1tpXSwgYUluZm8sIG51bGwgLypySW5mbyovLCBudWxsLCBudWxsLCByZXN1bHRUbywgbnVsbCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwgY2FsbGluZ1BhY2thZ2UsIGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgZmFsc2UsIGNvbXBvbmVudFNwZWNpZmllZCwgb3V0QWN0aXZpdHksIG51bGwsIG51bGwpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFRvID0gb3V0QWN0aXZpdHlbMF0gIT0gbnVsbCA/IG91dEFjdGl2aXR5WzBdLmFwcFRva2VuIDogbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlci5TVEFSVF9TVUNDRVNTOworICAgIH0KKworICAgIGZpbmFsIHZvaWQgZG9QZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChib29sZWFuIGRvUmVzdW1lKSB7CisgICAgICAgIHdoaWxlICghbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUGVuZGluZ0FjdGl2aXR5TGF1bmNoIHBhbCA9IG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcy5yZW1vdmUoMCk7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChwYWwuciwgcGFsLnNvdXJjZVJlY29yZCwgbnVsbCwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhbC5zdGFydEZsYWdzLCBkb1Jlc3VtZSAmJiBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuaXNFbXB0eSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFeGNlcHRpb24gZHVyaW5nIHBlbmRpbmcgYWN0aXZpdHkgbGF1bmNoIHBhbD0iICsgcGFsLCBlKTsKKyAgICAgICAgICAgICAgICBwYWwuc2VuZEVycm9yUmVzdWx0KGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgQWN0aXZpdHlTdGFjayBjb21wdXRlU3RhY2tGb2N1cyhBY3Rpdml0eVJlY29yZCByLCBib29sZWFuIG5ld1Rhc2ssIFJlY3QgYm91bmRzLAorICAgICAgICAgICAgaW50IGxhdW5jaEZsYWdzKSB7CisgICAgICAgIGZpbmFsIFRhc2tSZWNvcmQgdGFzayA9IHIudGFzazsKKyAgICAgICAgaWYgKCEoci5pc0FwcGxpY2F0aW9uQWN0aXZpdHkoKSB8fCAodGFzayAhPSBudWxsICYmIHRhc2suaXNBcHBsaWNhdGlvblRhc2soKSkpKSB7CisgICAgICAgICAgICByZXR1cm4gbVN1cGVydmlzb3IubUhvbWVTdGFjazsKKyAgICAgICAgfQorCisgICAgICAgIEFjdGl2aXR5U3RhY2sgc3RhY2sgPSBnZXRMYXVuY2hUb1NpZGVTdGFjayhyLCBsYXVuY2hGbGFncywgdGFzayk7CisgICAgICAgIGlmIChzdGFjayAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhY2s7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGFzayAhPSBudWxsICYmIHRhc2suc3RhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgc3RhY2sgPSB0YXNrLnN0YWNrOworICAgICAgICAgICAgaWYgKHN0YWNrLmlzT25Ib21lRGlzcGxheSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1TdXBlcnZpc29yLm1Gb2N1c2VkU3RhY2sgIT0gc3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTIHx8IERFQlVHX1NUQUNLKSBTbG9nLmQoVEFHX0ZPQ1VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wdXRlU3RhY2tGb2N1czogU2V0dGluZyAiICsgImZvY3VzZWQgc3RhY2sgdG8gcj0iICsgcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRhc2s9IiArIHRhc2spOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19GT0NVUyB8fCBERUJVR19TVEFDSykgU2xvZy5kKFRBR19GT0NVUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0ZVN0YWNrRm9jdXM6IEZvY3VzZWQgc3RhY2sgYWxyZWFkeT0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1TdXBlcnZpc29yLm1Gb2N1c2VkU3RhY2spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzdGFjazsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2tTdXBlcnZpc29yLkFjdGl2aXR5Q29udGFpbmVyIGNvbnRhaW5lciA9IHIubUluaXRpYWxBY3Rpdml0eUNvbnRhaW5lcjsKKyAgICAgICAgaWYgKGNvbnRhaW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBUaGUgZmlyc3QgdGltZSBwdXQgaXQgb24gdGhlIGRlc2lyZWQgc3RhY2ssIGFmdGVyIHRoaXMgcHV0IG9uIHRhc2sgc3RhY2suCisgICAgICAgICAgICByLm1Jbml0aWFsQWN0aXZpdHlDb250YWluZXIgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5tU3RhY2s7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgZnVsbHNjcmVlbiBzdGFjayBjYW4gY29udGFpbiBhbnkgdGFzayByZWdhcmRsZXNzIG9mIGlmIHRoZSB0YXNrIGlzIHJlc2l6ZWFibGUKKyAgICAgICAgLy8gb3Igbm90LiBTbywgd2UgbGV0IHRoZSB0YXNrIGdvIGluIHRoZSBmdWxsc2NyZWVuIHRhc2sgaWYgaXQgaXMgdGhlIGZvY3VzIHN0YWNrLgorICAgICAgICAvLyBJZiB0aGUgZnJlZWZvcm0gb3IgZG9ja2VkIHN0YWNrIGhhcyBmb2N1cywgYW5kIHRoZSBhY3Rpdml0eSB0byBiZSBsYXVuY2hlZCBpcyByZXNpemVhYmxlLAorICAgICAgICAvLyB3ZSBjYW4gYWxzbyBwdXQgaXQgaW4gdGhlIGZvY3VzZWQgc3RhY2suCisgICAgICAgIGZpbmFsIGludCBmb2N1c2VkU3RhY2tJZCA9IG1TdXBlcnZpc29yLm1Gb2N1c2VkU3RhY2subVN0YWNrSWQ7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gY2FuVXNlRm9jdXNlZFN0YWNrID0KKyAgICAgICAgICAgICAgICBmb2N1c2VkU3RhY2tJZCA9PSBGVUxMU0NSRUVOX1dPUktTUEFDRV9TVEFDS19JRAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgZm9jdXNlZFN0YWNrSWQgPT0gRE9DS0VEX1NUQUNLX0lECisgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZm9jdXNlZFN0YWNrSWQgPT0gRlJFRUZPUk1fV09SS1NQQUNFX1NUQUNLX0lEICYmIHIuaW5mby5yZXNpemVhYmxlKTsKKyAgICAgICAgaWYgKGNhblVzZUZvY3VzZWRTdGFjayAmJiAoIW5ld1Rhc2sKKyAgICAgICAgICAgICAgICB8fCBtU3VwZXJ2aXNvci5tRm9jdXNlZFN0YWNrLm1BY3Rpdml0eUNvbnRhaW5lci5pc0VsaWdpYmxlRm9yTmV3VGFza3MoKSkpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19GT0NVUyB8fCBERUJVR19TVEFDSykgU2xvZy5kKFRBR19GT0NVUywKKyAgICAgICAgICAgICAgICAgICAgImNvbXB1dGVTdGFja0ZvY3VzOiBIYXZlIGEgZm9jdXNlZCBzdGFjaz0iICsgbVN1cGVydmlzb3IubUZvY3VzZWRTdGFjayk7CisgICAgICAgICAgICByZXR1cm4gbVN1cGVydmlzb3IubUZvY3VzZWRTdGFjazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGZpcnN0IHRyeSB0byBwdXQgdGhlIHRhc2sgaW4gdGhlIGZpcnN0IGR5bmFtaWMgc3RhY2suCisgICAgICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVN0YWNrPiBob21lRGlzcGxheVN0YWNrcyA9IG1TdXBlcnZpc29yLm1Ib21lU3RhY2subVN0YWNrczsKKyAgICAgICAgZm9yIChpbnQgc3RhY2tOZHggPSBob21lRGlzcGxheVN0YWNrcy5zaXplKCkgLSAxOyBzdGFja05keCA+PSAwOyAtLXN0YWNrTmR4KSB7CisgICAgICAgICAgICBzdGFjayA9IGhvbWVEaXNwbGF5U3RhY2tzLmdldChzdGFja05keCk7CisgICAgICAgICAgICBpZiAoIUFjdGl2aXR5TWFuYWdlci5TdGFja0lkLmlzU3RhdGljU3RhY2soc3RhY2subVN0YWNrSWQpKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTIHx8IERFQlVHX1NUQUNLKSBTbG9nLmQoVEFHX0ZPQ1VTLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbXB1dGVTdGFja0ZvY3VzOiBTZXR0aW5nIGZvY3VzZWQgc3RhY2s9IiArIHN0YWNrKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhY2s7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdWl0YWJsZSBkeW5hbWljIHN0YWNrIHRoZW4gd2UgZmlndXJlIG91dCB3aGljaCBzdGF0aWMgc3RhY2sgdG8gdXNlLgorICAgICAgICBmaW5hbCBpbnQgc3RhY2tJZCA9IHRhc2sgIT0gbnVsbCA/IHRhc2suZ2V0TGF1bmNoU3RhY2tJZCgpIDoKKyAgICAgICAgICAgICAgICBib3VuZHMgIT0gbnVsbCA/IEZSRUVGT1JNX1dPUktTUEFDRV9TVEFDS19JRCA6CisgICAgICAgICAgICAgICAgICAgICAgICBGVUxMU0NSRUVOX1dPUktTUEFDRV9TVEFDS19JRDsKKyAgICAgICAgc3RhY2sgPSBtU3VwZXJ2aXNvci5nZXRTdGFjayhzdGFja0lkLCBDUkVBVEVfSUZfTkVFREVELCBPTl9UT1ApOworICAgICAgICBpZiAoREVCVUdfRk9DVVMgfHwgREVCVUdfU1RBQ0spIFNsb2cuZChUQUdfRk9DVVMsICJjb21wdXRlU3RhY2tGb2N1czogTmV3IHN0YWNrIHI9IgorICAgICAgICAgICAgICAgICsgciArICIgc3RhY2tJZD0iICsgc3RhY2subVN0YWNrSWQpOworICAgICAgICByZXR1cm4gc3RhY2s7CisgICAgfQorCisgICAgcHJpdmF0ZSBBY3Rpdml0eVN0YWNrIGdldExhdW5jaFRvU2lkZVN0YWNrKEFjdGl2aXR5UmVjb3JkIHIsIGludCBsYXVuY2hGbGFncywgVGFza1JlY29yZCB0YXNrKSB7CisgICAgICAgIGlmICgobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX0xBVU5DSF9UT19TSURFKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgcGFyZW50IGFjdGl2aXR5IGRvZXNuJ3Qgd2FudCB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IG9uIHRvcCBvZiBpdHNlbGYsIGJ1dAorICAgICAgICAvLyBpbnN0ZWFkIHRyaWVzIHRvIHB1dCBpdCBvbnRvIG90aGVyIHNpZGUgaW4gc2lkZS1ieS1zaWRlIG1vZGUuCisgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgcGFyZW50U3RhY2sgPSB0YXNrICE9IG51bGwgPyB0YXNrLnN0YWNrCisgICAgICAgICAgICAgICAgOiByLm1Jbml0aWFsQWN0aXZpdHlDb250YWluZXIgIT0gbnVsbCA/IHIubUluaXRpYWxBY3Rpdml0eUNvbnRhaW5lci5tU3RhY2sKKyAgICAgICAgICAgICAgICA6IG1TdXBlcnZpc29yLm1Gb2N1c2VkU3RhY2s7CisgICAgICAgIGlmIChwYXJlbnRTdGFjayAhPSBudWxsICYmIHBhcmVudFN0YWNrLm1TdGFja0lkID09IERPQ0tFRF9TVEFDS19JRCkgeworICAgICAgICAgICAgLy8gSWYgcGFyZW50IHdhcyBpbiBkb2NrZWQgc3RhY2ssIHRoZSBuYXR1cmFsIHBsYWNlIHRvIGxhdW5jaCBhbm90aGVyIGFjdGl2aXR5CisgICAgICAgICAgICAvLyB3aWxsIGJlIGZ1bGxzY3JlZW4sIHNvIGl0IGNhbiBhcHBlYXIgYWxvbmdzaWRlIHRoZSBkb2NrZWQgd2luZG93LgorICAgICAgICAgICAgcmV0dXJuIG1TdXBlcnZpc29yLmdldFN0YWNrKEZVTExTQ1JFRU5fV09SS1NQQUNFX1NUQUNLX0lELCBDUkVBVEVfSUZfTkVFREVELCBPTl9UT1ApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmVudCBpcyBub3QgaW4gdGhlIGRvY2tlZCBzdGFjaywgd2UgY2hlY2sgaWYgdGhlcmUgaXMgZG9ja2VkIHdpbmRvdworICAgICAgICAgICAgLy8gYW5kIGlmIHllcywgd2Ugd2lsbCBsYXVuY2ggaW50byB0aGF0IHN0YWNrLiBJZiBub3QsIHdlIGp1c3QgcHV0IHRoZSBuZXcKKyAgICAgICAgICAgIC8vIGFjdGl2aXR5IGludG8gcGFyZW50J3Mgc3RhY2ssIGJlY2F1c2Ugd2UgY2FuJ3QgZmluZCBhIGJldHRlciBwbGFjZS4KKyAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5U3RhY2sgc3RhY2sgPSBtU3VwZXJ2aXNvci5nZXRTdGFjayhET0NLRURfU1RBQ0tfSUQpOworICAgICAgICAgICAgaWYgKHN0YWNrICE9IG51bGwgJiYgIXN0YWNrLmlzU3RhY2tWaXNpYmxlTG9ja2VkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIGRvY2tlZCBzdGFjaywgYnV0IGl0IGlzbid0IHZpc2libGUsIHNvIHdlIGNhbid0IGxhdW5jaCBpbnRvIHRoYXQuCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGFjazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2lkZSB3aGV0aGVyIHRoZSBuZXcgYWN0aXZpdHkgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYW4gZXhpc3RpbmcgdGFzay4gUmV0dXJucyBudWxsIGlmIG5vdAorICAgICAqIG9yIGFuIEFjdGl2aXR5UmVjb3JkIHdpdGggdGhlIHRhc2sgaW50byB3aGljaCB0aGUgbmV3IGFjdGl2aXR5IHNob3VsZCBiZSBhZGRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEFjdGl2aXR5UmVjb3JkIGdldFJldXNhYmxlSW50ZW50QWN0aXZpdHkoQWN0aXZpdHlSZWNvcmQgciwgVGFza1JlY29yZCBpblRhc2ssCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50LCBib29sZWFuIGxhdW5jaFNpbmdsZUluc3RhbmNlLCBib29sZWFuIGxhdW5jaFNpbmdsZVRhc2ssCisgICAgICAgICAgICBpbnQgbGF1bmNoRmxhZ3MpIHsKKyAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gdHJ5IHRvIHBsYWNlIHRoZSBuZXcgYWN0aXZpdHkgaW4gdG8gYW4gZXhpc3RpbmcgdGFzay4gIFdlIGFsd2F5cworICAgICAgICAvLyBkbyB0aGlzIGlmIHRoZSB0YXJnZXQgYWN0aXZpdHkgaXMgc2luZ2xlVGFzayBvciBzaW5nbGVJbnN0YW5jZTsgd2Ugd2lsbCBhbHNvIGRvCisgICAgICAgIC8vIHRoaXMgaWYgTkVXX1RBU0sgaGFzIGJlZW4gcmVxdWVzdGVkLCBhbmQgdGhlcmUgaXMgbm90IGFuIGFkZGl0aW9uYWwgcXVhbGlmaWVyIHRlbGxpbmcKKyAgICAgICAgLy8gdXMgdG8gc3RpbGwgcGxhY2UgaXQgaW4gYSBuZXcgdGFzazogbXVsdGkgdGFzaywgYWx3YXlzIGRvYyBtb2RlLCBvciBiZWluZyBhc2tlZCB0bworICAgICAgICAvLyBsYXVuY2ggdGhpcyBhcyBhIG5ldyB0YXNrIGJlaGluZCB0aGUgY3VycmVudCBvbmUuCisgICAgICAgIGJvb2xlYW4gcHV0SW50b0V4aXN0aW5nVGFzayA9ICgobGF1bmNoRmxhZ3MgJiBGTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwICYmCisgICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzICYgRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLKSA9PSAwKQorICAgICAgICAgICAgICAgIHx8IGxhdW5jaFNpbmdsZUluc3RhbmNlIHx8IGxhdW5jaFNpbmdsZVRhc2s7CisgICAgICAgIC8vIElmIGJyaW5nIHRvIGZyb250IGlzIHJlcXVlc3RlZCwgYW5kIG5vIHJlc3VsdCBpcyByZXF1ZXN0ZWQgYW5kIHdlIGhhdmUgbm90CisgICAgICAgIC8vIGJlZW4gZ2l2ZW4gYW4gZXhwbGljaXQgdGFzayB0byBsYXVuY2ggaW4gdG8sIGFuZAorICAgICAgICAvLyB3ZSBjYW4gZmluZCBhIHRhc2sgdGhhdCB3YXMgc3RhcnRlZCB3aXRoIHRoaXMgc2FtZQorICAgICAgICAvLyBjb21wb25lbnQsIHRoZW4gaW5zdGVhZCBvZiBsYXVuY2hpbmcgYnJpbmcgdGhhdCBvbmUgdG8gdGhlIGZyb250LgorICAgICAgICBwdXRJbnRvRXhpc3RpbmdUYXNrICY9IGluVGFzayA9PSBudWxsICYmIHIucmVzdWx0VG8gPT0gbnVsbDsKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgaW50ZW50QWN0aXZpdHkgPSBudWxsOworICAgICAgICBpZiAocHV0SW50b0V4aXN0aW5nVGFzaykgeworICAgICAgICAgICAgLy8gU2VlIGlmIHRoZXJlIGlzIGEgdGFzayB0byBicmluZyB0byB0aGUgZnJvbnQuICBJZiB0aGlzIGlzCisgICAgICAgICAgICAvLyBhIFNJTkdMRV9JTlNUQU5DRSBhY3Rpdml0eSwgdGhlcmUgY2FuIGJlIG9uZSBhbmQgb25seSBvbmUKKyAgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIGl0IGluIHRoZSBoaXN0b3J5LCBhbmQgaXQgaXMgYWx3YXlzIGluIGl0cyBvd24KKyAgICAgICAgICAgIC8vIHVuaXF1ZSB0YXNrLCBzbyB3ZSBkbyBhIHNwZWNpYWwgc2VhcmNoLgorICAgICAgICAgICAgaW50ZW50QWN0aXZpdHkgPSBsYXVuY2hTaW5nbGVJbnN0YW5jZSA/IG1TdXBlcnZpc29yLmZpbmRBY3Rpdml0eUxvY2tlZChpbnRlbnQsIHIuaW5mbykKKyAgICAgICAgICAgICAgICAgICAgOiBtU3VwZXJ2aXNvci5maW5kVGFza0xvY2tlZChyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW50ZW50QWN0aXZpdHk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kb3dNYW5hZ2VyKFdpbmRvd01hbmFnZXJTZXJ2aWNlIHdtKSB7CisgICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gd207CisgICAgfQorCisgICAgdm9pZCByZW1vdmVQZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChBY3Rpdml0eVN0YWNrIHN0YWNrKSB7CisgICAgICAgIGZvciAoaW50IHBhbE5keCA9IG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcy5zaXplKCkgLSAxOyBwYWxOZHggPj0gMDsgLS1wYWxOZHgpIHsKKyAgICAgICAgICAgIFBlbmRpbmdBY3Rpdml0eUxhdW5jaCBwYWwgPSBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuZ2V0KHBhbE5keCk7CisgICAgICAgICAgICBpZiAocGFsLnN0YWNrID09IHN0YWNrKSB7CisgICAgICAgICAgICAgICAgbVBlbmRpbmdBY3Rpdml0eUxhdW5jaGVzLnJlbW92ZShwYWxOZHgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Vc2VyQ29udHJvbGxlci5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Vc2VyQ29udHJvbGxlci5qYXZhCmluZGV4IDU0MjZiNzIuLjIwYjFlNjAgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vVXNlckNvbnRyb2xsZXIuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1VzZXJDb250cm9sbGVyLmphdmEKQEAgLTQzMiw2ICs0MzIsMTAgQEAKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKICAgICAgICAgICAgICAgICBtU2VydmljZS5tU3RhY2tTdXBlcnZpc29yLnJlbW92ZVVzZXJMb2NrZWQodXNlcklkKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgdXNlciBpZiBpdCBpcyBlcGhlbWVyYWwuCisgICAgICAgICAgICBpZiAoZ2V0VXNlckluZm8odXNlcklkKS5pc0VwaGVtZXJhbCgpKSB7CisgICAgICAgICAgICAgICAgbVVzZXJNYW5hZ2VyLnJlbW92ZVVzZXIodXNlcklkKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNDc4LDkgKzQ4Miw5IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogU3RvcHMgdGhlIGd1ZXN0IHVzZXIgaWYgaXQgaGFzIGdvbmUgdG8gdGhlIGJhY2tncm91bmQuCisgICAgICogU3RvcHMgdGhlIGd1ZXN0IG9yIGVwaGVtZXJhbCB1c2VyIGlmIGl0IGhhcyBnb25lIHRvIHRoZSBiYWNrZ3JvdW5kLgogICAgICAqLwotICAgIHByaXZhdGUgdm9pZCBzdG9wR3Vlc3RVc2VySWZCYWNrZ3JvdW5kKCkgeworICAgIHByaXZhdGUgdm9pZCBzdG9wR3Vlc3RPckVwaGVtZXJhbFVzZXJJZkJhY2tncm91bmQoKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKICAgICAgICAgICAgIGZpbmFsIGludCBudW0gPSBtVXNlckxydS5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgaSsrKSB7CkBAIC00OTIsNyArNDk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFVzZXJJbmZvIHVzZXJJbmZvID0gZ2V0VXNlckluZm8ob2xkVXNlcklkKTsKLSAgICAgICAgICAgICAgICBpZiAodXNlckluZm8uaXNHdWVzdCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHVzZXJJbmZvLmlzR3Vlc3QoKSB8fCB1c2VySW5mby5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSB1c2VyIHRvIGJlIHN0b3BwZWQuCiAgICAgICAgICAgICAgICAgICAgIHN0b3BVc2Vyc0xvY2tlZChvbGRVc2VySWQsIHRydWUsIG51bGwpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkxOCw3ICs5MjIsNyBAQAogICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobUhhbmRsZXIub2J0YWluTWVzc2FnZShSRVBPUlRfVVNFUl9TV0lUQ0hfQ09NUExFVEVfTVNHLAogICAgICAgICAgICAgICAgICAgICBuZXdVc2VySWQsIDApKTsKICAgICAgICAgfQotICAgICAgICBzdG9wR3Vlc3RVc2VySWZCYWNrZ3JvdW5kKCk7CisgICAgICAgIHN0b3BHdWVzdE9yRXBoZW1lcmFsVXNlcklmQmFja2dyb3VuZCgpOwogICAgICAgICBzdG9wQmFja2dyb3VuZFVzZXJzSWZFbmZvcmNlZChvbGRVc2VySWQpOwogICAgIH0KIApAQCAtMTIyMiw3ICsxMjI2LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGJvb2xlYW4gaXNDdXJyZW50VXNlckxvY2tlZChpbnQgdXNlcklkKSB7Ci0gICAgICAgIHJldHVybiBtQ3VycmVudFVzZXJJZCA9PSB1c2VySWQgfHwgbVRhcmdldFVzZXJJZCA9PSB1c2VySWQ7CisgICAgICAgIHJldHVybiB1c2VySWQgPT0gZ2V0Q3VycmVudE9yVGFyZ2V0VXNlcklkTG9ja2VkKCk7CiAgICAgfQogCiAgICAgaW50IHNldFRhcmdldFVzZXJJZExvY2tlZChpbnQgdGFyZ2V0VXNlcklkKSB7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2lucHV0L0lucHV0TWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvaW5wdXQvSW5wdXRNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDY4YjM4MTcuLmVlOGFhYjYgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvaW5wdXQvSW5wdXRNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvaW5wdXQvSW5wdXRNYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0yMTQsNiArMjE0LDcgQEAKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTZXRQb2ludGVySWNvblNoYXBlKGxvbmcgcHRyLCBpbnQgaWNvbklkKTsKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVSZWxvYWRQb2ludGVySWNvbnMobG9uZyBwdHIpOwogICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVNldEN1c3RvbVBvaW50ZXJJY29uKGxvbmcgcHRyLCBQb2ludGVySWNvbiBpY29uKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTZXRQb2ludGVySWNvbkRldGFjaGVkKGxvbmcgcHRyLCBib29sZWFuIGRldGFjaGVkKTsKIAogICAgIC8vIElucHV0IGV2ZW50IGluamVjdGlvbiBjb25zdGFudHMgZGVmaW5lZCBpbiBJbnB1dERpc3BhdGNoZXIuaC4KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCA9IDA7CkBAIC05NzcsNyArOTc4LDcgQEAKICAgICAgICAgZmluYWwgUGFja2FnZU1hbmFnZXIgcG0gPSBtQ29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnB1dE1hbmFnZXIuQUNUSU9OX1FVRVJZX0tFWUJPQVJEX0xBWU9VVFMpOwogICAgICAgICBmb3IgKFJlc29sdmVJbmZvIHJlc29sdmVJbmZvIDogcG0ucXVlcnlCcm9hZGNhc3RSZWNlaXZlcnMoaW50ZW50LAotICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLkdFVF9NRVRBX0RBVEEpKSB7CisgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuR0VUX01FVEFfREFUQSB8IFBhY2thZ2VNYW5hZ2VyLk1BVENIX0VOQ1JZUFRJT05fQVdBUkVfQU5EX1VOQVdBUkUpKSB7CiAgICAgICAgICAgICBmaW5hbCBBY3Rpdml0eUluZm8gYWN0aXZpdHlJbmZvID0gcmVzb2x2ZUluZm8uYWN0aXZpdHlJbmZvOwogICAgICAgICAgICAgZmluYWwgaW50IHByaW9yaXR5ID0gcmVzb2x2ZUluZm8ucHJpb3JpdHk7CiAgICAgICAgICAgICB2aXNpdEtleWJvYXJkTGF5b3V0c0luUGFja2FnZShwbSwgYWN0aXZpdHlJbmZvLCBudWxsLCBwcmlvcml0eSwgdmlzaXRvcik7CkBAIC05OTIsNyArOTkzLDggQEAKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgQWN0aXZpdHlJbmZvIHJlY2VpdmVyID0gcG0uZ2V0UmVjZWl2ZXJJbmZvKAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENvbXBvbmVudE5hbWUoZC5wYWNrYWdlTmFtZSwgZC5yZWNlaXZlck5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuR0VUX01FVEFfREFUQSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5HRVRfTUVUQV9EQVRBCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9BTkRfVU5BV0FSRSk7CiAgICAgICAgICAgICAgICAgdmlzaXRLZXlib2FyZExheW91dHNJblBhY2thZ2UocG0sIHJlY2VpdmVyLCBkLmtleWJvYXJkTGF5b3V0TmFtZSwgMCwgdmlzaXRvcik7CiAgICAgICAgICAgICB9IGNhdGNoIChOYW1lTm90Rm91bmRFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIH0KQEAgLTEyNzQsNiArMTI3NiwxMSBAQAogICAgICAgICBuYXRpdmVTZXRGb2N1c2VkQXBwbGljYXRpb24obVB0ciwgYXBwbGljYXRpb24pOwogICAgIH0KIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFBvaW50ZXJJY29uRGV0YWNoZWQoYm9vbGVhbiBkZXRhY2hlZCkgeworICAgICAgICBuYXRpdmVTZXRQb2ludGVySWNvbkRldGFjaGVkKG1QdHIsIGRldGFjaGVkKTsKKyAgICB9CisKICAgICBwdWJsaWMgdm9pZCBzZXRJbnB1dERpc3BhdGNoTW9kZShib29sZWFuIGVuYWJsZWQsIGJvb2xlYW4gZnJvemVuKSB7CiAgICAgICAgIG5hdGl2ZVNldElucHV0RGlzcGF0Y2hNb2RlKG1QdHIsIGVuYWJsZWQsIGZyb3plbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9qb2IvSm9iU2NoZWR1bGVyU2VydmljZS5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9qb2IvSm9iU2NoZWR1bGVyU2VydmljZS5qYXZhCmluZGV4IDMwOWJlYzguLmM1ZTZlN2MgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvam9iL0pvYlNjaGVkdWxlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2pvYi9Kb2JTY2hlZHVsZXJTZXJ2aWNlLmphdmEKQEAgLTE2LDIwICsxNiwxNCBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5qb2I7CiAKLWltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KIGltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOwogaW1wb3J0IGFuZHJvaWQuYXBwLkFwcEdsb2JhbHM7CiBpbXBvcnQgYW5kcm9pZC5hcHAuSVVpZE9ic2VydmVyOworaW1wb3J0IGFuZHJvaWQuYXBwLmpvYi5JSm9iU2NoZWR1bGVyOwogaW1wb3J0IGFuZHJvaWQuYXBwLmpvYi5Kb2JJbmZvOwogaW1wb3J0IGFuZHJvaWQuYXBwLmpvYi5Kb2JTY2hlZHVsZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuam9iLkpvYlNlcnZpY2U7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuam9iLklKb2JTY2hlZHVsZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwpAQCAtNTMsNiArNDcsNyBAQAogaW1wb3J0IGFuZHJvaWQudXRpbC5TcGFyc2VBcnJheTsKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5JQmF0dGVyeVN0YXRzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuQXJyYXlVdGlsczsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuRGV2aWNlSWRsZUNvbnRyb2xsZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLkxvY2FsU2VydmljZXM7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmpvYi5jb250cm9sbGVycy5BcHBJZGxlQ29udHJvbGxlcjsKQEAgLTYzLDYgKzU4LDE1IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmpvYi5jb250cm9sbGVycy5TdGF0ZUNvbnRyb2xsZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmpvYi5jb250cm9sbGVycy5UaW1lQ29udHJvbGxlcjsKIAoraW1wb3J0IGxpYmNvcmUudXRpbC5FbXB0eUFycmF5OworCitpbXBvcnQgamF2YS5pby5GaWxlRGVzY3JpcHRvcjsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKIC8qKgogICogUmVzcG9uc2libGUgZm9yIHRha2luZyBqb2JzIHJlcHJlc2VudGluZyB3b3JrIHRvIGJlIHBlcmZvcm1lZCBieSBhIGNsaWVudCBhcHAsIGFuZCBkZXRlcm1pbmluZwogICogYmFzZWQgb24gdGhlIGNyaXRlcmlhIHNwZWNpZmllZCB3aGVuIHRoYXQgam9iIHNob3VsZCBiZSBydW4gYWdhaW5zdCB0aGUgY2xpZW50IGFwcGxpY2F0aW9uJ3MKQEAgLTEyNiw3ICsxMzAsNyBAQAogICAgICAqLwogICAgIGZpbmFsIEFycmF5TGlzdDxKb2JTdGF0dXM+IG1QZW5kaW5nSm9icyA9IG5ldyBBcnJheUxpc3Q8PigpOwogCi0gICAgZmluYWwgQXJyYXlMaXN0PEludGVnZXI+IG1TdGFydGVkVXNlcnMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICBpbnRbXSBtU3RhcnRlZFVzZXJzID0gRW1wdHlBcnJheS5JTlQ7CiAKICAgICBmaW5hbCBKb2JIYW5kbGVyIG1IYW5kbGVyOwogICAgIGZpbmFsIEpvYlNjaGVkdWxlclN0dWIgbUpvYlNjaGVkdWxlclN0dWI7CkBAIC0yMDEsMTQgKzIwNSwyMCBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25TdGFydFVzZXIoaW50IHVzZXJIYW5kbGUpIHsKLSAgICAgICAgbVN0YXJ0ZWRVc2Vycy5hZGQodXNlckhhbmRsZSk7CisgICAgICAgIG1TdGFydGVkVXNlcnMgPSBBcnJheVV0aWxzLmFwcGVuZEludChtU3RhcnRlZFVzZXJzLCB1c2VySGFuZGxlKTsKKyAgICAgICAgLy8gTGV0J3Mga2ljayBhbnkgb3V0c3RhbmRpbmcgam9icyBmb3IgdGhpcyB1c2VyLgorICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19DSEVDS19KT0IpLnNlbmRUb1RhcmdldCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uVW5sb2NrVXNlcihpbnQgdXNlckhhbmRsZSkgewogICAgICAgICAvLyBMZXQncyBraWNrIGFueSBvdXRzdGFuZGluZyBqb2JzIGZvciB0aGlzIHVzZXIuCiAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0NIRUNLX0pPQikuc2VuZFRvVGFyZ2V0KCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25TdG9wVXNlcihpbnQgdXNlckhhbmRsZSkgewotICAgICAgICBtU3RhcnRlZFVzZXJzLnJlbW92ZShJbnRlZ2VyLnZhbHVlT2YodXNlckhhbmRsZSkpOworICAgICAgICBtU3RhcnRlZFVzZXJzID0gQXJyYXlVdGlscy5yZW1vdmVJbnQobVN0YXJ0ZWRVc2VycywgdXNlckhhbmRsZSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC03NDQsNyArNzU0LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIHByaXZhdGUgdm9pZCBtYXliZVF1ZXVlUmVhZHlKb2JzRm9yRXhlY3V0aW9uTG9ja2VkSCgpIHsKICAgICAgICAgICAgIGludCBjaGFyZ2luZ0NvdW50ID0gMDsKLSAgICAgICAgICAgIGludCBpZGxlQ291bnQgPSAgMDsKKyAgICAgICAgICAgIGludCBpZGxlQ291bnQgPSAwOwogICAgICAgICAgICAgaW50IGJhY2tvZmZDb3VudCA9IDA7CiAgICAgICAgICAgICBpbnQgY29ubmVjdGl2aXR5Q291bnQgPSAwOwogICAgICAgICAgICAgTGlzdDxKb2JTdGF0dXM+IHJ1bm5hYmxlSm9icyA9IG51bGw7CkBAIC04MTIsMTggKzgyMiwzMSBAQAogICAgICAgICAgKiAgICAgIC0gSXQncyBub3QgcGVuZGluZy4KICAgICAgICAgICogICAgICAtIEl0J3Mgbm90IGFscmVhZHkgcnVubmluZyBvbiBhIEpTQy4KICAgICAgICAgICogICAgICAtIFRoZSB1c2VyIHRoYXQgcmVxdWVzdGVkIHRoZSBqb2IgaXMgcnVubmluZy4KKyAgICAgICAgICogICAgICAtIFRoZSBjb21wb25lbnQgaXMgZW5hYmxlZCBhbmQgcnVubmFibGUuCiAgICAgICAgICAqLwogICAgICAgICBwcml2YXRlIGJvb2xlYW4gaXNSZWFkeVRvQmVFeGVjdXRlZExvY2tlZChKb2JTdGF0dXMgam9iKSB7CiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGpvYlJlYWR5ID0gam9iLmlzUmVhZHkoKTsKICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gam9iUGVuZGluZyA9IG1QZW5kaW5nSm9icy5jb250YWlucyhqb2IpOwogICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBqb2JBY3RpdmUgPSBpc0N1cnJlbnRseUFjdGl2ZUxvY2tlZChqb2IpOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiB1c2VyUnVubmluZyA9IG1TdGFydGVkVXNlcnMuY29udGFpbnMoam9iLmdldFVzZXJJZCgpKTsKKworICAgICAgICAgICAgZmluYWwgaW50IHVzZXJJZCA9IGpvYi5nZXRVc2VySWQoKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdXNlclN0YXJ0ZWQgPSBBcnJheVV0aWxzLmNvbnRhaW5zKG1TdGFydGVkVXNlcnMsIHVzZXJJZCk7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGNvbXBvbmVudFByZXNlbnQ7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbXBvbmVudFByZXNlbnQgPSAoQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmdldFNlcnZpY2VJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgam9iLmdldFNlcnZpY2VDb21wb25lbnQoKSwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklkKSAhPSBudWxsKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgZS5yZXRocm93QXNSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChERUJVRykgewogICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJpc1JlYWR5VG9CZUV4ZWN1dGVkTG9ja2VkOiAiICsgam9iLnRvU2hvcnRTdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHJlYWR5PSIgKyBqb2JSZWFkeSArICIgcGVuZGluZz0iICsgam9iUGVuZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGFjdGl2ZT0iICsgam9iQWN0aXZlICsgIiB1c2VyUnVubmluZz0iICsgdXNlclJ1bm5pbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGFjdGl2ZT0iICsgam9iQWN0aXZlICsgIiB1c2VyU3RhcnRlZD0iICsgdXNlclN0YXJ0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBjb21wb25lbnRQcmVzZW50PSIgKyBjb21wb25lbnRQcmVzZW50KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB1c2VyUnVubmluZyAmJiBqb2JSZWFkeSAmJiAham9iUGVuZGluZyAmJiAham9iQWN0aXZlOworICAgICAgICAgICAgcmV0dXJuIHVzZXJTdGFydGVkICYmIGNvbXBvbmVudFByZXNlbnQgJiYgam9iUmVhZHkgJiYgIWpvYlBlbmRpbmcgJiYgIWpvYkFjdGl2ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8qKgpAQCAtOTAxLDcgKzkyNCw4IEBACiAgICAgICAgICAgICBmaW5hbCBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICBmaW5hbCBDb21wb25lbnROYW1lIHNlcnZpY2UgPSBqb2IuZ2V0U2VydmljZSgpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlSW5mbyBzaSA9IHBtLmdldFNlcnZpY2VJbmZvKHNlcnZpY2UsIDAsIFVzZXJIYW5kbGUuZ2V0VXNlcklkKHVpZCkpOworICAgICAgICAgICAgICAgIFNlcnZpY2VJbmZvIHNpID0gcG0uZ2V0U2VydmljZUluZm8oc2VydmljZSwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgICAgVXNlckhhbmRsZS5nZXRVc2VySWQodWlkKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNpID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTm8gc3VjaCBzZXJ2aWNlICIgKyBzZXJ2aWNlKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDE0LDE2ICsxMDM4LDEyIEBACiAgICAgICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkoaWRlbnRpdHlUb2tlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9OworICAgIH0KIAogICAgIHZvaWQgZHVtcEludGVybmFsKFByaW50V3JpdGVyIHB3KSB7CiAgICAgICAgIGZpbmFsIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CiAgICAgICAgIHN5bmNocm9uaXplZCAobUpvYnMpIHsKLSAgICAgICAgICAgIHB3LnByaW50KCJTdGFydGVkIHVzZXJzOiAiKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxtU3RhcnRlZFVzZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoInUiICsgbVN0YXJ0ZWRVc2Vycy5nZXQoaSkgKyAiICIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHcucHJpbnRsbigpOworICAgICAgICAgICAgcHcucHJpbnRsbigiU3RhcnRlZCB1c2VyczogIiArIEFycmF5cy50b1N0cmluZyhtU3RhcnRlZFVzZXJzKSk7CiAgICAgICAgICAgICBwdy5wcmludGxuKCJSZWdpc3RlcmVkIGpvYnM6Iik7CiAgICAgICAgICAgICBpZiAobUpvYnMuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgIEFycmF5U2V0PEpvYlN0YXR1cz4gam9icyA9IG1Kb2JzLmdldEpvYnMoKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbmV0L05ldHdvcmtQb2xpY3lNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9uZXQvTmV0d29ya1BvbGljeU1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggMmFjMGJhNi4uMTk5N2U0MCAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9uZXQvTmV0d29ya1BvbGljeU1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9uZXQvTmV0d29ya1BvbGljeU1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTIxODcsNyArMjE4Nyw4IEBACiAgICAgICAgIC8vIHVwZGF0ZSBydWxlcyBmb3IgYWxsIGluc3RhbGxlZCBhcHBsaWNhdGlvbnMKICAgICAgICAgZmluYWwgTGlzdDxVc2VySW5mbz4gdXNlcnMgPSBtVXNlck1hbmFnZXIuZ2V0VXNlcnMoKTsKICAgICAgICAgZmluYWwgTGlzdDxBcHBsaWNhdGlvbkluZm8+IGFwcHMgPSBwbS5nZXRJbnN0YWxsZWRBcHBsaWNhdGlvbnMoCi0gICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuR0VUX1VOSU5TVEFMTEVEX1BBQ0tBR0VTIHwgUGFja2FnZU1hbmFnZXIuR0VUX0RJU0FCTEVEX0NPTVBPTkVOVFMpOworICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLkdFVF9VTklOU1RBTExFRF9QQUNLQUdFUyB8IFBhY2thZ2VNYW5hZ2VyLkdFVF9ESVNBQkxFRF9DT01QT05FTlRTCisgICAgICAgICAgICAgICAgICAgICAgICB8IFBhY2thZ2VNYW5hZ2VyLk1BVENIX0VOQ1JZUFRJT05fQVdBUkVfQU5EX1VOQVdBUkUpOwogCiAgICAgICAgIGZvciAoVXNlckluZm8gdXNlciA6IHVzZXJzKSB7CiAgICAgICAgICAgICBmb3IgKEFwcGxpY2F0aW9uSW5mbyBhcHAgOiBhcHBzKSB7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL25vdGlmaWNhdGlvbi9NYW5hZ2VkU2VydmljZXMuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbm90aWZpY2F0aW9uL01hbmFnZWRTZXJ2aWNlcy5qYXZhCmluZGV4IGQ1NzczNjkuLmI3NjYyZGEgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbm90aWZpY2F0aW9uL01hbmFnZWRTZXJ2aWNlcy5qYXZhCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbm90aWZpY2F0aW9uL01hbmFnZWRTZXJ2aWNlcy5qYXZhCkBAIC00Miw2ICs0Miw3IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5Vc2VyTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CitpbXBvcnQgYW5kcm9pZC51dGlsLkFycmF5TWFwOwogaW1wb3J0IGFuZHJvaWQudXRpbC5BcnJheVNldDsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwpAQCAtNTMsNiArNTQsNyBAQAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5OwogaW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKQEAgLTkzLDYgKzk1LDggQEAKICAgICAvLyBMaXN0IG9mIHBhY2thZ2VzIGluIHJlc3RvcmVkIHNldHRpbmcgYWNyb3NzIGFsbCBtVXNlclByb2ZpbGVzLCBmb3IgcXVpY2sKICAgICAvLyBmaWx0ZXJpbmcgdXBvbiBwYWNrYWdlIHVwZGF0ZXMuCiAgICAgcHJpdmF0ZSBBcnJheVNldDxTdHJpbmc+IG1SZXN0b3JlZFBhY2thZ2VzID0gbmV3IEFycmF5U2V0PD4oKTsKKyAgICAvLyBTdGF0ZSBvZiBjdXJyZW50IHNlcnZpY2UgY2F0ZWdvcmllcworICAgIHByaXZhdGUgQXJyYXlNYXA8U3RyaW5nLCBCb29sZWFuPiBtQ2F0ZWdvcnlFbmFibGVkID0gbmV3IEFycmF5TWFwPD4oKTsKIAogCiAgICAgLy8gS2VwdCB0byBkZS1kdXBlIHVzZXIgY2hhbmdlIGV2ZW50cyAoZXhwZXJpZW5jZWQgYWZ0ZXIgYm9vdCwgd2hlbiB3ZSByZWNlaXZlIGEgc2V0dGluZ3MgYW5kIGEKQEAgLTI2Miw2ICsyNjYsNDYgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyB2b2lkIHNldENhdGVnb3J5U3RhdGUoU3RyaW5nIGNhdGVnb3J5LCBib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTXV0ZXgpIHsKKyAgICAgICAgICAgIGZpbmFsIEJvb2xlYW4gcHJldmlvdXMgPSBtQ2F0ZWdvcnlFbmFibGVkLnB1dChjYXRlZ29yeSwgZW5hYmxlZCk7CisgICAgICAgICAgICBpZiAoIShwcmV2aW91cyA9PSBudWxsIHx8IHByZXZpb3VzICE9IGVuYWJsZWQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdGF0ZSBjaGFuZ2VkCisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAoKGVuYWJsZWQpID8gIkVuYWJsaW5nICIgOiAiRGlzYWJsaW5nICIpICsgImNhdGVnb3J5ICIgKyBjYXRlZ29yeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIGludFtdIHVzZXJJZHMgPSBtVXNlclByb2ZpbGVzLmdldEN1cnJlbnRQcm9maWxlSWRzKCk7CisgICAgICAgICAgICBmb3IgKGludCB1c2VySWQgOiB1c2VySWRzKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU2V0PENvbXBvbmVudE5hbWU+IGNvbXBvbmVudE5hbWVzID0gcXVlcnlQYWNrYWdlRm9yU2VydmljZXMobnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZCwgY2F0ZWdvcnkpOworCisgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgc2VydmljZXMgbm90IGVuYWJsZWQgaW4gU2V0dGluZ3MKKyAgICAgICAgICAgICAgICBmaW5hbCBBcnJheVNldDxDb21wb25lbnROYW1lPiB1c2VyQ29tcG9uZW50cyA9CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcG9uZW50TmFtZXNGcm9tU2V0dGluZyhtQ29uZmlnLnNlY3VyZVNldHRpbmdOYW1lLCB1c2VySWQpOworICAgICAgICAgICAgICAgIGlmICh1c2VyQ29tcG9uZW50cyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZXMucmV0YWluQWxsKHVzZXJDb21wb25lbnRzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkNvbXBvbmVudHMgZm9yIGNhdGVnb3J5ICIgKyBjYXRlZ29yeSArICI6ICIgKyBjb21wb25lbnROYW1lcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoQ29tcG9uZW50TmFtZSBjIDogY29tcG9uZW50TmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU2VydmljZUxvY2tlZChjLCB1c2VySWQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3RlclNlcnZpY2VMb2NrZWQoYywgdXNlcklkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIHJlYnVpbGRSZXN0b3JlZFBhY2thZ2VzKCkgewogICAgICAgICBtUmVzdG9yZWRQYWNrYWdlcy5jbGVhcigpOwpAQCAtMjgzLDkgKzMyNyw5IEBACiAgICAgICAgICAgICBpbnQgdXNlcklkKSB7CiAgICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciBjciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwogICAgICAgICBTdHJpbmcgc2V0dGluZ1ZhbHVlID0gU2V0dGluZ3MuU2VjdXJlLmdldFN0cmluZ0ZvclVzZXIoCi0gICAgICAgICAgICAgICAgY3IsCi0gICAgICAgICAgICAgICAgc2V0dGluZ05hbWUsCi0gICAgICAgICAgICAgICAgdXNlcklkKTsKKyAgICAgICAgICAgIGNyLAorICAgICAgICAgICAgc2V0dGluZ05hbWUsCisgICAgICAgICAgICB1c2VySWQpOwogICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkoc2V0dGluZ1ZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICBTdHJpbmdbXSByZXN0b3JlZCA9IHNldHRpbmdWYWx1ZS5zcGxpdChFTkFCTEVEX1NFUlZJQ0VTX1NFUEFSQVRPUik7CkBAIC0zMTQsMTAgKzM1OCwxMCBAQAogICAgICAgICAgICAgICAgIFRleHRVdGlscy5qb2luKEVOQUJMRURfU0VSVklDRVNfU0VQQVJBVE9SLCBjb21wb25lbnROYW1lcyk7CiAgICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciBjciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwogICAgICAgICBTZXR0aW5ncy5TZWN1cmUucHV0U3RyaW5nRm9yVXNlcigKLSAgICAgICAgICAgICAgICBjciwKLSAgICAgICAgICAgICAgICBzZXR0aW5nTmFtZSwKLSAgICAgICAgICAgICAgICB2YWx1ZSwKLSAgICAgICAgICAgICAgICB1c2VySWQpOworICAgICAgICAgICAgY3IsCisgICAgICAgICAgICBzZXR0aW5nTmFtZSwKKyAgICAgICAgICAgIHZhbHVlLAorICAgICAgICAgICAgdXNlcklkKTsKICAgICB9CiAKICAgICAvKioKQEAgLTMzMywxMiArMzc3LDIwIEBACiAgICAgfQogCiAgICAgcHJvdGVjdGVkIFNldDxDb21wb25lbnROYW1lPiBxdWVyeVBhY2thZ2VGb3JTZXJ2aWNlcyhTdHJpbmcgcGFja2FnZU5hbWUsIGludCB1c2VySWQpIHsKKyAgICAgICAgcmV0dXJuIHF1ZXJ5UGFja2FnZUZvclNlcnZpY2VzKHBhY2thZ2VOYW1lLCB1c2VySWQsIG51bGwpOworICAgIH0KKworICAgIHByb3RlY3RlZCBTZXQ8Q29tcG9uZW50TmFtZT4gcXVlcnlQYWNrYWdlRm9yU2VydmljZXMoU3RyaW5nIHBhY2thZ2VOYW1lLCBpbnQgdXNlcklkLAorICAgICAgICAgICAgU3RyaW5nIGNhdGVnb3J5KSB7CiAgICAgICAgIFNldDxDb21wb25lbnROYW1lPiBpbnN0YWxsZWQgPSBuZXcgQXJyYXlTZXQ8PigpOwogICAgICAgICBmaW5hbCBQYWNrYWdlTWFuYWdlciBwbSA9IG1Db250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgIEludGVudCBxdWVyeUludGVudCA9IG5ldyBJbnRlbnQobUNvbmZpZy5zZXJ2aWNlSW50ZXJmYWNlKTsKICAgICAgICAgaWYgKCFUZXh0VXRpbHMuaXNFbXB0eShwYWNrYWdlTmFtZSkpIHsKICAgICAgICAgICAgIHF1ZXJ5SW50ZW50LnNldFBhY2thZ2UocGFja2FnZU5hbWUpOwogICAgICAgICB9CisgICAgICAgIGlmIChjYXRlZ29yeSAhPSBudWxsKSB7CisgICAgICAgICAgICBxdWVyeUludGVudC5hZGRDYXRlZ29yeShjYXRlZ29yeSk7CisgICAgICAgIH0KICAgICAgICAgTGlzdDxSZXNvbHZlSW5mbz4gaW5zdGFsbGVkU2VydmljZXMgPSBwbS5xdWVyeUludGVudFNlcnZpY2VzQXNVc2VyKAogICAgICAgICAgICAgICAgIHF1ZXJ5SW50ZW50LAogICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLkdFVF9TRVJWSUNFUyB8IFBhY2thZ2VNYW5hZ2VyLkdFVF9NRVRBX0RBVEEsCkBAIC0zNTMsOSArNDA1LDkgQEAKICAgICAgICAgICAgICAgICBDb21wb25lbnROYW1lIGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnROYW1lKGluZm8ucGFja2FnZU5hbWUsIGluZm8ubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFtQ29uZmlnLmJpbmRQZXJtaXNzaW9uLmVxdWFscyhpbmZvLnBlcm1pc3Npb24pKSB7CiAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJTa2lwcGluZyAiICsgZ2V0Q2FwdGlvbigpICsgIiBzZXJ2aWNlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGluZm8ucGFja2FnZU5hbWUgKyAiLyIgKyBpbmZvLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI6IGl0IGRvZXMgbm90IHJlcXVpcmUgdGhlIHBlcm1pc3Npb24gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbUNvbmZpZy5iaW5kUGVybWlzc2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICArIGluZm8ucGFja2FnZU5hbWUgKyAiLyIgKyBpbmZvLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIjogaXQgZG9lcyBub3QgcmVxdWlyZSB0aGUgcGVybWlzc2lvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICArIG1Db25maWcuYmluZFBlcm1pc3Npb24pOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLmFkZChjb21wb25lbnQpOwpAQCAtNDQ5LDYgKzUwMSwxNiBAQAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGZpbmFsIEFycmF5TGlzdDxDb21wb25lbnROYW1lPiBhZGQgPSBuZXcgQXJyYXlMaXN0PD4odXNlckNvbXBvbmVudHMpOworCisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbXBvbmVudHMgZnJvbSBkaXNhYmxlZCBjYXRlZ29yaWVzIHNvIHRoYXQgdGhvc2Ugc2VydmljZXMgYXJlbid0IHJ1bi4KKyAgICAgICAgICAgICAgICBmb3IgKEVudHJ5PFN0cmluZywgQm9vbGVhbj4gZSA6IG1DYXRlZ29yeUVuYWJsZWQuZW50cnlTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWUuZ2V0VmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU2V0PENvbXBvbmVudE5hbWU+IGMgPSBxdWVyeVBhY2thZ2VGb3JTZXJ2aWNlcyhudWxsLCB1c2VySWRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZ2V0S2V5KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkLnJlbW92ZUFsbChjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHRvQWRkLnB1dCh1c2VySWRzW2ldLCBhZGQpOwogCiAgICAgICAgICAgICAgICAgbmV3RW5hYmxlZC5hZGRBbGwodXNlckNvbXBvbmVudHMpOwpAQCAtNDg4LDkzICs1NTAsOTcgQEAKICAgICAgKiBWZXJzaW9uIG9mIHJlZ2lzdGVyU2VydmljZSB0aGF0IHRha2VzIHRoZSBuYW1lIG9mIGEgc2VydmljZSBjb21wb25lbnQgdG8gYmluZCB0by4KICAgICAgKi8KICAgICBwcml2YXRlIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlKGZpbmFsIENvbXBvbmVudE5hbWUgbmFtZSwgZmluYWwgaW50IHVzZXJpZCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1NdXRleCkgeworICAgICAgICAgICAgcmVnaXN0ZXJTZXJ2aWNlTG9ja2VkKG5hbWUsIHVzZXJpZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlTG9ja2VkKGZpbmFsIENvbXBvbmVudE5hbWUgbmFtZSwgZmluYWwgaW50IHVzZXJpZCkgewogICAgICAgICBpZiAoREVCVUcpIFNsb2cudihUQUcsICJyZWdpc3RlclNlcnZpY2U6ICIgKyBuYW1lICsgIiB1PSIgKyB1c2VyaWQpOwogCi0gICAgICAgIHN5bmNocm9uaXplZCAobU11dGV4KSB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgc2VydmljZXNCaW5kaW5nVGFnID0gbmFtZS50b1N0cmluZygpICsgIi8iICsgdXNlcmlkOwotICAgICAgICAgICAgaWYgKG1TZXJ2aWNlc0JpbmRpbmcuY29udGFpbnMoc2VydmljZXNCaW5kaW5nVGFnKSkgewotICAgICAgICAgICAgICAgIC8vIHN0b3AgcmVnaXN0ZXJpbmcgdGhpcyB0aGluZyBhbHJlYWR5ISB3ZSdyZSB3b3JraW5nIG9uIGl0Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbVNlcnZpY2VzQmluZGluZy5hZGQoc2VydmljZXNCaW5kaW5nVGFnKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHNlcnZpY2VzQmluZGluZ1RhZyA9IG5hbWUudG9TdHJpbmcoKSArICIvIiArIHVzZXJpZDsKKyAgICAgICAgaWYgKG1TZXJ2aWNlc0JpbmRpbmcuY29udGFpbnMoc2VydmljZXNCaW5kaW5nVGFnKSkgeworICAgICAgICAgICAgLy8gc3RvcCByZWdpc3RlcmluZyB0aGlzIHRoaW5nIGFscmVhZHkhIHdlJ3JlIHdvcmtpbmcgb24gaXQKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtU2VydmljZXNCaW5kaW5nLmFkZChzZXJ2aWNlc0JpbmRpbmdUYWcpOwogCi0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1TZXJ2aWNlcy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gTiAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgTWFuYWdlZFNlcnZpY2VJbmZvIGluZm8gPSBtU2VydmljZXMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmIChuYW1lLmVxdWFscyhpbmZvLmNvbXBvbmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGluZm8udXNlcmlkID09IHVzZXJpZCkgewotICAgICAgICAgICAgICAgICAgICAvLyBjdXQgb2xkIGNvbm5lY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU2xvZy52KFRBRywgIiAgICBkaXNjb25uZWN0aW5nIG9sZCAiICsgZ2V0Q2FwdGlvbigpICsgIjogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW5mby5zZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2VydmljZUxvY2tlZChpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8uY29ubmVjdGlvbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC51bmJpbmRTZXJ2aWNlKGluZm8uY29ubmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IE4gPSBtU2VydmljZXMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpID0gTiAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBmaW5hbCBNYW5hZ2VkU2VydmljZUluZm8gaW5mbyA9IG1TZXJ2aWNlcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoaW5mby5jb21wb25lbnQpCisgICAgICAgICAgICAgICAgJiYgaW5mby51c2VyaWQgPT0gdXNlcmlkKSB7CisgICAgICAgICAgICAgICAgLy8gY3V0IG9sZCBjb25uZWN0aW9ucworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU2xvZy52KFRBRywgIiAgICBkaXNjb25uZWN0aW5nIG9sZCAiICsgZ2V0Q2FwdGlvbigpICsgIjogIgorICAgICAgICAgICAgICAgICAgICArIGluZm8uc2VydmljZSk7CisgICAgICAgICAgICAgICAgcmVtb3ZlU2VydmljZUxvY2tlZChpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5mby5jb25uZWN0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQudW5iaW5kU2VydmljZShpbmZvLmNvbm5lY3Rpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChtQ29uZmlnLnNlcnZpY2VJbnRlcmZhY2UpOwotICAgICAgICAgICAgaW50ZW50LnNldENvbXBvbmVudChuYW1lKTsKKyAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQobUNvbmZpZy5zZXJ2aWNlSW50ZXJmYWNlKTsKKyAgICAgICAgaW50ZW50LnNldENvbXBvbmVudChuYW1lKTsKIAotICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9DTElFTlRfTEFCRUwsIG1Db25maWcuY2xpZW50TGFiZWwpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0NMSUVOVF9MQUJFTCwgbUNvbmZpZy5jbGllbnRMYWJlbCk7CiAKLSAgICAgICAgICAgIGZpbmFsIFBlbmRpbmdJbnRlbnQgcGVuZGluZ0ludGVudCA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkoCi0gICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LCAwLCBuZXcgSW50ZW50KG1Db25maWcuc2V0dGluZ3NBY3Rpb24pLCAwKTsKLSAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfQ0xJRU5UX0lOVEVOVCwgcGVuZGluZ0ludGVudCk7CisgICAgICAgIGZpbmFsIFBlbmRpbmdJbnRlbnQgcGVuZGluZ0ludGVudCA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkoCisgICAgICAgICAgICBtQ29udGV4dCwgMCwgbmV3IEludGVudChtQ29uZmlnLnNldHRpbmdzQWN0aW9uKSwgMCk7CisgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfQ0xJRU5UX0lOVEVOVCwgcGVuZGluZ0ludGVudCk7CiAKLSAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBhcHBJbmZvID0gbnVsbDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYXBwSW5mbyA9IG1Db250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QXBwbGljYXRpb25JbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5nZXRQYWNrYWdlTmFtZSgpLCAwKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWdub3JlIGlmIHRoZSBwYWNrYWdlIGRvZXNuJ3QgZXhpc3Qgd2Ugd29uJ3QgYmUgYWJsZSB0byBiaW5kIHRvIHRoZSBzZXJ2aWNlLgotICAgICAgICAgICAgfQotICAgICAgICAgICAgZmluYWwgaW50IHRhcmdldFNka1ZlcnNpb24gPQotICAgICAgICAgICAgICAgICAgICBhcHBJbmZvICE9IG51bGwgPyBhcHBJbmZvLnRhcmdldFNka1ZlcnNpb24gOiBCdWlsZC5WRVJTSU9OX0NPREVTLkJBU0U7CisgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBhcHBJbmZvID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGFwcEluZm8gPSBtQ29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldEFwcGxpY2F0aW9uSW5mbygKKyAgICAgICAgICAgICAgICBuYW1lLmdldFBhY2thZ2VOYW1lKCksIDApOworICAgICAgICB9IGNhdGNoIChOYW1lTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gSWdub3JlIGlmIHRoZSBwYWNrYWdlIGRvZXNuJ3QgZXhpc3Qgd2Ugd29uJ3QgYmUgYWJsZSB0byBiaW5kIHRvIHRoZSBzZXJ2aWNlLgorICAgICAgICB9CisgICAgICAgIGZpbmFsIGludCB0YXJnZXRTZGtWZXJzaW9uID0KKyAgICAgICAgICAgIGFwcEluZm8gIT0gbnVsbCA/IGFwcEluZm8udGFyZ2V0U2RrVmVyc2lvbiA6IEJ1aWxkLlZFUlNJT05fQ09ERVMuQkFTRTsKIAotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFNsb2cudihUQUcsICJiaW5kaW5nOiAiICsgaW50ZW50KTsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlQ29ubmVjdGlvbiBzZXJ2aWNlQ29ubmVjdGlvbiA9IG5ldyBTZXJ2aWNlQ29ubmVjdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgSUludGVyZmFjZSBtU2VydmljZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChERUJVRykgU2xvZy52KFRBRywgImJpbmRpbmc6ICIgKyBpbnRlbnQpOworICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb24gc2VydmljZUNvbm5lY3Rpb24gPSBuZXcgU2VydmljZUNvbm5lY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgSUludGVyZmFjZSBtU2VydmljZTsKIAotICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBiaW5kZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gYWRkZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWRTZXJ2aWNlSW5mbyBpbmZvID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobU11dGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2VzQmluZGluZy5yZW1vdmUoc2VydmljZXNCaW5kaW5nVGFnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZSA9IGFzSW50ZXJmYWNlKGJpbmRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gPSBuZXdTZXJ2aWNlSW5mbyhtU2VydmljZSwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQsIGZhbHNlIC8qaXNTeXN0ZW0qLywgdGhpcywgdGFyZ2V0U2RrVmVyc2lvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRlci5saW5rVG9EZWF0aChpbmZvLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWQgPSBtU2VydmljZXMuYWRkKGluZm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgZGVhZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGRlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VydmljZUFkZGVkKGluZm8pOworICAgICAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZUNvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgYmluZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gYWRkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgTWFuYWdlZFNlcnZpY2VJbmZvIGluZm8gPSBudWxsOworICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1NdXRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2VzQmluZGluZy5yZW1vdmUoc2VydmljZXNCaW5kaW5nVGFnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UgPSBhc0ludGVyZmFjZShiaW5kZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gPSBuZXdTZXJ2aWNlSW5mbyhtU2VydmljZSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcmlkLCBmYWxzZSAvKmlzU3lzdGVtKi8sIHRoaXMsIHRhcmdldFNka1ZlcnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRlci5saW5rVG9EZWF0aChpbmZvLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZCA9IG1TZXJ2aWNlcy5hZGQoaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgZGVhZAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZURpc2Nvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudihUQUcsIGdldENhcHRpb24oKSArICIgY29ubmVjdGlvbiBsb3N0OiAiICsgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb25TZXJ2aWNlQWRkZWQoaW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGlmICghbUNvbnRleHQuYmluZFNlcnZpY2VBc1VzZXIoaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUNvbm5lY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkJJTkRfQVVUT19DUkVBVEUgfCBDb250ZXh0LkJJTkRfRk9SRUdST1VORF9TRVJWSUNFLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVzZXJIYW5kbGUodXNlcmlkKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2VzQmluZGluZy5yZW1vdmUoc2VydmljZXNCaW5kaW5nVGFnKTsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVuYWJsZSB0byBiaW5kICIgKyBnZXRDYXB0aW9uKCkgKyAiIHNlcnZpY2U6ICIgKyBpbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiVW5hYmxlIHRvIGJpbmQgIiArIGdldENhcHRpb24oKSArICIgc2VydmljZTogIiArIGludGVudCwgZXgpOworCisgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlRGlzY29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCBnZXRDYXB0aW9uKCkgKyAiIGNvbm5lY3Rpb24gbG9zdDogIiArIG5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBpZiAoIW1Db250ZXh0LmJpbmRTZXJ2aWNlQXNVc2VyKGludGVudCwKKyAgICAgICAgICAgICAgICBzZXJ2aWNlQ29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICBDb250ZXh0LkJJTkRfQVVUT19DUkVBVEUgfCBDb250ZXh0LkJJTkRfRk9SRUdST1VORF9TRVJWSUNFLAorICAgICAgICAgICAgICAgIG5ldyBVc2VySGFuZGxlKHVzZXJpZCkpKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2VzQmluZGluZy5yZW1vdmUoc2VydmljZXNCaW5kaW5nVGFnKTsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGJpbmQgIiArIGdldENhcHRpb24oKSArICIgc2VydmljZTogIiArIGludGVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgIlVuYWJsZSB0byBiaW5kICIgKyBnZXRDYXB0aW9uKCkgKyAiIHNlcnZpY2U6ICIgKyBpbnRlbnQsIGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgzLDIwICs2NDksMjQgQEAKICAgICAgKi8KICAgICBwcml2YXRlIHZvaWQgdW5yZWdpc3RlclNlcnZpY2UoQ29tcG9uZW50TmFtZSBuYW1lLCBpbnQgdXNlcmlkKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAobU11dGV4KSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1TZXJ2aWNlcy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gTiAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgTWFuYWdlZFNlcnZpY2VJbmZvIGluZm8gPSBtU2VydmljZXMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmIChuYW1lLmVxdWFscyhpbmZvLmNvbXBvbmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGluZm8udXNlcmlkID09IHVzZXJpZCkgewotICAgICAgICAgICAgICAgICAgICByZW1vdmVTZXJ2aWNlTG9ja2VkKGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaW5mby5jb25uZWN0aW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQudW5iaW5kU2VydmljZShpbmZvLmNvbm5lY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIGhhcHBlbmVkIHRvIHRoZSBzZXJ2aWNlOiB3ZSB0aGluayB3ZSBoYXZlIGEgY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCdzIGJvZ3VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsIGdldENhcHRpb24oKSArICIgIiArIG5hbWUgKyAiIGNvdWxkIG5vdCBiZSB1bmJvdW5kOiAiICsgZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgdW5yZWdpc3RlclNlcnZpY2VMb2NrZWQobmFtZSwgdXNlcmlkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1bnJlZ2lzdGVyU2VydmljZUxvY2tlZChDb21wb25lbnROYW1lIG5hbWUsIGludCB1c2VyaWQpIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtU2VydmljZXMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpID0gTiAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBmaW5hbCBNYW5hZ2VkU2VydmljZUluZm8gaW5mbyA9IG1TZXJ2aWNlcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoaW5mby5jb21wb25lbnQpCisgICAgICAgICAgICAgICAgJiYgaW5mby51c2VyaWQgPT0gdXNlcmlkKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlU2VydmljZUxvY2tlZChpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5mby5jb25uZWN0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnVuYmluZFNlcnZpY2UoaW5mby5jb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcgaGFwcGVuZWQgdG8gdGhlIHNlcnZpY2U6IHdlIHRoaW5rIHdlIGhhdmUgYSBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgaXQncyBib2d1cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsIGdldENhcHRpb24oKSArICIgIiArIG5hbWUgKyAiIGNvdWxkIG5vdCBiZSB1bmJvdW5kOiAiICsgZXgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9ub3RpZmljYXRpb24vTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbm90aWZpY2F0aW9uL05vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggMGJmYmQ3Zi4uNDlhYTczZSAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9ub3RpZmljYXRpb24vTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL25vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25NYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0xMjQsNiArMTI0LDkgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIubm90aWZpY2F0aW9uLk1hbmFnZWRTZXJ2aWNlcy5NYW5hZ2VkU2VydmljZUluZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLm5vdGlmaWNhdGlvbi5NYW5hZ2VkU2VydmljZXMuVXNlclByb2ZpbGVzOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXNiYXIuU3RhdHVzQmFyTWFuYWdlckludGVybmFsOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci52ci5Wck1hbmFnZXJJbnRlcm5hbDsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIudnIuVnJTdGF0ZUxpc3RlbmVyOworCiBpbXBvcnQgbGliY29yZS5pby5Jb1V0aWxzOwogaW1wb3J0IG9yZy5qc29uLkpTT05BcnJheTsKIGltcG9ydCBvcmcuanNvbi5KU09ORXhjZXB0aW9uOwpAQCAtMjA2LDYgKzIwOSw4IEBACiAgICAgQXVkaW9NYW5hZ2VySW50ZXJuYWwgbUF1ZGlvTWFuYWdlckludGVybmFsOwogICAgIFN0YXR1c0Jhck1hbmFnZXJJbnRlcm5hbCBtU3RhdHVzQmFyOwogICAgIFZpYnJhdG9yIG1WaWJyYXRvcjsKKyAgICBwcml2YXRlIFZyTWFuYWdlckludGVybmFsIG1Wck1hbmFnZXJJbnRlcm5hbDsKKyAgICBwcml2YXRlIGZpbmFsIE5vdGlmaWNhdGlvblZyTGlzdGVuZXIgbVZyTGlzdGVuZXIgPSBuZXcgTm90aWZpY2F0aW9uVnJMaXN0ZW5lcigpOwogCiAgICAgZmluYWwgSUJpbmRlciBtRm9yZWdyb3VuZFRva2VuID0gbmV3IEJpbmRlcigpOwogICAgIHByaXZhdGUgV29ya2VySGFuZGxlciBtSGFuZGxlcjsKQEAgLTgxNiw2ICs4MjEsMTQgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHByaXZhdGUgZmluYWwgY2xhc3MgTm90aWZpY2F0aW9uVnJMaXN0ZW5lciBleHRlbmRzIFZyU3RhdGVMaXN0ZW5lciB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblZyU3RhdGVDaGFuZ2VkKGZpbmFsIGJvb2xlYW4gZW5hYmxlZCkgeworICAgICAgICAgICAgbUxpc3RlbmVycy5zZXRDYXRlZ29yeVN0YXRlKE5vdGlmaWNhdGlvbkxpc3RlbmVyU2VydmljZS5DQVRFR09SWV9WUl9OT1RJRklDQVRJT05TLAorICAgICAgICAgICAgICAgIGVuYWJsZWQpOworICAgICAgICB9CisgICAgfQorCiAgICAgcHJpdmF0ZSBTZXR0aW5nc09ic2VydmVyIG1TZXR0aW5nc09ic2VydmVyOwogICAgIHByaXZhdGUgWmVuTW9kZUhlbHBlciBtWmVuTW9kZUhlbHBlcjsKIApAQCAtMTAwNCw2ICsxMDE3LDggQEAKICAgICAgICAgICAgIC8vIEdyYWIgb3VyIG9wdGlvbmFsIEF1ZGlvU2VydmljZQogICAgICAgICAgICAgbUF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQVVESU9fU0VSVklDRSk7CiAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VySW50ZXJuYWwgPSBnZXRMb2NhbFNlcnZpY2UoQXVkaW9NYW5hZ2VySW50ZXJuYWwuY2xhc3MpOworICAgICAgICAgICAgbVZyTWFuYWdlckludGVybmFsID0gZ2V0TG9jYWxTZXJ2aWNlKFZyTWFuYWdlckludGVybmFsLmNsYXNzKTsKKyAgICAgICAgICAgIG1Wck1hbmFnZXJJbnRlcm5hbC5yZWdpc3Rlckxpc3RlbmVyKG1Wckxpc3RlbmVyKTsKICAgICAgICAgICAgIG1aZW5Nb2RlSGVscGVyLm9uU3lzdGVtUmVhZHkoKTsKICAgICAgICAgfSBlbHNlIGlmIChwaGFzZSA9PSBTeXN0ZW1TZXJ2aWNlLlBIQVNFX1RISVJEX1BBUlRZX0FQUFNfQ0FOX1NUQVJUKSB7CiAgICAgICAgICAgICAvLyBUaGlzIG9ic2VydmVyIHdpbGwgZm9yY2UgYW4gdXBkYXRlIHdoZW4gb2JzZXJ2ZSBpcyBjYWxsZWQsIGNhdXNpbmcgdXMgdG8KQEAgLTEyNTEsMTAgKzEyNjYsMTggQEAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIHNldEFwcEltcG9ydGFuY2UoU3RyaW5nIHBrZywgaW50IHVpZCwgaW50IGltcG9ydGFuY2UpIHsKICAgICAgICAgICAgIGVuZm9yY2VTeXN0ZW1PclN5c3RlbVVJKCJDYWxsZXIgbm90IHN5c3RlbSBvciBzeXN0ZW11aSIpOworICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWRGb3JQYWNrYWdlSW1wbChwa2csIHVpZCwKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW5jZSAhPSBOb3RpZmljYXRpb25MaXN0ZW5lclNlcnZpY2UuUmFua2luZy5JTVBPUlRBTkNFX05PTkUpOwogICAgICAgICAgICAgbVJhbmtpbmdIZWxwZXIuc2V0QXBwSW1wb3J0YW5jZShwa2csIHVpZCwgaW1wb3J0YW5jZSk7CiAgICAgICAgICAgICBzYXZlUG9saWN5RmlsZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGRvZXNBcHBVc2VUb3BpY3MoU3RyaW5nIHBrZywgaW50IHVpZCkgeworICAgICAgICAgICAgZW5mb3JjZVN5c3RlbU9yU3lzdGVtVUkoIkNhbGxlciBub3Qgc3lzdGVtIG9yIHN5c3RlbXVpIik7CisgICAgICAgICAgICByZXR1cm4gbVJhbmtpbmdIZWxwZXIuZG9lc0FwcFVzZVRvcGljcyhwa2csIHVpZCk7CisgICAgICAgIH0KKwogICAgICAgICAvKioKICAgICAgICAgICogU3lzdGVtLW9ubHkgQVBJIGZvciBnZXR0aW5nIGEgbGlzdCBvZiBjdXJyZW50IChpLmUuIG5vdCBjbGVhcmVkKSBub3RpZmljYXRpb25zLgogICAgICAgICAgKgpAQCAtMjY3NCw4ICsyNjk3LDggQEAKICAgICAgICAgICAgICAgICB2aXNpYmlsaXRpZXNbaV0gPSByLmdldFBhY2thZ2VWaXNpYmlsaXR5T3ZlcnJpZGUoKTsKICAgICAgICAgICAgICAgICBtUmFua2luZ0hlbHBlci5leHRyYWN0U2lnbmFscyhyKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1SYW5raW5nSGVscGVyLnNvcnQobU5vdGlmaWNhdGlvbkxpc3QpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBtUmFua2luZ0hlbHBlci5zb3J0KG1Ob3RpZmljYXRpb25MaXN0KTsKICAgICAgICAgICAgICAgICBmaW5hbCBOb3RpZmljYXRpb25SZWNvcmQgciA9IG1Ob3RpZmljYXRpb25MaXN0LmdldChpKTsKICAgICAgICAgICAgICAgICBpZiAoIW9yZGVyQmVmb3JlLmdldChpKS5lcXVhbHMoci5nZXRLZXkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHZpc2liaWxpdGllc1tpXSAhPSByLmdldFBhY2thZ2VWaXNpYmlsaXR5T3ZlcnJpZGUoKSkgewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9ub3RpZmljYXRpb24vUmFua2luZ0NvbmZpZy5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9ub3RpZmljYXRpb24vUmFua2luZ0NvbmZpZy5qYXZhCmluZGV4IGE2YzliMGQuLjliMTBlZjIgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbm90aWZpY2F0aW9uL1JhbmtpbmdDb25maWcuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL25vdGlmaWNhdGlvbi9SYW5raW5nQ29uZmlnLmphdmEKQEAgLTM3LDQgKzM3LDYgQEAKICAgICBpbnQgZ2V0VG9waWNJbXBvcnRhbmNlKFN0cmluZyBwYWNrYWdlTmFtZSwgaW50IHVpZCwgTm90aWZpY2F0aW9uLlRvcGljIHRvcGljKTsKIAogICAgIHZvaWQgc2V0QXBwSW1wb3J0YW5jZShTdHJpbmcgcGFja2FnZU5hbWUsIGludCB1aWQsIGludCBpbXBvcnRhbmNlKTsKKworICAgIGJvb2xlYW4gZG9lc0FwcFVzZVRvcGljcyhTdHJpbmcgcGFja2FnZU5hbWUsIGludCB1aWQpOwogfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9ub3RpZmljYXRpb24vUmFua2luZ0hlbHBlci5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9ub3RpZmljYXRpb24vUmFua2luZ0hlbHBlci5qYXZhCmluZGV4IDMyYzBjZTIuLjMyODdmNjcgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbm90aWZpY2F0aW9uL1JhbmtpbmdIZWxwZXIuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL25vdGlmaWNhdGlvbi9SYW5raW5nSGVscGVyLmphdmEKQEAgLTE3MCw2ICsxNzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZ2V0T3JDcmVhdGVSZWNvcmQobmFtZSwgdWlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHIuaW1wb3J0YW5jZSA9IHNhZmVJbnQocGFyc2VyLCBBVFRfSU1QT1JUQU5DRSwgREVGQVVMVF9JTVBPUlRBTkNFKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlncmF0ZSBwYWNrYWdlIGxldmVsIHNldHRpbmdzIHRvIHRoZSBkZWZhdWx0IHRvcGljLgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlnaHQgYmUgb3ZlcndyaXR0ZW4gYnkgcGFyc2VUb3BpY3MuCkBAIC00NDEsNiArNDQyLDE4IEBACiAgICAgICAgIHVwZGF0ZUNvbmZpZygpOwogICAgIH0KIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGRvZXNBcHBVc2VUb3BpY3MoU3RyaW5nIHBrZ05hbWUsIGludCB1aWQpIHsKKyAgICAgICAgZmluYWwgUmVjb3JkIHIgPSBnZXRPckNyZWF0ZVJlY29yZChwa2dOYW1lLCB1aWQpOworICAgICAgICBpbnQgbnVtVG9waWNzID0gci50b3BpY3Muc2l6ZSgpOworICAgICAgICBpZiAobnVtVG9waWNzID09IDAKKyAgICAgICAgICAgICAgICB8fCAobnVtVG9waWNzID09IDEgJiYgci50b3BpY3MuY29udGFpbnNLZXkoTm90aWZpY2F0aW9uLlRPUElDX0RFRkFVTFQpKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBwcml2YXRlIFRvcGljIGdldE9yQ3JlYXRlVG9waWMoUmVjb3JkIHIsIE5vdGlmaWNhdGlvbi5Ub3BpYyB0b3BpYykgewogICAgICAgICBpZiAodG9waWMgPT0gbnVsbCkgewogICAgICAgICAgICAgdG9waWMgPSBjcmVhdGVEZWZhdWx0VG9waWMoKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vRGVmYXVsdFBlcm1pc3Npb25HcmFudFBvbGljeS5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wbS9EZWZhdWx0UGVybWlzc2lvbkdyYW50UG9saWN5LmphdmEKaW5kZXggMDczYjRmMDMuLmIyNTRmMjkgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vRGVmYXVsdFBlcm1pc3Npb25HcmFudFBvbGljeS5qYXZhCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vRGVmYXVsdFBlcm1pc3Npb25HcmFudFBvbGljeS5qYXZhCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJEZWZhdWx0UGVybUdyYW50UG9saWN5IjsgLy8gbXVzdCBiZSA8PSAyMyBjaGFycwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0ZMQUdTID0gUGFja2FnZU1hbmFnZXIuR0VUX0VOQ1JZUFRJT05fVU5BV0FSRV9DT01QT05FTlRTOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0ZMQUdTID0gUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9BTkRfVU5BV0FSRTsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVURJT19NSU1FX1RZUEUgPSAiYXVkaW8vbXBlZyI7CiAKQEAgLTU5NCw2ICs1OTQsMTQgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIC8vIFByaW50IFNwb29sZXIKKyAgICAgICAgICAgIFBhY2thZ2VQYXJzZXIuUGFja2FnZSBwcmludFNwb29sZXJQYWNrYWdlID0gZ2V0U3lzdGVtUGFja2FnZUxQcigKKyAgICAgICAgICAgICAgICAgICAgImNvbS5hbmRyb2lkLnByaW50c3Bvb2xlciIpOworICAgICAgICAgICAgaWYgKHByaW50U3Bvb2xlclBhY2thZ2UgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAmJiBkb2VzUGFja2FnZVN1cHBvcnRSdW50aW1lUGVybWlzc2lvbnMocHJpbnRTcG9vbGVyUGFja2FnZSkpIHsKKyAgICAgICAgICAgICAgICBncmFudFJ1bnRpbWVQZXJtaXNzaW9uc0xQdyhwcmludFNwb29sZXJQYWNrYWdlLCBMT0NBVElPTl9QRVJNSVNTSU9OUywgdHJ1ZSwgdXNlcklkKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbVNlcnZpY2UubVNldHRpbmdzLm9uRGVmYXVsdFJ1bnRpbWVQZXJtaXNzaW9uc0dyYW50ZWRMUHIodXNlcklkKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vUGFja2FnZU1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3BtL1BhY2thZ2VNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IGRmYjAxZWIuLjdiYjZkMWQgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vUGFja2FnZU1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wbS9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtNTQsMTAgKzU0LDEwIEBACiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5JTlNUQUxMX0lOVEVSTkFMOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuSU5TVEFMTF9QQVJTRV9GQUlMRURfSU5DT05TSVNURU5UX0NFUlRJRklDQVRFUzsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLklOVEVOVF9GSUxURVJfRE9NQUlOX1ZFUklGSUNBVElPTl9TVEFUVVNfQUxXQVlTOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuSU5URU5UX0ZJTFRFUl9ET01BSU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19BTFdBWVNfQVNLOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuSU5URU5UX0ZJTFRFUl9ET01BSU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19BU0s7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5JTlRFTlRfRklMVEVSX0RPTUFJTl9WRVJJRklDQVRJT05fU1RBVFVTX05FVkVSOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuSU5URU5UX0ZJTFRFUl9ET01BSU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19VTkRFRklORUQ7Ci1pbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5JTlRFTlRfRklMVEVSX0RPTUFJTl9WRVJJRklDQVRJT05fU1RBVFVTX0FMV0FZU19BU0s7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5NQVRDSF9BTEw7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5NT1ZFX0ZBSUxFRF9ET0VTTlRfRVhJU1Q7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5NT1ZFX0ZBSUxFRF9JTlRFUk5BTF9FUlJPUjsKQEAgLTcxLDYgKzcxLDcgQEAKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5UcmFjZS5UUkFDRV9UQUdfUEFDS0FHRV9NQU5BR0VSOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnN5c3RlbS5Pc0NvbnN0YW50cy5PX0NSRUFUOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnN5c3RlbS5Pc0NvbnN0YW50cy5PX1JEV1I7CisKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkludGVudEZvcndhcmRlckFjdGl2aXR5LkZPUldBUkRfSU5URU5UX1RPX01BTkFHRURfUFJPRklMRTsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkludGVudEZvcndhcmRlckFjdGl2aXR5LkZPUldBUkRfSU5URU5UX1RPX1BBUkVOVDsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwuY29udGVudC5OYXRpdmVMaWJyYXJ5SGVscGVyLkxJQjY0X0RJUl9OQU1FOwpAQCAtMTA1LDggKzEwNiw5IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBzUXVlcnlIZWxwZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkVwaGVtZXJhbFJlc29sdmVJbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5FcGhlbWVyYWxBcHBsaWNhdGlvbkluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkVwaGVtZXJhbFJlc29sdmVJbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5FcGhlbWVyYWxSZXNvbHZlSW5mby5FcGhlbWVyYWxSZXNvbHZlSW50ZW50SW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklPblBlcm1pc3Npb25zQ2hhbmdlTGlzdGVuZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlRGF0YU9ic2VydmVyOwpAQCAtMTQ1LDE1ICsxNDcsMTQgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uVmVyaWZpY2F0aW9uUGFyYW1zOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5WZXJpZmllckRldmljZUlkZW50aXR5OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5WZXJpZmllckluZm87Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkVwaGVtZXJhbFJlc29sdmVJbmZvLkVwaGVtZXJhbFJlc29sdmVJbnRlbnRJbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuZGlzcGxheS5EaXNwbGF5TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7Ci1pbXBvcnQgYW5kcm9pZC5vcy5EZWJ1ZzsKIGltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1aWxkOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRGVidWc7CiBpbXBvcnQgYW5kcm9pZC5vcy5FbnZpcm9ubWVudDsKIGltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50LlVzZXJFbnZpcm9ubWVudDsKIGltcG9ydCBhbmRyb2lkLm9zLkZpbGVVdGlsczsKQEAgLTIwNCwxNSArMjA1LDkgQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuWG1sOwogaW1wb3J0IGFuZHJvaWQudmlldy5EaXNwbGF5OwogCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYW5ub3RhdGlvbnMuR3VhcmRlZEJ5OwotaW1wb3J0IGRhbHZpay5zeXN0ZW0uRGV4RmlsZTsKLWltcG9ydCBkYWx2aWsuc3lzdGVtLlZNUnVudGltZTsKLQotaW1wb3J0IGxpYmNvcmUuaW8uSW9VdGlsczsKLWltcG9ydCBsaWJjb3JlLnV0aWwuRW1wdHlBcnJheTsKLQogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLlI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYW5ub3RhdGlvbnMuR3VhcmRlZEJ5OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFubm90YXRpb25zLkd1YXJkZWRCeTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSU1lZGlhQ29udGFpbmVyU2VydmljZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuUmVzb2x2ZXJBY3Rpdml0eTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5jb250ZW50Lk5hdGl2ZUxpYnJhcnlIZWxwZXI7CkBAIC0yMzcsNiArMjMyLDEyIEBACiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnBtLlNldHRpbmdzLlZlcnNpb25JbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdG9yYWdlLkRldmljZVN0b3JhZ2VNb25pdG9ySW50ZXJuYWw7CiAKK2ltcG9ydCBkYWx2aWsuc3lzdGVtLkRleEZpbGU7CitpbXBvcnQgZGFsdmlrLnN5c3RlbS5WTVJ1bnRpbWU7CisKK2ltcG9ydCBsaWJjb3JlLmlvLklvVXRpbHM7CitpbXBvcnQgbGliY29yZS51dGlsLkVtcHR5QXJyYXk7CisKIGltcG9ydCBvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyOwogaW1wb3J0IG9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb247CiBpbXBvcnQgb3JnLnhtbHB1bGwudjEuWG1sU2VyaWFsaXplcjsKQEAgLTMwNyw2ICszMDgsNyBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfREVYT1BUID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19BQklfU0VMRUNUSU9OID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19FUEhFTUVSQUwgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0VOQ1JZUFRJT05fQVdBUkUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIENMRUFSX1JVTlRJTUVfUEVSTUlTU0lPTlNfT05fVVBHUkFERSA9IGZhbHNlOwogCkBAIC0zMTgzLDkgKzMxODUsMzUgQEAKICAgICAgKiBBdWdtZW50IHRoZSBnaXZlbiBmbGFncyBkZXBlbmRpbmcgb24gY3VycmVudCB1c2VyIHJ1bm5pbmcgc3RhdGUuIFRoaXMgaXMKICAgICAgKiBwdXJwb3NlZnVsbHkgZG9uZSBiZWZvcmUgYWNxdWlyaW5nIHtAbGluayAjbVBhY2thZ2VzfSBsb2NrLgogICAgICAqLwotICAgIHByaXZhdGUgaW50IGF1Z21lbnRGbGFnc0ZvclVzZXIoaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7Ci0gICAgICAgIGlmICghaXNVc2VyS2V5VW5sb2NrZWQodXNlcklkKSkgewotICAgICAgICAgICAgZmxhZ3MgfD0gUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9PTkxZOworICAgIHByaXZhdGUgaW50IGF1Z21lbnRGbGFnc0ZvclVzZXIoaW50IGZsYWdzLCBpbnQgdXNlcklkLCBPYmplY3QgY29va2llKSB7CisgICAgICAgIGlmIChjb29raWUgaW5zdGFuY2VvZiBJbnRlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIGludGVudCBjbGFpbXMgdG8gYmUgdHJpYWdlZCwgdGhlbiB3ZSdyZSBmaW5lIHdpdGggZGVmYXVsdAorICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYmVoYXZpb3IgYmVsb3cKKyAgICAgICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSAoSW50ZW50KSBjb29raWU7CisgICAgICAgICAgICBpZiAoKGludGVudC5nZXRGbGFncygpICYgSW50ZW50LkZMQUdfREVCVUdfRU5DUllQVElPTl9UUklBR0VEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9ERUZBVUxUOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKChmbGFncyAmIChQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX1VOQVdBUkVfT05MWQorICAgICAgICAgICAgICAgIHwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9BV0FSRV9PTkxZKSkgIT0gMCkgeworICAgICAgICAgICAgLy8gQ2FsbGVyIGV4cHJlc3NlZCBhbiBvcGluaW9uIGFib3V0IHdoYXQgY29tcG9uZW50cyB0aGV5IHdhbnQgdG8KKyAgICAgICAgICAgIC8vIHNlZSwgc28gZmFsbCB0aHJvdWdoIGFuZCBnaXZlIHRoZW0gd2hhdCB0aGV5IHdhbnQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENhbGxlciBleHByZXNzZWQgbm8gb3Bpbmlvbiwgc28gbWF0Y2ggYmFzZWQgb24gdXNlciBzdGF0ZQorICAgICAgICAgICAgaWYgKGlzVXNlcktleVVubG9ja2VkKHVzZXJJZCkpIHsKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0FXQVJFX0FORF9VTkFXQVJFOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0FXQVJFX09OTFk7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc3lzdGVtIGNhbGxlciB0aGF0IGhhc24ndCBkb25lIHRoZWlyIGhvbWV3b3JrIHRvCisgICAgICAgICAgICAgICAgLy8gZGVjaWRlIHRoZXkgd2FudCB0aGlzIGRlZmF1bHQgYmVoYXZpb3IsIHllbGwgYXQgdGhlbQorICAgICAgICAgICAgICAgIGlmIChERUJVR19FTkNSWVBUSU9OX0FXQVJFICYmIChCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpID09IFByb2Nlc3MuU1lTVEVNX1VJRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICgoZmxhZ3MgJiBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0RFRkFVTFQpID09IDApKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy52KFRBRywgIkNhbGxlciBoYXNuJ3QgYmVlbiB0cmlhZ2VkIGZvciBGQkU7IHRoZXkgYXNrZWQgYWJvdXQgIiArIGNvb2tpZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGhyb3dhYmxlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmxhZ3M7CiAgICAgfQpAQCAtMzE5MywxMyArMzIyMSwxMyBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBBY3Rpdml0eUluZm8gZ2V0QWN0aXZpdHlJbmZvKENvbXBvbmVudE5hbWUgY29tcG9uZW50LCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBjb21wb25lbnQpOwogICAgICAgICBlbmZvcmNlQ3Jvc3NVc2VyUGVybWlzc2lvbihCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCB1c2VySWQsIGZhbHNlLCBmYWxzZSwgImdldCBhY3Rpdml0eSBpbmZvIik7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7CiAgICAgICAgICAgICBQYWNrYWdlUGFyc2VyLkFjdGl2aXR5IGEgPSBtQWN0aXZpdGllcy5tQWN0aXZpdGllcy5nZXQoY29tcG9uZW50KTsKIAogICAgICAgICAgICAgaWYgKERFQlVHX1BBQ0tBR0VfSU5GTykgTG9nLnYoVEFHLCAiZ2V0QWN0aXZpdHlJbmZvICIgKyBjb21wb25lbnQgKyAiOiAiICsgYSk7Ci0gICAgICAgICAgICBpZiAoYSAhPSBudWxsICYmIG1TZXR0aW5ncy5pc0VuYWJsZWRBbmRWaXNpYmxlTFByKGEuaW5mbywgZmxhZ3MsIHVzZXJJZCkpIHsKKyAgICAgICAgICAgIGlmIChhICE9IG51bGwgJiYgbVNldHRpbmdzLmlzRW5hYmxlZEFuZE1hdGNoTFByKGEuaW5mbywgZmxhZ3MsIHVzZXJJZCkpIHsKICAgICAgICAgICAgICAgICBQYWNrYWdlU2V0dGluZyBwcyA9IG1TZXR0aW5ncy5tUGFja2FnZXMuZ2V0KGNvbXBvbmVudC5nZXRQYWNrYWdlTmFtZSgpKTsKICAgICAgICAgICAgICAgICBpZiAocHMgPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFBhY2thZ2VQYXJzZXIuZ2VuZXJhdGVBY3Rpdml0eUluZm8oYSwgZmxhZ3MsIHBzLnJlYWRVc2VyU3RhdGUodXNlcklkKSwKQEAgLTMyMzgsMTMgKzMyNjYsMTMgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgQWN0aXZpdHlJbmZvIGdldFJlY2VpdmVySW5mbyhDb21wb25lbnROYW1lIGNvbXBvbmVudCwgaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7CiAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKSByZXR1cm4gbnVsbDsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOworICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCwgY29tcG9uZW50KTsKICAgICAgICAgZW5mb3JjZUNyb3NzVXNlclBlcm1pc3Npb24oQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBmYWxzZSwgZmFsc2UsICJnZXQgcmVjZWl2ZXIgaW5mbyIpOwogICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYWNrYWdlcykgewogICAgICAgICAgICAgUGFja2FnZVBhcnNlci5BY3Rpdml0eSBhID0gbVJlY2VpdmVycy5tQWN0aXZpdGllcy5nZXQoY29tcG9uZW50KTsKICAgICAgICAgICAgIGlmIChERUJVR19QQUNLQUdFX0lORk8pIExvZy52KAogICAgICAgICAgICAgICAgIFRBRywgImdldFJlY2VpdmVySW5mbyAiICsgY29tcG9uZW50ICsgIjogIiArIGEpOwotICAgICAgICAgICAgaWYgKGEgIT0gbnVsbCAmJiBtU2V0dGluZ3MuaXNFbmFibGVkQW5kVmlzaWJsZUxQcihhLmluZm8sIGZsYWdzLCB1c2VySWQpKSB7CisgICAgICAgICAgICBpZiAoYSAhPSBudWxsICYmIG1TZXR0aW5ncy5pc0VuYWJsZWRBbmRNYXRjaExQcihhLmluZm8sIGZsYWdzLCB1c2VySWQpKSB7CiAgICAgICAgICAgICAgICAgUGFja2FnZVNldHRpbmcgcHMgPSBtU2V0dGluZ3MubVBhY2thZ2VzLmdldChjb21wb25lbnQuZ2V0UGFja2FnZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHBzID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgIHJldHVybiBQYWNrYWdlUGFyc2VyLmdlbmVyYXRlQWN0aXZpdHlJbmZvKGEsIGZsYWdzLCBwcy5yZWFkVXNlclN0YXRlKHVzZXJJZCksCkBAIC0zMjU3LDEzICszMjg1LDEzIEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNlcnZpY2VJbmZvIGdldFNlcnZpY2VJbmZvKENvbXBvbmVudE5hbWUgY29tcG9uZW50LCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBjb21wb25lbnQpOwogICAgICAgICBlbmZvcmNlQ3Jvc3NVc2VyUGVybWlzc2lvbihCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCB1c2VySWQsIGZhbHNlLCBmYWxzZSwgImdldCBzZXJ2aWNlIGluZm8iKTsKICAgICAgICAgc3luY2hyb25pemVkIChtUGFja2FnZXMpIHsKICAgICAgICAgICAgIFBhY2thZ2VQYXJzZXIuU2VydmljZSBzID0gbVNlcnZpY2VzLm1TZXJ2aWNlcy5nZXQoY29tcG9uZW50KTsKICAgICAgICAgICAgIGlmIChERUJVR19QQUNLQUdFX0lORk8pIExvZy52KAogICAgICAgICAgICAgICAgIFRBRywgImdldFNlcnZpY2VJbmZvICIgKyBjb21wb25lbnQgKyAiOiAiICsgcyk7Ci0gICAgICAgICAgICBpZiAocyAhPSBudWxsICYmIG1TZXR0aW5ncy5pc0VuYWJsZWRBbmRWaXNpYmxlTFByKHMuaW5mbywgZmxhZ3MsIHVzZXJJZCkpIHsKKyAgICAgICAgICAgIGlmIChzICE9IG51bGwgJiYgbVNldHRpbmdzLmlzRW5hYmxlZEFuZE1hdGNoTFByKHMuaW5mbywgZmxhZ3MsIHVzZXJJZCkpIHsKICAgICAgICAgICAgICAgICBQYWNrYWdlU2V0dGluZyBwcyA9IG1TZXR0aW5ncy5tUGFja2FnZXMuZ2V0KGNvbXBvbmVudC5nZXRQYWNrYWdlTmFtZSgpKTsKICAgICAgICAgICAgICAgICBpZiAocHMgPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFBhY2thZ2VQYXJzZXIuZ2VuZXJhdGVTZXJ2aWNlSW5mbyhzLCBmbGFncywgcHMucmVhZFVzZXJTdGF0ZSh1c2VySWQpLApAQCAtMzI3NiwxMyArMzMwNCwxMyBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBQcm92aWRlckluZm8gZ2V0UHJvdmlkZXJJbmZvKENvbXBvbmVudE5hbWUgY29tcG9uZW50LCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBjb21wb25lbnQpOwogICAgICAgICBlbmZvcmNlQ3Jvc3NVc2VyUGVybWlzc2lvbihCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpLCB1c2VySWQsIGZhbHNlLCBmYWxzZSwgImdldCBwcm92aWRlciBpbmZvIik7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7CiAgICAgICAgICAgICBQYWNrYWdlUGFyc2VyLlByb3ZpZGVyIHAgPSBtUHJvdmlkZXJzLm1Qcm92aWRlcnMuZ2V0KGNvbXBvbmVudCk7CiAgICAgICAgICAgICBpZiAoREVCVUdfUEFDS0FHRV9JTkZPKSBMb2cudigKICAgICAgICAgICAgICAgICBUQUcsICJnZXRQcm92aWRlckluZm8gIiArIGNvbXBvbmVudCArICI6ICIgKyBwKTsKLSAgICAgICAgICAgIGlmIChwICE9IG51bGwgJiYgbVNldHRpbmdzLmlzRW5hYmxlZEFuZFZpc2libGVMUHIocC5pbmZvLCBmbGFncywgdXNlcklkKSkgeworICAgICAgICAgICAgaWYgKHAgIT0gbnVsbCAmJiBtU2V0dGluZ3MuaXNFbmFibGVkQW5kTWF0Y2hMUHIocC5pbmZvLCBmbGFncywgdXNlcklkKSkgewogICAgICAgICAgICAgICAgIFBhY2thZ2VTZXR0aW5nIHBzID0gbVNldHRpbmdzLm1QYWNrYWdlcy5nZXQoY29tcG9uZW50LmdldFBhY2thZ2VOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChwcyA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICByZXR1cm4gUGFja2FnZVBhcnNlci5nZW5lcmF0ZVByb3ZpZGVySW5mbyhwLCBmbGFncywgcHMucmVhZFVzZXJTdGF0ZSh1c2VySWQpLApAQCAtNDQwMSw3ICs0NDI5LDcgQEAKICAgICBwdWJsaWMgUmVzb2x2ZUluZm8gcmVzb2x2ZUludGVudChJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLAogICAgICAgICAgICAgaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7CiAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKSByZXR1cm4gbnVsbDsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOworICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCwgaW50ZW50KTsKICAgICAgICAgZW5mb3JjZUNyb3NzVXNlclBlcm1pc3Npb24oQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBmYWxzZSwgZmFsc2UsICJyZXNvbHZlIGludGVudCIpOwogICAgICAgICBMaXN0PFJlc29sdmVJbmZvPiBxdWVyeSA9IHF1ZXJ5SW50ZW50QWN0aXZpdGllcyhpbnRlbnQsIHJlc29sdmVkVHlwZSwgZmxhZ3MsIHVzZXJJZCk7CiAgICAgICAgIGZpbmFsIFJlc29sdmVJbmZvIGJlc3RDaG9pY2UgPQpAQCAtNDY1OSw3ICs0Njg3LDcgQEAKICAgICAgICAgICAgIExpc3Q8UmVzb2x2ZUluZm8+IHF1ZXJ5LCBpbnQgcHJpb3JpdHksIGJvb2xlYW4gYWx3YXlzLAogICAgICAgICAgICAgYm9vbGVhbiByZW1vdmVNYXRjaGVzLCBib29sZWFuIGRlYnVnLCBpbnQgdXNlcklkKSB7CiAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKSByZXR1cm4gbnVsbDsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOworICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCwgaW50ZW50KTsKICAgICAgICAgLy8gd3JpdGVyCiAgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7CiAgICAgICAgICAgICBpZiAoaW50ZW50LmdldFNlbGVjdG9yKCkgIT0gbnVsbCkgewpAQCAtNDg1OCw3ICs0ODg2LDcgQEAKICAgICBwdWJsaWMgTGlzdDxSZXNvbHZlSW5mbz4gcXVlcnlJbnRlbnRBY3Rpdml0aWVzKEludGVudCBpbnRlbnQsCiAgICAgICAgICAgICBTdHJpbmcgcmVzb2x2ZWRUeXBlLCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOworICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCwgaW50ZW50KTsKICAgICAgICAgZW5mb3JjZUNyb3NzVXNlclBlcm1pc3Npb24oQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBmYWxzZSwgZmFsc2UsICJxdWVyeSBpbnRlbnQgYWN0aXZpdGllcyIpOwogICAgICAgICBDb21wb25lbnROYW1lIGNvbXAgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCk7CiAgICAgICAgIGlmIChjb21wID09IG51bGwpIHsKQEAgLTUzNDIsNyArNTM3MCw3IEBACiAgICAgICAgICAgICBJbnRlbnRbXSBzcGVjaWZpY3MsIFN0cmluZ1tdIHNwZWNpZmljVHlwZXMsIEludGVudCBpbnRlbnQsCiAgICAgICAgICAgICBTdHJpbmcgcmVzb2x2ZWRUeXBlLCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOworICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCwgaW50ZW50KTsKICAgICAgICAgZW5mb3JjZUNyb3NzVXNlclBlcm1pc3Npb24oQmluZGVyLmdldENhbGxpbmdVaWQoKSwgdXNlcklkLCBmYWxzZSwKICAgICAgICAgICAgICAgICBmYWxzZSwgInF1ZXJ5IGludGVudCBhY3Rpdml0eSBvcHRpb25zIik7CiAgICAgICAgIGZpbmFsIFN0cmluZyByZXN1bHRzQWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOwpAQCAtNTUxNSw3ICs1NTQzLDcgQEAKICAgICBwdWJsaWMgTGlzdDxSZXNvbHZlSW5mbz4gcXVlcnlJbnRlbnRSZWNlaXZlcnMoSW50ZW50IGludGVudCwgU3RyaW5nIHJlc29sdmVkVHlwZSwgaW50IGZsYWdzLAogICAgICAgICAgICAgaW50IHVzZXJJZCkgewogICAgICAgICBpZiAoIXNVc2VyTWFuYWdlci5leGlzdHModXNlcklkKSkgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBpbnRlbnQpOwogICAgICAgICBDb21wb25lbnROYW1lIGNvbXAgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCk7CiAgICAgICAgIGlmIChjb21wID09IG51bGwpIHsKICAgICAgICAgICAgIGlmIChpbnRlbnQuZ2V0U2VsZWN0b3IoKSAhPSBudWxsKSB7CkBAIC01NTUyLDcgKzU1ODAsNyBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBSZXNvbHZlSW5mbyByZXNvbHZlU2VydmljZShJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBpbnRlbnQpOwogICAgICAgICBMaXN0PFJlc29sdmVJbmZvPiBxdWVyeSA9IHF1ZXJ5SW50ZW50U2VydmljZXMoaW50ZW50LCByZXNvbHZlZFR5cGUsIGZsYWdzLCB1c2VySWQpOwogICAgICAgICBpZiAocXVlcnkgIT0gbnVsbCkgewogICAgICAgICAgICAgaWYgKHF1ZXJ5LnNpemUoKSA+PSAxKSB7CkBAIC01NTY4LDcgKzU1OTYsNyBAQAogICAgIHB1YmxpYyBMaXN0PFJlc29sdmVJbmZvPiBxdWVyeUludGVudFNlcnZpY2VzKEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsIGludCBmbGFncywKICAgICAgICAgICAgIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOworICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCwgaW50ZW50KTsKICAgICAgICAgQ29tcG9uZW50TmFtZSBjb21wID0gaW50ZW50LmdldENvbXBvbmVudCgpOwogICAgICAgICBpZiAoY29tcCA9PSBudWxsKSB7CiAgICAgICAgICAgICBpZiAoaW50ZW50LmdldFNlbGVjdG9yKCkgIT0gbnVsbCkgewpAQCAtNTYwNiw3ICs1NjM0LDcgQEAKICAgICBwdWJsaWMgTGlzdDxSZXNvbHZlSW5mbz4gcXVlcnlJbnRlbnRDb250ZW50UHJvdmlkZXJzKAogICAgICAgICAgICAgSW50ZW50IGludGVudCwgU3RyaW5nIHJlc29sdmVkVHlwZSwgaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7CiAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKSByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCk7Ci0gICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkKTsKKyAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQsIGludGVudCk7CiAgICAgICAgIENvbXBvbmVudE5hbWUgY29tcCA9IGludGVudC5nZXRDb21wb25lbnQoKTsKICAgICAgICAgaWYgKGNvbXAgPT0gbnVsbCkgewogICAgICAgICAgICAgaWYgKGludGVudC5nZXRTZWxlY3RvcigpICE9IG51bGwpIHsKQEAgLTU3MjMsNyArNTc1MSw2IEBACiAgICAgcHVibGljIFBhcmNlbGVkTGlzdFNsaWNlPFBhY2thZ2VJbmZvPiBnZXRQYWNrYWdlc0hvbGRpbmdQZXJtaXNzaW9ucygKICAgICAgICAgICAgIFN0cmluZ1tdIHBlcm1pc3Npb25zLCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CiAgICAgICAgIGZpbmFsIGJvb2xlYW4gbGlzdFVuaW5zdGFsbGVkID0gKGZsYWdzICYgUGFja2FnZU1hbmFnZXIuR0VUX1VOSU5TVEFMTEVEX1BBQ0tBR0VTKSAhPSAwOwogCiAgICAgICAgIC8vIHdyaXRlcgpAQCAtNTc1MSw3ICs1Nzc4LDYgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgUGFyY2VsZWRMaXN0U2xpY2U8QXBwbGljYXRpb25JbmZvPiBnZXRJbnN0YWxsZWRBcHBsaWNhdGlvbnMoaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7CiAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKSByZXR1cm4gbnVsbDsKLSAgICAgICAgZmxhZ3MgPSBhdWdtZW50RmxhZ3NGb3JVc2VyKGZsYWdzLCB1c2VySWQpOwogICAgICAgICBmaW5hbCBib29sZWFuIGxpc3RVbmluc3RhbGxlZCA9IChmbGFncyAmIFBhY2thZ2VNYW5hZ2VyLkdFVF9VTklOU1RBTExFRF9QQUNLQUdFUykgIT0gMDsKIAogICAgICAgICAvLyB3cml0ZXIKQEAgLTU4OTQsNyArNTkyMCw3IEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFByb3ZpZGVySW5mbyByZXNvbHZlQ29udGVudFByb3ZpZGVyKFN0cmluZyBuYW1lLCBpbnQgZmxhZ3MsIGludCB1c2VySWQpIHsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBuYW1lKTsKICAgICAgICAgLy8gcmVhZGVyCiAgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7CiAgICAgICAgICAgICBmaW5hbCBQYWNrYWdlUGFyc2VyLlByb3ZpZGVyIHByb3ZpZGVyID0gbVByb3ZpZGVyc0J5QXV0aG9yaXR5LmdldChuYW1lKTsKQEAgLTU5MDIsNyArNTkyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgID8gbVNldHRpbmdzLm1QYWNrYWdlcy5nZXQocHJvdmlkZXIub3duZXIucGFja2FnZU5hbWUpCiAgICAgICAgICAgICAgICAgICAgIDogbnVsbDsKICAgICAgICAgICAgIHJldHVybiBwcyAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmIG1TZXR0aW5ncy5pc0VuYWJsZWRBbmRWaXNpYmxlTFByKHByb3ZpZGVyLmluZm8sIGZsYWdzLCB1c2VySWQpCisgICAgICAgICAgICAgICAgICAgICYmIG1TZXR0aW5ncy5pc0VuYWJsZWRBbmRNYXRjaExQcihwcm92aWRlci5pbmZvLCBmbGFncywgdXNlcklkKQogICAgICAgICAgICAgICAgICAgICAmJiAoIW1TYWZlTW9kZSB8fCAocHJvdmlkZXIuaW5mby5hcHBsaWNhdGlvbkluZm8uZmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQXBwbGljYXRpb25JbmZvLkZMQUdfU1lTVEVNKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICA/IFBhY2thZ2VQYXJzZXIuZ2VuZXJhdGVQcm92aWRlckluZm8ocHJvdmlkZXIsIGZsYWdzLApAQCAtNTk0Niw3ICs1OTcyLDcgQEAKICAgICAgICAgZmluYWwgaW50IHVzZXJJZCA9IHByb2Nlc3NOYW1lICE9IG51bGwgPyBVc2VySGFuZGxlLmdldFVzZXJJZCh1aWQpCiAgICAgICAgICAgICAgICAgOiBVc2VySGFuZGxlLmdldENhbGxpbmdVc2VySWQoKTsKICAgICAgICAgaWYgKCFzVXNlck1hbmFnZXIuZXhpc3RzKHVzZXJJZCkpIHJldHVybiBudWxsOwotICAgICAgICBmbGFncyA9IGF1Z21lbnRGbGFnc0ZvclVzZXIoZmxhZ3MsIHVzZXJJZCk7CisgICAgICAgIGZsYWdzID0gYXVnbWVudEZsYWdzRm9yVXNlcihmbGFncywgdXNlcklkLCBwcm9jZXNzTmFtZSk7CiAKICAgICAgICAgQXJyYXlMaXN0PFByb3ZpZGVySW5mbz4gZmluYWxMaXN0ID0gbnVsbDsKICAgICAgICAgLy8gcmVhZGVyCkBAIC01OTU5LDcgKzU5ODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHByb2Nlc3NOYW1lID09IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHAuaW5mby5wcm9jZXNzTmFtZS5lcXVhbHMocHJvY2Vzc05hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgVXNlckhhbmRsZS5pc1NhbWVBcHAocC5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQsIHVpZCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgbVNldHRpbmdzLmlzRW5hYmxlZEFuZFZpc2libGVMUHIocC5pbmZvLCBmbGFncywgdXNlcklkKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbVNldHRpbmdzLmlzRW5hYmxlZEFuZE1hdGNoTFByKHAuaW5mbywgZmxhZ3MsIHVzZXJJZCkKICAgICAgICAgICAgICAgICAgICAgICAgICYmICghbVNhZmVNb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwLmluZm8uYXBwbGljYXRpb25JbmZvLmZsYWdzICYgQXBwbGljYXRpb25JbmZvLkZMQUdfU1lTVEVNKSAhPSAwKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZmluYWxMaXN0ID09IG51bGwpIHsKQEAgLTkyMjUsNyArOTI1MSw3IEBACiAgICAgICAgIHByb3RlY3RlZCBSZXNvbHZlSW5mbyBuZXdSZXN1bHQoUGFja2FnZVBhcnNlci5BY3Rpdml0eUludGVudEluZm8gaW5mbywKICAgICAgICAgICAgICAgICBpbnQgbWF0Y2gsIGludCB1c2VySWQpIHsKICAgICAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKSByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIGlmICghbVNldHRpbmdzLmlzRW5hYmxlZEFuZFZpc2libGVMUHIoaW5mby5hY3Rpdml0eS5pbmZvLCBtRmxhZ3MsIHVzZXJJZCkpIHsKKyAgICAgICAgICAgIGlmICghbVNldHRpbmdzLmlzRW5hYmxlZEFuZE1hdGNoTFByKGluZm8uYWN0aXZpdHkuaW5mbywgbUZsYWdzLCB1c2VySWQpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaW5hbCBQYWNrYWdlUGFyc2VyLkFjdGl2aXR5IGFjdGl2aXR5ID0gaW5mby5hY3Rpdml0eTsKQEAgLTk0NDksNyArOTQ3NSw3IEBACiAgICAgICAgICAgICAgICAgaW50IG1hdGNoLCBpbnQgdXNlcklkKSB7CiAgICAgICAgICAgICBpZiAoIXNVc2VyTWFuYWdlci5leGlzdHModXNlcklkKSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICBmaW5hbCBQYWNrYWdlUGFyc2VyLlNlcnZpY2VJbnRlbnRJbmZvIGluZm8gPSAoUGFja2FnZVBhcnNlci5TZXJ2aWNlSW50ZW50SW5mbylmaWx0ZXI7Ci0gICAgICAgICAgICBpZiAoIW1TZXR0aW5ncy5pc0VuYWJsZWRBbmRWaXNpYmxlTFByKGluZm8uc2VydmljZS5pbmZvLCBtRmxhZ3MsIHVzZXJJZCkpIHsKKyAgICAgICAgICAgIGlmICghbVNldHRpbmdzLmlzRW5hYmxlZEFuZE1hdGNoTFByKGluZm8uc2VydmljZS5pbmZvLCBtRmxhZ3MsIHVzZXJJZCkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpbmFsIFBhY2thZ2VQYXJzZXIuU2VydmljZSBzZXJ2aWNlID0gaW5mby5zZXJ2aWNlOwpAQCAtOTY3Miw3ICs5Njk4LDcgQEAKICAgICAgICAgICAgIGlmICghc1VzZXJNYW5hZ2VyLmV4aXN0cyh1c2VySWQpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgZmluYWwgUGFja2FnZVBhcnNlci5Qcm92aWRlckludGVudEluZm8gaW5mbyA9IGZpbHRlcjsKLSAgICAgICAgICAgIGlmICghbVNldHRpbmdzLmlzRW5hYmxlZEFuZFZpc2libGVMUHIoaW5mby5wcm92aWRlci5pbmZvLCBtRmxhZ3MsIHVzZXJJZCkpIHsKKyAgICAgICAgICAgIGlmICghbVNldHRpbmdzLmlzRW5hYmxlZEFuZE1hdGNoTFByKGluZm8ucHJvdmlkZXIuaW5mbywgbUZsYWdzLCB1c2VySWQpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaW5hbCBQYWNrYWdlUGFyc2VyLlByb3ZpZGVyIHByb3ZpZGVyID0gaW5mby5wcm92aWRlcjsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vU2V0dGluZ3MuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG0vU2V0dGluZ3MuamF2YQppbmRleCA2MWM0NGRmLi5kMmEzZWRlIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3BtL1NldHRpbmdzLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wbS9TZXR0aW5ncy5qYXZhCkBAIC0zNzkzLDE3ICszNzkzLDE2IEBACiAgICAgICAgIHJldHVybiBjbXAgIT0gbnVsbCA/IEFycmF5cy50b1N0cmluZyhjbXAudG9BcnJheSgpKSA6ICJbXSI7CiAgICAgfQogCi0gICAgYm9vbGVhbiBpc0VuYWJsZWRBbmRWaXNpYmxlTFByKENvbXBvbmVudEluZm8gY29tcG9uZW50SW5mbywgaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7CisgICAgYm9vbGVhbiBpc0VuYWJsZWRBbmRNYXRjaExQcihDb21wb25lbnRJbmZvIGNvbXBvbmVudEluZm8sIGludCBmbGFncywgaW50IHVzZXJJZCkgewogICAgICAgICByZXR1cm4gaXNFbmFibGVkTFByKGNvbXBvbmVudEluZm8sIGZsYWdzLCB1c2VySWQpCi0gICAgICAgICAgICAgICAgJiYgaXNWaXNpYmxlTFByKGNvbXBvbmVudEluZm8sIGZsYWdzKTsKKyAgICAgICAgICAgICAgICAmJiBpc01hdGNoTFByKGNvbXBvbmVudEluZm8sIGZsYWdzKTsKICAgICB9CiAKICAgICBwcml2YXRlIGJvb2xlYW4gaXNFbmFibGVkTFByKENvbXBvbmVudEluZm8gY29tcG9uZW50SW5mbywgaW50IGZsYWdzLCBpbnQgdXNlcklkKSB7CiAgICAgICAgIGlmICgoZmxhZ3MmUGFja2FnZU1hbmFnZXIuR0VUX0RJU0FCTEVEX0NPTVBPTkVOVFMpICE9IDApIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGZpbmFsIFN0cmluZyBwa2dOYW1lID0gY29tcG9uZW50SW5mby5wYWNrYWdlTmFtZTsKLSAgICAgICAgZmluYWwgUGFja2FnZVNldHRpbmcgcGFja2FnZVNldHRpbmdzID0gbVBhY2thZ2VzLmdldChwa2dOYW1lKTsKKyAgICAgICAgZmluYWwgUGFja2FnZVNldHRpbmcgcGFja2FnZVNldHRpbmdzID0gbVBhY2thZ2VzLmdldChjb21wb25lbnRJbmZvLnBhY2thZ2VOYW1lKTsKICAgICAgICAgaWYgKFBhY2thZ2VNYW5hZ2VyU2VydmljZS5ERUJVR19TRVRUSU5HUykgewogICAgICAgICAgICAgTG9nLnYoUGFja2FnZU1hbmFnZXJTZXJ2aWNlLlRBRywgImlzRW5hYmxlZExvY2sgLSBwYWNrYWdlTmFtZSA9ICIKICAgICAgICAgICAgICAgICAgICAgKyBjb21wb25lbnRJbmZvLnBhY2thZ2VOYW1lICsgIiBjb21wb25lbnROYW1lID0gIiArIGNvbXBvbmVudEluZm8ubmFtZSk7CkBAIC0zODM5LDE0ICszODM4LDE5IEBACiAgICAgICAgIHJldHVybiBjb21wb25lbnRJbmZvLmVuYWJsZWQ7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBib29sZWFuIGlzVmlzaWJsZUxQcihDb21wb25lbnRJbmZvIGNvbXBvbmVudEluZm8sIGludCBmbGFncykgewotICAgICAgICBpZiAoKGZsYWdzICYgUGFja2FnZU1hbmFnZXIuR0VUX0VOQ1JZUFRJT05fVU5BV0FSRV9DT01QT05FTlRTKSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNNYXRjaExQcihDb21wb25lbnRJbmZvIGNvbXBvbmVudEluZm8sIGludCBmbGFncykgeworICAgICAgICBpZiAoKGZsYWdzICYgUGFja2FnZU1hbmFnZXIuTUFUQ0hfU1lTVEVNX09OTFkpICE9IDApIHsKKyAgICAgICAgICAgIGZpbmFsIFBhY2thZ2VTZXR0aW5nIHBzID0gbVBhY2thZ2VzLmdldChjb21wb25lbnRJbmZvLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgIGlmICgocHMucGtnRmxhZ3MgJiBBcHBsaWNhdGlvbkluZm8uRkxBR19TWVNURU0pID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKChmbGFncyAmIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0VOQ1JZUFRJT05fQVdBUkVfT05MWSkgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEluZm8uZW5jcnlwdGlvbkF3YXJlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGZpbmFsIGJvb2xlYW4gbWF0Y2hlc1VuYXdhcmUgPSAoKGZsYWdzICYgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9VTkFXQVJFX09OTFkpICE9IDApCisgICAgICAgICAgICAgICAgJiYgIWNvbXBvbmVudEluZm8uZW5jcnlwdGlvbkF3YXJlOworICAgICAgICBmaW5hbCBib29sZWFuIG1hdGNoZXNBd2FyZSA9ICgoZmxhZ3MgJiBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0FXQVJFX09OTFkpICE9IDApCisgICAgICAgICAgICAgICAgJiYgY29tcG9uZW50SW5mby5lbmNyeXB0aW9uQXdhcmU7CisgICAgICAgIHJldHVybiBtYXRjaGVzVW5hd2FyZSB8fCBtYXRjaGVzQXdhcmU7CiAgICAgfQogCiAgICAgU3RyaW5nIGdldEluc3RhbGxlclBhY2thZ2VOYW1lTFByKFN0cmluZyBwYWNrYWdlTmFtZSkgewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wb2xpY3kvUGhvbmVXaW5kb3dNYW5hZ2VyLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3BvbGljeS9QaG9uZVdpbmRvd01hbmFnZXIuamF2YQppbmRleCBkZmY2ZTNmLi42ZmNmMWQ2IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3BvbGljeS9QaG9uZVdpbmRvd01hbmFnZXIuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3BvbGljeS9QaG9uZVdpbmRvd01hbmFnZXIuamF2YQpAQCAtMjA2Myw3ICsyMDYzLDggQEAKICAgICAgICAgICAgICAgICBhdHRycy5zdWJ0cmVlU3lzdGVtVWlWaXNpYmlsaXR5IHw9IFZpZXcuU1lTVEVNX1VJX0ZMQUdfTEFZT1VUX0hJREVfTkFWSUdBVElPTjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoYXR0cnMuZmxhZ3MgJiBGTEFHX0RSQVdTX1NZU1RFTV9CQVJfQkFDS0dST1VORFMpICE9IDAKLSAgICAgICAgICAgICAgICAgICAgfHwgbUZvcmNlV2luZG93RHJhd3NTdGF0dXNCYXJCYWNrZ3JvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHx8IChtRm9yY2VXaW5kb3dEcmF3c1N0YXR1c0JhckJhY2tncm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBhdHRycy5oZWlnaHQgPT0gTUFUQ0hfUEFSRU5UICYmIGF0dHJzLndpZHRoID09IE1BVENIX1BBUkVOVCkpIHsKICAgICAgICAgICAgICAgICBhdHRycy5zdWJ0cmVlU3lzdGVtVWlWaXNpYmlsaXR5IHw9IFZpZXcuU1lTVEVNX1VJX0ZMQUdfTEFZT1VUX0ZVTExTQ1JFRU47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG9saWN5L1Nob3J0Y3V0TWFuYWdlci5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wb2xpY3kvU2hvcnRjdXRNYW5hZ2VyLmphdmEKaW5kZXggNzZmNTZiYy4uOTkwODYyNCAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wb2xpY3kvU2hvcnRjdXRNYW5hZ2VyLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wb2xpY3kvU2hvcnRjdXRNYW5hZ2VyLmphdmEKQEAgLTEyOCwxMyArMTI4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5SW5mbyBpbmZvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50TmFtZSBjb21wb25lbnROYW1lID0gbmV3IENvbXBvbmVudE5hbWUocGFja2FnZU5hbWUsIGNsYXNzTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvID0gcGFja2FnZU1hbmFnZXIuZ2V0QWN0aXZpdHlJbmZvKGNvbXBvbmVudE5hbWUsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyA9IHBhY2thZ2VNYW5hZ2VyLmdldEFjdGl2aXR5SW5mbyhjb21wb25lbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0FXQVJFX0FORF9VTkFXQVJFKTsKICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1tdIHBhY2thZ2VzID0gcGFja2FnZU1hbmFnZXIuY2Fub25pY2FsVG9DdXJyZW50UGFja2FnZU5hbWVzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyBwYWNrYWdlTmFtZSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWUgPSBuZXcgQ29tcG9uZW50TmFtZShwYWNrYWdlc1swXSwgY2xhc3NOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyA9IHBhY2thZ2VNYW5hZ2VyLmdldEFjdGl2aXR5SW5mbyhjb21wb25lbnROYW1lLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvID0gcGFja2FnZU1hbmFnZXIuZ2V0QWN0aXZpdHlJbmZvKGNvbXBvbmVudE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5NQVRDSF9FTkNSWVBUSU9OX0FXQVJFX0FORF9VTkFXQVJFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlVuYWJsZSB0byBhZGQgYm9va21hcms6ICIgKyBwYWNrYWdlTmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLyIgKyBjbGFzc05hbWUsIGUpOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wb2xpY3kva2V5Z3VhcmQvS2V5Z3VhcmRTZXJ2aWNlRGVsZWdhdGUuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcG9saWN5L2tleWd1YXJkL0tleWd1YXJkU2VydmljZURlbGVnYXRlLmphdmEKaW5kZXggYzBkZmJjYi4uMjllM2M2MyAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wb2xpY3kva2V5Z3VhcmQvS2V5Z3VhcmRTZXJ2aWNlRGVsZWdhdGUuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3BvbGljeS9rZXlndWFyZC9LZXlndWFyZFNlcnZpY2VEZWxlZ2F0ZS5qYXZhCkBAIC0xMjYsNiArMTI2LDcgQEAKIAogICAgICAgICBmaW5hbCBDb21wb25lbnROYW1lIGtleWd1YXJkQ29tcG9uZW50ID0gQ29tcG9uZW50TmFtZS51bmZsYXR0ZW5Gcm9tU3RyaW5nKAogICAgICAgICAgICAgICAgIHJlc291cmNlcy5nZXRTdHJpbmcoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuY29uZmlnX2tleWd1YXJkQ29tcG9uZW50KSk7CisgICAgICAgIGludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19ERUJVR19FTkNSWVBUSU9OX1RSSUFHRUQpOwogICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KGtleWd1YXJkQ29tcG9uZW50KTsKIAogICAgICAgICBpZiAoIWNvbnRleHQuYmluZFNlcnZpY2VBc1VzZXIoaW50ZW50LCBtS2V5Z3VhcmRDb25uZWN0aW9uLApkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci90di9UdklucHV0SGFyZHdhcmVNYW5hZ2VyLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3R2L1R2SW5wdXRIYXJkd2FyZU1hbmFnZXIuamF2YQppbmRleCA5YmY3YWU0Li41Nzg0MjhiIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3R2L1R2SW5wdXRIYXJkd2FyZU1hbmFnZXIuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3R2L1R2SW5wdXRIYXJkd2FyZU1hbmFnZXIuamF2YQpAQCAtMzksNiArMzksNyBAQAogaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9QYXRjaDsKIGltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvUG9ydDsKIGltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvUG9ydENvbmZpZzsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvU3lzdGVtOwogaW1wb3J0IGFuZHJvaWQubWVkaWEudHYuSVR2SW5wdXRIYXJkd2FyZTsKIGltcG9ydCBhbmRyb2lkLm1lZGlhLnR2LklUdklucHV0SGFyZHdhcmVDYWxsYmFjazsKIGltcG9ydCBhbmRyb2lkLm1lZGlhLnR2LlR2SW5wdXRIYXJkd2FyZUluZm87CkBAIC03MDMsNyArNzA0LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGludCBzaW5rRGV2aWNlID0gbUF1ZGlvTWFuYWdlci5nZXREZXZpY2VzRm9yU3RyZWFtKEF1ZGlvTWFuYWdlci5TVFJFQU1fTVVTSUMpOwogICAgICAgICAgICAgZm9yIChBdWRpb0RldmljZVBvcnQgcG9ydCA6IGRldmljZVBvcnRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChwb3J0LnR5cGUoKSAmIHNpbmtEZXZpY2UpICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoKHBvcnQudHlwZSgpICYgc2lua0RldmljZSkgIT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAocG9ydC50eXBlKCkgJiBBdWRpb1N5c3RlbS5ERVZJQ0VfQklUX0lOKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpbmtzLmFkZChwb3J0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ZyL1ZyTWFuYWdlckludGVybmFsLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ZyL1ZyTWFuYWdlckludGVybmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJkYjM2NAotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvdnIvVnJNYW5hZ2VySW50ZXJuYWwuamF2YQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnZyOworCisvKioKKyAqIFZSIG1vZGUgbG9jYWwgc3lzdGVtIHNlcnZpY2UgaW50ZXJmYWNlLgorICoKKyAqIEBoaWRlIE9ubHkgZm9yIHVzZSB3aXRoaW4gc3lzdGVtIHNlcnZlci4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFZyTWFuYWdlckludGVybmFsIHsKKworICAgIC8qKgorICAgICAqIFJldHVybiBjdXJyZW50IFZSIG1vZGUgc3RhdGUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiBWUiBtb2RlIGlzIGVuYWJsZWQuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gaXNJblZyTW9kZSgpOworCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjdXJyZW50IFZSIG1vZGUgc3RhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZW5hYmxlZCB7QGNvZGUgdHJ1ZX0gdG8gZW5hYmxlIFZSIG1vZGUuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0VnJNb2RlKGJvb2xlYW4gZW5hYmxlZCk7CisKKyAgICAvKioKKyAgICAgKiBBZGQgYSBsaXN0ZW5lciBmb3IgVlIgbW9kZSBzdGF0ZSBjaGFuZ2VzLgorICAgICAqIDxwPgorICAgICAqIFRoaXMgbGlzdGVuZXIgd2lsbCBpbW1lZGlhdGVseSBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBWUiBtb2RlIHN0YXRlLgorICAgICAqIDwvcD4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIGluc3RhbmNlIHRvIGFkZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZWdpc3Rlckxpc3RlbmVyKFZyU3RhdGVMaXN0ZW5lciBsaXN0ZW5lcik7CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGxpc3RlbmVyIGZyb20gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RlbmVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gcmVtb3ZlLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihWclN0YXRlTGlzdGVuZXIgbGlzdGVuZXIpOworCit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ZyL1ZyTWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvdnIvVnJNYW5hZ2VyU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNTVlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ZyL1ZyTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci52cjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuVXNlckhhbmRsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXJyYXlTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuU3lzdGVtU2VydmljZTsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogU2VydmljZSB0cmFja2luZyB3aGV0aGVyIFZSIG1vZGUgaXMgYWN0aXZlLCBhbmQgbm90aWZ5aW5nIGxpc3RlbmluZyBzeXN0ZW0gc2VydmljZXMgb2Ygc3RhdGUKKyAqIGNoYW5nZXMuCisgKgorICoge0BoaWRlfQorICovCitwdWJsaWMgY2xhc3MgVnJNYW5hZ2VyU2VydmljZSBleHRlbmRzIFN5c3RlbVNlcnZpY2UgeworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlZyTWFuYWdlclNlcnZpY2UiOworCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbUxvY2sgPSBuZXcgT2JqZWN0KCk7CisgICAgcHJpdmF0ZSBib29sZWFuIG1Wck1vZGVFbmFibGVkID0gZmFsc2U7CisgICAgcHJpdmF0ZSBBcnJheVNldDxWclN0YXRlTGlzdGVuZXI+IG1MaXN0ZW5lcnMgPSBuZXcgQXJyYXlTZXQ8PigpOworCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBMb2NhbFNlcnZpY2UgZXh0ZW5kcyBWck1hbmFnZXJJbnRlcm5hbCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0luVnJNb2RlKCkgeworICAgICAgICAgICAgcmV0dXJuIFZyTWFuYWdlclNlcnZpY2UudGhpcy5nZXRWck1vZGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRWck1vZGUoYm9vbGVhbiBlbmFibGVkKSB7CisgICAgICAgICAgICBWck1hbmFnZXJTZXJ2aWNlLnRoaXMuc2V0VnJNb2RlKGVuYWJsZWQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyTGlzdGVuZXIoVnJTdGF0ZUxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgICAgICBWck1hbmFnZXJTZXJ2aWNlLnRoaXMuYWRkTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihWclN0YXRlTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgICAgIFZyTWFuYWdlclNlcnZpY2UudGhpcy5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgVnJNYW5hZ2VyU2VydmljZShDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TdGFydCgpIHsKKyAgICAgICAgcHVibGlzaExvY2FsU2VydmljZShWck1hbmFnZXJJbnRlcm5hbC5jbGFzcywgbmV3IExvY2FsU2VydmljZSgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRkTGlzdGVuZXIoVnJTdGF0ZUxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIG1MaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZW1vdmVMaXN0ZW5lcihWclN0YXRlTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldFZyTW9kZShib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgaWYgKG1Wck1vZGVFbmFibGVkICE9IGVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBtVnJNb2RlRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTbG9nLmQoVEFHLCAiVlIgbW9kZSAiICsgKChtVnJNb2RlRW5hYmxlZCkgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSk7CisgICAgICAgICAgICAgICAgb25Wck1vZGVDaGFuZ2VkTG9ja2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZ2V0VnJNb2RlKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7CisgICAgICAgICAgICByZXR1cm4gbVZyTW9kZUVuYWJsZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOb3RpZnkgc3lzdGVtIHNlcnZpY2VzIG9mIFZSIG1vZGUgY2hhbmdlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBvblZyTW9kZUNoYW5nZWRMb2NrZWQoKSB7CisgICAgICAgIGZvciAoVnJTdGF0ZUxpc3RlbmVyIGwgOiBtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICBsLm9uVnJTdGF0ZUNoYW5nZWQobVZyTW9kZUVuYWJsZWQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci92ci9WclN0YXRlTGlzdGVuZXIuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvdnIvVnJTdGF0ZUxpc3RlbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhhZjRiMgotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvdnIvVnJTdGF0ZUxpc3RlbmVyLmphdmEKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci52cjsKKworLyoqCisgKiBMaXN0ZW5lciBmb3Igc3RhdGUgY2hhbmdlcyBpbiBWck1hbmFnZXJTZXJ2aWNlLAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVnJTdGF0ZUxpc3RlbmVyIHsKKworICAvKioKKyAgICogQ2FsbGVkIHdoZW4gdGhlIFZSIG1vZGUgc3RhdGUgY2hhbmdlcy4KKyAgICoKKyAgICogQHBhcmFtIGVuYWJsZWQge0Bjb2RlIHRydWV9IGlmIFZSIG1vZGUgaXMgZW5hYmxlZC4KKyAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgb25WclN0YXRlQ2hhbmdlZChib29sZWFuIGVuYWJsZWQpOworfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9Ecm9wUGVybWlzc2lvbnNIYW5kbGVyLmphdmEgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3dtL0Ryb3BQZXJtaXNzaW9uc0hhbmRsZXIuamF2YQppbmRleCAyYWMxZWY0Li42OGNmYWFiIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3dtL0Ryb3BQZXJtaXNzaW9uc0hhbmRsZXIuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3dtL0Ryb3BQZXJtaXNzaW9uc0hhbmRsZXIuamF2YQpAQCAtMzcsNyArMzcsNyBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8VXJpPiBtVXJpcyA9IG5ldyBBcnJheUxpc3Q8VXJpPigpOwogCi0gICAgcHJpdmF0ZSBJQmluZGVyIG1QZXJtaXNzaW9uT3duZXIgPSBudWxsOworICAgIHByaXZhdGUgSUJpbmRlciBtQWN0aXZpdHlUb2tlbiA9IG51bGw7CiAKICAgICBEcm9wUGVybWlzc2lvbnNIYW5kbGVyKENsaXBEYXRhIGNsaXBEYXRhLCBpbnQgc291cmNlVWlkLCBTdHJpbmcgdGFyZ2V0UGFja2FnZSwgaW50IG1vZGUsCiAgICAgICAgICAgICBpbnQgc291cmNlVXNlcklkLCBpbnQgdGFyZ2V0VXNlcklkKSB7CkBAIC01MSwxOCArNTEsMjEgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCB0YWtlKCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIGlmIChtUGVybWlzc2lvbk93bmVyICE9IG51bGwpIHsKKyAgICBwdWJsaWMgdm9pZCB0YWtlKElCaW5kZXIgYWN0aXZpdHlUb2tlbikgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChtQWN0aXZpdHlUb2tlbiAhPSBudWxsKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgbUFjdGl2aXR5VG9rZW4gPSBhY3Rpdml0eVRva2VuOwogCi0gICAgICAgIG1QZXJtaXNzaW9uT3duZXIgPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLm5ld1VyaVBlcm1pc3Npb25Pd25lcigiZHJvcCIpOworICAgICAgICAvLyBXaWxsIHRocm93IGlmIEFjdGl2aXR5IGlzIG5vdCBmb3VuZC4KKyAgICAgICAgSUJpbmRlciBwZXJtaXNzaW9uT3duZXIgPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLgorICAgICAgICAgICAgICAgIGdldFVyaVBlcm1pc3Npb25Pd25lckZvckFjdGl2aXR5KG1BY3Rpdml0eVRva2VuKTsKIAogICAgICAgICBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtVXJpcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuZ3JhbnRVcmlQZXJtaXNzaW9uRnJvbU93bmVyKAotICAgICAgICAgICAgICAgICAgICAgICAgbVBlcm1pc3Npb25Pd25lciwgbVNvdXJjZVVpZCwgbVRhcmdldFBhY2thZ2UsIG1VcmlzLmdldChpKSwgbU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uT3duZXIsIG1Tb3VyY2VVaWQsIG1UYXJnZXRQYWNrYWdlLCBtVXJpcy5nZXQoaSksIG1Nb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgbVNvdXJjZVVzZXJJZCwgbVRhcmdldFVzZXJJZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZmluYWxseSB7CkBAIC03MiwxNSArNzUsMjQgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIHJlbGVhc2UoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgaWYgKG1QZXJtaXNzaW9uT3duZXIgPT0gbnVsbCkgeworICAgICAgICBpZiAobUFjdGl2aXR5VG9rZW4gPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgSUJpbmRlciBwZXJtaXNzaW9uT3duZXIgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcGVybWlzc2lvbk93bmVyID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS4KKyAgICAgICAgICAgICAgICAgICAgZ2V0VXJpUGVybWlzc2lvbk93bmVyRm9yQWN0aXZpdHkobUFjdGl2aXR5VG9rZW4pOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gQWN0aXZpdHkgaXMgZGVzdHJveWVkLCBwZXJtaXNzaW9ucyBhbHJlYWR5IHJldm9rZWQuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBtQWN0aXZpdHlUb2tlbiA9IG51bGw7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1VcmlzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnJldm9rZVVyaVBlcm1pc3Npb25Gcm9tT3duZXIoCi0gICAgICAgICAgICAgICAgICAgIG1QZXJtaXNzaW9uT3duZXIsIG1VcmlzLmdldChpKSwgbU1vZGUsIG1Tb3VyY2VVc2VySWQpOworICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uT3duZXIsIG1VcmlzLmdldChpKSwgbU1vZGUsIG1Tb3VyY2VVc2VySWQpOwogICAgICAgICB9Ci0KLSAgICAgICAgbVBlcm1pc3Npb25Pd25lciA9IG51bGw7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9UYXNrVGFwUG9pbnRlckV2ZW50TGlzdGVuZXIuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vVGFza1RhcFBvaW50ZXJFdmVudExpc3RlbmVyLmphdmEKaW5kZXggYWYxMDlkNC4uOTgwMzNmNiAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9UYXNrVGFwUG9pbnRlckV2ZW50TGlzdGVuZXIuamF2YQorKysgYi9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3dtL1Rhc2tUYXBQb2ludGVyRXZlbnRMaXN0ZW5lci5qYXZhCkBAIC0yMCw2ICsyMCw3IEBACiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWdpb247CiBpbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXlJbmZvOwogaW1wb3J0IGFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3I7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0RGV2aWNlOwogaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeS5Qb2ludGVyRXZlbnRMaXN0ZW5lcjsKIApAQCAtMTA4LDcgKzEwOSw4IEBACiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHggPSAoaW50KSBtb3Rpb25FdmVudC5nZXRYKCk7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHkgPSAoaW50KSBtb3Rpb25FdmVudC5nZXRZKCk7CiAgICAgICAgICAgICAgICAgZmluYWwgVGFzayB0YXNrID0gbURpc3BsYXlDb250ZW50LmZpbmRUYXNrRm9yQ29udHJvbFBvaW50KHgsIHkpOwotICAgICAgICAgICAgICAgIGlmICh0YXNrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBJbnB1dERldmljZSBpbnB1dERldmljZSA9IG1vdGlvbkV2ZW50LmdldERldmljZSgpOworICAgICAgICAgICAgICAgIGlmICh0YXNrID09IG51bGwgfHwgaW5wdXREZXZpY2UgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBtUG9pbnRlckljb25TaGFwZSA9IFNUWUxFX05PVF9TUEVDSUZJRUQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTEzMCw3ICsxMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChtUG9pbnRlckljb25TaGFwZSAhPSBpY29uU2hhcGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVySWNvblNoYXBlID0gaWNvblNoYXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQuZ2V0RGV2aWNlKCkuc2V0UG9pbnRlclNoYXBlKGljb25TaGFwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dERldmljZS5zZXRQb2ludGVyU2hhcGUoaWNvblNoYXBlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVySWNvblNoYXBlID0gU1RZTEVfTk9UX1NQRUNJRklFRDsKQEAgLTEzOSw3ICsxNDEsMTAgQEAKIAogICAgICAgICAgICAgY2FzZSBNb3Rpb25FdmVudC5BQ1RJT05fSE9WRVJfRVhJVDoKICAgICAgICAgICAgICAgICBtUG9pbnRlckljb25TaGFwZSA9IFNUWUxFX05PVF9TUEVDSUZJRUQ7Ci0gICAgICAgICAgICAgICAgbW90aW9uRXZlbnQuZ2V0RGV2aWNlKCkuc2V0UG9pbnRlclNoYXBlKFNUWUxFX0RFRkFVTFQpOworICAgICAgICAgICAgICAgIElucHV0RGV2aWNlIGlucHV0RGV2aWNlID0gbW90aW9uRXZlbnQuZ2V0RGV2aWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlucHV0RGV2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2Uuc2V0UG9pbnRlclNoYXBlKFNUWUxFX0RFRkFVTFQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBNb3Rpb25FdmVudC5BQ1RJT05fVVA6CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3dtL1dpbmRvd0xheWVyc0NvbnRyb2xsZXIuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vV2luZG93TGF5ZXJzQ29udHJvbGxlci5qYXZhCmluZGV4IDRhNzdiMjIuLjI2M2I0MTEgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vV2luZG93TGF5ZXJzQ29udHJvbGxlci5qYXZhCisrKyBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vV2luZG93TGF5ZXJzQ29udHJvbGxlci5qYXZhCkBAIC0xNTksNiArMTU5LDkgQEAKICAgICAgICAgICAgIG1Eb2NrRGl2aWRlciA9IHc7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmaW5hbCBUYXNrU3RhY2sgc3RhY2sgPSB3LmdldFN0YWNrKCk7CisgICAgICAgICAgICBpZiAoc3RhY2sgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChzdGFjay5tU3RhY2tJZCA9PSBTdGFja0lkLlBJTk5FRF9TVEFDS19JRCkgewogICAgICAgICAgICAgICAgIG1QaW5uZWRXaW5kb3cgPSB3OwogICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFjay5tU3RhY2tJZCA9PSBTdGFja0lkLkRPQ0tFRF9TVEFDS19JRCkgewpAQCAtMTc4LDYgKzE4MSwxMSBAQAogICAgICAgICAvLyBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBzYW1lIHRyZWF0bWVudCwgZS5nLiB0byBiZSBhYm92ZSB0aGUgZG9jayBkaXZpZGVyLgogICAgICAgICBsYXllciA9IGFzc2lnbkFuZEluY3JlYXNlTGF5ZXJJZk5lZWRlZChtUmVwbGFjaW5nV2luZG93LCBsYXllcik7CiAgICAgICAgIGxheWVyID0gYXNzaWduQW5kSW5jcmVhc2VMYXllcklmTmVlZGVkKG1QaW5uZWRXaW5kb3csIGxheWVyKTsKKyAgICAgICAgZmluYWwgV2luZG93U3RhdGUgaW5wdXRNZXRob2RUYXJnZXQgPSBtU2VydmljZS5tSW5wdXRNZXRob2RUYXJnZXQ7CisgICAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIG5vIGFwcGxpY2F0aW9ucyB3aW5kb3dzIHlldCwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBsaWZ0IHRoZSBpbnB1dAorICAgICAgICAvLyBtZXRob2QgYWJvdmUgdGhlIHRhcmdldC4KKyAgICAgICAgbGF5ZXIgPSBNYXRoLm1heChsYXllciwKKyAgICAgICAgICAgICAgICBpbnB1dE1ldGhvZFRhcmdldCAhPSBudWxsID8gaW5wdXRNZXRob2RUYXJnZXQubVdpbkFuaW1hdG9yLm1BbmltTGF5ZXIgKyAxIDogMCk7CiAgICAgICAgIGxheWVyID0gYXNzaWduQW5kSW5jcmVhc2VMYXllcklmTmVlZGVkKG1JbWVXaW5kb3csIGxheWVyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vV2luZG93U3RhdGUuamF2YSBiL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vV2luZG93U3RhdGUuamF2YQppbmRleCA0OTgyNTlmLi5jNjM2MTg1IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9jb3JlL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3dtL1dpbmRvd1N0YXRlLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9XaW5kb3dTdGF0ZS5qYXZhCkBAIC03NCw2ICs3NCw3IEBACiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5MQVNUX1NVQl9XSU5ET1c7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQ7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5QUklWQVRFX0ZMQUdfQ09NUEFUSUJMRV9XSU5ET1c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5QUklWQVRFX0ZMQUdfTEFZT1VUX0NISUxEX1dJTkRPV19JTl9QQVJFTlRfRlJBTUU7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5QUklWQVRFX0ZMQUdfS0VZR1VBUkQ7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5QUklWQVRFX0ZMQUdfV0lMTF9OT1RfUkVQTEFDRV9PTl9SRUxBVU5DSDsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlNPRlRfSU5QVVRfQURKVVNUX1JFU0laRTsKQEAgLTYwNiw3ICs2MDcsOCBAQAogICAgICAgICBmaW5hbCBib29sZWFuIGZ1bGxzY3JlZW5UYXNrID0gdGFzayA9PSBudWxsIHx8IHRhc2suaXNGdWxsc2NyZWVuKCk7CiAgICAgICAgIGZpbmFsIGJvb2xlYW4gZnJlZWZvcm1Xb3Jrc3BhY2UgPSB0YXNrICE9IG51bGwgJiYgdGFzay5pbkZyZWVmb3JtV29ya3NwYWNlKCk7CiAKLSAgICAgICAgaWYgKGZ1bGxzY3JlZW5UYXNrIHx8IGlzQ2hpbGRXaW5kb3coKSkgeworICAgICAgICBpZiAoZnVsbHNjcmVlblRhc2sgfHwgKGlzQ2hpbGRXaW5kb3coKQorICAgICAgICAgICAgICAgICYmIChtQXR0cnMucHJpdmF0ZUZsYWdzICYgUFJJVkFURV9GTEFHX0xBWU9VVF9DSElMRF9XSU5ET1dfSU5fUEFSRU5UX0ZSQU1FKSAhPSAwKSkgewogICAgICAgICAgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQgZnJhbWUgYXMgdGhlIGNvbnRhaW5pbmcgZnJhbWUgZm9yIGZ1bGxzY3JlZW4gYW5kIGNoaWxkIHdpbmRvd3MKICAgICAgICAgICAgIG1Db250YWluaW5nRnJhbWUuc2V0KHBmKTsKICAgICAgICAgICAgIG1EaXNwbGF5RnJhbWUuc2V0KGRmKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2NvcmUvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvd20vV2luZG93U3RhdGVBbmltYXRvci5qYXZhIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9XaW5kb3dTdGF0ZUFuaW1hdG9yLmphdmEKaW5kZXggNzYwNWFmMC4uMDFlNDFmNCAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9XaW5kb3dTdGF0ZUFuaW1hdG9yLmphdmEKKysrIGIvc2VydmljZXMvY29yZS9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci93bS9XaW5kb3dTdGF0ZUFuaW1hdG9yLmphdmEKQEAgLTcwNSwxNCArNzA1LDEyIEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBTb21ldGhpbmcgaXMgd3JvbmcgYW5kIFN1cmZhY2VGbGluZ2VyIHdpbGwgbm90IGxpa2UgdGhpcywgdHJ5IHRvIHJldmVydCB0byBzYW5lIHZhbHVlcy4KKyAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCB0aGVyZSBpcyBhbiBlcnJvciBpbiB0aGUgc3lzdGVtLiBUaGUgc2l6ZXMgbWlnaHQgYmUKKyAgICAgICAgLy8gaW5jb3JyZWN0LCBiZWNhdXNlIGl0IGlzIGJlZm9yZSB0aGUgZmlyc3QgbGF5b3V0IG9yIGRyYXcuCiAgICAgICAgIGlmIChtVG1wU2l6ZS53aWR0aCgpIDwgMSkgewotICAgICAgICAgICAgaWYgKCFtV2luLm1MYXlvdXROZWVkZWQpIFNsb2cudyhUQUcsCi0gICAgICAgICAgICAgICAgICAgICJXaWR0aCBvZiAiICsgdyArICIgaXMgbm90IHBvc2l0aXZlICIgKyBtVG1wU2l6ZS53aWR0aCgpKTsKICAgICAgICAgICAgIG1UbXBTaXplLnJpZ2h0ID0gbVRtcFNpemUubGVmdCArIDE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1UbXBTaXplLmhlaWdodCgpIDwgMSkgewotICAgICAgICAgICAgaWYgKCFtV2luLm1MYXlvdXROZWVkZWQpIFNsb2cudyhUQUcsCi0gICAgICAgICAgICAgICAgICAgICJIZWlnaHQgb2YgIiArIHcgKyAiIGlzIG5vdCBwb3NpdGl2ZSAiICsgbVRtcFNpemUuaGVpZ2h0KCkpOwogICAgICAgICAgICAgbVRtcFNpemUuYm90dG9tID0gbVRtcFNpemUudG9wICsgMTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9jb3JlL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfaW5wdXRfSW5wdXRNYW5hZ2VyU2VydmljZS5jcHAgYi9zZXJ2aWNlcy9jb3JlL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfaW5wdXRfSW5wdXRNYW5hZ2VyU2VydmljZS5jcHAKaW5kZXggNGM4NDc0YS4uYTUyMzdjYSAxMDA2NDQKLS0tIGEvc2VydmljZXMvY29yZS9qbmkvY29tX2FuZHJvaWRfc2VydmVyX2lucHV0X0lucHV0TWFuYWdlclNlcnZpY2UuY3BwCisrKyBiL3NlcnZpY2VzL2NvcmUvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9pbnB1dF9JbnB1dE1hbmFnZXJTZXJ2aWNlLmNwcApAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgdm9pZCBzZXRQb2ludGVySWNvblNoYXBlKGludDMyX3QgaWNvbklkKTsKICAgICB2b2lkIHJlbG9hZFBvaW50ZXJJY29ucygpOwogICAgIHZvaWQgc2V0Q3VzdG9tUG9pbnRlckljb24oY29uc3QgU3ByaXRlSWNvbiYgaWNvbik7CisgICAgdm9pZCBzZXRQb2ludGVySWNvbkRldGFjaGVkKGJvb2wgZGV0YWNoZWQpOwogCiAgICAgLyogLS0tIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIC0tLSAqLwogCkBAIC03MTEsNiArNzEyLDE0IEBACiAgICAgbUlucHV0TWFuYWdlci0+Z2V0RGlzcGF0Y2hlcigpLT5zZXRGb2N1c2VkQXBwbGljYXRpb24oYXBwbGljYXRpb25IYW5kbGUpOwogfQogCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6c2V0UG9pbnRlckljb25EZXRhY2hlZChib29sIGRldGFjaGVkKSB7CisgICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKKyAgICBzcDxQb2ludGVyQ29udHJvbGxlcj4gY29udHJvbGxlciA9IG1Mb2NrZWQucG9pbnRlckNvbnRyb2xsZXIucHJvbW90ZSgpOworICAgIGlmIChjb250cm9sbGVyICE9IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGxlci0+ZGV0YWNoUG9pbnRlckljb24oZGV0YWNoZWQpOworICAgIH0KK30KKwogdm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnNldElucHV0RGlzcGF0Y2hNb2RlKGJvb2wgZW5hYmxlZCwgYm9vbCBmcm96ZW4pIHsKICAgICBtSW5wdXRNYW5hZ2VyLT5nZXREaXNwYXRjaGVyKCktPnNldElucHV0RGlzcGF0Y2hNb2RlKGVuYWJsZWQsIGZyb3plbik7CiB9CkBAIC0xMzE3LDYgKzEzMjYsMTIgQEAKICAgICBpbS0+c2V0Rm9jdXNlZEFwcGxpY2F0aW9uKGVudiwgYXBwbGljYXRpb25IYW5kbGVPYmopOwogfQogCitzdGF0aWMgdm9pZCBuYXRpdmVTZXRQb2ludGVySWNvbkRldGFjaGVkKEpOSUVudiogZW52LCBqY2xhc3MgLyogY2xhenogKi8sIGpsb25nIHB0ciwKKyAgICAgICAgamJvb2xlYW4gZGV0YWNoZWQpIHsKKyAgICBOYXRpdmVJbnB1dE1hbmFnZXIqIGltID0gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVJbnB1dE1hbmFnZXIqPihwdHIpOworICAgIGltLT5zZXRQb2ludGVySWNvbkRldGFjaGVkKGRldGFjaGVkKTsKK30KKwogc3RhdGljIHZvaWQgbmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUoSk5JRW52KiAvKiBlbnYgKi8sCiAgICAgICAgIGpjbGFzcyAvKiBjbGF6eiAqLywgamxvbmcgcHRyLCBqYm9vbGVhbiBlbmFibGVkLCBqYm9vbGVhbiBmcm96ZW4pIHsKICAgICBOYXRpdmVJbnB1dE1hbmFnZXIqIGltID0gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVJbnB1dE1hbmFnZXIqPihwdHIpOwpAQCAtMTQ5Nyw2ICsxNTEyLDggQEAKICAgICAgICAgICAgICh2b2lkKikgbmF0aXZlU2V0SW5wdXRXaW5kb3dzIH0sCiAgICAgeyAibmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uIiwgIihKTGNvbS9hbmRyb2lkL3NlcnZlci9pbnB1dC9JbnB1dEFwcGxpY2F0aW9uSGFuZGxlOylWIiwKICAgICAgICAgICAgICh2b2lkKikgbmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uIH0sCisgICAgeyAibmF0aXZlU2V0UG9pbnRlckljb25EZXRhY2hlZCIsICIoSlopViIsCisgICAgICAgICAgICAodm9pZCopIG5hdGl2ZVNldFBvaW50ZXJJY29uRGV0YWNoZWQgfSwKICAgICB7ICJuYXRpdmVTZXRJbnB1dERpc3BhdGNoTW9kZSIsICIoSlpaKVYiLAogICAgICAgICAgICAgKHZvaWQqKSBuYXRpdmVTZXRJbnB1dERpc3BhdGNoTW9kZSB9LAogICAgIHsgIm5hdGl2ZVNldFN5c3RlbVVpVmlzaWJpbGl0eSIsICIoSkkpViIsCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9TeXN0ZW1TZXJ2ZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCmluZGV4IGZiNWYyMWEuLjBiYmQyM2UgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCkBAIC04OSwxNCArODksMTMgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIudHYuVHZJbnB1dE1hbmFnZXJTZXJ2aWNlOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci50d2lsaWdodC5Ud2lsaWdodFNlcnZpY2U7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnVzYWdlLlVzYWdlU3RhdHNTZXJ2aWNlOwotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci51c2IuVXNiU2VydmljZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIudnIuVnJNYW5hZ2VyU2VydmljZTsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIud2FsbHBhcGVyLldhbGxwYXBlck1hbmFnZXJTZXJ2aWNlOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci53ZWJraXQuV2ViVmlld1VwZGF0ZVNlcnZpY2U7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLndtLldpbmRvd01hbmFnZXJTZXJ2aWNlOwogCiBpbXBvcnQgZGFsdmlrLnN5c3RlbS5WTVJ1bnRpbWU7CiAKLWltcG9ydCBqYXZhLmlvLkZpbGU7CiBpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKIGltcG9ydCBqYXZhLnV0aWwuVGltZXI7CiBpbXBvcnQgamF2YS51dGlsLlRpbWVyVGFzazsKQEAgLTQ0Nyw2ICs0NDYsNyBAQAogICAgICAgICBDb25zdW1lcklyU2VydmljZSBjb25zdW1lcklyID0gbnVsbDsKICAgICAgICAgTW1zU2VydmljZUJyb2tlciBtbXNTZXJ2aWNlID0gbnVsbDsKICAgICAgICAgRW50cm9weU1peGVyIGVudHJvcHlNaXhlciA9IG51bGw7CisgICAgICAgIFZyTWFuYWdlclNlcnZpY2UgdnJNYW5hZ2VyU2VydmljZSA9IG51bGw7CiAKICAgICAgICAgYm9vbGVhbiBkaXNhYmxlU3RvcmFnZSA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0Qm9vbGVhbigiY29uZmlnLmRpc2FibGVfc3RvcmFnZSIsIGZhbHNlKTsKICAgICAgICAgYm9vbGVhbiBkaXNhYmxlQmx1ZXRvb3RoID0gU3lzdGVtUHJvcGVydGllcy5nZXRCb29sZWFuKCJjb25maWcuZGlzYWJsZV9ibHVldG9vdGgiLCBmYWxzZSk7CkBAIC01MzIsNiArNTMyLDEwIEBACiAgICAgICAgICAgICBTZXJ2aWNlTWFuYWdlci5hZGRTZXJ2aWNlKENvbnRleHQuSU5QVVRfU0VSVklDRSwgaW5wdXRNYW5hZ2VyKTsKICAgICAgICAgICAgIFRyYWNlLnRyYWNlRW5kKFRyYWNlLlRSQUNFX1RBR19TWVNURU1fU0VSVkVSKTsKIAorICAgICAgICAgICAgdHJhY2VCZWdpbkFuZFNsb2coIlN0YXJ0VnJNYW5hZ2VyU2VydmljZSIpOworICAgICAgICAgICAgbVN5c3RlbVNlcnZpY2VNYW5hZ2VyLnN0YXJ0U2VydmljZShWck1hbmFnZXJTZXJ2aWNlLmNsYXNzKTsKKyAgICAgICAgICAgIFRyYWNlLnRyYWNlRW5kKFRyYWNlLlRSQUNFX1RBR19TWVNURU1fU0VSVkVSKTsKKwogICAgICAgICAgICAgbUFjdGl2aXR5TWFuYWdlclNlcnZpY2Uuc2V0V2luZG93TWFuYWdlcih3bSk7CiAKICAgICAgICAgICAgIGlucHV0TWFuYWdlci5zZXRXaW5kb3dNYW5hZ2VyQ2FsbGJhY2tzKHdtLmdldElucHV0TW9uaXRvcigpKTsKQEAgLTEzMTgsNiArMTMyMiw3IEBACiAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CiAgICAgICAgIGludGVudC5zZXRDb21wb25lbnQobmV3IENvbXBvbmVudE5hbWUoImNvbS5hbmRyb2lkLnN5c3RlbXVpIiwKICAgICAgICAgICAgICAgICAgICAgImNvbS5hbmRyb2lkLnN5c3RlbXVpLlN5c3RlbVVJU2VydmljZSIpKTsKKyAgICAgICAgaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0RFQlVHX0VOQ1JZUFRJT05fVFJJQUdFRCk7CiAgICAgICAgIC8vU2xvZy5kKFRBRywgIlN0YXJ0aW5nIHNlcnZpY2U6ICIgKyBpbnRlbnQpOwogICAgICAgICBjb250ZXh0LnN0YXJ0U2VydmljZUFzVXNlcihpbnRlbnQsIFVzZXJIYW5kbGUuU1lTVEVNKTsKICAgICB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9wcmludC9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wcmludC9QcmludE1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9wcmludC9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wcmludC9QcmludE1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggZjE4NjE3ZS4uZDVmMzg0ZCAxMDA2NDQKLS0tIGEvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvUHJpbnRNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL3ByaW50L2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ByaW50L1ByaW50TWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMjcsNiArMjcsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uVXNlckluZm87CiBpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOwogaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKIGltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKQEAgLTE3Nyw2ICsxNzgsMjUgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgSWNvbiBnZXRDdXN0b21QcmludGVySWNvbihQcmludGVySWQgcHJpbnRlcklkLCBpbnQgdXNlcklkKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgcmVzb2x2ZWRVc2VySWQgPSByZXNvbHZlQ2FsbGluZ1VzZXJFbmZvcmNpbmdQZXJtaXNzaW9ucyh1c2VySWQpOworICAgICAgICAgICAgZmluYWwgVXNlclN0YXRlIHVzZXJTdGF0ZTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgICAgICAvLyBPbmx5IHRoZSBjdXJyZW50IGdyb3VwIG1lbWJlcnMgY2FuIGdldCB0aGUgcHJpbnRlciBpY29ucy4KKyAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZUNhbGxpbmdQcm9maWxlUGFyZW50TG9ja2VkKHJlc29sdmVkVXNlcklkKSAhPSBnZXRDdXJyZW50VXNlcklkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVzZXJTdGF0ZSA9IGdldE9yQ3JlYXRlVXNlclN0YXRlTG9ja2VkKHJlc29sdmVkVXNlcklkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIGxvbmcgaWRlbnRpdHkgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJTdGF0ZS5nZXRDdXN0b21QcmludGVySWNvbihwcmludGVySWQpOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudGl0eSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgY2FuY2VsUHJpbnRKb2IoUHJpbnRKb2JJZCBwcmludEpvYklkLCBpbnQgYXBwSWQsIGludCB1c2VySWQpIHsKICAgICAgICAgICAgIGZpbmFsIGludCByZXNvbHZlZFVzZXJJZCA9IHJlc29sdmVDYWxsaW5nVXNlckVuZm9yY2luZ1Blcm1pc3Npb25zKHVzZXJJZCk7CiAgICAgICAgICAgICBmaW5hbCBpbnQgcmVzb2x2ZWRBcHBJZDsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL3ByaW50L2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ByaW50L1JlbW90ZVByaW50U2VydmljZS5qYXZhIGIvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvUmVtb3RlUHJpbnRTZXJ2aWNlLmphdmEKaW5kZXggNzdhNDdmOC4uMGFmMTUyNSAxMDA2NDQKLS0tIGEvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvUmVtb3RlUHJpbnRTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvUmVtb3RlUHJpbnRTZXJ2aWNlLmphdmEKQEAgLTI0LDYgKzI0LDcgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFyY2VsZWRMaXN0U2xpY2U7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7CkBAIC05OCw2ICs5OSwxNSBAQAogICAgICAgICBwdWJsaWMgdm9pZCBvblByaW50ZXJzQWRkZWQoTGlzdDxQcmludGVySW5mbz4gcHJpbnRlcnMpOwogICAgICAgICBwdWJsaWMgdm9pZCBvblByaW50ZXJzUmVtb3ZlZChMaXN0PFByaW50ZXJJZD4gcHJpbnRlcklkcyk7CiAgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZURpZWQoUmVtb3RlUHJpbnRTZXJ2aWNlIHNlcnZpY2UpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBIYW5kbGUgdGhhdCBhIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIgd2FzIGxvYWRlZC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHByaW50ZXJJZCB0aGUgaWQgb2YgdGhlIHByaW50ZXIgdGhlIGljb24gYmVsb25ncyB0bworICAgICAgICAgKiBAcGFyYW0gaWNvbiB0aGUgaWNvbiB0aGF0IHdhcyBsb2FkZWQKKyAgICAgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgb25DdXN0b21QcmludGVySWNvbkxvYWRlZChQcmludGVySWQgcHJpbnRlcklkLCBJY29uIGljb24pOwogICAgIH0KIAogICAgIHB1YmxpYyBSZW1vdGVQcmludFNlcnZpY2UoQ29udGV4dCBjb250ZXh0LCBDb21wb25lbnROYW1lIGNvbXBvbmVudE5hbWUsIGludCB1c2VySWQsCkBAIC00MDQsNiArNDE0LDIyIEBACiAgICAgICAgICAgICAgICAgcHJpbnRlcklkKS5zZW5kVG9UYXJnZXQoKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBSZXF1ZXN0IHRoZSBjdXN0b20gcHJpbnRlciBpY29uIGZvciBhIHByaW50ZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJpbnRlcklkIHRoZSBpZCBvZiB0aGUgcHJpbnRlciB0aGUgaWNvbiBzaG91bGQgYmUgbG9hZGVkIGZvcgorICAgICAqIEBzZWUgYW5kcm9pZC5wcmludC5QcmludGVySW5mby5CdWlsZGVyI3NldEhhc0N1c3RvbVByaW50ZXJJY29uKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0Q3VzdG9tUHJpbnRlckljb24oUHJpbnRlcklkIHByaW50ZXJJZCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGlzQm91bmQoKSkgeworICAgICAgICAgICAgICAgIG1QcmludFNlcnZpY2UucmVxdWVzdEN1c3RvbVByaW50ZXJJY29uKHByaW50ZXJJZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiByZSkgeworICAgICAgICAgICAgU2xvZy5lKExPR19UQUcsICJFcnJvciByZXF1ZXN0aW5nIGljb24gZm9yICIgKyBwcmludGVySWQsIHJlKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHByaXZhdGUgdm9pZCBoYW5kbGVTdGFydFByaW50ZXJTdGF0ZVRyYWNraW5nKGZpbmFsIFByaW50ZXJJZCBwcmludGVySWQpIHsKICAgICAgICAgdGhyb3dJZkRlc3Ryb3llZCgpOwogICAgICAgICAvLyBUYWtlIGEgbm90ZSB3ZSBhcmUgdHJhY2tpbmcgdGhlIHByaW50ZXIuCkBAIC04NDIsNSArODY4LDE5IEBACiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBwcmludGVyIGlkOiAiICsgcHJpbnRlcklkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKFByaW50ZXJJZCBwcmludGVySWQsIEljb24gaWNvbikKKyAgICAgICAgICAgICAgICB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIFJlbW90ZVByaW50U2VydmljZSBzZXJ2aWNlID0gbVdlYWtTZXJ2aWNlLmdldCgpOworICAgICAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgaWRlbnRpdHkgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLm1DYWxsYmFja3Mub25DdXN0b21QcmludGVySWNvbkxvYWRlZChwcmludGVySWQsIGljb24pOworICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50aXR5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9wcmludC9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9wcmludC9SZW1vdGVQcmludFNwb29sZXIuamF2YSBiL3NlcnZpY2VzL3ByaW50L2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ByaW50L1JlbW90ZVByaW50U3Bvb2xlci5qYXZhCmluZGV4IGM1MDZiNmYuLjQwYTg4ODAgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL3ByaW50L2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ByaW50L1JlbW90ZVByaW50U3Bvb2xlci5qYXZhCisrKyBiL3NlcnZpY2VzL3ByaW50L2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ByaW50L1JlbW90ZVByaW50U3Bvb2xlci5qYXZhCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb247CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5JY29uOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuQnVpbGQ7CiBpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwpAQCAtMzUsNiArMzYsNyBAQAogaW1wb3J0IGFuZHJvaWQucHJpbnQuSVByaW50U3Bvb2xlckNsaWVudDsKIGltcG9ydCBhbmRyb2lkLnByaW50LlByaW50Sm9iSWQ7CiBpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludEpvYkluZm87CitpbXBvcnQgYW5kcm9pZC5wcmludC5QcmludGVySWQ7CiBpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CiBpbXBvcnQgYW5kcm9pZC51dGlsLlRpbWVkUmVtb3RlQ2FsbGVyOwogCkBAIC03Miw2ICs3NCwxNSBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCBTZXRQcmludEpvYlRhZ0NhbGxlciBtU2V0UHJpbnRKb2JUYWdDYWxsZXIgPSBuZXcgU2V0UHJpbnRKb2JUYWdDYWxsZXIoKTsKIAorICAgIHByaXZhdGUgZmluYWwgT25DdXN0b21QcmludGVySWNvbkxvYWRlZENhbGxlciBtQ3VzdG9tUHJpbnRlckljb25Mb2FkZWRDYWxsZXIgPQorICAgICAgICAgICAgbmV3IE9uQ3VzdG9tUHJpbnRlckljb25Mb2FkZWRDYWxsZXIoKTsKKworICAgIHByaXZhdGUgZmluYWwgQ2xlYXJDdXN0b21QcmludGVySWNvbkNhY2hlQ2FsbGVyIG1DbGVhckN1c3RvbVByaW50ZXJJY29uQ2FjaGUgPQorICAgICAgICAgICAgbmV3IENsZWFyQ3VzdG9tUHJpbnRlckljb25DYWNoZUNhbGxlcigpOworCisgICAgcHJpdmF0ZSBmaW5hbCBHZXRDdXN0b21QcmludGVySWNvbkNhbGxlciBtR2V0Q3VzdG9tUHJpbnRlckljb25DYWxsZXIgPQorICAgICAgICAgICAgbmV3IEdldEN1c3RvbVByaW50ZXJJY29uQ2FsbGVyKCk7CisKICAgICBwcml2YXRlIGZpbmFsIFNlcnZpY2VDb25uZWN0aW9uIG1TZXJ2aWNlQ29ubmVjdGlvbiA9IG5ldyBNeVNlcnZpY2VDb25uZWN0aW9uKCk7CiAKICAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CkBAIC0yODcsNiArMjk4LDk2IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgdGhhdCBhIGN1c3RvbSBpY29uIGZvciBhIHByaW50ZXIgd2FzIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIGJlbG9uZ3MgdG8KKyAgICAgKiBAcGFyYW0gaWNvbiB0aGUgaWNvbiB0aGF0IHdhcyBsb2FkZWQKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgb25DdXN0b21QcmludGVySWNvbkxvYWRlZChATm9uTnVsbCBQcmludGVySWQgcHJpbnRlcklkLAorICAgICAgICAgICAgQE51bGxhYmxlIEljb24gaWNvbikgeworICAgICAgICB0aHJvd0lmQ2FsbGVkT25NYWluVGhyZWFkKCk7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHRocm93SWZEZXN0cm95ZWRMb2NrZWQoKTsKKyAgICAgICAgICAgIG1DYW5VbmJpbmQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgbUN1c3RvbVByaW50ZXJJY29uTG9hZGVkQ2FsbGVyLm9uQ3VzdG9tUHJpbnRlckljb25Mb2FkZWQoZ2V0UmVtb3RlSW5zdGFuY2VMYXp5KCksCisgICAgICAgICAgICAgICAgICAgIHByaW50ZXJJZCwgaWNvbik7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbnxUaW1lb3V0RXhjZXB0aW9uIHJlKSB7CisgICAgICAgICAgICBTbG9nLmUoTE9HX1RBRywgIkVycm9yIGxvYWRpbmcgbmV3IGN1c3RvbSBwcmludGVyIGljb24uIiwgcmUpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgU2xvZy5pKExPR19UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAiW3VzZXI6ICIgKyBtVXNlckhhbmRsZS5nZXRJZGVudGlmaWVyKCkgKyAiXSBvbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgICAgICBtQ2FuVW5iaW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtTG9jay5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgY3VzdG9tIGljb24gZm9yIGEgcHJpbnRlci4gSWYgdGhlIGljb24gaXMgbm90IGNhY2hlZCwgdGhlIGljb24gaXMKKyAgICAgKiByZXF1ZXN0ZWQgYXN5bmNocm9ub3VzbHkuIE9uY2UgaXQgaXMgYXZhaWxhYmxlIHRoZSBwcmludGVyIGlzIHVwZGF0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJpbnRlcklkIHRoZSBpZCBvZiB0aGUgcHJpbnRlciB0aGUgaWNvbiBzaG91bGQgYmUgbG9hZGVkIGZvcgorICAgICAqIEByZXR1cm4gdGhlIGN1c3RvbSBpY29uIHRvIGJlIHVzZWQgZm9yIHRoZSBwcmludGVyIG9yIG51bGwgaWYgdGhlIGljb24gaXMKKyAgICAgKiAgICAgICAgIG5vdCB5ZXQgYXZhaWxhYmxlCisgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBATnVsbGFibGUgSWNvbiBnZXRDdXN0b21QcmludGVySWNvbihATm9uTnVsbCBQcmludGVySWQgcHJpbnRlcklkKSB7CisgICAgICAgIHRocm93SWZDYWxsZWRPbk1haW5UaHJlYWQoKTsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgdGhyb3dJZkRlc3Ryb3llZExvY2tlZCgpOworICAgICAgICAgICAgbUNhblVuYmluZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbUdldEN1c3RvbVByaW50ZXJJY29uQ2FsbGVyLmdldEN1c3RvbVByaW50ZXJJY29uKGdldFJlbW90ZUluc3RhbmNlTGF6eSgpLAorICAgICAgICAgICAgICAgICAgICBwcmludGVySWQpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb258VGltZW91dEV4Y2VwdGlvbiByZSkgeworICAgICAgICAgICAgU2xvZy5lKExPR19UQUcsICJFcnJvciBnZXR0aW5nIGN1c3RvbSBwcmludGVyIGljb24uIiwgcmUpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmkoTE9HX1RBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICJbdXNlcjogIiArIG1Vc2VySGFuZGxlLmdldElkZW50aWZpZXIoKSArICJdIGdldEN1c3RvbVByaW50ZXJJY29uKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgICAgICBtQ2FuVW5iaW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtTG9jay5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENsZWFyIHRoZSBjdXN0b20gcHJpbnRlciBpY29uIGNhY2hlCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXJDdXN0b21QcmludGVySWNvbkNhY2hlKCkgeworICAgICAgICB0aHJvd0lmQ2FsbGVkT25NYWluVGhyZWFkKCk7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHRocm93SWZEZXN0cm95ZWRMb2NrZWQoKTsKKyAgICAgICAgICAgIG1DYW5VbmJpbmQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNsZWFyQ3VzdG9tUHJpbnRlckljb25DYWNoZS5jbGVhckN1c3RvbVByaW50ZXJJY29uQ2FjaGUoZ2V0UmVtb3RlSW5zdGFuY2VMYXp5KCkpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb258VGltZW91dEV4Y2VwdGlvbiByZSkgeworICAgICAgICAgICAgU2xvZy5lKExPR19UQUcsICJFcnJvciBjbGVhcmluZyBjdXN0b20gcHJpbnRlciBpY29uIGNhY2hlLiIsIHJlKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgIFNsb2cuaShMT0dfVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgIlt1c2VyOiAiICsgbVVzZXJIYW5kbGUuZ2V0SWRlbnRpZmllcigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIl0gY2xlYXJDdXN0b21QcmludGVySWNvbkNhY2hlKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgICAgICBtQ2FuVW5iaW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtTG9jay5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIHNldFByaW50Sm9iVGFnKFByaW50Sm9iSWQgcHJpbnRKb2JJZCwgU3RyaW5nIHRhZykgewogICAgICAgICB0aHJvd0lmQ2FsbGVkT25NYWluVGhyZWFkKCk7CiAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKQEAgLTYzMiw2ICs3MzMsNjkgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIE9uQ3VzdG9tUHJpbnRlckljb25Mb2FkZWRDYWxsZXIgZXh0ZW5kcyBUaW1lZFJlbW90ZUNhbGxlcjxWb2lkPiB7CisgICAgICAgIHByaXZhdGUgZmluYWwgSVByaW50U3Bvb2xlckNhbGxiYWNrcyBtQ2FsbGJhY2s7CisKKyAgICAgICAgcHVibGljIE9uQ3VzdG9tUHJpbnRlckljb25Mb2FkZWRDYWxsZXIoKSB7CisgICAgICAgICAgICBzdXBlcihUaW1lZFJlbW90ZUNhbGxlci5ERUZBVUxUX0NBTExfVElNRU9VVF9NSUxMSVMpOworICAgICAgICAgICAgbUNhbGxiYWNrID0gbmV3IEJhc2VQcmludFNwb29sZXJTZXJ2aWNlQ2FsbGJhY2tzKCkgeworICAgICAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ3VzdG9tUHJpbnRlckljb25DYWNoZWQoaW50IHNlcXVlbmNlKSB7CisgICAgICAgICAgICAgICAgICAgIG9uUmVtb3RlTWV0aG9kUmVzdWx0KG51bGwsIHNlcXVlbmNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFZvaWQgb25DdXN0b21QcmludGVySWNvbkxvYWRlZChJUHJpbnRTcG9vbGVyIHRhcmdldCwgUHJpbnRlcklkIHByaW50ZXJJZCwKKyAgICAgICAgICAgICAgICBJY29uIGljb24pIHRocm93cyBSZW1vdGVFeGNlcHRpb24sIFRpbWVvdXRFeGNlcHRpb24geworICAgICAgICAgICAgZmluYWwgaW50IHNlcXVlbmNlID0gb25CZWZvcmVSZW1vdGVDYWxsKCk7CisgICAgICAgICAgICB0YXJnZXQub25DdXN0b21QcmludGVySWNvbkxvYWRlZChwcmludGVySWQsIGljb24sIG1DYWxsYmFjaywgc2VxdWVuY2UpOworICAgICAgICAgICAgcmV0dXJuIGdldFJlc3VsdFRpbWVkKHNlcXVlbmNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIENsZWFyQ3VzdG9tUHJpbnRlckljb25DYWNoZUNhbGxlciBleHRlbmRzIFRpbWVkUmVtb3RlQ2FsbGVyPFZvaWQ+IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBJUHJpbnRTcG9vbGVyQ2FsbGJhY2tzIG1DYWxsYmFjazsKKworICAgICAgICBwdWJsaWMgQ2xlYXJDdXN0b21QcmludGVySWNvbkNhY2hlQ2FsbGVyKCkgeworICAgICAgICAgICAgc3VwZXIoVGltZWRSZW1vdGVDYWxsZXIuREVGQVVMVF9DQUxMX1RJTUVPVVRfTUlMTElTKTsKKyAgICAgICAgICAgIG1DYWxsYmFjayA9IG5ldyBCYXNlUHJpbnRTcG9vbGVyU2VydmljZUNhbGxiYWNrcygpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBjdXN0b21QcmludGVySWNvbkNhY2hlQ2xlYXJlZChpbnQgc2VxdWVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgb25SZW1vdGVNZXRob2RSZXN1bHQobnVsbCwgc2VxdWVuY2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVm9pZCBjbGVhckN1c3RvbVByaW50ZXJJY29uQ2FjaGUoSVByaW50U3Bvb2xlciB0YXJnZXQpCisgICAgICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiwgVGltZW91dEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBmaW5hbCBpbnQgc2VxdWVuY2UgPSBvbkJlZm9yZVJlbW90ZUNhbGwoKTsKKyAgICAgICAgICAgIHRhcmdldC5jbGVhckN1c3RvbVByaW50ZXJJY29uQ2FjaGUobUNhbGxiYWNrLCBzZXF1ZW5jZSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0UmVzdWx0VGltZWQoc2VxdWVuY2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgR2V0Q3VzdG9tUHJpbnRlckljb25DYWxsZXIgZXh0ZW5kcyBUaW1lZFJlbW90ZUNhbGxlcjxJY29uPiB7CisgICAgICAgIHByaXZhdGUgZmluYWwgSVByaW50U3Bvb2xlckNhbGxiYWNrcyBtQ2FsbGJhY2s7CisKKyAgICAgICAgcHVibGljIEdldEN1c3RvbVByaW50ZXJJY29uQ2FsbGVyKCkgeworICAgICAgICAgICAgc3VwZXIoVGltZWRSZW1vdGVDYWxsZXIuREVGQVVMVF9DQUxMX1RJTUVPVVRfTUlMTElTKTsKKyAgICAgICAgICAgIG1DYWxsYmFjayA9IG5ldyBCYXNlUHJpbnRTcG9vbGVyU2VydmljZUNhbGxiYWNrcygpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkdldEN1c3RvbVByaW50ZXJJY29uUmVzdWx0KEljb24gaWNvbiwgaW50IHNlcXVlbmNlKSB7CisgICAgICAgICAgICAgICAgICAgIG9uUmVtb3RlTWV0aG9kUmVzdWx0KGljb24sIHNlcXVlbmNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEljb24gZ2V0Q3VzdG9tUHJpbnRlckljb24oSVByaW50U3Bvb2xlciB0YXJnZXQsIFByaW50ZXJJZCBwcmludGVySWQpCisgICAgICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiwgVGltZW91dEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBmaW5hbCBpbnQgc2VxdWVuY2UgPSBvbkJlZm9yZVJlbW90ZUNhbGwoKTsKKyAgICAgICAgICAgIHRhcmdldC5nZXRDdXN0b21QcmludGVySWNvbihwcmludGVySWQsIG1DYWxsYmFjaywgc2VxdWVuY2UpOworICAgICAgICAgICAgcmV0dXJuIGdldFJlc3VsdFRpbWVkKHNlcXVlbmNlKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHByaXZhdGUgc3RhdGljIGFic3RyYWN0IGNsYXNzIEJhc2VQcmludFNwb29sZXJTZXJ2aWNlQ2FsbGJhY2tzCiAgICAgICAgICAgICBleHRlbmRzIElQcmludFNwb29sZXJDYWxsYmFja3MuU3R1YiB7CiAgICAgICAgIEBPdmVycmlkZQpAQCAtNjU4LDYgKzgyMiwyMSBAQAogICAgICAgICBwdWJsaWMgdm9pZCBvblNldFByaW50Sm9iVGFnUmVzdWx0KGJvb2xlYW4gc3VjY2VzcywgaW50IHNlcXVlbmNlKSB7CiAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovCiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25DdXN0b21QcmludGVySWNvbkNhY2hlZChpbnQgc2VxdWVuY2UpIHsKKyAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi8KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvbkdldEN1c3RvbVByaW50ZXJJY29uUmVzdWx0KEBOdWxsYWJsZSBJY29uIGljb24sIGludCBzZXF1ZW5jZSkgeworICAgICAgICAgICAgLyogZG8gbm90aGluZyAqLworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGN1c3RvbVByaW50ZXJJY29uQ2FjaGVDbGVhcmVkKGludCBzZXF1ZW5jZSkgeworICAgICAgICAgICAgLyogZG8gbm90aGluZyAqLworICAgICAgICB9CiAgICAgfQogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgUHJpbnRTcG9vbGVyQ2xpZW50IGV4dGVuZHMgSVByaW50U3Bvb2xlckNsaWVudC5TdHViIHsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL3ByaW50L2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3ByaW50L1VzZXJTdGF0ZS5qYXZhIGIvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvVXNlclN0YXRlLmphdmEKaW5kZXggNmE1MGE2ZS4uNjNkMzMwMSAxMDA2NDQKLS0tIGEvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvVXNlclN0YXRlLmphdmEKKysrIGIvc2VydmljZXMvcHJpbnQvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvcHJpbnQvVXNlclN0YXRlLmphdmEKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFyY2VsZWRMaXN0U2xpY2U7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkljb247CiBpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwogaW1wb3J0IGFuZHJvaWQub3MuQXN5bmNUYXNrOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwpAQCAtMjcxLDYgKzI3MiwyOCBAQAogICAgICAgICByZXR1cm4gcHJpbnRKb2I7CiAgICAgfQogCisgICAgLyoqCisgICAgICogR2V0IHRoZSBjdXN0b20gaWNvbiBmb3IgYSBwcmludGVyLiBJZiB0aGUgaWNvbiBpcyBub3QgY2FjaGVkLCB0aGUgaWNvbiBpcworICAgICAqIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseS4gT25jZSBpdCBpcyBhdmFpbGFibGUgdGhlIHByaW50ZXIgaXMgdXBkYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIHNob3VsZCBiZSBsb2FkZWQgZm9yCisgICAgICogQHJldHVybiB0aGUgY3VzdG9tIGljb24gdG8gYmUgdXNlZCBmb3IgdGhlIHByaW50ZXIgb3IgbnVsbCBpZiB0aGUgaWNvbiBpcworICAgICAqICAgICAgICAgbm90IHlldCBhdmFpbGFibGUKKyAgICAgKiBAc2VlIGFuZHJvaWQucHJpbnQuUHJpbnRlckluZm8uQnVpbGRlciNzZXRIYXNDdXN0b21QcmludGVySWNvbigpCisgICAgICovCisgICAgcHVibGljIEljb24gZ2V0Q3VzdG9tUHJpbnRlckljb24oUHJpbnRlcklkIHByaW50ZXJJZCkgeworICAgICAgICBJY29uIGljb24gPSBtU3Bvb2xlci5nZXRDdXN0b21QcmludGVySWNvbihwcmludGVySWQpOworCisgICAgICAgIGlmIChpY29uID09IG51bGwpIHsKKyAgICAgICAgICAgIFJlbW90ZVByaW50U2VydmljZSBzZXJ2aWNlID0gbUFjdGl2ZVNlcnZpY2VzLmdldChwcmludGVySWQuZ2V0U2VydmljZU5hbWUoKSk7CisgICAgICAgICAgICBpZiAoc2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2VydmljZS5yZXF1ZXN0Q3VzdG9tUHJpbnRlckljb24ocHJpbnRlcklkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpY29uOworICAgIH0KKwogICAgIHB1YmxpYyB2b2lkIGNhbmNlbFByaW50Sm9iKFByaW50Sm9iSWQgcHJpbnRKb2JJZCwgaW50IGFwcElkKSB7CiAgICAgICAgIFByaW50Sm9iSW5mbyBwcmludEpvYkluZm8gPSBtU3Bvb2xlci5nZXRQcmludEpvYkluZm8ocHJpbnRKb2JJZCwgYXBwSWQpOwogICAgICAgICBpZiAocHJpbnRKb2JJbmZvID09IG51bGwpIHsKQEAgLTM0NSw2ICszNjgsOCBAQAogICAgICAgICAgICAgdGhyb3dJZkRlc3Ryb3llZExvY2tlZCgpOwogCiAgICAgICAgICAgICBpZiAobVByaW50ZXJEaXNjb3ZlcnlTZXNzaW9uID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtU3Bvb2xlci5jbGVhckN1c3RvbVByaW50ZXJJY29uQ2FjaGUoKTsKKwogICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvIG5vdCBoYXZlIGEgc2Vzc2lvbiwgdGVsbCBhbGwgc2VydmljZSB0byBjcmVhdGUgb25lLgogICAgICAgICAgICAgICAgIG1QcmludGVyRGlzY292ZXJ5U2Vzc2lvbiA9IG5ldyBQcmludGVyRGlzY292ZXJ5U2Vzc2lvbk1lZGlhdG9yKG1Db250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgIEBPdmVycmlkZQpAQCAtNTMzLDYgKzU1OCwyMCBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ3VzdG9tUHJpbnRlckljb25Mb2FkZWQoUHJpbnRlcklkIHByaW50ZXJJZCwgSWNvbiBpY29uKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHRocm93SWZEZXN0cm95ZWRMb2NrZWQoKTsKKworICAgICAgICAgICAgLy8gTm8gc2Vzc2lvbiAtIG5vdGhpbmcgdG8gZG8uCisgICAgICAgICAgICBpZiAobVByaW50ZXJEaXNjb3ZlcnlTZXNzaW9uID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU3Bvb2xlci5vbkN1c3RvbVByaW50ZXJJY29uTG9hZGVkKHByaW50ZXJJZCwgaWNvbik7CisgICAgICAgICAgICBtUHJpbnRlckRpc2NvdmVyeVNlc3Npb24ub25DdXN0b21QcmludGVySWNvbkxvYWRlZExvY2tlZChwcmludGVySWQpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlRGllZChSZW1vdGVQcmludFNlcnZpY2Ugc2VydmljZSkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7CiAgICAgICAgICAgICB0aHJvd0lmRGVzdHJveWVkTG9ja2VkKCk7CkBAIC05NzMsMTYgKzEwMTIsMTYgQEAKIAogICAgICAgICBwcml2YXRlIGZpbmFsIExpc3Q8UHJpbnRlcklkPiBtU3RhdGVUcmFja2VkUHJpbnRlcnMgPSBuZXcgQXJyYXlMaXN0PFByaW50ZXJJZD4oKTsKIAotICAgICAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXI7CisgICAgICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtU2Vzc2lvbkhhbmRsZXI7CiAKICAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1Jc0Rlc3Ryb3llZDsKIAogICAgICAgICBwdWJsaWMgUHJpbnRlckRpc2NvdmVyeVNlc3Npb25NZWRpYXRvcihDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgICAgIG1IYW5kbGVyID0gbmV3IFNlc3Npb25IYW5kbGVyKGNvbnRleHQuZ2V0TWFpbkxvb3BlcigpKTsKKyAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlciA9IG5ldyBTZXNzaW9uSGFuZGxlcihjb250ZXh0LmdldE1haW5Mb29wZXIoKSk7CiAgICAgICAgICAgICAvLyBLaWNrIG9mZiB0aGUgc2Vzc2lvbiBjcmVhdGlvbi4KICAgICAgICAgICAgIExpc3Q8UmVtb3RlUHJpbnRTZXJ2aWNlPiBzZXJ2aWNlcyA9IG5ldyBBcnJheUxpc3Q8UmVtb3RlUHJpbnRTZXJ2aWNlPigKICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZVNlcnZpY2VzLnZhbHVlcygpKTsKLSAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU2Vzc2lvbkhhbmRsZXIKKyAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgIC5NU0dfRElTUEFUQ0hfQ1JFQVRFX1BSSU5URVJfRElTQ09WRVJZX1NFU1NJT04sIHNlcnZpY2VzKQogICAgICAgICAgICAgICAgICAgICAuc2VuZFRvVGFyZ2V0KCk7CiAgICAgICAgIH0KQEAgLTk5Nyw3ICsxMDM2LDcgQEAKICAgICAgICAgICAgICAgICBTb21lQXJncyBhcmdzID0gU29tZUFyZ3Mub2J0YWluKCk7CiAgICAgICAgICAgICAgICAgYXJncy5hcmcxID0gb2JzZXJ2ZXI7CiAgICAgICAgICAgICAgICAgYXJncy5hcmcyID0gcHJpbnRlcnM7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShTZXNzaW9uSGFuZGxlci5NU0dfUFJJTlRFUlNfQURERUQsCisgICAgICAgICAgICAgICAgbVNlc3Npb25IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU2Vzc2lvbkhhbmRsZXIuTVNHX1BSSU5URVJTX0FEREVELAogICAgICAgICAgICAgICAgICAgICAgICAgYXJncykuc2VuZFRvVGFyZ2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwNDAsNyArMTA3OSw3IEBACiAgICAgICAgICAgICBTb21lQXJncyBhcmdzID0gU29tZUFyZ3Mub2J0YWluKCk7CiAgICAgICAgICAgICBhcmdzLmFyZzEgPSBzZXJ2aWNlczsKICAgICAgICAgICAgIGFyZ3MuYXJnMiA9IHByaW9yaXR5TGlzdDsKLSAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU2Vzc2lvbkhhbmRsZXIKKyAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgIC5NU0dfRElTUEFUQ0hfU1RBUlRfUFJJTlRFUl9ESVNDT1ZFUlksIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIC5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgfQpAQCAtMTA2MCw3ICsxMDk5LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIExpc3Q8UmVtb3RlUHJpbnRTZXJ2aWNlPiBzZXJ2aWNlcyA9IG5ldyBBcnJheUxpc3Q8UmVtb3RlUHJpbnRTZXJ2aWNlPigKICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZVNlcnZpY2VzLnZhbHVlcygpKTsKLSAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU2Vzc2lvbkhhbmRsZXIKKyAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgIC5NU0dfRElTUEFUQ0hfU1RPUF9QUklOVEVSX0RJU0NPVkVSWSwgc2VydmljZXMpCiAgICAgICAgICAgICAgICAgICAgIC5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgfQpAQCAtMTA5NCw3ICsxMTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgU29tZUFyZ3MgYXJncyA9IFNvbWVBcmdzLm9idGFpbigpOwogICAgICAgICAgICAgICAgICAgICBhcmdzLmFyZzEgPSBzZXJ2aWNlOwogICAgICAgICAgICAgICAgICAgICBhcmdzLmFyZzIgPSB1cGRhdGVMaXN0OwotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCisgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLk1TR19WQUxJREFURV9QUklOVEVSUywgYXJncykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2VuZFRvVGFyZ2V0KCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTEyNiw3ICsxMTY1LDcgQEAKICAgICAgICAgICAgIFNvbWVBcmdzIGFyZ3MgPSBTb21lQXJncy5vYnRhaW4oKTsKICAgICAgICAgICAgIGFyZ3MuYXJnMSA9IHNlcnZpY2U7CiAgICAgICAgICAgICBhcmdzLmFyZzIgPSBwcmludGVySWQ7Ci0gICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCisgICAgICAgICAgICBtU2Vzc2lvbkhhbmRsZXIub2J0YWluTWVzc2FnZShTZXNzaW9uSGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAuTVNHX1NUQVJUX1BSSU5URVJfU1RBVEVfVFJBQ0tJTkcsIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgIC5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgfQpAQCAtMTE1Myw3ICsxMTkyLDcgQEAKICAgICAgICAgICAgIFNvbWVBcmdzIGFyZ3MgPSBTb21lQXJncy5vYnRhaW4oKTsKICAgICAgICAgICAgIGFyZ3MuYXJnMSA9IHNlcnZpY2U7CiAgICAgICAgICAgICBhcmdzLmFyZzIgPSBwcmludGVySWQ7Ci0gICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCisgICAgICAgICAgICBtU2Vzc2lvbkhhbmRsZXIub2J0YWluTWVzc2FnZShTZXNzaW9uSGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAuTVNHX1NUT1BfUFJJTlRFUl9TVEFURV9UUkFDS0lORywgYXJncykKICAgICAgICAgICAgICAgICAgICAgLnNlbmRUb1RhcmdldCgpOwogICAgICAgICB9CkBAIC0xMTgzLDcgKzEyMjIsNyBAQAogICAgICAgICAgICAgLy8gVGVsbCB0aGUgc2VydmljZXMgd2UgYXJlIGRvbmUuCiAgICAgICAgICAgICBMaXN0PFJlbW90ZVByaW50U2VydmljZT4gc2VydmljZXMgPSBuZXcgQXJyYXlMaXN0PFJlbW90ZVByaW50U2VydmljZT4oCiAgICAgICAgICAgICAgICAgICAgIG1BY3RpdmVTZXJ2aWNlcy52YWx1ZXMoKSk7Ci0gICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCisgICAgICAgICAgICBtU2Vzc2lvbkhhbmRsZXIub2J0YWluTWVzc2FnZShTZXNzaW9uSGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAuTVNHX0RJU1BBVENIX0RFU1RST1lfUFJJTlRFUl9ESVNDT1ZFUllfU0VTU0lPTiwgc2VydmljZXMpCiAgICAgICAgICAgICAgICAgICAgIC5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgfQpAQCAtMTIwOSw3ICsxMjQ4LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYWRkZWRQcmludGVycyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShTZXNzaW9uSGFuZGxlci5NU0dfRElTUEFUQ0hfUFJJTlRFUlNfQURERUQsCisgICAgICAgICAgICAgICAgbVNlc3Npb25IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU2Vzc2lvbkhhbmRsZXIuTVNHX0RJU1BBVENIX1BSSU5URVJTX0FEREVELAogICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRQcmludGVycykuc2VuZFRvVGFyZ2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEyMzQsNyArMTI3Myw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJlbW92ZWRQcmludGVySWRzICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyLk1TR19ESVNQQVRDSF9QUklOVEVSU19SRU1PVkVELAorICAgICAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyLk1TR19ESVNQQVRDSF9QUklOVEVSU19SRU1PVkVELAogICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZFByaW50ZXJJZHMpLnNlbmRUb1RhcmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMjUwLDYgKzEyODksMzcgQEAKICAgICAgICAgICAgIHNlcnZpY2UuZGVzdHJveSgpOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEhhbmRsZSB0aGF0IGEgY3VzdG9tIGljb24gZm9yIGEgcHJpbnRlciB3YXMgbG9hZGVkLgorICAgICAgICAgKgorICAgICAgICAgKiBUaGlzIGluY3JlbWVudHMgdGhlIGljb24gZ2VuZXJhdGlvbiBhbmQgYWRkcyB0aGUgcHJpbnRlciBhZ2FpbiB3aGljaCB0cmlnZ2VycyBhbiB1cGRhdGUKKyAgICAgICAgICogaW4gYWxsIHVzZXJzIG9mIHRoZSBjdXJyZW50bHkga25vd24gcHJpbnRlcnMuCisgICAgICAgICAqCisgICAgICAgICAqIEBwYXJhbSBwcmludGVySWQgdGhlIGlkIG9mIHRoZSBwcmludGVyIHRoZSBpY29uIGJlbG9uZ3MgdG8KKyAgICAgICAgICogQHNlZSBhbmRyb2lkLnByaW50LlByaW50ZXJJbmZvLkJ1aWxkZXIjc2V0SGFzQ3VzdG9tUHJpbnRlckljb24oKQorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgb25DdXN0b21QcmludGVySWNvbkxvYWRlZExvY2tlZChQcmludGVySWQgcHJpbnRlcklkKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAib25DdXN0b21QcmludGVySWNvbkxvYWRlZExvY2tlZCgpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUlzRGVzdHJveWVkKSB7CisgICAgICAgICAgICAgICAgTG9nLncoTE9HX1RBRywgIk5vdCB1cGRhdGluZyBwcmludGVyIC0gc2Vzc2lvbiBkZXN0cm95ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFByaW50ZXJJbmZvIHByaW50ZXIgPSBtUHJpbnRlcnMuZ2V0KHByaW50ZXJJZCk7CisgICAgICAgICAgICBpZiAocHJpbnRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgUHJpbnRlckluZm8gbmV3UHJpbnRlciA9IChuZXcgUHJpbnRlckluZm8uQnVpbGRlcihwcmludGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNDdXN0b21QcmludGVySWNvbkdlbigpLmJ1aWxkKCk7CisgICAgICAgICAgICAgICAgbVByaW50ZXJzLnB1dChwcmludGVySWQsIG5ld1ByaW50ZXIpOworCisgICAgICAgICAgICAgICAgQXJyYXlMaXN0PFByaW50ZXJJbmZvPiBhZGRlZFByaW50ZXJzID0gbmV3IEFycmF5TGlzdDw+KDEpOworICAgICAgICAgICAgICAgIGFkZGVkUHJpbnRlcnMuYWRkKG5ld1ByaW50ZXIpOworICAgICAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyLk1TR19ESVNQQVRDSF9QUklOVEVSU19BRERFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkUHJpbnRlcnMpLnNlbmRUb1RhcmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlRGllZExvY2tlZChSZW1vdGVQcmludFNlcnZpY2Ugc2VydmljZSkgewogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSByZXBvcnRlZCBieSB0aGF0IHNlcnZpY2UuCiAgICAgICAgICAgICByZW1vdmVQcmludGVyc0ZvclNlcnZpY2VMb2NrZWQoc2VydmljZS5nZXRDb21wb25lbnROYW1lKCkpOwpAQCAtMTI2MSwxMiArMTMzMSwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFRlbGwgdGhlIHNlcnZpY2UgdG8gY3JlYXRlIGEgc2Vzc2lvbi4KLSAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoCisgICAgICAgICAgICBtU2Vzc2lvbkhhbmRsZXIub2J0YWluTWVzc2FnZSgKICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkhhbmRsZXIuTVNHX0NSRUFURV9QUklOVEVSX0RJU0NPVkVSWV9TRVNTSU9OLAogICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlKS5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgICAgIC8vIFN0YXJ0IHByaW50ZXIgZGlzY292ZXJ5IGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgIGlmICghbVN0YXJ0ZWRQcmludGVyRGlzY292ZXJ5VG9rZW5zLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoCisgICAgICAgICAgICAgICAgbVNlc3Npb25IYW5kbGVyLm9idGFpbk1lc3NhZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgICBTZXNzaW9uSGFuZGxlci5NU0dfU1RBUlRfUFJJTlRFUl9ESVNDT1ZFUlksCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlKS5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgICAgIH0KQEAgLTEyNzgsNyArMTM0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFNvbWVBcmdzIGFyZ3MgPSBTb21lQXJncy5vYnRhaW4oKTsKICAgICAgICAgICAgICAgICAgICAgYXJncy5hcmcxID0gc2VydmljZTsKICAgICAgICAgICAgICAgICAgICAgYXJncy5hcmcyID0gcHJpbnRlcklkOwotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCisgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uSGFuZGxlci5vYnRhaW5NZXNzYWdlKFNlc3Npb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLk1TR19TVEFSVF9QUklOVEVSX1NUQVRFX1RSQUNLSU5HLCBhcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZW5kVG9UYXJnZXQoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMzQ4LDcgKzE0MTgsNyBAQAogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVtb3ZlZFByaW50ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIG1QcmludGVycy5yZW1vdmUocmVtb3ZlZFByaW50ZXJJZHMuZ2V0KGkpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZSgKKyAgICAgICAgICAgICAgICBtU2Vzc2lvbkhhbmRsZXIub2J0YWluTWVzc2FnZSgKICAgICAgICAgICAgICAgICAgICAgICAgIFNlc3Npb25IYW5kbGVyLk1TR19ESVNQQVRDSF9QUklOVEVSU19SRU1PVkVELAogICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZFByaW50ZXJJZHMpLnNlbmRUb1RhcmdldCgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvdGVsZWNvbW0vamF2YS9hbmRyb2lkL3RlbGVjb20vRGVmYXVsdERpYWxlck1hbmFnZXIuamF2YSBiL3RlbGVjb21tL2phdmEvYW5kcm9pZC90ZWxlY29tL0RlZmF1bHREaWFsZXJNYW5hZ2VyLmphdmEKaW5kZXggNTg1MmI4ZS4uMjdlZTgwNCAxMDA2NDQKLS0tIGEvdGVsZWNvbW0vamF2YS9hbmRyb2lkL3RlbGVjb20vRGVmYXVsdERpYWxlck1hbmFnZXIuamF2YQorKysgYi90ZWxlY29tbS9qYXZhL2FuZHJvaWQvdGVsZWNvbS9EZWZhdWx0RGlhbGVyTWFuYWdlci5qYXZhCkBAIC0xNTUsNyArMTU1LDggQEAKIAogICAgICAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgYXBwcyByZWdpc3RlcmVkIGZvciB0aGUgRElBTCBpbnRlbnQgd2l0aCBlbXB0eSBzY2hlbWUKICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9ESUFMKTsKLSAgICAgICAgTGlzdDxSZXNvbHZlSW5mbz4gcmVzb2x2ZUluZm9MaXN0ID0gcGFja2FnZU1hbmFnZXIucXVlcnlJbnRlbnRBY3Rpdml0aWVzKGludGVudCwgMCk7CisgICAgICAgIExpc3Q8UmVzb2x2ZUluZm8+IHJlc29sdmVJbmZvTGlzdCA9IHBhY2thZ2VNYW5hZ2VyLnF1ZXJ5SW50ZW50QWN0aXZpdGllcyhpbnRlbnQsCisgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuTUFUQ0hfRU5DUllQVElPTl9ERUZBVUxUKTsKIAogICAgICAgICBMaXN0PFN0cmluZz4gcGFja2FnZU5hbWVzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAKQEAgLTIwNyw4ICsyMDgsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8PigpOwotICAgICAgICBmaW5hbCBMaXN0PFJlc29sdmVJbmZvPiByZXNvbHZlSW5mb0xpc3QgPQotICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5xdWVyeUludGVudEFjdGl2aXRpZXMoaW50ZW50LCAwKTsKKyAgICAgICAgZmluYWwgTGlzdDxSZXNvbHZlSW5mbz4gcmVzb2x2ZUluZm9MaXN0ID0gY29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpCisgICAgICAgICAgICAgICAgLnF1ZXJ5SW50ZW50QWN0aXZpdGllcyhpbnRlbnQsIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0VOQ1JZUFRJT05fREVGQVVMVCk7CiAgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSByZXNvbHZlSW5mb0xpc3Quc2l6ZSgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICBmaW5hbCBBY3Rpdml0eUluZm8gaW5mbyA9IHJlc29sdmVJbmZvTGlzdC5nZXQoaSkuYWN0aXZpdHlJbmZvOwpkaWZmIC0tZ2l0IGEvdG9vbHMvYWFwdDIvY29tcGlsZS9YbWxJZENvbGxlY3Rvcl90ZXN0LmNwcCBiL3Rvb2xzL2FhcHQyL2NvbXBpbGUvWG1sSWRDb2xsZWN0b3JfdGVzdC5jcHAKaW5kZXggNDViN2FmMi4uYTM3ZWE4NiAxMDA2NDQKLS0tIGEvdG9vbHMvYWFwdDIvY29tcGlsZS9YbWxJZENvbGxlY3Rvcl90ZXN0LmNwcAorKysgYi90b29scy9hYXB0Mi9jb21waWxlL1htbElkQ29sbGVjdG9yX3Rlc3QuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAKICAgICBYbWxJZENvbGxlY3RvciBjb2xsZWN0b3I7CiAgICAgQVNTRVJUX1RSVUUoY29sbGVjdG9yLmNvbnN1bWUoY29udGV4dC5nZXQoKSwgZG9jLmdldCgpKSk7CiAKLSAgICBFWFBFQ1RfRVEoMXUsIHN0ZDo6Y291bnQoZG9jLT5maWxlLmV4cG9ydGVkU3ltYm9scy5iZWdpbigpLCBkb2MtPmZpbGUuZXhwb3J0ZWRTeW1ib2xzLmVuZCgpLAorICAgIEVYUEVDVF9FUSgxLCBzdGQ6OmNvdW50KGRvYy0+ZmlsZS5leHBvcnRlZFN5bWJvbHMuYmVnaW4oKSwgZG9jLT5maWxlLmV4cG9ydGVkU3ltYm9scy5lbmQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlZFJlc291cmNlTmFtZXsgdGVzdDo6cGFyc2VOYW1lT3JEaWUodSJAaWQvZm9vIiksIDN1IH0pKTsKIAotICAgIEVYUEVDVF9FUSgxdSwgc3RkOjpjb3VudChkb2MtPmZpbGUuZXhwb3J0ZWRTeW1ib2xzLmJlZ2luKCksIGRvYy0+ZmlsZS5leHBvcnRlZFN5bWJvbHMuZW5kKCksCisgICAgRVhQRUNUX0VRKDEsIHN0ZDo6Y291bnQoZG9jLT5maWxlLmV4cG9ydGVkU3ltYm9scy5iZWdpbigpLCBkb2MtPmZpbGUuZXhwb3J0ZWRTeW1ib2xzLmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VkUmVzb3VyY2VOYW1leyB0ZXN0OjpwYXJzZU5hbWVPckRpZSh1IkBpZC9iYXIiKSwgM3UgfSkpOwogCi0gICAgRVhQRUNUX0VRKDF1LCBzdGQ6OmNvdW50KGRvYy0+ZmlsZS5leHBvcnRlZFN5bWJvbHMuYmVnaW4oKSwgZG9jLT5maWxlLmV4cG9ydGVkU3ltYm9scy5lbmQoKSwKKyAgICBFWFBFQ1RfRVEoMSwgc3RkOjpjb3VudChkb2MtPmZpbGUuZXhwb3J0ZWRTeW1ib2xzLmJlZ2luKCksIGRvYy0+ZmlsZS5leHBvcnRlZFN5bWJvbHMuZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZWRSZXNvdXJjZU5hbWV7IHRlc3Q6OnBhcnNlTmFtZU9yRGllKHUiQGlkL2NhciIpLCA2dSB9KSk7CiB9CiAK