ZGlmZiAtLWdpdCBhL2F1dG8vY2MvaWNjIGIvYXV0by9jYy9pY2MKaW5kZXggYjZhZTc1OS4uYTBmNjc2ZSAxMDA2NDQKLS0tIGEvYXV0by9jYy9pY2MKKysrIGIvYXV0by9jYy9pY2MKQEAgLTY0LDEyICs2NCwxNiBAQAogQ0ZMQUdTPSIkQ0ZMQUdTIC13ZDE4MSIKICMgemVybyB1c2VkIGZvciB1bmRlZmluZWQgcHJlcHJvY2Vzc2luZyBpZGVudGlmaWVyCiBDRkxBR1M9IiRDRkxBR1MgLXdkMTkzIgorI3RoZSBmb3JtYXQgc3RyaW5nIGVuZHMgYmVmb3JlIHRoaXMgYXJndW1lbnQKK0NGTEFHUz0iJENGTEFHUyAtd2QyNjgiCiAjIGludmFsaWQgZm9ybWF0IHN0cmluZyBjb252ZXJzaW9uCiBDRkxBR1M9IiRDRkxBR1MgLXdkMjY5IgogIyBjb252ZXJzaW9uIGZyb20gImxvbmcgbG9uZyIgdG8gInNpemVfdCIgbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cwogQ0ZMQUdTPSIkQ0ZMQUdTIC13ZDgxMCIKICMgcGFyYW1ldGVyIHdhcyBuZXZlciByZWZlcmVuY2VkCiBDRkxBR1M9IiRDRkxBR1MgLXdkODY5IgorIyAiY2MiIGNsb2JiZXIgaWdub3JlZCwgd2FybmluZ3MgZm9yIExpdW54J3MgaHRvbnMoKQorQ0ZMQUdTPSIkQ0ZMQUdTIC13ZDE0NjkiCiAKICMgU1RVQgogIyBlbnVtZXJhdGVkIHR5cGUgbWl4ZWQgd2l0aCBhbm90aGVyIHR5cGUKQEAgLTgyLDYgKzg2LDggQEAKIENGTEFHUz0iJENGTEFHUyAtd2QxNDE4IgogIyBleHRlcm5hbCBkZWNsYXJhdGlvbiBpbiBwcmltYXJ5IHNvdXJjZSBmaWxlCiBDRkxBR1M9IiRDRkxBR1MgLXdkMTQxOSIKKyMgbm9uLVBPRCBjbGFzcyB0eXBlIHBhc3NlZCB0aHJvdWdoIGVsbGlwc2lzCitDRkxBR1M9IiRDRkxBR1MgLXdkMTU5NSIKIAogIyBzdG9wIG9uIHdhcm5pbmcKIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIgpkaWZmIC0tZ2l0IGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAppbmRleCBmNjVjNzA1Li40OTM4ZDQ2IDEwMDY0NAotLS0gYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAorKysgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbApAQCAtOSw2ICs5LDQ5IEBACiA8dGl0bGUgbGFuZz0iZW4iPm5naW54IGNoYW5nZWxvZzwvdGl0bGU+CiAKIAorPGNoYW5nZXMgdmVyPSIwLjEuMzQiIGRhdGU9IjI2LjA1LjIwMDUiPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skg18vMwN7FzsnJIMLPzNjbycggz9TXxdTP1yDTINDPzc/d2MAgU1NJINLBws/eycog0NLPw8XT0yDNz8cg2sHDycvMydTY09EuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgd29ya2VyIHByb2Nlc3MgbWF5IGdvdCBjYXVnaHQgaW4gYW4gZW5kbGVzcyBsb29wIGlmIHRoZSBiaWcgcmVzcG9uc2UKK3BhcnQgd2VyZSBpbmNsdWRlIGJ5IFNTSS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQxdLFzcXOztnFLCDV09TBzsHXzMnXwcXN2cUgxMnSxcvUydfPyiAic2V0IiwgzsUgwtnMySDEz9PU1dDO2SDXIFNTSS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSB2YXJpYWJsZXMgc2V0IGJ5IHRoZSAic2V0IiBkaXJlY3RpdmUgd2VyZSBub3QgYXZhaWxhYmxlIGluIFNTSS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorxMnSxcvUydfBIGF1dG9pbmRleF9sb2NhbHRpbWUuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgImF1dG9pbmRleF9sb2NhbHRpbWUiIGRpcmVjdGl2ZS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ1dPUz8Ug2s7B3sXOycUg1yDEydLFy9TJ18UgcHJveHlfc2V0X2hlYWRlciDawdDSxd3BxdQg0MXSxcTB3tUg2sHHz8zP18vBLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIGVtcHR5IHZhbHVlIG9mIHRoZSAicHJveHlfc2V0X2hlYWRlciIgZGlyZWN0aXZlIGZvcmJpZHMgdGhlIGNsaWVudAorcmVxdWVzdCBoZWFkZXIgbGluZSBwYXNzaW5nLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMS4zMyIgZGF0ZT0iMjMuMDUuMjAwNSI+CiAKIDxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IGVmYzM1YjguLjFhMDhjNDIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4zMyIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjEuMzQiCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX05FV1BJRF9FWFQgICAgICIubmV3YmluIgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dG9pbmRleF9tb2R1bGUuYwppbmRleCA3NmM1YjAzLi45NmFiODFlIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dG9pbmRleF9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dG9pbmRleF9tb2R1bGUuYwpAQCAtMzMsNiArMzMsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgbmd4X2ZsYWdfdCAgICAgZW5hYmxlOworICAgIG5neF9mbGFnX3QgICAgIGxvY2FsdGltZTsKIH0gbmd4X2h0dHBfYXV0b2luZGV4X2xvY19jb25mX3Q7CiAKIApAQCAtNTgsNiArNTksMTMgQEAKICAgICAgIG9mZnNldG9mKG5neF9odHRwX2F1dG9pbmRleF9sb2NfY29uZl90LCBlbmFibGUpLAogICAgICAgTlVMTCB9LAogCisgICAgeyBuZ3hfc3RyaW5nKCJhdXRvaW5kZXhfbG9jYWx0aW1lIiksCisgICAgICBOR1hfSFRUUF9NQUlOX0NPTkZ8TkdYX0hUVFBfU1JWX0NPTkZ8TkdYX0hUVFBfTE9DX0NPTkZ8TkdYX0NPTkZfRkxBRywKKyAgICAgIG5neF9jb25mX3NldF9mbGFnX3Nsb3QsCisgICAgICBOR1hfSFRUUF9MT0NfQ09ORl9PRkZTRVQsCisgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9hdXRvaW5kZXhfbG9jX2NvbmZfdCwgbG9jYWx0aW1lKSwKKyAgICAgIE5VTEwgfSwKKwogICAgICAgbmd4X251bGxfY29tbWFuZAogfTsKIApAQCAtMzkxLDcgKzM5OSw3IEBACiAKICAgICAgICAgKmItPmxhc3QrKyA9ICcgJzsKIAotICAgICAgICBuZ3hfZ210aW1lKGVudHJ5W2ldLm10aW1lLCAmdG0pOworICAgICAgICBuZ3hfZ210aW1lKGVudHJ5W2ldLm10aW1lICsgbmd4X2dtdG9mZiAqIDYwICogYWxjZi0+bG9jYWx0aW1lLCAmdG0pOwogCiAgICAgICAgIGItPmxhc3QgPSBuZ3hfc3ByaW50ZihiLT5sYXN0LCAiJTAyZC0lcy0lZCAlMDJkOiUwMmQgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLm5neF90bV9tZGF5LApAQCAtNTQyLDYgKzU1MCw3IEBACiAgICAgfQogCiAgICAgY29uZi0+ZW5hYmxlID0gTkdYX0NPTkZfVU5TRVQ7CisgICAgY29uZi0+bG9jYWx0aW1lID0gTkdYX0NPTkZfVU5TRVQ7CiAKICAgICByZXR1cm4gY29uZjsKIH0KQEAgLTU1NCw2ICs1NjMsNyBAQAogICAgIG5neF9odHRwX2F1dG9pbmRleF9sb2NfY29uZl90ICpjb25mID0gY2hpbGQ7CiAKICAgICBuZ3hfY29uZl9tZXJnZV92YWx1ZShjb25mLT5lbmFibGUsIHByZXYtPmVuYWJsZSwgMCk7CisgICAgbmd4X2NvbmZfbWVyZ2VfdmFsdWUoY29uZi0+bG9jYWx0aW1lLCBwcmV2LT5sb2NhbHRpbWUsIDApOwogCiAgICAgcmV0dXJuIE5HWF9DT05GX09LOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMKaW5kZXggOTJkZDZjYy4uMDIxMWRhYiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jCkBAIC0xNTc2LDYgKzE1NzYsMTAgQEAKIAogICAgICAgICAqbmFtZSA9IHNyY1tpXS5rZXk7CiAKKyAgICAgICAgaWYgKHNyY1tpXS52YWx1ZS5sZW4gPT0gMCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAobmd4X2h0dHBfc2NyaXB0X3ZhcmlhYmxlc19jb3VudCgmc3JjW2ldLnZhbHVlKSA9PSAwKSB7CiAgICAgICAgICAgICBjb3B5ID0gbmd4X2FycmF5X3B1c2hfbihjb25mLT5oZWFkZXJzX3NldF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X2NvcHlfY29kZV90KSk7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMKaW5kZXggZGE0NzE5Yi4uZWQ3YWJkNiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZXdyaXRlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmV3cml0ZV9tb2R1bGUuYwpAQCAtMzEzLDcgKzMxMyw3IEBACiAKICAgICAvKgogICAgICAqIHRoZSBuZ3hfaHR0cF9yZXdyaXRlX21vZHVsZSBzZXRzIHZhcmlhYmxlcyBkaXJlY3RseSBpbiByLT52YXJpYWJsZXMsCi0gICAgICogYW5kIHRoZXkgc2hvdWxkIGJlIGhhbmRsZSBieSBuZ3hfaHR0cF9nZXRfaW5kZXhlZF92YXJpYWJsZSgpLAorICAgICAqIGFuZCB0aGV5IHNob3VsZCBiZSBoYW5kbGVkIGJ5IG5neF9odHRwX2dldF9pbmRleGVkX3ZhcmlhYmxlKCksCiAgICAgICogc28gdGhlIGhhbmRsZXIgaXMgY2FsbGVkIG9ubHkgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBpbml0aWFsaXplZAogICAgICAqLwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggNWMzZTJjOS4uOGU0NzgxNiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcG9zdHBvbmVfZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Bvc3Rwb25lX2ZpbHRlcl9tb2R1bGUuYwpAQCAtNDUsNiArNDUsNyBAQAogewogICAgIG5neF9pbnRfdCAgICAgICAgICAgICAgICAgICAgICByYzsKICAgICBuZ3hfY2hhaW5fdCAgICAgICAgICAgICAgICAgICAqb3V0OworICAgIG5neF9odHRwX3JlcXVlc3RfdCAgICAgICAgICAgICptcjsKICAgICBuZ3hfaHR0cF9wb3N0cG9uZWRfcmVxdWVzdF90ICAqcHIsICoqcHByOwogCiAgICAgaWYgKHItPmNvbm5lY3Rpb24tPndyaXRlLT5lcnJvcikgewpAQCAtOTgsMTQgKzk5LDE2IEBACiAgICAgICAgIG91dCA9IGluOwogICAgIH0KIAotICAgIGlmIChvdXQgPT0gTlVMTCAmJiByLT5vdXQgPT0gTlVMTCAmJiAhci0+Y29ubmVjdGlvbi0+YnVmZmVyZWQpIHsKKyAgICBtciA9IHItPm1haW4gPyByLT5tYWluIDogcjsKKworICAgIGlmIChvdXQgPT0gTlVMTCAmJiBtci0+b3V0ID09IE5VTEwgJiYgIW1yLT5jb25uZWN0aW9uLT5idWZmZXJlZCkgewogICAgICAgICByZXR1cm4gTkdYX09LOwogICAgIH0KIAogICAgIG5neF9sb2dfZGVidWcxKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICJodHRwIHBvc3Rwb25lIGZpbHRlciBvdXQgXCIlVlwiIiwgJnItPnVyaSk7CiAKLSAgICByYyA9IG5neF9odHRwX25leHRfZmlsdGVyKHItPm1haW4gPyByLT5tYWluIDogciwgb3V0KTsKKyAgICByYyA9IG5neF9odHRwX25leHRfZmlsdGVyKG1yLCBvdXQpOwogCiAgICAgaWYgKHJjID09IE5HWF9FUlJPUikgewogICAgICAgICAvKiBOR1hfRVJST1IgbWF5IGJlIHJldHVybmVkIGJ5IGFueSBmaWx0ZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3ZhcmlhYmxlcy5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmMKaW5kZXggMTJhYjUxNS4uZDY2ZjBkYyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmMKQEAgLTI3Niw3ICsyNzYsMTIgQEAKICAgICBpZiAodltrZXldLm5hbWUubGVuID09IG5hbWUtPmxlbgogICAgICAgICAmJiBuZ3hfc3RybmNtcCh2W2tleV0ubmFtZS5kYXRhLCBuYW1lLT5kYXRhLCBuYW1lLT5sZW4pID09IDApCiAgICAgewotICAgICAgICByZXR1cm4gdltrZXldLmhhbmRsZXIociwgdltrZXldLmRhdGEpOworICAgICAgICBpZiAodltrZXldLmZsYWdzICYgTkdYX0hUVFBfVkFSX0lOREVYRUQpIHsKKyAgICAgICAgICAgIHJldHVybiBuZ3hfaHR0cF9nZXRfaW5kZXhlZF92YXJpYWJsZShyLCB2W2tleV0uZGF0YSk7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB2W2tleV0uaGFuZGxlcihyLCB2W2tleV0uZGF0YSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobmd4X3N0cm5jbXAobmFtZS0+ZGF0YSwgImh0dHBfIiwgNSkgPT0gMCkgewpAQCAtNzAxLDcgKzcwNiw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdltpXS5oYW5kbGVyID0gYXZbbl0uaGFuZGxlcjsKICAgICAgICAgICAgICAgICB2W2ldLmRhdGEgPSBhdltuXS5kYXRhOwotICAgICAgICAgICAgICAgIHZbaV0uZmxhZ3MgPSBhdltuXS5mbGFnczsKKyAgICAgICAgICAgICAgICB2W2ldLmZsYWdzID0gYXZbbl0uZmxhZ3MgfCBOR1hfSFRUUF9WQVJfSU5ERVhFRDsKIAogICAgICAgICAgICAgICAgIGdvdG8gbmV4dDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3ZhcmlhYmxlcy5oIGIvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmgKaW5kZXggNjYyNDUzNS4uZDk4NmM3ZCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2RlZmluZSBOR1hfSFRUUF9WQVJfQ0hBTkdBQkxFICAgMQogI2RlZmluZSBOR1hfSFRUUF9WQVJfTk9DQUNIQUJMRSAgMgorI2RlZmluZSBOR1hfSFRUUF9WQVJfSU5ERVhFRCAgICAgNAogCiAKIHN0cnVjdCBuZ3hfaHR0cF92YXJpYWJsZV9zIHsK