ZGlmZiAtLWdpdCBhLy5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnltbCBiLy5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDc1ZTI0Ci0tLSAvZGV2L251bGwKKysrIGIvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sCkBAIC0wLDAgKzEsMjcgQEAKK25hbWU6IEJ1aWxkCisKK29uOgorICBwdXNoOgorICAgIGJyYW5jaGVzOiBbIG1hc3RlciBdCisgIHB1bGxfcmVxdWVzdDoKKyAgICBicmFuY2hlczogWyBtYXN0ZXIgXQorCitqb2JzOgorICBsaW51eDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19CisgICAgbmFtZTogJHt7IG1hdHJpeC5vcyB9fSBidWlsZAorCisgICAgc3RyYXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIG9zOiBbVWJ1bnR1LTE4LjA0LCBVYnVudHUtMjAuMDRdCisKKyAgICBlbnY6CisgICAgICBOT0RFX0xBQkVMUzogIkxpbnV4IFVidW50dSAke3sgbWF0cml4Lm9zIH19IgorICAgICAgV0FGX0pPQlM6IDIKKworICAgIHN0ZXBzOgorICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorCisgICAgLSBuYW1lOiBSdW4gYnVpbGQgc2NyaXB0CisgICAgICBydW46IHwKKyAgICAgICAgLi8uamVua2lucwpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNTMwYmUxZC4uMDUxZGFjYiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC02LDMgKzYsNCBAQAogKi5EU19TdG9yZQogKn4KIHRtcC8KKy53YWYzLSotKi8KZGlmZiAtLWdpdCBhLy5naXRtb2R1bGVzIGIvLmdpdG1vZHVsZXMKaW5kZXggZTZjMTYwOS4uNDYyZjZiMSAxMDA2NDQKLS0tIGEvLmdpdG1vZHVsZXMKKysrIGIvLmdpdG1vZHVsZXMKQEAgLTEsNCArMSw0IEBACiBbc3VibW9kdWxlICJDaHJvbm9TeW5jIl0KIAlwYXRoID0gQ2hyb25vU3luYwotCXVybCA9IC4uL0Nocm9ub1N5bmMuZ2l0CisJdXJsID0gZ2l0Oi8vZ2l0aHViLmNvbS9uYW1lZC1kYXRhL0Nocm9ub1N5bmMuZ2l0CiAJYnJhbmNoID0gbWFzdGVyCmRpZmYgLS1naXQgYS8uamVua2lucy5kLzAwLWRlcHMuc2ggYi8uamVua2lucy5kLzAwLWRlcHMuc2gKaW5kZXggMDdmOTA0Yy4uMjYxMDk3YyAxMDA3NTUKLS0tIGEvLmplbmtpbnMuZC8wMC1kZXBzLnNoCisrKyBiLy5qZW5raW5zLmQvMDAtZGVwcy5zaApAQCAtMTksMTEgKzE5LDcgQEAKICAgICBzdWRvIGFwdC1nZXQgLXFxIC15IGluc3RhbGwgYnVpbGQtZXNzZW50aWFsCiAgICAgc3VkbyBhcHQtZ2V0IC1xcSAteSBpbnN0YWxsIGxpYnNzbC1kZXYgbGlic3FsaXRlMy1kZXYKIAotICAgIGlmIGhhcyBVYnVudHUtMTIuMDQgJE5PREVfTEFCRUxTOyB0aGVuCi0gICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIC1xcSAteSBsaWJib29zdDEuNDgtYWxsLWRldgotICAgIGVsc2UKLSAgICAgICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXFxIC15IGxpYmJvb3N0LWFsbC1kZXYKLSAgICBmaQotCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXFxIC15IHF0NC1kZXYtdG9vbHMgcHJvdG9idWYtY29tcGlsZXIgbGlicHJvdG9idWYtZGV2IGxpYnF0NC1zcWwtc3FsaXRlCisgICAgc3VkbyBhcHQtZ2V0IC1xcSAteSBpbnN0YWxsIGxpYnByb3RvYnVmLWRldiBwcm90b2J1Zi1jb21waWxlciBsaWJldmVudC1kZXYgbGliY3J5cHRvKystZGV2CisgICAgc3VkbyBhcHQtZ2V0IC1xcSAteSBpbnN0YWxsIGxpYmJvb3N0LWFsbC1kZXYKKyAgICBzdWRvIGFwdC1nZXQgLXFxIC15IGluc3RhbGwgcXQ1LWRlZmF1bHQKIGZpCmRpZmYgLS1naXQgYS8uamVua2lucy5kLzEwLW5kbi1jeHguc2ggYi8uamVua2lucy5kLzEwLW5kbi1jeHguc2gKaW5kZXggMzJiYzhlMS4uODQxYWEzZiAxMDA3NTUKLS0tIGEvLmplbmtpbnMuZC8xMC1uZG4tY3h4LnNoCisrKyBiLy5qZW5raW5zLmQvMTAtbmRuLWN4eC5zaApAQCAtMjMsOSArMjMsOSBAQAogCiBwdXNoZCBuZG4tY3h4ID4vZGV2L251bGwKIAotLi93YWYgY29uZmlndXJlIC1qMSAtLWNvbG9yPXllcyAtLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGhvdXQtb3N4LWtleWNoYWluCi0uL3dhZiAtajEgLS1jb2xvcj15ZXMKLXN1ZG8gLi93YWYgaW5zdGFsbCAtajEgLS1jb2xvcj15ZXMKKy4vd2FmIGNvbmZpZ3VyZSAtLWNvbG9yPXllcyAtLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGhvdXQtb3N4LWtleWNoYWluCisuL3dhZiAtLWNvbG9yPXllcworc3VkbyAuL3dhZiBpbnN0YWxsIC0tY29sb3I9eWVzCiAKIHBvcGQgPi9kZXYvbnVsbAogcG9wZCA+L2Rldi9udWxsCmRpZmYgLS1naXQgYS8uamVua2lucy5kLzExLWNocm9ub3N5bmMuc2ggYi8uamVua2lucy5kLzExLWNocm9ub3N5bmMuc2gKaW5kZXggNzhhZWFiMS4uYjc0ODRmZCAxMDA3NTUKLS0tIGEvLmplbmtpbnMuZC8xMS1jaHJvbm9zeW5jLnNoCisrKyBiLy5qZW5raW5zLmQvMTEtY2hyb25vc3luYy5zaApAQCAtMTEsOSArMTEsOSBAQAogZ2l0IHN1Ym1vZHVsZSBpbml0CiBnaXQgc3VibW9kdWxlIHVwZGF0ZQogcHVzaGQgQ2hyb25vU3luYyA+L2Rldi9udWxsCi1zdWRvIC4vd2FmIC1qMSAtLWNvbG9yPXllcyBkaXN0Y2xlYW4KLS4vd2FmIC1qMSAtLWNvbG9yPXllcyBjb25maWd1cmUKLS4vd2FmIC1qMSAtLWNvbG9yPXllcyBidWlsZAotc3VkbyAuL3dhZiBpbnN0YWxsIC1qMSAtLWNvbG9yPXllcworc3VkbyAuL3dhZiAtLWNvbG9yPXllcyBkaXN0Y2xlYW4KKy4vd2FmIC0tY29sb3I9eWVzIGNvbmZpZ3VyZQorLi93YWYgLS1jb2xvcj15ZXMgYnVpbGQKK3N1ZG8gLi93YWYgaW5zdGFsbCAtLWNvbG9yPXllcwogc3VkbyBsZGNvbmZpZyB8fCB0cnVlCiBwb3BkID4vZGV2L251bGwKZGlmZiAtLWdpdCBhLy5qZW5raW5zLmQvMjAtYnVpbGQuc2ggYi8uamVua2lucy5kLzIwLWJ1aWxkLnNoCmluZGV4IGZjYTE1MmEuLjQxNzQ4MDAgMTAwNzU1Ci0tLSBhLy5qZW5raW5zLmQvMjAtYnVpbGQuc2gKKysrIGIvLmplbmtpbnMuZC8yMC1idWlsZC5zaApAQCAtMywyMiArMyw4IEBACiBzZXQgLWUKIAogIyBDbGVhbnVwCi1zdWRvIC4vd2FmIC1qMSAtLWNvbG9yPXllcyBkaXN0Y2xlYW4KLQotIyBDb25maWd1cmUvYnVpbGQgaW4gcmVsZWFzZSBtb2RlCi0uL3dhZiAtajEgLS1jb2xvcj15ZXMgY29uZmlndXJlCi0uL3dhZiAtajEgLS1jb2xvcj15ZXMgYnVpbGQKLQotIyBDbGVhbnVwCi1zdWRvIC4vd2FmIC1qMSAtLWNvbG9yPXllcyBkaXN0Y2xlYW4KLQotIyBDb25maWd1cmUvYnVpbGQgaW4gZGVidWcgbW9kZQotLi93YWYgLWoxIC0tY29sb3I9eWVzIGNvbmZpZ3VyZSAtLWRlYnVnCi0uL3dhZiAtajEgLS1jb2xvcj15ZXMgYnVpbGQKLQotIyBDbGVhbnVwCi1zdWRvIC4vd2FmIC1qMSAtLWNvbG9yPXllcyBkaXN0Y2xlYW4KK3N1ZG8gLi93YWYgLS1jb2xvcj15ZXMgZGlzdGNsZWFuCiAKICMgQ29uZmlndXJlL2J1aWxkIGluIG9wdGltaXplZCBtb2RlIHdpdGggdGVzdHMKLS4vd2FmIC1qMSAtLWNvbG9yPXllcyBjb25maWd1cmUgLS13aXRoLXRlc3RzCi0uL3dhZiAtajEgLS1jb2xvcj15ZXMgYnVpbGQKKy4vd2FmIC0tY29sb3I9eWVzIGNvbmZpZ3VyZSAtLWRlYnVnIC0td2l0aC10ZXN0cworLi93YWYgLS1jb2xvcj15ZXMgYnVpbGQKZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZDY5Y2QuLjAwMDAwMDAKLS0tIGEvLnRyYXZpcy55bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jIEZvciBVYnVudHUgcGxhdGZvcm0gb25seQotCi1sYW5ndWFnZTogY3BwCi1vczoKLSAgLSBsaW51eAotY29tcGlsZXI6Ci0gIC0gZ2NjCi1ub3RpZmljYXRpb25zOgotICBlbWFpbDoKLSAgICBvbl9zdWNjZXNzOiBhbHdheXMKLSAgICBvbl9mYWlsdXJlOiBhbHdheXMKLWJlZm9yZV9pbnN0YWxsOgotICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgdXBkYXRlCi0gIC0gdHJhdmlzX3JldHJ5IHN1ZG8gYXB0LWdldCBpbnN0YWxsIC1xcSBsaWJzc2wtZGV2IGxpYnByb3RvYnVmLWRldiBwcm90b2J1Zi1jb21waWxlciBsaWJib29zdDEuNDgtYWxsLWRldiBsaWJjcnlwdG8rKy1kZXYgbGlic3FsaXRlMy1kZXYKLXNjcmlwdDoKLSAgLSAuLy5qZW5raW5zCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKaW5kZXggN2QyOGQyMy4uYzBhMmJiNyAxMDA2NDQKLS0tIGEvUkVBRE1FLm1kCisrKyBiL1JFQURNRS5tZApAQCAtMTEsNyArMTEsNyBAQAogMS4gV2hlbiB5b3Ugc3dpdGNoIHRvIGEgbmV3IHJvb20sIHlvdSdsbCB0ZW1wb3JhcmlseSBzZWUgeW91cnNlbGYgaW4gdHdvIG5vZGVzIGZvciBhIG1pbnV0ZSBvciBzby4gSXQgd29uJ3QgYWZmZWN0IG90aGVycywganVzdCB5b3Vyc2VsZi4gSG9wZWZ1bGx5IGl0J3Mgbm90IHNvIGRpc3R1cmJpbmcuCiAyLiBTb21ldGltZXMgeW91IG1heSBub3QgZ2V0IHRoZSBtb3N0IHVwLXRvLWRhdGUgY2hhdCBoaXN0b3J5LgogCi0jIyBGb3IgdGhvc2Ugd2hvIHdhbnRzIChvciBpcyBmb3JjZWQgdG8pIGNvbXBpbGUgZnJvbSBzb3VyY2UgY29kZQorIyMgRm9yIHRob3NlIHdobyB3YW50IChvciBpcyBmb3JjZWQgdG8pIGNvbXBpbGUgZnJvbSBzb3VyY2UgY29kZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyMjIENvbXBpbGF0aW9uIHN0ZXBzIGZvciBPU1gKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogQ29uZ3JhdHVsYXRpb25zISBidWlsZC9DaHJvbm9DaGF0LmFwcCBpcyByZWFkeSB0byB1c2UgKG9uIGEgTWFjKS4KIAotIyMjIENvbXBpbGF0aW9uIHN0ZXBzIGZvciBVYnVudHUgMTIuMDQsIDEzLjEwLCAxNC4wNAorIyMjIENvbXBpbGF0aW9uIHN0ZXBzIGZvciBVYnVudHUgMTguMDQsIDIwLjA0CiAKIDEuIENvbmZpZ3VyZSBbTkROIFBQQSByZXBvc2l0b3J5XShodHRwOi8vbmFtZWQtZGF0YS5uZXQvZG9jL05GRC9jdXJyZW50L0ZBUS5odG1sI2hvdy10by1zdGFydC11c2luZy1uZG4tcHBhLXJlcG9zaXRvcnktb24tdWJ1bnR1LWxpbnV4KSBhbmQgaW5zdGFsbCBORkQgaWYgeW91IGRvbid0IGhhdmUgaXQgeWV0LgogCkBAIC01Niw5ICs1Niw5IEBACiAKIDIuIEluc3RhbGwgQ2hyb25vQ2hhdCBkZXBlbmRlbmNpZXMKIAotICAgICAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJwcm90b2J1Zi1kZXYgcHJvdG9idWYtY29tcGlsZXIgbGliZXZlbnQtZGV2Ci0gICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGxpYmJvb3N0MS40OC1hbGwtZGV2Ci0gICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHF0NC1kZXYtdG9vbHMKKyAgICAgICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGlicHJvdG9idWYtZGV2IHByb3RvYnVmLWNvbXBpbGVyIGxpYmV2ZW50LWRldiBsaWJjcnlwdG8rKy1kZXYKKyAgICAgICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGliYm9vc3QtYWxsLWRldgorICAgICAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBxdDUtZGVmYXVsdAogCiAzLiBGZXRjaCBzb3VyY2UgY29kZSB3aXRoIHN1Ym1vZHVsZXMKIApAQCAtODIsNCArODIsNSBAQAogICAgICAgICAuL3dhZiBjb25maWd1cmUKICAgICAgICAgLi93YWYKIAotQ29uZ3JhdHVsYXRpb25zISBidWlsZC9DaHJvbm9DaGF0IGlzIHJlYWR5IHRvIHVzZS4gIERvIG5vdCBmb3JnZXQgdG8gc3RhcnQgY2NuZCBhbmQgY29uZmlndXJlIEZJQiBiZWZvcmUgdXNpbmcgQ2hyb25vQ2hhdC4KK0NvbmdyYXR1bGF0aW9ucyEgYnVpbGQvQ2hyb25vQ2hhdCBpcyByZWFkeSB0byB1c2UuICBEbyBub3QgZm9yZ2V0IHRvIHN0YXJ0IE5GRCBhbmQgY29uZmlndXJlIEZJQiBiZWZvcmUgdXNpbmcgQ2hyb25vQ2hhdC4KK0ZvciBlYXNlIG9mIGRlYnVnZ2luZywgeW91IGNhbiBnZW5lcmF0ZSB0cnVzdGVkIGlkZW50aXRpZXMgaW4geW91ciBsb2NhbCBUUE0gdXNpbmcgYGRlYnVnLXRvb2xzL2NyZWF0ZS1jZXJ0YC4KZGlmZiAtLWdpdCBhL2RlYnVnLXRvb2xzL2NyZWF0ZS1jZXJ0LmNjIGIvZGVidWctdG9vbHMvY3JlYXRlLWNlcnQuY2MKaW5kZXggMDk4NjFkMy4uNTk0MTc4MyAxMDA2NDQKLS0tIGEvZGVidWctdG9vbHMvY3JlYXRlLWNlcnQuY2MKKysrIGIvZGVidWctdG9vbHMvY3JlYXRlLWNlcnQuY2MKQEAgLTYsNjQgKzYsNTAgQEAKICAqLwogCiAjaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS9rZXktY2hhaW4uaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvc2lnbmluZy1oZWxwZXJzLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L3V0aWwvaW8uaHBwPgorI2luY2x1ZGUgPGlvc3RyZWFtPgogCiB1c2luZyBuYW1lc3BhY2UgbmRuOwordXNpbmcgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGU7Cit1c2luZyBuZG46OnNlY3VyaXR5OjpwaWI6OklkZW50aXR5OwordXNpbmcgbmRuOjpzZWN1cml0eTo6cGliOjpLZXk7CisKK3ZvaWQKK2dlbmVyYXRlQ2VydGlmaWNhdGUoS2V5Q2hhaW4mIGtleUNoYWluLCBOYW1lIG5hbWUpIHsKKyAgdHJ5IHsKKyAgICBrZXlDaGFpbi5nZXRQaWIoKS5nZXRJZGVudGl0eShuYW1lKTsKKyAgfSBjYXRjaCAobmRuOjpzZWN1cml0eTo6cGliOjpQaWI6OkVycm9yJikgeworICAgIElkZW50aXR5IGlkID0ga2V5Q2hhaW4uY3JlYXRlSWRlbnRpdHkobmFtZSk7CisgICAgS2V5IGtleSA9IGlkLmdldERlZmF1bHRLZXkoKTsKKyAgICBDZXJ0aWZpY2F0ZSBjZXJ0ID0gQ2VydGlmaWNhdGUoa2V5LmdldERlZmF1bHRDZXJ0aWZpY2F0ZSgpKTsKKworICAgIG5kbjo6U2lnbmF0dXJlSW5mbyBzaWduYXR1cmVJbmZvOworICAgIHNpZ25hdHVyZUluZm8uc2V0VmFsaWRpdHlQZXJpb2QobmRuOjpzZWN1cml0eTo6VmFsaWRpdHlQZXJpb2QoCisgICAgICB0aW1lOjpzeXN0ZW1fY2xvY2s6Om5vdygpLCB0aW1lOjpzeXN0ZW1fY2xvY2s6Om5vdygpICsgdGltZTo6ZGF5cyg3MzAwKSkpOworCisgICAga2V5Q2hhaW4uc2lnbihjZXJ0LCBzZWN1cml0eTo6c2lnbmluZ0J5SWRlbnRpdHkoIi9uZG4vdGVzdCIpLnNldFNpZ25hdHVyZUluZm8oc2lnbmF0dXJlSW5mbykpOworICAgIGtleUNoYWluLnNldERlZmF1bHRDZXJ0aWZpY2F0ZShrZXksIGNlcnQpOworCisgICAgc3RkOjpjb3V0IDw8ICJHZW5lcmF0ZWQgY2VydCAiIDw8IGNlcnQuZ2V0TmFtZSgpIDw8ICIgd2l0aCBLZXlMb2NhdG9yICIgPDwgY2VydC5nZXRLZXlMb2NhdG9yKCkudmFsdWUoKSA8PCBzdGQ6OmVuZGw7CisgIH0KK30KIAogaW50CiBtYWluKCkKIHsKLSAgS2V5Q2hhaW4ga2V5Q2hhaW4oInNxbGl0ZTMiLCAiZmlsZSIpOwotICBzdGQ6OnZlY3RvcjxDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbj4gc3ViamVjdERlc2NyaXB0aW9uOworICBLZXlDaGFpbiBrZXlDaGFpbjsKIAotICBOYW1lIHJvb3QoIi9uZG4iKTsKLSAgTmFtZSByb290Q2VydE5hbWUgPSBrZXlDaGFpbi5jcmVhdGVJZGVudGl0eShyb290KTsKKyAgLy8gUm9vdCBjZXJ0aWZpY2F0ZQorICBnZW5lcmF0ZUNlcnRpZmljYXRlKGtleUNoYWluLCAiL25kbi90ZXN0Iik7CiAKLSAgTmFtZSB0ZXN0KCIvbmRuL3Rlc3QiKTsKLSAgTmFtZSB0ZXN0S2V5TmFtZSA9IGtleUNoYWluLmdlbmVyYXRlUnNhS2V5UGFpckFzRGVmYXVsdCh0ZXN0LCB0cnVlKTsKLSAgc2hhcmVkX3B0cjxJZGVudGl0eUNlcnRpZmljYXRlPiB0ZXN0Q2VydCA9Ci0gICAga2V5Q2hhaW4ucHJlcGFyZVVuc2lnbmVkSWRlbnRpdHlDZXJ0aWZpY2F0ZSh0ZXN0S2V5TmFtZSwgcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOjpzeXN0ZW1fY2xvY2s6Om5vdygpICsgdGltZTo6ZGF5cyg3MzAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3REZXNjcmlwdGlvbik7Ci0gIGtleUNoYWluLnNpZ25CeUlkZW50aXR5KCp0ZXN0Q2VydCwgcm9vdCk7Ci0gIGtleUNoYWluLmFkZENlcnRpZmljYXRlQXNJZGVudGl0eURlZmF1bHQoKnRlc3RDZXJ0KTsKKyAgLy8gVGVzdCBjZXJ0aWZpY2F0ZXMKKyAgZ2VuZXJhdGVDZXJ0aWZpY2F0ZShrZXlDaGFpbiwgIi9uZG4vdGVzdC9hbGljZSIpOworICBnZW5lcmF0ZUNlcnRpZmljYXRlKGtleUNoYWluLCAiL25kbi90ZXN0L2JvYiIpOworICBnZW5lcmF0ZUNlcnRpZmljYXRlKGtleUNoYWluLCAiL25kbi90ZXN0L2NhdGh5Iik7CiAKLSAgTmFtZSBhbGljZSgiL25kbi90ZXN0L2FsaWNlIik7Ci0gIGlmKCFrZXlDaGFpbi5kb2VzSWRlbnRpdHlFeGlzdChhbGljZSkpCi0gICAgewotICAgICAgTmFtZSBhbGljZUtleU5hbWUgPSBrZXlDaGFpbi5nZW5lcmF0ZVJzYUtleVBhaXJBc0RlZmF1bHQoYWxpY2UsIHRydWUpOwotICAgICAgc2hhcmVkX3B0cjxJZGVudGl0eUNlcnRpZmljYXRlPiBhbGljZUNlcnQgPQotICAgICAgICBrZXlDaGFpbi5wcmVwYXJlVW5zaWduZWRJZGVudGl0eUNlcnRpZmljYXRlKGFsaWNlS2V5TmFtZSwgdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOjpzeXN0ZW1fY2xvY2s6Om5vdygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCkgKyB0aW1lOjpkYXlzKDczMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3REZXNjcmlwdGlvbik7Ci0gICAgICBrZXlDaGFpbi5zaWduQnlJZGVudGl0eSgqYWxpY2VDZXJ0LCB0ZXN0KTsKLSAgICAgIGtleUNoYWluLmFkZENlcnRpZmljYXRlQXNJZGVudGl0eURlZmF1bHQoKmFsaWNlQ2VydCk7Ci0gICAgfQotCi0gIE5hbWUgYm9iKCIvbmRuL3Rlc3QvYm9iIik7Ci0gIGlmKCFrZXlDaGFpbi5kb2VzSWRlbnRpdHlFeGlzdChib2IpKQotICAgIHsKLSAgICAgIE5hbWUgYm9iS2V5TmFtZSA9IGtleUNoYWluLmdlbmVyYXRlUnNhS2V5UGFpckFzRGVmYXVsdChib2IsIHRydWUpOwotICAgICAgc2hhcmVkX3B0cjxJZGVudGl0eUNlcnRpZmljYXRlPiBib2JDZXJ0ID0KLSAgICAgICAga2V5Q2hhaW4ucHJlcGFyZVVuc2lnbmVkSWRlbnRpdHlDZXJ0aWZpY2F0ZShib2JLZXlOYW1lLCB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTo6c3lzdGVtX2Nsb2NrOjpub3coKSArIHRpbWU6OmRheXMoNzMwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdERlc2NyaXB0aW9uKTsKLSAgICAgIGtleUNoYWluLnNpZ25CeUlkZW50aXR5KCpib2JDZXJ0LCB0ZXN0KTsKLSAgICAgIGtleUNoYWluLmFkZENlcnRpZmljYXRlQXNJZGVudGl0eURlZmF1bHQoKmJvYkNlcnQpOwotICAgIH0KLQotICBOYW1lIGNhdGh5KCIvbmRuL3Rlc3QvY2F0aHkiKTsKLSAgaWYoIWtleUNoYWluLmRvZXNJZGVudGl0eUV4aXN0KGNhdGh5KSkKLSAgICB7Ci0gICAgICBOYW1lIGNhdGh5S2V5TmFtZSA9IGtleUNoYWluLmdlbmVyYXRlUnNhS2V5UGFpckFzRGVmYXVsdChjYXRoeSwgdHJ1ZSk7Ci0gICAgICBzaGFyZWRfcHRyPElkZW50aXR5Q2VydGlmaWNhdGU+IGNhdGh5Q2VydCA9Ci0gICAgICAgIGtleUNoYWluLnByZXBhcmVVbnNpZ25lZElkZW50aXR5Q2VydGlmaWNhdGUoY2F0aHlLZXlOYW1lLCB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTo6c3lzdGVtX2Nsb2NrOjpub3coKSArIHRpbWU6OmRheXMoNzMwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdERlc2NyaXB0aW9uKTsKLSAgICAgIGtleUNoYWluLnNpZ25CeUlkZW50aXR5KCpjYXRoeUNlcnQsIHRlc3QpOwotICAgICAga2V5Q2hhaW4uYWRkQ2VydGlmaWNhdGVBc0lkZW50aXR5RGVmYXVsdCgqY2F0aHlDZXJ0KTsKLSAgICB9CisgIHN0ZDo6b2ZzdHJlYW0gZmlsZSgic2VjdXJpdHkvdGVzdC1hbmNob3IuY2VydCIpOworICBuZG46OmlvOjpzYXZlQmxvY2soa2V5Q2hhaW4uZ2V0UGliKCkuZ2V0SWRlbnRpdHkoIi9uZG4vdGVzdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXREZWZhdWx0S2V5KCkuZ2V0RGVmYXVsdENlcnRpZmljYXRlKCkud2lyZUVuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgZmlsZSk7CiB9CmRpZmYgLS1naXQgYS9kZWJ1Zy10b29scy9kdW1wLWNlcnQuY2MgYi9kZWJ1Zy10b29scy9kdW1wLWNlcnQuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNTAxNzUuLjAwMDAwMDAKLS0tIGEvZGVidWctdG9vbHMvZHVtcC1jZXJ0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogWWluZ2RpIFl1IDx5aW5nZGlAY3MudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImNvbW1vbi5ocHAiCi0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS9rZXktY2hhaW4uaHBwPgotI2luY2x1ZGUgPG5kbi1jeHgvZmFjZS5ocHA+Ci0KLXVzaW5nIG5hbWVzcGFjZSBuZG47Ci0KLWludAotbWFpbigpCi17Ci0gIE5hbWUgcm9vdCgiL25kbiIpOwotICBOYW1lIHRlc3QoIi9uZG4vdGVzdCIpOwotICBOYW1lIGFsaWNlKCIvbmRuL3Rlc3QvYWxpY2UiKTsKLSAgTmFtZSBib2IoIi9uZG4vdGVzdC9ib2IiKTsKLSAgTmFtZSBjYXRoeSgiL25kbi90ZXN0L2NhdGh5Iik7Ci0KLSAgS2V5Q2hhaW4ga2V5Q2hhaW4oInNxbGl0ZTMiLCAiZmlsZSIpOwotCi0gIGlmICgha2V5Q2hhaW4uZG9lc0lkZW50aXR5RXhpc3Qocm9vdCkgfHwKLSAgICAgICFrZXlDaGFpbi5kb2VzSWRlbnRpdHlFeGlzdCh0ZXN0KSB8fAotICAgICAgIWtleUNoYWluLmRvZXNJZGVudGl0eUV4aXN0KGFsaWNlKSB8fAotICAgICAgIWtleUNoYWluLmRvZXNJZGVudGl0eUV4aXN0KGJvYikgfHwKLSAgICAgICFrZXlDaGFpbi5kb2VzSWRlbnRpdHlFeGlzdChjYXRoeSkpCi0gICAgcmV0dXJuIDE7Ci0KLSAgRmFjZSBmYWNlOwotCi0gIGZhY2UucHV0KCprZXlDaGFpbi5nZXRDZXJ0aWZpY2F0ZShrZXlDaGFpbi5nZXREZWZhdWx0Q2VydGlmaWNhdGVOYW1lRm9ySWRlbnRpdHkodGVzdCkpKTsKLSAgZmFjZS5wdXQoKmtleUNoYWluLmdldENlcnRpZmljYXRlKGtleUNoYWluLmdldERlZmF1bHRDZXJ0aWZpY2F0ZU5hbWVGb3JJZGVudGl0eShhbGljZSkpKTsKLSAgZmFjZS5wdXQoKmtleUNoYWluLmdldENlcnRpZmljYXRlKGtleUNoYWluLmdldERlZmF1bHRDZXJ0aWZpY2F0ZU5hbWVGb3JJZGVudGl0eShib2IpKSk7Ci0gIGZhY2UucHV0KCprZXlDaGFpbi5nZXRDZXJ0aWZpY2F0ZShrZXlDaGFpbi5nZXREZWZhdWx0Q2VydGlmaWNhdGVOYW1lRm9ySWRlbnRpdHkoY2F0aHkpKSk7Ci0KLSAgZmFjZS5nZXRJb1NlcnZpY2UoKS5ydW4oKTsKLX0KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3ZhbGlkYXRpb24tY2hhdC5jb25mIGIvc2VjdXJpdHkvdmFsaWRhdGlvbi1jaGF0LmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjZTc3NgotLS0gL2Rldi9udWxsCisrKyBiL3NlY3VyaXR5L3ZhbGlkYXRpb24tY2hhdC5jb25mCkBAIC0wLDAgKzEsNjEgQEAKK3J1bGUKK3sKKyAgaWQgIkFMTDEiCisgIGZvciBkYXRhCisgIGZpbHRlcgorICB7CisgICAgdHlwZSBuYW1lCisgICAgcmVnZXggXjw+KjwlRjAuPig8PiopJAorICB9CisgIGNoZWNrZXIKKyAgeworICAgIHR5cGUgY3VzdG9taXplZAorICAgIHNpZy10eXBlIHJzYS1zaGEyNTYKKyAgICBrZXktbG9jYXRvcgorICAgIHsKKyAgICAgIHR5cGUgbmFtZQorICAgICAgaHlwZXItcmVsYXRpb24KKyAgICAgIHsKKyAgICAgICAgay1yZWdleCBeKFtePEtFWT5dKik8S0VZPjw+KiQKKyAgICAgICAgay1leHBhbmQgXFwxCisgICAgICAgIGgtcmVsYXRpb24gaXMtc3RyaWN0LXByZWZpeC1vZgorICAgICAgICBwLXJlZ2V4IF48Pio8JUYwLj4oPD4qKSQKKyAgICAgICAgcC1leHBhbmQgXFwxCisgICAgICB9CisgICAgfQorICB9Cit9CisKK3J1bGUKK3sKKyAgaWQgIkFMTDIiCisgIGZvciBkYXRhCisgIGZpbHRlcgorICB7CisgICAgdHlwZSBuYW1lCisgICAgcmVnZXggKDw+KikkCisgIH0KKyAgY2hlY2tlcgorICB7CisgICAgdHlwZSBjdXN0b21pemVkCisgICAgc2lnLXR5cGUgcnNhLXNoYTI1NgorICAgIGtleS1sb2NhdG9yCisgICAgeworICAgICAgdHlwZSBuYW1lCisgICAgICBoeXBlci1yZWxhdGlvbgorICAgICAgeworICAgICAgICBrLXJlZ2V4IF4oW148S0VZPl0qKTxLRVk+PD4kCisgICAgICAgIGstZXhwYW5kIFxcMQorICAgICAgICBoLXJlbGF0aW9uIGlzLXN0cmljdC1wcmVmaXgtb2YKKyAgICAgICAgcC1yZWdleCAoPD4qKSQKKyAgICAgICAgcC1leHBhbmQgXFwxCisgICAgICB9CisgICAgfQorICB9Cit9CisKK3RydXN0LWFuY2hvcgoreworICB0eXBlIGRpcgorICBkaXIgIi4iCit9CmRpZmYgLS1naXQgYS9zZWN1cml0eS92YWxpZGF0aW9uLWNvbnRhY3QtbWFuYWdlci5jb25mIGIvc2VjdXJpdHkvdmFsaWRhdGlvbi1jb250YWN0LW1hbmFnZXIuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjE0ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvc2VjdXJpdHkvdmFsaWRhdGlvbi1jb250YWN0LW1hbmFnZXIuY29uZgpAQCAtMCwwICsxLDExNyBAQAorcnVsZQoreworICBpZCAiRU5ET1JTRUQiCisgIGZvciBkYXRhCisgIGZpbHRlcgorICB7CisgICAgdHlwZSBuYW1lCisgICAgcmVnZXggXihbXjxETlM+XSopPEROUz48RU5ET1JTRUQ+CisgIH0KKyAgY2hlY2tlcgorICB7CisgICAgdHlwZSBjdXN0b21pemVkCisgICAgc2lnLXR5cGUgcnNhLXNoYTI1NgorICAgIGtleS1sb2NhdG9yCisgICAgeworICAgICAgdHlwZSBuYW1lCisgICAgICBoeXBlci1yZWxhdGlvbgorICAgICAgeworICAgICAgICBrLXJlZ2V4IF4oW148S0VZPl0qKTxLRVk+PD4qJAorICAgICAgICBrLWV4cGFuZCBcXDEKKyAgICAgICAgaC1yZWxhdGlvbiBlcXVhbAorICAgICAgICBwLXJlZ2V4IF4oW148RE5TPl0qKTxETlM+PEVORE9SU0VEPgorICAgICAgICBwLWV4cGFuZCBcXDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworcnVsZQoreworICBpZCAiRU5ET1JTRUUiCisgIGZvciBkYXRhCisgIGZpbHRlcgorICB7CisgICAgdHlwZSBuYW1lCisgICAgcmVnZXggXihbXjxETlM+XSopPEROUz48PjxFTkRPUlNFRT4KKyAgfQorICBjaGVja2VyCisgIHsKKyAgICB0eXBlIGN1c3RvbWl6ZWQKKyAgICBzaWctdHlwZSByc2Etc2hhMjU2CisgICAga2V5LWxvY2F0b3IKKyAgICB7CisgICAgICB0eXBlIG5hbWUKKyAgICAgIGh5cGVyLXJlbGF0aW9uCisgICAgICB7CisgICAgICAgIGstcmVnZXggXihbXjxLRVk+XSopPEtFWT48PiokCisgICAgICAgIGstZXhwYW5kIFxcMQorICAgICAgICBoLXJlbGF0aW9uIGVxdWFsCisgICAgICAgIHAtcmVnZXggXihbXjxETlM+XSopPEROUz48PjxFTkRPUlNFRT4KKyAgICAgICAgcC1leHBhbmQgXFwxCisgICAgICB9CisgICAgfQorICB9Cit9CisKK3J1bGUKK3sKKyAgaWQgIlBST0ZJTEUiCisgIGZvciBkYXRhCisgIGZpbHRlcgorICB7CisgICAgdHlwZSBuYW1lCisgICAgcmVnZXggXihbXjxETlM+XSopPEROUz48UFJPRklMRT4KKyAgfQorICBjaGVja2VyCisgIHsKKyAgICB0eXBlIGN1c3RvbWl6ZWQKKyAgICBzaWctdHlwZSByc2Etc2hhMjU2CisgICAga2V5LWxvY2F0b3IKKyAgICB7CisgICAgICB0eXBlIG5hbWUKKyAgICAgIGh5cGVyLXJlbGF0aW9uCisgICAgICB7CisgICAgICAgIGstcmVnZXggXihbXjxLRVk+XSopPEtFWT48PiokCisgICAgICAgIGstZXhwYW5kIFxcMQorICAgICAgICBoLXJlbGF0aW9uIGVxdWFsCisgICAgICAgIHAtcmVnZXggXihbXjxETlM+XSopPEROUz48UFJPRklMRT4KKyAgICAgICAgcC1leHBhbmQgXFwxCisgICAgICB9CisgICAgfQorICB9Cit9CisKK3J1bGUKK3sKKyAgaWQgIkFMTCIKKyAgZm9yIGRhdGEKKyAgZmlsdGVyCisgIHsKKyAgICB0eXBlIG5hbWUKKyAgICByZWdleCBeKDw+KikkCisgIH0KKyAgY2hlY2tlcgorICB7CisgICAgdHlwZSBjdXN0b21pemVkCisgICAgc2lnLXR5cGUgcnNhLXNoYTI1NgorICAgIGtleS1sb2NhdG9yCisgICAgeworICAgICAgdHlwZSBuYW1lCisgICAgICBoeXBlci1yZWxhdGlvbgorICAgICAgeworICAgICAgICBrLXJlZ2V4IF4oW148S0VZPl0qKTxLRVk+PD4qJAorICAgICAgICBrLWV4cGFuZCBcXDEKKyAgICAgICAgaC1yZWxhdGlvbiBpcy1zdHJpY3QtcHJlZml4LW9mCisgICAgICAgIHAtcmVnZXggXig8PiopJAorICAgICAgICBwLWV4cGFuZCBcXDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKwordHJ1c3QtYW5jaG9yCit7CisgIHR5cGUgZGlyCisgIGRpciAiLiIKK30KZGlmZiAtLWdpdCBhL3NyYy9icm93c2UtY29udGFjdC1kaWFsb2cuY3BwIGIvc3JjL2Jyb3dzZS1jb250YWN0LWRpYWxvZy5jcHAKaW5kZXggNDgxYjQxOC4uYmY5ZGYyNCAxMDA2NDQKLS0tIGEvc3JjL2Jyb3dzZS1jb250YWN0LWRpYWxvZy5jcHAKKysrIGIvc3JjL2Jyb3dzZS1jb250YWN0LWRpYWxvZy5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKIAogbmFtZXNwYWNlIGNocm9ub2NoYXQgewogCi11c2luZyBuZG46OklkZW50aXR5Q2VydGlmaWNhdGU7Cit1c2luZyBuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZTsKIAogQnJvd3NlQ29udGFjdERpYWxvZzo6QnJvd3NlQ29udGFjdERpYWxvZyhRV2lkZ2V0ICpwYXJlbnQpCiAgIDogUURpYWxvZyhwYXJlbnQpCkBAIC0xMDYsNyArMTA2LDcgQEAKIH0KIAogdm9pZAotQnJvd3NlQ29udGFjdERpYWxvZzo6b25JZENlcnRSZWFkeShjb25zdCBJZGVudGl0eUNlcnRpZmljYXRlJiBpZENlcnQpCitCcm93c2VDb250YWN0RGlhbG9nOjpvbklkQ2VydFJlYWR5KGNvbnN0IENlcnRpZmljYXRlJiBpZENlcnQpCiB7CiAgIFByb2ZpbGUgcHJvZmlsZShpZENlcnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYnJvd3NlLWNvbnRhY3QtZGlhbG9nLmhwcCBiL3NyYy9icm93c2UtY29udGFjdC1kaWFsb2cuaHBwCmluZGV4IGEwODc1MzguLjRhMDgxZTAgMTAwNjQ0Ci0tLSBhL3NyYy9icm93c2UtY29udGFjdC1kaWFsb2cuaHBwCisrKyBiL3NyYy9icm93c2UtY29udGFjdC1kaWFsb2cuaHBwCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8UVRhYmxlV2lkZ2V0SXRlbT4KIAogI2lmbmRlZiBRX01PQ19SVU4KLSNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2lkZW50aXR5LWNlcnRpZmljYXRlLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2NlcnRpZmljYXRlLmhwcD4KICNpbmNsdWRlIDxib29zdC90aHJlYWQvbG9ja3MuaHBwPgogI2luY2x1ZGUgPGJvb3N0L3RocmVhZC9yZWN1cnNpdmVfbXV0ZXguaHBwPgogI2VuZGlmCkBAIC02MSw3ICs2MSw3IEBACiAgIG9uTmFtZUxpc3RSZWFkeShjb25zdCBRU3RyaW5nTGlzdCYgbmFtZUxpc3QpOwogCiAgIHZvaWQKLSAgb25JZENlcnRSZWFkeShjb25zdCBuZG46OklkZW50aXR5Q2VydGlmaWNhdGUmIGlkQ2VydCk7CisgIG9uSWRDZXJ0UmVhZHkoY29uc3QgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUgJiBpZENlcnQpOwogCiBzaWduYWxzOgogICB2b2lkCmRpZmYgLS1naXQgYS9zcmMvY2hhdC1kaWFsb2ctYmFja2VuZC5jcHAgYi9zcmMvY2hhdC1kaWFsb2ctYmFja2VuZC5jcHAKaW5kZXggNjczMDVmMi4uMjM0ZTRhMyAxMDA2NDQKLS0tIGEvc3JjL2NoYXQtZGlhbG9nLWJhY2tlbmQuY3BwCisrKyBiL3NyYy9jaGF0LWRpYWxvZy1iYWNrZW5kLmNwcApAQCAtMTYsMTIgKzE2LDEwIEBACiAjaWZuZGVmIFFfTU9DX1JVTgogI2luY2x1ZGUgPGJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwPgogI2luY2x1ZGUgPG5kbi1jeHgvdXRpbC9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3ItcmVnZXguaHBwPgotI2luY2x1ZGUgImxvZ2dpbmcuaCIKKyNpbmNsdWRlICJjcnlwdG9wcC5ocHAiCiAjZW5kaWYKIAotCi1JTklUX0xPR0dFUigiQ2hhdERpYWxvZ0JhY2tlbmQiKTsKK3VzaW5nIG5hbWVzcGFjZSBDcnlwdG9QUDsKIAogbmFtZXNwYWNlIGNocm9ub2NoYXQgewogCkBAIC0xMTcsMjYgKzExNSw4IEBACiAgIG1fc2NoZWR1bGVyID0gdW5pcXVlX3B0cjxuZG46OlNjaGVkdWxlcj4obmV3IG5kbjo6U2NoZWR1bGVyKG1fZmFjZS0+Z2V0SW9TZXJ2aWNlKCkpKTsKIAogICAvLyBpbml0aWFsaXplIHZhbGlkYXRvcgotICBzaGFyZWRfcHRyPG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZT4gYW5jaG9yID0gbG9hZFRydXN0QW5jaG9yKCk7Ci0KLSAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KGFuY2hvcikpIHsKLSAgICBzaGFyZWRfcHRyPG5kbjo6VmFsaWRhdG9yUmVnZXg+IHZhbGlkYXRvciA9Ci0gICAgICBtYWtlX3NoYXJlZDxuZG46OlZhbGlkYXRvclJlZ2V4PihtX2ZhY2UuZ2V0KCkpOyAvLyBUT0RPOiBDaGFuZ2UgdG8gRmFjZSoKLSAgICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKAotICAgICAgbWFrZV9zaGFyZWQ8bmRuOjpTZWNSdWxlUmVsYXRpdmU+KCJePD4qPCVGMC4+KDw+KikkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXihbXjxLRVk+XSopPEtFWT4oPD4qKTxrc2stLio+PElELUNFUlQ+JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj4iLCAiXFwxIiwgIlxcMVxcMiIsIHRydWUpKTsKLSAgICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKAotICAgICAgbWFrZV9zaGFyZWQ8bmRuOjpTZWNSdWxlUmVsYXRpdmU+KCIoPD4qKSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8PiopPGtzay0uKj48SUQtQ0VSVD4kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPiIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkpOwotICAgIHZhbGlkYXRvci0+YWRkVHJ1c3RBbmNob3IoYW5jaG9yKTsKLQotICAgIG1fdmFsaWRhdG9yID0gdmFsaWRhdG9yOwotICB9Ci0gIGVsc2UKLSAgICBtX3ZhbGlkYXRvciA9IHNoYXJlZF9wdHI8bmRuOjpWYWxpZGF0b3I+KCk7Ci0KKyAgbV92YWxpZGF0b3IgPSBtYWtlX3NoYXJlZDxuZG46OnNlY3VyaXR5OjpWYWxpZGF0b3JDb25maWc+KCptX2ZhY2UpOworICBtX3ZhbGlkYXRvci0+bG9hZCgic2VjdXJpdHkvdmFsaWRhdGlvbi1jaGF0LmNvbmYiKTsKIAogICAvLyBjcmVhdGUgYSBuZXcgU3luY1NvY2tldAogICBtX3NvY2sgPSBtYWtlX3NoYXJlZDxjaHJvbm9zeW5jOjpTb2NrZXQ+KG1fY2hhdHJvb21QcmVmaXgsCkBAIC0xNDcsMTIgKzEyNywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsaWRhdG9yKTsKIAogICAvLyBzY2hlZHVsZSBhIG5ldyBqb2luIGV2ZW50Ci0gIG1fc2NoZWR1bGVyLT5zY2hlZHVsZUV2ZW50KHRpbWU6Om1pbGxpc2Vjb25kcyg2MDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDaGF0RGlhbG9nQmFja2VuZDo6c2VuZEpvaW4sIHRoaXMpKTsKKyAgbV9zY2hlZHVsZXItPnNjaGVkdWxlKHRpbWU6Om1pbGxpc2Vjb25kcyg2MDApLAorICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdERpYWxvZ0JhY2tlbmQ6OnNlbmRKb2luLCB0aGlzKSk7CiAKICAgLy8gY2FuY2VsIGV4aXN0aW5nIGhlbGxvIGV2ZW50IGlmIGl0IGV4aXN0cwotICBpZiAobV9oZWxsb0V2ZW50SWQgIT0gbnVsbHB0cikgewotICAgIG1fc2NoZWR1bGVyLT5jYW5jZWxFdmVudChtX2hlbGxvRXZlbnRJZCk7CisgIGlmIChtX2hlbGxvRXZlbnRJZCkgeworICAgIG1faGVsbG9FdmVudElkLmNhbmNlbCgpOwogICAgIG1faGVsbG9FdmVudElkLnJlc2V0KCk7CiAgIH0KIH0KQEAgLTE3OCwxOSArMTU4LDYgQEAKICAgUUlPRGV2aWNlJiBtX3NvdXJjZTsKIH07CiAKLXNoYXJlZF9wdHI8bmRuOjpJZGVudGl0eUNlcnRpZmljYXRlPgotQ2hhdERpYWxvZ0JhY2tlbmQ6OmxvYWRUcnVzdEFuY2hvcigpCi17Ci0gIFFGaWxlIGFuY2hvckZpbGUoIjovc2VjdXJpdHkvYW5jaG9yLmNlcnQiKTsKLQotICBpZiAoIWFuY2hvckZpbGUub3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5KSkgewotICAgIHJldHVybiB7fTsKLSAgfQotCi0gIGJvb3N0Ojppb3N0cmVhbXM6OnN0cmVhbTxJb0RldmljZVNvdXJjZT4gYW5jaG9yRmlsZVN0cmVhbShhbmNob3JGaWxlKTsKLSAgcmV0dXJuIG5kbjo6aW86OmxvYWQ8bmRuOjpJZGVudGl0eUNlcnRpZmljYXRlPihhbmNob3JGaWxlU3RyZWFtKTsKLX0KLQogdm9pZAogQ2hhdERpYWxvZ0JhY2tlbmQ6OmV4aXRDaGF0cm9vbSgpIHsKICAgaWYgKG1fam9pbmVkKQpAQCAtMjEyLDggKzE3OSw2IEBACiB2b2lkCiBDaGF0RGlhbG9nQmFja2VuZDo6cHJvY2Vzc1N5bmNVcGRhdGUoY29uc3Qgc3RkOjp2ZWN0b3I8Y2hyb25vc3luYzo6TWlzc2luZ0RhdGFJbmZvPiYgdXBkYXRlcykKIHsKLSAgX0xPR19ERUJVRygiPDw8IHByb2Nlc3NpbmcgVHJlZSBVcGRhdGUiKTsKLQogICBpZiAodXBkYXRlcy5lbXB0eSgpKSB7CiAgICAgcmV0dXJuOwogICB9CkBAIC0yMzIsMjcgKzE5NywxOCBAQAogICAgIGlmICh1cGRhdGVzW2ldLmhpZ2ggLSB1cGRhdGVzW2ldLmxvdyA8IDMpIHsKICAgICAgIGZvciAoY2hyb25vc3luYzo6U2VxTm8gc2VxID0gdXBkYXRlc1tpXS5sb3c7IHNlcSA8PSB1cGRhdGVzW2ldLmhpZ2g7ICsrc2VxKSB7CiAgICAgICAgIG1fc29jay0+ZmV0Y2hEYXRhKHVwZGF0ZXNbaV0uc2Vzc2lvbiwgc2VxLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpc10gKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgbmRuOjpEYXRhPiYgZGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnByb2Nlc3NDaGF0RGF0YShkYXRhLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdIChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IG5kbjo6RGF0YT4mIGRhdGEsIGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5wcm9jZXNzQ2hhdERhdGEoZGF0YSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZG46Ok9uVGltZW91dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDaGF0RGlhbG9nQmFja2VuZDo6cHJvY2Vzc0NoYXREYXRhLCB0aGlzLCBfMSwgdHJ1ZSwgdHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXREaWFsb2dCYWNrZW5kOjpwcm9jZXNzQ2hhdERhdGEsIHRoaXMsIF8xLCB0cnVlLCBmYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIChjb25zdCBuZG46OkludGVyZXN0JiBpbnRlcmVzdCkge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIpOwotICAgICAgICBfTE9HX0RFQlVHKCI8PDwgRmV0Y2hpbmcgIiA8PCB1cGRhdGVzW2ldLnNlc3Npb24gPDwgIi8iIDw8IHNlcSk7CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgLy8gVGhlcmUgYXJlIHRvbyBtYW55IG1zZ3MgdG8gZmV0Y2gsIGxldCdzIGp1c3QgZmV0Y2ggdGhlIGxhdGVzdCBvbmUKICAgICAgIG1fc29jay0+ZmV0Y2hEYXRhKHVwZGF0ZXNbaV0uc2Vzc2lvbiwgdXBkYXRlc1tpXS5oaWdoLAotICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdIChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IG5kbjo6RGF0YT4mIGRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cHJvY2Vzc0NoYXREYXRhKGRhdGEsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbdGhpc10gKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgbmRuOjpEYXRhPiYgZGF0YSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5wcm9jZXNzQ2hhdERhdGEoZGF0YSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG46Ok9uVGltZW91dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdERpYWxvZ0JhY2tlbmQ6OnByb2Nlc3NDaGF0RGF0YSwgdGhpcywgXzEsIHRydWUsIHRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdERpYWxvZ0JhY2tlbmQ6OnByb2Nlc3NDaGF0RGF0YSwgdGhpcywgXzEsIHRydWUsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdIChjb25zdCBuZG46OkludGVyZXN0JiBpbnRlcmVzdCkge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAyKTsKICAgICB9CiAKQEAgLTI2NCwyNSArMjIwLDIzIEBACiB9CiAKIHZvaWQKLUNoYXREaWFsb2dCYWNrZW5kOjpwcm9jZXNzQ2hhdERhdGEoY29uc3QgbmRuOjpzaGFyZWRfcHRyPGNvbnN0IG5kbjo6RGF0YT4mIGRhdGEsCitDaGF0RGlhbG9nQmFja2VuZDo6cHJvY2Vzc0NoYXREYXRhKGNvbnN0IG5kbjo6RGF0YSYgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWVkRGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1ZhbGlkYXRlZCkKIHsKICAgQ2hhdE1lc3NhZ2UgbXNnOwogCiAgIHRyeSB7Ci0gICAgbXNnLndpcmVEZWNvZGUoZGF0YS0+Z2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOworICAgIG1zZy53aXJlRGVjb2RlKGRhdGEuZ2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOwogICB9Ci0gIGNhdGNoICh0bHY6OkVycm9yKSB7Ci0gICAgX0xPR19ERUJVRygiRXJycnJyLi4gQ2FuIG5vdCBwYXJzZSBtc2cgd2l0aCBuYW1lOiAiIDw8Ci0gICAgICAgICAgICAgICBkYXRhLT5nZXROYW1lKCkgPDwgIi4gd2hhdCBpcyBoYXBwZW5pbmc/Iik7CisgIGNhdGNoICh0bHY6OkVycm9yJikgewogICAgIC8vIG5hc3R5IHN0dWZmOiBhcyBhIHJlbWVkeSwgd2UnbGwgZm9ybSBzb21lIHN0YW5kYXJkIG1zZyBmb3IgaW5wYXJzYWJsZSBtc2dzCiAgICAgbXNnLnNldE5pY2soImluY29ubnUiKTsKICAgICBtc2cuc2V0TXNnVHlwZShDaGF0TWVzc2FnZTo6T1RIRVIpOwogICAgIHJldHVybjsKICAgfQogCi0gIE5hbWUgcmVtb3RlU2Vzc2lvblByZWZpeCA9IGRhdGEtPmdldE5hbWUoKS5nZXRQcmVmaXgoLTEpOworICBOYW1lIHJlbW90ZVNlc3Npb25QcmVmaXggPSBkYXRhLmdldE5hbWUoKS5nZXRQcmVmaXgoLTEpOwogCiAgIGlmIChtc2cuZ2V0TXNnVHlwZSgpID09IENoYXRNZXNzYWdlOjpMRUFWRSkgewogICAgIEJhY2tlbmRSb3N0ZXI6Oml0ZXJhdG9yIGl0ID0gbV9yb3N0ZXIuZmluZChyZW1vdGVTZXNzaW9uUHJlZml4KTsKQEAgLTI5MCw3ICsyNDQsNyBAQAogICAgIGlmIChpdCAhPSBtX3Jvc3Rlci5lbmQoKSkgewogICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgZXZlbnQKICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihpdC0+c2Vjb25kLnRpbWVvdXRFdmVudElkKSkKLSAgICAgICAgbV9zY2hlZHVsZXItPmNhbmNlbEV2ZW50KGl0LT5zZWNvbmQudGltZW91dEV2ZW50SWQpOworICAgICAgICBpdC0+c2Vjb25kLnRpbWVvdXRFdmVudElkLmNhbmNlbCgpOwogCiAgICAgICAvLyBub3RpZnkgZnJvbnRlbmQgdG8gcmVtb3ZlIHRoZSByZW1vdGUgc2Vzc2lvbiAobm9kZSkKICAgICAgIGVtaXQgc2Vzc2lvblJlbW92ZWQoUVN0cmluZzo6ZnJvbVN0ZFN0cmluZyhyZW1vdGVTZXNzaW9uUHJlZml4LnRvVXJpKCkpLApAQCAtMzEyLDE3ICsyNjYsMTcgQEAKICAgICAgIEJPT1NUX0FTU0VSVChmYWxzZSk7CiAgICAgfQogCi0gICAgdWludDY0X3Qgc2VxTm8gPSBkYXRhLT5nZXROYW1lKCkuZ2V0KC0xKS50b051bWJlcigpOworICAgIHVpbnQ2NF90IHNlcU5vID0gZGF0YS5nZXROYW1lKCkuZ2V0KC0xKS50b051bWJlcigpOwogCiAgICAgLy8gSWYgYSB0aW1lb3V0IGV2ZW50IGhhcyBiZWVuIHNjaGVkdWxlZCwgY2FuY2VsIGl0LgogICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihpdC0+c2Vjb25kLnRpbWVvdXRFdmVudElkKSkKLSAgICAgIG1fc2NoZWR1bGVyLT5jYW5jZWxFdmVudChpdC0+c2Vjb25kLnRpbWVvdXRFdmVudElkKTsKKyAgICAgIGl0LT5zZWNvbmQudGltZW91dEV2ZW50SWQuY2FuY2VsKCk7CiAKICAgICAvLyAoUmUpc2NoZWR1bGUgYW5vdGhlciB0aW1lb3V0IGV2ZW50IGFmdGVyIDMgSEVMTE9fSU5URVJWQUw7CiAgICAgaXQtPnNlY29uZC50aW1lb3V0RXZlbnRJZCA9Ci0gICAgICBtX3NjaGVkdWxlci0+c2NoZWR1bGVFdmVudChIRUxMT19JTlRFUlZBTCAqIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDaGF0RGlhbG9nQmFja2VuZDo6cmVtb3RlU2Vzc2lvblRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIHJlbW90ZVNlc3Npb25QcmVmaXgpKTsKKyAgICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZShIRUxMT19JTlRFUlZBTCAqIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdERpYWxvZ0JhY2tlbmQ6OnJlbW90ZVNlc3Npb25UaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgcmVtb3RlU2Vzc2lvblByZWZpeCkpOwogCiAgICAgLy8gSWYgY2hhdCBtZXNzYWdlLCBub3RpZnkgdGhlIGZyb250ZW5kCiAgICAgaWYgKG1zZy5nZXRNc2dUeXBlKCkgPT0gQ2hhdE1lc3NhZ2U6OkNIQVQpIHsKQEAgLTQxNCw4ICszNjgsOCBAQAogICBwcmVwYXJlQ29udHJvbE1lc3NhZ2UobXNnLCBDaGF0TWVzc2FnZTo6Sk9JTik7CiAgIHNlbmRNc2cobXNnKTsKIAotICBtX2hlbGxvRXZlbnRJZCA9IG1fc2NoZWR1bGVyLT5zY2hlZHVsZUV2ZW50KEhFTExPX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXREaWFsb2dCYWNrZW5kOjpzZW5kSGVsbG8sIHRoaXMpKTsKKyAgbV9oZWxsb0V2ZW50SWQgPSBtX3NjaGVkdWxlci0+c2NoZWR1bGUoSEVMTE9fSU5URVJWQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXREaWFsb2dCYWNrZW5kOjpzZW5kSGVsbG8sIHRoaXMpKTsKICAgZW1pdCBuZXdDaGF0cm9vbUZvckRpc2NvdmVyeShOYW1lOjpDb21wb25lbnQobV9jaGF0cm9vbU5hbWUpKTsKIH0KIApAQCAtNDI2LDggKzM4MCw4IEBACiAgIHByZXBhcmVDb250cm9sTWVzc2FnZShtc2csIENoYXRNZXNzYWdlOjpIRUxMTyk7CiAgIHNlbmRNc2cobXNnKTsKIAotICBtX2hlbGxvRXZlbnRJZCA9IG1fc2NoZWR1bGVyLT5zY2hlZHVsZUV2ZW50KEhFTExPX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXREaWFsb2dCYWNrZW5kOjpzZW5kSGVsbG8sIHRoaXMpKTsKKyAgbV9oZWxsb0V2ZW50SWQgPSBtX3NjaGVkdWxlci0+c2NoZWR1bGUoSEVMTE9fSU5URVJWQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXREaWFsb2dCYWNrZW5kOjpzZW5kSGVsbG8sIHRoaXMpKTsKIH0KIAogdm9pZApAQCAtNDg5LDcgKzQ0Myw3IEBACiB7CiAgIHN0ZDo6c3RyaW5nc3RyZWFtIG9zOwogCi0gIENyeXB0b1BQOjpTdHJpbmdTb3VyY2UoZGlnZXN0LT5idWYoKSwgZGlnZXN0LT5zaXplKCksIHRydWUsCisgIENyeXB0b1BQOjpTdHJpbmdTb3VyY2UoZGlnZXN0LT5kYXRhKCksIGRpZ2VzdC0+c2l6ZSgpLCB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDcnlwdG9QUDo6SGV4RW5jb2RlcihuZXcgQ3J5cHRvUFA6OkZpbGVTaW5rKG9zKSwgZmFsc2UpKTsKICAgcmV0dXJuIG9zLnN0cigpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2NoYXQtZGlhbG9nLWJhY2tlbmQuaHBwIGIvc3JjL2NoYXQtZGlhbG9nLWJhY2tlbmQuaHBwCmluZGV4IGFlN2IzZGEuLmU5NTQzYmIgMTAwNjQ0Ci0tLSBhL3NyYy9jaGF0LWRpYWxvZy1iYWNrZW5kLmhwcAorKysgYi9zcmMvY2hhdC1kaWFsb2ctYmFja2VuZC5ocHAKQEAgLTE4LDggKzE4LDkgQEAKICNpbmNsdWRlICJjaGF0cm9vbS1pbmZvLmhwcCIKICNpbmNsdWRlICJjaGF0LW1lc3NhZ2UuaHBwIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHNvY2tldC5ocHA+CisjaW5jbHVkZSA8Q2hyb25vU3luYy9zb2NrZXQuaHBwPgogI2luY2x1ZGUgPGJvb3N0L3RocmVhZC5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3ItY29uZmlnLmhwcD4KICNlbmRpZgogCiBuYW1lc3BhY2UgY2hyb25vY2hhdCB7CkBAIC0zNSw3ICszNiw3IEBACiAgIG5kbjo6TmFtZSBzZXNzaW9uUHJlZml4OwogICBib29sIGhhc05pY2s7CiAgIHN0ZDo6c3RyaW5nIHVzZXJOaWNrOwotICBuZG46OkV2ZW50SWQgdGltZW91dEV2ZW50SWQ7CisgIG5kbjo6c2NoZWR1bGVyOjpFdmVudElkIHRpbWVvdXRFdmVudElkOwogfTsKIAogY2xhc3MgQ2hhdERpYWxvZ0JhY2tlbmQgOiBwdWJsaWMgUVRocmVhZApAQCAtNjEsOSArNjIsNiBAQAogICB2b2lkCiAgIGluaXRpYWxpemVTeW5jKCk7CiAKLSAgc2hhcmVkX3B0cjxuZG46OklkZW50aXR5Q2VydGlmaWNhdGU+Ci0gIGxvYWRUcnVzdEFuY2hvcigpOwotCiAgIHZvaWQKICAgZXhpdENoYXRyb29tKCk7CiAKQEAgLTc0LDcgKzcyLDcgQEAKICAgcHJvY2Vzc1N5bmNVcGRhdGUoY29uc3Qgc3RkOjp2ZWN0b3I8Y2hyb25vc3luYzo6TWlzc2luZ0RhdGFJbmZvPiYgdXBkYXRlcyk7CiAKICAgdm9pZAotICBwcm9jZXNzQ2hhdERhdGEoY29uc3QgbmRuOjpzaGFyZWRfcHRyPGNvbnN0IG5kbjo6RGF0YT4mIGRhdGEsCisgIHByb2Nlc3NDaGF0RGF0YShjb25zdCBuZG46OkRhdGEmIGRhdGEsCiAgICAgICAgICAgICAgICAgICBib29sIG5lZWREaXNwbGF5LAogICAgICAgICAgICAgICAgICAgYm9vbCBpc1ZhbGlkYXRlZCk7CiAKQEAgLTE2MCwyNCArMTU4LDI0IEBACiAgIGJvb2wgbV9pc05mZENvbm5lY3RlZDsKICAgc2hhcmVkX3B0cjxuZG46OkZhY2U+IG1fZmFjZTsKIAotICBOYW1lIG1fbG9jYWxSb3V0aW5nUHJlZml4OyAgICAgICAgICAgICAvLyByb3V0YWJsZSBsb2NhbCBwcmVmaXgKLSAgTmFtZSBtX2NoYXRyb29tUHJlZml4OyAgICAgICAgICAgICAgICAgLy8gY2hhdHJvb20gc3luYyBwcmVmaXgKLSAgTmFtZSBtX3VzZXJDaGF0UHJlZml4OyAgICAgICAgICAgICAgICAgLy8gdXNlciBjaGF0IHByZWZpeAotICBOYW1lIG1fcm91dGFibGVVc2VyQ2hhdFByZWZpeDsgICAgICAgICAvLyByb3V0YWJsZSB1c2VyIGNoYXQgcHJlZml4CisgIE5hbWUgbV9sb2NhbFJvdXRpbmdQcmVmaXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGFibGUgbG9jYWwgcHJlZml4CisgIE5hbWUgbV9jaGF0cm9vbVByZWZpeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhdHJvb20gc3luYyBwcmVmaXgKKyAgTmFtZSBtX3VzZXJDaGF0UHJlZml4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyIGNoYXQgcHJlZml4CisgIE5hbWUgbV9yb3V0YWJsZVVzZXJDaGF0UHJlZml4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGFibGUgdXNlciBjaGF0IHByZWZpeAogCi0gIHN0ZDo6c3RyaW5nIG1fY2hhdHJvb21OYW1lOyAgICAgICAgICAgIC8vIGNoYXRyb29tIG5hbWUKLSAgc3RkOjpzdHJpbmcgbV9uaWNrOyAgICAgICAgICAgICAgICAgICAgLy8gdXNlciBuaWNrCisgIHN0ZDo6c3RyaW5nIG1fY2hhdHJvb21OYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhdHJvb20gbmFtZQorICBzdGQ6OnN0cmluZyBtX25pY2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXIgbmljawogCi0gIE5hbWUgbV9zaWduaW5nSWQ7ICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25pbmcgaWRlbnRpdHkKLSAgc2hhcmVkX3B0cjxuZG46OlZhbGlkYXRvcj4gbV92YWxpZGF0b3I7Ly8gdmFsaWRhdG9yCi0gIHNoYXJlZF9wdHI8Y2hyb25vc3luYzo6U29ja2V0PiBtX3NvY2s7IC8vIFN5bmNTb2NrZXQKKyAgTmFtZSBtX3NpZ25pbmdJZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduaW5nIGlkZW50aXR5CisgIHNoYXJlZF9wdHI8bmRuOjpzZWN1cml0eTo6VmFsaWRhdG9yQ29uZmlnPiBtX3ZhbGlkYXRvcjsgICAgICAgLy8gdmFsaWRhdG9yCisgIHNoYXJlZF9wdHI8Y2hyb25vc3luYzo6U29ja2V0PiBtX3NvY2s7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3luY1NvY2tldAogCi0gIHVuaXF1ZV9wdHI8bmRuOjpTY2hlZHVsZXI+IG1fc2NoZWR1bGVyOy8vIHNjaGVkdWxlcgotICBuZG46OkV2ZW50SWQgbV9oZWxsb0V2ZW50SWQ7ICAgICAgICAgICAvLyBldmVudCBpZCBvZiB0aW1lb3V0CisgIHVuaXF1ZV9wdHI8bmRuOjpTY2hlZHVsZXI+IG1fc2NoZWR1bGVyOyAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NoZWR1bGVyCisgIG5kbjo6c2NoZWR1bGVyOjpFdmVudElkIG1faGVsbG9FdmVudElkOyAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlbnQgaWQgb2YgdGltZW91dAogCi0gIGJvb2wgbV9qb2luZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUgaWYgaW4gYSBjaGF0cm9vbQorICBib29sIG1fam9pbmVkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUgaWYgaW4gYSBjaGF0cm9vbQogCi0gIEJhY2tlbmRSb3N0ZXIgbV9yb3N0ZXI7ICAgICAgICAgICAgICAgIC8vIFVzZXIgcm9zdGVyCisgIEJhY2tlbmRSb3N0ZXIgbV9yb3N0ZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlciByb3N0ZXIKIAogICBzdGQ6Om11dGV4IG1fcmVzdW1lTXV0ZXg7CiAgIHN0ZDo6bXV0ZXggbV9uZmRDb25uZWN0aW9uTXV0ZXg7CmRpZmYgLS1naXQgYS9zcmMvY2hhdC1tZXNzYWdlLmNwcCBiL3NyYy9jaGF0LW1lc3NhZ2UuY3BwCmluZGV4IDIxNzA3ZDIuLjc5MzIzMjEgMTAwNjQ0Ci0tLSBhL3NyYy9jaGF0LW1lc3NhZ2UuY3BwCisrKyBiL3NyYy9jaGF0LW1lc3NhZ2UuY3BwCkBAIC0yMyw3ICsyMyw3IEBACiAgIHRoaXMtPndpcmVEZWNvZGUoY2hhdE1zZ1dpcmUpOwogfQogCi10ZW1wbGF0ZTxib29sIFQ+Cit0ZW1wbGF0ZTxuZG46OmVuY29kaW5nOjpUYWcgVD4KIHNpemVfdAogQ2hhdE1lc3NhZ2U6OndpcmVFbmNvZGUobmRuOjpFbmNvZGluZ0ltcGw8VD4mIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9zcmMvY2hhdC1tZXNzYWdlLmhwcCBiL3NyYy9jaGF0LW1lc3NhZ2UuaHBwCmluZGV4IDg2MGNlOWYuLjc3OGY1MDUgMTAwNjQ0Ci0tLSBhL3NyYy9jaGF0LW1lc3NhZ2UuaHBwCisrKyBiL3NyYy9jaGF0LW1lc3NhZ2UuaHBwCkBAIC04Niw3ICs4Niw3IEBACiAgIHNldFRpbWVzdGFtcChjb25zdCB0aW1lX3QgdGltZXN0YW1wKTsKIAogcHJpdmF0ZToKLSAgdGVtcGxhdGU8Ym9vbCBUPgorICB0ZW1wbGF0ZTxuZG46OmVuY29kaW5nOjpUYWcgVD4KICAgc2l6ZV90CiAgIHdpcmVFbmNvZGUobmRuOjpFbmNvZGluZ0ltcGw8VD4mIGVuY29kZXIpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9zcmMvY2hhdHJvb20tZGlzY292ZXJ5LWJhY2tlbmQuY3BwIGIvc3JjL2NoYXRyb29tLWRpc2NvdmVyeS1iYWNrZW5kLmNwcAppbmRleCAzNzFhMTE5Li42N2RkN2ZhIDEwMDY0NAotLS0gYS9zcmMvY2hhdHJvb20tZGlzY292ZXJ5LWJhY2tlbmQuY3BwCisrKyBiL3NyYy9jaGF0cm9vbS1kaXNjb3ZlcnktYmFja2VuZC5jcHAKQEAgLTExMywxMSArMTEzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBfMSkpOwogCiAgIC8vIGFkZCBhbiB0aW1lciB0byByZWZyZXNoIGZyb250IGVuZAotICBpZiAobV9yZWZyZXNoUGFuZWxJZCAhPSBudWxscHRyKSB7Ci0gICAgbV9zY2hlZHVsZXItPmNhbmNlbEV2ZW50KG1fcmVmcmVzaFBhbmVsSWQpOworICBpZiAobV9yZWZyZXNoUGFuZWxJZCkgeworICAgIG1fcmVmcmVzaFBhbmVsSWQuY2FuY2VsKCk7CiAgIH0KLSAgbV9yZWZyZXNoUGFuZWxJZCA9IG1fc2NoZWR1bGVyLT5zY2hlZHVsZUV2ZW50KFJFRlJFU0hfSU5URVJWQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpc10geyBzZW5kQ2hhdHJvb21MaXN0KCk7IH0pOworICBtX3JlZnJlc2hQYW5lbElkID0gbV9zY2hlZHVsZXItPnNjaGVkdWxlKFJFRlJFU0hfSU5URVJWQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdIHsgc2VuZENoYXRyb29tTGlzdCgpOyB9KTsKIH0KIAogdm9pZApAQCAtMTQyLDEwICsxNDIsMTAgQEAKIH0KIAogdm9pZAotQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpwcm9jZXNzQ2hhdHJvb21EYXRhKGNvbnN0IG5kbjo6c2hhcmVkX3B0cjxjb25zdCBuZG46OkRhdGE+JiBkYXRhKQorQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpwcm9jZXNzQ2hhdHJvb21EYXRhKGNvbnN0IG5kbjo6RGF0YSYgZGF0YSkKIHsKICAgLy8gZXh0cmFjdCBjaGF0cm9vbSBuYW1lIGJ5IGdldCgtMykKLSAgTmFtZTo6Q29tcG9uZW50IGNoYXRyb29tTmFtZSA9IGRhdGEtPmdldE5hbWUoKS5nZXQoLTMpOworICBOYW1lOjpDb21wb25lbnQgY2hhdHJvb21OYW1lID0gZGF0YS5nZXROYW1lKCkuZ2V0KC0zKTsKICAgYXV0byBpdCA9IG1fY2hhdHJvb21MaXN0LmZpbmQoY2hhdHJvb21OYW1lKTsKICAgaWYgKGl0ID09IG1fY2hhdHJvb21MaXN0LmVuZCgpKSB7CiAgICAgbV9jaGF0cm9vbUxpc3RbY2hhdHJvb21OYW1lXS5jaGF0cm9vbU5hbWUgPSBjaGF0cm9vbU5hbWUudG9VcmkoKTsKQEAgLTE2MywxNiArMTYzLDE1IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgaXQtPnNlY29uZC5jb3VudCA9IDA7Ci0gICAgICBpZiAobV9yb3V0YWJsZVVzZXJEaXNjb3ZlcnlQcmVmaXggPCBkYXRhLT5nZXROYW1lKCkpIHsKKyAgICAgIGlmIChtX3JvdXRhYmxlVXNlckRpc2NvdmVyeVByZWZpeCA8IGRhdGEuZ2V0TmFtZSgpKSB7CiAgICAgICAgIC8vIHdoZW4gdHdvIG1hbmFnZXJzIGV4aXN0LCB0aGUgb25lIHdpdGggInNtYWxsZXIiIG5hbWUgdGFrZSB0aGUgY29udHJvbAogICAgICAgICBzZW5kVXBkYXRlKGNoYXRyb29tTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgIGVsc2UgewotICAgICAgICBpZiAoaXQtPnNlY29uZC5oZWxsb1RpbWVvdXRFdmVudElkICE9IG51bGxwdHIpIHsKLSAgICAgICAgICBtX3NjaGVkdWxlci0+Y2FuY2VsRXZlbnQoaXQtPnNlY29uZC5oZWxsb1RpbWVvdXRFdmVudElkKTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZCkgeworICAgICAgICAgIGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZC5jYW5jZWwoKTsKICAgICAgICAgfQotICAgICAgICBpdC0+c2Vjb25kLmhlbGxvVGltZW91dEV2ZW50SWQgPSBudWxscHRyOwogICAgICAgICBpdC0+c2Vjb25kLmlzTWFuYWdlciA9IGZhbHNlOwogICAgICAgfQogCkBAIC0xODAsMzUgKzE3OSwzNCBAQAogICB9CiAKICAgZWxzZSBpZiAoaXQtPnNlY29uZC5pc1BhcnRpY2lwYW50KSB7Ci0gICAgaWYgKGl0LT5zZWNvbmQubG9jYWxDaGF0cm9vbVRpbWVvdXRFdmVudElkICE9IG51bGxwdHIpCi0gICAgICBtX3NjaGVkdWxlci0+Y2FuY2VsRXZlbnQoaXQtPnNlY29uZC5sb2NhbENoYXRyb29tVGltZW91dEV2ZW50SWQpOworICAgIGlmIChpdC0+c2Vjb25kLmxvY2FsQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCkKKyAgICAgIGl0LT5zZWNvbmQubG9jYWxDaGF0cm9vbVRpbWVvdXRFdmVudElkLmNhbmNlbCgpOwogCiAgICAgLy8gSWYgYSB1c2VyIHN0YXJ0IGEgcmFuZG9tIHRpbWVyIGl0IG1lYW5zIHRoYXQgaGUgdGhpbmsgaGlzIG93biBjaGF0cm9vbSBpcyBub3QgYWxpdmUKICAgICAvLyBCdXQgd2hlbiBoZSByZWNlaXZlIHNvbWUgcGFja2V0LCBpdCBtZWFucyB0aGF0IHRoaXMgY2hhdHJvb20gaXMgYWxpdmUsIHNvIGhlIGNhbgogICAgIC8vIGNhbmNlbCB0aGUgdGltZXIKLSAgICBpZiAoaXQtPnNlY29uZC5tYW5hZ2VyU2VsZWN0aW9uVGltZW91dEV2ZW50SWQgIT0gbnVsbHB0cikKLSAgICAgIG1fc2NoZWR1bGVyLT5jYW5jZWxFdmVudChpdC0+c2Vjb25kLm1hbmFnZXJTZWxlY3Rpb25UaW1lb3V0RXZlbnRJZCk7Ci0gICAgaXQtPnNlY29uZC5tYW5hZ2VyU2VsZWN0aW9uVGltZW91dEV2ZW50SWQgPSBudWxscHRyOworICAgIGlmIChpdC0+c2Vjb25kLm1hbmFnZXJTZWxlY3Rpb25UaW1lb3V0RXZlbnRJZCkKKyAgICAgIGl0LT5zZWNvbmQubWFuYWdlclNlbGVjdGlvblRpbWVvdXRFdmVudElkLmNhbmNlbCgpOwogCiAgICAgaXQtPnNlY29uZC5sb2NhbENoYXRyb29tVGltZW91dEV2ZW50SWQgPQotICAgICAgbV9zY2hlZHVsZXItPnNjaGVkdWxlRXZlbnQoSEVMTE9fSU5URVJWQUwgKiAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpsb2NhbFNlc3Npb25UaW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBjaGF0cm9vbU5hbWUpKTsKKyAgICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZShIRUxMT19JTlRFUlZBTCAqIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpsb2NhbFNlc3Npb25UaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgY2hhdHJvb21OYW1lKSk7CiAgIH0KICAgZWxzZSB7Ci0gICAgaWYgKCFkYXRhLT5nZXRDb250ZW50KCkuZW1wdHkoKSkgeworICAgIGlmIChkYXRhLmhhc0NvbnRlbnQoKSkgewogICAgICAgQ2hhdHJvb21JbmZvIGNoYXRyb29tOwotICAgICAgY2hhdHJvb20ud2lyZURlY29kZShkYXRhLT5nZXRDb250ZW50KCkuYmxvY2tGcm9tVmFsdWUoKSk7CisgICAgICBjaGF0cm9vbS53aXJlRGVjb2RlKGRhdGEuZ2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOwogICAgICAgaXQtPnNlY29uZC5pbmZvID0gY2hhdHJvb207CiAgICAgfQogCi0gICAgaWYgKGl0LT5zZWNvbmQucmVtb3RlQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCAhPSBudWxscHRyKQotICAgICAgbV9zY2hlZHVsZXItPmNhbmNlbEV2ZW50KGl0LT5zZWNvbmQucmVtb3RlQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCk7CisgICAgaWYgKGl0LT5zZWNvbmQucmVtb3RlQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCkKKyAgICAgIGl0LT5zZWNvbmQucmVtb3RlQ2hhdHJvb21UaW1lb3V0RXZlbnRJZC5jYW5jZWwoKTsKIAogICAgIGl0LT5zZWNvbmQucmVtb3RlQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCA9Ci0gICAgICBtX3NjaGVkdWxlci0+c2NoZWR1bGVFdmVudChIRUxMT19JTlRFUlZBTCAqIDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDaGF0cm9vbURpc2NvdmVyeUJhY2tlbmQ6OnJlbW90ZVNlc3Npb25UaW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBjaGF0cm9vbU5hbWUpKTsKKyAgICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZShIRUxMT19JTlRFUlZBTCAqIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpyZW1vdGVTZXNzaW9uVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIGNoYXRyb29tTmFtZSkpOwogICB9CiAgIC8vIGlmIHRoaXMgaXMgYSBjaGF0cm9vbSB0aGF0IGhhdmVuJ3QgYmVlbiBwcmludCBvbiB0aGUgZGlzY292ZXJ5IHBhbmVsLCBwcmludCBpdC4KICAgaWYoIWl0LT5zZWNvbmQuaXNQcmludCkgewpAQCAtMjI0LDkgKzIyMiw5IEBACiAgIGlmIChpdCA9PSBtX2NoYXRyb29tTGlzdC5lbmQoKSB8fCBpdC0+c2Vjb25kLmlzUGFydGljaXBhbnQgPT0gZmFsc2UpCiAgICAgcmV0dXJuOwogICBpdC0+c2Vjb25kLm1hbmFnZXJTZWxlY3Rpb25UaW1lb3V0RXZlbnRJZCA9Ci0gICAgbV9zY2hlZHVsZXItPnNjaGVkdWxlRXZlbnQodGltZTo6bWlsbGlzZWNvbmRzKG1fcmFuZ2VVbmlmb3JtUmFuZG9tKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXRyb29tRGlzY292ZXJ5QmFja2VuZDo6cmFuZG9tU2Vzc2lvblRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBjaGF0cm9vbU5hbWUpKTsKKyAgICBtX3NjaGVkdWxlci0+c2NoZWR1bGUodGltZTo6bWlsbGlzZWNvbmRzKG1fcmFuZ2VVbmlmb3JtUmFuZG9tKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDaGF0cm9vbURpc2NvdmVyeUJhY2tlbmQ6OnJhbmRvbVNlc3Npb25UaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIGNoYXRyb29tTmFtZSkpOwogfQogCiB2b2lkCkBAIC0yNTIsMTUgKzI1MCwxNSBAQAogICBpZiAoaXQgIT0gbV9jaGF0cm9vbUxpc3QuZW5kKCkgJiYgaXQtPnNlY29uZC5pc01hbmFnZXIpIHsKICAgICBuZG46OkJsb2NrIGJ1ZiA9IGl0LT5zZWNvbmQuaW5mby53aXJlRW5jb2RlKCk7CiAKLSAgICBpZiAoaXQtPnNlY29uZC5oZWxsb1RpbWVvdXRFdmVudElkICE9IG51bGxwdHIpIHsKLSAgICAgIG1fc2NoZWR1bGVyLT5jYW5jZWxFdmVudChpdC0+c2Vjb25kLmhlbGxvVGltZW91dEV2ZW50SWQpOworICAgIGlmIChpdC0+c2Vjb25kLmhlbGxvVGltZW91dEV2ZW50SWQpIHsKKyAgICAgIGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZC5jYW5jZWwoKTsKICAgICB9CiAKICAgICBtX3NvY2stPnB1Ymxpc2hEYXRhKGJ1Zi53aXJlKCksIGJ1Zi5zaXplKCksIEZSRVNITkVTU19QRVJJT0QsIGl0LT5zZWNvbmQuY2hhdHJvb21QcmVmaXgpOwogCiAgICAgaXQtPnNlY29uZC5oZWxsb1RpbWVvdXRFdmVudElkID0KLSAgICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZUV2ZW50KEhFTExPX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpzZW5kVXBkYXRlLCB0aGlzLCBjaGF0cm9vbU5hbWUpKTsKKyAgICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZShIRUxMT19JTlRFUlZBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDaGF0cm9vbURpc2NvdmVyeUJhY2tlbmQ6OnNlbmRVcGRhdGUsIHRoaXMsIGNoYXRyb29tTmFtZSkpOwogICAgIC8vIGlmIHRoaXMgaXMgYSBjaGF0cm9vbSB0aGF0IGhhdmVuJ3QgYmVlbiBwcmludCBvbiB0aGUgZGlzY292ZXJ5IHBhbmVsLCBwcmludCBpdC4KICAgICBpZighaXQtPnNlY29uZC5pc1ByaW50KSB7CiAgICAgICBzZW5kQ2hhdHJvb21MaXN0KCk7CkBAIC0zMTgsOCArMzE2LDggQEAKICAgICBpdC0+c2Vjb25kLmluZm8ucmVtb3ZlUGFydGljaXBhbnQoc2Vzc2lvblByZWZpeCk7CiAgICAgaWYgKGl0LT5zZWNvbmQuaW5mby5nZXRQYXJ0aWNpcGFudHMoKS5zaXplKCkgPT0gMCkgewogICAgICAgLy8gQmVmb3JlIGRlbGV0aW5nIHRoZSBjaGF0cm9vbSwgY2FuY2VsIHRoZSBoZWxsbyBldmVudCB0aW1lciBpZiBleGlzdAotICAgICAgaWYgKGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZCAhPSBudWxscHRyKQotICAgICAgICBtX3NjaGVkdWxlci0+Y2FuY2VsRXZlbnQoaXQtPnNlY29uZC5oZWxsb1RpbWVvdXRFdmVudElkKTsKKyAgICAgIGlmIChpdC0+c2Vjb25kLmhlbGxvVGltZW91dEV2ZW50SWQpCisgICAgICAgIGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZC5jYW5jZWwoKTsKIAogICAgICAgbV9jaGF0cm9vbUxpc3QuZXJhc2UoY2hhdHJvb21OYW1lKTsKICAgICAgIE5hbWUgcHJlZml4ID0gc2Vzc2lvblByZWZpeDsKQEAgLTMzNCwxOCArMzMyLDE2IEBACiAgICAgICBpdC0+c2Vjb25kLmlzTWFuYWdlciA9IGZhbHNlOwogICAgICAgaXQtPnNlY29uZC5pc1ByaW50ID0gZmFsc2U7CiAgICAgICBpdC0+c2Vjb25kLmNvdW50ID0gMDsKLSAgICAgIGlmIChpdC0+c2Vjb25kLmhlbGxvVGltZW91dEV2ZW50SWQgIT0gbnVsbHB0cikKLSAgICAgICAgbV9zY2hlZHVsZXItPmNhbmNlbEV2ZW50KGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZCk7Ci0gICAgICBpdC0+c2Vjb25kLmhlbGxvVGltZW91dEV2ZW50SWQgPSBudWxscHRyOworICAgICAgaWYgKGl0LT5zZWNvbmQuaGVsbG9UaW1lb3V0RXZlbnRJZCkKKyAgICAgICAgaXQtPnNlY29uZC5oZWxsb1RpbWVvdXRFdmVudElkLmNhbmNlbCgpOwogCi0gICAgICBpZiAoaXQtPnNlY29uZC5sb2NhbENoYXRyb29tVGltZW91dEV2ZW50SWQgIT0gbnVsbHB0cikKLSAgICAgICAgbV9zY2hlZHVsZXItPmNhbmNlbEV2ZW50KGl0LT5zZWNvbmQubG9jYWxDaGF0cm9vbVRpbWVvdXRFdmVudElkKTsKLSAgICAgIGl0LT5zZWNvbmQubG9jYWxDaGF0cm9vbVRpbWVvdXRFdmVudElkID0gbnVsbHB0cjsKKyAgICAgIGlmIChpdC0+c2Vjb25kLmxvY2FsQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCkKKyAgICAgICAgaXQtPnNlY29uZC5sb2NhbENoYXRyb29tVGltZW91dEV2ZW50SWQuY2FuY2VsKCk7CiAKICAgICAgIGl0LT5zZWNvbmQucmVtb3RlQ2hhdHJvb21UaW1lb3V0RXZlbnRJZCA9Ci0gICAgICBtX3NjaGVkdWxlci0+c2NoZWR1bGVFdmVudChIRUxMT19JTlRFUlZBTCAqIDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXRyb29tRGlzY292ZXJ5QmFja2VuZDo6cmVtb3RlU2Vzc2lvblRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgY2hhdHJvb21OYW1lKSk7CisgICAgICBtX3NjaGVkdWxlci0+c2NoZWR1bGUoSEVMTE9fSU5URVJWQUwgKiA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXRyb29tRGlzY292ZXJ5QmFja2VuZDo6cmVtb3RlU2Vzc2lvblRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBjaGF0cm9vbU5hbWUpKTsKICAgICB9CiAKICAgICBpZiAoaXQtPnNlY29uZC5pc01hbmFnZXIpIHsKQEAgLTM4MSw5ICszNzcsOSBAQAogICAgIG1fY2hhdHJvb21MaXN0W2NoYXRyb29tTmFtZV0uaXNNYW5hZ2VyID0gZmFsc2U7CiAgICAgbV9jaGF0cm9vbUxpc3RbY2hhdHJvb21OYW1lXS5jb3VudCA9IDA7CiAgICAgbV9jaGF0cm9vbUxpc3RbY2hhdHJvb21OYW1lXS5pc1ByaW50ID0gZmFsc2U7Ci0gICAgbV9zY2hlZHVsZXItPnNjaGVkdWxlRXZlbnQodGltZTo6bWlsbGlzZWNvbmRzKDYwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpyYW5kb21TZXNzaW9uVGltZW91dCwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXRyb29tTmFtZSkpOworICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZSh0aW1lOjptaWxsaXNlY29uZHMoNjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpyYW5kb21TZXNzaW9uVGltZW91dCwgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0cm9vbU5hbWUpKTsKICAgfQogICBlbHNlIHsKICAgICAvLyBFbnRlcmluZyBhbiBleGlzdGluZyBjaGF0cm9vbQpAQCAtMzkxLDE1ICszODcsMTQgQEAKICAgICBpdC0+c2Vjb25kLmlzTWFuYWdlciA9IGZhbHNlOwogICAgIGl0LT5zZWNvbmQuY2hhdHJvb21QcmVmaXggPSBuZXdQcmVmaXg7CiAKLSAgICBpZiAoaXQtPnNlY29uZC5yZW1vdGVDaGF0cm9vbVRpbWVvdXRFdmVudElkICE9IG51bGxwdHIpCi0gICAgICBtX3NjaGVkdWxlci0+Y2FuY2VsRXZlbnQoaXQtPnNlY29uZC5yZW1vdGVDaGF0cm9vbVRpbWVvdXRFdmVudElkKTsKKyAgICBpZiAoaXQtPnNlY29uZC5yZW1vdGVDaGF0cm9vbVRpbWVvdXRFdmVudElkKQorICAgICBpdC0+c2Vjb25kLnJlbW90ZUNoYXRyb29tVGltZW91dEV2ZW50SWQuY2FuY2VsKCk7CiAgICAgaXQtPnNlY29uZC5pc1ByaW50ID0gZmFsc2U7Ci0gICAgaXQtPnNlY29uZC5yZW1vdGVDaGF0cm9vbVRpbWVvdXRFdmVudElkID0gbnVsbHB0cjsKIAogICAgIGl0LT5zZWNvbmQubG9jYWxDaGF0cm9vbVRpbWVvdXRFdmVudElkID0KLSAgICAgIG1fc2NoZWR1bGVyLT5zY2hlZHVsZUV2ZW50KEhFTExPX0lOVEVSVkFMICogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXRyb29tRGlzY292ZXJ5QmFja2VuZDo6bG9jYWxTZXNzaW9uVGltZW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgY2hhdHJvb21OYW1lKSk7CisgICAgICBtX3NjaGVkdWxlci0+c2NoZWR1bGUoSEVMTE9fSU5URVJWQUwgKiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNoYXRyb29tRGlzY292ZXJ5QmFja2VuZDo6bG9jYWxTZXNzaW9uVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIGNoYXRyb29tTmFtZSkpOwogICAgIGVtaXQgY2hhdHJvb21JbmZvUmVxdWVzdChjaGF0cm9vbU5hbWUudG9VcmkoKSwgZmFsc2UpOwogICB9CiB9CkBAIC00MjEsMTggKzQxNiwxMCBAQAogdm9pZAogQ2hhdHJvb21EaXNjb3ZlcnlCYWNrZW5kOjpvbklkZW50aXR5VXBkYXRlZChjb25zdCBRU3RyaW5nJiBpZGVudGl0eSkKIHsKLSAgbV9jaGF0cm9vbUxpc3QuY2xlYXIoKTsKICAgbV9pZGVudGl0eSA9IE5hbWUoaWRlbnRpdHkudG9TdGRTdHJpbmcoKSk7CiAgIG1fdXNlckRpc2NvdmVyeVByZWZpeC5jbGVhcigpOwogICBtX3VzZXJEaXNjb3ZlcnlQcmVmaXguYXBwZW5kKG1faWRlbnRpdHkpLmFwcGVuZCgiQ0hST05PQ0hBVC1ESVNDT1ZFUllEQVRBIik7CiAgIHVwZGF0ZVByZWZpeGVzKCk7Ci0KLSAgewotICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PmxvY2sobV9yZXN1bWVNdXRleCk7Ci0gICAgbV9zaG91bGRSZXN1bWUgPSB0cnVlOwotICB9Ci0KLSAgbV9mYWNlLT5nZXRJb1NlcnZpY2UoKS5zdG9wKCk7CiB9CiAKIHZvaWQKQEAgLTQ0NCwxMSArNDMxLDExIEBACiAgIH0KIAogICBlbWl0IGNoYXRyb29tTGlzdFJlYWR5KGNoYXRyb29tTGlzdCk7Ci0gIGlmIChtX3JlZnJlc2hQYW5lbElkICE9IG51bGxwdHIpIHsKLSAgICBtX3NjaGVkdWxlci0+Y2FuY2VsRXZlbnQobV9yZWZyZXNoUGFuZWxJZCk7CisgIGlmIChtX3JlZnJlc2hQYW5lbElkKSB7CisgICAgbV9yZWZyZXNoUGFuZWxJZC5jYW5jZWwoKTsKICAgfQotICBtX3JlZnJlc2hQYW5lbElkID0gbV9zY2hlZHVsZXItPnNjaGVkdWxlRXZlbnQoUkVGUkVTSF9JTlRFUlZBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzXSB7IHNlbmRDaGF0cm9vbUxpc3QoKTsgfSk7CisgIG1fcmVmcmVzaFBhbmVsSWQgPSBtX3NjaGVkdWxlci0+c2NoZWR1bGUoUkVGUkVTSF9JTlRFUlZBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpc10geyBzZW5kQ2hhdHJvb21MaXN0KCk7IH0pOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvY2hhdHJvb20tZGlzY292ZXJ5LWJhY2tlbmQuaHBwIGIvc3JjL2NoYXRyb29tLWRpc2NvdmVyeS1iYWNrZW5kLmhwcAppbmRleCBkNmJmODQzLi5hZDQ3MWFjIDEwMDY0NAotLS0gYS9zcmMvY2hhdHJvb20tZGlzY292ZXJ5LWJhY2tlbmQuaHBwCisrKyBiL3NyYy9jaGF0cm9vbS1kaXNjb3ZlcnktYmFja2VuZC5ocHAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJjaGF0cm9vbS1pbmZvLmhwcCIKICNpbmNsdWRlIDxib29zdC9yYW5kb20uaHBwPgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHNvY2tldC5ocHA+CisjaW5jbHVkZSA8Q2hyb25vU3luYy9zb2NrZXQuaHBwPgogI2luY2x1ZGUgPGJvb3N0L3RocmVhZC5ocHA+CiAjZW5kaWYKIApAQCAtMzAsMTMgKzMwLDEzIEBACiAgIE5hbWUgY2hhdHJvb21QcmVmaXg7CiAgIENoYXRyb29tSW5mbyBpbmZvOwogICAvLyBGb3IgYSBjaGF0cm9vbSdzIHVzZXIgdG8gY2hlY2sgd2hldGhlciBoaXMgb3duIGNoYXRyb29tIGlzIGFsaXZlCi0gIG5kbjo6RXZlbnRJZCBsb2NhbENoYXRyb29tVGltZW91dEV2ZW50SWQ7CisgIG5kbjo6c2NoZWR1bGVyOjpFdmVudElkIGxvY2FsQ2hhdHJvb21UaW1lb3V0RXZlbnRJZDsKICAgLy8gSWYgdGhlIG1hbmFnZXIgbm8gbG9uZ2VyIGV4aXN0LCBzZXQgYSByYW5kb20gdGltZXIgdG8gY29tcGV0ZSBmb3IgbWFuYWdlcgotICBuZG46OkV2ZW50SWQgbWFuYWdlclNlbGVjdGlvblRpbWVvdXRFdmVudElkOworICBuZG46OnNjaGVkdWxlcjo6RXZlbnRJZCBtYW5hZ2VyU2VsZWN0aW9uVGltZW91dEV2ZW50SWQ7CiAgIC8vIEZvciBhIHVzZXIgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgY2hhdHJvb20gdGhhdCBoZSBpcyBub3QgaW4uCi0gIG5kbjo6RXZlbnRJZCByZW1vdGVDaGF0cm9vbVRpbWVvdXRFdmVudElkOworICBuZG46OnNjaGVkdWxlcjo6RXZlbnRJZCByZW1vdGVDaGF0cm9vbVRpbWVvdXRFdmVudElkOwogICAvLyBJZiB0aGUgdXNlciBpcyBtYW5hZ2VyLCBoZSB3aWxsIG5lZWQgdGhlIGhlbGxvRXZlbnRJZCB0byBrZWVwIHRyYWNrIG9mIGhlbGxvIG1lc3NhZ2UKLSAgbmRuOjpFdmVudElkIGhlbGxvVGltZW91dEV2ZW50SWQ7CisgIG5kbjo6c2NoZWR1bGVyOjpFdmVudElkIGhlbGxvVGltZW91dEV2ZW50SWQ7CiAgIC8vIFRvIHRlbGwgd2hldGhlciB0aGUgdXNlciBpcyBpbiB0aGlzIGNoYXRyb29tCiAgIGJvb2wgaXNQYXJ0aWNpcGFudDsKICAgLy8gVG8gdGVsbCB3aGV0aGVyIHRoZSB1c2VyIGlzIHRoZSBtYW5hZ2VyCkBAIC03NSw3ICs3NSw3IEBACiAgIHByb2Nlc3NTeW5jVXBkYXRlKGNvbnN0IHN0ZDo6dmVjdG9yPGNocm9ub3N5bmM6Ok1pc3NpbmdEYXRhSW5mbz4mIHVwZGF0ZXMpOwogCiAgIHZvaWQKLSAgcHJvY2Vzc0NoYXRyb29tRGF0YShjb25zdCBuZG46OnNoYXJlZF9wdHI8Y29uc3QgbmRuOjpEYXRhPiYgZGF0YSk7CisgIHByb2Nlc3NDaGF0cm9vbURhdGEoY29uc3QgbmRuOjpEYXRhJiBkYXRhKTsKIAogICB2b2lkCiAgIGxvY2FsU2Vzc2lvblRpbWVvdXQoY29uc3QgTmFtZTo6Q29tcG9uZW50JiBjaGF0cm9vbU5hbWUpOwpAQCAtMjI4LDcgKzIyOCw3IEBACiAgIHNoYXJlZF9wdHI8bmRuOjpGYWNlPiBtX2ZhY2U7CiAKICAgdW5pcXVlX3B0cjxuZG46OlNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7ICAgICAgICAgICAgLy8gc2NoZWR1bGVyCi0gIG5kbjo6RXZlbnRJZCBtX3JlZnJlc2hQYW5lbElkOworICBuZG46OnNjaGVkdWxlcjo6RXZlbnRJZCBtX3JlZnJlc2hQYW5lbElkOwogICBzaGFyZWRfcHRyPGNocm9ub3N5bmM6OlNvY2tldD4gbV9zb2NrOyAvLyBTeW5jU29ja2V0CiAKICAgQ2hhdHJvb21MaXN0IG1fY2hhdHJvb21MaXN0OwpkaWZmIC0tZ2l0IGEvc3JjL2NoYXRyb29tLWluZm8uY3BwIGIvc3JjL2NoYXRyb29tLWluZm8uY3BwCmluZGV4IDgxMzAyYmIuLmFhOGVmY2MgMTAwNjQ0Ci0tLSBhL3NyYy9jaGF0cm9vbS1pbmZvLmNwcAorKysgYi9zcmMvY2hhdHJvb20taW5mby5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICAgdGhpcy0+d2lyZURlY29kZShjaGF0cm9vbVdpcmUpOwogfQogCi10ZW1wbGF0ZTxib29sIFQ+Cit0ZW1wbGF0ZTxuZG46OmVuY29kaW5nOjpUYWcgVD4KIHNpemVfdAogQ2hhdHJvb21JbmZvOjp3aXJlRW5jb2RlKG5kbjo6RW5jb2RpbmdJbXBsPFQ+JiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvc3JjL2NoYXRyb29tLWluZm8uaHBwIGIvc3JjL2NoYXRyb29tLWluZm8uaHBwCmluZGV4IGRjYTQwOTAuLjgxZTBmZGUgMTAwNjQ0Ci0tLSBhL3NyYy9jaGF0cm9vbS1pbmZvLmhwcAorKysgYi9zcmMvY2hhdHJvb20taW5mby5ocHAKQEAgLTk1LDcgKzk1LDcgQEAKICAgc2V0TWFuYWdlcihjb25zdCBOYW1lJiBtYW5hZ2VyKTsKIAogcHJpdmF0ZToKLSAgdGVtcGxhdGU8Ym9vbCBUPgorICB0ZW1wbGF0ZTxuZG46OmVuY29kaW5nOjpUYWcgVD4KICAgc2l6ZV90CiAgIHdpcmVFbmNvZGUobmRuOjpFbmNvZGluZ0ltcGw8VD4mIGVuY29kZXIpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9zcmMvY29tbW9uLmhwcCBiL3NyYy9jb21tb24uaHBwCmluZGV4IGM4NDYxZGYuLjNiMTRmNzkgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24uaHBwCisrKyBiL3NyYy9jb21tb24uaHBwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgPG5kbi1jeHgvY29tbW9uLmhwcD4KICNpbmNsdWRlIDxuZG4tY3h4L2ludGVyZXN0LmhwcD4KICNpbmNsdWRlIDxuZG4tY3h4L2RhdGEuaHBwPgogCkBAIC02MSw3ICs2MCw2IEBACiB1c2luZyBuZG46OkludGVyZXN0OwogdXNpbmcgbmRuOjpEYXRhOwogdXNpbmcgbmRuOjpOYW1lOwotdXNpbmcgbmRuOjpFeGNsdWRlOwogdXNpbmcgbmRuOjpCbG9jazsKIHVzaW5nIG5kbjo6U2lnbmF0dXJlOwogdXNpbmcgbmRuOjpLZXlMb2NhdG9yOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbmYuY3BwIGIvc3JjL2NvbmYuY3BwCmluZGV4IGZiYTM2YjguLmQwMmZlMDggMTAwNjQ0Ci0tLSBhL3NyYy9jb25mLmNwcAorKysgYi9zcmMvY29uZi5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICAgdGhpcy0+d2lyZURlY29kZShjb25mV2lyZSk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgVD4KK3RlbXBsYXRlPG5kbjo6ZW5jb2Rpbmc6OlRhZyBUPgogc2l6ZV90CiBDb25mOjp3aXJlRW5jb2RlKG5kbjo6RW5jb2RpbmdJbXBsPFQ+JiBibG9jaykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL3NyYy9jb25mLmhwcCBiL3NyYy9jb25mLmhwcAppbmRleCAwNjI2YmYxLi4zYjRmMzk0IDEwMDY0NAotLS0gYS9zcmMvY29uZi5ocHAKKysrIGIvc3JjL2NvbmYuaHBwCkBAIC02MCw3ICs2MCw3IEBACiAgIHNldE5pY2soY29uc3Qgc3RkOjpzdHJpbmcmIG5pY2spOwogCiBwcml2YXRlOgotICB0ZW1wbGF0ZTxib29sIFQ+CisgIHRlbXBsYXRlPG5kbjo6ZW5jb2Rpbmc6OlRhZyBUPgogICBzaXplX3QKICAgd2lyZUVuY29kZShuZG46OkVuY29kaW5nSW1wbDxUPiYgYmxvY2spIGNvbnN0OwogCmRpZmYgLS1naXQgYS9zcmMvY29udGFjdC1tYW5hZ2VyLmNwcCBiL3NyYy9jb250YWN0LW1hbmFnZXIuY3BwCmluZGV4IDgxMTEzMGUuLjJiYjUxNTMgMTAwNjQ0Ci0tLSBhL3NyYy9jb250YWN0LW1hbmFnZXIuY3BwCisrKyBiL3NyYy9jb250YWN0LW1hbmFnZXIuY3BwCkBAIC0xOSw5ICsxOSwxMSBAQAogCiAjaWZuZGVmIFFfTU9DX1JVTgogI2luY2x1ZGUgPG5kbi1jeHgvZW5jb2RpbmcvYnVmZmVyLXN0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC91dGlsL2NyeXB0by5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS9zZWMtcnVsZS1yZWxhdGl2ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3ItcmVnZXguaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvZmFjZS5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3IuaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvdmFsaWRhdG9yLW51bGwuaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvc2lnbmluZy1oZWxwZXJzLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L3ZlcmlmaWNhdGlvbi1oZWxwZXJzLmhwcD4KICNpbmNsdWRlICJjcnlwdG9wcC5ocHAiCiAjaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+CiAjaW5jbHVkZSA8Ym9vc3QvdG9rZW5pemVyLmhwcD4KQEAgLTMxLDggKzMzLDYgQEAKIAogbmFtZXNwYWNlIGZzID0gYm9vc3Q6OmZpbGVzeXN0ZW07CiAKLS8vIElOSVRfTE9HR0VSKCJjaHJvbm9jaGF0LkNvbnRhY3RNYW5hZ2VyIik7Ci0KIG5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKIAogdXNpbmcgc3RkOjpzdHJpbmc7CkBAIC00MSwyMSArNDEsMTMgQEAKIAogdXNpbmcgbmRuOjpGYWNlOwogdXNpbmcgbmRuOjpPQnVmZmVyU3RyZWFtOwotdXNpbmcgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlOwotdXNpbmcgbmRuOjpWYWxpZGF0b3I7Ci11c2luZyBuZG46OlZhbGlkYXRvclJlZ2V4OwotdXNpbmcgbmRuOjpTZWNSdWxlUmVsYXRpdmU7Ci11c2luZyBuZG46Ok9uRGF0YVZhbGlkYXRlZDsKLXVzaW5nIG5kbjo6T25EYXRhVmFsaWRhdGlvbkZhaWxlZDsKLXVzaW5nIG5kbjo6T25JbnRlcmVzdFZhbGlkYXRlZDsKLXVzaW5nIG5kbjo6T25JbnRlcmVzdFZhbGlkYXRpb25GYWlsZWQ7Cit1c2luZyBuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZTsKIAogCiBDb250YWN0TWFuYWdlcjo6Q29udGFjdE1hbmFnZXIoRmFjZSYgZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0KiBwYXJlbnQpCiAgIDogUU9iamVjdChwYXJlbnQpCiAgICwgbV9mYWNlKGZhY2UpCi0gICwgbV9kbnNMaXN0ZW5lcklkKDApCiB7CiAgIGluaXRpYWxpemVTZWN1cml0eSgpOwogfQpAQCAtNjQsNzYgKzU2LDExIEBACiB7CiB9CiAKLS8vIHByaXZhdGUgbWV0aG9kcwotc2hhcmVkX3B0cjxJZGVudGl0eUNlcnRpZmljYXRlPgotQ29udGFjdE1hbmFnZXI6OmxvYWRUcnVzdEFuY2hvcigpCi17Ci0gIHNoYXJlZF9wdHI8SWRlbnRpdHlDZXJ0aWZpY2F0ZT4gYW5jaG9yOwotCi0gIFFGaWxlIGFuY2hvckZpbGUoIjovc2VjdXJpdHkvYW5jaG9yLmNlcnQiKTsKLQotICBpZiAoIWFuY2hvckZpbGUub3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5KSkgewotICAgIGVtaXQgd2FybmluZyhRU3RyaW5nKCJDYW5ub3QgbG9hZCB0cnVzdCBhbmNob3IhIikpOwotICAgIHJldHVybiBhbmNob3I7Ci0gIH0KLQotICBxaW50NjQgZmlsZVNpemUgPSBhbmNob3JGaWxlLnNpemUoKTsKLSAgY2hhciogYnVmID0gbmV3IGNoYXJbZmlsZVNpemVdOwotICBhbmNob3JGaWxlLnJlYWQoYnVmLCBmaWxlU2l6ZSk7Ci0KLSAgdHJ5IHsKLSAgICB1c2luZyBuYW1lc3BhY2UgQ3J5cHRvUFA7Ci0KLSAgICBPQnVmZmVyU3RyZWFtIG9zOwotICAgIFN0cmluZ1NvdXJjZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWYpLCBmaWxlU2l6ZSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgbmV3IEJhc2U2NERlY29kZXIobmV3IEZpbGVTaW5rKG9zKSkpOwotICAgIGFuY2hvciA9IG1ha2Vfc2hhcmVkPElkZW50aXR5Q2VydGlmaWNhdGU+KCk7Ci0gICAgYW5jaG9yLT53aXJlRGVjb2RlKEJsb2NrKG9zLmJ1ZigpKSk7Ci0gIH0KLSAgY2F0Y2ggKENyeXB0b1BQOjpFeGNlcHRpb24mIGUpIHsKLSAgICBlbWl0IHdhcm5pbmcoUVN0cmluZygiQ2Fubm90IGxvYWQgdHJ1c3QgYW5jaG9yISIpKTsKLSAgfQotICBjYXRjaCAoSWRlbnRpdHlDZXJ0aWZpY2F0ZTo6RXJyb3ImIGUpIHsKLSAgICBlbWl0IHdhcm5pbmcoUVN0cmluZygiQ2Fubm90IGxvYWQgdHJ1c3QgYW5jaG9yISIpKTsKLSAgfQotICBjYXRjaChCbG9jazo6RXJyb3ImIGUpIHsKLSAgICBlbWl0IHdhcm5pbmcoUVN0cmluZygiQ2Fubm90IGxvYWQgdHJ1c3QgYW5jaG9yISIpKTsKLSAgfQotCi0gIGRlbGV0ZSBbXSBidWY7Ci0KLSAgcmV0dXJuIGFuY2hvcjsKLX0KLQogdm9pZAogQ29udGFjdE1hbmFnZXI6OmluaXRpYWxpemVTZWN1cml0eSgpCiB7Ci0gIHNoYXJlZF9wdHI8SWRlbnRpdHlDZXJ0aWZpY2F0ZT4gYW5jaG9yID0gbG9hZFRydXN0QW5jaG9yKCk7Ci0KLSAgc2hhcmVkX3B0cjxWYWxpZGF0b3JSZWdleD4gdmFsaWRhdG9yID0gbWFrZV9zaGFyZWQ8VmFsaWRhdG9yUmVnZXg+KGJvb3N0OjpyZWYobV9mYWNlKSk7Ci0gIHZhbGlkYXRvci0+YWRkRGF0YVZlcmlmaWNhdGlvblJ1bGUobWFrZV9zaGFyZWQ8U2VjUnVsZVJlbGF0aXZlPigiXihbXjxETlM+XSopPEROUz48RU5ET1JTRUQ+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8PiopPD48SUQtQ0VSVD4kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PSIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkpOwotICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKG1ha2Vfc2hhcmVkPFNlY1J1bGVSZWxhdGl2ZT4oIl4oW148RE5TPl0qKTxETlM+PD48RU5ET1JTRUU+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8PiopPD48SUQtQ0VSVD4kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PSIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkpOwotICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKG1ha2Vfc2hhcmVkPFNlY1J1bGVSZWxhdGl2ZT4oIl4oW148RE5TPl0qKTxETlM+PFBST0ZJTEU+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8PiopPD48SUQtQ0VSVD4kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PSIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkpOwotICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKG1ha2Vfc2hhcmVkPFNlY1J1bGVSZWxhdGl2ZT4oIl4oW148UFJPRklMRS1DRVJUPl0qKTxQUk9GSUxFLUNFUlQ+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8Pio8a3NrLS4qPik8SUQtQ0VSVD4kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PSIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkpOwotICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKG1ha2Vfc2hhcmVkPFNlY1J1bGVSZWxhdGl2ZT4oIl4oW148S0VZPl0qKTxLRVk+KDw+Kik8a3NrLS4qPjxJRC1DRVJUPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXihbXjxLRVk+XSopPEtFWT48ZHNrLS4qPjxJRC1DRVJUPiQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj4iLCAiXFwxXFwyIiwgIlxcMSIsIHRydWUpKTsKLSAgdmFsaWRhdG9yLT5hZGREYXRhVmVyaWZpY2F0aW9uUnVsZShtYWtlX3NoYXJlZDxTZWNSdWxlUmVsYXRpdmU+KCJeKFtePEtFWT5dKik8S0VZPjxkc2stLio+PElELUNFUlQ+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8PiopPGtzay0uKj48SUQtQ0VSVD4kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9PSIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkpOwotICB2YWxpZGF0b3ItPmFkZERhdGFWZXJpZmljYXRpb25SdWxlKG1ha2Vfc2hhcmVkPFNlY1J1bGVSZWxhdGl2ZT4oIl4oPD4qKSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl4oW148S0VZPl0qKTxLRVk+KDw+Kik8a3NrLS4qPjxJRC1DRVJUPiQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj4iLCAiXFwxIiwgIlxcMVxcMiIsIHRydWUpKTsKLSAgdmFsaWRhdG9yLT5hZGRUcnVzdEFuY2hvcihhbmNob3IpOwotICBtX3ZhbGlkYXRvciA9IHZhbGlkYXRvcjsKKyAgbV92YWxpZGF0b3IgPSBtYWtlX3NoYXJlZDxuZG46OnNlY3VyaXR5OjpWYWxpZGF0b3JDb25maWc+KG1fZmFjZSk7CisgIG1fdmFsaWRhdG9yLT5sb2FkKCJzZWN1cml0eS92YWxpZGF0aW9uLWNvbnRhY3QtbWFuYWdlci5jb25mIik7CiB9CiAKIHZvaWQKQEAgLTE0NCwxMSArNzEsMTIgQEAKIAogICBJbnRlcmVzdCBpbnRlcmVzdChpbnRlcmVzdE5hbWUpOwogICBpbnRlcmVzdC5zZXRJbnRlcmVzdExpZmV0aW1lKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CisgIGludGVyZXN0LnNldENhbkJlUHJlZml4KHRydWUpOwogICBpbnRlcmVzdC5zZXRNdXN0QmVGcmVzaCh0cnVlKTsKIAotICBPbkRhdGFWYWxpZGF0ZWQgb25WYWxpZGF0ZWQgPQorICBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvblN1Y2Nlc3NDYWxsYmFjayBvblZhbGlkYXRlZCA9CiAgICAgYmluZCgmQ29udGFjdE1hbmFnZXI6Om9uRG5zQ29sbGVjdEVuZG9yc2VWYWxpZGF0ZWQsIHRoaXMsIF8xLCBpZGVudGl0eSk7Ci0gIE9uRGF0YVZhbGlkYXRpb25GYWlsZWQgb25WYWxpZGF0aW9uRmFpbGVkID0KKyAgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25GYWlsdXJlQ2FsbGJhY2sgb25WYWxpZGF0aW9uRmFpbGVkID0KICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25EbnNDb2xsZWN0RW5kb3JzZVZhbGlkYXRpb25GYWlsZWQsIHRoaXMsIF8xLCBfMiwgaWRlbnRpdHkpOwogICBUaW1lb3V0Tm90aWZ5IHRpbWVvdXROb3RpZnkgPQogICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkRuc0NvbGxlY3RFbmRvcnNlVGltZW91dE5vdGlmeSwgdGhpcywgXzEsIGlkZW50aXR5KTsKQEAgLTE2MywxOSArOTEsMjEgQEAKICAgICBtX2J1ZmZlcmVkQ29udGFjdHNbaWRlbnRpdHldLm1fZW5kb3JzZUNvbGxlY3Rpb247CiAKICAgaWYoY2VydEluZGV4ID49IGVuZG9yc2VDb2xsZWN0aW9uLT5nZXRDb2xsZWN0aW9uRW50cmllcygpLnNpemUoKSkKLSAgICBwcmVwYXJlRW5kb3JzZUluZm8oaWRlbnRpdHkpOworICAgIHJldHVybiBwcmVwYXJlRW5kb3JzZUluZm8oaWRlbnRpdHkpOwogCiAgIE5hbWUgaW50ZXJlc3ROYW1lKGVuZG9yc2VDb2xsZWN0aW9uLT5nZXRDb2xsZWN0aW9uRW50cmllcygpW2NlcnRJbmRleF0uY2VydE5hbWUpOwogCiAgIEludGVyZXN0IGludGVyZXN0KGludGVyZXN0TmFtZSk7CiAgIGludGVyZXN0LnNldEludGVyZXN0TGlmZXRpbWUodGltZTo6bWlsbGlzZWNvbmRzKDEwMDApKTsKLSAgaW50ZXJlc3Quc2V0TXVzdEJlRnJlc2godHJ1ZSk7CisgIGludGVyZXN0LnNldE11c3RCZUZyZXNoKGZhbHNlKTsKIAogICBtX2ZhY2UuZXhwcmVzc0ludGVyZXN0KGludGVyZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkVuZG9yc2VDZXJ0aWZpY2F0ZUludGVybmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIF8yLCBpZGVudGl0eSwgY2VydEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kb3JzZUNvbGxlY3Rpb24tPmdldENvbGxlY3Rpb25FbnRyaWVzKClbY2VydEluZGV4XS5oYXNoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25FbmRvcnNlQ2VydGlmaWNhdGVJbnRlcm5hbFRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBfMSwgaWRlbnRpdHksIGNlcnRJbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ29udGFjdE1hbmFnZXI6Om9uRW5kb3JzZUNlcnRpZmljYXRlSW50ZXJuYWxUaW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIGlkZW50aXR5LCBjZXJ0SW5kZXgpKTsKIH0KIApAQCAtMjAyLDcgKzEzMiw3IEBACiAgICAgbV9idWZmZXJlZENvbnRhY3RzW2lkZW50aXR5XS5tX2VuZG9yc2VDZXJ0TGlzdC5lbmQoKTsKIAogICBmb3IgKDsgY0l0ICE9IGNFbmQ7IGNJdCsrLCBlbmRvcnNlQ2VydENvdW50KyspIHsKLSAgICBzaGFyZWRfcHRyPENvbnRhY3Q+IGNvbnRhY3QgPSBnZXRDb250YWN0KCgqY0l0KS0+Z2V0U2lnbmVyKCkuZ2V0UHJlZml4KC0xKSk7CisgICAgc2hhcmVkX3B0cjxDb250YWN0PiBjb250YWN0ID0gZ2V0Q29udGFjdCgoKmNJdCktPmdldFNpZ25lcigpKTsKICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGNvbnRhY3QpKQogICAgICAgY29udGludWU7CiAKQEAgLTIxMCwxNiArMTQwLDE3IEBACiAgICAgICAgICFjb250YWN0LT5jYW5CZVRydXN0ZWRGb3IocHJvZmlsZS5nZXRJZGVudGl0eU5hbWUoKSkpCiAgICAgICBjb250aW51ZTsKIAotICAgIGlmICghVmFsaWRhdG9yOjp2ZXJpZnlTaWduYXR1cmUoKipjSXQsIGNvbnRhY3QtPmdldFB1YmxpY0tleSgpKSkKKyAgICBpZiAoISgqY0l0KS0+aXNWYWxpZCgpKQorICAgICAgY29udGludWU7CisKKyAgICBpZiAoIW5kbjo6c2VjdXJpdHk6OnZlcmlmeVNpZ25hdHVyZSgqKmNJdCwgY29udGFjdC0+Z2V0UHVibGljS2V5KCkuZGF0YSgpLCBjb250YWN0LT5nZXRQdWJsaWNLZXkoKS5zaXplKCkpKQogICAgICAgY29udGludWU7CiAKICAgICBjb25zdCBQcm9maWxlJiB0bXBQcm9maWxlID0gKCpjSXQpLT5nZXRQcm9maWxlKCk7Ci0gICAgaWYgKHRtcFByb2ZpbGUgIT0gcHJvZmlsZSkKLSAgICAgIGNvbnRpbnVlOwotCiAgICAgY29uc3QgdmVjdG9yPHN0cmluZz4mIGVuZG9yc2VMaXN0ID0gKCpjSXQpLT5nZXRFbmRvcnNlTGlzdCgpOwogICAgIGZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVJdCA9IGVuZG9yc2VMaXN0LmJlZ2luKCk7IGVJdCAhPSBlbmRvcnNlTGlzdC5lbmQoKTsgZUl0KyspCi0gICAgICBlbmRvcnNlQ291bnRbKmVJdF0gKz0gMTsKKyAgICAgIGlmICh0bXBQcm9maWxlLmdldCgqZUl0KSA9PSBwcm9maWxlLmdldCgqZUl0KSkKKyAgICAgICAgZW5kb3JzZUNvdW50WyplSXRdICs9IDE7CiAgIH0KIAogICBmb3IgKFByb2ZpbGU6OmNvbnN0X2l0ZXJhdG9yIHBJdCA9IHByb2ZpbGUuYmVnaW4oKTsgcEl0ICE9IHByb2ZpbGUuZW5kKCk7IHBJdCsrKSB7CkBAIC0yMzIsMzUgKzE2MywzNiBAQAogfQogCiB2b2lkCi1Db250YWN0TWFuYWdlcjo6b25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0ZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgZGF0YSwKK0NvbnRhY3RNYW5hZ2VyOjpvbkRuc1NlbGZFbmRvcnNlQ2VydFZhbGlkYXRlZChjb25zdCBEYXRhJiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWUmIGlkZW50aXR5KQogewogICB0cnkgewogICAgIERhdGEgcGxhaW5EYXRhOwotICAgIHBsYWluRGF0YS53aXJlRGVjb2RlKGRhdGEtPmdldENvbnRlbnQoKS5ibG9ja0Zyb21WYWx1ZSgpKTsKKyAgICBwbGFpbkRhdGEud2lyZURlY29kZShkYXRhLmdldENvbnRlbnQoKS5ibG9ja0Zyb21WYWx1ZSgpKTsKICAgICBzaGFyZWRfcHRyPEVuZG9yc2VDZXJ0aWZpY2F0ZT4gc2VsZkVuZG9yc2VDZXJ0aWZpY2F0ZSA9CiAgICAgICBtYWtlX3NoYXJlZDxFbmRvcnNlQ2VydGlmaWNhdGU+KGJvb3N0OjpjcmVmKHBsYWluRGF0YSkpOwotICAgIGlmIChWYWxpZGF0b3I6OnZlcmlmeVNpZ25hdHVyZShwbGFpbkRhdGEsIHNlbGZFbmRvcnNlQ2VydGlmaWNhdGUtPmdldFB1YmxpY0tleUluZm8oKSkpIHsKKworICAgIGlmIChuZG46OnNlY3VyaXR5Ojp2ZXJpZnlTaWduYXR1cmUocGxhaW5EYXRhLCAqc2VsZkVuZG9yc2VDZXJ0aWZpY2F0ZSkpIHsKICAgICAgIG1fYnVmZmVyZWRDb250YWN0c1tpZGVudGl0eV0ubV9zZWxmRW5kb3JzZUNlcnQgPSBzZWxmRW5kb3JzZUNlcnRpZmljYXRlOwogICAgICAgZmV0Y2hDb2xsZWN0RW5kb3JzZShpZGVudGl0eSk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgIGVtaXQgY29udGFjdEluZm9GZXRjaEZhaWxlZChRU3RyaW5nOjpmcm9tU3RkU3RyaW5nKGlkZW50aXR5LnRvVXJpKCkpKTsKKyAgICAgIGVtaXQgY29udGFjdEluZm9GZXRjaEZhaWxlZChRU3RyaW5nOjpmcm9tU3RkU3RyaW5nKGlkZW50aXR5LnRvVXJpKCkgKyAiOiB2ZXJpZmljYXRpb24gZmFpbGVkIikpOwogICB9CiAgIGNhdGNoKEJsb2NrOjpFcnJvciYgZSkgewotICAgIGVtaXQgY29udGFjdEluZm9GZXRjaEZhaWxlZChRU3RyaW5nOjpmcm9tU3RkU3RyaW5nKGlkZW50aXR5LnRvVXJpKCkpKTsKKyAgICBlbWl0IGNvbnRhY3RJbmZvRmV0Y2hGYWlsZWQoUVN0cmluZzo6ZnJvbVN0ZFN0cmluZyhpZGVudGl0eS50b1VyaSgpICsgIjogYmxvY2sgZXJyb3IgIiArIGUud2hhdCgpKSk7CiAgIH0KICAgY2F0Y2goRW5kb3JzZUNlcnRpZmljYXRlOjpFcnJvciYgZSkgewotICAgIGVtaXQgY29udGFjdEluZm9GZXRjaEZhaWxlZChRU3RyaW5nOjpmcm9tU3RkU3RyaW5nKGlkZW50aXR5LnRvVXJpKCkpKTsKKyAgICBlbWl0IGNvbnRhY3RJbmZvRmV0Y2hGYWlsZWQoUVN0cmluZzo6ZnJvbVN0ZFN0cmluZyhpZGVudGl0eS50b1VyaSgpICsgIjogY2VydCBlcnJvciAiICsgZS53aGF0KCkpKTsKICAgfQogICBjYXRjaChEYXRhOjpFcnJvciYgZSkgewotICAgIGVtaXQgY29udGFjdEluZm9GZXRjaEZhaWxlZChRU3RyaW5nOjpmcm9tU3RkU3RyaW5nKGlkZW50aXR5LnRvVXJpKCkpKTsKKyAgICBlbWl0IGNvbnRhY3RJbmZvRmV0Y2hGYWlsZWQoUVN0cmluZzo6ZnJvbVN0ZFN0cmluZyhpZGVudGl0eS50b1VyaSgpICsgIjogZGF0YSBlcnJvciAiICsgZS53aGF0KCkpKTsKICAgfQogfQogCiB2b2lkCi1Db250YWN0TWFuYWdlcjo6b25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0aW9uRmFpbGVkKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgRGF0YT4mIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgZmFpbEluZm8sCitDb250YWN0TWFuYWdlcjo6b25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0aW9uRmFpbGVkKGNvbnN0IERhdGEmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbjo6c2VjdXJpdHk6OlZhbGlkYXRpb25FcnJvciYgZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWUmIGlkZW50aXR5KQogewogICAvLyBJZiB3ZSBjYW5ub3QgdmFsaWRhdGUgdGhlIFNlbGYtRW5kb3JzZS1DZXJ0aWZpY2F0ZSwgd2UgbWF5IHJldHJ5IG9yIGZldGNoIGlkLWNlcnQsCkBAIC0yNzgsMjMgKzIxMCwyMyBAQAogfQogCiB2b2lkCi1Db250YWN0TWFuYWdlcjo6b25EbnNDb2xsZWN0RW5kb3JzZVZhbGlkYXRlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IERhdGE+JiBkYXRhLAorQ29udGFjdE1hbmFnZXI6Om9uRG5zQ29sbGVjdEVuZG9yc2VWYWxpZGF0ZWQoY29uc3QgRGF0YSYgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWUmIGlkZW50aXR5KQogewogICB0cnkgewogICAgIHNoYXJlZF9wdHI8RW5kb3JzZUNvbGxlY3Rpb24+IGVuZG9yc2VDb2xsZWN0aW9uID0KLSAgICAgIG1ha2Vfc2hhcmVkPEVuZG9yc2VDb2xsZWN0aW9uPihkYXRhLT5nZXRDb250ZW50KCkpOworICAgICAgbWFrZV9zaGFyZWQ8RW5kb3JzZUNvbGxlY3Rpb24+KGRhdGEuZ2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOwogICAgIG1fYnVmZmVyZWRDb250YWN0c1tpZGVudGl0eV0ubV9lbmRvcnNlQ29sbGVjdGlvbiA9IGVuZG9yc2VDb2xsZWN0aW9uOwogICAgIGZldGNoRW5kb3JzZUNlcnRpZmljYXRlSW50ZXJuYWwoaWRlbnRpdHksIDApOwogICB9Ci0gIGNhdGNoICh0bHY6OkVycm9yKSB7CisgIGNhdGNoIChzdGQ6OnJ1bnRpbWVfZXJyb3ImKSB7CiAgICAgcHJlcGFyZUVuZG9yc2VJbmZvKGlkZW50aXR5KTsKICAgfQogfQogCiB2b2lkCi1Db250YWN0TWFuYWdlcjo6b25EbnNDb2xsZWN0RW5kb3JzZVZhbGlkYXRpb25GYWlsZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIGZhaWxJbmZvLAorQ29udGFjdE1hbmFnZXI6Om9uRG5zQ29sbGVjdEVuZG9yc2VWYWxpZGF0aW9uRmFpbGVkKGNvbnN0IERhdGEmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6VmFsaWRhdGlvbkVycm9yJiBlcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBpZGVudGl0eSkKIHsKICAgcHJlcGFyZUVuZG9yc2VJbmZvKGlkZW50aXR5KTsKQEAgLTMwOCw3ICsyNDAsNyBAQAogfQogCiB2b2lkCi1Db250YWN0TWFuYWdlcjo6b25FbmRvcnNlQ2VydGlmaWNhdGVJbnRlcm5hbChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsIERhdGEmIGRhdGEsCitDb250YWN0TWFuYWdlcjo6b25FbmRvcnNlQ2VydGlmaWNhdGVJbnRlcm5hbChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsIGNvbnN0IERhdGEmIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBpZGVudGl0eSwgc2l6ZV90IGNlcnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBoYXNoKQogewpAQCAtMzUwLDEwICsyODIsMTIgQEAKICAgICAgIGludGVyZXN0TmFtZS5hcHBlbmQoIkROUyIpLmFwcGVuZChtX2lkZW50aXR5LndpcmVFbmNvZGUoKSkuYXBwZW5kKCJFTkRPUlNFRSIpOwogCiAgICAgICBJbnRlcmVzdCBpbnRlcmVzdChpbnRlcmVzdE5hbWUpOworICAgICAgaW50ZXJlc3Quc2V0TXVzdEJlRnJlc2godHJ1ZSk7CiAgICAgICBpbnRlcmVzdC5zZXRJbnRlcmVzdExpZmV0aW1lKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CiAKLSAgICAgIE9uRGF0YVZhbGlkYXRlZCBvblZhbGlkYXRlZCA9IGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkRuc0VuZG9yc2VlVmFsaWRhdGVkLCB0aGlzLCBfMSk7Ci0gICAgICBPbkRhdGFWYWxpZGF0aW9uRmFpbGVkIG9uVmFsaWRhdGlvbkZhaWxlZCA9CisgICAgICBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvblN1Y2Nlc3NDYWxsYmFjayBvblZhbGlkYXRlZCA9CisgICAgICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkRuc0VuZG9yc2VlVmFsaWRhdGVkLCB0aGlzLCBfMSk7CisgICAgICBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvbkZhaWx1cmVDYWxsYmFjayBvblZhbGlkYXRpb25GYWlsZWQgPQogICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25EbnNFbmRvcnNlZVZhbGlkYXRpb25GYWlsZWQsIHRoaXMsIF8xLCBfMik7CiAgICAgICBUaW1lb3V0Tm90aWZ5IHRpbWVvdXROb3RpZnkgPSBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25EbnNFbmRvcnNlZVRpbWVvdXROb3RpZnksIHRoaXMsIF8xKTsKIApAQCAtMzYzLDEwICsyOTcsMTAgQEAKIH0KIAogdm9pZAotQ29udGFjdE1hbmFnZXI6Om9uRG5zRW5kb3JzZWVWYWxpZGF0ZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgZGF0YSkKK0NvbnRhY3RNYW5hZ2VyOjpvbkRuc0VuZG9yc2VlVmFsaWRhdGVkKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgIERhdGEgZW5kb3JzZURhdGE7Ci0gIGVuZG9yc2VEYXRhLndpcmVEZWNvZGUoZGF0YS0+Z2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOworICBlbmRvcnNlRGF0YS53aXJlRGVjb2RlKGRhdGEuZ2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOwogCiAgIEVuZG9yc2VDZXJ0aWZpY2F0ZSBlbmRvcnNlQ2VydGlmaWNhdGUoZW5kb3JzZURhdGEpOwogICBtX2NvbnRhY3RTdG9yYWdlLT51cGRhdGVDb2xsZWN0RW5kb3JzZShlbmRvcnNlQ2VydGlmaWNhdGUpOwpAQCAtMzc1LDggKzMwOSw4IEBACiB9CiAKIHZvaWQKLUNvbnRhY3RNYW5hZ2VyOjpvbkRuc0VuZG9yc2VlVmFsaWRhdGlvbkZhaWxlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IERhdGE+JiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgZmFpbEluZm8pCitDb250YWN0TWFuYWdlcjo6b25EbnNFbmRvcnNlZVZhbGlkYXRpb25GYWlsZWQoY29uc3QgRGF0YSYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpWYWxpZGF0aW9uRXJyb3ImIGVycm9yKQogewogICBkZWNyZWFzZUNvbGxlY3RTdGF0dXMoKTsKIH0KQEAgLTQwOSwyOCArMzQzLDMwIEBACiAKICAgc2hhcmVkX3B0cjxEYXRhPiBkYXRhID0gbWFrZV9zaGFyZWQ8RGF0YT4oKTsKICAgZGF0YS0+c2V0TmFtZShkbnNOYW1lKTsKKyAgZGF0YS0+c2V0RnJlc2huZXNzUGVyaW9kKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CiAKICAgRW5kb3JzZUNvbGxlY3Rpb24gZW5kb3JzZUNvbGxlY3Rpb247CiAgIG1fY29udGFjdFN0b3JhZ2UtPmdldENvbGxlY3RFbmRvcnNlKGVuZG9yc2VDb2xsZWN0aW9uKTsKIAogICBkYXRhLT5zZXRDb250ZW50KGVuZG9yc2VDb2xsZWN0aW9uLndpcmVFbmNvZGUoKSk7Ci0gIG1fa2V5Q2hhaW4uc2lnbkJ5SWRlbnRpdHkoKmRhdGEsIG1faWRlbnRpdHkpOworCisgIG1fa2V5Q2hhaW4uc2lnbigqZGF0YSwgbmRuOjpzZWN1cml0eTo6c2lnbmluZ0J5SWRlbnRpdHkobV9pZGVudGl0eSkpOwogCiAgIG1fY29udGFjdFN0b3JhZ2UtPnVwZGF0ZURuc090aGVyc0VuZG9yc2UoKmRhdGEpOwogICBtX2ZhY2UucHV0KCpkYXRhKTsKIH0KIAogdm9pZAotQ29udGFjdE1hbmFnZXI6Om9uSWRlbnRpdHlDZXJ0VmFsaWRhdGVkKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgRGF0YT4mIGRhdGEpCitDb250YWN0TWFuYWdlcjo6b25JZGVudGl0eUNlcnRWYWxpZGF0ZWQoY29uc3QgRGF0YSYgZGF0YSkKIHsKLSAgc2hhcmVkX3B0cjxJZGVudGl0eUNlcnRpZmljYXRlPiBjZXJ0ID0gbWFrZV9zaGFyZWQ8SWRlbnRpdHlDZXJ0aWZpY2F0ZT4oYm9vc3Q6OmNyZWYoKmRhdGEpKTsKKyAgc2hhcmVkX3B0cjxDZXJ0aWZpY2F0ZT4gY2VydCA9IG1ha2Vfc2hhcmVkPENlcnRpZmljYXRlPihib29zdDo6Y3JlZihkYXRhKSk7CiAgIG1fYnVmZmVyZWRJZENlcnRzW2NlcnQtPmdldE5hbWUoKV0gPSBjZXJ0OwogICBkZWNyZWFzZUlkQ2VydENvdW50KCk7CiB9CiAKIHZvaWQKLUNvbnRhY3RNYW5hZ2VyOjpvbklkZW50aXR5Q2VydFZhbGlkYXRpb25GYWlsZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBmYWlsSW5mbykKK0NvbnRhY3RNYW5hZ2VyOjpvbklkZW50aXR5Q2VydFZhbGlkYXRpb25GYWlsZWQoY29uc3QgRGF0YSYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6VmFsaWRhdGlvbkVycm9yJiBlcnJvcikKIHsKICAgLy8gX0xPR19ERUJVRygiQ29udGFjdE1hbmFnZXI6Om9uSWRlbnRpdHlDZXJ0VmFsaWRhdGlvbkZhaWxlZCAiIDw8IGRhdGEtPmdldE5hbWUoKSk7CiAgIGRlY3JlYXNlSWRDZXJ0Q291bnQoKTsKQEAgLTQ3MiwyMCArNDA4LDIwIEBACiBzaGFyZWRfcHRyPEVuZG9yc2VDZXJ0aWZpY2F0ZT4KIENvbnRhY3RNYW5hZ2VyOjpnZXRTaWduZWRTZWxmRW5kb3JzZUNlcnRpZmljYXRlKGNvbnN0IFByb2ZpbGUmIHByb2ZpbGUpCiB7Ci0gIE5hbWUgY2VydGlmaWNhdGVOYW1lID0gbV9rZXlDaGFpbi5nZXREZWZhdWx0Q2VydGlmaWNhdGVOYW1lRm9ySWRlbnRpdHkobV9pZGVudGl0eSk7Ci0KLSAgc2hhcmVkX3B0cjxJZGVudGl0eUNlcnRpZmljYXRlPiBzaWduaW5nQ2VydCA9IG1fa2V5Q2hhaW4uZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVOYW1lKTsKLQorICBhdXRvIHNpZ25DZXJ0ID0gbV9rZXlDaGFpbi5nZXRQaWIoKS5nZXRJZGVudGl0eShtX2lkZW50aXR5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXREZWZhdWx0S2V5KCkuZ2V0RGVmYXVsdENlcnRpZmljYXRlKCk7CiAgIHZlY3RvcjxzdHJpbmc+IGVuZG9yc2VMaXN0OwogICBmb3IgKFByb2ZpbGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvZmlsZS5iZWdpbigpOyBpdCAhPSBwcm9maWxlLmVuZCgpOyBpdCsrKQogICAgIGVuZG9yc2VMaXN0LnB1c2hfYmFjayhpdC0+Zmlyc3QpOwogCiAgIHNoYXJlZF9wdHI8RW5kb3JzZUNlcnRpZmljYXRlPiBzZWxmRW5kb3JzZUNlcnRpZmljYXRlID0KLSAgICBtYWtlX3NoYXJlZDxFbmRvcnNlQ2VydGlmaWNhdGU+KGJvb3N0OjpjcmVmKCpzaWduaW5nQ2VydCksCisgICAgbWFrZV9zaGFyZWQ8RW5kb3JzZUNlcnRpZmljYXRlPihib29zdDo6Y3JlZihzaWduQ2VydCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29zdDo6Y3JlZihwcm9maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3N0OjpjcmVmKGVuZG9yc2VMaXN0KSk7CiAKLSAgbV9rZXlDaGFpbi5zaWduKCpzZWxmRW5kb3JzZUNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZU5hbWUpOworICBtX2tleUNoYWluLnNpZ24oKnNlbGZFbmRvcnNlQ2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICBuZG46OnNlY3VyaXR5OjpzaWduaW5nQnlJZGVudGl0eShtX2lkZW50aXR5KS5zZXRTaWduYXR1cmVJbmZvKAorICAgICAgICAgICAgICAgICAgICBzZWxmRW5kb3JzZUNlcnRpZmljYXRlLT5nZXRTaWduYXR1cmVJbmZvKCkpKTsKIAogICByZXR1cm4gc2VsZkVuZG9yc2VDZXJ0aWZpY2F0ZTsKIH0KQEAgLTUwMSw3ICs0MzcsNyBAQAogICBkYXRhLT5zZXRDb250ZW50KHNlbGZFbmRvcnNlQ2VydGlmaWNhdGUud2lyZUVuY29kZSgpKTsKICAgZGF0YS0+c2V0RnJlc2huZXNzUGVyaW9kKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CiAKLSAgbV9rZXlDaGFpbi5zaWduQnlJZGVudGl0eSgqZGF0YSwgbV9pZGVudGl0eSk7CisgIG1fa2V5Q2hhaW4uc2lnbigqZGF0YSwgbmRuOjpzZWN1cml0eTo6c2lnbmluZ0J5SWRlbnRpdHkobV9pZGVudGl0eSkpOwogCiAgIG1fY29udGFjdFN0b3JhZ2UtPnVwZGF0ZURuc1NlbGZQcm9maWxlRGF0YSgqZGF0YSk7CiAgIG1fZmFjZS5wdXQoKmRhdGEpOwpAQCAtNTEwLDExICs0NDYsMTQgQEAKIHNoYXJlZF9wdHI8RW5kb3JzZUNlcnRpZmljYXRlPgogQ29udGFjdE1hbmFnZXI6OmdlbmVyYXRlRW5kb3JzZUNlcnRpZmljYXRlKGNvbnN0IE5hbWUmIGlkZW50aXR5KQogeworICBhdXRvIHNpZ25DZXJ0ID0gbV9rZXlDaGFpbi5nZXRQaWIoKS5nZXRJZGVudGl0eShtX2lkZW50aXR5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXREZWZhdWx0S2V5KCkuZ2V0RGVmYXVsdENlcnRpZmljYXRlKCk7CisKICAgc2hhcmVkX3B0cjxDb250YWN0PiBjb250YWN0ID0gZ2V0Q29udGFjdChpZGVudGl0eSk7CiAgIGlmICghc3RhdGljX2Nhc3Q8Ym9vbD4oY29udGFjdCkpCiAgICAgcmV0dXJuIHNoYXJlZF9wdHI8RW5kb3JzZUNlcnRpZmljYXRlPigpOwogCi0gIE5hbWUgc2lnbmVyS2V5TmFtZSA9IG1fa2V5Q2hhaW4uZ2V0RGVmYXVsdEtleU5hbWVGb3JJZGVudGl0eShtX2lkZW50aXR5KTsKKyAgTmFtZSBzaWduZXJLZXlOYW1lID0gbV9pZGVudGl0eTsKIAogICB2ZWN0b3I8c3RyaW5nPiBlbmRvcnNlTGlzdDsKICAgbV9jb250YWN0U3RvcmFnZS0+Z2V0RW5kb3JzZUxpc3QoaWRlbnRpdHksIGVuZG9yc2VMaXN0KTsKQEAgLTUyNCwxMCArNDYzLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdC0+Z2V0UHVibGljS2V5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdC0+Z2V0Tm90QmVmb3JlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdC0+Z2V0Tm90QWZ0ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduQ2VydC5nZXRLZXlJZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcktleU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdC0+Z2V0UHJvZmlsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZG9yc2VMaXN0KSk7Ci0gIG1fa2V5Q2hhaW4uc2lnbkJ5SWRlbnRpdHkoKmNlcnQsIG1faWRlbnRpdHkpOworICBtX2tleUNoYWluLnNpZ24oKmNlcnQsCisgICAgICAgICAgICAgICAgICBuZG46OnNlY3VyaXR5OjpzaWduaW5nQnlJZGVudGl0eShtX2lkZW50aXR5KQorICAgICAgICAgICAgICAgICAgICAuc2V0U2lnbmF0dXJlSW5mbyhjZXJ0LT5nZXRTaWduYXR1cmVJbmZvKCkpKTsKICAgcmV0dXJuIGNlcnQ7CiAKIH0KQEAgLTUzNSw3ICs0NzcsNyBAQAogdm9pZAogQ29udGFjdE1hbmFnZXI6OnB1Ymxpc2hFbmRvcnNlQ2VydGlmaWNhdGVJbkROUyhjb25zdCBFbmRvcnNlQ2VydGlmaWNhdGUmIGVuZG9yc2VDZXJ0aWZpY2F0ZSkKIHsKLSAgTmFtZSBlbmRvcnNlZSA9IGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRQdWJsaWNLZXlOYW1lKCkuZ2V0UHJlZml4KC0xKTsKKyAgTmFtZSBlbmRvcnNlZSA9IGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRLZXlOYW1lKCkuZ2V0UHJlZml4KC00KTsKICAgTmFtZSBkbnNOYW1lID0gbV9pZGVudGl0eTsKICAgZG5zTmFtZS5hcHBlbmQoIkROUyIpCiAgICAgLmFwcGVuZChlbmRvcnNlZS53aXJlRW5jb2RlKCkpCkBAIC01NDUsOCArNDg3LDkgQEAKICAgc2hhcmVkX3B0cjxEYXRhPiBkYXRhID0gbWFrZV9zaGFyZWQ8RGF0YT4oKTsKICAgZGF0YS0+c2V0TmFtZShkbnNOYW1lKTsKICAgZGF0YS0+c2V0Q29udGVudChlbmRvcnNlQ2VydGlmaWNhdGUud2lyZUVuY29kZSgpKTsKKyAgZGF0YS0+c2V0RnJlc2huZXNzUGVyaW9kKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CiAKLSAgbV9rZXlDaGFpbi5zaWduQnlJZGVudGl0eSgqZGF0YSwgbV9pZGVudGl0eSk7CisgIG1fa2V5Q2hhaW4uc2lnbigqZGF0YSwgbmRuOjpzZWN1cml0eTo6c2lnbmluZ0J5SWRlbnRpdHkobV9pZGVudGl0eSkpOwogCiAgIG1fY29udGFjdFN0b3JhZ2UtPnVwZGF0ZURuc0VuZG9yc2VPdGhlcnMoKmRhdGEsIGRuc05hbWUuZ2V0KC0zKS50b1VyaSgpKTsKICAgbV9mYWNlLnB1dCgqZGF0YSk7CkBAIC01NTQsOCArNDk3LDggQEAKIAogdm9pZAogQ29udGFjdE1hbmFnZXI6OnNlbmRJbnRlcmVzdChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9uRGF0YVZhbGlkYXRlZCYgb25WYWxpZGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9uRGF0YVZhbGlkYXRpb25GYWlsZWQmIG9uVmFsaWRhdGlvbkZhaWxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25TdWNjZXNzQ2FsbGJhY2smIG9uVmFsaWRhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvbkZhaWx1cmVDYWxsYmFjayYgb25WYWxpZGF0aW9uRmFpbGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUaW1lb3V0Tm90aWZ5JiB0aW1lb3V0Tm90aWZ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0cnkgLyogPSAxICovKQogewpAQCAtNTYzLDI0ICs1MDYsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25UYXJnZXREYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIF8yLCBvblZhbGlkYXRlZCwgb25WYWxpZGF0aW9uRmFpbGVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25UYXJnZXRUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIHJldHJ5LCBvblZhbGlkYXRlZCwgb25WYWxpZGF0aW9uRmFpbGVkLCB0aW1lb3V0Tm90aWZ5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25UYXJnZXRUaW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIHJldHJ5LCBvblZhbGlkYXRlZCwgb25WYWxpZGF0aW9uRmFpbGVkLCB0aW1lb3V0Tm90aWZ5KSk7CiB9CiAKIHZvaWQKIENvbnRhY3RNYW5hZ2VyOjpvblRhcmdldERhdGEoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEYXRhJiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkRhdGFWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkRhdGFWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbjo6c2VjdXJpdHk6OkRhdGFWYWxpZGF0aW9uU3VjY2Vzc0NhbGxiYWNrJiBvblZhbGlkYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25GYWlsdXJlQ2FsbGJhY2smIG9uVmFsaWRhdGlvbkZhaWxlZCkKIHsKLSAgLy8gX0xPR19ERUJVRygiT24gcmVjZWl2aW5nIGRhdGE6ICIgPDwgZGF0YS5nZXROYW1lKCkpOwogICBtX3ZhbGlkYXRvci0+dmFsaWRhdGUoZGF0YSwgb25WYWxpZGF0ZWQsIG9uVmFsaWRhdGlvbkZhaWxlZCk7CiB9CiAKIHZvaWQKIENvbnRhY3RNYW5hZ2VyOjpvblRhcmdldFRpbWVvdXQoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9uRGF0YVZhbGlkYXRlZCYgb25WYWxpZGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9uRGF0YVZhbGlkYXRpb25GYWlsZWQmIG9uVmFsaWRhdGlvbkZhaWxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25TdWNjZXNzQ2FsbGJhY2smIG9uVmFsaWRhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvbkZhaWx1cmVDYWxsYmFjayYgb25WYWxpZGF0aW9uRmFpbGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUaW1lb3V0Tm90aWZ5JiB0aW1lb3V0Tm90aWZ5KQogewogICAvLyBfTE9HX0RFQlVHKCJPbiBpbnRlcmVzdCB0aW1lb3V0OiAiIDw8IGludGVyZXN0LmdldE5hbWUoKSk7CkBAIC02MjEsNiArNTY1LDI5IEBACiAgIGVtaXQgd2FybmluZyhRU3RyaW5nKGZhaWxJbmZvLmNfc3RyKCkpKTsKIH0KIAordm9pZAorQ29udGFjdE1hbmFnZXI6Om9uS2V5SW50ZXJlc3QoY29uc3QgTmFtZSYgcHJlZml4LCBjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpCit7CisgIGNvbnN0IE5hbWUmIGludGVyZXN0TmFtZSA9IGludGVyZXN0LmdldE5hbWUoKTsKKyAgc2hhcmVkX3B0cjxDZXJ0aWZpY2F0ZT4gZGF0YTsKKworICB0cnkgeworICAgIG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlIGNlcnQgPSBtX2tleUNoYWluLmdldFBpYigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0SWRlbnRpdHkobV9pZGVudGl0eSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXREZWZhdWx0S2V5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXREZWZhdWx0Q2VydGlmaWNhdGUoKTsKKyAgICBpZiAoY2VydC5nZXRLZXlOYW1lKCkgPT0gaW50ZXJlc3ROYW1lKQorICAgICAgcmV0dXJuIG1fZmFjZS5wdXQoY2VydCk7CisgIH0gY2F0Y2ggKG5kbjo6c2VjdXJpdHk6OlBpYjo6RXJyb3ImKSB7fQorCisgIGRhdGEgPSBtX2NvbnRhY3RTdG9yYWdlLT5nZXRTZWxmRW5kb3JzZUNlcnRpZmljYXRlKCk7CisgIGlmIChzdGF0aWNfY2FzdDxib29sPihkYXRhKSAmJiBkYXRhLT5nZXRLZXlOYW1lKCkuZXF1YWxzKGludGVyZXN0TmFtZSkpCisgICAgcmV0dXJuIG1fZmFjZS5wdXQoKmRhdGEpOworCisgIGRhdGEgPSBtX2NvbnRhY3RTdG9yYWdlLT5nZXRDb2xsZWN0RW5kb3JzZUJ5TmFtZShpbnRlcmVzdE5hbWUpOworICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oZGF0YSkpCisgICAgcmV0dXJuIG1fZmFjZS5wdXQoKmRhdGEpOworfQogCiAvLyBwdWJsaWMgc2xvdHMKIHZvaWQKQEAgLTYzMiwyMiArNTk5LDQyIEBACiAKICAgTmFtZSBkbnNQcmVmaXg7CiAgIGRuc1ByZWZpeC5hcHBlbmQobV9pZGVudGl0eSkuYXBwZW5kKCJETlMiKTsKLSAgY29uc3QgbmRuOjpSZWdpc3RlcmVkUHJlZml4SWQqIGRuc0xpc3RlbmVySWQgPQorICBhdXRvIGRuc0xpc3RlbmVySWQgPSBtYWtlX3NoYXJlZDxuZG46OlJlZ2lzdGVyZWRQcmVmaXhIYW5kbGU+KAogICAgIG1fZmFjZS5zZXRJbnRlcmVzdEZpbHRlcihkbnNQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkRuc0ludGVyZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIF8xLCBfMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkRuc1JlZ2lzdGVyRmFpbGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIF8xLCBfMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25EbnNJbnRlcmVzdCwgdGhpcywgXzEsIF8yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ29udGFjdE1hbmFnZXI6Om9uRG5zUmVnaXN0ZXJGYWlsZWQsIHRoaXMsIF8xLCBfMikpKTsKKworICBOYW1lIGtleVByZWZpeDsKKyAga2V5UHJlZml4LmFwcGVuZChtX2lkZW50aXR5KS5hcHBlbmQoIktFWSIpOworICBhdXRvIGtleUxpc3RlbmVySWQgPSBtYWtlX3NoYXJlZDxuZG46OlJlZ2lzdGVyZWRQcmVmaXhIYW5kbGU+KAorICAgIG1fZmFjZS5zZXRJbnRlcmVzdEZpbHRlcihrZXlQcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbktleUludGVyZXN0LCB0aGlzLCBfMSwgXzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25EbnNSZWdpc3RlckZhaWxlZCwgdGhpcywgXzEsIF8yKSkpOworCisgIE5hbWUgcHJvZmlsZUNlcnRQcmVmaXg7CisgIHByb2ZpbGVDZXJ0UHJlZml4LmFwcGVuZChtX2lkZW50aXR5KS5hcHBlbmQoIlBST0ZJTEUtQ0VSVCIpOworICBhdXRvIHByb2ZpbGVDZXJ0TGlzdGVuZXJJZCA9IG1ha2Vfc2hhcmVkPG5kbjo6UmVnaXN0ZXJlZFByZWZpeEhhbmRsZT4oCisgICAgbV9mYWNlLnNldEludGVyZXN0RmlsdGVyKHByb2ZpbGVDZXJ0UHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25LZXlJbnRlcmVzdCwgdGhpcywgXzEsIF8yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ29udGFjdE1hbmFnZXI6Om9uRG5zUmVnaXN0ZXJGYWlsZWQsIHRoaXMsIF8xLCBfMikpKTsKIAogICBpZiAobV9kbnNMaXN0ZW5lcklkICE9IDApCi0gICAgbV9mYWNlLnVuc2V0SW50ZXJlc3RGaWx0ZXIobV9kbnNMaXN0ZW5lcklkKTsKLQorICAgIG1fZG5zTGlzdGVuZXJJZC0+dW5yZWdpc3RlcigpOwogICBtX2Ruc0xpc3RlbmVySWQgPSBkbnNMaXN0ZW5lcklkOwogCisgIGlmIChtX2tleUxpc3RlbmVySWQgIT0gMCkKKyAgICBtX2tleUxpc3RlbmVySWQtPnVucmVnaXN0ZXIoKTsKKyAgbV9rZXlMaXN0ZW5lcklkID0ga2V5TGlzdGVuZXJJZDsKKworICBpZiAobV9wcm9maWxlQ2VydExpc3RlbmVySWQgIT0gMCkKKyAgICBtX3Byb2ZpbGVDZXJ0TGlzdGVuZXJJZC0+dW5yZWdpc3RlcigpOworICBtX3Byb2ZpbGVDZXJ0TGlzdGVuZXJJZCA9IHByb2ZpbGVDZXJ0TGlzdGVuZXJJZDsKKwogICBtX2NvbnRhY3RMaXN0LmNsZWFyKCk7CiAgIG1fY29udGFjdFN0b3JhZ2UtPmdldEFsbENvbnRhY3RzKG1fY29udGFjdExpc3QpOwogCiAgIG1fYnVmZmVyZWRDb250YWN0cy5jbGVhcigpOworICBvbldhaXRGb3JDb250YWN0TGlzdCgpOwogCiAgIGNvbGxlY3RFbmRvcnNlbWVudCgpOwogfQpAQCAtNjY2LDkgKzY1Myw5IEBACiAgIGludGVyZXN0LnNldEludGVyZXN0TGlmZXRpbWUodGltZTo6bWlsbGlzZWNvbmRzKDEwMDApKTsKICAgaW50ZXJlc3Quc2V0TXVzdEJlRnJlc2godHJ1ZSk7CiAKLSAgT25EYXRhVmFsaWRhdGVkIG9uVmFsaWRhdGVkID0KKyAgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25TdWNjZXNzQ2FsbGJhY2sgb25WYWxpZGF0ZWQgPQogICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbkRuc1NlbGZFbmRvcnNlQ2VydFZhbGlkYXRlZCwgdGhpcywgXzEsIGlkZW50aXR5TmFtZSk7Ci0gIE9uRGF0YVZhbGlkYXRpb25GYWlsZWQgb25WYWxpZGF0aW9uRmFpbGVkID0KKyAgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25GYWlsdXJlQ2FsbGJhY2sgb25WYWxpZGF0aW9uRmFpbGVkID0KICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0aW9uRmFpbGVkLCB0aGlzLCBfMSwgXzIsIGlkZW50aXR5TmFtZSk7CiAgIFRpbWVvdXROb3RpZnkgdGltZW91dE5vdGlmeSA9CiAgICAgYmluZCgmQ29udGFjdE1hbmFnZXI6Om9uRG5zU2VsZkVuZG9yc2VDZXJ0VGltZW91dE5vdGlmeSwgdGhpcywgXzEsIGlkZW50aXR5TmFtZSk7CkBAIC03MjUsMTEgKzcxMiwxNSBAQAogdm9pZAogQ29udGFjdE1hbmFnZXI6Om9uUmVmcmVzaEJyb3dzZUNvbnRhY3QoKQogeworICByZXR1cm47CisKKyNpZiAwCisgIC8vIFRoZSBmb2xsb3dpbmcgbm8gbG9uZ2VyIHdvcmtzIGFzIHdlIGRvbid0IHNlcnZlIHN1Y2ggYSBsaXN0IGFueW1vcmUKICAgdmVjdG9yPHN0cmluZz4gYnVmZmVyZWRJZENlcnROYW1lczsKICAgdHJ5IHsKICAgICB1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OmFzaW86OmlwOwogICAgIHRjcDo6aW9zdHJlYW0gcmVxdWVzdF9zdHJlYW07Ci0gICAgcmVxdWVzdF9zdHJlYW0uZXhwaXJlc19mcm9tX25vdyhib29zdDo6cG9zaXhfdGltZTo6bWlsbGlzZWNvbmRzKDUwMDApKTsKKyAgICByZXF1ZXN0X3N0cmVhbS5leHBpcmVzX2Zyb21fbm93KHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoNTAwMCkpOwogICAgIHJlcXVlc3Rfc3RyZWFtLmNvbm5lY3QoIm5kbmNlcnQubmFtZWQtZGF0YS5uZXQiLCI4MCIpOwogICAgIGlmICghcmVxdWVzdF9zdHJlYW0pIHsKICAgICAgIGVtaXQgd2FybmluZyhRU3RyaW5nOjpmcm9tU3RkU3RyaW5nKCJGYWlsIHRvIGZldGNoIGNlcnRpZmljYXRlIGRpcmVjdG9yeSEgIzEiKSk7CkBAIC04MDAsMTUgKzc5MSwxNiBAQAogICAgIGludGVyZXN0LnNldEludGVyZXN0TGlmZXRpbWUodGltZTo6bWlsbGlzZWNvbmRzKDEwMDApKTsKICAgICBpbnRlcmVzdC5zZXRNdXN0QmVGcmVzaCh0cnVlKTsKIAotICAgIE9uRGF0YVZhbGlkYXRlZCBvblZhbGlkYXRlZCA9CisgICAgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25TdWNjZXNzQ2FsbGJhY2sgb25WYWxpZGF0ZWQgPQogICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbklkZW50aXR5Q2VydFZhbGlkYXRlZCwgdGhpcywgXzEpOwotICAgIE9uRGF0YVZhbGlkYXRpb25GYWlsZWQgb25WYWxpZGF0aW9uRmFpbGVkID0KKyAgICBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvbkZhaWx1cmVDYWxsYmFjayBvblZhbGlkYXRpb25GYWlsZWQgPQogICAgIGJpbmQoJkNvbnRhY3RNYW5hZ2VyOjpvbklkZW50aXR5Q2VydFZhbGlkYXRpb25GYWlsZWQsIHRoaXMsIF8xLCBfMik7CiAgICAgVGltZW91dE5vdGlmeSB0aW1lb3V0Tm90aWZ5ID0KICAgICBiaW5kKCZDb250YWN0TWFuYWdlcjo6b25JZGVudGl0eUNlcnRUaW1lb3V0Tm90aWZ5LCB0aGlzLCBfMSk7CiAKICAgICBzZW5kSW50ZXJlc3QoaW50ZXJlc3QsIG9uVmFsaWRhdGVkLCBvblZhbGlkYXRpb25GYWlsZWQsIHRpbWVvdXROb3RpZnksIDApOwogICB9CisjZW5kaWYKIH0KIAogdm9pZApAQCAtODIzLDcgKzgxNSw3IEBACiBDb250YWN0TWFuYWdlcjo6b25BZGRGZXRjaGVkQ29udGFjdElkQ2VydChjb25zdCBRU3RyaW5nJiBxQ2VydE5hbWUpCiB7CiAgIE5hbWUgY2VydE5hbWUocUNlcnROYW1lLnRvU3RkU3RyaW5nKCkpOwotICBOYW1lIGlkZW50aXR5ID0gSWRlbnRpdHlDZXJ0aWZpY2F0ZTo6Y2VydGlmaWNhdGVOYW1lVG9QdWJsaWNLZXlOYW1lKGNlcnROYW1lKS5nZXRQcmVmaXgoLTEpOworICBOYW1lIGlkZW50aXR5ID0gY2VydE5hbWUuZ2V0UHJlZml4KC0xKTsKIAogICBCdWZmZXJlZElkQ2VydHM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9idWZmZXJlZElkQ2VydHMuZmluZChjZXJ0TmFtZSk7CiAgIGlmIChpdCAhPSBtX2J1ZmZlcmVkSWRDZXJ0cy5lbmQoKSkgewpAQCAtOTAxLDcgKzg5Myw3IEBACiBDb250YWN0TWFuYWdlcjo6b25VcGRhdGVFbmRvcnNlQ2VydGlmaWNhdGUoY29uc3QgUVN0cmluZyYgaWRlbnRpdHkpCiB7CiAgIE5hbWUgaWRlbnRpdHlOYW1lKGlkZW50aXR5LnRvU3RkU3RyaW5nKCkpOwotICBzaGFyZWRfcHRyPEVuZG9yc2VDZXJ0aWZpY2F0ZT4gbmV3RW5kb3JzZUNlcnRpZmljYXRlID0gZ2VuZXJhdGVFbmRvcnNlQ2VydGlmaWNhdGUoaWRlbnRpdHlOYW1lKTsKKyAgc2hhcmVkX3B0cjxDZXJ0aWZpY2F0ZT4gbmV3RW5kb3JzZUNlcnRpZmljYXRlID0gZ2VuZXJhdGVFbmRvcnNlQ2VydGlmaWNhdGUoaWRlbnRpdHlOYW1lKTsKIAogICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KG5ld0VuZG9yc2VDZXJ0aWZpY2F0ZSkpCiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbnRhY3QtbWFuYWdlci5ocHAgYi9zcmMvY29udGFjdC1tYW5hZ2VyLmhwcAppbmRleCA1ZWY3OTgzLi5iNDc1ZWI0IDEwMDY0NAotLS0gYS9zcmMvY29udGFjdC1tYW5hZ2VyLmhwcAorKysgYi9zcmMvY29udGFjdC1tYW5hZ2VyLmhwcApAQCAtMjIsNyArMjIsOCBAQAogI2luY2x1ZGUgImVuZG9yc2UtaW5mby5ocHAiCiAjaW5jbHVkZSAiZW5kb3JzZS1jb2xsZWN0aW9uLmhwcCIKICNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2tleS1jaGFpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3IuaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvdmFsaWRhdG9yLWNvbmZpZy5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9mYWNlLmhwcD4KICNpbmNsdWRlIDxib29zdC90aHJlYWQvbG9ja3MuaHBwPgogI2luY2x1ZGUgPGJvb3N0L3RocmVhZC9yZWN1cnNpdmVfbXV0ZXguaHBwPgogI2VuZGlmCkBAIC01NCw5ICs1NSw2IEBACiAgICAgY29udGFjdExpc3QuaW5zZXJ0KGNvbnRhY3RMaXN0LmVuZCgpLCBtX2NvbnRhY3RMaXN0LmJlZ2luKCksIG1fY29udGFjdExpc3QuZW5kKCkpOwogICB9CiBwcml2YXRlOgotICBzaGFyZWRfcHRyPG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZT4KLSAgbG9hZFRydXN0QW5jaG9yKCk7Ci0KICAgdm9pZAogICBpbml0aWFsaXplU2VjdXJpdHkoKTsKIApAQCAtNzEsMTIgKzY5LDEyIEBACiAKICAgLy8gUFJPRklMRTogc2VsZi1lbmRvcnNlLWNlcnRpZmljYXRlCiAgIHZvaWQKLSAgb25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0ZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgc2VsZkVuZG9yc2VDZXJ0aWZpY2F0ZSwKKyAgb25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0ZWQoY29uc3QgRGF0YSYgc2VsZkVuZG9yc2VDZXJ0aWZpY2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmFtZSYgaWRlbnRpdHkpOwogCiAgIHZvaWQKLSAgb25EbnNTZWxmRW5kb3JzZUNlcnRWYWxpZGF0aW9uRmFpbGVkKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgRGF0YT4mIHNlbGZFbmRvcnNlQ2VydGlmaWNhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmFpbEluZm8sCisgIG9uRG5zU2VsZkVuZG9yc2VDZXJ0VmFsaWRhdGlvbkZhaWxlZChjb25zdCBEYXRhJiBzZWxmRW5kb3JzZUNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6VmFsaWRhdGlvbkVycm9yJiBlcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWUmIGlkZW50aXR5KTsKIAogICB2b2lkCkBAIC04NCwxMSArODIsMTEgQEAKIAogICAvLyBFTkRPUlNFRDogZW5kb3JzZS1jb2xsZWN0aW9uCiAgIHZvaWQKLSAgb25EbnNDb2xsZWN0RW5kb3JzZVZhbGlkYXRlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IERhdGE+JiBkYXRhLCBjb25zdCBOYW1lJiBpZGVudGl0eSk7CisgIG9uRG5zQ29sbGVjdEVuZG9yc2VWYWxpZGF0ZWQoY29uc3QgRGF0YSYgZGF0YSwgY29uc3QgTmFtZSYgaWRlbnRpdHkpOwogCiAgIHZvaWQKLSAgb25EbnNDb2xsZWN0RW5kb3JzZVZhbGlkYXRpb25GYWlsZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZhaWxJbmZvLAorICBvbkRuc0NvbGxlY3RFbmRvcnNlVmFsaWRhdGlvbkZhaWxlZChjb25zdCBEYXRhJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpWYWxpZGF0aW9uRXJyb3ImIGVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBpZGVudGl0eSk7CiAKICAgdm9pZApAQCAtOTcsNyArOTUsNyBAQAogCiAgIC8vIFBST0ZJTEUtQ0VSVDogZW5kb3JzZS1jZXJ0aWZpY2F0ZQogICB2b2lkCi0gIG9uRW5kb3JzZUNlcnRpZmljYXRlSW50ZXJuYWwoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0LCBEYXRhJiBkYXRhLAorICBvbkVuZG9yc2VDZXJ0aWZpY2F0ZUludGVybmFsKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwgY29uc3QgRGF0YSYgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBpZGVudGl0eSwgc2l6ZV90IGNlcnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBoYXNoKTsKIApAQCAtMTExLDExICsxMDksMTEgQEAKICAgY29sbGVjdEVuZG9yc2VtZW50KCk7CiAKICAgdm9pZAotICBvbkRuc0VuZG9yc2VlVmFsaWRhdGVkKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgRGF0YT4mIGRhdGEpOworICBvbkRuc0VuZG9yc2VlVmFsaWRhdGVkKGNvbnN0IERhdGEmIGRhdGEpOwogCiAgIHZvaWQKLSAgb25EbnNFbmRvcnNlZVZhbGlkYXRpb25GYWlsZWQoY29uc3Qgc2hhcmVkX3B0cjxjb25zdCBEYXRhPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZhaWxJbmZvKTsKKyAgb25EbnNFbmRvcnNlZVZhbGlkYXRpb25GYWlsZWQoY29uc3QgRGF0YSYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6VmFsaWRhdGlvbkVycm9yJiBlcnJvcik7CiAKICAgdm9pZAogICBvbkRuc0VuZG9yc2VlVGltZW91dE5vdGlmeShjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpOwpAQCAtMTI4LDEwICsxMjYsMTEgQEAKIAogICAvLyBJZGVudGl0eSBjZXJ0aWZpY2F0ZQogICB2b2lkCi0gIG9uSWRlbnRpdHlDZXJ0VmFsaWRhdGVkKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgRGF0YT4mIGRhdGEpOworICBvbklkZW50aXR5Q2VydFZhbGlkYXRlZChjb25zdCBEYXRhJiBkYXRhKTsKIAogICB2b2lkCi0gIG9uSWRlbnRpdHlDZXJ0VmFsaWRhdGlvbkZhaWxlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IERhdGE+JiBkYXRhLCBjb25zdCBzdGQ6OnN0cmluZyYgZmFpbEluZm8pOworICBvbklkZW50aXR5Q2VydFZhbGlkYXRpb25GYWlsZWQoY29uc3QgRGF0YSYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbjo6c2VjdXJpdHk6OlZhbGlkYXRpb25FcnJvciYgZXJyb3IpOwogCiAgIHZvaWQKICAgb25JZGVudGl0eUNlcnRUaW1lb3V0Tm90aWZ5KGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCk7CkBAIC0xNTYsMjIgKzE1NSwyMiBAQAogICAvLyBDb21tdW5pY2F0aW9uCiAgIHZvaWQKICAgc2VuZEludGVyZXN0KGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwKLSAgICAgICAgICAgICAgIGNvbnN0IG5kbjo6T25EYXRhVmFsaWRhdGVkJiBvblZhbGlkYXRlZCwKLSAgICAgICAgICAgICAgIGNvbnN0IG5kbjo6T25EYXRhVmFsaWRhdGlvbkZhaWxlZCYgb25WYWxpZGF0aW9uRmFpbGVkLAorICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25TdWNjZXNzQ2FsbGJhY2smIG9uVmFsaWRhdGVkLAorICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25GYWlsdXJlQ2FsbGJhY2smIG9uVmFsaWRhdGlvbkZhaWxlZCwKICAgICAgICAgICAgICAgIGNvbnN0IFRpbWVvdXROb3RpZnkmIHRpbWVvdXROb3RpZnksCiAgICAgICAgICAgICAgICBpbnQgcmV0cnkgPSAxKTsKIAogICB2b2lkCiAgIG9uVGFyZ2V0RGF0YShjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsCiAgICAgICAgICAgICAgICBjb25zdCBEYXRhJiBkYXRhLAotICAgICAgICAgICAgICAgY29uc3QgbmRuOjpPbkRhdGFWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICAgY29uc3QgbmRuOjpPbkRhdGFWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQpOworICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25TdWNjZXNzQ2FsbGJhY2smIG9uVmFsaWRhdGVkLAorICAgICAgICAgICAgICAgY29uc3QgbmRuOjpzZWN1cml0eTo6RGF0YVZhbGlkYXRpb25GYWlsdXJlQ2FsbGJhY2smIG9uVmFsaWRhdGlvbkZhaWxlZCk7CiAKICAgdm9pZAogICBvblRhcmdldFRpbWVvdXQoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0LAogICAgICAgICAgICAgICAgICAgaW50IHJldHJ5LAotICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpPbkRhdGFWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICAgICAgY29uc3QgbmRuOjpPbkRhdGFWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQsCisgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvblN1Y2Nlc3NDYWxsYmFjayYgb25WYWxpZGF0ZWQsCisgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpEYXRhVmFsaWRhdGlvbkZhaWx1cmVDYWxsYmFjayYgb25WYWxpZGF0aW9uRmFpbGVkLAogICAgICAgICAgICAgICAgICAgY29uc3QgVGltZW91dE5vdGlmeSYgdGltZW91dE5vdGlmeSk7CiAKICAgLy8gRE5TIGxpc3RlbmVyCkBAIC0xODEsNiArMTgwLDkgQEAKICAgdm9pZAogICBvbkRuc1JlZ2lzdGVyRmFpbGVkKGNvbnN0IE5hbWUmIHByZWZpeCwgY29uc3Qgc3RkOjpzdHJpbmcmIGZhaWxJbmZvKTsKIAorICB2b2lkCisgIG9uS2V5SW50ZXJlc3QoY29uc3QgTmFtZSYgcHJlZml4LCBjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpOworCiBzaWduYWxzOgogICB2b2lkCiAgIGNvbnRhY3RFbmRvcnNlSW5mb1JlYWR5KGNvbnN0IEVuZG9yc2VJbmZvJiBlbmRvcnNlSW5mbyk7CkBAIC0xOTUsNyArMTk3LDcgQEAKICAgbmFtZUxpc3RSZWFkeShjb25zdCBRU3RyaW5nTGlzdCYgY2VydE5hbWVMaXN0KTsKIAogICB2b2lkCi0gIGlkQ2VydFJlYWR5KGNvbnN0IG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZSYgaWRDZXJ0KTsKKyAgaWRDZXJ0UmVhZHkoY29uc3QgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUmIGlkQ2VydCk7CiAKICAgdm9pZAogICBjb250YWN0QWxpYXNMaXN0UmVhZHkoY29uc3QgUVN0cmluZ0xpc3QmIGFsaWFzTGlzdCk7CkBAIC0yNjMsMTQgKzI2NSwxNCBAQAogICB9OwogCiAgIHR5cGVkZWYgc3RkOjptYXA8TmFtZSwgRmV0Y2hlZEluZm8+IEJ1ZmZlcmVkQ29udGFjdHM7Ci0gIHR5cGVkZWYgc3RkOjptYXA8TmFtZSwgc2hhcmVkX3B0cjxuZG46OklkZW50aXR5Q2VydGlmaWNhdGU+ID4gQnVmZmVyZWRJZENlcnRzOworICB0eXBlZGVmIHN0ZDo6bWFwPE5hbWUsIHNoYXJlZF9wdHI8bmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGU+ID4gQnVmZmVyZWRJZENlcnRzOwogCiAgIHR5cGVkZWYgYm9vc3Q6OnJlY3Vyc2l2ZV9tdXRleCBSZWNMb2NrOwogICB0eXBlZGVmIGJvb3N0Ojp1bmlxdWVfbG9jazxSZWNMb2NrPiBVbmlxdWVSZWNMb2NrOwogCiAgIC8vIENvbmYKICAgc2hhcmVkX3B0cjxDb250YWN0U3RvcmFnZT4gbV9jb250YWN0U3RvcmFnZTsKLSAgc2hhcmVkX3B0cjxuZG46OlZhbGlkYXRvcj4gbV92YWxpZGF0b3I7CisgIHNoYXJlZF9wdHI8bmRuOjpzZWN1cml0eTo6VmFsaWRhdG9yQ29uZmlnPiBtX3ZhbGlkYXRvcjsKICAgbmRuOjpGYWNlJiBtX2ZhY2U7CiAgIG5kbjo6S2V5Q2hhaW4gbV9rZXlDaGFpbjsKICAgTmFtZSBtX2lkZW50aXR5OwpAQCAtMjgxLDcgKzI4Myw5IEBACiAgIEJ1ZmZlcmVkSWRDZXJ0cyBtX2J1ZmZlcmVkSWRDZXJ0czsKIAogICAvLyBUbXAgRG5zCi0gIGNvbnN0IG5kbjo6UmVnaXN0ZXJlZFByZWZpeElkKiBtX2Ruc0xpc3RlbmVySWQ7CisgIHNoYXJlZF9wdHI8bmRuOjpSZWdpc3RlcmVkUHJlZml4SGFuZGxlPiBtX2Ruc0xpc3RlbmVySWQ7CisgIHNoYXJlZF9wdHI8bmRuOjpSZWdpc3RlcmVkUHJlZml4SGFuZGxlPiBtX2tleUxpc3RlbmVySWQ7CisgIHNoYXJlZF9wdHI8bmRuOjpSZWdpc3RlcmVkUHJlZml4SGFuZGxlPiBtX3Byb2ZpbGVDZXJ0TGlzdGVuZXJJZDsKIAogICBSZWNMb2NrIG1fY29sbGVjdENvdW50TXV0ZXg7CiAgIHNpemVfdCBtX2NvbGxlY3RDb3VudDsKZGlmZiAtLWdpdCBhL3NyYy9jb250YWN0LXBhbmVsLmhwcCBiL3NyYy9jb250YWN0LXBhbmVsLmhwcAppbmRleCBkMTY0MzkxLi43ZWVjMjI0IDEwMDY0NAotLS0gYS9zcmMvY29udGFjdC1wYW5lbC5ocHAKKysrIGIvc3JjL2NvbnRhY3QtcGFuZWwuaHBwCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8UURpYWxvZz4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdE1vZGVsPgogI2luY2x1ZGUgPFFTcWxUYWJsZU1vZGVsPgorI2luY2x1ZGUgPFFJdGVtU2VsZWN0aW9uPgogCiAjaW5jbHVkZSAic2V0LWFsaWFzLWRpYWxvZy5ocHAiCiAjaW5jbHVkZSAiZW5kb3JzZS1jb21ib2JveC1kZWxlZ2F0ZS5ocHAiCmRpZmYgLS1naXQgYS9zcmMvY29udGFjdC1zdG9yYWdlLmNwcCBiL3NyYy9jb250YWN0LXN0b3JhZ2UuY3BwCmluZGV4IGQ1OWE3MDcuLmQ1ZTBmZTIgMTAwNjQ0Ci0tLSBhL3NyYy9jb250YWN0LXN0b3JhZ2UuY3BwCisrKyBiL3NyYy9jb250YWN0LXN0b3JhZ2UuY3BwCkBAIC0xMywxMSArMTMsOCBAQAogCiAjaW5jbHVkZSA8Ym9vc3QvZmlsZXN5c3RlbS5ocHA+CiAjaW5jbHVkZSAiY3J5cHRvcHAuaHBwIgotI2luY2x1ZGUgImxvZ2dpbmcuaCIKIAogCi0vLyBJTklUX0xPR0dFUiAoImNocm9ub2NoYXQuQ29udGFjdFN0b3JhZ2UiKTsKLQogbmFtZXNwYWNlIGNocm9ub2NoYXQgewogCiBuYW1lc3BhY2UgZnMgPSBib29zdDo6ZmlsZXN5c3RlbTsKQEAgLTI1LDggKzIyLDYgQEAKIHVzaW5nIHN0ZDo6c3RyaW5nOwogdXNpbmcgc3RkOjp2ZWN0b3I7CiAKLXVzaW5nIG5kbjo6UHVibGljS2V5OwotCiAvLyB1c2VyJ3Mgb3duIHByb2ZpbGU7CiBjb25zdCBzdHJpbmcgSU5JVF9TUF9UQUJMRSA9CiAgICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAgICAgICAgICAgICAgICAgICAgICAgICAgIgpAQCAtMTU5LDcgKzE1NCw3IEBACiBzdGF0aWMgQmxvY2sKIHNxbGl0ZTNfY29sdW1uX2Jsb2NrKHNxbGl0ZTNfc3RtdCogc3RhdGVtZW50LCBpbnQgY29sdW1uKQogewotICByZXR1cm4gQmxvY2socmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3FsaXRlM19jb2x1bW5fYmxvYihzdGF0ZW1lbnQsIGNvbHVtbikpLAorICByZXR1cm4gQmxvY2socmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3FsaXRlM19jb2x1bW5fYmxvYihzdGF0ZW1lbnQsIGNvbHVtbikpLAogICAgICAgICAgICAgICAgc3FsaXRlM19jb2x1bW5fYnl0ZXMoc3RhdGVtZW50LCBjb2x1bW4pKTsKIH0KIApAQCAtMjU3LDYgKzI1MiwyNyBAQAogICBzcWxpdGUzX2ZpbmFsaXplKHN0bXQpOwogfQogCitzaGFyZWRfcHRyPEVuZG9yc2VDZXJ0aWZpY2F0ZT4KK0NvbnRhY3RTdG9yYWdlOjpnZXRTZWxmRW5kb3JzZUNlcnRpZmljYXRlKCkKK3sKKyAgc2hhcmVkX3B0cjxFbmRvcnNlQ2VydGlmaWNhdGU+IGNlcnQ7CisKKyAgc3FsaXRlM19zdG10ICpzdG10OworICBzcWxpdGUzX3ByZXBhcmVfdjIobV9kYiwKKyAgICAgICAgICAgICAgICAgICAgICJTRUxFQ1QgZW5kb3JzZV9kYXRhIEZST00gU2VsZkVuZG9yc2Ugd2hlcmUgaWRlbnRpdHk9PyIsCisgICAgICAgICAgICAgICAgICAgICAgLTEsICZzdG10LCAwKTsKKyAgc3FsaXRlM19iaW5kX3N0cmluZyhzdG10LCAxLCBtX2lkZW50aXR5LnRvVXJpKCksIFNRTElURV9UUkFOU0lFTlQpOworCisgIGlmIChzcWxpdGUzX3N0ZXAoc3RtdCkgPT0gU1FMSVRFX1JPVykgeworICAgIGNlcnQgPSBtYWtlX3NoYXJlZDxFbmRvcnNlQ2VydGlmaWNhdGU+KCk7CisgICAgY2VydC0+d2lyZURlY29kZShzcWxpdGUzX2NvbHVtbl9ibG9jayhzdG10LCAwKSk7CisgIH0KKworICBzcWxpdGUzX2ZpbmFsaXplKHN0bXQpOworCisgIHJldHVybiBjZXJ0OworfQorCiB2b2lkCiBDb250YWN0U3RvcmFnZTo6YWRkRW5kb3JzZUNlcnRpZmljYXRlKGNvbnN0IEVuZG9yc2VDZXJ0aWZpY2F0ZSYgZW5kb3JzZUNlcnRpZmljYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBpZGVudGl0eSkKQEAgLTI4Myw3ICsyOTksNyBAQAogICBzcWxpdGUzX3ByZXBhcmVfdjIobV9kYiwKICAgICAgICAgICAgICAgICAgICAgICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIENvbGxlY3RFbmRvcnNlIFwKICAgICAgICAgICAgICAgICAgICAgICAoZW5kb3JzZXIsIGVuZG9yc2VfbmFtZSwgZW5kb3JzZV9kYXRhKSBcCi0gICAgICAgICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCA/KSIsCisgICAgICAgICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/KSIsCiAgICAgICAgICAgICAgICAgICAgICAtMSwgJnN0bXQsIDApOwogICBzcWxpdGUzX2JpbmRfc3RyaW5nKHN0bXQsIDEsIGVuZG9yc2VyTmFtZS50b1VyaSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKICAgc3FsaXRlM19iaW5kX3N0cmluZyhzdG10LCAyLCBjZXJ0TmFtZS50b1VyaSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKQEAgLTMxNSw2ICszMzEsMjcgQEAKICAgc3FsaXRlM19maW5hbGl6ZShzdG10KTsKIH0KIAorc2hhcmVkX3B0cjxFbmRvcnNlQ2VydGlmaWNhdGU+CitDb250YWN0U3RvcmFnZTo6Z2V0Q29sbGVjdEVuZG9yc2VCeU5hbWUoY29uc3QgTmFtZSYgbmFtZSkKK3sKKyAgc2hhcmVkX3B0cjxFbmRvcnNlQ2VydGlmaWNhdGU+IGNlcnQ7CisKKyAgc3FsaXRlM19zdG10ICpzdG10OworICBzcWxpdGUzX3ByZXBhcmVfdjIobV9kYiwKKyAgICAgICAgICAgICAgICAgICAgICJTRUxFQ1QgZW5kb3JzZV9uYW1lLCBlbmRvcnNlX2RhdGEgRlJPTSBDb2xsZWN0RW5kb3JzZSB3aGVyZSBlbmRvcnNlX25hbWU9PyIsCisgICAgICAgICAgICAgICAgICAgICAgLTEsICZzdG10LCAwKTsKKyAgc3FsaXRlM19iaW5kX3N0cmluZyhzdG10LCAxLCBuYW1lLnRvVXJpKCksIFNRTElURV9UUkFOU0lFTlQpOworCisgIGlmIChzcWxpdGUzX3N0ZXAoc3RtdCkgPT0gU1FMSVRFX1JPVykgeworICAgIGNlcnQgPSBtYWtlX3NoYXJlZDxFbmRvcnNlQ2VydGlmaWNhdGU+KCk7CisgICAgY2VydC0+d2lyZURlY29kZShzcWxpdGUzX2NvbHVtbl9ibG9jayhzdG10LCAxKSk7CisgIH0KKworICBzcWxpdGUzX2ZpbmFsaXplKHN0bXQpOworCisgIHJldHVybiBjZXJ0OworfQorCiB2b2lkCiBDb250YWN0U3RvcmFnZTo6Z2V0RW5kb3JzZUxpc3QoY29uc3QgTmFtZSYgaWRlbnRpdHksIHZlY3RvcjxzdHJpbmc+JiBlbmRvcnNlTGlzdCkKIHsKQEAgLTM3NSw4ICs0MTIsOCBAQAogICBzcWxpdGUzX2JpbmRfc3RyaW5nKHN0bXQsIDIsIGNvbnRhY3QuZ2V0QWxpYXMoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CiAgIHNxbGl0ZTNfYmluZF9zdHJpbmcoc3RtdCwgMywgY29udGFjdC5nZXRQdWJsaWNLZXlOYW1lKCkudG9VcmkoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CiAgIHNxbGl0ZTNfYmluZF90ZXh0KHN0bXQsIDQsCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvbnRhY3QuZ2V0UHVibGljS2V5KCkuZ2V0KCkuYnVmKCkpLAotICAgICAgICAgICAgICAgICAgICBjb250YWN0LmdldFB1YmxpY0tleSgpLmdldCgpLnNpemUoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvbnRhY3QuZ2V0UHVibGljS2V5KCkuZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgY29udGFjdC5nZXRQdWJsaWNLZXkoKS5zaXplKCksIFNRTElURV9UUkFOU0lFTlQpOwogICBzcWxpdGUzX2JpbmRfaW50NjQoc3RtdCwgNSwgdGltZTo6dG9Vbml4VGltZXN0YW1wKGNvbnRhY3QuZ2V0Tm90QmVmb3JlKCkpLmNvdW50KCkpOwogICBzcWxpdGUzX2JpbmRfaW50NjQoc3RtdCwgNiwgdGltZTo6dG9Vbml4VGltZXN0YW1wKGNvbnRhY3QuZ2V0Tm90QWZ0ZXIoKSkuY291bnQoKSk7CiAgIHNxbGl0ZTNfYmluZF9pbnQoc3RtdCwgNywgKGlzSW50cm9kdWNlciA/IDEgOiAwKSk7CkBAIC00MzMsNyArNDcwLDcgQEAKICAgaWYgKHNxbGl0ZTNfc3RlcChzdG10KSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgc3RyaW5nIGFsaWFzID0gc3FsaXRlM19jb2x1bW5fc3RyaW5nKHN0bXQsIDApOwogICAgIHN0cmluZyBrZXlOYW1lID0gc3FsaXRlM19jb2x1bW5fc3RyaW5nKHN0bXQsIDEpOwotICAgIFB1YmxpY0tleSBrZXkoc3FsaXRlM19jb2x1bW5fdGV4dChzdG10LCAyKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMgKHN0bXQsIDIpKTsKKyAgICBuZG46OkJ1ZmZlciBrZXkoc3FsaXRlM19jb2x1bW5fdGV4dChzdG10LCAyKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMgKHN0bXQsIDIpKTsKICAgICB0aW1lOjpzeXN0ZW1fY2xvY2s6OlRpbWVQb2ludCBub3RCZWZvcmUgPQogICAgICAgdGltZTo6ZnJvbVVuaXhUaW1lc3RhbXAodGltZTo6bWlsbGlzZWNvbmRzKHNxbGl0ZTNfY29sdW1uX2ludDY0IChzdG10LCAzKSkpOwogICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6VGltZVBvaW50IG5vdEFmdGVyID0KQEAgLTQ0NSw2ICs0ODIsOSBAQAogICB9CiAgIHNxbGl0ZTNfZmluYWxpemUoc3RtdCk7CiAKKyAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihjb250YWN0KSkKKyAgICByZXR1cm4gY29udGFjdDsKKwogICBzcWxpdGUzX3ByZXBhcmVfdjIobV9kYiwKICAgICAgICAgICAgICAgICAgICAgICJTRUxFQ1QgcHJvZmlsZV90eXBlLCBwcm9maWxlX3ZhbHVlIEZST00gQ29udGFjdFByb2ZpbGUgXAogICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHByb2ZpbGVfaWRlbnRpdHk9PyIsCmRpZmYgLS1naXQgYS9zcmMvY29udGFjdC1zdG9yYWdlLmhwcCBiL3NyYy9jb250YWN0LXN0b3JhZ2UuaHBwCmluZGV4IGFhMTM3YjQuLjEwYmIxMTcgMTAwNjQ0Ci0tLSBhL3NyYy9jb250YWN0LXN0b3JhZ2UuaHBwCisrKyBiL3NyYy9jb250YWN0LXN0b3JhZ2UuaHBwCkBAIC00NCw2ICs0NCw5IEBACiAgIHZvaWQKICAgYWRkU2VsZkVuZG9yc2VDZXJ0aWZpY2F0ZShjb25zdCBFbmRvcnNlQ2VydGlmaWNhdGUmIGVuZG9yc2VDZXJ0aWZpY2F0ZSk7CiAKKyAgc2hhcmVkX3B0cjxFbmRvcnNlQ2VydGlmaWNhdGU+CisgIGdldFNlbGZFbmRvcnNlQ2VydGlmaWNhdGUoKTsKKwogICB2b2lkCiAgIGFkZEVuZG9yc2VDZXJ0aWZpY2F0ZShjb25zdCBFbmRvcnNlQ2VydGlmaWNhdGUmIGVuZG9yc2VDZXJ0aWZpY2F0ZSwgY29uc3QgTmFtZSYgaWRlbnRpdHkpOwogCkBAIC01Myw2ICs1Niw5IEBACiAgIHZvaWQKICAgZ2V0Q29sbGVjdEVuZG9yc2UoRW5kb3JzZUNvbGxlY3Rpb24mIGVuZG9yc2VDb2xsZWN0aW9uKTsKIAorICBzaGFyZWRfcHRyPEVuZG9yc2VDZXJ0aWZpY2F0ZT4KKyAgZ2V0Q29sbGVjdEVuZG9yc2VCeU5hbWUoY29uc3QgTmFtZSYgbmFtZSk7CisKICAgdm9pZAogICBnZXRFbmRvcnNlTGlzdChjb25zdCBOYW1lJiBpZGVudGl0eSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBlbmRvcnNlTGlzdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9jb250YWN0LmhwcCBiL3NyYy9jb250YWN0LmhwcAppbmRleCA4NTgzZDE2Li5iMGZlNjc0IDEwMDY0NAotLS0gYS9zcmMvY29udGFjdC5ocHAKKysrIGIvc3JjL2NvbnRhY3QuaHBwCkBAIC0xMiw5ICsxMiwxMCBAQAogI2RlZmluZSBDSFJPTk9DSEFUX0NPTlRBQ1RfSFBQCiAKICNpbmNsdWRlICJjb21tb24uaHBwIgotI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvaWRlbnRpdHktY2VydGlmaWNhdGUuaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvY2VydGlmaWNhdGUuaHBwPgogI2luY2x1ZGUgPG5kbi1jeHgvdXRpbC9yZWdleC5ocHA+CiAjaW5jbHVkZSAiZW5kb3JzZS1jZXJ0aWZpY2F0ZS5ocHAiCisjaW5jbHVkZSAicHJvZmlsZS5ocHAiCiAKIG5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKIApAQCAtMjQsMzkgKzI1LDUxIEBACiAgIHR5cGVkZWYgc3RkOjptYXA8TmFtZSwgc2hhcmVkX3B0cjxuZG46OlJlZ2V4PiA+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgdHlwZWRlZiBzdGQ6Om1hcDxOYW1lLCBzaGFyZWRfcHRyPG5kbjo6UmVnZXg+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yOwogCi0gIENvbnRhY3QoY29uc3QgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlJiBpZGVudGl0eUNlcnRpZmljYXRlLAorICBDb250YWN0KGNvbnN0IG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlJiBpZGVudGl0eUNlcnRpZmljYXRlLAogICAgICAgICAgIGJvb2wgaXNJbnRyb2R1Y2VyID0gZmFsc2UsCiAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsaWFzID0gIiIpCi0gICAgOiBtX25vdEJlZm9yZShpZGVudGl0eUNlcnRpZmljYXRlLmdldE5vdEJlZm9yZSgpKQotICAgICwgbV9ub3RBZnRlcihpZGVudGl0eUNlcnRpZmljYXRlLmdldE5vdEFmdGVyKCkpCisgICAgOiBtX25vdEJlZm9yZSh0aW1lOjpzeXN0ZW1fY2xvY2s6Om5vdygpKQorICAgICwgbV9ub3RBZnRlcih0aW1lOjpzeXN0ZW1fY2xvY2s6Om5vdygpICsgdGltZTo6ZGF5cygzNjUwKSkKICAgICAsIG1faXNJbnRyb2R1Y2VyKGlzSW50cm9kdWNlcikKICAgICAsIG1fcHJvZmlsZShpZGVudGl0eUNlcnRpZmljYXRlKQogICB7CisgICAgbV9rZXlOYW1lID0gaWRlbnRpdHlDZXJ0aWZpY2F0ZS5nZXRLZXlOYW1lKCk7CisgICAgbV9uYW1lc3BhY2UgPSBtX2tleU5hbWUuZ2V0UHJlZml4KC0yKTsKKyAgICBtX3B1YmxpY0tleSA9IGlkZW50aXR5Q2VydGlmaWNhdGUuZ2V0UHVibGljS2V5KCk7CisKICAgICBtX25hbWUgPSBtX3Byb2ZpbGUuZ2V0KCJuYW1lIik7CisgICAgbV9uYW1lID0gbV9uYW1lLmVtcHR5KCkgPyBtX25hbWVzcGFjZS50b1VyaSgpIDogbV9uYW1lOwogICAgIG1fYWxpYXMgPSBhbGlhcy5lbXB0eSgpID8gbV9uYW1lIDogYWxpYXM7CiAgICAgbV9pbnN0aXR1dGlvbiA9IG1fcHJvZmlsZS5nZXQoImluc3RpdHV0aW9uIik7CiAKLSAgICBtX2tleU5hbWUgPSBpZGVudGl0eUNlcnRpZmljYXRlLmdldFB1YmxpY0tleU5hbWUoKTsKLSAgICBtX25hbWVzcGFjZSA9IG1fa2V5TmFtZS5nZXRQcmVmaXgoLTEpOwotICAgIG1fcHVibGljS2V5ID0gaWRlbnRpdHlDZXJ0aWZpY2F0ZS5nZXRQdWJsaWNLZXlJbmZvKCk7CisgICAgdHJ5IHsKKyAgICAgIG1fbm90QmVmb3JlID0gaWRlbnRpdHlDZXJ0aWZpY2F0ZS5nZXRWYWxpZGl0eVBlcmlvZCgpLmdldFBlcmlvZCgpLmZpcnN0OworICAgICAgbV9ub3RBZnRlciA9IGlkZW50aXR5Q2VydGlmaWNhdGUuZ2V0VmFsaWRpdHlQZXJpb2QoKS5nZXRQZXJpb2QoKS5zZWNvbmQ7CisgICAgfSBjYXRjaCAodGx2OjpFcnJvciYpIHt9CiAgIH0KIAogICBDb250YWN0KGNvbnN0IEVuZG9yc2VDZXJ0aWZpY2F0ZSYgZW5kb3JzZUNlcnRpZmljYXRlLAogICAgICAgICAgIGJvb2wgaXNJbnRyb2R1Y2VyID0gZmFsc2UsCiAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsaWFzID0gIiIpCi0gICAgOiBtX25vdEJlZm9yZShlbmRvcnNlQ2VydGlmaWNhdGUuZ2V0Tm90QmVmb3JlKCkpCi0gICAgLCBtX25vdEFmdGVyKGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXROb3RBZnRlcigpKQorICAgIDogbV9ub3RCZWZvcmUodGltZTo6c3lzdGVtX2Nsb2NrOjpub3coKSkKKyAgICAsIG1fbm90QWZ0ZXIodGltZTo6c3lzdGVtX2Nsb2NrOjpub3coKSArIHRpbWU6OmRheXMoMzY1MCkpCiAgICAgLCBtX2lzSW50cm9kdWNlcihpc0ludHJvZHVjZXIpCiAgIHsKICAgICBtX3Byb2ZpbGUgPSBlbmRvcnNlQ2VydGlmaWNhdGUuZ2V0UHJvZmlsZSgpOwogCisgICAgbV9rZXlOYW1lID0gZW5kb3JzZUNlcnRpZmljYXRlLmdldEtleU5hbWUoKS5nZXRQcmVmaXgoLTEpLmFwcGVuZCgiS0VZIik7CisgICAgbV9uYW1lc3BhY2UgPSBtX2tleU5hbWUuZ2V0UHJlZml4KC0zKTsKKyAgICBtX3B1YmxpY0tleSA9IGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRQdWJsaWNLZXkoKTsKKwogICAgIG1fbmFtZSA9IG1fcHJvZmlsZS5nZXQoIm5hbWUiKTsKKyAgICBtX25hbWUgPSBtX25hbWUuZW1wdHkoKSA/IG1fbmFtZXNwYWNlLnRvVXJpKCkgOiBtX25hbWU7CiAgICAgbV9hbGlhcyA9IGFsaWFzLmVtcHR5KCkgPyBtX25hbWUgOiBhbGlhczsKICAgICBtX2luc3RpdHV0aW9uID0gbV9wcm9maWxlLmdldCgiaW5zdGl0dXRpb24iKTsKIAotICAgIG1fa2V5TmFtZSA9IGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRQdWJsaWNLZXlOYW1lKCk7OwotICAgIG1fbmFtZXNwYWNlID0gbV9rZXlOYW1lLmdldFByZWZpeCgtMSk7Ci0gICAgbV9wdWJsaWNLZXkgPSBlbmRvcnNlQ2VydGlmaWNhdGUuZ2V0UHVibGljS2V5SW5mbygpOworICAgIHRyeSB7CisgICAgICBtX25vdEJlZm9yZSA9IGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRWYWxpZGl0eVBlcmlvZCgpLmdldFBlcmlvZCgpLmZpcnN0OworICAgICAgbV9ub3RBZnRlciA9IGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRWYWxpZGl0eVBlcmlvZCgpLmdldFBlcmlvZCgpLnNlY29uZDsKKyAgICB9IGNhdGNoICh0bHY6OkVycm9yJikge30KICAgfQogCiAgIENvbnRhY3QoY29uc3QgTmFtZSYgaWRlbnRpdHksCkBAIC02NCw3ICs3Nyw3IEBACiAgICAgICAgICAgY29uc3QgTmFtZSYga2V5TmFtZSwKICAgICAgICAgICBjb25zdCB0aW1lOjpzeXN0ZW1fY2xvY2s6OlRpbWVQb2ludCYgbm90QmVmb3JlLAogICAgICAgICAgIGNvbnN0IHRpbWU6OnN5c3RlbV9jbG9jazo6VGltZVBvaW50JiBub3RBZnRlciwKLSAgICAgICAgICBjb25zdCBuZG46OlB1YmxpY0tleSYga2V5LAorICAgICAgICAgIGNvbnN0IG5kbjo6QnVmZmVyJiBrZXksCiAgICAgICAgICAgYm9vbCBpc0ludHJvZHVjZXIpCiAgICAgOiBtX25hbWVzcGFjZShpZGVudGl0eSkKICAgICAsIG1fYWxpYXMoYWxpYXMpCkBAIC0xMjYsNyArMTM5LDcgQEAKICAgICByZXR1cm4gbV9rZXlOYW1lOwogICB9CiAKLSAgY29uc3QgbmRuOjpQdWJsaWNLZXkmCisgIGNvbnN0IG5kbjo6QnVmZmVyJgogICBnZXRQdWJsaWNLZXkoKSBjb25zdAogICB7CiAgICAgcmV0dXJuIG1fcHVibGljS2V5OwpAQCAtMjI0LDcgKzIzNyw3IEBACiAgIHN0ZDo6c3RyaW5nIG1fbmFtZTsKICAgc3RkOjpzdHJpbmcgbV9pbnN0aXR1dGlvbjsKICAgTmFtZSBtX2tleU5hbWU7Ci0gIG5kbjo6UHVibGljS2V5IG1fcHVibGljS2V5OworICBuZG46OkJ1ZmZlciBtX3B1YmxpY0tleTsKICAgdGltZTo6c3lzdGVtX2Nsb2NrOjpUaW1lUG9pbnQgbV9ub3RCZWZvcmU7CiAgIHRpbWU6OnN5c3RlbV9jbG9jazo6VGltZVBvaW50IG1fbm90QWZ0ZXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9jb250cm9sbGVyLWJhY2tlbmQuY3BwIGIvc3JjL2NvbnRyb2xsZXItYmFja2VuZC5jcHAKaW5kZXggYTQzMjM2Ni4uN2M2YjhhNSAxMDA2NDQKLS0tIGEvc3JjL2NvbnRyb2xsZXItYmFja2VuZC5jcHAKKysrIGIvc3JjL2NvbnRyb2xsZXItYmFja2VuZC5jcHAKQEAgLTEzLDIyICsxMywxNyBAQAogCiAjaWZuZGVmIFFfTU9DX1JVTgogI2luY2x1ZGUgPG5kbi1jeHgvdXRpbC9zZWdtZW50LWZldGNoZXIuaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvc2lnbmluZy1oZWxwZXJzLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2NlcnRpZmljYXRlLWZldGNoZXItb2ZmbGluZS5ocHA+CiAjaW5jbHVkZSAiaW52aXRhdGlvbi5ocHAiCi0jaW5jbHVkZSAibG9nZ2luZy5oIgorI2luY2x1ZGUgPGlvc3RyZWFtPgogI2VuZGlmCiAKLQotSU5JVF9MT0dHRVIoIkNvbnRyb2xsZXJCYWNrZW5kIik7Ci0KIG5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKIAogdXNpbmcgc3RkOjpzdHJpbmc7CiAKIHVzaW5nIG5kbjo6RmFjZTsKLXVzaW5nIG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZTsKLXVzaW5nIG5kbjo6T25JbnRlcmVzdFZhbGlkYXRlZDsKLXVzaW5nIG5kbjo6T25JbnRlcmVzdFZhbGlkYXRpb25GYWlsZWQ7Ci0KIAogc3RhdGljIGNvbnN0IG5kbjo6TmFtZTo6Q29tcG9uZW50IFJPVVRJTkdfSElOVF9TRVBBUkFUT1IgPQogICBuZG46Om5hbWU6OkNvbXBvbmVudDo6ZnJvbUVzY2FwZWRTdHJpbmcoIiVGMCUyRSIpOwpAQCAtMzksNyArMzQsNiBAQAogICA6IFFUaHJlYWQocGFyZW50KQogICAsIG1fc2hvdWxkUmVzdW1lKGZhbHNlKQogICAsIG1fY29udGFjdE1hbmFnZXIobV9mYWNlKQotICAsIG1faW52aXRhdGlvbkxpc3RlbmVySWQoMCkKIHsKICAgLy8gY29ubmVjdGlvbiB0byBjb250YWN0IG1hbmFnZXIKICAgY29ubmVjdCh0aGlzLCBTSUdOQUwoaWRlbnRpdHlVcGRhdGVkKGNvbnN0IFFTdHJpbmcmKSksCkBAIC00OCw2ICs0Miw3IEBACiAgIGNvbm5lY3QoJm1fY29udGFjdE1hbmFnZXIsIFNJR05BTChjb250YWN0SWRMaXN0UmVhZHkoY29uc3QgUVN0cmluZ0xpc3QmKSksCiAgICAgICAgICAgdGhpcywgU0xPVChvbkNvbnRhY3RJZExpc3RSZWFkeShjb25zdCBRU3RyaW5nTGlzdCYpKSk7CiAKKyAgbV92YWxpZGF0b3IgPSBtYWtlX3NoYXJlZDxuZG46OnNlY3VyaXR5OjpWYWxpZGF0b3JOdWxsPigpOwogfQogCiBDb250cm9sbGVyQmFja2VuZDo6fkNvbnRyb2xsZXJCYWNrZW5kKCkKQEAgLTE0MSwzMSArMTM2LDMyIEBACiAgIGludml0YXRpb25QcmVmaXguYXBwZW5kKG1faWRlbnRpdHkpLmFwcGVuZCgiQ0hST05PQ0hBVC1JTlZJVEFUSU9OIik7CiAgIHJlcXVlc3RQcmVmaXguYXBwZW5kKG1faWRlbnRpdHkpLmFwcGVuZCgiQ0hST05PQ0hBVC1JTlZJVEFUSU9OLVJFUVVFU1QiKTsKIAotICBjb25zdCBuZG46OlJlZ2lzdGVyZWRQcmVmaXhJZCogaW52aXRhdGlvbkxpc3RlbmVySWQgPQotICAgIG1fZmFjZS5zZXRJbnRlcmVzdEZpbHRlcihpbnZpdGF0aW9uUHJlZml4LAorICBhdXRvIGludml0YXRpb25MaXN0ZW5lcklkID0KKyAgICBtYWtlX3NoYXJlZDxuZG46OlJlZ2lzdGVyZWRQcmVmaXhIYW5kbGU+KG1fZmFjZS5zZXRJbnRlcmVzdEZpbHRlcihpbnZpdGF0aW9uUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uSW50ZXJlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIF8yLCBvZmZzZXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uUmVnaXN0ZXJGYWlsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIF8yKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIF8yKSkpOwogCiAgIGlmIChtX2ludml0YXRpb25MaXN0ZW5lcklkICE9IDApIHsKLSAgICBtX2ZhY2UudW5yZWdpc3RlclByZWZpeChtX2ludml0YXRpb25MaXN0ZW5lcklkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvbkludml0YXRpb25QcmVmaXhSZXNldCwgdGhpcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCgmQ29udHJvbGxlckJhY2tlbmQ6Om9uSW52aXRhdGlvblByZWZpeFJlc2V0RmFpbGVkLCB0aGlzLCBfMSkpOworICAgIGludml0YXRpb25MaXN0ZW5lcklkLT51bnJlZ2lzdGVyKAorICAgICAgYmluZCgmQ29udHJvbGxlckJhY2tlbmQ6Om9uSW52aXRhdGlvblByZWZpeFJlc2V0LCB0aGlzKSwKKyAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvbkludml0YXRpb25QcmVmaXhSZXNldEZhaWxlZCwgdGhpcywgXzEpKTsKICAgfQogCiAgIG1faW52aXRhdGlvbkxpc3RlbmVySWQgPSBpbnZpdGF0aW9uTGlzdGVuZXJJZDsKIAotICBjb25zdCBuZG46OlJlZ2lzdGVyZWRQcmVmaXhJZCogcmVxdWVzdExpc3RlbmVySWQgPQotICAgIG1fZmFjZS5zZXRJbnRlcmVzdEZpbHRlcihyZXF1ZXN0UHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uUmVxdWVzdEludGVyZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIF8xLCBfMiwgb2Zmc2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKGNvbnN0IE5hbWUmIHByZWZpeCwgY29uc3Qgc3RkOjpzdHJpbmcmIGZhaWxJbmZvKSB7fSk7CisgIGF1dG8gcmVxdWVzdExpc3RlbmVySWQgPQorICAgIG1ha2Vfc2hhcmVkPG5kbjo6UmVnaXN0ZXJlZFByZWZpeEhhbmRsZT4oCisgICAgICBtX2ZhY2Uuc2V0SW50ZXJlc3RGaWx0ZXIocmVxdWVzdFByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uUmVxdWVzdEludGVyZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgXzEsIF8yLCBvZmZzZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIChjb25zdCBOYW1lJiBwcmVmaXgsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmYWlsSW5mbykge30pKTsKIAogICBpZiAobV9yZXF1ZXN0TGlzdGVuZXJJZCAhPSAwKSB7Ci0gICAgbV9mYWNlLnVucmVnaXN0ZXJQcmVmaXgobV9yZXF1ZXN0TGlzdGVuZXJJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXXt9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIChjb25zdCBzdGQ6OnN0cmluZyYgZmFpbEluZm8pIHt9KTsKKyAgICBtX3JlcXVlc3RMaXN0ZW5lcklkLT51bnJlZ2lzdGVyKAorICAgICAgW117fSwKKyAgICAgIFtdIChjb25zdCBzdGQ6OnN0cmluZyYgZmFpbEluZm8pIHt9KTsKICAgfQogCiAgIG1fcmVxdWVzdExpc3RlbmVySWQgPSByZXF1ZXN0TGlzdGVuZXJJZDsKQEAgLTIxMCwxMSArMjA2LDEwIEBACiAgICAgcmV0dXJuOwogICB9CiAKLSAgT25JbnRlcmVzdFZhbGlkYXRlZCBvblZhbGlkYXRlZCA9IGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvbkludml0YXRpb25WYWxpZGF0ZWQsIHRoaXMsIF8xKTsKLSAgT25JbnRlcmVzdFZhbGlkYXRpb25GYWlsZWQgb25GYWlsZWQgPSBiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uVmFsaWRhdGlvbkZhaWxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIF8xLCBfMik7Ci0KLSAgbV92YWxpZGF0b3IudmFsaWRhdGUoKmludml0YXRpb25JbnRlcmVzdCwgb25WYWxpZGF0ZWQsIG9uRmFpbGVkKTsKKyAgbV92YWxpZGF0b3ItPnZhbGlkYXRlKAorICAgICppbnZpdGF0aW9uSW50ZXJlc3QsCisgICAgYmluZCgmQ29udHJvbGxlckJhY2tlbmQ6Om9uSW52aXRhdGlvblZhbGlkYXRlZCwgdGhpcywgXzEpLAorICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvbkludml0YXRpb25WYWxpZGF0aW9uRmFpbGVkLCB0aGlzLCBfMSwgXzIpKTsKIH0KIAogdm9pZApAQCAtMjQ4LDIwICsyNDMsMjAgQEAKIH0KIAogdm9pZAotQ29udHJvbGxlckJhY2tlbmQ6Om9uSW52aXRhdGlvblZhbGlkYXRlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IEludGVyZXN0PiYgaW50ZXJlc3QpCitDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uVmFsaWRhdGVkKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCkKIHsKLSAgSW52aXRhdGlvbiBpbnZpdGF0aW9uKGludGVyZXN0LT5nZXROYW1lKCkpOworICBJbnZpdGF0aW9uIGludml0YXRpb24oaW50ZXJlc3QuZ2V0TmFtZSgpKTsKICAgLy8gU2hvdWxkIGJlIG9idGFpbmVkIHZpYSBhIG1ldGhvZCBvZiBDb250YWN0TWFuYWdlci4KLSAgc3RyaW5nIGFsaWFzID0gaW52aXRhdGlvbi5nZXRJbnZpdGVyQ2VydGlmaWNhdGUoKS5nZXRQdWJsaWNLZXlOYW1lKCkuZ2V0UHJlZml4KC0xKS50b1VyaSgpOworICBzdHJpbmcgYWxpYXMgPSBpbnZpdGF0aW9uLmdldEludml0ZXJDZXJ0aWZpY2F0ZSgpLmdldEtleU5hbWUoKS5nZXRQcmVmaXgoLTEpLnRvVXJpKCk7CiAKICAgZW1pdCBpbnZpdGF0aW9uVmFsaWRhdGVkKFFTdHJpbmc6OmZyb21TdGRTdHJpbmcoYWxpYXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbVN0ZFN0cmluZyhpbnZpdGF0aW9uLmdldENoYXRyb29tKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJlc3QtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdC5nZXROYW1lKCkpOwogfQogCiB2b2lkCi1Db250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uVmFsaWRhdGlvbkZhaWxlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IEludGVyZXN0PiYgaW50ZXJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgZmFpbHVyZUluZm8pCitDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uVmFsaWRhdGlvbkZhaWxlZChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpWYWxpZGF0aW9uRXJyb3ImIGZhaWx1cmVJbmZvKQogewogICAvLyBfTE9HX0RFQlVHKCJJbnZpdGF0aW9uOiAiIDw8IGludGVyZXN0LT5nZXROYW1lKCkgPDwKICAgLy8gICAgICAgICAgICAiIGNhbm5vdCBub3QgYmUgdmFsaWRhdGVkIGR1ZSB0bzogIiA8PCBmYWlsdXJlSW5mbyk7CkBAIC0zMTcsNyArMzEyLDcgQEAKIH0KIAogdm9pZAotQ29udHJvbGxlckJhY2tlbmQ6Om9uUmVxdWVzdFJlc3BvbnNlKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwgRGF0YSYgZGF0YSkKK0NvbnRyb2xsZXJCYWNrZW5kOjpvblJlcXVlc3RSZXNwb25zZShjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgIHNpemVfdCBpOwogICBOYW1lIGludGVyZXN0TmFtZSA9IGludGVyZXN0LmdldE5hbWUoKTsKQEAgLTM0NCw2ICszMzksNyBAQAogICBpZiAocmVzZW5kVGltZXMgPCBNQVhJTVVNX1JFUVVFU1QpCiAgICAgbV9mYWNlLmV4cHJlc3NJbnRlcmVzdChpbnRlcmVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvblJlcXVlc3RSZXNwb25zZSwgdGhpcywgXzEsIF8yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvblJlcXVlc3RUaW1lb3V0LCB0aGlzLCBfMSwgcmVzZW5kVGltZXMgKyAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvblJlcXVlc3RUaW1lb3V0LCB0aGlzLCBfMSwgcmVzZW5kVGltZXMgKyAxKSk7CiAgIGVsc2UKICAgICBlbWl0IGludml0YXRpb25SZXF1ZXN0UmVzdWx0KCJJbnZpdGF0aW9uIHJlcXVlc3QgdGltZXMgb3V0LiIpOwpAQCAtMzg0LDExICszODAsMTEgQEAKICAgaW50ZXJlc3Quc2V0SW50ZXJlc3RMaWZldGltZSh0aW1lOjptaWxsaXNlY29uZHMoMTAwMCkpOwogICBpbnRlcmVzdC5zZXRNdXN0QmVGcmVzaCh0cnVlKTsKIAotICBuZG46OnV0aWw6OlNlZ21lbnRGZXRjaGVyOjpmZXRjaChtX2ZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX251bGxWYWxpZGF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvbkxvY2FsUHJlZml4LCB0aGlzLCBfMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvbkxvY2FsUHJlZml4RXJyb3IsIHRoaXMsIF8xLCBfMikpOworICBhdXRvIGZldGNoZXIgPSBuZG46OnV0aWw6OlNlZ21lbnRGZXRjaGVyOjpzdGFydChtX2ZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX251bGxWYWxpZGF0b3IpOworICBmZXRjaGVyLT5vbkNvbXBsZXRlLmNvbm5lY3QoYmluZCgmQ29udHJvbGxlckJhY2tlbmQ6Om9uTG9jYWxQcmVmaXgsIHRoaXMsIF8xKSk7CisgIGZldGNoZXItPm9uRXJyb3IuY29ubmVjdChiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25Mb2NhbFByZWZpeEVycm9yLCB0aGlzLCBfMSwgXzIpKTsKIH0KIAogdm9pZApAQCAtNDExLDcgKzQwNyw3IEBACiBDb250cm9sbGVyQmFja2VuZDo6b25JbnZpdGF0aW9uUmVzcG9uZGVkKGNvbnN0IG5kbjo6TmFtZSYgaW52aXRhdGlvbk5hbWUsIGJvb2wgYWNjZXB0ZWQpCiB7CiAgIHNoYXJlZF9wdHI8RGF0YT4gcmVzcG9uc2UgPSBtYWtlX3NoYXJlZDxEYXRhPigpOwotICBzaGFyZWRfcHRyPElkZW50aXR5Q2VydGlmaWNhdGU+IGNoYXRyb29tQ2VydDsKKyAgc2hhcmVkX3B0cjxuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZT4gY2hhdHJvb21DZXJ0OwogCiAgIC8vIGdlbmVyYXRlIHJlcGx5OwogICBpZiAoYWNjZXB0ZWQpIHsKQEAgLTQyMiw4ICs0MTgsOCBAQAogCiAgICAgLy8gV2Ugc2hvdWxkIGNyZWF0ZSBhIHBhcnRpY3VsYXIgY2VydGlmaWNhdGUgZm9yIHRoaXMgY2hhdHJvb20sCiAgICAgLy9idXQgbGV0J3MgdXNlIGRlZmF1bHQgb25lIGZvciBub3cuCi0gICAgY2hhdHJvb21DZXJ0Ci0gICAgICA9IG1fa2V5Q2hhaW4uZ2V0Q2VydGlmaWNhdGUobV9rZXlDaGFpbi5nZXREZWZhdWx0Q2VydGlmaWNhdGVOYW1lRm9ySWRlbnRpdHkobV9pZGVudGl0eSkpOworICAgIGNoYXRyb29tQ2VydCA9IG1ha2Vfc2hhcmVkPG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlPigKKyAgICAgIG1fa2V5Q2hhaW4uY3JlYXRlSWRlbnRpdHkobV9pZGVudGl0eSkuZ2V0RGVmYXVsdEtleSgpLmdldERlZmF1bHRDZXJ0aWZpY2F0ZSgpKTsKIAogICAgIHJlc3BvbnNlLT5zZXRDb250ZW50KGNoYXRyb29tQ2VydC0+d2lyZUVuY29kZSgpKTsKICAgICByZXNwb25zZS0+c2V0RnJlc2huZXNzUGVyaW9kKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CkBAIC00MzMsNyArNDI5LDcgQEAKICAgICByZXNwb25zZS0+c2V0RnJlc2huZXNzUGVyaW9kKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CiAgIH0KIAotICBtX2tleUNoYWluLnNpZ25CeUlkZW50aXR5KCpyZXNwb25zZSwgbV9pZGVudGl0eSk7CisgIG1fa2V5Q2hhaW4uc2lnbigqcmVzcG9uc2UsIG5kbjo6c2VjdXJpdHk6OnNpZ25pbmdCeUlkZW50aXR5KG1faWRlbnRpdHkpKTsKIAogICAvLyBDaGVjayBpZiB3ZSBuZWVkIGEgd3JhcHBlcgogICBOYW1lIGludml0YXRpb25Sb3V0aW5nUHJlZml4ID0gZ2V0SW52aXRhdGlvblJvdXRpbmdQcmVmaXgoKTsKQEAgLTQ1MSw3ICs0NDcsNyBAQAogICAgIHdyYXBwZWREYXRhLT5zZXRDb250ZW50KHJlc3BvbnNlLT53aXJlRW5jb2RlKCkpOwogICAgIHdyYXBwZWREYXRhLT5zZXRGcmVzaG5lc3NQZXJpb2QodGltZTo6bWlsbGlzZWNvbmRzKDEwMDApKTsKIAotICAgIG1fa2V5Q2hhaW4uc2lnbkJ5SWRlbnRpdHkoKndyYXBwZWREYXRhLCBtX2lkZW50aXR5KTsKKyAgICBtX2tleUNoYWluLnNpZ24oKndyYXBwZWREYXRhLCBuZG46OnNlY3VyaXR5OjpzaWduaW5nQnlJZGVudGl0eShtX2lkZW50aXR5KSk7CiAgICAgbV9mYWNlLnB1dCgqd3JhcHBlZERhdGEpOwogICB9CiAKQEAgLTQ2OSw3ICs0NjUsOCBAQAogICBlbHNlCiAgICAgcmVzcG9uc2UtPnNldENvbnRlbnQobmRuOjptYWtlTm9uTmVnYXRpdmVJbnRlZ2VyQmxvY2sodGx2OjpDb250ZW50LCAwKSk7CiAKLSAgbV9rZXlDaGFpbi5zaWduQnlJZGVudGl0eSgqcmVzcG9uc2UsIG1faWRlbnRpdHkpOworICByZXNwb25zZS0+c2V0RnJlc2huZXNzUGVyaW9kKHRpbWU6Om1pbGxpc2Vjb25kcygxMDAwKSk7CisgIG1fa2V5Q2hhaW4uc2lnbigqcmVzcG9uc2UsIG5kbjo6c2VjdXJpdHk6OnNpZ25pbmdCeUlkZW50aXR5KG1faWRlbnRpdHkpKTsKICAgbV9pbXMuaW5zZXJ0KCpyZXNwb25zZSk7CiAgIG1fZmFjZS5wdXQoKnJlc3BvbnNlKTsKIH0KQEAgLTQ5MSw2ICs0ODgsNyBAQAogICBpbnRlcmVzdC5nZXROb25jZSgpOwogICBtX2ZhY2UuZXhwcmVzc0ludGVyZXN0KGludGVyZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvblJlcXVlc3RSZXNwb25zZSwgdGhpcywgXzEsIF8yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKCZDb250cm9sbGVyQmFja2VuZDo6b25SZXF1ZXN0VGltZW91dCwgdGhpcywgXzEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoJkNvbnRyb2xsZXJCYWNrZW5kOjpvblJlcXVlc3RUaW1lb3V0LCB0aGlzLCBfMSwgMCkpOwogfQogCkBAIC01MDAsMTAgKzQ5OCwxMCBAQAogICBDb250YWN0TGlzdCBjb250YWN0TGlzdDsKIAogICBtX2NvbnRhY3RNYW5hZ2VyLmdldENvbnRhY3RMaXN0KGNvbnRhY3RMaXN0KTsKLSAgbV92YWxpZGF0b3IuY2xlYW5UcnVzdEFuY2hvcigpOworICAvLyBtX3ZhbGlkYXRvci5jbGVhblRydXN0QW5jaG9yKCk7CiAKLSAgZm9yIChDb250YWN0TGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgID0gY29udGFjdExpc3QuYmVnaW4oKTsgaXQgIT0gY29udGFjdExpc3QuZW5kKCk7IGl0KyspCi0gICAgbV92YWxpZGF0b3IuYWRkVHJ1c3RBbmNob3IoKCppdCktPmdldFB1YmxpY0tleU5hbWUoKSwgKCppdCktPmdldFB1YmxpY0tleSgpKTsKKyAgLy8gZm9yIChDb250YWN0TGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgID0gY29udGFjdExpc3QuYmVnaW4oKTsgaXQgIT0gY29udGFjdExpc3QuZW5kKCk7IGl0KyspCisgICAgLy8gbV92YWxpZGF0b3IuYWRkVHJ1c3RBbmNob3IoKCppdCktPmdldFB1YmxpY0tleU5hbWUoKSwgKCppdCktPmdldFB1YmxpY0tleSgpKTsKIAogfQogCmRpZmYgLS1naXQgYS9zcmMvY29udHJvbGxlci1iYWNrZW5kLmhwcCBiL3NyYy9jb250cm9sbGVyLWJhY2tlbmQuaHBwCmluZGV4IGJlMmNmMjUuLjE4YjFjZDggMTAwNjQ0Ci0tLSBhL3NyYy9jb250cm9sbGVyLWJhY2tlbmQuaHBwCisrKyBiL3NyYy9jb250cm9sbGVyLWJhY2tlbmQuaHBwCkBAIC0yMCwxMCArMjAsMTAgQEAKICNpbmNsdWRlICJjb21tb24uaHBwIgogI2luY2x1ZGUgImNvbnRhY3QtbWFuYWdlci5ocHAiCiAjaW5jbHVkZSAiaW52aXRhdGlvbi5ocHAiCi0jaW5jbHVkZSAidmFsaWRhdG9yLWludml0YXRpb24uaHBwIgogI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkva2V5LWNoYWluLmhwcD4KLSNpbmNsdWRlIDxuZG4tY3h4L3V0aWwvaW4tbWVtb3J5LXN0b3JhZ2UtcGVyc2lzdGVudC5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9pbXMvaW4tbWVtb3J5LXN0b3JhZ2UtcGVyc2lzdGVudC5ocHA+CiAjaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3ItbnVsbC5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9mYWNlLmhwcD4KICNpbmNsdWRlIDxib29zdC90aHJlYWQuaHBwPgogI2luY2x1ZGUgPG11dGV4PgogI2VuZGlmCkBAIC03NCwxMSArNzQsMTEgQEAKICAgb25JbnZpdGF0aW9uUmVnaXN0ZXJGYWlsZWQoY29uc3QgTmFtZSYgcHJlZml4LCBjb25zdCBzdGQ6OnN0cmluZyYgZmFpbEluZm8pOwogCiAgIHZvaWQKLSAgb25JbnZpdGF0aW9uVmFsaWRhdGVkKGNvbnN0IHNoYXJlZF9wdHI8Y29uc3QgSW50ZXJlc3Q+JiBpbnRlcmVzdCk7CisgIG9uSW52aXRhdGlvblZhbGlkYXRlZChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpOwogCiAgIHZvaWQKLSAgb25JbnZpdGF0aW9uVmFsaWRhdGlvbkZhaWxlZChjb25zdCBzaGFyZWRfcHRyPGNvbnN0IEludGVyZXN0PiYgaW50ZXJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZmFpbHVyZUluZm8pOworICBvbkludml0YXRpb25WYWxpZGF0aW9uRmFpbGVkKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OnNlY3VyaXR5OjpWYWxpZGF0aW9uRXJyb3ImIGZhaWx1cmVJbmZvKTsKIAogICB2b2lkCiAgIG9uTG9jYWxQcmVmaXgoY29uc3QgbmRuOjpDb25zdEJ1ZmZlclB0ciYgZGF0YSk7CkBAIC05MCw3ICs5MCw3IEBACiAgIHVwZGF0ZUxvY2FsUHJlZml4KGNvbnN0IE5hbWUmIGxvY2FsUHJlZml4KTsKIAogICB2b2lkCi0gIG9uUmVxdWVzdFJlc3BvbnNlKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwgRGF0YSYgZGF0YSk7CisgIG9uUmVxdWVzdFJlc3BvbnNlKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwgY29uc3QgRGF0YSYgZGF0YSk7CiAKICAgdm9pZAogICBvblJlcXVlc3RUaW1lb3V0KGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwgaW50JiByZXNlbmRUaW1lcyk7CkBAIC0xNjYsMTIgKzE2NiwxMiBAQAogCiAgIC8vIFNlY3VyaXR5IHJlbGF0ZWQ7CiAgIG5kbjo6S2V5Q2hhaW4gbV9rZXlDaGFpbjsKLSAgVmFsaWRhdG9ySW52aXRhdGlvbiBtX3ZhbGlkYXRvcjsKLSAgbmRuOjpWYWxpZGF0b3JOdWxsIG1fbnVsbFZhbGlkYXRvcjsKKyAgc2hhcmVkX3B0cjxuZG46OnNlY3VyaXR5OjpWYWxpZGF0b3I+IG1fdmFsaWRhdG9yOworICBuZG46OnNlY3VyaXR5OjpWYWxpZGF0b3JOdWxsIG1fbnVsbFZhbGlkYXRvcjsKIAogICAvLyBSZWdpc3RlcmVkUHJlZml4SWQKLSAgY29uc3QgbmRuOjpSZWdpc3RlcmVkUHJlZml4SWQqIG1faW52aXRhdGlvbkxpc3RlbmVySWQ7Ci0gIGNvbnN0IG5kbjo6UmVnaXN0ZXJlZFByZWZpeElkKiBtX3JlcXVlc3RMaXN0ZW5lcklkOworICBzaGFyZWRfcHRyPG5kbjo6UmVnaXN0ZXJlZFByZWZpeEhhbmRsZT4gbV9pbnZpdGF0aW9uTGlzdGVuZXJJZDsKKyAgc2hhcmVkX3B0cjxuZG46OlJlZ2lzdGVyZWRQcmVmaXhIYW5kbGU+IG1fcmVxdWVzdExpc3RlbmVySWQ7CiAKICAgLy8gQ2hhdFJvb21MaXN0CiAgIFFTdHJpbmdMaXN0IG1fY2hhdERpYWxvZ0xpc3Q7CkBAIC0xODAsNyArMTgwLDcgQEAKICAgc3RkOjptdXRleCBtX3Jlc3VtZU11dGV4OwogICBzdGQ6Om11dGV4IG1fbmZkQ29ubmVjdGlvbk11dGV4OwogCi0gIG5kbjo6dXRpbDo6SW5NZW1vcnlTdG9yYWdlUGVyc2lzdGVudCBtX2ltczsKKyAgbmRuOjpJbk1lbW9yeVN0b3JhZ2VQZXJzaXN0ZW50IG1faW1zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgY2hyb25vY2hhdApkaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2xsZXIuY3BwIGIvc3JjL2NvbnRyb2xsZXIuY3BwCmluZGV4IGI0NWUxZGQuLmQ0MWI2NWQgMTAwNjQ0Ci0tLSBhL3NyYy9jb250cm9sbGVyLmNwcAorKysgYi9zcmMvY29udHJvbGxlci5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIElOSVRfTE9HR0VSKCJjaHJvbm9jaGF0LkNvbnRyb2xsZXIiKTsKIAogUV9ERUNMQVJFX01FVEFUWVBFKG5kbjo6TmFtZSkKLVFfREVDTEFSRV9NRVRBVFlQRShuZG46OklkZW50aXR5Q2VydGlmaWNhdGUpCitRX0RFQ0xBUkVfTUVUQVRZUEUobmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUpCiBRX0RFQ0xBUkVfTUVUQVRZUEUoY2hyb25vY2hhdDo6RW5kb3JzZUluZm8pCiBRX0RFQ0xBUkVfTUVUQVRZUEUobmRuOjpJbnRlcmVzdCkKIFFfREVDTEFSRV9NRVRBVFlQRShzaXplX3QpCkBAIC01Nyw4ICs1Nyw4IEBACiAgICwgbV9kaXNjb3ZlcnlQYW5lbChuZXcgRGlzY292ZXJ5UGFuZWwodGhpcykpCiB7CiAgIHFSZWdpc3Rlck1ldGFUeXBlPG5kbjo6TmFtZT4oIm5kbi5OYW1lIik7Ci0gIHFSZWdpc3Rlck1ldGFUeXBlPG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZT4oIm5kbi5JZGVudGl0eUNlcnRpZmljYXRlIik7Ci0gIHFSZWdpc3Rlck1ldGFUeXBlPGNocm9ub2NoYXQ6OkVuZG9yc2VJbmZvPigiY2hyb25vY2hhdC5FbmRvcnNlSW5mbyIpOworICBxUmVnaXN0ZXJNZXRhVHlwZTxuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZT4oIm5kbi5zZWN1cml0eS52Mi5DZXJ0aWZpY2F0ZSIpOworICBxUmVnaXN0ZXJNZXRhVHlwZTxjaHJvbm9jaGF0OjpFbmRvcnNlSW5mbz4oIkVuZG9yc2VJbmZvIik7CiAgIHFSZWdpc3Rlck1ldGFUeXBlPG5kbjo6SW50ZXJlc3Q+KCJuZG4uSW50ZXJlc3QiKTsKICAgcVJlZ2lzdGVyTWV0YVR5cGU8c2l6ZV90Pigic2l6ZV90Iik7CiAgIHFSZWdpc3Rlck1ldGFUeXBlPGNocm9ub2NoYXQ6OkNoYXRyb29tSW5mbz4oImNocm9ub2NoYXQuQ2hhdHJvb20iKTsKQEAgLTEyNiw4ICsxMjYsOCBAQAogICAgICAgICAgIG1fYnJvd3NlQ29udGFjdERpYWxvZywgU0xPVChvbklkQ2VydE5hbWVMaXN0UmVhZHkoY29uc3QgUVN0cmluZ0xpc3QmKSkpOwogICBjb25uZWN0KG1fYmFja2VuZC5nZXRDb250YWN0TWFuYWdlcigpLCBTSUdOQUwobmFtZUxpc3RSZWFkeShjb25zdCBRU3RyaW5nTGlzdCYpKSwKICAgICAgICAgICBtX2Jyb3dzZUNvbnRhY3REaWFsb2csIFNMT1Qob25OYW1lTGlzdFJlYWR5KGNvbnN0IFFTdHJpbmdMaXN0JikpKTsKLSAgY29ubmVjdChtX2JhY2tlbmQuZ2V0Q29udGFjdE1hbmFnZXIoKSwgU0lHTkFMKGlkQ2VydFJlYWR5KGNvbnN0IG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZSYpKSwKLSAgICAgICAgICBtX2Jyb3dzZUNvbnRhY3REaWFsb2csIFNMT1Qob25JZENlcnRSZWFkeShjb25zdCBuZG46OklkZW50aXR5Q2VydGlmaWNhdGUmKSkpOworICBjb25uZWN0KG1fYmFja2VuZC5nZXRDb250YWN0TWFuYWdlcigpLCBTSUdOQUwoaWRDZXJ0UmVhZHkoY29uc3QgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUmKSksCisgICAgICAgICAgbV9icm93c2VDb250YWN0RGlhbG9nLCBTTE9UKG9uSWRDZXJ0UmVhZHkoY29uc3QgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUmKSkpOwogCiAgIC8vIENvbm5lY3Rpb24gdG8gQ29udGFjdFBhbmVsCiAgIGNvbm5lY3QobV9jb250YWN0UGFuZWwsIFNJR05BTCh3YWl0Rm9yQ29udGFjdExpc3QoKSksCkBAIC0zMjIsMTUgKzMyMiwxNSBAQAogICAgIGVsc2UKICAgICAgIG1fbmljayA9IG1faWRlbnRpdHkuZ2V0KC0xKS50b1VyaSgpOwogICB9Ci0gIGNhdGNoICh0bHY6OkVycm9yKSB7CisgIGNhdGNoICh0bHY6OkVycm9yJikgewogICAgIHRyeSB7CiAgICAgICBuZG46OktleUNoYWluIGtleUNoYWluOwotICAgICAgbV9pZGVudGl0eSA9IGtleUNoYWluLmdldERlZmF1bHRJZGVudGl0eSgpOworICAgICAgbV9pZGVudGl0eSA9IGtleUNoYWluLmdldFBpYigpLmdldERlZmF1bHRJZGVudGl0eSgpLmdldE5hbWUoKTsKICAgICB9Ci0gICAgY2F0Y2ggKG5kbjo6S2V5Q2hhaW46OkVycm9yKSB7CisgICAgY2F0Y2ggKG5kbjo6c2VjdXJpdHk6OnBpYjo6UGliOjpFcnJvciYpIHsKICAgICAgIG1faWRlbnRpdHkuY2xlYXIoKTsKICAgICAgIG1faWRlbnRpdHkuYXBwZW5kKCJjaHJvbm9jaGF0LXRtcC1pZGVudGl0eSIpCi0gICAgICAgIC5hcHBlbmQoZ2V0UmFuZG9tU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIC5hcHBlbmQoZ2V0UmFuZG9tU3RyaW5nKCkpOwogICAgIH0KICAgICBtX25pY2sgPSBtX2lkZW50aXR5LmdldCgtMSkudG9VcmkoKTsKICAgfQpAQCAtNDIzLDggKzQyMyw4IEBACiB2b2lkCiBDb250cm9sbGVyOjp1cGRhdGVNZW51KCkKIHsKLSAgUU1lbnUqIG1lbnUgPSBuZXcgUU1lbnUodGhpcyk7Ci0gIFFNZW51KiBjbG9zZU1lbnUgPSAwOworICBtX3RyYXlJY29uTWVudS0+Y2xlYXIoKTsKKyAgUU1lbnUqIG1lbnUgPSBtX3RyYXlJY29uTWVudTsKIAogICBtZW51LT5hZGRBY3Rpb24obV9zdGFydENoYXRyb29tKTsKICAgbWVudS0+YWRkQWN0aW9uKG1fY2hhdHJvb21EaXNjb3ZlcnlBY3Rpb24pOwpAQCAtNDQ4LDIzICs0NDgsMTggQEAKICAgbWVudS0+YWRkQWN0aW9uKG1fdXBkYXRlTG9jYWxQcmVmaXhBY3Rpb24pOwogICBtZW51LT5hZGRTZXBhcmF0b3IoKTsKICAgbWVudS0+YWRkQWN0aW9uKG1fbWluaW1pemVBY3Rpb24pOwotICBjbG9zZU1lbnUgPSBtZW51LT5hZGRNZW51KCJDbG9zZSBjaGF0cm9vbSIpOworICBtX2Nsb3NlTWVudSA9IG1lbnUtPmFkZE1lbnUoIkNsb3NlIGNoYXRyb29tIik7CiAgIHsKICAgICBDaGF0QWN0aW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Nsb3NlQWN0aW9uTGlzdC5iZWdpbigpOwogICAgIENoYXRBY3Rpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Nsb3NlQWN0aW9uTGlzdC5lbmQoKTsKICAgICBpZiAoaXQgPT0gZW5kKQotICAgICAgY2xvc2VNZW51LT5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgIG1fY2xvc2VNZW51LT5zZXRFbmFibGVkKGZhbHNlKTsKICAgICBlbHNlCiAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyBpdCsrKQotICAgICAgICBjbG9zZU1lbnUtPmFkZEFjdGlvbihpdC0+c2Vjb25kKTsKKyAgICAgICAgbV9jbG9zZU1lbnUtPmFkZEFjdGlvbihpdC0+c2Vjb25kKTsKICAgfQogICBtZW51LT5hZGRTZXBhcmF0b3IoKTsKICAgbWVudS0+YWRkQWN0aW9uKG1fcXVpdEFjdGlvbik7Ci0KLSAgbV90cmF5SWNvbi0+c2V0Q29udGV4dE1lbnUobWVudSk7Ci0gIGRlbGV0ZSBtX3RyYXlJY29uTWVudTsKLSAgbV90cmF5SWNvbk1lbnUgPSBtZW51OwotICBtX2Nsb3NlTWVudSA9IGNsb3NlTWVudTsKIH0KIAogc3RyaW5nCkBAIC02MTYsNiArNjExLDcgQEAKIHZvaWQKIENvbnRyb2xsZXI6Om9uUHJvZmlsZUVkaXRvckFjdGlvbigpCiB7CisgIG1fcHJvZmlsZUVkaXRvci0+cmVzZXRQYW5lbCgpOwogICBtX3Byb2ZpbGVFZGl0b3ItPnNob3coKTsKICAgbV9wcm9maWxlRWRpdG9yLT5yYWlzZSgpOwogfQpAQCAtNzcwLDYgKzc2Niw4IEBACiB2b2lkCiBDb250cm9sbGVyOjpvblJlbW92ZUNoYXREaWFsb2coY29uc3QgUVN0cmluZyYgY2hhdHJvb21OYW1lKQogeworICBlbWl0IHJlbW92ZUNoYXRyb29tKGNoYXRyb29tTmFtZSk7CisKICAgQ2hhdERpYWxvZ0xpc3Q6Oml0ZXJhdG9yIGl0ID0gbV9jaGF0RGlhbG9nTGlzdC5maW5kKGNoYXRyb29tTmFtZS50b1N0ZFN0cmluZygpKTsKICAgaWYgKGl0ICE9IG1fY2hhdERpYWxvZ0xpc3QuZW5kKCkpIHsKICAgICBDaGF0RGlhbG9nKiBkZWxldGVkQ2hhdCA9IGl0LT5zZWNvbmQ7CkBAIC04MDQsNyArODAyLDcgQEAKICAgaWYgKG1faXNJbkNvbm5lY3Rpb25EZXRlY3Rpb24pCiAgICAgcmV0dXJuOwogICAvLyBiZWdpbiBhIHRocmVhZAotICAKKwogICBtX2lzSW5Db25uZWN0aW9uRGV0ZWN0aW9uID0gdHJ1ZTsKICAgbV9uZmRDb25uZWN0aW9uQ2hlY2tlciA9IG5ldyBOZmRDb25uZWN0aW9uQ2hlY2tlcih0aGlzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2RpZ2VzdC10cmVlLXNjZW5lLmNwcCBiL3NyYy9kaWdlc3QtdHJlZS1zY2VuZS5jcHAKaW5kZXggMTdiYzY3YS4uNTVkOWEzNiAxMDA2NDQKLS0tIGEvc3JjL2RpZ2VzdC10cmVlLXNjZW5lLmNwcAorKysgYi9zcmMvZGlnZXN0LXRyZWUtc2NlbmUuY3BwCkBAIC0xMiwxMCArMTIsMTAgQEAKICNpbmNsdWRlICJkaWdlc3QtdHJlZS1zY2VuZS5ocHAiCiAKICNpbmNsdWRlIDxRdEd1aT4KKyNpbmNsdWRlIDxRR3JhcGhpY3NUZXh0SXRlbT4KIAogI2lmbmRlZiBRX01PQ19SVU4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0yOCw3ICsyOCw3IEBACiAKIC8vRGlzcGxheVVzZXJQdHIgRGlzcGxheVVzZXJOdWxsUHRyOwogCi1EaWdlc3RUcmVlU2NlbmU6OkRpZ2VzdFRyZWVTY2VuZShRV2lkZ2V0ICpwYXJlbnQpCitEaWdlc3RUcmVlU2NlbmU6OkRpZ2VzdFRyZWVTY2VuZShRT2JqZWN0ICpwYXJlbnQpCiAgIDogUUdyYXBoaWNzU2NlbmUocGFyZW50KQogewogICBtX3ByZXZpb3VzbHlVcGRhdGVkVXNlciA9IERpc3BsYXlVc2VyTnVsbFB0cjsKZGlmZiAtLWdpdCBhL3NyYy9kaWdlc3QtdHJlZS1zY2VuZS5ocHAgYi9zcmMvZGlnZXN0LXRyZWUtc2NlbmUuaHBwCmluZGV4IDBlNjk1MjguLjU2MmZlZWIgMTAwNjQ0Ci0tLSBhL3NyYy9kaWdlc3QtdHJlZS1zY2VuZS5ocHAKKysrIGIvc3JjL2RpZ2VzdC10cmVlLXNjZW5lLmhwcApAQCAtMTIsNyArMTIsNyBAQAogI2lmbmRlZiBDSFJPTk9DSEFUX0RJR0VTVF9UUkVFX1NDRU5FX0hQUAogI2RlZmluZSBDSFJPTk9DSEFUX0RJR0VTVF9UUkVFX1NDRU5FX0hQUAogCi0jaW5jbHVkZSA8UXRHdWkvUUdyYXBoaWNzU2NlbmU+CisjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmU+CiAjaW5jbHVkZSA8UUNvbG9yPgogI2luY2x1ZGUgPFFNYXA+CiAKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgUV9PQkpFQ1QKIAogcHVibGljOgotICBEaWdlc3RUcmVlU2NlbmUoUVdpZGdldCAqcGFyZW50ID0gMCk7CisgIERpZ2VzdFRyZWVTY2VuZShRT2JqZWN0ICpwYXJlbnQgPSAwKTsKIAogICB2b2lkCiAgIHByb2Nlc3NTeW5jVXBkYXRlKGNvbnN0IHN0ZDo6dmVjdG9yPGNocm9ub2NoYXQ6Ok5vZGVJbmZvPiYgbm9kZUluZm9zLApkaWZmIC0tZ2l0IGEvc3JjL2Rpc2NvdmVyeS1wYW5lbC5jcHAgYi9zcmMvZGlzY292ZXJ5LXBhbmVsLmNwcAppbmRleCBiN2MwZWQ2Li4wNmM3Y2Y3IDEwMDY0NAotLS0gYS9zcmMvZGlzY292ZXJ5LXBhbmVsLmNwcAorKysgYi9zcmMvZGlzY292ZXJ5LXBhbmVsLmNwcApAQCAtMjEsNyArMjEsNiBAQAogCiBuYW1lc3BhY2UgY2hyb25vY2hhdCB7CiAKLXN0YXRpYyBjb25zdCB0aW1lOjpzZWNvbmRzIFJFRlJFU0hfSU5URVJWQUwoNjApOwogc3RhdGljIGNvbnN0IG5kbjo6TmFtZTo6Q29tcG9uZW50IFJPVVRJTkdfSElOVF9TRVBBUkFUT1IgPQogICBuZG46Om5hbWU6OkNvbXBvbmVudDo6ZnJvbUVzY2FwZWRTdHJpbmcoIiVGMCUyRSIpOwogCkBAIC05MSw3ICs5MCw2IEBACiB2b2lkCiBEaXNjb3ZlcnlQYW5lbDo6b25JZGVudGl0eVVwZGF0ZWQoY29uc3QgUVN0cmluZyYgaWRlbnRpdHkpCiB7Ci0gIHJlc2V0UGFuZWwoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2Rpc2NvdmVyeS1wYW5lbC5ocHAgYi9zcmMvZGlzY292ZXJ5LXBhbmVsLmhwcAppbmRleCAxYjViZDkyLi40NzMyODNmIDEwMDY0NAotLS0gYS9zcmMvZGlzY292ZXJ5LXBhbmVsLmhwcAorKysgYi9zcmMvZGlzY292ZXJ5LXBhbmVsLmhwcApAQCAtMTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSA8UURpYWxvZz4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdE1vZGVsPgorI2luY2x1ZGUgPFFJdGVtU2VsZWN0aW9uPgogCiAjaWZuZGVmIFFfTU9DX1JVTgogI2luY2x1ZGUgImNoYXRyb29tLWluZm8uaHBwIgpkaWZmIC0tZ2l0IGEvc3JjL2VuZG9yc2UtY2VydGlmaWNhdGUuY3BwIGIvc3JjL2VuZG9yc2UtY2VydGlmaWNhdGUuY3BwCmluZGV4IGNiZWIxOGMuLmY5Mjg2YzYgMTAwNjQ0Ci0tLSBhL3NyYy9lbmRvcnNlLWNlcnRpZmljYXRlLmNwcAorKysgYi9zcmMvZW5kb3JzZS1jZXJ0aWZpY2F0ZS5jcHAKQEAgLTEyLDYgKzEyLDggQEAKICNpbmNsdWRlICJlbmRvcnNlLWNlcnRpZmljYXRlLmhwcCIKICNpbmNsdWRlIDxib29zdC9pb3N0cmVhbXMvc3RyZWFtLmhwcD4KICNpbmNsdWRlIDxuZG4tY3h4L2VuY29kaW5nL2J1ZmZlci1zdHJlYW0uaHBwPgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvYWRkaXRpb25hbC1kZXNjcmlwdGlvbi5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGl0eS1wZXJpb2QuaHBwPgogI2luY2x1ZGUgImVuZG9yc2UtZXh0ZW5zaW9uLmhwcCIKICNpbmNsdWRlIDxsaXN0PgogCkBAIC0yMCwxNiArMjIsOSBAQAogdXNpbmcgc3RkOjp2ZWN0b3I7CiB1c2luZyBzdGQ6OnN0cmluZzsKIAotdXNpbmcgbmRuOjpQdWJsaWNLZXk7Ci11c2luZyBuZG46OklkZW50aXR5Q2VydGlmaWNhdGU7Ci11c2luZyBuZG46OkNlcnRpZmljYXRlU3ViamVjdERlc2NyaXB0aW9uOwotdXNpbmcgbmRuOjpDZXJ0aWZpY2F0ZUV4dGVuc2lvbjsKLXVzaW5nIG5kbjo6T0lEOwordXNpbmcgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGU7CiB1c2luZyBuZG46Ok9CdWZmZXJTdHJlYW07CiAKLWNvbnN0IE9JRCBFbmRvcnNlQ2VydGlmaWNhdGU6OlBST0ZJTEVfRVhUX09JRCgiMS4zLjYuMS41LjMyLjIuMSIpOwotY29uc3QgT0lEIEVuZG9yc2VDZXJ0aWZpY2F0ZTo6RU5ET1JTRV9FWFRfT0lEKCIxLjMuNi4xLjUuMzIuMi4yIik7Ci0KIGNvbnN0IHZlY3RvcjxzdHJpbmc+IEVuZG9yc2VDZXJ0aWZpY2F0ZTo6REVGQVVMVF9FTkRPUlNFX0xJU1Q7CiAKIEVuZG9yc2VFeHRlbnNpb24mCkBAIC01MSwxMDcgKzQ2LDEzMiBAQAogICByZXR1cm4gZW5kb3JzZUV4dGVuc2lvbjsKIH0KIAotRW5kb3JzZUNlcnRpZmljYXRlOjpFbmRvcnNlQ2VydGlmaWNhdGUoY29uc3QgSWRlbnRpdHlDZXJ0aWZpY2F0ZSYga3NrQ2VydGlmaWNhdGUsCitFbmRvcnNlQ2VydGlmaWNhdGU6OkVuZG9yc2VDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZSYga3NrQ2VydGlmaWNhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9maWxlJiBwcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yPHN0cmluZz4mIGVuZG9yc2VMaXN0KQogICA6IENlcnRpZmljYXRlKCkKICAgLCBtX3Byb2ZpbGUocHJvZmlsZSkKICAgLCBtX2VuZG9yc2VMaXN0KGVuZG9yc2VMaXN0KQogewotICBtX2tleU5hbWUgPSBJZGVudGl0eUNlcnRpZmljYXRlOjpjZXJ0aWZpY2F0ZU5hbWVUb1B1YmxpY0tleU5hbWUoa3NrQ2VydGlmaWNhdGUuZ2V0TmFtZSgpKTsKLSAgbV9zaWduZXIgPSBtX2tleU5hbWU7CisgIHNldE5hbWUoa3NrQ2VydGlmaWNhdGUuZ2V0S2V5TmFtZSgpLmdldFByZWZpeCgtMikKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoIlBST0ZJTEUtQ0VSVCIpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCJLRVkiKQorICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChrc2tDZXJ0aWZpY2F0ZS5nZXRLZXlJZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgic2VsZiIpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVGltZXN0YW1wKCkpOwogCi0gIE5hbWUgZGF0YU5hbWUgPSBtX2tleU5hbWU7Ci0gIGRhdGFOYW1lLmFwcGVuZCgiUFJPRklMRS1DRVJUIikuYXBwZW5kKG1fc2lnbmVyLndpcmVFbmNvZGUoKSkuYXBwZW5kVmVyc2lvbigpOwotICBzZXROYW1lKGRhdGFOYW1lKTsKKyAgbV9zaWduZXIgPSBrc2tDZXJ0aWZpY2F0ZS5nZXRLZXlOYW1lKCk7CiAKLSAgc2V0Tm90QmVmb3JlKGtza0NlcnRpZmljYXRlLmdldE5vdEJlZm9yZSgpKTsKLSAgc2V0Tm90QWZ0ZXIoa3NrQ2VydGlmaWNhdGUuZ2V0Tm90QWZ0ZXIoKSk7Ci0gIGFkZFN1YmplY3REZXNjcmlwdGlvbihDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbihPSUQoIjIuNS40LjQxIiksIG1fa2V5TmFtZS50b1VyaSgpKSk7Ci0gIHNldFB1YmxpY0tleUluZm8oa3NrQ2VydGlmaWNhdGUuZ2V0UHVibGljS2V5SW5mbygpKTsKKyAgc2V0TWV0YUluZm8oa3NrQ2VydGlmaWNhdGUuZ2V0TWV0YUluZm8oKSk7CisgIHNldENvbnRlbnQoa3NrQ2VydGlmaWNhdGUuZ2V0UHVibGljS2V5KCkuZGF0YSgpLCBrc2tDZXJ0aWZpY2F0ZS5nZXRQdWJsaWNLZXkoKS5zaXplKCkpOwogCi0gIEJsb2NrIHByb2ZpbGVXaXJlID0gbV9wcm9maWxlLndpcmVFbmNvZGUoKTsKLSAgYWRkRXh0ZW5zaW9uKENlcnRpZmljYXRlRXh0ZW5zaW9uKFBST0ZJTEVfRVhUX09JRCwgdHJ1ZSwgbmRuOjpCdWZmZXIocHJvZmlsZVdpcmUud2lyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlV2lyZS5zaXplKCkpKSk7CisgIG5kbjo6c2VjdXJpdHk6OkFkZGl0aW9uYWxEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKKyAgZGVzY3JpcHRpb24uc2V0KCIyLjUuNC40MSIsIGdldEtleU5hbWUoKS50b1VyaSgpKTsKKyAgZGVzY3JpcHRpb24uc2V0KCJzaWduZXIiLCBtX3NpZ25lci50b1VyaSgpKTsKIAogICBFbmRvcnNlRXh0ZW5zaW9uIGVuZG9yc2VFeHRlbnNpb247CiAgIGVuZG9yc2VFeHRlbnNpb24gPDwgbV9lbmRvcnNlTGlzdDsKLSAgQmxvY2sgZW5kb3JzZVdpcmUgPSBlbmRvcnNlRXh0ZW5zaW9uLndpcmVFbmNvZGUoKTsKLSAgYWRkRXh0ZW5zaW9uKENlcnRpZmljYXRlRXh0ZW5zaW9uKEVORE9SU0VfRVhUX09JRCwgdHJ1ZSwgbmRuOjpCdWZmZXIoZW5kb3JzZVdpcmUud2lyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRvcnNlV2lyZS5zaXplKCkpKSk7CiAKLSAgZW5jb2RlKCk7CisgIG5kbjo6U2lnbmF0dXJlSW5mbyBzaWduYXR1cmVJbmZvOworICBzaWduYXR1cmVJbmZvLmFkZEN1c3RvbVRsdihkZXNjcmlwdGlvbi53aXJlRW5jb2RlKCkpOworICBzaWduYXR1cmVJbmZvLmFkZEN1c3RvbVRsdihtX3Byb2ZpbGUud2lyZUVuY29kZSgpKTsKKworICBpZiAobV9lbmRvcnNlTGlzdC5zaXplKCkgPiAwKQorICAgIHNpZ25hdHVyZUluZm8uYWRkQ3VzdG9tVGx2KGVuZG9yc2VFeHRlbnNpb24ud2lyZUVuY29kZSgpKTsKKworICB0cnkgeworICAgIHNpZ25hdHVyZUluZm8uc2V0VmFsaWRpdHlQZXJpb2Qoa3NrQ2VydGlmaWNhdGUuZ2V0VmFsaWRpdHlQZXJpb2QoKSk7CisgIH0gY2F0Y2ggKHRsdjo6RXJyb3ImKSB7CisgICAgc2lnbmF0dXJlSW5mby5zZXRWYWxpZGl0eVBlcmlvZChuZG46OnNlY3VyaXR5OjpWYWxpZGl0eVBlcmlvZCgKKyAgICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCksIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCkgKyB0aW1lOjpkYXlzKDM2NTApKSk7CisgIH0KKworICBzZXRTaWduYXR1cmVJbmZvKHNpZ25hdHVyZUluZm8pOwogfQogCiBFbmRvcnNlQ2VydGlmaWNhdGU6OkVuZG9yc2VDZXJ0aWZpY2F0ZShjb25zdCBFbmRvcnNlQ2VydGlmaWNhdGUmIGVuZG9yc2VDZXJ0aWZpY2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWUmIHNpZ25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvcjxzdHJpbmc+JiBlbmRvcnNlTGlzdCkKICAgOiBDZXJ0aWZpY2F0ZSgpCi0gICwgbV9rZXlOYW1lKGVuZG9yc2VDZXJ0aWZpY2F0ZS5tX2tleU5hbWUpCiAgICwgbV9zaWduZXIoc2lnbmVyKQogICAsIG1fcHJvZmlsZShlbmRvcnNlQ2VydGlmaWNhdGUubV9wcm9maWxlKQogICAsIG1fZW5kb3JzZUxpc3QoZW5kb3JzZUxpc3QpCiB7Ci0gIE5hbWUgZGF0YU5hbWUgPSBtX2tleU5hbWU7Ci0gIGRhdGFOYW1lLmFwcGVuZCgiUFJPRklMRS1DRVJUIikuYXBwZW5kKG1fc2lnbmVyLndpcmVFbmNvZGUoKSkuYXBwZW5kVmVyc2lvbigpOwotICBzZXROYW1lKGRhdGFOYW1lKTsKKyAgc2V0TmFtZShlbmRvcnNlQ2VydGlmaWNhdGUuZ2V0TmFtZSgpCisgICAgICAgICAgICAgICAgIC5nZXRQcmVmaXgoLTIpCisgICAgICAgICAgICAgICAgIC5hcHBlbmQobV9zaWduZXIud2lyZUVuY29kZSgpKQorICAgICAgICAgICAgICAgICAuYXBwZW5kVmVyc2lvbigpKTsKIAotICBzZXROb3RCZWZvcmUoZW5kb3JzZUNlcnRpZmljYXRlLmdldE5vdEJlZm9yZSgpKTsKLSAgc2V0Tm90QWZ0ZXIoZW5kb3JzZUNlcnRpZmljYXRlLmdldE5vdEFmdGVyKCkpOwotICBhZGRTdWJqZWN0RGVzY3JpcHRpb24oQ2VydGlmaWNhdGVTdWJqZWN0RGVzY3JpcHRpb24oT0lEKCIyLjUuNC40MSIpLCBtX2tleU5hbWUudG9VcmkoKSkpOwotICBzZXRQdWJsaWNLZXlJbmZvKGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRQdWJsaWNLZXlJbmZvKCkpOworICBzZXRNZXRhSW5mbyhlbmRvcnNlQ2VydGlmaWNhdGUuZ2V0TWV0YUluZm8oKSk7CisgIHNldENvbnRlbnQoZW5kb3JzZUNlcnRpZmljYXRlLmdldFB1YmxpY0tleSgpLmRhdGEoKSwgZW5kb3JzZUNlcnRpZmljYXRlLmdldFB1YmxpY0tleSgpLnNpemUoKSk7CiAKLSAgQmxvY2sgcHJvZmlsZVdpcmUgPSBtX3Byb2ZpbGUud2lyZUVuY29kZSgpOwotICBhZGRFeHRlbnNpb24oQ2VydGlmaWNhdGVFeHRlbnNpb24oUFJPRklMRV9FWFRfT0lELCB0cnVlLCBuZG46OkJ1ZmZlcihwcm9maWxlV2lyZS53aXJlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVXaXJlLnNpemUoKSkpKTsKKyAgbmRuOjpzZWN1cml0eTo6QWRkaXRpb25hbERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOworICBkZXNjcmlwdGlvbi5zZXQoIjIuNS40LjQxIiwgZ2V0S2V5TmFtZSgpLnRvVXJpKCkpOworICBkZXNjcmlwdGlvbi5zZXQoInNpZ25lciIsIG1fc2lnbmVyLnRvVXJpKCkpOwogCiAgIEVuZG9yc2VFeHRlbnNpb24gZW5kb3JzZUV4dGVuc2lvbjsKICAgZW5kb3JzZUV4dGVuc2lvbiA8PCBtX2VuZG9yc2VMaXN0OwotICBCbG9jayBlbmRvcnNlV2lyZSA9IGVuZG9yc2VFeHRlbnNpb24ud2lyZUVuY29kZSgpOwotICBhZGRFeHRlbnNpb24oQ2VydGlmaWNhdGVFeHRlbnNpb24oRU5ET1JTRV9FWFRfT0lELCB0cnVlLCBuZG46OkJ1ZmZlcihlbmRvcnNlV2lyZS53aXJlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZG9yc2VXaXJlLnNpemUoKSkpKTsKIAotICBlbmNvZGUoKTsKKyAgbmRuOjpTaWduYXR1cmVJbmZvIHNpZ25hdHVyZUluZm87CisgIHNpZ25hdHVyZUluZm8uYWRkQ3VzdG9tVGx2KGRlc2NyaXB0aW9uLndpcmVFbmNvZGUoKSk7CisgIHNpZ25hdHVyZUluZm8uYWRkQ3VzdG9tVGx2KG1fcHJvZmlsZS53aXJlRW5jb2RlKCkpOworCisgIGlmIChtX2VuZG9yc2VMaXN0LnNpemUoKSA+IDApCisgICAgc2lnbmF0dXJlSW5mby5hZGRDdXN0b21UbHYoZW5kb3JzZUV4dGVuc2lvbi53aXJlRW5jb2RlKCkpOworCisgIHRyeSB7CisgICAgc2lnbmF0dXJlSW5mby5zZXRWYWxpZGl0eVBlcmlvZChlbmRvcnNlQ2VydGlmaWNhdGUuZ2V0VmFsaWRpdHlQZXJpb2QoKSk7CisgIH0gY2F0Y2ggKHRsdjo6RXJyb3ImKSB7CisgICAgc2lnbmF0dXJlSW5mby5zZXRWYWxpZGl0eVBlcmlvZChuZG46OnNlY3VyaXR5OjpWYWxpZGl0eVBlcmlvZCgKKyAgICAgIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCksIHRpbWU6OnN5c3RlbV9jbG9jazo6bm93KCkgKyB0aW1lOjpkYXlzKDM2NTApKSk7CisgIH0KKworICBzZXRTaWduYXR1cmVJbmZvKHNpZ25hdHVyZUluZm8pOwogfQogCiBFbmRvcnNlQ2VydGlmaWNhdGU6OkVuZG9yc2VDZXJ0aWZpY2F0ZShjb25zdCBOYW1lJiBrZXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHVibGljS2V5JiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OkJ1ZmZlciYga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZTo6c3lzdGVtX2Nsb2NrOjpUaW1lUG9pbnQmIG5vdEJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWU6OnN5c3RlbV9jbG9jazo6VGltZVBvaW50JiBub3RBZnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWU6OkNvbXBvbmVudCYgc2lnbmVyS2V5SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBzaWduZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9maWxlJiBwcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yPHN0cmluZz4mIGVuZG9yc2VMaXN0KQogICA6IENlcnRpZmljYXRlKCkKLSAgLCBtX2tleU5hbWUoa2V5TmFtZSkKICAgLCBtX3NpZ25lcihzaWduZXIpCiAgICwgbV9wcm9maWxlKHByb2ZpbGUpCiAgICwgbV9lbmRvcnNlTGlzdChlbmRvcnNlTGlzdCkKIHsKLSAgTmFtZSBkYXRhTmFtZSA9IG1fa2V5TmFtZTsKLSAgZGF0YU5hbWUuYXBwZW5kKCJQUk9GSUxFLUNFUlQiKS5hcHBlbmQobV9zaWduZXIud2lyZUVuY29kZSgpKS5hcHBlbmRWZXJzaW9uKCk7Ci0gIHNldE5hbWUoZGF0YU5hbWUpOworICBzZXROYW1lKGtleU5hbWUuZ2V0UHJlZml4KC0yKQorICAgICAgICAgICAgICAgICAuYXBwZW5kKCJQUk9GSUxFLUNFUlQiKQorICAgICAgICAgICAgICAgICAuYXBwZW5kKCJLRVkiKQorICAgICAgICAgICAgICAgICAuYXBwZW5kKHNpZ25lcktleUlkKQorICAgICAgICAgICAgICAgICAuYXBwZW5kKG1fc2lnbmVyLndpcmVFbmNvZGUoKSkKKyAgICAgICAgICAgICAgICAgLmFwcGVuZFZlcnNpb24oKSk7CiAKLSAgc2V0Tm90QmVmb3JlKG5vdEJlZm9yZSk7Ci0gIHNldE5vdEFmdGVyKG5vdEFmdGVyKTsKLSAgYWRkU3ViamVjdERlc2NyaXB0aW9uKENlcnRpZmljYXRlU3ViamVjdERlc2NyaXB0aW9uKE9JRCgiMi41LjQuNDEiKSwgbV9rZXlOYW1lLnRvVXJpKCkpKTsKLSAgc2V0UHVibGljS2V5SW5mbyhrZXkpOworICBzZXRDb250ZW50KGtleS5kYXRhKCksIGtleS5zaXplKCkpOwogCi0gIEJsb2NrIHByb2ZpbGVXaXJlID0gbV9wcm9maWxlLndpcmVFbmNvZGUoKTsKLSAgYWRkRXh0ZW5zaW9uKENlcnRpZmljYXRlRXh0ZW5zaW9uKFBST0ZJTEVfRVhUX09JRCwgdHJ1ZSwgbmRuOjpCdWZmZXIocHJvZmlsZVdpcmUud2lyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlV2lyZS5zaXplKCkpKSk7CisgIG5kbjo6c2VjdXJpdHk6OkFkZGl0aW9uYWxEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKKyAgZGVzY3JpcHRpb24uc2V0KCIyLjUuNC40MSIsIGtleU5hbWUudG9VcmkoKSk7CisgIGRlc2NyaXB0aW9uLnNldCgic2lnbmVyIiwgbV9zaWduZXIudG9VcmkoKSk7CiAKICAgRW5kb3JzZUV4dGVuc2lvbiBlbmRvcnNlRXh0ZW5zaW9uOwogICBlbmRvcnNlRXh0ZW5zaW9uIDw8IG1fZW5kb3JzZUxpc3Q7Ci0gIEJsb2NrIGVuZG9yc2VXaXJlID0gZW5kb3JzZUV4dGVuc2lvbi53aXJlRW5jb2RlKCk7Ci0gIGFkZEV4dGVuc2lvbihDZXJ0aWZpY2F0ZUV4dGVuc2lvbihFTkRPUlNFX0VYVF9PSUQsIHRydWUsIG5kbjo6QnVmZmVyKGVuZG9yc2VXaXJlLndpcmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kb3JzZVdpcmUuc2l6ZSgpKSkpOwogCi0gIGVuY29kZSgpOworICBuZG46OlNpZ25hdHVyZUluZm8gc2lnbmF0dXJlSW5mbzsKKyAgc2lnbmF0dXJlSW5mby5hZGRDdXN0b21UbHYoZGVzY3JpcHRpb24ud2lyZUVuY29kZSgpKTsKKyAgc2lnbmF0dXJlSW5mby5hZGRDdXN0b21UbHYobV9wcm9maWxlLndpcmVFbmNvZGUoKSk7CisKKyAgaWYgKG1fZW5kb3JzZUxpc3Quc2l6ZSgpID4gMCkKKyAgICBzaWduYXR1cmVJbmZvLmFkZEN1c3RvbVRsdihlbmRvcnNlRXh0ZW5zaW9uLndpcmVFbmNvZGUoKSk7CisKKyAgc2lnbmF0dXJlSW5mby5zZXRWYWxpZGl0eVBlcmlvZChuZG46OnNlY3VyaXR5OjpWYWxpZGl0eVBlcmlvZChub3RCZWZvcmUsIG5vdEFmdGVyKSk7CisKKyAgc2V0U2lnbmF0dXJlSW5mbyhzaWduYXR1cmVJbmZvKTsKIH0KIAogRW5kb3JzZUNlcnRpZmljYXRlOjpFbmRvcnNlQ2VydGlmaWNhdGUoY29uc3QgRW5kb3JzZUNlcnRpZmljYXRlJiBlbmRvcnNlQ2VydGlmaWNhdGUpCiAgIDogQ2VydGlmaWNhdGUoZW5kb3JzZUNlcnRpZmljYXRlKQotICAsIG1fa2V5TmFtZShlbmRvcnNlQ2VydGlmaWNhdGUubV9rZXlOYW1lKQogICAsIG1fc2lnbmVyKGVuZG9yc2VDZXJ0aWZpY2F0ZS5tX3NpZ25lcikKICAgLCBtX3Byb2ZpbGUoZW5kb3JzZUNlcnRpZmljYXRlLm1fcHJvZmlsZSkKICAgLCBtX2VuZG9yc2VMaXN0KGVuZG9yc2VDZXJ0aWZpY2F0ZS5tX2VuZG9yc2VMaXN0KQpAQCAtMTYxLDI1ICsxODEsMjIgQEAKIEVuZG9yc2VDZXJ0aWZpY2F0ZTo6RW5kb3JzZUNlcnRpZmljYXRlKGNvbnN0IERhdGEmIGRhdGEpCiAgIDogQ2VydGlmaWNhdGUoZGF0YSkKIHsKLSAgY29uc3QgTmFtZSYgZGF0YU5hbWUgPSBkYXRhLmdldE5hbWUoKTsKIAotICBpZihkYXRhTmFtZS5zaXplKCkgPCAzIHx8IGRhdGFOYW1lLmdldCgtMykudG9VcmkoKSAhPSAiUFJPRklMRS1DRVJUIikKLSAgICB0aHJvdyBFcnJvcigiTm8gUFJPRklMRS1DRVJUIGNvbXBvbmVudCBpbiBkYXRhIG5hbWUhIik7CisgIGF1dG8gYWRkaXRpb25hbFdpcmUgPSBnZXRTaWduYXR1cmVJbmZvKCkuZ2V0Q3VzdG9tVGx2KHRsdjo6QWRkaXRpb25hbERlc2NyaXB0aW9uKTsKKyAgaWYgKGFkZGl0aW9uYWxXaXJlKSB7CisgICAgbmRuOjpzZWN1cml0eTo6QWRkaXRpb25hbERlc2NyaXB0aW9uIGFkZGl0aW9uYWwoKmFkZGl0aW9uYWxXaXJlKTsKKyAgICBtX3NpZ25lciA9IGFkZGl0aW9uYWwuZ2V0KCJzaWduZXIiKTsKKyAgfQogCi0gIG1fa2V5TmFtZSA9IGRhdGFOYW1lLmdldFByZWZpeCgtMyk7Ci0gIG1fc2lnbmVyLndpcmVEZWNvZGUoZGF0YU5hbWUuZ2V0KC0yKS5ibG9ja0Zyb21WYWx1ZSgpKTsKKyAgYXV0byBwcm9maWxlV2lyZSA9IGdldFNpZ25hdHVyZUluZm8oKS5nZXRDdXN0b21UbHYodGx2OjpQcm9maWxlKTsKKyAgaWYgKHByb2ZpbGVXaXJlKSB7CisgICAgbV9wcm9maWxlID0gUHJvZmlsZSgqcHJvZmlsZVdpcmUpOworICB9CiAKLQotICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9leHRlbnNpb25MaXN0KSB7Ci0gICAgaWYgKFBST0ZJTEVfRVhUX09JRCA9PSBlbnRyeS5nZXRPaWQoKSkgewotICAgICAgbV9wcm9maWxlLndpcmVEZWNvZGUoQmxvY2soZW50cnkuZ2V0VmFsdWUoKS5idWYoKSwgZW50cnkuZ2V0VmFsdWUoKS5zaXplKCkpKTsKLSAgICB9Ci0gICAgaWYgKEVORE9SU0VfRVhUX09JRCA9PSBlbnRyeS5nZXRPaWQoKSkgewotICAgICAgRW5kb3JzZUV4dGVuc2lvbiBlbmRvcnNlRXh0ZW5zaW9uOwotICAgICAgZW5kb3JzZUV4dGVuc2lvbi53aXJlRGVjb2RlKEJsb2NrKGVudHJ5LmdldFZhbHVlKCkuYnVmKCksIGVudHJ5LmdldFZhbHVlKCkuc2l6ZSgpKSk7Ci0KLSAgICAgIGVuZG9yc2VFeHRlbnNpb24gPj4gbV9lbmRvcnNlTGlzdDsKLSAgICB9CisgIGF1dG8gZW5kb3JzZUV4dGVuc2lvbkJsb2NrID0gZ2V0U2lnbmF0dXJlSW5mbygpLmdldEN1c3RvbVRsdih0bHY6OkVuZG9yc2VFeHRlbnNpb24pOworICBpZiAoZW5kb3JzZUV4dGVuc2lvbkJsb2NrKSB7CisgICAgRW5kb3JzZUV4dGVuc2lvbiBlbmRvcnNlRXh0ZW5zaW9uKCplbmRvcnNlRXh0ZW5zaW9uQmxvY2spOworICAgIGVuZG9yc2VFeHRlbnNpb24gPj4gbV9lbmRvcnNlTGlzdDsKICAgfQogfQogCmRpZmYgLS1naXQgYS9zcmMvZW5kb3JzZS1jZXJ0aWZpY2F0ZS5ocHAgYi9zcmMvZW5kb3JzZS1jZXJ0aWZpY2F0ZS5ocHAKaW5kZXggNTFiM2I1MC4uZGVmYzhhOCAxMDA2NDQKLS0tIGEvc3JjL2VuZG9yc2UtY2VydGlmaWNhdGUuaHBwCisrKyBiL3NyYy9lbmRvcnNlLWNlcnRpZmljYXRlLmhwcApAQCAtMTYsMTQgKzE2LDE0IEBACiAKIG5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKIAotY2xhc3MgRW5kb3JzZUNlcnRpZmljYXRlIDogcHVibGljIG5kbjo6Q2VydGlmaWNhdGUKK2NsYXNzIEVuZG9yc2VDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZQogewogcHVibGljOgotICBjbGFzcyBFcnJvciA6IHB1YmxpYyBuZG46OkNlcnRpZmljYXRlOjpFcnJvcgorICBjbGFzcyBFcnJvciA6IHB1YmxpYyBuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZTo6RXJyb3IKICAgewogICBwdWJsaWM6CiAgICAgRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmIHdoYXQpCi0gICAgICA6IG5kbjo6Q2VydGlmaWNhdGU6OkVycm9yKHdoYXQpCisgICAgICA6IG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlOjpFcnJvcih3aGF0KQogICAgIHsKICAgICB9CiAgIH07CkBAIC0zMiw3ICszMiw3IEBACiAKICAgRW5kb3JzZUNlcnRpZmljYXRlKCkge30KIAotICBFbmRvcnNlQ2VydGlmaWNhdGUoY29uc3QgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlJiBrc2tDZXJ0aWZpY2F0ZSwKKyAgRW5kb3JzZUNlcnRpZmljYXRlKGNvbnN0IG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlJiBrc2tDZXJ0aWZpY2F0ZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2ZpbGUmIHByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGVuZG9yc2VMaXN0ID0gREVGQVVMVF9FTkRPUlNFX0xJU1QpOwogCkBAIC00MSw5ICs0MSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBlbmRvcnNlTGlzdCA9IERFRkFVTFRfRU5ET1JTRV9MSVNUKTsKIAogICBFbmRvcnNlQ2VydGlmaWNhdGUoY29uc3QgTmFtZSYga2V5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbjo6UHVibGljS2V5JiBrZXksCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG46OkJ1ZmZlciYga2V5LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZTo6c3lzdGVtX2Nsb2NrOjpUaW1lUG9pbnQmIG5vdEJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWU6OnN5c3RlbV9jbG9jazo6VGltZVBvaW50JiBub3RBZnRlciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWU6OkNvbXBvbmVudCYgc2lnbmVyS2V5SWQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lJiBzaWduZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9maWxlJiBwcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBlbmRvcnNlTGlzdCA9IERFRkFVTFRfRU5ET1JTRV9MSVNUKTsKQEAgLTc1LDIxICs3NiwxMCBAQAogICAgIHJldHVybiBtX2VuZG9yc2VMaXN0OwogICB9CiAKLSAgY29uc3QgTmFtZSYKLSAgZ2V0UHVibGljS2V5TmFtZSAoKSBjb25zdAotICB7Ci0gICAgcmV0dXJuIG1fa2V5TmFtZTsKLSAgfQotCiBwcml2YXRlOgotICBzdGF0aWMgY29uc3QgbmRuOjpPSUQgUFJPRklMRV9FWFRfT0lEOwotICBzdGF0aWMgY29uc3QgbmRuOjpPSUQgRU5ET1JTRV9FWFRfT0lEOwotCi0gIE5hbWUgbV9rZXlOYW1lOwotICBOYW1lIG1fc2lnbmVyOyAvLyBzaWduaW5nIGtleSBuYW1lCisgIE5hbWUgbV9zaWduZXI7CiAgIFByb2ZpbGUgbV9wcm9maWxlOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbV9lbmRvcnNlTGlzdDsKLQogfTsKIAogfSAvLyBuYW1lc3BhY2UgY2hyb25vY2hhdApkaWZmIC0tZ2l0IGEvc3JjL2VuZG9yc2UtY29sbGVjdGlvbi5jcHAgYi9zcmMvZW5kb3JzZS1jb2xsZWN0aW9uLmNwcAppbmRleCBjOGRhZmU2Li45YjkzN2E3IDEwMDY0NAotLS0gYS9zcmMvZW5kb3JzZS1jb2xsZWN0aW9uLmNwcAorKysgYi9zcmMvZW5kb3JzZS1jb2xsZWN0aW9uLmNwcApAQCAtMjMsNyArMjMsNyBAQAogICB0aGlzLT53aXJlRGVjb2RlKGVuZG9yc2VXaXJlKTsKIH0KIAotdGVtcGxhdGU8Ym9vbCBUPgordGVtcGxhdGU8bmRuOjplbmNvZGluZzo6VGFnIFQ+CiBzaXplX3QKIEVuZG9yc2VDb2xsZWN0aW9uOjp3aXJlRW5jb2RlKG5kbjo6RW5jb2RpbmdJbXBsPFQ+JiBibG9jaykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL3NyYy9lbmRvcnNlLWNvbGxlY3Rpb24uaHBwIGIvc3JjL2VuZG9yc2UtY29sbGVjdGlvbi5ocHAKaW5kZXggNDJhMDk3OS4uZGQxNmJjMyAxMDA2NDQKLS0tIGEvc3JjL2VuZG9yc2UtY29sbGVjdGlvbi5ocHAKKysrIGIvc3JjL2VuZG9yc2UtY29sbGVjdGlvbi5ocHAKQEAgLTYwLDcgKzYwLDcgQEAKICAgYWRkQ29sbGVjdGlvbkVudHJ5KGNvbnN0IE5hbWUmIGNlcnROYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgaGFzaCk7CiAKIHByaXZhdGU6Ci0gIHRlbXBsYXRlPGJvb2wgVD4KKyAgdGVtcGxhdGU8bmRuOjplbmNvZGluZzo6VGFnIFQ+CiAgIHNpemVfdAogICB3aXJlRW5jb2RlKG5kbjo6RW5jb2RpbmdJbXBsPFQ+JiBibG9jaykgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9lbmRvcnNlLWNvbWJvYm94LWRlbGVnYXRlLmNwcCBiL3NyYy9lbmRvcnNlLWNvbWJvYm94LWRlbGVnYXRlLmNwcAppbmRleCAxODg4YmFmLi4zMTkxMzVhIDEwMDY0NAotLS0gYS9zcmMvZW5kb3JzZS1jb21ib2JveC1kZWxlZ2F0ZS5jcHAKKysrIGIvc3JjL2VuZG9yc2UtY29tYm9ib3gtZGVsZWdhdGUuY3BwCkBAIC02OCw3ICs2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0mIG9wdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgpIGNvbnN0CiB7Ci0gIFFTdHlsZU9wdGlvblZpZXdJdGVtVjQgbXlPcHRpb24gPSBvcHRpb247CisgIFFTdHlsZU9wdGlvblZpZXdJdGVtIG15T3B0aW9uID0gb3B0aW9uOwogICBRU3RyaW5nIHRleHQgPSBtX2l0ZW1zW2luZGV4Lm1vZGVsKCktPmRhdGEoaW5kZXgsIFF0OjpFZGl0Um9sZSkudG9VSW50KCldLmNfc3RyKCk7CiAKICAgbXlPcHRpb24udGV4dCA9IHRleHQ7CmRpZmYgLS1naXQgYS9zcmMvZW5kb3JzZS1leHRlbnNpb24uY3BwIGIvc3JjL2VuZG9yc2UtZXh0ZW5zaW9uLmNwcAppbmRleCBhYzg2MmFjLi4wYzlmNmM0IDEwMDY0NAotLS0gYS9zcmMvZW5kb3JzZS1leHRlbnNpb24uY3BwCisrKyBiL3NyYy9lbmRvcnNlLWV4dGVuc2lvbi5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICAgdGhpcy0+d2lyZURlY29kZShlbmRvcnNlV2lyZSk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgVD4KK3RlbXBsYXRlPG5kbjo6ZW5jb2Rpbmc6OlRhZyBUPgogc2l6ZV90CiBFbmRvcnNlRXh0ZW5zaW9uOjp3aXJlRW5jb2RlKG5kbjo6RW5jb2RpbmdJbXBsPFQ+JiBibG9jaykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL3NyYy9lbmRvcnNlLWV4dGVuc2lvbi5ocHAgYi9zcmMvZW5kb3JzZS1leHRlbnNpb24uaHBwCmluZGV4IDg0NGM1NWMuLmM4YmQxMWUgMTAwNjQ0Ci0tLSBhL3NyYy9lbmRvcnNlLWV4dGVuc2lvbi5ocHAKKysrIGIvc3JjL2VuZG9yc2UtZXh0ZW5zaW9uLmhwcApAQCAtNTcsNyArNTcsNyBAQAogICByZW1vdmVFbnRyeShjb25zdCBzdGQ6OnN0cmluZyYgZW50cnkpOwogCiBwcml2YXRlOgotICB0ZW1wbGF0ZTxib29sIFQ+CisgIHRlbXBsYXRlPG5kbjo6ZW5jb2Rpbmc6OlRhZyBUPgogICBzaXplX3QKICAgd2lyZUVuY29kZShuZG46OkVuY29kaW5nSW1wbDxUPiYgYmxvY2spIGNvbnN0OwogCmRpZmYgLS1naXQgYS9zcmMvZW5kb3JzZS1pbmZvLmNwcCBiL3NyYy9lbmRvcnNlLWluZm8uY3BwCmluZGV4IDk4NWMzMDQuLjFhYTkzODUgMTAwNjQ0Ci0tLSBhL3NyYy9lbmRvcnNlLWluZm8uY3BwCisrKyBiL3NyYy9lbmRvcnNlLWluZm8uY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgIHRoaXMtPndpcmVEZWNvZGUoZW5kb3JzZVdpcmUpOwogfQogCi10ZW1wbGF0ZTxib29sIFQ+Cit0ZW1wbGF0ZTxuZG46OmVuY29kaW5nOjpUYWcgVD4KIHNpemVfdAogRW5kb3JzZUluZm86OndpcmVFbmNvZGUobmRuOjpFbmNvZGluZ0ltcGw8VD4mIGJsb2NrKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvc3JjL2VuZG9yc2UtaW5mby5ocHAgYi9zcmMvZW5kb3JzZS1pbmZvLmhwcAppbmRleCA5MjFlNzExLi5hNzk0YzYzIDEwMDY0NAotLS0gYS9zcmMvZW5kb3JzZS1pbmZvLmhwcAorKysgYi9zcmMvZW5kb3JzZS1pbmZvLmhwcApAQCAtNjAsNyArNjAsNyBAQAogICBhZGRFbmRvcnNlbWVudChjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLCBjb25zdCBzdGQ6OnN0cmluZyYgY291bnQpOwogCiBwcml2YXRlOgotICB0ZW1wbGF0ZTxib29sIFQ+CisgIHRlbXBsYXRlPG5kbjo6ZW5jb2Rpbmc6OlRhZyBUPgogICBzaXplX3QKICAgd2lyZUVuY29kZShuZG46OkVuY29kaW5nSW1wbDxUPiYgYmxvY2spIGNvbnN0OwogCmRpZmYgLS1naXQgYS9zcmMvaW52aXRhdGlvbi5jcHAgYi9zcmMvaW52aXRhdGlvbi5jcHAKaW5kZXggZjMxMWFkMC4uZTdkMmFjNSAxMDA2NDQKLS0tIGEvc3JjL2ludml0YXRpb24uY3BwCisrKyBiL3NyYy9pbnZpdGF0aW9uLmNwcApAQCAtMTgsNyArMTgsNyBAQAogCiB1c2luZyBzdGQ6OnN0cmluZzsKIAotdXNpbmcgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlOwordXNpbmcgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGU7CiAKIGNvbnN0IHNpemVfdCAgSW52aXRhdGlvbjo6TkFNRV9TSVpFX01JTiAgICAgICAgID0gNzsKIGNvbnN0IHNzaXplX3QgSW52aXRhdGlvbjo6U0lHTkFUVVJFICAgICAgICAgICAgID0gLTE7CkBAIC01MSw3ICs1MSw3IEBACiBJbnZpdGF0aW9uOjpJbnZpdGF0aW9uKGNvbnN0IE5hbWUmIGludml0ZWVOYW1lU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgY2hhdHJvb20sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWUmIGludml0ZXJSb3V0aW5nUHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGl0eUNlcnRpZmljYXRlJiBpbnZpdGVyQ2VydGlmaWNhdGUpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENlcnRpZmljYXRlJiBpbnZpdGVyQ2VydGlmaWNhdGUpCiAgIDogbV9pbnZpdGVlTmFtZVNwYWNlKGludml0ZWVOYW1lU3BhY2UpCiAgICwgbV9jaGF0cm9vbShjaGF0cm9vbSkKICAgLCBtX2ludml0ZXJSb3V0aW5nUHJlZml4KGludml0ZXJSb3V0aW5nUHJlZml4KQpkaWZmIC0tZ2l0IGEvc3JjL2ludml0YXRpb24uaHBwIGIvc3JjL2ludml0YXRpb24uaHBwCmluZGV4IGY3OTY3ZWQuLmM5ZDM3MzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnZpdGF0aW9uLmhwcAorKysgYi9zcmMvaW52aXRhdGlvbi5ocHAKQEAgLTE0LDcgKzE0LDcgQEAKIAogI2luY2x1ZGUgImNvbW1vbi5ocHAiCiAKLSNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2lkZW50aXR5LWNlcnRpZmljYXRlLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2NlcnRpZmljYXRlLmhwcD4KIAogbmFtZXNwYWNlIGNocm9ub2NoYXQgewogCkBAIC01OCw3ICs1OCw3IEBACiAgIEludml0YXRpb24oY29uc3QgTmFtZSYgaW52aXRlZU5hbWVTcGFjZSwKICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2hhdHJvb20sCiAgICAgICAgICAgICAgY29uc3QgTmFtZSYgaW52aXRlclJvdXRpbmdQcmVmaXgsCi0gICAgICAgICAgICAgY29uc3QgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlJiBpbnZpdGVyQ2VydGlmaWNhdGUpOworICAgICAgICAgICAgIGNvbnN0IG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlJiBpbnZpdGVyQ2VydGlmaWNhdGUpOwogCiAgIEludml0YXRpb24oY29uc3QgSW52aXRhdGlvbiYgaW52aXRhdGlvbik7CiAKQEAgLTg1LDcgKzg1LDcgQEAKICAgICByZXR1cm4gbV9pbnZpdGVyUm91dGluZ1ByZWZpeDsKICAgfQogCi0gIGNvbnN0IG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZSYKKyAgY29uc3QgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUmCiAgIGdldEludml0ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0CiAgIHsKICAgICByZXR1cm4gbV9pbnZpdGVyQ2VydGlmaWNhdGU7CkBAIC0xMDksNyArMTA5LDcgQEAKICAgTmFtZSBtX2ludml0ZWVOYW1lU3BhY2U7CiAgIHN0ZDo6c3RyaW5nIG1fY2hhdHJvb207CiAgIE5hbWUgbV9pbnZpdGVyUm91dGluZ1ByZWZpeDsKLSAgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlIG1faW52aXRlckNlcnRpZmljYXRlOworICBuZG46OnNlY3VyaXR5OjpDZXJ0aWZpY2F0ZSBtX2ludml0ZXJDZXJ0aWZpY2F0ZTsKICAgdWludDY0X3QgbV90aW1lc3RhbXA7CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jcHAgYi9zcmMvbWFpbi5jcHAKaW5kZXggOTY3NDE0Ni4uOTBmMWQ5ZCAxMDA2NDQKLS0tIGEvc3JjL21haW4uY3BwCisrKyBiL3NyYy9tYWluLmNwcApAQCAtMTAsMTAgKzEwLDkgQEAKIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRVGV4dENvZGVjPgotLy8gI2luY2x1ZGUgPFFTeXN0ZW1UcmF5SWNvbj4KIAogI2luY2x1ZGUgImNvbnRyb2xsZXIuaHBwIgotI2luY2x1ZGUgImxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDxuZG4tY3h4L2ZhY2UuaHBwPgogI2luY2x1ZGUgPGJvb3N0L3RocmVhZC90aHJlYWQuaHBwPgogCkBAIC00Myw5ICs0Miw2IEBACiB7CiAgIE5ld0FwcCBhcHAoYXJnYywgYXJndik7CiAKLSAgUVRleHRDb2RlYzo6c2V0Q29kZWNGb3JDU3RyaW5ncyhRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVURi04IikpOwotICBRVGV4dENvZGVjOjpzZXRDb2RlY0ZvclRyKFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKSk7Ci0KICAgY2hyb25vY2hhdDo6Q29udHJvbGxlciBjb250cm9sbGVyOwogCiAgIGFwcC5zZXRRdWl0T25MYXN0V2luZG93Q2xvc2VkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9uZmQtY29ubmVjdGlvbi1jaGVja2VyLmNwcCBiL3NyYy9uZmQtY29ubmVjdGlvbi1jaGVja2VyLmNwcAppbmRleCAwMjNjMGIyLi5lZGE3MTk3IDEwMDY0NAotLS0gYS9zcmMvbmZkLWNvbm5lY3Rpb24tY2hlY2tlci5jcHAKKysrIGIvc3JjL25mZC1jb25uZWN0aW9uLWNoZWNrZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCwgY29uc3QgRGF0YSYgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZhY2UtPnNodXRkb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpIHt9KTsKICAgICAgIG1fZmFjZS0+cHJvY2Vzc0V2ZW50cyh0aW1lOjptaWxsaXNlY29uZHM6Onplcm8oKSwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3Byb2ZpbGUtZWRpdG9yLmNwcCBiL3NyYy9wcm9maWxlLWVkaXRvci5jcHAKaW5kZXggYTU1YTEyYy4uZjBiMDY3ZCAxMDA2NDQKLS0tIGEvc3JjL3Byb2ZpbGUtZWRpdG9yLmNwcAorKysgYi9zcmMvcHJvZmlsZS1lZGl0b3IuY3BwCkBAIC00MCwyNiArNDAsMzEgQEAKIFByb2ZpbGVFZGl0b3I6On5Qcm9maWxlRWRpdG9yKCkKIHsKICAgICBkZWxldGUgdWk7Ci0gICAgZGVsZXRlIG1fdGFibGVNb2RlbDsKKworICAgIGlmIChtX3RhYmxlTW9kZWwpCisgICAgICBkZWxldGUgbV90YWJsZU1vZGVsOwogfQogCiB2b2lkCiBQcm9maWxlRWRpdG9yOjpvbkNsb3NlREJNb2R1bGUoKQogewotICAvLyBfTE9HX0RFQlVHKCJjbG9zZSBkYiBtb2R1bGUiKTsKICAgaWYgKG1fdGFibGVNb2RlbCkgewogICAgIGRlbGV0ZSBtX3RhYmxlTW9kZWw7Ci0gICAgLy8gX0xPR19ERUJVRygidGFibGVNb2RlbCBjbG9zZWQiKTsKKyAgICBtX3RhYmxlTW9kZWwgPSAwOwogICB9CiB9CiAKIHZvaWQKIFByb2ZpbGVFZGl0b3I6Om9uSWRlbnRpdHlVcGRhdGVkKGNvbnN0IFFTdHJpbmcmIGlkZW50aXR5KQogewotICBtX3RhYmxlTW9kZWwgPSBuZXcgUVNxbFRhYmxlTW9kZWwoKTsKLQogICBtX2lkZW50aXR5ID0gaWRlbnRpdHk7CiAgIHVpLT5pZGVudGl0eUlucHV0LT5zZXRUZXh0KGlkZW50aXR5KTsKK30KKwordm9pZAorUHJvZmlsZUVkaXRvcjo6cmVzZXRQYW5lbCgpCit7CisgIG1fdGFibGVNb2RlbCA9IG5ldyBRU3FsVGFibGVNb2RlbCgpOwogCiAgIG1fdGFibGVNb2RlbC0+c2V0RWRpdFN0cmF0ZWd5KFFTcWxUYWJsZU1vZGVsOjpPbk1hbnVhbFN1Ym1pdCk7CiAgIG1fdGFibGVNb2RlbC0+c2V0VGFibGUoIlNlbGZQcm9maWxlIik7CmRpZmYgLS1naXQgYS9zcmMvcHJvZmlsZS1lZGl0b3IuaHBwIGIvc3JjL3Byb2ZpbGUtZWRpdG9yLmhwcAppbmRleCA1MzIzZjVjLi5hMThmOGZjIDEwMDY0NAotLS0gYS9zcmMvcHJvZmlsZS1lZGl0b3IuaHBwCisrKyBiL3NyYy9wcm9maWxlLWVkaXRvci5ocHAKQEAgLTM5LDYgKzM5LDkgQEAKICAgdm9pZAogICBvbklkZW50aXR5VXBkYXRlZChjb25zdCBRU3RyaW5nJiBpZGVudGl0eSk7CiAKKyAgdm9pZAorICByZXNldFBhbmVsKCk7CisKIHByaXZhdGUgc2xvdHM6CiAgIHZvaWQKICAgb25BZGRDbGlja2VkKCk7CmRpZmYgLS1naXQgYS9zcmMvcHJvZmlsZS5jcHAgYi9zcmMvcHJvZmlsZS5jcHAKaW5kZXggMzhmN2I2My4uZGM4OWZhOSAxMDA2NDQKLS0tIGEvc3JjL3Byb2ZpbGUuY3BwCisrKyBiL3NyYy9wcm9maWxlLmNwcApAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSAicHJvZmlsZS5ocHAiCiAjaW5jbHVkZSAibG9nZ2luZy5oIgorI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvYWRkaXRpb25hbC1kZXNjcmlwdGlvbi5ocHA+CiAKIG5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKIApAQCAtMTgsOCArMTksNyBAQAogdXNpbmcgc3RkOjpzdHJpbmc7CiB1c2luZyBzdGQ6Om1hcDsKIAotdXNpbmcgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlOwotdXNpbmcgbmRuOjpDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbjsKK3VzaW5nIG5kbjo6c2VjdXJpdHk6OkNlcnRpZmljYXRlOwogCiBjb25zdCBzdGQ6OnN0cmluZyBQcm9maWxlOjpPSURfTkFNRSgiMi41LjQuNDEiKTsKIGNvbnN0IHN0ZDo6c3RyaW5nIFByb2ZpbGU6Ok9JRF9PUkcoIjIuNS40LjExIik7CkBAIC0yOCwzMyArMjgsMzQgQEAKIGNvbnN0IHN0ZDo6c3RyaW5nIFByb2ZpbGU6Ok9JRF9BRFZJU09SKCIyLjUuNC44MCIpOwogY29uc3Qgc3RkOjpzdHJpbmcgUHJvZmlsZTo6T0lEX0VNQUlMKCIxLjIuODQwLjExMzU0OS4xLjkuMSIpOwogCi1Qcm9maWxlOjpQcm9maWxlKGNvbnN0IElkZW50aXR5Q2VydGlmaWNhdGUmIGlkZW50aXR5Q2VydGlmaWNhdGUpCitQcm9maWxlOjpQcm9maWxlKGNvbnN0IENlcnRpZmljYXRlJiBpZGVudGl0eUNlcnRpZmljYXRlKQogewotICBOYW1lIGtleU5hbWUgPSBJZGVudGl0eUNlcnRpZmljYXRlOjpjZXJ0aWZpY2F0ZU5hbWVUb1B1YmxpY0tleU5hbWUoaWRlbnRpdHlDZXJ0aWZpY2F0ZS5nZXROYW1lKCkpOworICBOYW1lIGtleU5hbWUgPSBpZGVudGl0eUNlcnRpZmljYXRlLmdldEtleU5hbWUoKTsKIAotICBtX2VudHJpZXNbc3RyaW5nKCJJREVOVElUWSIpXSA9IGtleU5hbWUuZ2V0UHJlZml4KC0xKS50b1VyaSgpOworICBtX2VudHJpZXNbc3RyaW5nKCJJREVOVElUWSIpXSA9IGtleU5hbWUuZ2V0UHJlZml4KC0yKS50b1VyaSgpOwogCi0gIGNvbnN0IHZlY3RvcjxDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbj4mIHN1Ykxpc3QgPQotICAgIGlkZW50aXR5Q2VydGlmaWNhdGUuZ2V0U3ViamVjdERlc2NyaXB0aW9uTGlzdCgpOworICBhdXRvIGFkZGl0aW9uYWxXaXJlID0gaWRlbnRpdHlDZXJ0aWZpY2F0ZS5nZXRTaWduYXR1cmVJbmZvKCkuZ2V0Q3VzdG9tVGx2KHRsdjo6QWRkaXRpb25hbERlc2NyaXB0aW9uKTsKKyAgaWYgKGFkZGl0aW9uYWxXaXJlKSB7CisgICAgbmRuOjpzZWN1cml0eTo6QWRkaXRpb25hbERlc2NyaXB0aW9uIGFkZGl0aW9uYWwoKmFkZGl0aW9uYWxXaXJlKTsKIAotICBmb3IgKHZlY3RvcjxDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3ViTGlzdC5iZWdpbigpOwotICAgICAgIGl0ICE9IHN1Ykxpc3QuZW5kKCk7IGl0KyspIHsKLSAgICBjb25zdCBzdHJpbmcgb2lkU3RyID0gaXQtPmdldE9pZFN0cmluZygpOwotICAgIHN0cmluZyB2YWx1ZVN0ciA9IGl0LT5nZXRWYWx1ZSgpOwotICAgIGlmIChvaWRTdHIgPT0gT0lEX05BTUUpCi0gICAgICBtX2VudHJpZXNbIm5hbWUiXSA9IHZhbHVlU3RyOwotICAgIGVsc2UgaWYgKG9pZFN0ciA9PSBPSURfT1JHKQotICAgICAgbV9lbnRyaWVzWyJpbnN0aXR1dGlvbiJdID0gdmFsdWVTdHI7Ci0gICAgZWxzZSBpZiAob2lkU3RyID09IE9JRF9HUk9VUCkKLSAgICAgIG1fZW50cmllc1siZ3JvdXAiXSA9IHZhbHVlU3RyOwotICAgIGVsc2UgaWYgKG9pZFN0ciA9PSBPSURfSE9NRVBBR0UpCi0gICAgICBtX2VudHJpZXNbImhvbWVwYWdlIl0gPSB2YWx1ZVN0cjsKLSAgICBlbHNlIGlmIChvaWRTdHIgPT0gT0lEX0FEVklTT1IpCi0gICAgICBtX2VudHJpZXNbImFkdmlzb3IiXSA9IHZhbHVlU3RyOwotICAgIGVsc2UgaWYgKG9pZFN0ciA9PSBPSURfRU1BSUwpCi0gICAgICBtX2VudHJpZXNbImVtYWlsIl0gPSB2YWx1ZVN0cjsKLSAgICBlbHNlCi0gICAgICBtX2VudHJpZXNbb2lkU3RyXSA9IHZhbHVlU3RyOworICAgIGZvciAoYXV0byBpdCA9IGFkZGl0aW9uYWwuYmVnaW4oKTsgaXQgIT0gYWRkaXRpb25hbC5lbmQoKTsgaXQrKykgeworICAgICAgY29uc3Qgc3RyaW5nIG9pZFN0ciA9IGl0LT5maXJzdDsKKyAgICAgIHN0cmluZyB2YWx1ZVN0ciA9IGl0LT5zZWNvbmQ7CisgICAgICBpZiAob2lkU3RyID09IE9JRF9OQU1FKQorICAgICAgICBtX2VudHJpZXNbIm5hbWUiXSA9IHZhbHVlU3RyOworICAgICAgZWxzZSBpZiAob2lkU3RyID09IE9JRF9PUkcpCisgICAgICAgIG1fZW50cmllc1siaW5zdGl0dXRpb24iXSA9IHZhbHVlU3RyOworICAgICAgZWxzZSBpZiAob2lkU3RyID09IE9JRF9HUk9VUCkKKyAgICAgICAgbV9lbnRyaWVzWyJncm91cCJdID0gdmFsdWVTdHI7CisgICAgICBlbHNlIGlmIChvaWRTdHIgPT0gT0lEX0hPTUVQQUdFKQorICAgICAgICBtX2VudHJpZXNbImhvbWVwYWdlIl0gPSB2YWx1ZVN0cjsKKyAgICAgIGVsc2UgaWYgKG9pZFN0ciA9PSBPSURfQURWSVNPUikKKyAgICAgICAgbV9lbnRyaWVzWyJhZHZpc29yIl0gPSB2YWx1ZVN0cjsKKyAgICAgIGVsc2UgaWYgKG9pZFN0ciA9PSBPSURfRU1BSUwpCisgICAgICAgIG1fZW50cmllc1siZW1haWwiXSA9IHZhbHVlU3RyOworICAgICAgZWxzZQorICAgICAgICBtX2VudHJpZXNbb2lkU3RyXSA9IHZhbHVlU3RyOworICAgIH0KICAgfQogfQogCkBAIC03Nyw3ICs3OCwxMiBAQAogewogfQogCi10ZW1wbGF0ZTxib29sIFQ+CitQcm9maWxlOjpQcm9maWxlKGNvbnN0IEJsb2NrJiBwcm9maWxlV2lyZSkKK3sKKyAgdGhpcy0+d2lyZURlY29kZShwcm9maWxlV2lyZSk7Cit9CisKK3RlbXBsYXRlPG5kbjo6ZW5jb2Rpbmc6OlRhZyBUPgogc2l6ZV90CiBQcm9maWxlOjp3aXJlRW5jb2RlKG5kbjo6RW5jb2RpbmdJbXBsPFQ+JiBibG9jaykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL3NyYy9wcm9maWxlLmhwcCBiL3NyYy9wcm9maWxlLmhwcAppbmRleCBhODlhODAwLi40M2RiYTk2IDEwMDY0NAotLS0gYS9zcmMvcHJvZmlsZS5ocHAKKysrIGIvc3JjL3Byb2ZpbGUuaHBwCkBAIC0xOCw3ICsxOCw3IEBACiAjaW5jbHVkZSA8bmRuLWN4eC91dGlsL2NvbmNlcHRzLmhwcD4KICNpbmNsdWRlIDxuZG4tY3h4L2VuY29kaW5nL2Jsb2NrLmhwcD4KICNpbmNsdWRlIDxuZG4tY3h4L2VuY29kaW5nL2VuY29kaW5nLWJ1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS9pZGVudGl0eS1jZXJ0aWZpY2F0ZS5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS9jZXJ0aWZpY2F0ZS5ocHA+CiAKIG5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKIApAQCAtNDQsNyArNDQsNyBAQAogICB7CiAgIH0KIAotICBQcm9maWxlKGNvbnN0IG5kbjo6SWRlbnRpdHlDZXJ0aWZpY2F0ZSYgaWRlbnRpdHlDZXJ0aWZpY2F0ZSk7CisgIFByb2ZpbGUoY29uc3QgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGUmIGlkZW50aXR5Q2VydGlmaWNhdGUpOwogCiAgIFByb2ZpbGUoY29uc3QgTmFtZSYgaWRlbnRpdHlOYW1lKTsKIApAQCAtNTQsNiArNTQsOCBAQAogCiAgIFByb2ZpbGUoY29uc3QgUHJvZmlsZSYgcHJvZmlsZSk7CiAKKyAgUHJvZmlsZShjb25zdCBCbG9jayYgcHJvZmlsZVdpcmUpOworCiAgIH5Qcm9maWxlKCkKICAgewogICB9CkBAIC0xMTcsNyArMTE5LDcgQEAKICAgb3BlcmF0b3IhPShjb25zdCBQcm9maWxlJiBwcm9maWxlKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgdGVtcGxhdGU8Ym9vbCBUPgorICB0ZW1wbGF0ZTxuZG46OmVuY29kaW5nOjpUYWcgVD4KICAgc2l6ZV90CiAgIHdpcmVFbmNvZGUobmRuOjpFbmNvZGluZ0ltcGw8VD4mIGJsb2NrKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvc3JjL3RyZWUtbGF5b3V0LmNwcCBiL3NyYy90cmVlLWxheW91dC5jcHAKaW5kZXggMTY2MDE5Zi4uOWJmMzYyNyAxMDA2NDQKLS0tIGEvc3JjL3RyZWUtbGF5b3V0LmNwcAorKysgYi9zcmMvdHJlZS1sYXlvdXQuY3BwCkBAIC0xMSw3ICsxMSw2IEBACiAgKi8KIAogI2luY2x1ZGUgInRyZWUtbGF5b3V0LmhwcCIKLSNpbmNsdWRlIDxpb3N0cmVhbT4KIAogbmFtZXNwYWNlIGNocm9ub2NoYXQgewogCmRpZmYgLS1naXQgYS9zcmMvdHJ1c3QtdHJlZS1zY2VuZS5jcHAgYi9zcmMvdHJ1c3QtdHJlZS1zY2VuZS5jcHAKaW5kZXggNzE4YjIwNy4uM2EyMzcxOCAxMDA2NDQKLS0tIGEvc3JjL3RydXN0LXRyZWUtc2NlbmUuY3BwCisrKyBiL3NyYy90cnVzdC10cmVlLXNjZW5lLmNwcApAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgInRydXN0LXRyZWUtc2NlbmUuaHBwIgogCiAjaW5jbHVkZSA8UXRHdWk+CisjaW5jbHVkZSA8UUdyYXBoaWNzVGV4dEl0ZW0+CiAKICNpZm5kZWYgUV9NT0NfUlVOCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CkBAIC0yMSw3ICsyMiw3IEBACiAKIHN0YXRpYyBjb25zdCBkb3VibGUgUGkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4NDE5NzE3OwogCi1UcnVzdFRyZWVTY2VuZTo6VHJ1c3RUcmVlU2NlbmUoUVdpZGdldCogcGFyZW50KQorVHJ1c3RUcmVlU2NlbmU6OlRydXN0VHJlZVNjZW5lKFFPYmplY3QqIHBhcmVudCkKICAgOiBRR3JhcGhpY3NTY2VuZShwYXJlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9zcmMvdHJ1c3QtdHJlZS1zY2VuZS5ocHAgYi9zcmMvdHJ1c3QtdHJlZS1zY2VuZS5ocHAKaW5kZXggYzhjMjFjNi4uMDQxMjkxNCAxMDA2NDQKLS0tIGEvc3JjL3RydXN0LXRyZWUtc2NlbmUuaHBwCisrKyBiL3NyYy90cnVzdC10cmVlLXNjZW5lLmhwcApAQCAtMTEsNyArMTEsNyBAQAogI2lmbmRlZiBDSFJPTk9DSEFUX1RSVVNUX1RSRUVfU0NFTkVfSFBQCiAjZGVmaW5lIENIUk9OT0NIQVRfVFJVU1RfVFJFRV9TQ0VORV9IUFAKIAotI2luY2x1ZGUgPFF0R3VpL1FHcmFwaGljc1NjZW5lPgorI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgogI2luY2x1ZGUgPFFDb2xvcj4KICNpbmNsdWRlIDxRTWFwPgogCkBAIC0yOSw3ICsyOSw3IEBACiAgIFFfT0JKRUNUCiAKIHB1YmxpYzoKLSAgVHJ1c3RUcmVlU2NlbmUoUVdpZGdldCogcGFyZW50ID0gMCk7CisgIFRydXN0VHJlZVNjZW5lKFFPYmplY3QqIHBhcmVudCA9IDApOwogCiAgIHZvaWQKICAgcGxvdFRydXN0VHJlZShjaHJvbm9jaGF0OjpUcnVzdFRyZWVOb2RlTGlzdCYgbm9kZUxpc3QpOwpkaWZmIC0tZ2l0IGEvc3JjL3ZhbGlkYXRvci1pbnZpdGF0aW9uLmNwcCBiL3NyYy92YWxpZGF0b3ItaW52aXRhdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZDcxMTYuLjAwMDAwMDAKLS0tIGEvc3JjL3ZhbGlkYXRvci1pbnZpdGF0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEzLCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqICAgICAgICAgICAgICAgICAgICAgWWluZ2RpIFl1Ci0gKgotICogQlNEIGxpY2Vuc2UsIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uCi0gKgotICogQXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaUBjcy51Y2xhLmVkdT4KLSAqLwotCi0jaW5jbHVkZSAidmFsaWRhdG9yLWludml0YXRpb24uaHBwIgotI2luY2x1ZGUgImludml0YXRpb24uaHBwIgotCi0jaW5jbHVkZSAibG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgY2hyb25vY2hhdCB7Ci0KLXVzaW5nIHN0ZDo6dmVjdG9yOwotCi11c2luZyBuZG46OkNlcnRpZmljYXRlQ2FjaGU7Ci11c2luZyBuZG46OlNlY1J1bGVSZWxhdGl2ZTsKLXVzaW5nIG5kbjo6T25EYXRhVmFsaWRhdGVkOwotdXNpbmcgbmRuOjpPbkRhdGFWYWxpZGF0aW9uRmFpbGVkOwotdXNpbmcgbmRuOjpPbkludGVyZXN0VmFsaWRhdGVkOwotdXNpbmcgbmRuOjpPbkludGVyZXN0VmFsaWRhdGlvbkZhaWxlZDsKLXVzaW5nIG5kbjo6VmFsaWRhdGlvblJlcXVlc3Q7Ci11c2luZyBuZG46OklkZW50aXR5Q2VydGlmaWNhdGU7Ci0KLWNvbnN0IHNoYXJlZF9wdHI8Q2VydGlmaWNhdGVDYWNoZT4gVmFsaWRhdG9ySW52aXRhdGlvbjo6RGVmYXVsdENlcnRpZmljYXRlQ2FjaGUgPQotICBzaGFyZWRfcHRyPENlcnRpZmljYXRlQ2FjaGU+KCk7Ci0KLVZhbGlkYXRvckludml0YXRpb246OlZhbGlkYXRvckludml0YXRpb24oKQotICA6IFZhbGlkYXRvcigpCi0gICwgbV9pbnZpdGF0aW9uUmVwbHlSdWxlKCJeKFtePENIUk9OT0NIQVQtSU5WSVRBVElPTj5dKik8Q0hST05PQ0hBVC1JTlZJVEFUSU9OPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJeKFtePEtFWT5dKik8S0VZPig8PiopWzxkc2stLio+PGtzay0uKj5dPElELUNFUlQ+JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI9PSIsICJcXDEiLCAiXFwxXFwyIiwgdHJ1ZSkKLSAgLCBtX2ludml0YXRpb25JbnRlcmVzdFJ1bGUoIl5bXjxDSFJPTk9DSEFULUlOVklUQVRJT04+XSo8Q0hST05PQ0hBVC1JTlZJVEFUSU9OPjw+ezZ9JCIpCi0gICwgbV9pbm5lcktleVJlZ2V4KCJeKFtePEtFWT5dKik8S0VZPig8PiopWzxkc2stLio+PGtzay0uKj5dPElELUNFUlQ+PD4kIiwgIlxcMVxcMiIpCi17Ci19Ci0KLXZvaWQKLVZhbGlkYXRvckludml0YXRpb246OmFkZFRydXN0QW5jaG9yKGNvbnN0IE5hbWUmIGtleU5hbWUsIGNvbnN0IG5kbjo6UHVibGljS2V5JiBrZXkpCi17Ci0gIG1fdHJ1c3RBbmNob3JzW2tleU5hbWVdID0ga2V5OwotfQotCi12b2lkCi1WYWxpZGF0b3JJbnZpdGF0aW9uOjpyZW1vdmVUcnVzdEFuY2hvcihjb25zdCBOYW1lJiBrZXlOYW1lKQotewotICBtX3RydXN0QW5jaG9ycy5lcmFzZShrZXlOYW1lKTsKLX0KLQotdm9pZAotVmFsaWRhdG9ySW52aXRhdGlvbjo6Y2xlYW5UcnVzdEFuY2hvcigpCi17Ci0gIG1fdHJ1c3RBbmNob3JzLmNsZWFyKCk7Ci19Ci0KLXZvaWQKLVZhbGlkYXRvckludml0YXRpb246OmNoZWNrUG9saWN5IChjb25zdCBEYXRhJiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGVwQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT25EYXRhVmFsaWRhdGVkJiBvblZhbGlkYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkRhdGFWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yPHNoYXJlZF9wdHI8VmFsaWRhdGlvblJlcXVlc3Q+ID4mIG5leHRTdGVwcykKLXsKLSAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBkYXRhLmdldFNpZ25hdHVyZSgpOwotCi0gIGlmIChzaWduYXR1cmUuZ2V0S2V5TG9jYXRvcigpLmdldFR5cGUoKSAhPSBLZXlMb2NhdG9yOjpLZXlMb2NhdG9yX05hbWUpCi0gICAgcmV0dXJuIG9uVmFsaWRhdGlvbkZhaWxlZChkYXRhLnNoYXJlZF9mcm9tX3RoaXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLZXkgTG9jYXRvciBpcyBub3QgYSBuYW1lOiAiICsgZGF0YS5nZXROYW1lKCkudG9VcmkoKSk7Ci0KLSAgY29uc3QgTmFtZSAmIGtleUxvY2F0b3JOYW1lID0gc2lnbmF0dXJlLmdldEtleUxvY2F0b3IoKS5nZXROYW1lKCk7Ci0KLSAgaWYgKCFtX2ludml0YXRpb25SZXBseVJ1bGUuc2F0aXNmeShkYXRhLmdldE5hbWUoKSwga2V5TG9jYXRvck5hbWUpKQotICAgIHJldHVybiBvblZhbGlkYXRpb25GYWlsZWQoZGF0YS5zaGFyZWRfZnJvbV90aGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRG9lcyBub3QgY29tcGx5IHdpdGggdGhlIGludml0YXRpb24gcnVsZTogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmdldE5hbWUoKS50b1VyaSgpICsgIiBzaWduZWQgYnk6ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5TG9jYXRvck5hbWUudG9VcmkoKSk7Ci0KLSAgRGF0YSBpbm5lckRhdGE7Ci0gIGlubmVyRGF0YS53aXJlRGVjb2RlKGRhdGEuZ2V0Q29udGVudCgpLmJsb2NrRnJvbVZhbHVlKCkpOwotCi0gIHJldHVybiBpbnRlcm5hbENoZWNrKGRhdGEud2lyZUVuY29kZSgpLnZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgIGRhdGEud2lyZUVuY29kZSgpLnZhbHVlX3NpemUoKSAtIGRhdGEuZ2V0U2lnbmF0dXJlKCkuZ2V0VmFsdWUoKS5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAga2V5TG9jYXRvck5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGlubmVyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgYmluZChvblZhbGlkYXRlZCwgZGF0YS5zaGFyZWRfZnJvbV90aGlzKCkpLAotICAgICAgICAgICAgICAgICAgICAgICBiaW5kKG9uVmFsaWRhdGlvbkZhaWxlZCwgZGF0YS5zaGFyZWRfZnJvbV90aGlzKCksIF8xKSk7Ci19Ci0KLXZvaWQKLVZhbGlkYXRvckludml0YXRpb246OmNoZWNrUG9saWN5IChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZXBDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkludGVyZXN0VmFsaWRhdGVkJiBvblZhbGlkYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkludGVyZXN0VmFsaWRhdGlvbkZhaWxlZCYgb25WYWxpZGF0aW9uRmFpbGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjxzaGFyZWRfcHRyPFZhbGlkYXRpb25SZXF1ZXN0PiA+JiBuZXh0U3RlcHMpCi17Ci0gIGNvbnN0IE5hbWUmIGludGVyZXN0TmFtZSAgPSBpbnRlcmVzdC5nZXROYW1lKCk7Ci0KLSAgaWYgKCFtX2ludml0YXRpb25JbnRlcmVzdFJ1bGUubWF0Y2goaW50ZXJlc3ROYW1lKSkKLSAgICByZXR1cm4gb25WYWxpZGF0aW9uRmFpbGVkKGludGVyZXN0LnNoYXJlZF9mcm9tX3RoaXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGludGVyZXN0IG5hbWU6ICIgKyAgaW50ZXJlc3QuZ2V0TmFtZSgpLnRvVXJpKCkpOwotCi0gIE5hbWUgc2lnbmVkTmFtZSA9IGludGVyZXN0TmFtZS5nZXRQcmVmaXgoLTEpOwotICBuZG46OkJ1ZmZlciBzaWduZWRCbG9iID0gbmRuOjpCdWZmZXIoc2lnbmVkTmFtZS53aXJlRW5jb2RlKCkudmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZE5hbWUud2lyZUVuY29kZSgpLnZhbHVlX3NpemUoKSk7Ci0KLSAgQmxvY2sgc2lnbmF0dXJlQmxvY2sgPSBpbnRlcmVzdE5hbWUuZ2V0KEludml0YXRpb246OlNJR05BVFVSRSkuYmxvY2tGcm9tVmFsdWUoKTsKLSAgQmxvY2sgc2lnbmF0dXJlSW5mbyA9IGludGVyZXN0TmFtZS5nZXQoSW52aXRhdGlvbjo6S0VZX0xPQ0FUT1IpLmJsb2NrRnJvbVZhbHVlKCk7Ci0gIFNpZ25hdHVyZSBzaWduYXR1cmUoc2lnbmF0dXJlSW5mbywgc2lnbmF0dXJlQmxvY2spOwotCi0gIGlmIChzaWduYXR1cmUuZ2V0S2V5TG9jYXRvcigpLmdldFR5cGUoKSAhPSBLZXlMb2NhdG9yOjpLZXlMb2NhdG9yX05hbWUpCi0gICAgcmV0dXJuIG9uVmFsaWRhdGlvbkZhaWxlZChpbnRlcmVzdC5zaGFyZWRfZnJvbV90aGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2V5TG9jYXRvciBpcyBub3QgYSBuYW1lOiAiICsgaW50ZXJlc3QuZ2V0TmFtZSgpLnRvVXJpKCkpOwotCi0gIGNvbnN0IE5hbWUgJiBrZXlMb2NhdG9yTmFtZSA9IHNpZ25hdHVyZS5nZXRLZXlMb2NhdG9yKCkuZ2V0TmFtZSgpOwotCi0gIERhdGEgaW5uZXJEYXRhOwotICBpbm5lckRhdGEud2lyZURlY29kZShpbnRlcmVzdE5hbWUuZ2V0KEludml0YXRpb246OklOVklURVJfQ0VSVCkuYmxvY2tGcm9tVmFsdWUoKSk7Ci0KLSAgcmV0dXJuIGludGVybmFsQ2hlY2soc2lnbmVkQmxvYi5idWYoKSwgc2lnbmVkQmxvYi5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAga2V5TG9jYXRvck5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGlubmVyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgYmluZChvblZhbGlkYXRlZCwgaW50ZXJlc3Quc2hhcmVkX2Zyb21fdGhpcygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgYmluZChvblZhbGlkYXRpb25GYWlsZWQsIGludGVyZXN0LnNoYXJlZF9mcm9tX3RoaXMoKSwgXzEpKTsKLX0KLQotdm9pZAotVmFsaWRhdG9ySW52aXRhdGlvbjo6aW50ZXJuYWxDaGVjayhjb25zdCB1aW50OF90KiBidWYsIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmFtZSYga2V5TG9jYXRvck5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERhdGEmIGlubmVyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT25WYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPblZhbGlkYXRpb25GYWlsZWQmIG9uVmFsaWRhdGlvbkZhaWxlZCkKLXsKLSAgTmFtZSBzaWduaW5nS2V5TmFtZSA9IElkZW50aXR5Q2VydGlmaWNhdGU6OmNlcnRpZmljYXRlTmFtZVRvUHVibGljS2V5TmFtZShrZXlMb2NhdG9yTmFtZSk7Ci0KLSAgVHJ1c3RBbmNob3JzOjpjb25zdF9pdGVyYXRvciBrZXlJdCA9IG1fdHJ1c3RBbmNob3JzLmZpbmQoc2lnbmluZ0tleU5hbWUpOwotICBpZiAoa2V5SXQgPT0gbV90cnVzdEFuY2hvcnMuZW5kKCkpCi0gICAgcmV0dXJuIG9uVmFsaWRhdGlvbkZhaWxlZCgiQ2Fubm90IHJlYWNoIGFueSB0cnVzdCBhbmNob3IiKTsKLQotICBpZiAoIVZhbGlkYXRvcjo6dmVyaWZ5U2lnbmF0dXJlKGJ1Ziwgc2l6ZSwgc2lnbmF0dXJlLCBrZXlJdC0+c2Vjb25kKSkKLSAgICByZXR1cm4gb25WYWxpZGF0aW9uRmFpbGVkKCJDYW5ub3QgdmVyaWZ5IG91dGVyIHNpZ25hdHVyZSIpOwotCi0gIC8vIFRlbXBvcmFyaWx5IGRpc2FibGVkLCB3ZSBzaG91bGQgZ2V0IGl0IGJhY2sgd2hlbiB3ZSBjcmVhdGUgYSBzcGVjaWZpYyBrZXkgZm9yIHRoZSBjaGF0cm9vbS4KLSAgLy8gaWYoIVZhbGlkYXRvcjo6dmVyaWZ5U2lnbmF0dXJlKGlubmVyRGF0YSwgbV90cnVzdEFuY2hvcnNbc2lnbmluZ0tleU5hbWVdKSkKLSAgLy8gICByZXR1cm4gb25WYWxpZGF0aW9uRmFpbGVkKCJDYW5ub3QgdmVyaWZ5IGlubmVyIHNpZ25hdHVyZSIpOwotCi0gIGlmICghbV9pbm5lcktleVJlZ2V4Lm1hdGNoKGlubmVyRGF0YS5nZXROYW1lKCkpIHx8Ci0gICAgICBtX2lubmVyS2V5UmVnZXguZXhwYW5kKCkgIT0gc2lnbmluZ0tleU5hbWUuZ2V0UHJlZml4KC0xKSkKLSAgICByZXR1cm4gb25WYWxpZGF0aW9uRmFpbGVkKCJJbm5lciBjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgcnVsZSIpOwotCi0gIHJldHVybiBvblZhbGlkYXRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBjaHJvbm9jaGF0CmRpZmYgLS1naXQgYS9zcmMvdmFsaWRhdG9yLWludml0YXRpb24uaHBwIGIvc3JjL3ZhbGlkYXRvci1pbnZpdGF0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM4OTBhMC4uMDAwMDAwMAotLS0gYS9zcmMvdmFsaWRhdG9yLWludml0YXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMywgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKiAgICAgICAgICAgICAgICAgICAgIFlpbmdkaSBZdQotICoKLSAqIEJTRCBsaWNlbnNlLCBTZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICoKLSAqIEF1dGhvcjogWWluZ2RpIFl1IDx5aW5nZGlAY3MudWNsYS5lZHU+Ci0gKi8KLQotI2lmbmRlZiBDSFJPTk9DSEFUX1ZBTElEQVRPUl9JTlZJVEFUSU9OX0hQUAotI2RlZmluZSBDSFJPTk9DSEFUX1ZBTElEQVRPUl9JTlZJVEFUSU9OX0hQUAotCi0jaW5jbHVkZSAiY29tbW9uLmhwcCIKLQotI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvdmFsaWRhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L2NlcnRpZmljYXRlLWNhY2hlLmhwcD4KLSNpbmNsdWRlIDxuZG4tY3h4L3NlY3VyaXR5L3NlYy1ydWxlLXJlbGF0aXZlLmhwcD4KLQotI2luY2x1ZGUgImVuZG9yc2UtY2VydGlmaWNhdGUuaHBwIgotCi1uYW1lc3BhY2UgY2hyb25vY2hhdCB7Ci0KLWNsYXNzIFZhbGlkYXRvckludml0YXRpb24gOiBwdWJsaWMgbmRuOjpWYWxpZGF0b3IKLXsKLSAgdHlwZWRlZiBmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6c3RyaW5nJik+IE9uVmFsaWRhdGlvbkZhaWxlZDsKLSAgdHlwZWRlZiBmdW5jdGlvbjx2b2lkKCk+IE9uVmFsaWRhdGVkOwotCi1wdWJsaWM6Ci0gIGNsYXNzIEVycm9yIDogcHVibGljIG5kbjo6VmFsaWRhdG9yOjpFcnJvcgotICB7Ci0gIHB1YmxpYzoKLSAgICBFcnJvcihjb25zdCBzdGQ6OnN0cmluZyYgd2hhdCkKLSAgICAgIDogbmRuOjpWYWxpZGF0b3I6OkVycm9yKHdoYXQpCi0gICAgewotICAgIH0KLSAgfTsKLQotICBzdGF0aWMgY29uc3Qgc2hhcmVkX3B0cjxuZG46OkNlcnRpZmljYXRlQ2FjaGU+IERlZmF1bHRDZXJ0aWZpY2F0ZUNhY2hlOwotCi0gIFZhbGlkYXRvckludml0YXRpb24oKTsKLQotICB2aXJ0dWFsCi0gIH5WYWxpZGF0b3JJbnZpdGF0aW9uKCkKLSAgewotICB9Ci0KLSAgdm9pZAotICBhZGRUcnVzdEFuY2hvcihjb25zdCBOYW1lJiBrZXlOYW1lLCBjb25zdCBuZG46OlB1YmxpY0tleSYga2V5KTsKLQotICB2b2lkCi0gIHJlbW92ZVRydXN0QW5jaG9yKGNvbnN0IE5hbWUmIGtleU5hbWUpOwotCi0gIHZvaWQKLSAgY2xlYW5UcnVzdEFuY2hvcigpOwotCi1wcm90ZWN0ZWQ6Ci0gIHZvaWQKLSAgY2hlY2tQb2xpY3koY29uc3QgRGF0YSYgZGF0YSwKLSAgICAgICAgICAgICAgaW50IHN0ZXBDb3VudCwKLSAgICAgICAgICAgICAgY29uc3QgbmRuOjpPbkRhdGFWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICBjb25zdCBuZG46Ok9uRGF0YVZhbGlkYXRpb25GYWlsZWQmIG9uVmFsaWRhdGlvbkZhaWxlZCwKLSAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2hhcmVkX3B0cjxuZG46OlZhbGlkYXRpb25SZXF1ZXN0PiA+JiBuZXh0U3RlcHMpOwotCi0gIHZvaWQKLSAgY2hlY2tQb2xpY3koY29uc3QgSW50ZXJlc3QmIGludGVyZXN0LAotICAgICAgICAgICAgICBpbnQgc3RlcENvdW50LAotICAgICAgICAgICAgICBjb25zdCBuZG46Ok9uSW50ZXJlc3RWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICBjb25zdCBuZG46Ok9uSW50ZXJlc3RWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQsCi0gICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNoYXJlZF9wdHI8bmRuOjpWYWxpZGF0aW9uUmVxdWVzdD4gPiYgbmV4dFN0ZXBzKTsKLQotcHJpdmF0ZToKLSAgdm9pZAotICBpbnRlcm5hbENoZWNrKGNvbnN0IHVpbnQ4X3QqIGJ1Ziwgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWcsCi0gICAgICAgICAgICAgICAgY29uc3QgTmFtZSYga2V5TG9jYXRvck5hbWUsCi0gICAgICAgICAgICAgICAgY29uc3QgRGF0YSYgaW5uZXJEYXRhLAotICAgICAgICAgICAgICAgIGNvbnN0IE9uVmFsaWRhdGVkJiBvblZhbGlkYXRlZCwKLSAgICAgICAgICAgICAgICBjb25zdCBPblZhbGlkYXRpb25GYWlsZWQmIG9uVmFsaWRhdGlvbkZhaWxlZCk7Ci0KLXByaXZhdGU6Ci0gIHR5cGVkZWYgc3RkOjptYXA8TmFtZSwgbmRuOjpQdWJsaWNLZXk+IFRydXN0QW5jaG9yczsKLQotICBuZG46OlNlY1J1bGVSZWxhdGl2ZSBtX2ludml0YXRpb25SZXBseVJ1bGU7Ci0gIG5kbjo6UmVnZXggbV9pbnZpdGF0aW9uSW50ZXJlc3RSdWxlOwotICBuZG46OlJlZ2V4IG1faW5uZXJLZXlSZWdleDsKLSAgVHJ1c3RBbmNob3JzIG1fdHJ1c3RBbmNob3JzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgY2hyb25vY2hhdAotCi0jZW5kaWYgLy8gQ0hST05PQ0hBVF9WQUxJREFUT1JfSU5WSVRBVElPTl9IUFAKZGlmZiAtLWdpdCBhL3NyYy92YWxpZGF0b3ItcGFuZWwuY3BwIGIvc3JjL3ZhbGlkYXRvci1wYW5lbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzYzQyOWQuLjAwMDAwMDAKLS0tIGEvc3JjL3ZhbGlkYXRvci1wYW5lbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEzLCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqICAgICAgICAgICAgICAgICAgICAgWWluZ2RpIFl1Ci0gKgotICogQlNEIGxpY2Vuc2UsIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uCi0gKgotICogQXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaUBjcy51Y2xhLmVkdT4KLSAqLwotCi0jaW5jbHVkZSAidmFsaWRhdG9yLXBhbmVsLmhwcCIKLQotI2luY2x1ZGUgImxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIGNocm9ub2NoYXQgewotCi11c2luZyBzdGQ6OnZlY3RvcjsKLQotdXNpbmcgbmRuOjpDZXJ0aWZpY2F0ZUNhY2hlOwotdXNpbmcgbmRuOjpTZWNSdWxlUmVsYXRpdmU7Ci11c2luZyBuZG46Ok9uRGF0YVZhbGlkYXRlZDsKLXVzaW5nIG5kbjo6T25EYXRhVmFsaWRhdGlvbkZhaWxlZDsKLXVzaW5nIG5kbjo6VmFsaWRhdGlvblJlcXVlc3Q7Ci11c2luZyBuZG46OklkZW50aXR5Q2VydGlmaWNhdGU7Ci0KLWNvbnN0IHNoYXJlZF9wdHI8Q2VydGlmaWNhdGVDYWNoZT4gVmFsaWRhdG9yUGFuZWw6OkRFRkFVTFRfQ0VSVF9DQUNIRSA9Ci0gIHNoYXJlZF9wdHI8Q2VydGlmaWNhdGVDYWNoZT4oKTsKLQotVmFsaWRhdG9yUGFuZWw6OlZhbGlkYXRvclBhbmVsKGludCBzdGVwTGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkX3B0cjxDZXJ0aWZpY2F0ZUNhY2hlPiBjZXJ0aWZpY2F0ZUNhY2hlKQotICA6IG1fc3RlcExpbWl0KHN0ZXBMaW1pdCkKLSAgLCBtX2NlcnRpZmljYXRlQ2FjaGUoY2VydGlmaWNhdGVDYWNoZSkKLXsKLSAgbV9lbmRvcnNlZVJ1bGUgPSBtYWtlX3NoYXJlZDxTZWNSdWxlUmVsYXRpdmU+KCJeKFtePEROUz5dKik8RE5TPjw+KjxFTkRPUlNFRT48PiQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl4oW148S0VZPl0qKTxLRVk+KDw+Kik8a3NrLS4qPjxJRC1DRVJUPiQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj09IiwgIlxcMSIsICJcXDFcXDIiLCB0cnVlKTsKLX0KLQotdm9pZAotVmFsaWRhdG9yUGFuZWw6OmFkZFRydXN0QW5jaG9yKGNvbnN0IEVuZG9yc2VDZXJ0aWZpY2F0ZSYgY2VydCkKLXsKLSAgbV90cnVzdEFuY2hvcnNbY2VydC5nZXRQdWJsaWNLZXlOYW1lKCldID0gY2VydC5nZXRQdWJsaWNLZXlJbmZvKCk7Ci19Ci0KLXZvaWQKLVZhbGlkYXRvclBhbmVsOjpyZW1vdmVUcnVzdEFuY2hvcihjb25zdCBOYW1lJiBrZXlOYW1lKQotewotICBtX3RydXN0QW5jaG9ycy5lcmFzZShrZXlOYW1lKTsKLX0KLQotdm9pZAotVmFsaWRhdG9yUGFuZWw6OmNoZWNrUG9saWN5IChjb25zdCBEYXRhJiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlcENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkRhdGFWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPbkRhdGFWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjxzaGFyZWRfcHRyPFZhbGlkYXRpb25SZXF1ZXN0PiA+JiBuZXh0U3RlcHMpCi17Ci0gIGlmIChtX3N0ZXBMaW1pdCA9PSBzdGVwQ291bnQpIHsKLSAgICBvblZhbGlkYXRpb25GYWlsZWQoZGF0YS5zaGFyZWRfZnJvbV90aGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICJSZWFjaCBtYXhpbXVtIHZhbGlkYXRpb24gc3RlcHM6ICIgKyBkYXRhLmdldE5hbWUoKS50b1VyaSgpKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBjb25zdCBLZXlMb2NhdG9yJiBrZXlMb2NhdG9yID0gZGF0YS5nZXRTaWduYXR1cmUoKS5nZXRLZXlMb2NhdG9yKCk7Ci0KLSAgaWYgKGtleUxvY2F0b3IuZ2V0VHlwZSgpICE9IEtleUxvY2F0b3I6OktleUxvY2F0b3JfTmFtZSkKLSAgICByZXR1cm4gb25WYWxpZGF0aW9uRmFpbGVkKGRhdGEuc2hhcmVkX2Zyb21fdGhpcygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktleSBMb2NhdG9yIGlzIG5vdCBhIG5hbWU6ICIgKyBkYXRhLmdldE5hbWUoKS50b1VyaSgpKTsKLQotICBjb25zdCBOYW1lJiBrZXlMb2NhdG9yTmFtZSA9IGtleUxvY2F0b3IuZ2V0TmFtZSgpOwotCi0gIGlmIChtX2VuZG9yc2VlUnVsZS0+c2F0aXNmeShkYXRhLmdldE5hbWUoKSwga2V5TG9jYXRvck5hbWUpKSB7Ci0gICAgTmFtZSBrZXlOYW1lID0gSWRlbnRpdHlDZXJ0aWZpY2F0ZTo6Y2VydGlmaWNhdGVOYW1lVG9QdWJsaWNLZXlOYW1lKGtleUxvY2F0b3JOYW1lKTsKLQotICAgIGlmIChtX3RydXN0QW5jaG9ycy5lbmQoKSAhPSBtX3RydXN0QW5jaG9ycy5maW5kKGtleU5hbWUpICYmCi0gICAgICAgIFZhbGlkYXRvcjo6dmVyaWZ5U2lnbmF0dXJlKGRhdGEsIGRhdGEuZ2V0U2lnbmF0dXJlKCksIG1fdHJ1c3RBbmNob3JzW2tleU5hbWVdKSkKLSAgICAgIG9uVmFsaWRhdGVkKGRhdGEuc2hhcmVkX2Zyb21fdGhpcygpKTsKLSAgICBlbHNlCi0gICAgICBvblZhbGlkYXRpb25GYWlsZWQoZGF0YS5zaGFyZWRfZnJvbV90aGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB2ZXJpZnkgc2lnbmF0dXJlOiIgKyBkYXRhLmdldE5hbWUoKS50b1VyaSgpKTsKLSAgfQotICBlbHNlCi0gICAgb25WYWxpZGF0aW9uRmFpbGVkKGRhdGEuc2hhcmVkX2Zyb21fdGhpcygpLAotICAgICAgICAgICAgICAgICAgICAgICAiRG9lcyBub3Qgc2F0aXNmeSBydWxlOiAiICsgZGF0YS5nZXROYW1lKCkudG9VcmkoKSk7Ci0KLSAgcmV0dXJuOwotfQotCi19IC8vIG5hbWVzcGFjZSBjaHJvbm9jaGF0CmRpZmYgLS1naXQgYS9zcmMvdmFsaWRhdG9yLXBhbmVsLmhwcCBiL3NyYy92YWxpZGF0b3ItcGFuZWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjQyZmUxLi4wMDAwMDAwCi0tLSBhL3NyYy92YWxpZGF0b3ItcGFuZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMywgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKiAgICAgICAgICAgICAgICAgICAgIFlpbmdkaSBZdQotICoKLSAqIEJTRCBsaWNlbnNlLCBTZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICoKLSAqIEF1dGhvcjogWWluZ2RpIFl1IDx5aW5nZGlAY3MudWNsYS5lZHU+Ci0gKi8KLQotI2lmbmRlZiBDSFJPTk9DSEFUX1ZBTElEQVRPUl9QQU5FTF9IUFAKLSNkZWZpbmUgQ0hST05PQ0hBVF9WQUxJREFUT1JfUEFORUxfSFBQCi0KLSNpbmNsdWRlICJjb21tb24uaHBwIgotCi0jaW5jbHVkZSA8bmRuLWN4eC9zZWN1cml0eS92YWxpZGF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvc2VjLXJ1bGUtcmVsYXRpdmUuaHBwPgotI2luY2x1ZGUgPG5kbi1jeHgvc2VjdXJpdHkvY2VydGlmaWNhdGUtY2FjaGUuaHBwPgotCi0jaW5jbHVkZSAiZW5kb3JzZS1jZXJ0aWZpY2F0ZS5ocHAiCi0KLW5hbWVzcGFjZSBjaHJvbm9jaGF0IHsKLQotY2xhc3MgVmFsaWRhdG9yUGFuZWwgOiBwdWJsaWMgbmRuOjpWYWxpZGF0b3IKLXsKLXB1YmxpYzoKLQotICBzdGF0aWMgY29uc3Qgc2hhcmVkX3B0cjxuZG46OkNlcnRpZmljYXRlQ2FjaGU+IERFRkFVTFRfQ0VSVF9DQUNIRTsKLQotICBWYWxpZGF0b3JQYW5lbChpbnQgc3RlcExpbWl0ID0gMTAsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHNoYXJlZF9wdHI8bmRuOjpDZXJ0aWZpY2F0ZUNhY2hlPiBjYWNoZSA9IERFRkFVTFRfQ0VSVF9DQUNIRSk7Ci0KLSAgflZhbGlkYXRvclBhbmVsKCkKLSAgewotICB9Ci0KLSAgdm9pZAotICBhZGRUcnVzdEFuY2hvcihjb25zdCBFbmRvcnNlQ2VydGlmaWNhdGUmIHNlbGZFbmRvcnNlQ2VydGlmaWNhdGUpOwotCi0gIHZvaWQKLSAgcmVtb3ZlVHJ1c3RBbmNob3IoY29uc3QgTmFtZSYga2V5TmFtZSk7Ci0KLXByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkCi0gIGNoZWNrUG9saWN5KGNvbnN0IERhdGEmIGRhdGEsCi0gICAgICAgICAgICAgIGludCBzdGVwQ291bnQsCi0gICAgICAgICAgICAgIGNvbnN0IG5kbjo6T25EYXRhVmFsaWRhdGVkJiBvblZhbGlkYXRlZCwKLSAgICAgICAgICAgICAgY29uc3QgbmRuOjpPbkRhdGFWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQsCi0gICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNoYXJlZF9wdHI8bmRuOjpWYWxpZGF0aW9uUmVxdWVzdD4gPiYgbmV4dFN0ZXBzKTsKLQotICB2aXJ0dWFsIHZvaWQKLSAgY2hlY2tQb2xpY3koY29uc3QgSW50ZXJlc3QmIGludGVyZXN0LAotICAgICAgICAgICAgICBpbnQgc3RlcENvdW50LAotICAgICAgICAgICAgICBjb25zdCBuZG46Ok9uSW50ZXJlc3RWYWxpZGF0ZWQmIG9uVmFsaWRhdGVkLAotICAgICAgICAgICAgICBjb25zdCBuZG46Ok9uSW50ZXJlc3RWYWxpZGF0aW9uRmFpbGVkJiBvblZhbGlkYXRpb25GYWlsZWQsCi0gICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNoYXJlZF9wdHI8bmRuOjpWYWxpZGF0aW9uUmVxdWVzdD4gPiYgbmV4dFN0ZXBzKQotICB7Ci0gICAgb25WYWxpZGF0aW9uRmFpbGVkKGludGVyZXN0LnNoYXJlZF9mcm9tX3RoaXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIk5vIHJ1bGVzIGZvciBpbnRlcmVzdC4iKTsKLSAgfQotCi1wcml2YXRlOgotICBpbnQgbV9zdGVwTGltaXQ7Ci0gIHNoYXJlZF9wdHI8bmRuOjpDZXJ0aWZpY2F0ZUNhY2hlPiBtX2NlcnRpZmljYXRlQ2FjaGU7Ci0gIHNoYXJlZF9wdHI8bmRuOjpTZWNSdWxlUmVsYXRpdmU+IG1fZW5kb3JzZWVSdWxlOwotICBzdGQ6Om1hcDxOYW1lLCBuZG46OlB1YmxpY0tleT4gbV90cnVzdEFuY2hvcnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjaHJvbm9jaGF0Ci0KLSNlbmRpZiAvLyBDSFJPTk9DSEFUX1ZBTElEQVRPUl9QQU5FTF9IUFAKZGlmZiAtLWdpdCBhL3Rlc3QvY2VydC9lbmRvcnNlLmNlcnQgYi90ZXN0L2NlcnQvZW5kb3JzZS5jZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNTM5NmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NlcnQvZW5kb3JzZS5jZXJ0CkBAIC0wLDAgKzEsMTUgQEAKK0J2MENwUWM1Q0JkRmJtUnZjbk5sUTJWeWRHbG1hV05oZEdWVVpYTjBjd2dEUzBWWkNBZzJ4K01HN0l4Q1BRZ0UKK2MyVnNaZ2dKL1FBQUFYWFZOV0d6RkFrWUFRSVpCQUEyN29BVi9RRW1NSUlCSWpBTkJna3Foa2lHOXcwQkFRRUYKK0FBT0NBUThBTUlJQkNnS0NBUUVBdjNCTS9icFdUbWNLVGVPenlraUZtL0dXWW5oSmdUUXhRbFJwNG1RSHNFbUgKK1NGbXJDdHgyZzBtd29QVVB3akJoWHVIMEo0UFNJdXVkYjhWTGlQR0QwMy9nRlVlR3RZOVZSckg1ZFp1SU9wSFQKK3RrbEJ6OHJBM0RzQ2Ywck1nZ1U2SXJZZDZWamxrK2hzZW9BbEt2VlZnbUdUK05YZG10TytYaHh0MTZTMmpQVXMKKytaeEtjK2dCR0tFSEtLWmtFRGxSV3pXcmoraEJLYXNPaWMzdjdMYzIyTTR0dmpBTnh5TUFwWi9yWEtkSWkxck4KK0RhMHU0ZGs2bEwvcVc1ZklFUUVqc2Y0ZG5nWmtIYUhrcEs2d0VuWHlUUUlYNzEvY21NQjQyeGdnZlo3WUF2Zk8KK3NtdWMwbWczZnV1d1RNbzVmS3hIQ0VTMTRpNnk3VE1ocWx4a2dkYjY2UUlEQVFBQkZ2MEJEeHNCQVAwQkFxUDkKK0FnQmMvUUlCQ0RJdU5TNDBMalF4L1FJQ1RDOUZibVJ2Y25ObFEyVnlkR2xtYVdOaGRHVlVaWE4wY3k5TFJWa3YKK05pVkROeVZGTXlVd05pVkZReVU0UTBJbE0wUXZjMlZzWmk4bFJrUWxNREFsTURBbE1ERjFKVVExTldFbFFqUDkKK0FnQS8vUUlCQm5OcFoyNWxjdjBDQWpFdlJXNWtiM0p6WlVObGNuUnBabWxqWVhSbFZHVnpkSE12UzBWWkx6WWwKK1F6Y2xSVE1sTURZbFJVTWxPRU5DSlRORWlDYUpKSW9JU1VSRlRsUkpWRm1MR0M5RmJtUnZjbk5sUTJWeWRHbG0KK2FXTmhkR1ZVWlhOMGM0d1Jpd1ZsYldGcGJJc0lhRzl0WlhCaFoyWDlBUDBtL1FEK0R6RTVOekF3TVRBeFZEQXcKK01EQXdNUDBBL3c4eU1EUXdNVEV4TWxRd056VTNNallYSU96ejllZnR6OFMzdkZIYXE4eVZKYWxaenM3U1B0dm8KKzdYdThRaFhRcTE3ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY2VydC90ZXN0aWQuY2VydCBiL3Rlc3QvY2VydC90ZXN0aWQuY2VydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDlhYjE5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jZXJ0L3Rlc3RpZC5jZXJ0CkBAIC0wLDAgKzEsMTYgQEAKK0J2MEN6d2M1Q0JkRmJtUnZjbk5sUTJWeWRHbG1hV05oZEdWVVpYTjBjd2dEUzBWWkNBZzJ4K01HN0l4Q1BRZ0UKK2MyVnNaZ2dKL1FBQUFYWFZOV0d6RkFrWUFRSVpCQUEyN29BVi9RRW1NSUlCSWpBTkJna3Foa2lHOXcwQkFRRUYKK0FBT0NBUThBTUlJQkNnS0NBUUVBdjNCTS9icFdUbWNLVGVPenlraUZtL0dXWW5oSmdUUXhRbFJwNG1RSHNFbUgKK1NGbXJDdHgyZzBtd29QVVB3akJoWHVIMEo0UFNJdXVkYjhWTGlQR0QwMy9nRlVlR3RZOVZSckg1ZFp1SU9wSFQKK3RrbEJ6OHJBM0RzQ2Ywck1nZ1U2SXJZZDZWamxrK2hzZW9BbEt2VlZnbUdUK05YZG10TytYaHh0MTZTMmpQVXMKKytaeEtjK2dCR0tFSEtLWmtFRGxSV3pXcmoraEJLYXNPaWMzdjdMYzIyTTR0dmpBTnh5TUFwWi9yWEtkSWkxck4KK0RhMHU0ZGs2bEwvcVc1ZklFUUVqc2Y0ZG5nWmtIYUhrcEs2d0VuWHlUUUlYNzEvY21NQjQyeGdnZlo3WUF2Zk8KK3NtdWMwbWczZnV1d1RNbzVmS3hIQ0VTMTRpNnk3VE1ocWx4a2dkYjY2UUlEQVFBQkZsa2JBUUVjS2djb0NCZEYKK2JtUnZjbk5sUTJWeWRHbG1hV05oZEdWVVpYTjBjd2dEUzBWWkNBZzJ4K01HN0l4Q1BmMEEvU2I5QVA0UE1UazMKK01EQXhNREZVTURBd01EQXcvUUQvRHpJd05EQXhNVEV5VkRBM05UY3lOaGY5QVFBMEM4eVlHZ3JydVNKZTFuNXEKK29UU2Rtb21uUmRaZ2RjemJsZ0w1alk5ZFA5T0FVSkw2dnk1Ykh3bmpGVTQ4NFQ2dktBTkVUTC9CWmZua0kvaDkKKzM5Z01qWGlxYVE0elN0dVNOQlZPLzQxSXlPekRiZzJLeVFrNDFtQjFNMXI3cHZ6SXppTk0vL2FtbVlCemFRTi8KK2l4bEtQclJlVUl5cEVzd1luQ1hhdzRWWlBMa1JlUjh5alZxTFcyQjZYOGExemZEV01PeXYzOUdheWhwZmN2Ym8KKzJqdUpaNzVKVGs2S0w4bEVPOEtPODRNMnltL1ZBQkRaVUhiWG5NUFltcVU0YU1SUkxmeXR6ZVpsTE9kUnpMcGIKK0ZyRTRBSHd1ZGFraHJ1UEIzOU5sdVl1MklIaHlJQjB4MXU0eHh5ekdmZ29JUklQWG5XNHpvdWxGbjlSRmdnOUEKKzZsTk0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NlcnQvdGVzdGlkLmtleSBiL3Rlc3QvY2VydC90ZXN0aWQua2V5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZTk1NTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NlcnQvdGVzdGlkLmtleQpAQCAtMCwwICsxLDcgQEAKK01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdjNCTS9icFdUbWNLVGVPenlraUYKK20vR1dZbmhKZ1RReFFsUnA0bVFIc0VtSFNGbXJDdHgyZzBtd29QVVB3akJoWHVIMEo0UFNJdXVkYjhWTGlQR0QKKzAzL2dGVWVHdFk5VlJySDVkWnVJT3BIVHRrbEJ6OHJBM0RzQ2Ywck1nZ1U2SXJZZDZWamxrK2hzZW9BbEt2VlYKK2dtR1QrTlhkbXRPK1hoeHQxNlMyalBVcytaeEtjK2dCR0tFSEtLWmtFRGxSV3pXcmoraEJLYXNPaWMzdjdMYzIKKzJNNHR2akFOeHlNQXBaL3JYS2RJaTFyTkRhMHU0ZGs2bEwvcVc1ZklFUUVqc2Y0ZG5nWmtIYUhrcEs2d0VuWHkKK1RRSVg3MS9jbU1CNDJ4Z2dmWjdZQXZmT3NtdWMwbWczZnV1d1RNbzVmS3hIQ0VTMTRpNnk3VE1ocWx4a2dkYjYKKzZRSURBUUFCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9lbmRvcnNlLWNlcnRpZmljYXRlLnQuY3BwIGIvdGVzdC9lbmRvcnNlLWNlcnRpZmljYXRlLnQuY3BwCmluZGV4IDVmYTVjNzkuLmJhYTJlY2YgMTAwNjQ0Ci0tLSBhL3Rlc3QvZW5kb3JzZS1jZXJ0aWZpY2F0ZS50LmNwcAorKysgYi90ZXN0L2VuZG9yc2UtY2VydGlmaWNhdGUudC5jcHAKQEAgLTMwLDEyMiArMzAsMzcgQEAKIHVzaW5nIHN0ZDo6c3RyaW5nOwogCiB1c2luZyBuZG46OktleUNoYWluOwotdXNpbmcgbmRuOjpJZGVudGl0eUNlcnRpZmljYXRlOwordXNpbmcgbmRuOjpzZWN1cml0eTo6Q2VydGlmaWNhdGU7CiAKIEJPT1NUX0FVVE9fVEVTVF9TVUlURShUZXN0RW5kb3JzZUNlcnRpZmljYXRlKQogCi1jb25zdCBzdHJpbmcgdGVzdElkQ2VydCgiXAotQnYwRFh3ZFJDQmRGYm1SdmNuTmxRMlZ5ZEdsbWFXTmhkR1ZVWlhOMGN3Z0RTMFZaQ0F4RmJtTnZaR1ZFWldOdlwKLVpHVUlFV3R6YXkweE16azBNRGN5TVRRM016TTFDQWRKUkMxRFJWSlVDQWY5QVVTVkxOWG9GQU1ZQVFJVi9RRzhcCi1NSUlCdURBaUdBOHlNREUwTURNd05qQXlNVFUwTjFvWUR6SXdNVFF3TXpFek1Ea3lOelEzV2pCdU1BMEdBMVVFXAotS1JNR1RYbE9ZVzFsTUJJR0ExVUVDeE1MVFhsSmJuTjBhWFIxZEdVd0RnWURWUVFCRXdkTmVVZHliM1Z3TUJFR1wKLUExVUVBeE1LVFhsSWIyMWxVR0ZuWlRBUUJnTlZCRkFUQ1UxNVFXUjJhWE52Y2pBVUJna3Foa2lHOXcwQkNRRVRcCi1CMDE1UlcxaGFXd3dnZ0VnTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRFFBd2dnRUlBb0lCQVFEWXNXRDBpeFFGXAotUmZZczM2QkhOc1JOdjVvdUVMNjlvYVM2WFgvaHNRTjFCeTRSTkk2ZVNHNURwYWp0QXdLMXkrRFhQd2tMSGQ1U1wKLUJydndMelJlRjdTc3JGMk9iYXd6blUxNEdLYVFkYm4rZVZJRVI3Q1d2U3BKaEg1eUtTNGZDUFJOK2IxTVA4UVNcCi1ETHZhYUd1MTVUOThjZ1ZzY0lFcUZrTGZuV1NRYmRONkVub2RqT0gyN0prQkN6OEx4djlHWkxyaGZLR3pPeWxSXAotZkx6dkNJeUlYWWw2SFdyb08reFRKUWFQK21pU1pOVkd5ZjRqWXF6NVdiUUg1NmE5WmpVbGRUcGhqdURiQmpVcVwKLVFhTlZPem9LVCtINHFoOG1uMzk5YVE5L0JqTSs2L1dnclN3Ny9NTzJVQ2dvWmh5U1FZNEhWcXpVVlZXbll3T1VcCi1OWVBvT1MzSGR2R0xBZ0VSRmtFYkFRRWNQQWM2Q0JkRmJtUnZjbk5sUTJWeWRHbG1hV05oZEdWVVpYTjBjd2dEXAotUzBWWkNCRnJjMnN0TVRNNU5EQTNNakUwTnpFeU9BZ0hTVVF0UTBWU1ZCZjlBUUFSU3dTL0NlbFJSU1VPNFRpa1wKLTVRK0w1enVzYXFxNTY1MlQ5Mi84M1M1bDM4ZE80MUJPZjVmQlViM1J0bkZTYlMvUWFCQ1JmUkp0RHZrTjJMaEVcCi12a3NKalNBb0FLVXp4MjdVeU0xZXE3TDhERHZzdkM5bWJ3eEd6VEsyRjF0M0p5ODFyazVYMzRNZWN2enRsSUxzXAotbkxxenFxaXdsM2RTMXh5dmc5R1plejVnMXlvT3RSd3prSGFhaDZzdkxWd3p3TTdrRUNYV1JmNE5vSFRheldRb1wKLUNzNnM2MEY5SS94QlJLSjRDdzJML0F6dkI1c1gxSjRIdkhDc3BsYlIvR2R2QTh1VzZpOHBwN2tqSWhqQ0dld0tcCi11TmZILzRsSHh6VGwzcGpzVnkrRUhLbXdTbForVDhjeTVxYUlFSHhoYk96TU5OVmRpdDdYRXdleE9FNjZBVnphXAotOTJPbiIpOwotCi1jb25zdCBzdHJpbmcgdGVzdEtleSgiXAotTUlJQklEQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FRMEFNSUlCQ0FLQ0FRRUEyTEZnOUlzVUJVWDJMTitnUnpiRVwKLVRiK2FMaEMrdmFHa3VsMS80YkVEZFFjdUVUU09ua2h1UTZXbzdRTUN0Y3ZnMXo4SkN4M2VVZ2E3OEM4MFhoZTBcCi1yS3hkam0yc001MU5lQmlta0hXNS9ubFNCRWV3bHIwcVNZUitjaWt1SHdqMFRmbTlURC9FRWd5NzJtaHJ0ZVUvXAotZkhJRmJIQ0JLaFpDMzUxa2tHM1RlaEo2SFl6aDl1eVpBUXMvQzhiL1JtUzY0WHloc3pzcFVYeTg3d2lNaUYySlwKLWVoMXE2RHZzVXlVR2ovcG9rbVRWUnNuK0kyS3MrVm0wQitlbXZXWTFKWFU2WVk3ZzJ3WTFLa0dqVlRzNkNrL2hcCi0rS29mSnA5L2ZXa1Bmd1l6UHV2MW9LMHNPL3pEdGxBb0tHWWNra0dPQjFhczFGVlZwMk1EbERXRDZEa3R4M2J4XAotaXdJQkVRPT0iKTsKLQotY29uc3Qgc3RyaW5nIHRlc3RFbmRvcnNlQ2VydCgiXAotQnYwQ1l3ZUlDQmRGYm1SdmNuTmxRMlZ5ZEdsbWFXTmhkR1ZVWlhOMGN3Z01SVzVqYjJSbFJHVmpiMlJsQ0JGclwKLWMyc3RNVE01TkRBM01qRTBOek16TlFnTVVGSlBSa2xNUlMxRFJWSlVDRE1ITVFnWFJXNWtiM0p6WlVObGNuUnBcCi1abWxqWVhSbFZHVnpkSE1JQmxOcGJtZGxjZ2dPYTNOckxURXlNelExTmpjNE9UQUlDZjBBQUFGTW9YUjhOUlFEXAotR0FFQ0ZmMEJxVENDQWFVd0loZ1BNakF4TXpFeU1qWXlNekl5TlRSYUdBOHlNREV6TVRJeU5qSXpNakkxTkZvd1wKLVFEQStCZ05WQkNrVE55OUZibVJ2Y25ObFEyVnlkR2xtYVdOaGRHVlVaWE4wY3k5RmJtTnZaR1ZFWldOdlpHVXZcCi1hM05yTFRFek9UUXdOekl4TkRjek16VXdnWjB3RFFZSktvWklodmNOQVFFQkJRQURnWXNBTUlHSEFvR0JBSjRHXAotUGtlRnNqUTNxb1ZIckFNa2c3V2NxQVU2SkI3cmlRRzc2WnV5d3lLc2FPUHdiQUxPYUtiRTBLY0drSnlxR3dnZFwKLWkwT2FNMmRFYlNHakc0aWFsMTVaeEJVTDJTeTlVUWRoZ3EzQnVOZS9tODk5Sk1Kajg1Y1g2LzVpSmJwYlRZckNcCi1lcjFEaW8rNDh2SEZhakRUVUl6SW10L3Y3VFhuZW1McWRueTdDQ2JIQWdFUk1JR2NNR3NHQnlzR0FRVWdBZ0VCXAotQWY4RVhZaGJpVEdLQ0VsRVJVNVVTVlJaaXlVdlJXNWtiM0p6WlVObGNuUnBabWxqWVhSbFZHVnpkSE12Ulc1alwKLWIyUmxSR1ZqYjJSbGlSYUtDR2h2YldWd1lXZGxpd3BOZVVodmJXVlFZV2RsaVE2S0JHNWhiV1dMQmsxNVRtRnRcCi1aVEF0QmdjckJnRUZJQUlDQVFIL0JCK01IWXNMYVc1emRHbDBkWFJwYjI2TEJXZHliM1Z3aXdkaFpIWnBjMjl5XAotRmdNYkFRQVhJSGFsRDJOVXpNN2FiWDZRWSsycVdOTFZNQytjaDJ4blZ5cmxmODlaSC9JViIpOworc3RkOjpzdHJpbmcKK2dldFRlc3RGaWxlKHN0ZDo6c3RyaW5nIHBhdGgpIHsKKyAgc3RkOjppZnN0cmVhbSB0KHBhdGgpOworICBzdGQ6OnN0cmluZ3N0cmVhbSBidWZmZXI7CisgIGJ1ZmZlciA8PCB0LnJkYnVmKCk7CisgIHJldHVybiBidWZmZXIuc3RyKCk7Cit9CiAKIEJPT1NUX0FVVE9fVEVTVF9DQVNFKElkQ2VydCkKIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdElkQ2VydCA9IGdldFRlc3RGaWxlKCJ0ZXN0L2NlcnQvdGVzdGlkLmNlcnQiKTsKICAgYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtPGJvb3N0Ojppb3N0cmVhbXM6OmFycmF5X3NvdXJjZT4gaXModGVzdElkQ2VydC5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0SWRDZXJ0LnNpemUoKSk7Ci0gIHNoYXJlZF9wdHI8SWRlbnRpdHlDZXJ0aWZpY2F0ZT4gaWRDZXJ0ID0gbmRuOjppbzo6bG9hZDxJZGVudGl0eUNlcnRpZmljYXRlPihpcyk7CisgIHN0ZDo6c2hhcmVkX3B0cjxDZXJ0aWZpY2F0ZT4gaWRDZXJ0ID0gbmRuOjppbzo6bG9hZDxDZXJ0aWZpY2F0ZT4oaXMpOwogCiAgIEJPT1NUX0NIRUNLKHN0YXRpY19jYXN0PGJvb2w+KGlkQ2VydCkpOwogCi0gIGNvbnN0IG5kbjo6Q2VydGlmaWNhdGU6OlN1YmplY3REZXNjcmlwdGlvbkxpc3QmIHN1YmplY3REZXNjcmlwdGlvbiA9Ci0gICAgaWRDZXJ0LT5nZXRTdWJqZWN0RGVzY3JpcHRpb25MaXN0KCk7Ci0gIEJPT1NUX0NIRUNLX0VRVUFMKHN1YmplY3REZXNjcmlwdGlvbi5zaXplKCksIDYpOwotCi0gIG5kbjo6Q2VydGlmaWNhdGU6OlN1YmplY3REZXNjcmlwdGlvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ICA9IHN1YmplY3REZXNjcmlwdGlvbi5iZWdpbigpOwotICBuZG46OkNlcnRpZmljYXRlOjpTdWJqZWN0RGVzY3JpcHRpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBzdWJqZWN0RGVzY3JpcHRpb24uZW5kKCk7Ci0gIGludCBjb3VudCA9IDA7Ci0gIGZvcig7IGl0ICE9IGVuZDsgaXQrKykKLSAgICB7Ci0gICAgICBpZihpdC0+Z2V0T2lkU3RyaW5nKCkgPT0gIjIuNS40LjQxIikKLSAgICAgICAgewotICAgICAgICAgIEJPT1NUX0NIRUNLX0VRVUFMKGl0LT5nZXRWYWx1ZSgpLCAiTXlOYW1lIik7Ci0gICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotICAgICAgaWYoaXQtPmdldE9pZFN0cmluZygpID09ICIyLjUuNC4xMSIpCi0gICAgICAgIHsKLSAgICAgICAgICBCT09TVF9DSEVDS19FUVVBTChpdC0+Z2V0VmFsdWUoKSwgIk15SW5zdGl0dXRlIik7Ci0gICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotICAgICAgaWYoaXQtPmdldE9pZFN0cmluZygpID09ICIyLjUuNC4xIikKLSAgICAgICAgewotICAgICAgICAgIEJPT1NUX0NIRUNLX0VRVUFMKGl0LT5nZXRWYWx1ZSgpLCAiTXlHcm91cCIpOwotICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLSAgICAgIGlmKGl0LT5nZXRPaWRTdHJpbmcoKSA9PSAiMi41LjQuMyIpCi0gICAgICAgIHsKLSAgICAgICAgICBCT09TVF9DSEVDS19FUVVBTChpdC0+Z2V0VmFsdWUoKSwgIk15SG9tZVBhZ2UiKTsKLSAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9Ci0gICAgICBpZihpdC0+Z2V0T2lkU3RyaW5nKCkgPT0gIjIuNS40LjgwIikKLSAgICAgICAgewotICAgICAgICAgIEJPT1NUX0NIRUNLX0VRVUFMKGl0LT5nZXRWYWx1ZSgpLCAiTXlBZHZpc29yIik7Ci0gICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotICAgICAgaWYoaXQtPmdldE9pZFN0cmluZygpID09ICIxLjIuODQwLjExMzU0OS4xLjkuMSIpCi0gICAgICAgIHsKLSAgICAgICAgICBCT09TVF9DSEVDS19FUVVBTChpdC0+Z2V0VmFsdWUoKSwgIk15RW1haWwiKTsKLSAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9Ci0gICAgfQotICBCT09TVF9DSEVDS19FUVVBTChjb3VudCwgNik7Ci0KICAgQk9PU1RfQ0hFQ0tfRVFVQUwoaWRDZXJ0LT5nZXROYW1lKCkudG9VcmkoKSwKLSAgICAiL0VuZG9yc2VDZXJ0aWZpY2F0ZVRlc3RzL0tFWS9FbmNvZGVEZWNvZGUva3NrLTEzOTQwNzIxNDczMzUvSUQtQ0VSVC8lRkQlMDFEJTk1JTJDJUQ1JUU4Iik7Ci0KLSAgbmRuOjpPQnVmZmVyU3RyZWFtIGtleU9zOwotICB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyeXB0b1BQOwotICAgIFN0cmluZ1NvdXJjZSh0ZXN0S2V5LCB0cnVlLCBuZXcgQmFzZTY0RGVjb2RlcihuZXcgRmlsZVNpbmsoa2V5T3MpKSk7Ci0gIH0KLSAgbmRuOjpQdWJsaWNLZXkga2V5KGtleU9zLmJ1ZigpLT5idWYoKSwga2V5T3MuYnVmKCktPnNpemUoKSk7Ci0gIEJPT1NUX0NIRUNLKGtleSA9PSBpZENlcnQtPmdldFB1YmxpY0tleUluZm8oKSk7CisgICAgIi9FbmRvcnNlQ2VydGlmaWNhdGVUZXN0cy9LRVkvNiVDNyVFMyUwNiVFQyU4Q0IlM0Qvc2VsZi8lRkQlMDAlMDAlMDF1JUQ1NWElQjMiKTsKIH0KIAogQk9PU1RfQVVUT19URVNUX0NBU0UoQ29uc3RydWN0RnJvbUlkQ2VydCkKIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdElkQ2VydCA9IGdldFRlc3RGaWxlKCJ0ZXN0L2NlcnQvdGVzdGlkLmNlcnQiKTsKICAgYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtPGJvb3N0Ojppb3N0cmVhbXM6OmFycmF5X3NvdXJjZT4gaXModGVzdElkQ2VydC5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0SWRDZXJ0LnNpemUoKSk7Ci0gIHNoYXJlZF9wdHI8SWRlbnRpdHlDZXJ0aWZpY2F0ZT4gaWRDZXJ0ID0gbmRuOjppbzo6bG9hZDxJZGVudGl0eUNlcnRpZmljYXRlPihpcyk7CisgIHN0ZDo6c2hhcmVkX3B0cjxDZXJ0aWZpY2F0ZT4gaWRDZXJ0ID0gbmRuOjppbzo6bG9hZDxDZXJ0aWZpY2F0ZT4oaXMpOwogCiAgIFByb2ZpbGUgcHJvZmlsZSgqaWRDZXJ0KTsKICAgdmVjdG9yPHN0cmluZz4gZW5kb3JzZUxpc3Q7CkBAIC0xNTMsMzIgKzY4LDM3IEBACiAgIGVuZG9yc2VMaXN0LnB1c2hfYmFjaygiaG9tZXBhZ2UiKTsKICAgRW5kb3JzZUNlcnRpZmljYXRlIGVuZG9yc2VDZXJ0aWZpY2F0ZSgqaWRDZXJ0LCBwcm9maWxlLCBlbmRvcnNlTGlzdCk7CiAKLSAgYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGgga2V5Q2hhaW5UbXBQYXRoID0KLSAgICBib29zdDo6ZmlsZXN5c3RlbTo6cGF0aChURVNUX0NFUlRfUEFUSCkgLyAiVGVzdEVuZG9yc2VDZXJ0aWZpY2F0ZSI7Ci0gIEtleUNoYWluIGtleUNoYWluKHN0ZDo6c3RyaW5nKCJzcWxpdGUzOiIpLmFwcGVuZChrZXlDaGFpblRtcFBhdGguc3RyaW5nKCkpLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygidHBtLWZpbGU6IikuYXBwZW5kKGtleUNoYWluVG1wUGF0aC5zdHJpbmcoKSkpOworICBLZXlDaGFpbiBrZXlDaGFpbigicGliLW1lbW9yeToiLCAidHBtLW1lbW9yeToiKTsKIAotICBrZXlDaGFpbi5zaWduV2l0aFNoYTI1NihlbmRvcnNlQ2VydGlmaWNhdGUpOworICBhdXRvIHNpZ25PcHRzID0gbmRuOjpzZWN1cml0eTo6U2lnbmluZ0luZm8obmRuOjpzZWN1cml0eTo6U2lnbmluZ0luZm86OlNpZ25lclR5cGU6OlNJR05FUl9UWVBFX1NIQTI1Nik7CisgIGtleUNoYWluLnNpZ24oZW5kb3JzZUNlcnRpZmljYXRlLCBzaWduT3B0cy5zZXRTaWduYXR1cmVJbmZvKGVuZG9yc2VDZXJ0aWZpY2F0ZS5nZXRTaWduYXR1cmVJbmZvKCkpKTsKICAgY29uc3QgQmxvY2smIGVuZG9yc2VEYXRhQmxvY2sgPSBlbmRvcnNlQ2VydGlmaWNhdGUud2lyZUVuY29kZSgpOwogCiAgIERhdGEgZGVjb2RlZEVuZG9yc2VEYXRhOwogICBkZWNvZGVkRW5kb3JzZURhdGEud2lyZURlY29kZShlbmRvcnNlRGF0YUJsb2NrKTsKICAgRW5kb3JzZUNlcnRpZmljYXRlIGRlY29kZWRFbmRvcnNlKGRlY29kZWRFbmRvcnNlRGF0YSk7CiAgIEJPT1NUX0NIRUNLX0VRVUFMKGRlY29kZWRFbmRvcnNlLmdldFByb2ZpbGUoKS5nZXQoIklERU5USVRZIiksCi0gICAgICAgICAgICAgICAgICAgICIvRW5kb3JzZUNlcnRpZmljYXRlVGVzdHMvRW5jb2RlRGVjb2RlIik7Ci0gIEJPT1NUX0NIRUNLX0VRVUFMKGRlY29kZWRFbmRvcnNlLmdldFByb2ZpbGUoKS5nZXQoIm5hbWUiKSwgIk15TmFtZSIpOwotICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRQcm9maWxlKCkuZ2V0KCJob21lcGFnZSIpLCAiTXlIb21lUGFnZSIpOworICAgICAgICAgICAgICAgICAgICAiL0VuZG9yc2VDZXJ0aWZpY2F0ZVRlc3RzIik7CiAgIEJPT1NUX0NIRUNLX0VRVUFMKGRlY29kZWRFbmRvcnNlLmdldEVuZG9yc2VMaXN0KCkuc2l6ZSgpLCAyKTsKICAgQk9PU1RfQ0hFQ0tfRVFVQUwoZGVjb2RlZEVuZG9yc2UuZ2V0RW5kb3JzZUxpc3QoKS5hdCgwKSwgImVtYWlsIik7CiAgIEJPT1NUX0NIRUNLX0VRVUFMKGRlY29kZWRFbmRvcnNlLmdldEVuZG9yc2VMaXN0KCkuYXQoMSksICJob21lcGFnZSIpOwogICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRTaWduZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgIi9FbmRvcnNlQ2VydGlmaWNhdGVUZXN0cy9FbmNvZGVEZWNvZGUva3NrLTEzOTQwNzIxNDczMzUiKTsKLSAgQk9PU1RfQ0hFQ0tfRVFVQUwoZGVjb2RlZEVuZG9yc2UuZ2V0UHVibGljS2V5TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAiL0VuZG9yc2VDZXJ0aWZpY2F0ZVRlc3RzL0VuY29kZURlY29kZS9rc2stMTM5NDA3MjE0NzMzNSIpOworICAgICAgICAgICAgICAgICAgICAiL0VuZG9yc2VDZXJ0aWZpY2F0ZVRlc3RzL0tFWS82JUM3JUUzJTA2JUVDJThDQiUzRCIpOworICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRLZXlOYW1lKCksCisgICAgICAgICAgICAgICAgICAgICIvRW5kb3JzZUNlcnRpZmljYXRlVGVzdHMvUFJPRklMRS1DRVJUL0tFWS82JUM3JUUzJTA2JUVDJThDQiUzRCIpOworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RJZEtleSA9IGdldFRlc3RGaWxlKCJ0ZXN0L2NlcnQvdGVzdGlkLmtleSIpOworICBuZG46Ok9CdWZmZXJTdHJlYW0ga2V5T3M7CisgIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ3J5cHRvUFA7CisgICAgU3RyaW5nU291cmNlKHRlc3RJZEtleSwgdHJ1ZSwgbmV3IEJhc2U2NERlY29kZXIobmV3IEZpbGVTaW5rKGtleU9zKSkpOworICB9CisgIEJPT1NUX0NIRUNLKGlkQ2VydC0+Z2V0UHVibGljS2V5KCkgPT0gKmtleU9zLmJ1ZigpKTsKIH0KIAogQk9PU1RfQVVUT19URVNUX0NBU0UoQ29uc3RydWN0RnJvbUVuZG9yc2VDZXJ0KQogeworICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RW5kb3JzZUNlcnQgPSBnZXRUZXN0RmlsZSgidGVzdC9jZXJ0L2VuZG9yc2UuY2VydCIpOwogICBib29zdDo6aW9zdHJlYW1zOjpzdHJlYW08Ym9vc3Q6Omlvc3RyZWFtczo6YXJyYXlfc291cmNlPiBpcyh0ZXN0RW5kb3JzZUNlcnQuY19zdHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEVuZG9yc2VDZXJ0LnNpemUoKSk7CiAgIHNoYXJlZF9wdHI8RGF0YT4gcmF3RGF0YSA9IG5kbjo6aW86OmxvYWQ8RGF0YT4oaXMpOwpAQCAtMTkxLDEyICsxMTEsMTAgQEAKICAgTmFtZSBzaWduZXIoIi9FbmRvcnNlQ2VydGlmaWNhdGVUZXN0cy9TaW5nZXIva3NrLTEyMzQ1Njc4OTAiKTsKICAgRW5kb3JzZUNlcnRpZmljYXRlIGVuZG9yc2VDZXJ0aWZpY2F0ZShyYXdFbmRvcnNlLCBzaWduZXIsIGVuZG9yc2VMaXN0KTsKIAotICBib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCBrZXlDaGFpblRtcFBhdGggPQotICAgIGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoKFRFU1RfQ0VSVF9QQVRIKSAvICJUZXN0RW5kb3JzZUNlcnRpZmljYXRlIjsKLSAgS2V5Q2hhaW4ga2V5Q2hhaW4oc3RkOjpzdHJpbmcoInNxbGl0ZTM6IikuYXBwZW5kKGtleUNoYWluVG1wUGF0aC5zdHJpbmcoKSksCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCJ0cG0tZmlsZToiKS5hcHBlbmQoa2V5Q2hhaW5UbXBQYXRoLnN0cmluZygpKSk7CisgIEtleUNoYWluIGtleUNoYWluKCJwaWItbWVtb3J5OiIsICJ0cG0tbWVtb3J5OiIpOwogCi0gIGtleUNoYWluLnNpZ25XaXRoU2hhMjU2KGVuZG9yc2VDZXJ0aWZpY2F0ZSk7CisgIGF1dG8gc2lnbk9wdHMgPSBuZG46OnNlY3VyaXR5OjpTaWduaW5nSW5mbyhuZG46OnNlY3VyaXR5OjpTaWduaW5nSW5mbzo6U2lnbmVyVHlwZTo6U0lHTkVSX1RZUEVfU0hBMjU2KTsKKyAga2V5Q2hhaW4uc2lnbihlbmRvcnNlQ2VydGlmaWNhdGUsIHNpZ25PcHRzLnNldFNpZ25hdHVyZUluZm8oZW5kb3JzZUNlcnRpZmljYXRlLmdldFNpZ25hdHVyZUluZm8oKSkpOwogCiAgIGNvbnN0IEJsb2NrJiBlbmRvcnNlRGF0YUJsb2NrID0gZW5kb3JzZUNlcnRpZmljYXRlLndpcmVFbmNvZGUoKTsKIApAQCAtMjA0LDE3ICsxMjIsMTUgQEAKICAgZGVjb2RlZEVuZG9yc2VEYXRhLndpcmVEZWNvZGUoZW5kb3JzZURhdGFCbG9jayk7CiAgIEVuZG9yc2VDZXJ0aWZpY2F0ZSBkZWNvZGVkRW5kb3JzZShkZWNvZGVkRW5kb3JzZURhdGEpOwogICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRQcm9maWxlKCkuZ2V0KCJJREVOVElUWSIpLAotICAgICAgICAgICAgICAgICAgICAiL0VuZG9yc2VDZXJ0aWZpY2F0ZVRlc3RzL0VuY29kZURlY29kZSIpOwotICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRQcm9maWxlKCkuZ2V0KCJuYW1lIiksICJNeU5hbWUiKTsKLSAgQk9PU1RfQ0hFQ0tfRVFVQUwoZGVjb2RlZEVuZG9yc2UuZ2V0UHJvZmlsZSgpLmdldCgiaG9tZXBhZ2UiKSwgIk15SG9tZVBhZ2UiKTsKKyAgICAgICAgICAgICAgICAgICAgIi9FbmRvcnNlQ2VydGlmaWNhdGVUZXN0cyIpOwogICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRFbmRvcnNlTGlzdCgpLnNpemUoKSwgMyk7CiAgIEJPT1NUX0NIRUNLX0VRVUFMKGRlY29kZWRFbmRvcnNlLmdldEVuZG9yc2VMaXN0KCkuYXQoMCksICJpbnN0aXR1dGlvbiIpOwogICBCT09TVF9DSEVDS19FUVVBTChkZWNvZGVkRW5kb3JzZS5nZXRFbmRvcnNlTGlzdCgpLmF0KDEpLCAiZ3JvdXAiKTsKICAgQk9PU1RfQ0hFQ0tfRVFVQUwoZGVjb2RlZEVuZG9yc2UuZ2V0RW5kb3JzZUxpc3QoKS5hdCgyKSwgImFkdmlzb3IiKTsKICAgQk9PU1RfQ0hFQ0tfRVFVQUwoZGVjb2RlZEVuZG9yc2UuZ2V0U2lnbmVyKCksCiAgICAgICAgICAgICAgICAgICAgICIvRW5kb3JzZUNlcnRpZmljYXRlVGVzdHMvU2luZ2VyL2tzay0xMjM0NTY3ODkwIik7Ci0gIEJPT1NUX0NIRUNLX0VRVUFMKGRlY29kZWRFbmRvcnNlLmdldFB1YmxpY0tleU5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgIi9FbmRvcnNlQ2VydGlmaWNhdGVUZXN0cy9FbmNvZGVEZWNvZGUva3NrLTEzOTQwNzIxNDczMzUiKTsKKyAgQk9PU1RfQ0hFQ0tfRVFVQUwoZGVjb2RlZEVuZG9yc2UuZ2V0S2V5TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAiL0VuZG9yc2VDZXJ0aWZpY2F0ZVRlc3RzL0tFWS82JUM3JUUzJTA2JUVDJThDQiUzRCIpOwogfQogCiBCT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EKCkKZGlmZiAtLWdpdCBhL3dhZiBiL3dhZgppbmRleCBlZjlkZjM4Li5hMWM1Yzk2IDEwMDc1NQotLS0gYS93YWYKKysrIGIvd2FmCkBAIC0xLDcgKzEsNyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIGVuY29kaW5nOiBJU084ODU5LTEKLSMgVGhvbWFzIE5hZ3ksIDIwMDUtMjAxNAotCisjIS91c3IvYmluL2VudiBweXRob24zCisjIGVuY29kaW5nOiBsYXRpbi0xCisjIFRob21hcyBOYWd5LCAyMDA1LTIwMTgKKyMKICIiIgogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEyICszMiwxMyBAQAogCiBpbXBvcnQgb3MsIHN5cywgaW5zcGVjdAogCi1WRVJTSU9OPSIxLjguMiIKLVJFVklTSU9OPSJhMDFhYTEzOTYzNDM3YTE5ZTVkODc0OGNmMmFmZDcxYiIKK1ZFUlNJT049IjIuMC4xOSIKK1JFVklTSU9OPSIxZjNjNTgwMjcyYjE1YTAzZDI1NjY4NDNjNWZlODcyYSIKK0dJVD0iNjFlZTIyYjU5OGNmODBlMjYwYmViNjRlNDc1OTY2ZjU4YjMwNGQwZCIKIElOU1RBTEw9JycKLUMxPScjLycKK0MxPScjNicKIEMyPScjLicKLUMzPScjKScKK0MzPScjJScKIGN3ZCA9IG9zLmdldGN3ZCgpCiBqb2luID0gb3MucGF0aC5qb2luCiAKQEAgLTEzOSw2ICsxNDAsOSBAQAogCWlmIG5hbWUuZW5kc3dpdGgoJ3dhZi1saWdodCcpOgogCQl3ID0gdGVzdChiYXNlKQogCQlpZiB3OiByZXR1cm4gdworCQlmb3IgZGlyIGluIHN5cy5wYXRoOgorCQkJaWYgdGVzdChkaXIpOgorCQkJCXJldHVybiBkaXIKIAkJZXJyKCd3YWYtbGlnaHQgcmVxdWlyZXMgd2FmbGliIC0+IGV4cG9ydCBXQUZESVI9L2ZvbGRlcicpCiAKIAlkaXJuYW1lID0gJyVzLSVzLSVzJyAlIChXQUYsIFZFUlNJT04sIFJFVklTSU9OKQpAQCAtMTY0LDUgKzE2OCw2IEBACiAJU2NyaXB0aW5nLndhZl9lbnRyeV9wb2ludChjd2QsIFZFUlNJT04sIHdhZmRpcikKIAogIz09PgotI0JaaDkxQVkmU1mdyUx0AyLv////vAJAf///////////////kIYGoqZ4gBKBIykBITIEhFhh6Vz3eKwcIykjKSMpIykjKSMpIykjKSMpIykjKSMpIykjKSMpIykjKSMpIykvuvrVPVvde3ue0uGvWrtt5cuzXTl5m2+PM89aHt27vfX3U9L7NUttu7b3156j3zTg1kzVl3MOql9eL17cJi7rbZh9K9xlIyk6enu3oe2qHuwc97rsVWetlTp22mk+e9eNmNfN3ufB7z5qV2z6++33xoa7t33dd732cPQDWdvG3truxz7vr228Bdh2LLZ1yCMpIykjLiMpIyl57CMpg8lsgCPIKAYBTdvewpzAF1nGYMsnRl3bZ7nuoaAHtgaDXOq2Iy4GAULtqRKhSQUjKddDdhZmFCiSqhICUl3t0k9jQVSUApSVBRVRWslJIy43oG2Dy22q6e3cPHr3jr1bds4W7OoFrGQVtmjSTRJ5VSxqpnpTLx7dvXt33307fdu63HsZfPufXtZZfWu87Y7zN1r2s07su1tW827fYr73c60br1cO27Zo5CMpUqbGqBAjL6KCeySQUYeVm5ncu68zxoAjKaF7d7MVHSW2ZIlre9u923ABoCQEBFVQAd5nu5pdW2mtjpm9uie52u3O3vDJ3reHW71u993m27fO31lVSJI6bFbW7dSamNdt8t1vbTtncHOzOh3J3x71T2tsrvXjeN973Pfatd7e9VhaY8qe3NemvI1KQCMvVSb73jyZNfX28709UK6T273Djm+zvvJ2fXvWd1zne9ve7XU96a+97zU+93ez1x2+1mnbB3u6rWe6u97sfevcC29KHe3irnme7cV2O7eR69s297xq9qq0pbx1ts7tvqqVQpJuN27vfc1zs++e7117593Z70le3s4+2ePl2zS4t92jXbR3dtldy57uNr3nXb130zABek+e83vM9m+D24N03NOAUAKhUKCUC9h3ZrJpu3KOtiMvuXW0nOcfRub5HT0d9vI8updV873nldvSpTitrMGlEZe2xkqPviy23nxz3zRQU99c6FQjKYfeze7lfd3ed74++9tc4Hjvvu7xe51Evdhbro+605vvbbUdb3dibqMaDwIjLzbPXpe7tdnJq4HJvb7vdVfRX3uu8z728TJ96+H0gAPV6++u71evUde70D32b6lffbuwerW7alt9aO3u5733ffbt3S63utz3W8d3D651t7TfbDa153c54XtbTk9y2bXk77aq0jb2F27mUE+s05UsGut9eD4mgwnTQ+q8NR9bjLTY1fds85573sHwogdAafEjLjr5pp19c3u4Psp2507e9nOb0x6bxVufcZyr3xJtbvd3vdn19Wnzzje9J99Yffe7QbdcA6UGyymlDKL7He1vfWL591SJ9b2AAcWEKfWh7g+2A8joKaUBsyXas97zu7APNk7ud56sabz7W++84DIFB0LNVCtnIfew4+UL04e3rHbudzQ9LnObpXNvuo9Z3dbd6b20KKpIvXbidou3Kp3Z95uaE+zn092sq69ze6yu+x7Z73d3r7713jtfHOvfTqVferdm597a926pTpydO97d5FO9itOq1elevt4y3XZ73u3J95r77EtRbVyvI7163eTdg+oa+LQlNEIjKSABIykEIykRoAjJo0AjKSaNTCamnqmjTygaD1DTE00PU9DUEpoEEQICEwiaaZApgSemjTUYo02p6T0hp6hoeoGh6iMpIykjKSMpIykJBIiCAiMpImITMiNqVPyntVPNE9KZ6mmUekbU8o9TIBoHqCMpyAaAIykjKUnqlJIJqmp+VB+qPaU2p6ahp6mj0iMpGRojKRojKSMpIyk9QAGQIykjKSMpAhSRAiMpgaARpppNGiMpTQJgTSYaT0yQnlGynpNpD1AjKSMpGSMpGgEmoiCAgCNAJpk0IBHpU/VPaKbUj2UR6g/VGnqeppvSm1AjKSMpIynQIykjKX/7fNv6tttXdEk/s5J3VjVzWs3fb22puyWJo+G21OUpKSCKWhAki4KiIyl7VkAT5fb88s5YP+bsv2VCPzj9MEzY46mHmi4khTVkxguViIOMxTNkj4Jvjef3Dp9B/7STnxBS+aQgOoJdWIFBIym7LwO+XwzdhHNFvhNNzLrUcbeqpYyO0jjmnMjz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RXRoc1ZtR0o1UXFWd01Cd2dqMit5NUZPVHpGZnhtcUJcbnJXZ2pGWVMwbDg1a2dZUlp2OXl6ZE5tRnM1U1Njd2Fmd3BUOFhtZHI0OXRGbi8rMEx4WHlSeFgrcmRPRGdycFZcblk0RU9pUXowZmQ2bU1NbmFURFhsTFNYbHMzSnlWWW1iVGplTkwvOWdjSG1uU3R6Sjg1MUNKUWZ5UWc3QStKb0NcbmM3bnowSGJpRnlUZ0IrUFVacjFPaEdqM0E3Mjg3bzhYUTB0cVIzb2E3alhJT1gwT3luckdwbE1RS3IrKzBqRTFcbkJnS3pqTG9FOUNUYmprUWZJQ0xHK2FVeTNTMVp5RGsvQmNPKzUrWXRicnUrcVh1RHNJZ0FkVm9zTWZOU3Y5akpcblh2T0lOc2JSTWVrZGVqWU1adjhmSWtuNU9FakNGSFZoTnBvYkVzQ2I3NjhiakIzcDdhbFFHRUNCdmpIQ202ZHlcblhaUHpsOWNCTVdJWGNCalBUUytHWmorUElYR2N1NzZwYnN4NkhCSFdmK3VKKzR4Z09zVUNWdS8vMEFWMDlqdkFcbjBNanRMV3dROG1kUkg2V3Q0aHNwNEhLdFN2UXJobWxqZjJPbnVZQmdhRm1jZEprTjF6ST1cbj1DMG9UXG4tLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS1cbgpkaWZmIC0tZ2l0IGEvd2FmLXRvb2xzL2RlZmF1bHQtY29tcGlsZXItZmxhZ3MucHkgYi93YWYtdG9vbHMvZGVmYXVsdC1jb21waWxlci1mbGFncy5weQppbmRleCAxOTBjOWExLi5jN2I0YzJjIDEwMDY0NAotLS0gYS93YWYtdG9vbHMvZGVmYXVsdC1jb21waWxlci1mbGFncy5weQorKysgYi93YWYtdG9vbHMvZGVmYXVsdC1jb21waWxlci1mbGFncy5weQpAQCAtOCwxMCArOCw4IEBACiAKIGRlZiBjb25maWd1cmUoY29uZik6CiAgICAgYXJlQ3VzdG9tQ3h4ZmxhZ3NQcmVzZW50ID0gKGxlbihjb25mLmVudi5DWFhGTEFHUykgPiAwKQotICAgIGRlZmF1bHRGbGFncyA9IFsnLXN0ZD1jKysweCcsICctc3RkPWMrKzExJywKLSAgICAgICAgICAgICAgICAgICAgJy1zdGRsaWI9bGliYysrJywgICAjIGNsYW5nIG9uIE9TWCA8IDEwLjkgYnkgZGVmYXVsdCB1c2VzIGdjYydzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsaWJzdGRjKyssIHdoaWNoIGlzIG5vdCBDKysxMSBjb21wYXRpYmxlCi0gICAgICAgICAgICAgICAgICAgICctV2FsbCcsICctV25vLW5lc3RlZC1hbm9uLXR5cGVzJ10KKyAgICBkZWZhdWx0RmxhZ3MgPSBbJy1zdGQ9YysrMTQnLAorICAgICAgICAgICAgICAgICAgICAnLVdhbGwnXQogCiAgICAgaWYgY29uZi5vcHRpb25zLmRlYnVnOgogICAgICAgICBjb25mLmRlZmluZSgnX0RFQlVHJywgMSkKZGlmZiAtLWdpdCBhL3dhZi10b29scy9xdDUucHkgYi93YWYtdG9vbHMvcXQ1LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZmYwYjgKLS0tIC9kZXYvbnVsbAorKysgYi93YWYtdG9vbHMvcXQ1LnB5CkBAIC0wLDAgKzEsODE2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IHV0Zi04CisjIFRob21hcyBOYWd5LCAyMDA2LTIwMTggKGl0YSkKKworIiIiCitUaGlzIHRvb2wgaGVscHMgd2l0aCBmaW5kaW5nIFF0NSB0b29scyBhbmQgbGlicmFyaWVzLAorYW5kIGFsc28gcHJvdmlkZXMgc3ludGFjdGljIHN1Z2FyIGZvciB1c2luZyBRdDUgdG9vbHMuCisKK1RoZSBmb2xsb3dpbmcgc25pcHBldCBpbGx1c3RyYXRlcyB0aGUgdG9vbCB1c2FnZTo6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCQlvcHQubG9hZCgnY29tcGlsZXJfY3h4IHF0NScpCisKKwlkZWYgY29uZmlndXJlKGNvbmYpOgorCQljb25mLmxvYWQoJ2NvbXBpbGVyX2N4eCBxdDUnKQorCisJZGVmIGJ1aWxkKGJsZCk6CisJCWJsZCgKKwkJCWZlYXR1cmVzID0gJ3F0NSBjeHggY3h4cHJvZ3JhbScsCisJCQl1c2VsaWIgICA9ICdRVDVDT1JFIFFUNUdVSSBRVDVPUEVOR0wgUVQ1U1ZHJywKKwkJCXNvdXJjZSAgID0gJ21haW4uY3BwIHRleHR1cmVzLnFyYyBhYm91dERpYWxvZy51aScsCisJCQl0YXJnZXQgICA9ICd3aW5kb3cnLAorCQkpCisKK0hlcmUsIHRoZSBVSSBkZXNjcmlwdGlvbiBhbmQgcmVzb3VyY2UgZmlsZXMgd2lsbCBiZSBwcm9jZXNzZWQKK3RvIGdlbmVyYXRlIGNvZGUuCisKK1VzYWdlCis9PT09PQorCitMb2FkIHRoZSAicXQ1IiB0b29sLgorCitZb3UgYWxzbyBuZWVkIHRvIGVkaXQgeW91ciBzb3VyY2VzIGFjY29yZGluZ2x5OgorCistIHRoZSBub3JtYWwgd2F5IG9mIGRvaW5nIHRoaW5ncyBpcyB0byBoYXZlIHlvdXIgQysrIGZpbGVzCisgIGluY2x1ZGUgdGhlIC5tb2MgZmlsZS4KKyAgVGhpcyBpcyByZWdhcmRlZCBhcyB0aGUgYmVzdCBwcmFjdGljZSAoYW5kIHByb3ZpZGVzIG11Y2ggZmFzdGVyCisgIGNvbXBpbGF0aW9ucykuCisgIEl0IGFsc28gaW1wbGllcyB0aGF0IHRoZSBpbmNsdWRlIHBhdGhzIGhhdmUgYmVlbnNldCBwcm9wZXJseS4KKworLSB0byBoYXZlIHRoZSBpbmNsdWRlIHBhdGhzIGFkZGVkIGF1dG9tYXRpY2FsbHksIHVzZSB0aGUgZm9sbG93aW5nOjoKKworICAgICBmcm9tIHdhZmxpYi5UYXNrR2VuIGltcG9ydCBmZWF0dXJlLCBiZWZvcmVfbWV0aG9kLCBhZnRlcl9tZXRob2QKKyAgICAgQGZlYXR1cmUoJ2N4eCcpCisgICAgIEBhZnRlcl9tZXRob2QoJ3Byb2Nlc3Nfc291cmNlJykKKyAgICAgQGJlZm9yZV9tZXRob2QoJ2FwcGx5X2luY3BhdGhzJykKKyAgICAgZGVmIGFkZF9pbmNsdWRlc19wYXRocyhzZWxmKToKKyAgICAgICAgaW5jcyA9IHNldChzZWxmLnRvX2xpc3QoZ2V0YXR0cihzZWxmLCAnaW5jbHVkZXMnLCAnJykpKQorICAgICAgICBmb3IgeCBpbiBzZWxmLmNvbXBpbGVkX3Rhc2tzOgorICAgICAgICAgICAgaW5jcy5hZGQoeC5pbnB1dHNbMF0ucGFyZW50LnBhdGhfZnJvbShzZWxmLnBhdGgpKQorICAgICAgICBzZWxmLmluY2x1ZGVzID0gc29ydGVkKGluY3MpCisKK05vdGU6IGFub3RoZXIgdG9vbCBwcm92aWRlcyBRdCBwcm9jZXNzaW5nIHRoYXQgZG9lcyBub3QgcmVxdWlyZQorLm1vYyBpbmNsdWRlcywgc2VlICdwbGF5Z3JvdW5kL3Nsb3dfcXQvJy4KKworQSBmZXcgb3B0aW9ucyAoLS1xdHtkaXIsYmluLC4uLn0pIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyhRVDVfe1JPT1QsRElSLE1PQyxVSUMsWENPTVBJTEV9KSBhbGxvdyBmaW5lciB0dW5pbmcgb2YgdGhlIHRvb2wsCit0b29sIHBhdGggc2VsZWN0aW9uLCBldGM7IHBsZWFzZSByZWFkIHRoZSBzb3VyY2UgZm9yIG1vcmUgaW5mby4KKworVGhlIGRldGVjdGlvbiB1c2VzIHBrZy1jb25maWcgb24gTGludXggYnkgZGVmYXVsdC4gVGhlIGxpc3Qgb2YKK2xpYnJhcmllcyB0byBiZSByZXF1ZXN0ZWQgdG8gcGtnLWNvbmZpZyBpcyBmb3JtdWxhdGVkIGJ5IHNjYW5uaW5nCitpbiB0aGUgUVRMSUJTIGRpcmVjdG9yeSAodGhhdCBjYW4gYmUgcGFzc2VkIHZpYSAtLXF0bGlicyBvciBieQorc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUVQ1X0xJQkRJUiBvdGhlcndpc2UgaXMgZGVyaXZlZAorYnkgcXVlcnlpbmcgcW1ha2UgZm9yIFFUX0lOU1RBTExfTElCUyBkaXJlY3RvcnkpIGZvciBzaGFyZWQvc3RhdGljCitsaWJyYXJpZXMgcHJlc2VudC4KK0FsdGVybmF0aXZlbHkgdGhlIGxpc3Qgb2YgbGlicmFyaWVzIHRvIGJlIHJlcXVlc3RlZCB2aWEgcGtnLWNvbmZpZworY2FuIGJlIHNldCB1c2luZyB0aGUgcXQ1X3ZhcnMgYXR0cmlidXRlLCBpZToKKworICAgICAgY29uZi5xdDVfdmFycyA9IFsnUXQ1Q29yZScsICdRdDVHdWknLCAnUXQ1V2lkZ2V0cycsICdRdDVUZXN0J107CisKK1RoaXMgY2FuIHNwZWVkIHVwIGNvbmZpZ3VyYXRpb24gcGhhc2UgaWYgbmVlZGVkIGxpYnJhcmllcyBhcmUKK2tub3duIGJlZm9yZWhhbmQsIGNhbiBpbXByb3ZlIGRldGVjdGlvbiBvbiBzeXN0ZW1zIHdpdGggYQorc3BhcnNlIFFUNSBsaWJyYXJpZXMgaW5zdGFsbGF0aW9uIChpZS4gTklYKSBhbmQgY2FuIGltcHJvdmUKK2RldGVjdGlvbiBvZiBzb21lIGhlYWRlci1vbmx5IFF0IG1vZHVsZXMgKGllLiBRdDVVaVBsdWdpbikuCisKK1RvIGZvcmNlIHN0YXRpYyBsaWJyYXJ5IGRldGVjdGlvbiB1c2U6CitRVDVfWENPTVBJTEU9MSBRVDVfRk9SQ0VfU1RBVElDPTEgd2FmIGNvbmZpZ3VyZQorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKwordHJ5OgorCWZyb20geG1sLnNheCBpbXBvcnQgbWFrZV9wYXJzZXIKKwlmcm9tIHhtbC5zYXguaGFuZGxlciBpbXBvcnQgQ29udGVudEhhbmRsZXIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKwloYXNfeG1sID0gRmFsc2UKKwlDb250ZW50SGFuZGxlciA9IG9iamVjdAorZWxzZToKKwloYXNfeG1sID0gVHJ1ZQorCitpbXBvcnQgb3MsIHN5cywgcmUKK2Zyb20gd2FmbGliLlRvb2xzIGltcG9ydCBjeHgKK2Zyb20gd2FmbGliIGltcG9ydCBCdWlsZCwgVGFzaywgVXRpbHMsIE9wdGlvbnMsIEVycm9ycywgQ29udGV4dAorZnJvbSB3YWZsaWIuVGFza0dlbiBpbXBvcnQgZmVhdHVyZSwgYWZ0ZXJfbWV0aG9kLCBleHRlbnNpb24sIGJlZm9yZV9tZXRob2QKK2Zyb20gd2FmbGliLkNvbmZpZ3VyZSBpbXBvcnQgY29uZgorZnJvbSB3YWZsaWIgaW1wb3J0IExvZ3MKKworTU9DX0ggPSBbJy5oJywgJy5ocHAnLCAnLmh4eCcsICcuaGgnXQorIiIiCitGaWxlIGV4dGVuc2lvbnMgYXNzb2NpYXRlZCB0byAubW9jIGZpbGVzCisiIiIKKworRVhUX1JDQyA9IFsnLnFyYyddCisiIiIKK0ZpbGUgZXh0ZW5zaW9uIGZvciB0aGUgcmVzb3VyY2UgKC5xcmMpIGZpbGVzCisiIiIKKworRVhUX1VJICA9IFsnLnVpJ10KKyIiIgorRmlsZSBleHRlbnNpb24gZm9yIHRoZSB1c2VyIGludGVyZmFjZSAoLnVpKSBmaWxlcworIiIiCisKK0VYVF9RVDUgPSBbJy5jcHAnLCAnLmNjJywgJy5jeHgnLCAnLkMnXQorIiIiCitGaWxlIGV4dGVuc2lvbnMgb2YgQysrIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgYSAubW9jIHByb2Nlc3NpbmcKKyIiIgorCitjbGFzcyBxeHgoVGFzay5jbGFzc2VzWydjeHgnXSk6CisJIiIiCisJRWFjaCBDKysgZmlsZSBjYW4gaGF2ZSB6ZXJvIG9yIHNldmVyYWwgLm1vYyBmaWxlcyB0byBjcmVhdGUuCisJVGhleSBhcmUga25vd24gb25seSB3aGVuIHRoZSBmaWxlcyBhcmUgc2Nhbm5lZCAocHJlcHJvY2Vzc29yKQorCVRvIGF2b2lkIHNjYW5uaW5nIHRoZSBjKysgZmlsZXMgZWFjaCB0aW1lIChwYXJzaW5nIEMvQysrKSwgdGhlIHJlc3VsdHMKKwlhcmUgcmV0cmlldmVkIGZyb20gdGhlIHRhc2sgY2FjaGUgKGJsZC5ub2RlX2RlcHMvYmxkLnJhd19kZXBzKS4KKwlUaGUgbW9jIHRhc2tzIGFyZSBhbHNvIGNyZWF0ZWQgKmR5bmFtaWNhbGx5KiBkdXJpbmcgdGhlIGJ1aWxkLgorCSIiIgorCisJZGVmIF9faW5pdF9fKHNlbGYsICprLCAqKmt3KToKKwkJVGFzay5UYXNrLl9faW5pdF9fKHNlbGYsICprLCAqKmt3KQorCQlzZWxmLm1vY19kb25lID0gMAorCisJZGVmIHJ1bm5hYmxlX3N0YXR1cyhzZWxmKToKKwkJIiIiCisJCUNvbXB1dGUgdGhlIHRhc2sgc2lnbmF0dXJlIHRvIG1ha2Ugc3VyZSB0aGUgc2Nhbm5lciB3YXMgZXhlY3V0ZWQuIENyZWF0ZSB0aGUKKwkJbW9jIHRhc2tzIGJ5IHVzaW5nIDpweTptZXRoOmB3YWZsaWIuVG9vbHMucXQ1LnF4eC5hZGRfbW9jX3Rhc2tzYCAoaWYgbmVjZXNzYXJ5KSwKKwkJdGhlbiBwb3N0cG9uZSB0aGUgdGFzayBleGVjdXRpb24gKHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVjb21wdXRlIHRoZSB0YXNrIHNpZ25hdHVyZSkuCisJCSIiIgorCQlpZiBzZWxmLm1vY19kb25lOgorCQkJcmV0dXJuIFRhc2suVGFzay5ydW5uYWJsZV9zdGF0dXMoc2VsZikKKwkJZWxzZToKKwkJCWZvciB0IGluIHNlbGYucnVuX2FmdGVyOgorCQkJCWlmIG5vdCB0Lmhhc3J1bjoKKwkJCQkJcmV0dXJuIFRhc2suQVNLX0xBVEVSCisJCQlzZWxmLmFkZF9tb2NfdGFza3MoKQorCQkJcmV0dXJuIFRhc2suVGFzay5ydW5uYWJsZV9zdGF0dXMoc2VsZikKKworCWRlZiBjcmVhdGVfbW9jX3Rhc2soc2VsZiwgaF9ub2RlLCBtX25vZGUpOgorCQkiIiIKKwkJSWYgc2V2ZXJhbCBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIGNsYXNzZXMsIGl0IGlzIHBvc3NpYmxlIHRoYXQgbW9jIHdpbGwgcnVuIHNldmVyYWwgdGltZXMgKElzc3VlIDEzMTgpCisJCUl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIGZpbGUgbmFtZXMsIGJ1dCB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlIG1vYyB0cmFuc2Zvcm1hdGlvbiB3aWxsIGJlIGlkZW50aWNhbCwKKwkJYW5kIHRoZSBtb2MgdGFza3MgY2FuIGJlIHNoYXJlZCBpbiBhIGdsb2JhbCBjYWNoZS4KKwkJIiIiCisJCXRyeToKKwkJCW1vY19jYWNoZSA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5tb2NfY2FjaGUKKwkJZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorCQkJbW9jX2NhY2hlID0gc2VsZi5nZW5lcmF0b3IuYmxkLm1vY19jYWNoZSA9IHt9CisKKwkJdHJ5OgorCQkJcmV0dXJuIG1vY19jYWNoZVtoX25vZGVdCisJCWV4Y2VwdCBLZXlFcnJvcjoKKwkJCXRzayA9IG1vY19jYWNoZVtoX25vZGVdID0gVGFzay5jbGFzc2VzWydtb2MnXShlbnY9c2VsZi5lbnYsIGdlbmVyYXRvcj1zZWxmLmdlbmVyYXRvcikKKwkJCXRzay5zZXRfaW5wdXRzKGhfbm9kZSkKKwkJCXRzay5zZXRfb3V0cHV0cyhtX25vZGUpCisJCQl0c2suZW52LmFwcGVuZF91bmlxdWUoJ01PQ19GTEFHUycsICctaScpCisKKwkJCWlmIHNlbGYuZ2VuZXJhdG9yOgorCQkJCXNlbGYuZ2VuZXJhdG9yLnRhc2tzLmFwcGVuZCh0c2spCisKKwkJCSMgZGlyZWN0IGluamVjdGlvbiBpbiB0aGUgYnVpbGQgcGhhc2UgKHNhZmUgYmVjYXVzZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQpCisJCQlnZW4gPSBzZWxmLmdlbmVyYXRvci5ibGQucHJvZHVjZXIKKwkJCWdlbi5vdXRzdGFuZGluZy5hcHBlbmQodHNrKQorCQkJZ2VuLnRvdGFsICs9IDEKKworCQkJcmV0dXJuIHRzaworCisJCWVsc2U6CisJCQkjIHJlbW92ZSB0aGUgc2lnbmF0dXJlLCBpdCBtdXN0IGJlIHJlY29tcHV0ZWQgd2l0aCB0aGUgbW9jIHRhc2sKKwkJCWRlbGF0dHIoc2VsZiwgJ2NhY2hlX3NpZycpCisKKwlkZWYgYWRkX21vY190YXNrcyhzZWxmKToKKwkJIiIiCisJCUNyZWF0ZXMgbW9jIHRhc2tzIGJ5IGxvb2tpbmcgaW4gdGhlIGxpc3Qgb2YgZmlsZSBkZXBlbmRlbmNpZXMgYGBibGQucmF3X2RlcHNbc2VsZi51aWQoKV1gYAorCQkiIiIKKwkJbm9kZSA9IHNlbGYuaW5wdXRzWzBdCisJCWJsZCA9IHNlbGYuZ2VuZXJhdG9yLmJsZAorCisJCSMgc2tpcCBvbiB1bmluc3RhbGwgZHVlIHRvIGdlbmVyYXRlZCBmaWxlcworCQlpZiBibGQuaXNfaW5zdGFsbCA9PSBCdWlsZC5VTklOU1RBTEw6CisJCQlyZXR1cm4KKworCQl0cnk6CisJCQkjIGNvbXB1dGUgdGhlIHNpZ25hdHVyZSBvbmNlIHRvIGtub3cgaWYgdGhlcmUgaXMgYSBtb2MgZmlsZSB0byBjcmVhdGUKKwkJCXNlbGYuc2lnbmF0dXJlKCkKKwkJZXhjZXB0IEtleUVycm9yOgorCQkJIyB0aGUgbW9jIGZpbGUgbWF5IGJlIHJlZmVyZW5jZWQgc29tZXdoZXJlIGVsc2UKKwkJCXBhc3MKKwkJZWxzZToKKwkJCSMgcmVtb3ZlIHRoZSBzaWduYXR1cmUsIGl0IG11c3QgYmUgcmVjb21wdXRlZCB3aXRoIHRoZSBtb2MgdGFzaworCQkJZGVsYXR0cihzZWxmLCAnY2FjaGVfc2lnJykKKworCQlpbmNsdWRlX25vZGVzID0gW25vZGUucGFyZW50XSArIHNlbGYuZ2VuZXJhdG9yLmluY2x1ZGVzX25vZGVzCisKKwkJbW9jdGFza3MgPSBbXQorCQltb2NmaWxlcyA9IHNldCgpCisJCWZvciBkIGluIGJsZC5yYXdfZGVwcy5nZXQoc2VsZi51aWQoKSwgW10pOgorCQkJaWYgbm90IGQuZW5kc3dpdGgoJy5tb2MnKToKKwkJCQljb250aW51ZQorCisJCQkjIHByb2Nlc3MgdGhhdCBiYXNlLm1vYyBvbmx5IG9uY2UKKwkJCWlmIGQgaW4gbW9jZmlsZXM6CisJCQkJY29udGludWUKKwkJCW1vY2ZpbGVzLmFkZChkKQorCisJCQkjIGZpbmQgdGhlIHNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1vYyBmaWxlCisJCQloX25vZGUgPSBOb25lCisJCQliYXNlMiA9IGRbOi00XQorCisJCQkjIGZvby5tb2MgZnJvbSBmb28uY3BwCisJCQlwcmVmaXggPSBub2RlLm5hbWVbOm5vZGUubmFtZS5yZmluZCgnLicpXQorCQkJaWYgYmFzZTIgPT0gcHJlZml4IGFuZCBGYWxzZToKKwkJCQloX25vZGUgPSBub2RlCisJCQllbHNlOgorCQkJCSMgdGhpcyBkZXZpYXRlcyBmcm9tIHRoZSBzdGFuZGFyZAorCQkJCSMgaWYgYmFyLmNwcCBpbmNsdWRlcyBmb28ubW9jLCB0aGVuIGFzc3VtZSBpdCBpcyBmcm9tIGZvby5oCisJCQkJZm9yIHggaW4gaW5jbHVkZV9ub2RlczoKKwkJCQkJZm9yIGUgaW4gTU9DX0g6CisJCQkJCQloX25vZGUgPSB4LmZpbmRfbm9kZShiYXNlMiArIGUpCisJCQkJCQlpZiBoX25vZGU6CisJCQkJCQkJYnJlYWsKKwkJCQkJZWxzZToKKwkJCQkJCWNvbnRpbnVlCisJCQkJCWJyZWFrCisJCQlpZiBoX25vZGU6CisJCQkJbV9ub2RlID0gaF9ub2RlLmNoYW5nZV9leHQoJy5tb2MnKQorCQkJZWxzZToKKwkJCQlyYWlzZSBFcnJvcnMuV2FmRXJyb3IoJ05vIHNvdXJjZSBmb3VuZCBmb3IgJXIgd2hpY2ggaXMgYSBtb2MgZmlsZScgJSBkKQorCisJCQkjIGNyZWF0ZSB0aGUgbW9jIHRhc2sKKwkJCXRhc2sgPSBzZWxmLmNyZWF0ZV9tb2NfdGFzayhoX25vZGUsIG1fbm9kZSkKKwkJCW1vY3Rhc2tzLmFwcGVuZCh0YXNrKQorCisJCSMgc2ltcGxlIHNjaGVkdWxlciBkZXBlbmRlbmN5OiBydW4gdGhlIG1vYyB0YXNrIGJlZm9yZSBvdGhlcnMKKwkJc2VsZi5ydW5fYWZ0ZXIudXBkYXRlKHNldChtb2N0YXNrcykpCisJCXNlbGYubW9jX2RvbmUgPSAxCisKK2NsYXNzIHRyYW5zX3VwZGF0ZShUYXNrLlRhc2spOgorCSIiIlVwZGF0ZXMgYSAudHMgZmlsZXMgZnJvbSBhIGxpc3Qgb2YgQysrIGZpbGVzIiIiCisJcnVuX3N0ciA9ICcke1FUX0xVUERBVEV9ICR7U1JDfSAtdHMgJHtUR1R9JworCWNvbG9yICAgPSAnQkxVRScKKworY2xhc3MgWE1MSGFuZGxlcihDb250ZW50SGFuZGxlcik6CisJIiIiCisJUGFyc2VzIGBgLnFyY2BgIGZpbGVzCisJIiIiCisJZGVmIF9faW5pdF9fKHNlbGYpOgorCQlDb250ZW50SGFuZGxlci5fX2luaXRfXyhzZWxmKQorCQlzZWxmLmJ1ZiA9IFtdCisJCXNlbGYuZmlsZXMgPSBbXQorCWRlZiBzdGFydEVsZW1lbnQoc2VsZiwgbmFtZSwgYXR0cnMpOgorCQlpZiBuYW1lID09ICdmaWxlJzoKKwkJCXNlbGYuYnVmID0gW10KKwlkZWYgZW5kRWxlbWVudChzZWxmLCBuYW1lKToKKwkJaWYgbmFtZSA9PSAnZmlsZSc6CisJCQlzZWxmLmZpbGVzLmFwcGVuZChzdHIoJycuam9pbihzZWxmLmJ1ZikpKQorCWRlZiBjaGFyYWN0ZXJzKHNlbGYsIGNhcnMpOgorCQlzZWxmLmJ1Zi5hcHBlbmQoY2FycykKKworQGV4dGVuc2lvbigqRVhUX1JDQykKK2RlZiBjcmVhdGVfcmNjX3Rhc2soc2VsZiwgbm9kZSk6CisJIkNyZWF0ZXMgcmNjIGFuZCBjeHggdGFza3MgZm9yIGBgLnFyY2BgIGZpbGVzIgorCXJjbm9kZSA9IG5vZGUuY2hhbmdlX2V4dCgnX3JjLiVkLmNwcCcgJSBzZWxmLmlkeCkKKwlzZWxmLmNyZWF0ZV90YXNrKCdyY2MnLCBub2RlLCByY25vZGUpCisJY3BwdGFzayA9IHNlbGYuY3JlYXRlX3Rhc2soJ2N4eCcsIHJjbm9kZSwgcmNub2RlLmNoYW5nZV9leHQoJy5vJykpCisJdHJ5OgorCQlzZWxmLmNvbXBpbGVkX3Rhc2tzLmFwcGVuZChjcHB0YXNrKQorCWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKwkJc2VsZi5jb21waWxlZF90YXNrcyA9IFtjcHB0YXNrXQorCXJldHVybiBjcHB0YXNrCisKK0BleHRlbnNpb24oKkVYVF9VSSkKK2RlZiBjcmVhdGVfdWljX3Rhc2soc2VsZiwgbm9kZSk6CisJIkNyZWF0ZSB1aWMgdGFza3MgZm9yIHVzZXIgaW50ZXJmYWNlIGBgLnVpYGAgZGVmaW5pdGlvbiBmaWxlcyIKKworCSIiIgorCUlmIFVJQyBmaWxlIGlzIHVzZWQgaW4gbW9yZSB0aGFuIG9uZSBibGQsIHdlIHdvdWxkIGhhdmUgYSBjb25mbGljdCBpbiBwYXJhbGxlbCBleGVjdXRpb24KKwlJdCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBmaWxlIG5hbWVzIChsaWtlIC5zZWxmLmlkeC4gYXMgZm9yIG9iamVjdHMpIGFzIHRoZXkgaGF2ZQorCXRvIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHNvdXJjZSBmaWxlLCBidXQgd2UgY2FuIGFzc3VtZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiB3aWxsIGJlIGlkZW50aWNhbAorCWFuZCB0aGUgdGFza3MgY2FuIGJlIHNoYXJlZCBpbiBhIGdsb2JhbCBjYWNoZS4KKwkiIiIKKwl0cnk6CisJCXVpY19jYWNoZSA9IHNlbGYuYmxkLnVpY19jYWNoZQorCWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKwkJdWljX2NhY2hlID0gc2VsZi5ibGQudWljX2NhY2hlID0ge30KKworCWlmIG5vZGUgbm90IGluIHVpY19jYWNoZToKKwkJdWljdGFzayA9IHVpY19jYWNoZVtub2RlXSA9IHNlbGYuY3JlYXRlX3Rhc2soJ3VpNScsIG5vZGUpCisJCXVpY3Rhc2sub3V0cHV0cyA9IFtub2RlLnBhcmVudC5maW5kX29yX2RlY2xhcmUoc2VsZi5lbnYudWlfUEFUVEVSTiAlIG5vZGUubmFtZVs6LTNdKV0KKworQGV4dGVuc2lvbignLnRzJykKK2RlZiBhZGRfbGFuZyhzZWxmLCBub2RlKToKKwkiIiJBZGRzIGFsbCB0aGUgLnRzIGZpbGUgaW50byBgYHNlbGYubGFuZ2BgIiIiCisJc2VsZi5sYW5nID0gc2VsZi50b19saXN0KGdldGF0dHIoc2VsZiwgJ2xhbmcnLCBbXSkpICsgW25vZGVdCisKK0BmZWF0dXJlKCdxdDUnKQorQGJlZm9yZV9tZXRob2QoJ3Byb2Nlc3Nfc291cmNlJykKK2RlZiBwcm9jZXNzX21vY3Moc2VsZik6CisJIiIiCisJUHJvY2Vzc2VzIE1PQyBmaWxlcyBpbmNsdWRlZCBpbiBoZWFkZXJzOjoKKworCQlkZWYgYnVpbGQoYmxkKToKKwkJCWJsZC5wcm9ncmFtKGZlYXR1cmVzPSdxdDUnLCBzb3VyY2U9J21haW4uY3BwJywgdGFyZ2V0PSdhcHAnLCB1c2U9J1FUNUNPUkUnLCBtb2M9J2Zvby5oJykKKworCVRoZSBidWlsZCB3aWxsIHJ1biBtb2Mgb24gZm9vLmggdG8gY3JlYXRlIG1vY19mb28ubi5jcHAuIFRoZSBudW1iZXIgaW4gdGhlIGZpbGUgbmFtZQorCWlzIHByb3ZpZGVkIHRvIGF2b2lkIG5hbWUgY2xhc2hlcyB3aGVuIHRoZSBzYW1lIGhlYWRlcnMgYXJlIHVzZWQgYnkgc2V2ZXJhbCB0YXJnZXRzLgorCSIiIgorCWxzdCA9IHNlbGYudG9fbm9kZXMoZ2V0YXR0cihzZWxmLCAnbW9jJywgW10pKQorCXNlbGYuc291cmNlID0gc2VsZi50b19saXN0KGdldGF0dHIoc2VsZiwgJ3NvdXJjZScsIFtdKSkKKwlmb3IgeCBpbiBsc3Q6CisJCXByZWZpeCA9IHgubmFtZVs6eC5uYW1lLnJmaW5kKCcuJyldICMgZm9vLmggLT4gZm9vCisJCW1vY190YXJnZXQgPSAnbW9jXyVzLiVkLmNwcCcgJSAocHJlZml4LCBzZWxmLmlkeCkKKwkJbW9jX25vZGUgPSB4LnBhcmVudC5maW5kX29yX2RlY2xhcmUobW9jX3RhcmdldCkKKwkJc2VsZi5zb3VyY2UuYXBwZW5kKG1vY19ub2RlKQorCisJCXNlbGYuY3JlYXRlX3Rhc2soJ21vYycsIHgsIG1vY19ub2RlKQorCitAZmVhdHVyZSgncXQ1JykKK0BhZnRlcl9tZXRob2QoJ2FwcGx5X2xpbmsnKQorZGVmIGFwcGx5X3F0NShzZWxmKToKKwkiIiIKKwlBZGRzIE1PQ19GTEFHUyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IGZvciBtb2M6OgorCisJCWRlZiBidWlsZChibGQpOgorCQkJYmxkLnByb2dyYW0oZmVhdHVyZXM9J3F0NScsIHNvdXJjZT0nbWFpbi5jcHAnLCB0YXJnZXQ9J2FwcCcsIHVzZT0nUVQ1Q09SRScpCisKKwlUaGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFyZToKKworCTpwYXJhbSBsYW5nOiBsaXN0IG9mIHRyYW5zbGF0aW9uIGZpbGVzIChcXCoudHMpIHRvIHByb2Nlc3MKKwk6dHlwZSBsYW5nOiBsaXN0IG9mIDpweTpjbGFzczpgd2FmbGliLk5vZGUuTm9kZWAgb3Igc3RyaW5nIHdpdGhvdXQgdGhlIC50cyBleHRlbnNpb24KKwk6cGFyYW0gdXBkYXRlOiB3aGV0aGVyIHRvIHByb2Nlc3MgdGhlIEMrKyBmaWxlcyB0byB1cGRhdGUgdGhlIFxcKi50cyBmaWxlcyAodXNlICoqd2FmIC0tdHJhbnNsYXRlKiopCisJOnR5cGUgdXBkYXRlOiBib29sCisJOnBhcmFtIGxhbmduYW1lOiBpZiBnaXZlbiwgdHJhbnNmb3JtIHRoZSBcXCoudHMgZmlsZXMgaW50byBhIC5xcmMgZmlsZXMgdG8gaW5jbHVkZSBpbiB0aGUgYmluYXJ5IGZpbGUKKwk6dHlwZSBsYW5nbmFtZTogOnB5OmNsYXNzOmB3YWZsaWIuTm9kZS5Ob2RlYCBvciBzdHJpbmcgd2l0aG91dCB0aGUgLnFyYyBleHRlbnNpb24KKwkiIiIKKwlpZiBnZXRhdHRyKHNlbGYsICdsYW5nJywgTm9uZSk6CisJCXFtdGFza3MgPSBbXQorCQlmb3IgeCBpbiBzZWxmLnRvX2xpc3Qoc2VsZi5sYW5nKToKKwkJCWlmIGlzaW5zdGFuY2UoeCwgc3RyKToKKwkJCQl4ID0gc2VsZi5wYXRoLmZpbmRfcmVzb3VyY2UoeCArICcudHMnKQorCQkJcW10YXNrcy5hcHBlbmQoc2VsZi5jcmVhdGVfdGFzaygndHMycW0nLCB4LCB4LmNoYW5nZV9leHQoJy4lZC5xbScgJSBzZWxmLmlkeCkpKQorCisJCWlmIGdldGF0dHIoc2VsZiwgJ3VwZGF0ZScsIE5vbmUpIGFuZCBPcHRpb25zLm9wdGlvbnMudHJhbnNfcXQ1OgorCQkJY3h4bm9kZXMgPSBbYS5pbnB1dHNbMF0gZm9yIGEgaW4gc2VsZi5jb21waWxlZF90YXNrc10gKyBbCisJCQkJYS5pbnB1dHNbMF0gZm9yIGEgaW4gc2VsZi50YXNrcyBpZiBhLmlucHV0cyBhbmQgYS5pbnB1dHNbMF0ubmFtZS5lbmRzd2l0aCgnLnVpJyldCisJCQlmb3IgeCBpbiBxbXRhc2tzOgorCQkJCXNlbGYuY3JlYXRlX3Rhc2soJ3RyYW5zX3VwZGF0ZScsIGN4eG5vZGVzLCB4LmlucHV0cykKKworCQlpZiBnZXRhdHRyKHNlbGYsICdsYW5nbmFtZScsIE5vbmUpOgorCQkJcW1ub2RlcyA9IFt4Lm91dHB1dHNbMF0gZm9yIHggaW4gcW10YXNrc10KKwkJCXJjbm9kZSA9IHNlbGYubGFuZ25hbWUKKwkJCWlmIGlzaW5zdGFuY2UocmNub2RlLCBzdHIpOgorCQkJCXJjbm9kZSA9IHNlbGYucGF0aC5maW5kX29yX2RlY2xhcmUocmNub2RlICsgKCcuJWQucXJjJyAlIHNlbGYuaWR4KSkKKwkJCXQgPSBzZWxmLmNyZWF0ZV90YXNrKCdxbTJyY2MnLCBxbW5vZGVzLCByY25vZGUpCisJCQlrID0gY3JlYXRlX3JjY190YXNrKHNlbGYsIHQub3V0cHV0c1swXSkKKwkJCXNlbGYubGlua190YXNrLmlucHV0cy5hcHBlbmQoay5vdXRwdXRzWzBdKQorCisJbHN0ID0gW10KKwlmb3IgZmxhZyBpbiBzZWxmLnRvX2xpc3Qoc2VsZi5lbnYuQ1hYRkxBR1MpOgorCQlpZiBsZW4oZmxhZykgPCAyOgorCQkJY29udGludWUKKwkJZiA9IGZsYWdbMDoyXQorCQlpZiBmIGluICgnLUQnLCAnLUknLCAnL0QnLCAnL0knKToKKwkJCWlmIChmWzBdID09ICcvJyk6CisJCQkJbHN0LmFwcGVuZCgnLScgKyBmbGFnWzE6XSkKKwkJCWVsc2U6CisJCQkJbHN0LmFwcGVuZChmbGFnKQorCXNlbGYuZW52LmFwcGVuZF92YWx1ZSgnTU9DX0ZMQUdTJywgbHN0KQorCitAZXh0ZW5zaW9uKCpFWFRfUVQ1KQorZGVmIGN4eF9ob29rKHNlbGYsIG5vZGUpOgorCSIiIgorCVJlLW1hcHMgQysrIGZpbGUgZXh0ZW5zaW9ucyB0byB0aGUgOnB5OmNsYXNzOmB3YWZsaWIuVG9vbHMucXQ1LnF4eGAgdGFzay4KKwkiIiIKKwlyZXR1cm4gc2VsZi5jcmVhdGVfY29tcGlsZWRfdGFzaygncXh4Jywgbm9kZSkKKworY2xhc3MgcmNjKFRhc2suVGFzayk6CisJIiIiCisJUHJvY2Vzc2VzIGBgLnFyY2BgIGZpbGVzCisJIiIiCisJY29sb3IgICA9ICdCTFVFJworCXJ1bl9zdHIgPSAnJHtRVF9SQ0N9IC1uYW1lICR7dHNrLnJjbmFtZSgpfSAke1NSQ1swXS5hYnNwYXRoKCl9ICR7UkNDX1NUfSAtbyAke1RHVH0nCisJZXh0X291dCA9IFsnLmgnXQorCisJZGVmIHJjbmFtZShzZWxmKToKKwkJcmV0dXJuIG9zLnBhdGguc3BsaXRleHQoc2VsZi5pbnB1dHNbMF0ubmFtZSlbMF0KKworCWRlZiBzY2FuKHNlbGYpOgorCQkiIiJQYXJzZSB0aGUgKi5xcmMqIGZpbGVzIiIiCisJCWlmIG5vdCBoYXNfeG1sOgorCQkJTG9ncy5lcnJvcignTm8geG1sLnNheCBzdXBwb3J0IHdhcyBmb3VuZCwgcmNjIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluY29tcGxldGUhJykKKwkJCXJldHVybiAoW10sIFtdKQorCisJCXBhcnNlciA9IG1ha2VfcGFyc2VyKCkKKwkJY3VySGFuZGxlciA9IFhNTEhhbmRsZXIoKQorCQlwYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoY3VySGFuZGxlcikKKwkJd2l0aCBvcGVuKHNlbGYuaW5wdXRzWzBdLmFic3BhdGgoKSwgJ3InKSBhcyBmOgorCQkJcGFyc2VyLnBhcnNlKGYpCisKKwkJbm9kZXMgPSBbXQorCQluYW1lcyA9IFtdCisJCXJvb3QgPSBzZWxmLmlucHV0c1swXS5wYXJlbnQKKwkJZm9yIHggaW4gY3VySGFuZGxlci5maWxlczoKKwkJCW5kID0gcm9vdC5maW5kX3Jlc291cmNlKHgpCisJCQlpZiBuZDoKKwkJCQlub2Rlcy5hcHBlbmQobmQpCisJCQllbHNlOgorCQkJCW5hbWVzLmFwcGVuZCh4KQorCQlyZXR1cm4gKG5vZGVzLCBuYW1lcykKKworCWRlZiBxdW90ZV9mbGFnKHNlbGYsIHgpOgorCQkiIiIKKwkJT3ZlcnJpZGUgVGFzay5xdW90ZV9mbGFnLiBRVCBwYXJzZXMgdGhlIGFyZ3VtZW50IGZpbGVzCisJCWRpZmZlcmVudGx5IHRoYW4gY2wuZXhlIGFuZCBsaW5rLmV4ZQorCisJCTpwYXJhbSB4OiBmbGFnCisJCTp0eXBlIHg6IHN0cmluZworCQk6cmV0dXJuOiBxdW90ZWQgZmxhZworCQk6cnR5cGU6IHN0cmluZworCQkiIiIKKwkJcmV0dXJuIHgKKworCitjbGFzcyBtb2MoVGFzay5UYXNrKToKKwkiIiIKKwlDcmVhdGVzIGBgLm1vY2BgIGZpbGVzCisJIiIiCisJY29sb3IgICA9ICdCTFVFJworCXJ1bl9zdHIgPSAnJHtRVF9NT0N9ICR7TU9DX0ZMQUdTfSAke01PQ0NQUFBBVEhfU1Q6SU5DUEFUSFN9ICR7TU9DREVGSU5FU19TVDpERUZJTkVTfSAke1NSQ30gJHtNT0NfU1R9ICR7VEdUfScKKworCWRlZiBxdW90ZV9mbGFnKHNlbGYsIHgpOgorCQkiIiIKKwkJT3ZlcnJpZGUgVGFzay5xdW90ZV9mbGFnLiBRVCBwYXJzZXMgdGhlIGFyZ3VtZW50IGZpbGVzCisJCWRpZmZlcmVudGx5IHRoYW4gY2wuZXhlIGFuZCBsaW5rLmV4ZQorCisJCTpwYXJhbSB4OiBmbGFnCisJCTp0eXBlIHg6IHN0cmluZworCQk6cmV0dXJuOiBxdW90ZWQgZmxhZworCQk6cnR5cGU6IHN0cmluZworCQkiIiIKKwkJcmV0dXJuIHgKKworCitjbGFzcyB1aTUoVGFzay5UYXNrKToKKwkiIiIKKwlQcm9jZXNzZXMgYGAudWlgYCBmaWxlcworCSIiIgorCWNvbG9yICAgPSAnQkxVRScKKwlydW5fc3RyID0gJyR7UVRfVUlDfSAke1NSQ30gLW8gJHtUR1R9JworCWV4dF9vdXQgPSBbJy5oJ10KKworY2xhc3MgdHMycW0oVGFzay5UYXNrKToKKwkiIiIKKwlHZW5lcmF0ZXMgYGAucW1gYCBmaWxlcyBmcm9tIGBgLnRzYGAgZmlsZXMKKwkiIiIKKwljb2xvciAgID0gJ0JMVUUnCisJcnVuX3N0ciA9ICcke1FUX0xSRUxFQVNFfSAke1FUX0xSRUxFQVNFX0ZMQUdTfSAke1NSQ30gLXFtICR7VEdUfScKKworY2xhc3MgcW0ycmNjKFRhc2suVGFzayk6CisJIiIiCisJR2VuZXJhdGVzIGBgLnFyY2BgIGZpbGVzIGZyb20gYGAucW1gYCBmaWxlcworCSIiIgorCWNvbG9yID0gJ0JMVUUnCisJYWZ0ZXIgPSAndHMycW0nCisJZGVmIHJ1bihzZWxmKToKKwkJIiIiQ3JlYXRlIGEgcXJjIGZpbGUgaW5jbHVkaW5nIHRoZSBpbnB1dHMiIiIKKwkJdHh0ID0gJ1xuJy5qb2luKFsnPGZpbGU+JXM8L2ZpbGU+JyAlIGsucGF0aF9mcm9tKHNlbGYub3V0cHV0c1swXS5wYXJlbnQpIGZvciBrIGluIHNlbGYuaW5wdXRzXSkKKwkJY29kZSA9ICc8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj5cbjxxcmVzb3VyY2U+XG4lc1xuPC9xcmVzb3VyY2U+XG48L1JDQz4nICUgdHh0CisJCXNlbGYub3V0cHV0c1swXS53cml0ZShjb2RlKQorCitkZWYgY29uZmlndXJlKHNlbGYpOgorCSIiIgorCUJlc2lkZXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFFUNV9ST09UIG1heSBiZSB1c2VkCisJdG8gZ2l2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHF0NSBsaWJyYXJpZXMgKGFic29sdXRlIHBhdGgpLgorCisJVGhlIGRldGVjdGlvbiB1c2VzIHRoZSBwcm9ncmFtIGBgcGtnLWNvbmZpZ2BgIHRocm91Z2ggOnB5OmZ1bmM6YHdhZmxpYi5Ub29scy5jb25maWdfYy5jaGVja19jZmdgCisJIiIiCisJaWYgJ0NPTVBJTEVSX0NYWCcgbm90IGluIHNlbGYuZW52OgorCQlzZWxmLmZhdGFsKCdObyBDWFggY29tcGlsZXIgZGVmaW5lZDogZGlkIHlvdSBmb3JnZXQgdG8gY29uZmlndXJlIGNvbXBpbGVyX2N4eCBmaXJzdD8nKQorCisJc2VsZi5maW5kX3F0NV9iaW5hcmllcygpCisJc2VsZi5zZXRfcXQ1X2xpYnNfZGlyKCkKKwlzZWxmLnNldF9xdDVfbGlic190b19jaGVjaygpCisJc2VsZi5zZXRfcXQ1X2RlZmluZXMoKQorCXNlbGYuZmluZF9xdDVfbGlicmFyaWVzKCkKKwlzZWxmLmFkZF9xdDVfcnBhdGgoKQorCXNlbGYuc2ltcGxpZnlfcXQ1X2xpYnMoKQorCisJIyB3YXJuIGFib3V0IHRoaXMgZHVyaW5nIHRoZSBjb25maWd1cmF0aW9uIHRvbworCWlmIG5vdCBoYXNfeG1sOgorCQlMb2dzLmVycm9yKCdObyB4bWwuc2F4IHN1cHBvcnQgd2FzIGZvdW5kLCByY2MgZGVwZW5kZW5jaWVzIHdpbGwgYmUgaW5jb21wbGV0ZSEnKQorCisJIyBRdDUgbWF5IGJlIGNvbXBpbGVkIHdpdGggJy1yZWR1Y2UtcmVsb2NhdGlvbnMnIHdoaWNoIHJlcXVpcmVzIGRlcGVuZGVudCBwcm9ncmFtcyB0byBoYXZlIC1mUElFIG9yIC1mUElDPworCWZyYWcgPSAnI2luY2x1ZGUgPFFNYXA+XG5pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHtRTWFwPGludCxpbnQ+IG07cmV0dXJuIG0ua2V5cygpLnNpemUoKTt9XG4nCisJdXNlcyA9ICdRVDVDT1JFJworCWZvciBmbGFnIGluIFtbXSwgJy1mUElFJywgJy1mUElDJywgJy1zdGQ9YysrMTEnICwgWyctc3RkPWMrKzExJywgJy1mUElFJ10sIFsnLXN0ZD1jKysxMScsICctZlBJQyddXToKKwkJbXNnID0gJ1NlZSBpZiBRdCBmaWxlcyBjb21waWxlICcKKwkJaWYgZmxhZzoKKwkJCW1zZyArPSAnd2l0aCAlcycgJSBmbGFnCisJCXRyeToKKwkJCXNlbGYuY2hlY2soZmVhdHVyZXM9J3F0NSBjeHgnLCB1c2U9dXNlcywgdXNlbGliX3N0b3JlPSdxdDUnLCBjeHhmbGFncz1mbGFnLCBmcmFnbWVudD1mcmFnLCBtc2c9bXNnKQorCQlleGNlcHQgc2VsZi5lcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yOgorCQkJcGFzcworCQllbHNlOgorCQkJYnJlYWsKKwllbHNlOgorCQlzZWxmLmZhdGFsKCdDb3VsZCBub3QgYnVpbGQgYSBzaW1wbGUgUXQgYXBwbGljYXRpb24nKQorCisJIyBGcmVlQlNEIGRvZXMgbm90IGFkZCAvdXNyL2xvY2FsL2xpYiBhbmQgdGhlIHBrZy1jb25maWcgZmlsZXMgZG8gbm90IHByb3ZpZGUgaXQgZWl0aGVyIDotLworCWlmIFV0aWxzLnVudmVyc2lvbmVkX3N5c19wbGF0Zm9ybSgpID09ICdmcmVlYnNkJzoKKwkJZnJhZyA9ICcjaW5jbHVkZSA8UU1hcD5cbmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikge1FNYXA8aW50LGludD4gbTtyZXR1cm4gbS5rZXlzKCkuc2l6ZSgpO31cbicKKwkJdHJ5OgorCQkJc2VsZi5jaGVjayhmZWF0dXJlcz0ncXQ1IGN4eCBjeHhwcm9ncmFtJywgdXNlPXVzZXMsIGZyYWdtZW50PWZyYWcsIG1zZz0nQ2FuIHdlIGxpbmsgUXQgcHJvZ3JhbXMgb24gRnJlZUJTRCBkaXJlY3RseT8nKQorCQlleGNlcHQgc2VsZi5lcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yOgorCQkJc2VsZi5jaGVjayhmZWF0dXJlcz0ncXQ1IGN4eCBjeHhwcm9ncmFtJywgdXNlPXVzZXMsIHVzZWxpYl9zdG9yZT0ncXQ1JywgbGlicGF0aD0nL3Vzci9sb2NhbC9saWInLCBmcmFnbWVudD1mcmFnLCBtc2c9J0lzIC91c3IvbG9jYWwvbGliIHJlcXVpcmVkPycpCisKK0Bjb25mCitkZWYgZmluZF9xdDVfYmluYXJpZXMoc2VsZik6CisJIiIiCisJRGV0ZWN0cyBRdCBwcm9ncmFtcyBzdWNoIGFzIHFtYWtlLCBtb2MsIHVpYywgbHJlbGVhc2UKKwkiIiIKKwllbnYgPSBzZWxmLmVudgorCW9wdCA9IE9wdGlvbnMub3B0aW9ucworCisJcXRkaXIgPSBnZXRhdHRyKG9wdCwgJ3F0ZGlyJywgJycpCisJcXRiaW4gPSBnZXRhdHRyKG9wdCwgJ3F0YmluJywgJycpCisKKwlwYXRocyA9IFtdCisKKwlpZiBxdGRpcjoKKwkJcXRiaW4gPSBvcy5wYXRoLmpvaW4ocXRkaXIsICdiaW4nKQorCisJIyB0aGUgcXQgZGlyZWN0b3J5IGhhcyBiZWVuIGdpdmVuIGZyb20gUVQ1X1JPT1QgLSBkZWR1Y2UgdGhlIHF0IGJpbmFyeSBwYXRoCisJaWYgbm90IHF0ZGlyOgorCQlxdGRpciA9IHNlbGYuZW52aXJvbi5nZXQoJ1FUNV9ST09UJywgJycpCisJCXF0YmluID0gc2VsZi5lbnZpcm9uLmdldCgnUVQ1X0JJTicpIG9yIG9zLnBhdGguam9pbihxdGRpciwgJ2JpbicpCisKKwlpZiBxdGJpbjoKKwkJcGF0aHMgPSBbcXRiaW5dCisKKwkjIG5vIHF0ZGlyLCBsb29rIGluIHRoZSBwYXRoIGFuZCBpbiAvdXNyL2xvY2FsL1Ryb2xsdGVjaAorCWlmIG5vdCBxdGRpcjoKKwkJcGF0aHMgPSBzZWxmLmVudmlyb24uZ2V0KCdQQVRIJywgJycpLnNwbGl0KG9zLnBhdGhzZXApCisJCXBhdGhzLmV4dGVuZChbJy91c3Ivc2hhcmUvcXQ1L2JpbicsICcvdXNyL2xvY2FsL2xpYi9xdDUvYmluJ10pCisJCXRyeToKKwkJCWxzdCA9IFV0aWxzLmxpc3RkaXIoJy91c3IvbG9jYWwvVHJvbGx0ZWNoLycpCisJCWV4Y2VwdCBPU0Vycm9yOgorCQkJcGFzcworCQllbHNlOgorCQkJaWYgbHN0OgorCQkJCWxzdC5zb3J0KCkKKwkJCQlsc3QucmV2ZXJzZSgpCisKKwkJCQkjIGtlZXAgdGhlIGhpZ2hlc3QgdmVyc2lvbgorCQkJCXF0ZGlyID0gJy91c3IvbG9jYWwvVHJvbGx0ZWNoLyVzLycgJSBsc3RbMF0KKwkJCQlxdGJpbiA9IG9zLnBhdGguam9pbihxdGRpciwgJ2JpbicpCisJCQkJcGF0aHMuYXBwZW5kKHF0YmluKQorCisJIyBhdCB0aGUgZW5kLCB0cnkgdG8gZmluZCBxbWFrZSBpbiB0aGUgcGF0aHMgZ2l2ZW4KKwkjIGtlZXAgdGhlIG9uZSB3aXRoIHRoZSBoaWdoZXN0IHZlcnNpb24KKwljYW5kID0gTm9uZQorCXByZXZfdmVyID0gWyc1JywgJzAnLCAnMCddCisJZm9yIHFtayBpbiAoJ3FtYWtlLXF0NScsICdxbWFrZTUnLCAncW1ha2UnKToKKwkJdHJ5OgorCQkJcW1ha2UgPSBzZWxmLmZpbmRfcHJvZ3JhbShxbWssIHBhdGhfbGlzdD1wYXRocykKKwkJZXhjZXB0IHNlbGYuZXJyb3JzLkNvbmZpZ3VyYXRpb25FcnJvcjoKKwkJCXBhc3MKKwkJZWxzZToKKwkJCXRyeToKKwkJCQl2ZXJzaW9uID0gc2VsZi5jbWRfYW5kX2xvZyhxbWFrZSArIFsnLXF1ZXJ5JywgJ1FUX1ZFUlNJT04nXSkuc3RyaXAoKQorCQkJZXhjZXB0IHNlbGYuZXJyb3JzLldhZkVycm9yOgorCQkJCXBhc3MKKwkJCWVsc2U6CisJCQkJaWYgdmVyc2lvbjoKKwkJCQkJbmV3X3ZlciA9IHZlcnNpb24uc3BsaXQoJy4nKQorCQkJCQlpZiBuZXdfdmVyID4gcHJldl92ZXI6CisJCQkJCQljYW5kID0gcW1ha2UKKwkJCQkJCXByZXZfdmVyID0gbmV3X3ZlcgorCisJIyBxbWFrZSBjb3VsZCBub3QgYmUgZm91bmQgZWFzaWx5LCByZWx5IG9uIHF0Y2hvb3NlcgorCWlmIG5vdCBjYW5kOgorCQl0cnk6CisJCQlzZWxmLmZpbmRfcHJvZ3JhbSgncXRjaG9vc2VyJykKKwkJZXhjZXB0IHNlbGYuZXJyb3JzLkNvbmZpZ3VyYXRpb25FcnJvcjoKKwkJCXBhc3MKKwkJZWxzZToKKwkJCWNtZCA9IHNlbGYuZW52LlFUQ0hPT1NFUiArIFsnLXF0PTUnLCAnLXJ1bi10b29sPXFtYWtlJ10KKwkJCXRyeToKKwkJCQl2ZXJzaW9uID0gc2VsZi5jbWRfYW5kX2xvZyhjbWQgKyBbJy1xdWVyeScsICdRVF9WRVJTSU9OJ10pCisJCQlleGNlcHQgc2VsZi5lcnJvcnMuV2FmRXJyb3I6CisJCQkJcGFzcworCQkJZWxzZToKKwkJCQljYW5kID0gY21kCisKKwlpZiBjYW5kOgorCQlzZWxmLmVudi5RTUFLRSA9IGNhbmQKKwllbHNlOgorCQlzZWxmLmZhdGFsKCdDb3VsZCBub3QgZmluZCBxbWFrZSBmb3IgcXQ1JykKKworCXNlbGYuZW52LlFUX0hPU1RfQklOUyA9IHF0YmluID0gc2VsZi5jbWRfYW5kX2xvZyhzZWxmLmVudi5RTUFLRSArIFsnLXF1ZXJ5JywgJ1FUX0hPU1RfQklOUyddKS5zdHJpcCgpCisJcGF0aHMuaW5zZXJ0KDAsIHF0YmluKQorCisJZGVmIGZpbmRfYmluKGxzdCwgdmFyKToKKwkJaWYgdmFyIGluIGVudjoKKwkJCXJldHVybgorCQlmb3IgZiBpbiBsc3Q6CisJCQl0cnk6CisJCQkJcmV0ID0gc2VsZi5maW5kX3Byb2dyYW0oZiwgcGF0aF9saXN0PXBhdGhzKQorCQkJZXhjZXB0IHNlbGYuZXJyb3JzLkNvbmZpZ3VyYXRpb25FcnJvcjoKKwkJCQlwYXNzCisJCQllbHNlOgorCQkJCWVudlt2YXJdPXJldAorCQkJCWJyZWFrCisKKwlmaW5kX2JpbihbJ3VpYy1xdDUnLCAndWljJ10sICdRVF9VSUMnKQorCWlmIG5vdCBlbnYuUVRfVUlDOgorCQlzZWxmLmZhdGFsKCdjYW5ub3QgZmluZCB0aGUgdWljIGNvbXBpbGVyIGZvciBxdDUnKQorCisJc2VsZi5zdGFydF9tc2coJ0NoZWNraW5nIGZvciB1aWMgdmVyc2lvbicpCisJdWljdmVyID0gc2VsZi5jbWRfYW5kX2xvZyhlbnYuUVRfVUlDICsgWyctdmVyc2lvbiddLCBvdXRwdXQ9Q29udGV4dC5CT1RIKQorCXVpY3ZlciA9ICcnLmpvaW4odWljdmVyKS5zdHJpcCgpCisJdWljdmVyID0gdWljdmVyLnJlcGxhY2UoJ1F0IFVzZXIgSW50ZXJmYWNlIENvbXBpbGVyICcsJycpLnJlcGxhY2UoJ1VzZXIgSW50ZXJmYWNlIENvbXBpbGVyIGZvciBRdCcsICcnKQorCXNlbGYuZW5kX21zZyh1aWN2ZXIpCisJaWYgdWljdmVyLmZpbmQoJyAzLicpICE9IC0xIG9yIHVpY3Zlci5maW5kKCcgNC4nKSAhPSAtMToKKwkJc2VsZi5mYXRhbCgndGhpcyB1aWMgY29tcGlsZXIgaXMgZm9yIHF0MyBvciBxdDQsIGFkZCB1aWMgZm9yIHF0NSB0byB5b3VyIHBhdGgnKQorCisJZmluZF9iaW4oWydtb2MtcXQ1JywgJ21vYyddLCAnUVRfTU9DJykKKwlmaW5kX2JpbihbJ3JjYy1xdDUnLCAncmNjJ10sICdRVF9SQ0MnKQorCWZpbmRfYmluKFsnbHJlbGVhc2UtcXQ1JywgJ2xyZWxlYXNlJ10sICdRVF9MUkVMRUFTRScpCisJZmluZF9iaW4oWydsdXBkYXRlLXF0NScsICdsdXBkYXRlJ10sICdRVF9MVVBEQVRFJykKKworCWVudi5VSUNfU1QgPSAnJXMgLW8gJXMnCisJZW52Lk1PQ19TVCA9ICctbycKKwllbnYudWlfUEFUVEVSTiA9ICd1aV8lcy5oJworCWVudi5RVF9MUkVMRUFTRV9GTEFHUyA9IFsnLXNpbGVudCddCisJZW52Lk1PQ0NQUFBBVEhfU1QgPSAnLUklcycKKwllbnYuTU9DREVGSU5FU19TVCA9ICctRCVzJworCitAY29uZgorZGVmIHNldF9xdDVfbGlic19kaXIoc2VsZik6CisJZW52ID0gc2VsZi5lbnYKKwlxdGxpYnMgPSBnZXRhdHRyKE9wdGlvbnMub3B0aW9ucywgJ3F0bGlicycsIE5vbmUpIG9yIHNlbGYuZW52aXJvbi5nZXQoJ1FUNV9MSUJESVInKQorCWlmIG5vdCBxdGxpYnM6CisJCXRyeToKKwkJCXF0bGlicyA9IHNlbGYuY21kX2FuZF9sb2coZW52LlFNQUtFICsgWyctcXVlcnknLCAnUVRfSU5TVEFMTF9MSUJTJ10pLnN0cmlwKCkKKwkJZXhjZXB0IEVycm9ycy5XYWZFcnJvcjoKKwkJCXF0ZGlyID0gc2VsZi5jbWRfYW5kX2xvZyhlbnYuUU1BS0UgKyBbJy1xdWVyeScsICdRVF9JTlNUQUxMX1BSRUZJWCddKS5zdHJpcCgpCisJCQlxdGxpYnMgPSBvcy5wYXRoLmpvaW4ocXRkaXIsICdsaWInKQorCXNlbGYubXNnKCdGb3VuZCB0aGUgUXQ1IGxpYnJhcnkgcGF0aCcsIHF0bGlicykKKwllbnYuUVRMSUJTID0gcXRsaWJzCisKK0Bjb25mCitkZWYgZmluZF9zaW5nbGVfcXQ1X2xpYihzZWxmLCBuYW1lLCB1c2VsaWIsIHF0bGlicywgcXRpbmNsdWRlcywgZm9yY2Vfc3RhdGljKToKKwllbnYgPSBzZWxmLmVudgorCWlmIGZvcmNlX3N0YXRpYzoKKwkJZXh0cyA9ICgnLmEnLCAnLmxpYicpCisJCXByZWZpeCA9ICdTVExJQicKKwllbHNlOgorCQlleHRzID0gKCcuc28nLCAnLmxpYicpCisJCXByZWZpeCA9ICdMSUInCisKKwlkZWYgbGliX25hbWVzKCk6CisJCWZvciB4IGluIGV4dHM6CisJCQlmb3IgayBpbiAoJycsICc1JykgaWYgVXRpbHMuaXNfd2luMzIgZWxzZSBbJyddOgorCQkJCWZvciBwIGluICgnbGliJywgJycpOgorCQkJCQl5aWVsZCAocCwgbmFtZSwgaywgeCkKKworCWZvciB0dXAgaW4gbGliX25hbWVzKCk6CisJCWsgPSAnJy5qb2luKHR1cCkKKwkJcGF0aCA9IG9zLnBhdGguam9pbihxdGxpYnMsIGspCisJCWlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorCQkJaWYgZW52LkRFU1RfT1MgPT0gJ3dpbjMyJzoKKwkJCQlsaWJ2YWwgPSAnJy5qb2luKHR1cFs6LTFdKQorCQkJZWxzZToKKwkJCQlsaWJ2YWwgPSBuYW1lCisJCQllbnYuYXBwZW5kX3VuaXF1ZShwcmVmaXggKyAnXycgKyB1c2VsaWIsIGxpYnZhbCkKKwkJCWVudi5hcHBlbmRfdW5pcXVlKCclc1BBVEhfJXMnICUgKHByZWZpeCwgdXNlbGliKSwgcXRsaWJzKQorCQkJZW52LmFwcGVuZF91bmlxdWUoJ0lOQ0xVREVTXycgKyB1c2VsaWIsIHF0aW5jbHVkZXMpCisJCQllbnYuYXBwZW5kX3VuaXF1ZSgnSU5DTFVERVNfJyArIHVzZWxpYiwgb3MucGF0aC5qb2luKHF0aW5jbHVkZXMsIG5hbWUucmVwbGFjZSgnUXQ1JywgJ1F0JykpKQorCQkJcmV0dXJuIGsKKwlyZXR1cm4gRmFsc2UKKworQGNvbmYKK2RlZiBmaW5kX3F0NV9saWJyYXJpZXMoc2VsZik6CisJZW52ID0gc2VsZi5lbnYKKworCXF0aW5jbHVkZXMgPSAgc2VsZi5lbnZpcm9uLmdldCgnUVQ1X0lOQ0xVREVTJykgb3Igc2VsZi5jbWRfYW5kX2xvZyhlbnYuUU1BS0UgKyBbJy1xdWVyeScsICdRVF9JTlNUQUxMX0hFQURFUlMnXSkuc3RyaXAoKQorCWZvcmNlX3N0YXRpYyA9IHNlbGYuZW52aXJvbi5nZXQoJ1FUNV9GT1JDRV9TVEFUSUMnKQorCXRyeToKKwkJaWYgc2VsZi5lbnZpcm9uLmdldCgnUVQ1X1hDT01QSUxFJyk6CisJCQlzZWxmLmZhdGFsKCdRVDVfWENPTVBJTEUgRGlzYWJsZXMgcGtnLWNvbmZpZyBkZXRlY3Rpb24nKQorCQlzZWxmLmNoZWNrX2NmZyhhdGxlYXN0X3BrZ2NvbmZpZ192ZXJzaW9uPScwLjEnKQorCWV4Y2VwdCBzZWxmLmVycm9ycy5Db25maWd1cmF0aW9uRXJyb3I6CisJCWZvciBpIGluIHNlbGYucXQ1X3ZhcnM6CisJCQl1c2VsaWIgPSBpLnVwcGVyKCkKKwkJCWlmIFV0aWxzLnVudmVyc2lvbmVkX3N5c19wbGF0Zm9ybSgpID09ICdkYXJ3aW4nOgorCQkJCSMgU2luY2UgYXQgbGVhc3QgcXQgNC43LjMgZWFjaCBsaWJyYXJ5IGxvY2F0ZXMgaW4gc2VwYXJhdGUgZGlyZWN0b3J5CisJCQkJZndrID0gaS5yZXBsYWNlKCdRdDUnLCAnUXQnKQorCQkJCWZyYW1ld29ya05hbWUgPSBmd2sgKyAnLmZyYW1ld29yaycKKworCQkJCXF0RHluYW1pY0xpYiA9IG9zLnBhdGguam9pbihlbnYuUVRMSUJTLCBmcmFtZXdvcmtOYW1lLCBmd2spCisJCQkJaWYgb3MucGF0aC5leGlzdHMocXREeW5hbWljTGliKToKKwkJCQkJZW52LmFwcGVuZF91bmlxdWUoJ0ZSQU1FV09SS18nICsgdXNlbGliLCBmd2spCisJCQkJCWVudi5hcHBlbmRfdW5pcXVlKCdGUkFNRVdPUktQQVRIXycgKyB1c2VsaWIsIGVudi5RVExJQlMpCisJCQkJCXNlbGYubXNnKCdDaGVja2luZyBmb3IgJXMnICUgaSwgcXREeW5hbWljTGliLCAnR1JFRU4nKQorCQkJCWVsc2U6CisJCQkJCXNlbGYubXNnKCdDaGVja2luZyBmb3IgJXMnICUgaSwgRmFsc2UsICdZRUxMT1cnKQorCQkJCWVudi5hcHBlbmRfdW5pcXVlKCdJTkNMVURFU18nICsgdXNlbGliLCBvcy5wYXRoLmpvaW4oZW52LlFUTElCUywgZnJhbWV3b3JrTmFtZSwgJ0hlYWRlcnMnKSkKKwkJCWVsc2U6CisJCQkJcmV0ID0gc2VsZi5maW5kX3NpbmdsZV9xdDVfbGliKGksIHVzZWxpYiwgZW52LlFUTElCUywgcXRpbmNsdWRlcywgZm9yY2Vfc3RhdGljKQorCQkJCWlmIG5vdCBmb3JjZV9zdGF0aWMgYW5kIG5vdCByZXQ6CisJCQkJCXJldCA9IHNlbGYuZmluZF9zaW5nbGVfcXQ1X2xpYihpLCB1c2VsaWIsIGVudi5RVExJQlMsIHF0aW5jbHVkZXMsIFRydWUpCisJCQkJc2VsZi5tc2coJ0NoZWNraW5nIGZvciAlcycgJSBpLCByZXQsICdHUkVFTicgaWYgcmV0IGVsc2UgJ1lFTExPVycpCisJZWxzZToKKwkJcGF0aCA9ICclczolczolcy9wa2djb25maWc6L3Vzci9saWIvcXQ1L2xpYi9wa2djb25maWc6L29wdC9xdDUvbGliL3BrZ2NvbmZpZzovdXNyL2xpYi9xdDUvbGliOi9vcHQvcXQ1L2xpYicgJSAoCisJCQlzZWxmLmVudmlyb24uZ2V0KCdQS0dfQ09ORklHX1BBVEgnLCAnJyksIGVudi5RVExJQlMsIGVudi5RVExJQlMpCisJCWZvciBpIGluIHNlbGYucXQ1X3ZhcnM6CisJCQlzZWxmLmNoZWNrX2NmZyhwYWNrYWdlPWksIGFyZ3M9Jy0tY2ZsYWdzIC0tbGlicycsIG1hbmRhdG9yeT1GYWxzZSwgZm9yY2Vfc3RhdGljPWZvcmNlX3N0YXRpYywgcGtnX2NvbmZpZ19wYXRoPXBhdGgpCisKK0Bjb25mCitkZWYgc2ltcGxpZnlfcXQ1X2xpYnMoc2VsZik6CisJIiIiCisJU2luY2UgbGlicmFyeSBwYXRocyBtYWtlIHJlYWxseSBsb25nIGNvbW1hbmQtbGluZXMsCisJYW5kIHNpbmNlIGV2ZXJ5dGhpbmcgZGVwZW5kcyBvbiBxdGNvcmUsIHJlbW92ZSB0aGUgcXRjb3JlIG9uZXMgZnJvbSBxdGd1aSwgZXRjCisJIiIiCisJZW52ID0gc2VsZi5lbnYKKwlkZWYgcHJvY2Vzc19saWIodmFyc18sIGNvcmV2YWwpOgorCQlmb3IgZCBpbiB2YXJzXzoKKwkJCXZhciA9IGQudXBwZXIoKQorCQkJaWYgdmFyID09ICdRVENPUkUnOgorCQkJCWNvbnRpbnVlCisKKwkJCXZhbHVlID0gZW52WydMSUJQQVRIXycrdmFyXQorCQkJaWYgdmFsdWU6CisJCQkJY29yZSA9IGVudltjb3JldmFsXQorCQkJCWFjY3UgPSBbXQorCQkJCWZvciBsaWIgaW4gdmFsdWU6CisJCQkJCWlmIGxpYiBpbiBjb3JlOgorCQkJCQkJY29udGludWUKKwkJCQkJYWNjdS5hcHBlbmQobGliKQorCQkJCWVudlsnTElCUEFUSF8nK3Zhcl0gPSBhY2N1CisJcHJvY2Vzc19saWIoc2VsZi5xdDVfdmFycywgICAgICAgJ0xJQlBBVEhfUVRDT1JFJykKKworQGNvbmYKK2RlZiBhZGRfcXQ1X3JwYXRoKHNlbGYpOgorCSIiIgorCURlZmluZXMgcnBhdGggZW50cmllcyBmb3IgUXQgbGlicmFyaWVzCisJIiIiCisJZW52ID0gc2VsZi5lbnYKKwlpZiBnZXRhdHRyKE9wdGlvbnMub3B0aW9ucywgJ3dhbnRfcnBhdGgnLCBGYWxzZSk6CisJCWRlZiBwcm9jZXNzX3JwYXRoKHZhcnNfLCBjb3JldmFsKToKKwkJCWZvciBkIGluIHZhcnNfOgorCQkJCXZhciA9IGQudXBwZXIoKQorCQkJCXZhbHVlID0gZW52WydMSUJQQVRIXycgKyB2YXJdCisJCQkJaWYgdmFsdWU6CisJCQkJCWNvcmUgPSBlbnZbY29yZXZhbF0KKwkJCQkJYWNjdSA9IFtdCisJCQkJCWZvciBsaWIgaW4gdmFsdWU6CisJCQkJCQlpZiB2YXIgIT0gJ1FUQ09SRSc6CisJCQkJCQkJaWYgbGliIGluIGNvcmU6CisJCQkJCQkJCWNvbnRpbnVlCisJCQkJCQlhY2N1LmFwcGVuZCgnLVdsLC0tcnBhdGg9JytsaWIpCisJCQkJCWVudlsnUlBBVEhfJyArIHZhcl0gPSBhY2N1CisJCXByb2Nlc3NfcnBhdGgoc2VsZi5xdDVfdmFycywgICAgICAgJ0xJQlBBVEhfUVRDT1JFJykKKworQGNvbmYKK2RlZiBzZXRfcXQ1X2xpYnNfdG9fY2hlY2soc2VsZik6CisJc2VsZi5xdDVfdmFycyA9IFV0aWxzLnRvX2xpc3QoZ2V0YXR0cihzZWxmLCAncXQ1X3ZhcnMnLCBbXSkpCisJaWYgbm90IHNlbGYucXQ1X3ZhcnM6CisJCWRpcmxzdCA9IFV0aWxzLmxpc3RkaXIoc2VsZi5lbnYuUVRMSUJTKQorCisJCXBhdCA9IHNlbGYuZW52LmN4eHNobGliX1BBVFRFUk4KKwkJaWYgVXRpbHMuaXNfd2luMzI6CisJCQlwYXQgPSBwYXQucmVwbGFjZSgnLmRsbCcsICcubGliJykKKwkJaWYgc2VsZi5lbnZpcm9uLmdldCgnUVQ1X0ZPUkNFX1NUQVRJQycpOgorCQkJcGF0ID0gc2VsZi5lbnYuY3h4c3RsaWJfUEFUVEVSTgorCQlpZiBVdGlscy51bnZlcnNpb25lZF9zeXNfcGxhdGZvcm0oKSA9PSAnZGFyd2luJzoKKwkJCXBhdCA9IHIiJXNcLmZyYW1ld29yayIKKwkJcmVfcXQgPSByZS5jb21waWxlKHBhdCUnUXQ1Pyg/UDxuYW1lPi4qKScrJyQnKQorCQlmb3IgeCBpbiBkaXJsc3Q6CisJCQltID0gcmVfcXQubWF0Y2goeCkKKwkJCWlmIG06CisJCQkJc2VsZi5xdDVfdmFycy5hcHBlbmQoIlF0NSVzIiAlIG0uZ3JvdXAoJ25hbWUnKSkKKwkJaWYgbm90IHNlbGYucXQ1X3ZhcnM6CisJCQlzZWxmLmZhdGFsKCdjYW5ub3QgZmluZCBhbnkgUXQ1IGxpYnJhcnkgKCVyKScgJSBzZWxmLmVudi5RVExJQlMpCisKKwlxdGV4dHJhbGlicyA9IGdldGF0dHIoT3B0aW9ucy5vcHRpb25zLCAncXRleHRyYWxpYnMnLCBOb25lKQorCWlmIHF0ZXh0cmFsaWJzOgorCQlzZWxmLnF0NV92YXJzLmV4dGVuZChxdGV4dHJhbGlicy5zcGxpdCgnLCcpKQorCitAY29uZgorZGVmIHNldF9xdDVfZGVmaW5lcyhzZWxmKToKKwlpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKwkJcmV0dXJuCisJZm9yIHggaW4gc2VsZi5xdDVfdmFyczoKKwkJeT14LnJlcGxhY2UoJ1F0NScsICdRdCcpWzI6XS51cHBlcigpCisJCXNlbGYuZW52LmFwcGVuZF91bmlxdWUoJ0RFRklORVNfJXMnICUgeC51cHBlcigpLCAnUVRfJXNfTElCJyAlIHkpCisKK2RlZiBvcHRpb25zKG9wdCk6CisJIiIiCisJQ29tbWFuZC1saW5lIG9wdGlvbnMKKwkiIiIKKwlvcHQuYWRkX29wdGlvbignLS13YW50LXJwYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgZGVzdD0nd2FudF9ycGF0aCcsIGhlbHA9J2VuYWJsZSB0aGUgcnBhdGggZm9yIHF0IGxpYnJhcmllcycpCisJZm9yIGkgaW4gJ3F0ZGlyIHF0YmluIHF0bGlicycuc3BsaXQoKToKKwkJb3B0LmFkZF9vcHRpb24oJy0tJytpLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PScnLCBkZXN0PWkpCisKKwlvcHQuYWRkX29wdGlvbignLS10cmFuc2xhdGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdjb2xsZWN0IHRyYW5zbGF0aW9uIHN0cmluZ3MnLCBkZXN0PSd0cmFuc19xdDUnLCBkZWZhdWx0PUZhbHNlKQorCW9wdC5hZGRfb3B0aW9uKCctLXF0ZXh0cmFsaWJzJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nJywgZGVzdD0ncXRleHRyYWxpYnMnLCBoZWxwPSdhZGRpdGlvbmFsIHF0IGxpYnJhcmllcyBvbiB0aGUgc3lzdGVtIHRvIGFkZCB0byBkZWZhdWx0IG9uZXMsIGNvbW1hIHNlcGFyYXRlZCcpCisKZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0CmluZGV4IGFiNGEwYzguLmU2NWE2YmEgMTAwNjQ0Ci0tLSBhL3dzY3JpcHQKKysrIGIvd3NjcmlwdApAQCAtNywxMCArNywxMCBAQAogCiBkZWYgb3B0aW9ucyhvcHQpOgogCi0gICAgb3B0LmxvYWQoWydjb21waWxlcl9jJywgJ2NvbXBpbGVyX2N4eCcsICdxdDQnLCAnZ251X2RpcnMnXSkKKyAgICBvcHQubG9hZChbJ2NvbXBpbGVyX2MnLCAnY29tcGlsZXJfY3h4JywgJ3F0NScsICdnbnVfZGlycyddKQogCiAgICAgb3B0LmxvYWQoWydkZWZhdWx0LWNvbXBpbGVyLWZsYWdzJywgJ2Jvb3N0JywgJ3Byb3RvYycsCi0gICAgICAgICAgICAgICdkb3h5Z2VuJywgJ3NwaGlueF9idWlsZCddLAorICAgICAgICAgICAgICAnZG94eWdlbicsICdzcGhpbnhfYnVpbGQnLCAncXQ1JywgJ2NyeXB0b3BwJ10sCiAgICAgICAgICAgICAgIHRvb2xkaXI9Wyd3YWYtdG9vbHMnXSkKIAogICAgIG9wdCA9IG9wdC5hZGRfb3B0aW9uX2dyb3VwKCdDaHJvbm90Q2hhdCBPcHRpb25zJykKQEAgLTIyLDkgKzIyLDkgQEAKICAgICAgICAgICAgICAgICAgICBoZWxwPScnJ0VuYWJsZSBsb2c0Y3h4JycnKQogCiBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgIGNvbmYubG9hZChbJ2NvbXBpbGVyX2MnLCAnY29tcGlsZXJfY3h4JywgJ3F0NCcsCisgICAgY29uZi5sb2FkKFsnY29tcGlsZXJfYycsICdjb21waWxlcl9jeHgnLCAncXQ1JywKICAgICAgICAgICAgICAgICdkZWZhdWx0LWNvbXBpbGVyLWZsYWdzJywgJ2Jvb3N0JywgJ3Byb3RvYycsICdnbnVfZGlycycsCi0gICAgICAgICAgICAgICAnZG94eWdlbicsICdzcGhpbnhfYnVpbGQnXSkKKyAgICAgICAgICAgICAgICdkb3h5Z2VuJywgJ3NwaGlueF9idWlsZCcsICdjcnlwdG9wcCddKQogCiAgICAgY29uZi5jaGVja19jZmcocGFja2FnZT0nbGlibmRuLWN4eCcsIGFyZ3M9WyctLWNmbGFncycsICctLWxpYnMnXSwKICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9J05ETl9DWFgnLCBtYW5kYXRvcnk9VHJ1ZSkKQEAgLTUwLDEwICs1MCwxMSBAQAogICAgICAgICAgICAgICAgICAgICIgKGh0dHA6Ly9yZWRtaW5lLm5hbWVkLWRhdGEubmV0L3Byb2plY3RzL25mZC93aWtpL0Jvb3N0X0ZBUSkiKQogICAgICAgICByZXR1cm4KIAorICAgIGNvbmYuY2hlY2tfY3J5cHRvcHAoKQogICAgIGNvbmYud3JpdGVfY29uZmlnX2hlYWRlcignc3JjL2NvbmZpZy5oJykKIAogZGVmIGJ1aWxkIChibGQpOgotICAgIGZlYXR1cmVfbGlzdCA9ICdxdDQgY3h4JworICAgIGZlYXR1cmVfbGlzdCA9ICdxdDUgY3h4JwogICAgIGlmIGJsZC5lbnZbIldJVEhfVEVTVFMiXToKICAgICAgICAgZmVhdHVyZV9saXN0ICs9ICcgY3h4c3RsaWInCiAgICAgZWxzZToKQEAgLTY1LDcgKzY2LDcgQEAKICAgICAgICAgZGVmaW5lcyA9ICJXQUY9MSIsCiAgICAgICAgIHNvdXJjZSA9IGJsZC5wYXRoLmFudF9nbG9iKFsnc3JjLyouY3BwJywgJ3NyYy8qLnVpJywgJyoucXJjJywgJ2xvZ2dpbmcuY2MnLCAnc3JjLyoucHJvdG8nXSksCiAgICAgICAgIGluY2x1ZGVzID0gInNyYyAuIiwKLSAgICAgICAgdXNlID0gIlFUQ09SRSBRVEdVSSBRVFdJREdFVFMgUVRTUUwgTkROX0NYWCBCT09TVCBMT0c0Q1hYIFNZTkMiLAorICAgICAgICB1c2UgPSAiUVQ1Q09SRSBRVDVHVUkgUVQ1V0lER0VUUyBRVDVTUUwgTkROX0NYWCBCT09TVCBMT0c0Q1hYIFNZTkMgQ1JZUFRPUFAiLAogICAgICAgICApCiAKICAgICAjIFVuaXQgdGVzdHMKQEAgLTc3LDcgKzc4LDYgQEAKICAgICAgICAgICB1c2UgPSAnQk9PU1QgQ2hyb25vQ2hhdCcsCiAgICAgICAgICAgaW5jbHVkZXMgPSAic3JjIC4iLAogICAgICAgICAgIGluc3RhbGxfcGF0aCA9IE5vbmUsCi0gICAgICAgICAgZGVmaW5lcyA9ICdURVNUX0NFUlRfUEFUSD1cIiVzL2NlcnQtdGVzdFwiJyAlKGJsZC5ibGRub2RlKSwKICAgICAgICAgICApCiAKICAgICAjIERlYnVnIHRvb2xzCg==