ZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQppbmRleCBjZWJiYmMzLi4wMzQwZjc5IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUKKysrIGIvc3JjL01ha2VmaWxlCkBAIC0xMTksMTIgKzExOSwxNCBAQAogIwlJZiB5b3UgZG9uJ3Qgd2FudCB0byBpbnN0YWxsIGV2ZXJ5dGhpbmcsIHRoZXJlIGFyZSBvdGhlciB0YXJnZXRzOgogIwkJbWFrZSBpbnN0YWxsdmltCQlvbmx5IGluc3RhbGxzIFZpbSwgbm90IHRoZSB0b29scwogIwkJbWFrZSBpbnN0YWxsdmltYmluCW9ubHkgaW5zdGFsbHMgdGhlIFZpbSBleGVjdXRhYmxlCi0jCQltYWtlIGluc3RhbGxydW50aW1lCW9ubHkgaW5zdGFsbHMgdGhlIFZpbSBoZWxwIGFuZAorIwkJbWFrZSBpbnN0YWxscnVudGltZQlpbnN0YWxscyBtb3N0IG9mIHRoZSBydW50aW1lIGZpbGVzCisjCQltYWtlIGluc3RhbGxydGJhc2UJb25seSBpbnN0YWxscyB0aGUgVmltIGhlbHAgYW5kCiAjCQkJCQkJCXJ1bnRpbWUgZmlsZXMKICMJCW1ha2UgaW5zdGFsbGxpbmtzCW9ubHkgaW5zdGFsbHMgdGhlIFZpbSBiaW5hcnkgbGlua3MKICMJCW1ha2UgaW5zdGFsbG1hbmxpbmtzCW9ubHkgaW5zdGFsbHMgdGhlIFZpbSBtYW5wYWdlIGxpbmtzCiAjCQltYWtlIGluc3RhbGxtYWNyb3MJb25seSBpbnN0YWxscyB0aGUgVmltIG1hY3JvcwotIwkJbWFrZSBpbnN0YWxsdHV0b3IJb25seSBpbnN0YWxscyB0aGUgVmltIHR1dG9yCisjCQltYWtlIGluc3RhbGx0dXRvcmJpbglvbmx5IGluc3RhbGxzIHRoZSBWaW0gdHV0b3IgcHJvZ3JhbQorIwkJbWFrZSBpbnN0YWxsdHV0b3IJb25seSBpbnN0YWxscyB0aGUgVmltIHR1dG9yIGZpbGVzCiAjCQltYWtlIGluc3RhbGxzcGVsbAlvbmx5IGluc3RhbGxzIHRoZSBzcGVsbCBmaWxlcwogIwkJbWFrZSBpbnN0YWxsdG9vbHMJb25seSBpbnN0YWxscyB4eGQKICMJSWYgeW91IGluc3RhbGwgVmltLCBub3QgdG8gaW5zdGFsbCBmb3IgcmVhbCBidXQgdG8gcHJlcGFyZSBhIHBhY2thZ2UKQEAgLTE3MjUsNyArMTcyNyw4IEBACiAKIGluc3RhbGxfbm9ybWFsOiBpbnN0YWxsdmltIGluc3RhbGx0b29scyAkKElOU1RBTExfTEFOR1MpIGluc3RhbGwtaWNvbnMKIAotaW5zdGFsbHZpbTogaW5zdGFsbHZpbWJpbiBpbnN0YWxscnVudGltZSBpbnN0YWxsbGlua3MgaW5zdGFsbG1hbmxpbmtzIGluc3RhbGxtYWNyb3MgaW5zdGFsbHR1dG9yIGluc3RhbGxzcGVsbAoraW5zdGFsbHZpbTogaW5zdGFsbHZpbWJpbiBpbnN0YWxsdHV0b3JiaW4gXAorCQlpbnN0YWxscnVudGltZSBpbnN0YWxsbGlua3MgaW5zdGFsbG1hbmxpbmtzCiAKIGluc3RhbGx2aW1iaW46ICQoVklNVEFSR0VUKSAkKERFU1RESVIpJChleGVjX3ByZWZpeCkgJChERVNUX0JJTikKIAktaWYgdGVzdCAtZiAkKERFU1RfQklOKS8kKFZJTVRBUkdFVCk7IHRoZW4gXApAQCAtMTc0Myw4ICsxNzQ2LDExIEBACiBJTlNUQUxMTUFOQVJHUyA9ICQoVklNTE9DKSAkKFNDUklQVExPQykgJChWSU1SQ0xPQykgJChIRUxQU09VUkNFKSAkKE1BTk1PRCkgXAogCQkkKFZJTU5BTUUpICQoVklNRElGRk5BTUUpICQoRVZJTU5BTUUpCiAKKyMgSW5zdGFsbCBtb3N0IG9mIHRoZSBydW50aW1lIGZpbGVzCitpbnN0YWxscnVudGltZTogaW5zdGFsbHJ0YmFzZSBpbnN0YWxsbWFjcm9zIGluc3RhbGx0dXRvciBpbnN0YWxsc3BlbGwKKwkKICMgaW5zdGFsbCB0aGUgaGVscCBmaWxlczsgZmlyc3QgYWRqdXN0IHRoZSBjb250ZW50cyBmb3IgdGhlIGZpbmFsIGxvY2F0aW9uCi1pbnN0YWxscnVudGltZTogJChIRUxQU09VUkNFKS92aW0uMSAkKERFU1RfVklNKSAkKERFU1RfUlQpIFwKK2luc3RhbGxydGJhc2U6ICQoSEVMUFNPVVJDRSkvdmltLjEgJChERVNUX1ZJTSkgJChERVNUX1JUKSBcCiAJCSQoREVTVF9IRUxQKSAkKERFU1RfUFJJTlQpICQoREVTVF9DT0wpICQoREVTVF9TWU4pICQoREVTVF9JTkQpIFwKIAkJJChERVNUX0ZUUCkgJChERVNUX0FVVE8pICQoREVTVF9QTFVHKSAkKERFU1RfVFVUT1IpIFwKIAkJJChERVNUX1NQRUxMKSAkKERFU1RfQ09NUCkKQEAgLTE4MzQsOSArMTg0MCwxMSBAQAogCSAgICAgIGZpCiAKICMgaW5zdGFsbCB0aGUgdHV0b3IgZmlsZXMKLWluc3RhbGx0dXRvcjogJChERVNUX1ZJTSkgJChERVNUX1JUKSAkKERFU1RfVFVUT1IpCitpbnN0YWxsdHV0b3JiaW46ICQoREVTVF9WSU0pCiAJJChJTlNUQUxMX0RBVEEpIHZpbXR1dG9yICQoREVTVF9CSU4pLyQoVklNTkFNRSl0dXRvcgogCWNobW9kICQoU0NSSVBUTU9EKSAkKERFU1RfQklOKS8kKFZJTU5BTUUpdHV0b3IKKworaW5zdGFsbHR1dG9yOiAkKERFU1RfUlQpICQoREVTVF9UVVRPUikKIAktJChJTlNUQUxMX0RBVEEpICQoVFVUT1JTT1VSQ0UpL1JFQURNRSogJChUVVRPUlNPVVJDRSkvdHV0b3IqICQoREVTVF9UVVRPUikKIAljaG1vZCAkKEhFTFBNT0QpICQoREVTVF9UVVRPUikvKgogCkBAIC0yNTM5LDcgKzI1NDcsMTkgQEAKICNJQ09OUyA9ICQoYWRkcHJlZml4ICQoUkVTRElSKS8sICQoSUNPTl9BUFApICQoSUNPTl9ET0MpICQoSUNPTl9ET0NUWFQpKQogCiBpbnN0YWxsX21hY29zeDogZ3VpX2J1bmRsZQorIyBSZW1vdmUgdGhlIGxpbmsgdG8gdGhlIHJ1bnRpbWUgZGlyLCBkb24ndCB3YW50IHRvIGNvcHkgYWxsIG9mIHRoYXQuCisJLXJtICQoQVBQRElSKS9ydW50aW1lCiAJJChJTlNUQUxMX0RBVEFfUikgJChBUFBESVIpICQoREVTVERJUikkKHByZWZpeCkKKyMgSW5zdGFsbCB0aGUgcnVudGltZSBmaWxlcy4gIFJlY3Vyc2l2ZSEKKwktbWtkaXIgJChERVNURElSKSQocHJlZml4KS8kKEFQUERJUikvcnVudGltZQorCS1ta2RpciAkKERFU1RESVIpJChwcmVmaXgpLyQoQVBQRElSKS9iaW4KKwlzcmNkaXI9YHB3ZGA7ICQoTUFLRSkgLWYgTWFrZWZpbGUgaW5zdGFsbHJ1bnRpbWUgXAorCQlWSU1FWEU9JCRzcmNkaXIvJChWSU1UQVJHRVQpIFwKKwkJcHJlZml4PSQoREVTVERJUikkKHByZWZpeCkvJChBUFBESVIpIFwKKwkJVklNUlRMT0M9JChERVNURElSKSQocHJlZml4KS8kKEFQUERJUikvcnVudGltZQorIyBQdXQgdGhlIGxpbmsgYmFjay4KKwlsbiAtcyBgcHdkYC8uLi9ydW50aW1lICQoQVBQRElSKQorIyBUT0RPOiBDcmVhdGUgdGhlIHZpbXR1dG9yIGFwcGxpY2F0aW9uLgogCiBndWlfYnVuZGxlOiAkKEFQUERJUikgYnVuZGxlLWRpciBidW5kbGUtZXhlY3V0YWJsZSBidW5kbGUtaW5mbyBidW5kbGUtcmVzb3VyY2UgXAogCWJ1bmRsZS1sYW5ndWFnZQpAQCAtMjU0OSwxMiArMjU2OSw5IEBACiAKIGJ1bmRsZS1kaXI6ICQoQVBQRElSKS9Db250ZW50cyAkKFZJTVRBUkdFVCkKIAktQHNyY2Rpcj1gcHdkYDsgY2QgJChIRUxQU09VUkNFKTsgJChNQUtFKSBWSU1FWEU9JCRzcmNkaXIvJChWSU1UQVJHRVQpIHZpbXRhZ3MKLQljcCAtUiAuLi9ydW50aW1lICQoQVBQRElSKQotIyBXaGVuIHVzaW5nIENWUyBzb21lIENWUyBkaXJlY3RvcmllcyBtaWdodCBoYXZlIGJlZW4gY29waWVkLgotCWN2cz1gZmluZCAkKEFQUERJUikgXCggLW5hbWUgQ1ZTIC1vIC1uYW1lIEFBUERJUiBcKSAtcHJpbnRgOyBcCi0JICAgICAgaWYgdGVzdCAtbiAiJCRjdnMiOyB0aGVuIFwKLQkJIHJtIC1yZiAkJGN2czsgXAotCSAgICAgIGZpCisjIE1ha2UgYSBsaW5rIHRvIHRoZSBydW50aW1lIGRpcmVjdG9yeSwgc28gdGhhdCB3ZSBjYW4gdHJ5IG91dCB0aGUgZXhlY3V0YWJsZQorIyB3aXRob3V0IGluc3RhbGxpbmcgaXQuCisJLWxuIC1zIGBwd2RgLy4uL3J1bnRpbWUgJChBUFBESVIpCiAKIGJ1bmRsZS1leGVjdXRhYmxlOiAkKFZJTVRBUkdFVCkKIAljcCAkKFZJTVRBUkdFVCkgJChBUFBESVIpL0NvbnRlbnRzL01hY09TLyQoVklNVEFSR0VUKQpkaWZmIC0tZ2l0IGEvc3JjL2F1dG8vY29uZmlndXJlIGIvc3JjL2F1dG8vY29uZmlndXJlCmluZGV4IGVjYjcxNjEuLjZlMTE5NzggMTAwNzU1Ci0tLSBhL3NyYy9hdXRvL2NvbmZpZ3VyZQorKysgYi9zcmMvYXV0by9jb25maWd1cmUKQEAgLTI4NTEsNyArMjg1MSw2IEBACiBlY2hvICIke0VDSE9fVH1ubyIgPiY2OzsKIGVzYWMKIAotREVGQVVMVF9WSU1OQU1FPXZpbQogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBEYXJ3aW4gKE1hYyBPUyBYKSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBEYXJ3aW4gKE1hYyBPUyBYKS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgImAodW5hbWUpIDI+L2Rldi9udWxsYCIgPSBEYXJ3aW47IHRoZW4KQEAgLTMyNzQsNyArMzI3Myw2IEBACiAgICAgaWYgdGVzdCAieCRDQVJCT04iID0gInh5ZXMiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC16ICIkd2l0aF94IiAtYSAiWCRlbmFibGVfZ3VpIiAhPSBYbW90aWYgLWEgIlgkZW5hYmxlX2d1aSIgIT0gWGF0aGVuYSAtYSAiWCRlbmFibGVfZ3VpIiAhPSBYZ3RrIC1hICJYJGVuYWJsZV9ndWkiICE9IFhndGsyOyB0aGVuCiAJd2l0aF94PW5vCi0JREVGQVVMVF9WSU1OQU1FPVZpbQogICAgICAgZmkKICAgICBmaQogICBmaQpAQCAtMzMxNiw3ICszMzE0LDcgQEAKICAgVklNTkFNRT0iJHdpdGh2YWwiOyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkVklNTkFNRSIgPiY1CiBlY2hvICIke0VDSE9fVH0kVklNTkFNRSIgPiY2CiBlbHNlCi0gIFZJTU5BTUU9IiRERUZBVUxUX1ZJTU5BTUUiOyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBEZWZhdWx0aW5nIHRvICRWSU1OQU1FIiA+JjUKKyAgVklNTkFNRT0idmltIjsgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogRGVmYXVsdGluZyB0byAkVklNTkFNRSIgPiY1CiBlY2hvICIke0VDSE9fVH1EZWZhdWx0aW5nIHRvICRWSU1OQU1FIiA+JjYKIGZpOwogCkBAIC03NTIxLDcgKzc1MTksNyBAQAogICAgIGRvCiAgICAgICBmb3IgaiBpbiBxc3R5bGUuaDsKICAgICAgIGRvCi0gICAgICAgZWNobyAiY29uZmlndXJlOiA3NTI0OiAkaS8kaiIgPiY1CisgICAgICAgZWNobyAiY29uZmlndXJlOiA3NTIyOiAkaS8kaiIgPiY1CiAgICAgICAgaWYgdGVzdCAtciAiJGkvJGoiOyB0aGVuCiAgICAgICAgICBlY2hvICJ0YWtpbmcgdGhhdCIgPiY1CiAgICAgICAgICBxdF9pbmNkaXI9JGkKQEAgLTc1NDEsNyArNzUzOSw3IEBACiAgICAgZG8KICAgICAgIGZvciBqIGluIGthcHBsaWNhdGlvbi5oOwogICAgICAgZG8KLSAgICAgICBlY2hvICJjb25maWd1cmU6IDc1NDQ6ICRpLyRqIiA+JjUKKyAgICAgICBlY2hvICJjb25maWd1cmU6IDc1NDI6ICRpLyRqIiA+JjUKICAgICAgICBpZiB0ZXN0IC1yICIkaS8kaiI7IHRoZW4KICAgICAgICAgIGVjaG8gInRha2luZyB0aGF0IiA+JjUKICAgICAgICAgIGtkZV9pbmNkaXI9JGkKQEAgLTgwODAsNiArODA3OCw5IEBACiAgICAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogeWVzIiA+JjUKIGVjaG8gIiR7RUNIT19UfXllcyIgPiY2OwogICBHVUlUWVBFPUNBUkJPTkdVSQorICBpZiB0ZXN0ICIkVklNTkFNRSIgPSAidmltIjsgdGhlbgorICAgIFZJTU5BTUU9VmltCisgIGZpCiAgICAgU0tJUF9HVEs9WUVTOwogICBTS0lQX0dUSzI9WUVTOwogICBTS0lQX0dOT01FPVlFUzsKQEAgLTExMjAzLDcgKzExMjA0LDYgQEAKIGZpCiBybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAKLWlmIHRlc3QgIngkTUFDT1NYIiAhPSAieHllcyI7IHRoZW4KIAogZm9yIGFjX2hlYWRlciBpbiBzdHJpbmdzLmgKIGRvCkBAIC0xMTM1NCw3ICsxMTM1NCw2IEBACiAKIGRvbmUKIAotZmkKIAogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGlmIHN0cmluZ3MuaCBjYW4gYmUgaW5jbHVkZWQgYWZ0ZXIgc3RyaW5nLmgiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBzdHJpbmdzLmggY2FuIGJlIGluY2x1ZGVkIGFmdGVyIHN0cmluZy5oLi4uICRFQ0hPX0MiID4mNgpkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5jIGIvc3JjL2J1ZmZlci5jCmluZGV4IDFmYjk1ZmQuLjIxYjNiYzQgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuYworKysgYi9zcmMvYnVmZmVyLmMKQEAgLTE3NDYsNiArMTc0Niw3IEBACiAjZW5kaWYKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKICAgICBjbGVhcl9zdHJpbmdfb3B0aW9uKCZidWYtPmJfcF9jZnUpOworICAgIGNsZWFyX3N0cmluZ19vcHRpb24oJmJ1Zi0+Yl9wX29mdSk7CiAjZW5kaWYKICNpZmRlZiBGRUFUX1FVSUNLRklYCiAgICAgY2xlYXJfc3RyaW5nX29wdGlvbigmYnVmLT5iX3BfZ3ApOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZ3VyZS5pbiBiL3NyYy9jb25maWd1cmUuaW4KaW5kZXggZTlmMjFhMi4uNzRmYzAxNyAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZ3VyZS5pbgorKysgYi9zcmMvY29uZmlndXJlLmluCkBAIC03OSw3ICs3OSw2IEBACiBkbmwgQ2hlY2sgZm9yIERhcndpbiBhbmQgTWFjT1MgWAogZG5sIFdlIGRvIGEgY2hlY2sgZm9yIE1hY09TIFggaW4gdGhlIHZlcnkgYmVnaW5uaW5nIGJlY2F1c2UgdGhlcmUKIGRubCBhcmUgYSBsb3Qgb2Ygb3RoZXIgdGhpbmdzIHdlIG5lZWQgdG8gY2hhbmdlIGJlc2lkZXMgR1VJIHN0dWZmCi1ERUZBVUxUX1ZJTU5BTUU9dmltCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBEYXJ3aW4gKE1hYyBPUyBYKV0pCiBpZiB0ZXN0ICJgKHVuYW1lKSAyPi9kZXYvbnVsbGAiID0gRGFyd2luOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoeWVzKQpAQCAtMTE0LDcgKzExMyw2IEBACiAgICAgaWYgdGVzdCAieCRDQVJCT04iID0gInh5ZXMiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC16ICIkd2l0aF94IiAtYSAiWCRlbmFibGVfZ3VpIiAhPSBYbW90aWYgLWEgIlgkZW5hYmxlX2d1aSIgIT0gWGF0aGVuYSAtYSAiWCRlbmFibGVfZ3VpIiAhPSBYZ3RrIC1hICJYJGVuYWJsZV9ndWkiICE9IFhndGsyOyB0aGVuCiAJd2l0aF94PW5vCi0JREVGQVVMVF9WSU1OQU1FPVZpbQogICAgICAgZmkKICAgICBmaQogICBmaQpAQCAtMTUzLDcgKzE1MSw3IEBACiBBQ19NU0dfQ0hFQ0tJTkcoLS13aXRoLXZpbS1uYW1lIGFyZ3VtZW50KQogQUNfQVJHX1dJVEgodmltLW5hbWUsIFsgIC0td2l0aC12aW0tbmFtZT1OQU1FICAgIHdoYXQgdG8gY2FsbCB0aGUgVmltIGV4ZWN1dGFibGVdLAogCVZJTU5BTUU9IiR3aXRodmFsIjsgQUNfTVNHX1JFU1VMVCgkVklNTkFNRSksCi0JVklNTkFNRT0iJERFRkFVTFRfVklNTkFNRSI7IEFDX01TR19SRVNVTFQoRGVmYXVsdGluZyB0byAkVklNTkFNRSkpCisJVklNTkFNRT0idmltIjsgQUNfTVNHX1JFU1VMVChEZWZhdWx0aW5nIHRvICRWSU1OQU1FKSkKIEFDX1NVQlNUKFZJTU5BTUUpCiBBQ19NU0dfQ0hFQ0tJTkcoLS13aXRoLWV4LW5hbWUgYXJndW1lbnQpCiBBQ19BUkdfV0lUSChleC1uYW1lLCBbICAtLXdpdGgtZXgtbmFtZT1OQU1FICAgICB3aGF0IHRvIGNhbGwgdGhlIEV4IGV4ZWN1dGFibGVdLApAQCAtMTU1OCw2ICsxNTU2LDkgQEAKICAgZG5sIGFscmVhZHkgZGlkIHRoaXMKICAgQUNfTVNHX1JFU1VMVCh5ZXMpOwogICBHVUlUWVBFPUNBUkJPTkdVSQorICBpZiB0ZXN0ICIkVklNTkFNRSIgPSAidmltIjsgdGhlbgorICAgIFZJTU5BTUU9VmltCisgIGZpCiAgIGRubCBza2lwIGV2ZXJ5dGhpbmcgZWxzZQogICBTS0lQX0dUSz1ZRVM7CiAgIFNLSVBfR1RLMj1ZRVM7CkBAIC0yMjU3LDEwICsyMjU4LDcgQEAKIAkJICAgICAgQUNfREVGSU5FKEhBVkVfUFRIUkVBRF9OUF9IKSwKIAkgICAgICBBQ19NU0dfUkVTVUxUKG5vKSkKIAotZG5sIE9uIE1hYyBPUyBYIHN0cmluZ3MuaCBleGlzdHMgYnV0IHByb2R1Y2VzIGEgd2FybmluZyBtZXNzYWdlIDotKAotaWYgdGVzdCAieCRNQUNPU1giICE9ICJ4eWVzIjsgdGhlbgotICBBQ19DSEVDS19IRUFERVJTKHN0cmluZ3MuaCkKLWZpCitBQ19DSEVDS19IRUFERVJTKHN0cmluZ3MuaCkKIAogZG5sIENoZWNrIGlmIHN0cmluZ3MuaCBhbmQgc3RyaW5nLmggY2FuIGJvdGggYmUgaW5jbHVkZWQgd2hlbiBkZWZpbmVkLgogQUNfTVNHX0NIRUNLSU5HKFtpZiBzdHJpbmdzLmggY2FuIGJlIGluY2x1ZGVkIGFmdGVyIHN0cmluZy5oXSkKZGlmZiAtLWdpdCBhL3NyYy9lZGl0LmMgYi9zcmMvZWRpdC5jCmluZGV4IGYzOTlmMzAuLmQxYTQ4ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9lZGl0LmMKKysrIGIvc3JjL2VkaXQuYwpAQCAtODE5LDcgKzgxOSw3IEBACiAJICAgIC8qRkFMTFRIUk9VR0gqLwogCiAJY2FzZSBDdHJsX086CS8qIGV4ZWN1dGUgb25lIGNvbW1hbmQgKi8KLSNpZmRlZiBGRUFUX0lOU19FWFBBTkQKKyNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAkgICAgaWYgKGN0cmxfeF9tb2RlID09IENUUkxfWF9PQ0NVTFQpCiAJCWdvdG8gZG9jb21wbGV0ZTsKICNlbmRpZgpAQCAtMTg0NCw5ICsxODQ0LDkgQEAKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAljYXNlIENUUkxfWF9GVU5DVElPTjoKIAkgICAgcmV0dXJuIChjID09IEN0cmxfVSB8fCBjID09IEN0cmxfUCB8fCBjID09IEN0cmxfTik7Ci0jZW5kaWYKIAljYXNlIENUUkxfWF9PQ0NVTFQ6CiAJICAgIHJldHVybiAoYyA9PSBDdHJsX08gfHwgYyA9PSBDdHJsX1AgfHwgYyA9PSBDdHJsX04pOworI2VuZGlmCiAJY2FzZSBDVFJMX1hfU1BFTEw6CiAJICAgIHJldHVybiAoYyA9PSBDdHJsX1MgfHwgYyA9PSBDdHJsX1AgfHwgYyA9PSBDdHJsX04pOwogICAgIH0KQEAgLTIzNjAsMTAgKzIzNjAsMTAgQEAKIAkgICAgY2FzZSBDdHJsX1U6CiAJCWN0cmxfeF9tb2RlID0gQ1RSTF9YX0ZVTkNUSU9OOwogCQlicmVhazsKLSNlbmRpZgogCSAgICBjYXNlIEN0cmxfTzoKIAkJY3RybF94X21vZGUgPSBDVFJMX1hfT0NDVUxUOwogCQlicmVhazsKKyNlbmRpZgogCSAgICBjYXNlICdzJzoKIAkgICAgY2FzZSBDdHJsX1M6CiAJCWN0cmxfeF9tb2RlID0gQ1RSTF9YX1NQRUxMOwpAQCAtMjU4MSwzNiArMjU4MSwzOCBAQAogfQogCiAjaWZkZWYgRkVBVF9DT01QTF9GVU5DCi1zdGF0aWMgaW50IGV4cGFuZF9ieV9mdW5jdGlvbiBfX0FSR1MoKGludCBjb2wsIGNoYXJfdSAqYmFzZSwgY2hhcl91ICoqKm1hdGNoZXMpKTsKK3N0YXRpYyBpbnQgZXhwYW5kX2J5X2Z1bmN0aW9uIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqYmFzZSwgY2hhcl91ICoqKm1hdGNoZXMpKTsKIAogLyoKLSAqIEV4ZWN1dGUgdXNlciBkZWZpbmVkIGNvbXBsZXRlIGZ1bmN0aW9uICdjb21wbGV0ZWZ1bmMnLCBhbmQgZ2V0IG1hdGNoZXMgaW4KLSAqICJtYXRjaGVzIi4KKyAqIEV4ZWN1dGUgdXNlciBkZWZpbmVkIGNvbXBsZXRlIGZ1bmN0aW9uICdjb21wbGV0ZWZ1bmMnIG9yICdvY2N1bHRmdW5jJywgYW5kCisgKiBnZXQgbWF0Y2hlcyBpbiAibWF0Y2hlcyIuCiAgKiBSZXR1cm4gdmFsdWUgaXMgbnVtYmVyIG9mIG1hdGNoZXMuCiAgKi8KICAgICBzdGF0aWMgaW50Ci1leHBhbmRfYnlfZnVuY3Rpb24oY29sLCBiYXNlLCBtYXRjaGVzKQotICAgIGludAkJY29sOworZXhwYW5kX2J5X2Z1bmN0aW9uKHR5cGUsIGJhc2UsIG1hdGNoZXMpCisgICAgaW50CQl0eXBlOwkgICAgLyogQ1RSTF9YX09DQ1VMVCBvciBDVFJMX1hfRlVOQ1RJT04gKi8KICAgICBjaGFyX3UJKmJhc2U7CiAgICAgY2hhcl91CSoqKm1hdGNoZXM7CiB7CiAgICAgbGlzdF9UICAgICAgKm1hdGNobGlzdDsKLSAgICBjaGFyX3UJY29sYnVmWzMwXTsKLSAgICBjaGFyX3UJKmFyZ3NbM107CisgICAgY2hhcl91CSphcmdzWzJdOwogICAgIGxpc3RpdGVtX1QJKmxpOwogICAgIGdhcnJheV9UICAgIGdhOwogICAgIGNoYXJfdQkqcDsKKyAgICBjaGFyX3UJKmZ1bmNuYW1lOworICAgIHBvc19UCXBvczsKIAotICAgIGlmICgqY3VyYnVmLT5iX3BfY2Z1ID09IE5VTCkKKyAgICBmdW5jbmFtZSA9ICh0eXBlID09IENUUkxfWF9GVU5DVElPTikgPyBjdXJidWYtPmJfcF9jZnUgOiBjdXJidWYtPmJfcF9vZnU7CisgICAgaWYgKCpmdW5jbmFtZSA9PSBOVUwpCiAJcmV0dXJuIDA7CiAKICAgICAvKiBDYWxsICdjb21wbGV0ZWZ1bmMnIHRvIG9idGFpbiB0aGUgbGlzdCBvZiBtYXRjaGVzLiAqLwogICAgIGFyZ3NbMF0gPSAoY2hhcl91ICopIjAiOwotICAgIHNwcmludGYoKGNoYXIgKiljb2xidWYsICIlZCIsIGNvbCArIChpbnQpU1RSTEVOKGJhc2UpKTsKLSAgICBhcmdzWzFdID0gY29sYnVmOwotICAgIGFyZ3NbMl0gPSBiYXNlOworICAgIGFyZ3NbMV0gPSBiYXNlOwogCi0gICAgbWF0Y2hsaXN0ID0gY2FsbF9mdW5jX3JldGxpc3QoY3VyYnVmLT5iX3BfY2Z1LCAzLCBhcmdzLCBGQUxTRSk7CisgICAgcG9zID0gY3Vyd2luLT53X2N1cnNvcjsKKyAgICBtYXRjaGxpc3QgPSBjYWxsX2Z1bmNfcmV0bGlzdChmdW5jbmFtZSwgMiwgYXJncywgRkFMU0UpOworICAgIGN1cndpbi0+d19jdXJzb3IgPSBwb3M7CS8qIHJlc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbiAqLwogICAgIGlmIChtYXRjaGxpc3QgPT0gTlVMTCkKIAlyZXR1cm4gMDsKIApAQCAtMjYzNCwzMCArMjYzNiw2IEBACiB9CiAjZW5kaWYgLyogRkVBVF9DT01QTF9GVU5DICovCiAKLXN0YXRpYyBpbnQgZXhwYW5kX29jY3VsdCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGludCBjb2wsIGNoYXJfdSAqYmFzZSwgY2hhcl91ICoqKm1hdGNoZXMpKTsKLQotLyoKLSAqIFBlcmZvcm0gb2NjdWx0IGNvbXBsZXRpb24nCi0gKiBSZXR1cm4gdmFsdWUgaXMgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgYW5kIGFycmF5IG9mIGNhbmRpZGF0ZXMgYXMgIm1hdGNocCIuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1leHBhbmRfb2NjdWx0KGxudW0sIGNvbCwgcGF0LCBtYXRjaHApCi0gICAgbGluZW5yX1QJbG51bTsKLSAgICBpbnQJCWNvbDsKLSAgICBjaGFyX3UJKnBhdDsKLSAgICBjaGFyX3UJKioqbWF0Y2hwOwotewotICAgIGludAkgICAgbnVtX21hdGNoZXM7Ci0KLSAgICAvKiBVc2UgdGFnIGNvbXBsZXRpb24gZm9yIG5vdy4gKi8KLSAgICBpZiAoZmluZF90YWdzKHBhdCwgJm51bV9tYXRjaGVzLCBtYXRjaHAsCi0JICAgIFRBR19SRUdFWFAgfCBUQUdfTkFNRVMgfCBUQUdfTk9JQyB8Ci0JICAgIFRBR19JTlNfQ09NUCB8IChjdHJsX3hfbW9kZSA/IFRBR19WRVJCT1NFIDogMCksCi0JICAgIFRBR19NQU5ZLCBjdXJidWYtPmJfZmZuYW1lKSA9PSBGQUlMKQotCXJldHVybiAwOwotICAgIHJldHVybiBudW1fbWF0Y2hlczsKLX0KLQogLyoKICAqIEdldCB0aGUgbmV4dCBleHBhbnNpb24ocyksIHVzaW5nICJjb21wbF9wYXR0ZXJuIi4KICAqIFRoZSBzZWFyY2ggc3RhcnRzIGF0IHBvc2l0aW9uICJpbmkiIGluIGN1cmJ1ZiBhbmQgaW4gdGhlIGRpcmVjdGlvbiBkaXIuCkBAIC0yODcwLDIwICsyODQ4LDEzIEBACiAKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAljYXNlIENUUkxfWF9GVU5DVElPTjoKLQkgICAgbnVtX21hdGNoZXMgPSBleHBhbmRfYnlfZnVuY3Rpb24oZmlyc3RfbWF0Y2hfcG9zLmNvbCwKLQkJCQkJCSAgICAgY29tcGxfcGF0dGVybiwgJm1hdGNoZXMpOworCWNhc2UgQ1RSTF9YX09DQ1VMVDoKKwkgICAgbnVtX21hdGNoZXMgPSBleHBhbmRfYnlfZnVuY3Rpb24odHlwZSwgY29tcGxfcGF0dGVybiwgJm1hdGNoZXMpOwogCSAgICBpZiAobnVtX21hdGNoZXMgPiAwKQogCQlpbnNfY29tcGxfYWRkX21hdGNoZXMobnVtX21hdGNoZXMsIG1hdGNoZXMsIGRpcik7CiAJICAgIGJyZWFrOwogI2VuZGlmCiAKLQljYXNlIENUUkxfWF9PQ0NVTFQ6Ci0JICAgIG51bV9tYXRjaGVzID0gZXhwYW5kX29jY3VsdChmaXJzdF9tYXRjaF9wb3MubG51bSwKLQkJCQkgZmlyc3RfbWF0Y2hfcG9zLmNvbCwgY29tcGxfcGF0dGVybiwgJm1hdGNoZXMpOwotCSAgICBpZiAobnVtX21hdGNoZXMgPiAwKQotCQlpbnNfY29tcGxfYWRkX21hdGNoZXMobnVtX21hdGNoZXMsIG1hdGNoZXMsIGRpcik7Ci0JICAgIGJyZWFrOwotCiAJY2FzZSBDVFJMX1hfU1BFTEw6CiAjaWZkZWYgRkVBVF9TWU5fSEwKIAkgICAgbnVtX21hdGNoZXMgPSBleHBhbmRfc3BlbGxpbmcoZmlyc3RfbWF0Y2hfcG9zLmxudW0sCkBAIC0zMzAyLDcgKzMyNzMsNyBAQAogCQkgICAgY29tcGxfY29sID0gY29tcGxfc3RhcnRwb3MuY29sOwogCQl9CiAJCWNvbXBsX2xlbmd0aCA9IGN1cndpbi0+d19jdXJzb3IuY29sIC0gKGludCljb21wbF9jb2w7Ci0JCS8qIElPYnVmIGlzIHVzZWQgdG8gYWRkIGEgIndvcmQgZnJvbSB0aGUgbmV4dCBsaW5lIiB3b3VsZCB3ZQorCQkvKiBJT2J1ZmYgaXMgdXNlZCB0byBhZGQgYSAid29yZCBmcm9tIHRoZSBuZXh0IGxpbmUiIHdvdWxkIHdlCiAJCSAqIGhhdmUgZW5vdWdoIHNwYWNlPyAganVzdCBiZWluZyBwYXJhbm9pYyAqLwogI2RlZmluZQlNSU5fU1BBQ0UgNzUKIAkJaWYgKGNvbXBsX2xlbmd0aCA+IChJT1NJWkUgLSBNSU5fU1BBQ0UpKQpAQCAtMzQ4NiwyNyArMzQ1NywzMSBAQAogCSAgICBjb21wbF9jb2wgPSBzdGFydGNvbDsKIAkgICAgY29tcGxfbGVuZ3RoID0gY3Vyc19jb2wgLSBzdGFydGNvbDsKIAl9Ci0jaWZkZWYgRkVBVF9DT01QTF9GVU5DCi0JZWxzZSBpZiAoY3RybF94X21vZGUgPT0gQ1RSTF9YX0ZVTkNUSU9OKQorCWVsc2UgaWYgKGN0cmxfeF9tb2RlID09IENUUkxfWF9GVU5DVElPTiB8fCBjdHJsX3hfbW9kZSA9PSBDVFJMX1hfT0NDVUxUKQogCXsKKyNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAkgICAgLyoKLQkgICAgICogQ2FsbCB1c2VyIGRlZmluZWQgZnVuY3Rpb24gJ2NvbXBsZXRlZnVuYycgd2l0aCAiYTpmaW5kc3RhcnQiIGlzCi0JICAgICAqIDEgdG8gb2J0YWluIHRoZSBsZW5ndGggb2YgdGV4dCB0byB1c2UgZm9yIGNvbXBsZXRpb24uCisJICAgICAqIENhbGwgdXNlciBkZWZpbmVkIGZ1bmN0aW9uICdjb21wbGV0ZWZ1bmMnIHdpdGggImE6ZmluZHN0YXJ0IgorCSAgICAgKiBzZXQgdG8gMSB0byBvYnRhaW4gdGhlIGxlbmd0aCBvZiB0ZXh0IHRvIHVzZSBmb3IgY29tcGxldGlvbi4KIAkgICAgICovCi0JICAgIGNoYXJfdQljb2xidWZbMzBdOwotCSAgICBjaGFyX3UJKmFyZ3NbM107CisJICAgIGNoYXJfdQkqYXJnc1syXTsKIAkgICAgaW50CQljb2w7CisJICAgIGNoYXJfdQkqZnVuY25hbWU7CisJICAgIHBvc19UCXBvczsKIAotCSAgICAvKiBDYWxsICdjb21wbGV0ZWZ1bmMnIGFuZCBnZXQgcGF0dGVybiBsZW5ndGggYXMgYSBzdHJpbmcgKi8KLQkgICAgaWYgKCpjdXJidWYtPmJfcF9jZnUgPT0gTlVMKQorCSAgICAvKiBDYWxsICdjb21wbGV0ZWZ1bmMnIG9yICdvY2N1bHRmdW5jJyBhbmQgZ2V0IHBhdHRlcm4gbGVuZ3RoIGFzIGEKKwkgICAgICogc3RyaW5nICovCisJICAgIGZ1bmNuYW1lID0gY3RybF94X21vZGUgPT0gQ1RSTF9YX0ZVTkNUSU9OCisJCQkJCSAgPyBjdXJidWYtPmJfcF9jZnUgOiBjdXJidWYtPmJfcF9vZnU7CisJICAgIGlmICgqZnVuY25hbWUgPT0gTlVMKQogCQlyZXR1cm4gRkFJTDsKIAogCSAgICBhcmdzWzBdID0gKGNoYXJfdSAqKSIxIjsKLQkgICAgc3ByaW50ZigoY2hhciAqKWNvbGJ1ZiwgIiVkIiwgKGludCljdXJzX2NvbCk7Ci0JICAgIGFyZ3NbMV0gPSBjb2xidWY7Ci0JICAgIGFyZ3NbMl0gPSBOVUxMOworCSAgICBhcmdzWzFdID0gTlVMTDsKKwkgICAgcG9zID0gY3Vyd2luLT53X2N1cnNvcjsKKwkgICAgY29sID0gY2FsbF9mdW5jX3JldG5yKGZ1bmNuYW1lLCAyLCBhcmdzLCBGQUxTRSk7CisJICAgIGN1cndpbi0+d19jdXJzb3IgPSBwb3M7CS8qIHJlc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbiAqLwogCi0JICAgIGNvbCA9IGNhbGxfZnVuY19yZXRucihjdXJidWYtPmJfcF9jZnUsIDMsIGFyZ3MsIEZBTFNFKTsKIAkgICAgaWYgKGNvbCA8IDApCiAJCXJldHVybiBGQUlMOwogCSAgICBjb21wbF9jb2wgPSBjb2w7CkBAIC0zNTE5LDE5ICszNDk0LDcgQEAKIAkgICAgY29tcGxfbGVuZ3RoID0gY3Vyc19jb2wgLSBjb21wbF9jb2w7CiAJICAgIGNvbXBsX3BhdHRlcm4gPSB2aW1fc3RybnNhdmUobGluZSArIGNvbXBsX2NvbCwgY29tcGxfbGVuZ3RoKTsKIAkgICAgaWYgKGNvbXBsX3BhdHRlcm4gPT0gTlVMTCkKLQkJcmV0dXJuIEZBSUw7Ci0JfQogI2VuZGlmCi0JZWxzZSBpZiAoY3RybF94X21vZGUgPT0gQ1RSTF9YX09DQ1VMVCkKLQl7Ci0JICAgIC8qIFRPRE86IGxldCBsYW5ndWFnZS1zcGVjaWZpYyBmdW5jdGlvbiBoYW5kbGUgbG9jYXRpbmcgdGhlIHRleHQKLQkgICAgICogdG8gYmUgY29tcGxldGVkLiAqLwotCSAgICB3aGlsZSAoLS1zdGFydGNvbCA+PSAwICYmIHZpbV9pc0lEYyhsaW5lW3N0YXJ0Y29sXSkpCi0JCTsKLQkgICAgY29tcGxfY29sICs9ICsrc3RhcnRjb2w7Ci0JICAgIGNvbXBsX2xlbmd0aCA9IChpbnQpY3Vyc19jb2wgLSBzdGFydGNvbDsKLQkgICAgY29tcGxfcGF0dGVybiA9IHZpbV9zdHJuc2F2ZShsaW5lICsgY29tcGxfY29sLCBjb21wbF9sZW5ndGgpOwotCSAgICBpZiAoY29tcGxfcGF0dGVybiA9PSBOVUxMKQogCQlyZXR1cm4gRkFJTDsKIAl9CiAJZWxzZSBpZiAoY3RybF94X21vZGUgPT0gQ1RSTF9YX1NQRUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2V4X2dldGxuLmMgYi9zcmMvZXhfZ2V0bG4uYwppbmRleCBjZDQwYTY4Li5jNjE5MGJlIDEwMDY0NAotLS0gYS9zcmMvZXhfZ2V0bG4uYworKysgYi9zcmMvZXhfZ2V0bG4uYwpAQCAtMjE1MCw3ICsyMTUwLDggQEAKICAgICByZXR1cm4gKGNoYXJfdSAqKWxpbmVfZ2EuZ2FfZGF0YTsKIH0KIAotI2lmZGVmIENVUlNPUl9TSEFQRQorIyBpZiBkZWZpbmVkKE1DSF9DVVJTT1JfU0hBUEUpIHx8IGRlZmluZWQoRkVBVF9HVUkpIFwKKwl8fCBkZWZpbmVkKEZFQVRfTU9VU0VTSEFQRSkgfHwgZGVmaW5lZChQUk9UTykKIC8qCiAgKiBSZXR1cm4gVFJVRSBpZiBjY2xpbmUub3ZlcnN0cmlrZSBpcyBvbi4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9tYWMuYyBiL3NyYy9ndWlfbWFjLmMKaW5kZXggOTI1M2FhMS4uNTBlOTY2OSAxMDA2NDQKLS0tIGEvc3JjL2d1aV9tYWMuYworKysgYi9zcmMvZ3VpX21hYy5jCkBAIC00OTMwLDE2ICs0OTMwLDYgQEAKICNlbmRpZgogCXRlbXBjbGlwW3NjcmFwU2l6ZV0gPSAwOwogCi0Jc2VhcmNoQ1IgPSAoY2hhciAqKXRlbXBjbGlwOwotCXdoaWxlIChzZWFyY2hDUiAhPSBOVUxMKQotCXsKLQkgICAgc2VhcmNoQ1IgPSBzdHJjaHIoc2VhcmNoQ1IsICdccicpOwotCi0JICAgIGlmIChzZWFyY2hDUiAhPSBOVUxMKQotCQlzZWFyY2hDUlswXSA9ICdcbic7Ci0KLQl9Ci0KICNpZiBkZWZpbmVkKEZFQVRfTUJZVEUpICYmIGRlZmluZWQoVVNFX0NBUkJPTklaRUQpCiAJLyogQ29udmVydCBmcm9tIHV0Zi0xNiAoY2xpcGJvYXJkKSAqLwogCXNpemVfdCBlbmNMZW4gPSAwOwpAQCAtNDk1MSw2ICs0OTQxLDE3IEBACiAJICAgIHRlbXBjbGlwID0gdG87CiAJfQogI2VuZGlmCisKKwlzZWFyY2hDUiA9IChjaGFyICopdGVtcGNsaXA7CisJd2hpbGUgKHNlYXJjaENSICE9IE5VTEwpCisJeworCSAgICBzZWFyY2hDUiA9IHN0cmNocihzZWFyY2hDUiwgJ1xyJyk7CisKKwkgICAgaWYgKHNlYXJjaENSICE9IE5VTEwpCisJCXNlYXJjaENSWzBdID0gJ1xuJzsKKworCX0KKwogCWNsaXBfeWFua19zZWxlY3Rpb24odHlwZSwgdGVtcGNsaXAsIHNjcmFwU2l6ZSwgY2JkKTsKIAogCXZpbV9mcmVlKHRlbXBjbGlwKTsKZGlmZiAtLWdpdCBhL3NyYy9ndWlfdzQ4LmMgYi9zcmMvZ3VpX3c0OC5jCmluZGV4IDU2NDlhZWIuLjAzYjdkNzEgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfdzQ4LmMKKysrIGIvc3JjL2d1aV93NDguYwpAQCAtMTA1LDYgKzEwNSw3IEBACiB0eXBlZGVmIGludCBMUFdJTkRPV1BPUzsKIHR5cGVkZWYgaW50IExQV09SRDsKIHR5cGVkZWYgaW50IExSRVNVTFQ7Cit0eXBlZGVmIGludCBIUkVTVUxUOwogIyB1bmRlZiBNU0cKIHR5cGVkZWYgaW50IE1TRzsKIHR5cGVkZWYgaW50IE5FV1RFWFRNRVRSSUM7CmRpZmYgLS1naXQgYS9zcmMvaWZfbXpzY2guYyBiL3NyYy9pZl9tenNjaC5jCmluZGV4IGRkZTMxZWIuLjE4NmVlNjYgMTAwNjQ0Ci0tLSBhL3NyYy9pZl9tenNjaC5jCisrKyBiL3NyYy9pZl9tenNjaC5jCkBAIC05NTYsMTIgKzk1NiwxMiBAQAogICAgIHZvaWQKIG16c2NoZW1lX2J1ZmZlcl9mcmVlKGJ1Zl9UICpidWYpCiB7Ci0gICAgaWYgKGJ1Zi0+bXpzY2hlbWVfcmVmKQorICAgIGlmIChidWYtPmJfbXpzY2hlbWVfcmVmKQogICAgIHsKICAgICAgICAgdmltX216X2J1ZmZlciAqYnA7Ci0JYnAgPSBidWYtPm16c2NoZW1lX3JlZjsKKwlicCA9IGJ1Zi0+Yl9tenNjaGVtZV9yZWY7CiAJYnAtPmJ1ZiA9IElOVkFMSURfQlVGRkVSX1ZBTFVFOwotCWJ1Zi0+bXpzY2hlbWVfcmVmID0gTlVMTDsKKwlidWYtPmJfbXpzY2hlbWVfcmVmID0gTlVMTDsKIAlzY2hlbWVfZ2NfcHRyX29rKGJwKTsKICAgICB9CiB9CkBAIC05NzIsMTIgKzk3MiwxMiBAQAogICAgIHZvaWQKIG16c2NoZW1lX3dpbmRvd19mcmVlKHdpbl9UICp3aW4pCiB7Ci0gICAgaWYgKHdpbi0+bXpzY2hlbWVfcmVmKQorICAgIGlmICh3aW4tPndfbXpzY2hlbWVfcmVmKQogICAgIHsKIAl2aW1fbXpfd2luZG93ICp3cDsKLQl3cCA9IHdpbi0+bXpzY2hlbWVfcmVmOworCXdwID0gd2luLT53X216c2NoZW1lX3JlZjsKIAl3cC0+d2luID0gSU5WQUxJRF9XSU5ET1dfVkFMVUU7Ci0Jd2luLT5tenNjaGVtZV9yZWYgPSBOVUxMOworCXdpbi0+d19tenNjaGVtZV9yZWYgPSBOVUxMOwogCXNjaGVtZV9nY19wdHJfb2sod3ApOwogICAgIH0KIH0KQEAgLTE0NjIsMjEgKzE0NjIsMjEgQEAKICAgICB2aW1fbXpfd2luZG93ICpzZWxmOwogCiAgICAgLyogV2UgbmVlZCB0byBoYW5kbGUgZGVsZXRpb24gb2Ygd2luZG93cyB1bmRlcm5lYXRoIHVzLgotICAgICAqIElmIHdlIGFkZCBhICJtenNjaGVtZV9yZWYiIGZpZWxkIHRvIHRoZSB3aW5fVCBzdHJ1Y3R1cmUsCisgICAgICogSWYgd2UgYWRkIGEgIndfbXpzY2hlbWVfcmVmIiBmaWVsZCB0byB0aGUgd2luX1Qgc3RydWN0dXJlLAogICAgICAqIHRoZW4gd2UgY2FuIGdldCBhdCBpdCBpbiB3aW5fZnJlZSgpIGluIHZpbS4KICAgICAgKgogICAgICAqIE9uIGEgd2luX2ZyZWUoKSB3ZSBzZXQgdGhlIFNjaGVtZSBvYmplY3QncyB3aW5fVCAqZmllbGQKICAgICAgKiB0byBhbiBpbnZhbGlkIHZhbHVlLiBXZSB0cmFwIGFsbCB1c2VzIG9mIGEgd2luZG93CiAgICAgICogb2JqZWN0LCBhbmQgcmVqZWN0IHRoZW0gaWYgdGhlIHdpbl9UICpmaWVsZCBpcyBpbnZhbGlkLgogICAgICAqLwotICAgIGlmICh3aW4tPm16c2NoZW1lX3JlZikKLQlyZXR1cm4gd2luLT5tenNjaGVtZV9yZWY7CisgICAgaWYgKHdpbi0+d19tenNjaGVtZV9yZWYgIT0gTlVMTCkKKwlyZXR1cm4gd2luLT53X216c2NoZW1lX3JlZjsKIAogICAgIHNlbGYgPSBzY2hlbWVfbWFsbG9jX2ZhaWxfb2soc2NoZW1lX21hbGxvYywgc2l6ZW9mKHZpbV9tel93aW5kb3cpKTsKIAogICAgIHZpbV9tZW1zZXQoc2VsZiwgMCwgc2l6ZW9mKHZpbV9tel93aW5kb3cpKTsKICAgICBzY2hlbWVfZG9udF9nY19wdHIoc2VsZik7CS8qIGJlY2F1c2Ugd2luIGlzbid0IHZpc2libGUgdG8gR0MgKi8KLSAgICB3aW4tPm16c2NoZW1lX3JlZiA9IHNlbGY7CisgICAgd2luLT53X216c2NoZW1lX3JlZiA9IHNlbGY7CiAgICAgc2VsZi0+d2luID0gd2luOwogICAgIHNlbGYtPnRhZyA9IG16X3dpbmRvd190eXBlOwogCkBAIC0xNzg3LDE3ICsxNzg3LDE3IEBACiAgICAgdmltX216X2J1ZmZlciAqc2VsZjsKIAogICAgIC8qIFdlIG5lZWQgdG8gaGFuZGxlIGRlbGV0aW9uIG9mIGJ1ZmZlcnMgdW5kZXJuZWF0aCB1cy4KLSAgICAgKiBJZiB3ZSBhZGQgYSAibXpzY2hlbWVfYnVmIiBmaWVsZCB0byB0aGUgYnVmX1Qgc3RydWN0dXJlLAorICAgICAqIElmIHdlIGFkZCBhICJiX216c2NoZW1lX3JlZiIgZmllbGQgdG8gdGhlIGJ1Zl9UIHN0cnVjdHVyZSwKICAgICAgKiB0aGVuIHdlIGNhbiBnZXQgYXQgaXQgaW4gYnVmX2ZyZWVhbGwoKSBpbiB2aW0uCiAgICAgICovCi0gICAgaWYgKGJ1Zi0+bXpzY2hlbWVfcmVmKQotICAgICAgICByZXR1cm4gYnVmLT5tenNjaGVtZV9yZWY7CisgICAgaWYgKGJ1Zi0+Yl9tenNjaGVtZV9yZWYpCisgICAgICAgIHJldHVybiBidWYtPmJfbXpzY2hlbWVfcmVmOwogCiAgICAgc2VsZiA9IHNjaGVtZV9tYWxsb2NfZmFpbF9vayhzY2hlbWVfbWFsbG9jLCBzaXplb2YodmltX216X2J1ZmZlcikpOwogCiAgICAgdmltX21lbXNldChzZWxmLCAwLCBzaXplb2YodmltX216X2J1ZmZlcikpOwogICAgIHNjaGVtZV9kb250X2djX3B0cihzZWxmKTsJLyogYmVjYXVzZSBidWYgaXNuJ3QgdmlzaWJsZSB0byBHQyAqLwotICAgIGJ1Zi0+bXpzY2hlbWVfcmVmID0gc2VsZjsKKyAgICBidWYtPmJfbXpzY2hlbWVfcmVmID0gc2VsZjsKICAgICBzZWxmLT5idWYgPSBidWY7CiAgICAgc2VsZi0+dGFnID0gbXpfYnVmZmVyX3R5cGU7CiAKQEAgLTI2MjAsMjAgKzI2MjAsMjAgQEAKICAgICBzdGF0aWMgdmltX216X2J1ZmZlciAqCiBnZXRfdmltX2N1cnJfYnVmZmVyKHZvaWQpCiB7Ci0gICAgaWYgKCFjdXJidWYtPm16c2NoZW1lX3JlZikKKyAgICBpZiAoY3VyYnVmLT5iX216c2NoZW1lX3JlZiA9PSBOVUxMKQogCXJldHVybiAodmltX216X2J1ZmZlciAqKWJ1ZmZlcl9uZXcoY3VyYnVmKTsKICAgICBlbHNlCi0JcmV0dXJuICh2aW1fbXpfYnVmZmVyICopY3VyYnVmLT5tenNjaGVtZV9yZWY7CisJcmV0dXJuICh2aW1fbXpfYnVmZmVyICopY3VyYnVmLT5iX216c2NoZW1lX3JlZjsKIH0KIAogLyogcmV0dXJuIE16U2NoZW1lIHdyYXBwZXIgZm9yIGN1cndpbiAqLwogICAgIHN0YXRpYyB2aW1fbXpfd2luZG93ICoKIGdldF92aW1fY3Vycl93aW5kb3codm9pZCkKIHsKLSAgICBpZiAoIWN1cndpbi0+bXpzY2hlbWVfcmVmKQorICAgIGlmIChjdXJ3aW4tPndfbXpzY2hlbWVfcmVmID09IE5VTEwpCiAJcmV0dXJuICh2aW1fbXpfd2luZG93ICopd2luZG93X25ldyhjdXJ3aW4pOwogICAgIGVsc2UKLQlyZXR1cm4gKHZpbV9tel93aW5kb3cgKiljdXJ3aW4tPm16c2NoZW1lX3JlZjsKKwlyZXR1cm4gKHZpbV9tel93aW5kb3cgKiljdXJ3aW4tPndfbXpzY2hlbWVfcmVmOwogfQogCiAgICAgc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9pZl9wZXJsLnhzIGIvc3JjL2lmX3BlcmwueHMKaW5kZXggMDcyZGRjZC4uMGYxZGNkMiAxMDA2NDQKLS0tIGEvc3JjL2lmX3BlcmwueHMKKysrIGIvc3JjL2lmX3BlcmwueHMKQEAgLTQzNywzNyArNDM3LDUwIEBACiAKIC8qCiAgKiBDcmVhdGUgYSBuZXcgcmVmZXJlbmNlIHRvIGFuIFNWIHBvaW50aW5nIHRvIHRoZSBTQ1Igc3RydWN0dXJlCi0gKiBUaGUgcGVybF9wcml2YXRlIHBhcnQgb2YgdGhlIFNDUiBzdHJ1Y3R1cmUgcG9pbnRzIHRvIHRoZSBTViwKLSAqIHNvIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBzdWNoIFNWIGZvciBhIHBhcnRpY3VsYXIgU0NSIHN0cnVjdHVyZS4KLSAqIFdoZW4gdGhlIGxhc3QgcmVmZXJlbmNlIGhhcyBnb25lIChERVNUUk9ZIGlzIGNhbGxlZCksCi0gKiBwZXJsX3ByaXZhdGUgaXMgcmVzZXQ7IFdoZW4gdGhlIHNjcmVlbiBnb2VzIGF3YXkgYmVmb3JlCisgKiBUaGUgYl9wZXJsX3ByaXZhdGUvd19wZXJsX3ByaXZhdGUgcGFydCBvZiB0aGUgU0NSIHN0cnVjdHVyZSBwb2ludHMgdG8gdGhlCisgKiBTViwgc28gdGhlcmUgY2FuIG9ubHkgYmUgb25lIHN1Y2ggU1YgZm9yIGEgcGFydGljdWxhciBTQ1Igc3RydWN0dXJlLiAgV2hlbgorICogdGhlIGxhc3QgcmVmZXJlbmNlIGhhcyBnb25lIChERVNUUk9ZIGlzIGNhbGxlZCksCisgKiBiX3BlcmxfcHJpdmF0ZS93X3BlcmxfcHJpdmF0ZSBpcyByZXNldDsgV2hlbiB0aGUgc2NyZWVuIGdvZXMgYXdheSBiZWZvcmUKICAqIGFsbCByZWZlcmVuY2VzIGFyZSBnb25lLCB0aGUgdmFsdWUgb2YgdGhlIFNWIGlzIHJlc2V0OwogICogYW55IHN1YnNlcXVlbnQgdXNlIG9mIGFueSBvZiB0aG9zZSByZWZlcmVuY2Ugd2lsbCBwcm9kdWNlCiAgKiBhIHdhcm5pbmcuIChzZWUgdHlwZW1hcCkKICAqLwotI2RlZmluZSBuZXdBTllydihUWVBFLCBUTkFNRSkJCQkJCVwKLXN0YXRpYyBTViAqCQkJCQkJCVwKLW5ldyAjIyBUTkFNRSAjIyBydihydiwgcHRyKQkJCQkJXAotICAgIFNWICpydjsJCQkJCQkJXAotICAgIFRZUEUgKnB0cjsJCQkJCQkJXAotewkJCQkJCQkJXAotICAgIHN2X3VwZ3JhZGUocnYsIFNWdF9SVik7CQkJCQlcCi0gICAgaWYgKCFwdHItPnBlcmxfcHJpdmF0ZSkJCQkJCVwKLSAgICB7CQkJCQkJCQlcCi0JcHRyLT5wZXJsX3ByaXZhdGUgPSBuZXdTVigwKTsJCQkJXAotCXN2X3NldGl2KHB0ci0+cGVybF9wcml2YXRlLCAoSVYpcHRyKTsJCQlcCi0gICAgfQkJCQkJCQkJXAotICAgIGVsc2UJCQkJCQkJXAotCVN2UkVGQ05UX2luYyhwdHItPnBlcmxfcHJpdmF0ZSk7CQkJXAotICAgIFN2UlYocnYpID0gcHRyLT5wZXJsX3ByaXZhdGU7CQkJCVwKLSAgICBTdlJPS19vbihydik7CQkJCQkJXAotICAgIHJldHVybiBzdl9ibGVzcyhydiwgZ3Zfc3Rhc2hwdigiVkkiICNUTkFNRSwgVFJVRSkpOwkJXAorCisgICAgc3RhdGljIFNWICoKK25ld1dJTnJ2KHJ2LCBwdHIpCisgICAgU1YJICAgICpydjsKKyAgICB3aW5fVCAgICpwdHI7Cit7CisgICAgc3ZfdXBncmFkZShydiwgU1Z0X1JWKTsKKyAgICBpZiAocHRyLT53X3BlcmxfcHJpdmF0ZSA9PSBOVUxMKQorICAgIHsKKwlwdHItPndfcGVybF9wcml2YXRlID0gbmV3U1YoMCk7CisJc3Zfc2V0aXYocHRyLT53X3BlcmxfcHJpdmF0ZSwgKElWKXB0cik7CisgICAgfQorICAgIGVsc2UKKwlTdlJFRkNOVF9pbmMocHRyLT53X3BlcmxfcHJpdmF0ZSk7CisgICAgU3ZSVihydikgPSBwdHItPndfcGVybF9wcml2YXRlOworICAgIFN2Uk9LX29uKHJ2KTsKKyAgICByZXR1cm4gc3ZfYmxlc3MocnYsIGd2X3N0YXNocHYoIlZJV0lOIiwgVFJVRSkpOwogfQogCi0vKiBMSU5URUQ6IGF2b2lkIHdhcm5pbmc6IGNhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUgKi8KLW5ld0FOWXJ2KHdpbl9ULCBXSU4pCi0vKiBMSU5URUQ6IGF2b2lkIHdhcm5pbmc6IGNhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUgKi8KLW5ld0FOWXJ2KGJ1Zl9ULCBCVUYpCisgICAgc3RhdGljIFNWICoKK25ld0JVRnJ2KHJ2LCBwdHIpCisgICAgU1YJICAgICpydjsKKyAgICBidWZfVCAgICpwdHI7Cit7CisgICAgc3ZfdXBncmFkZShydiwgU1Z0X1JWKTsKKyAgICBpZiAocHRyLT5iX3BlcmxfcHJpdmF0ZSA9PSBOVUxMKQorICAgIHsKKwlwdHItPmJfcGVybF9wcml2YXRlID0gbmV3U1YoMCk7CisJc3Zfc2V0aXYocHRyLT5iX3BlcmxfcHJpdmF0ZSwgKElWKXB0cik7CisgICAgfQorICAgIGVsc2UKKwlTdlJFRkNOVF9pbmMocHRyLT5iX3BlcmxfcHJpdmF0ZSk7CisgICAgU3ZSVihydikgPSBwdHItPmJfcGVybF9wcml2YXRlOworICAgIFN2Uk9LX29uKHJ2KTsKKyAgICByZXR1cm4gc3ZfYmxlc3MocnYsIGd2X3N0YXNocHYoIlZJQlVGIiwgVFJVRSkpOworfQogCiAvKgogICogcGVybF93aW5fZnJlZQpAQCAtNDc3LDggKzQ5MCw4IEBACiBwZXJsX3dpbl9mcmVlKHdwKQogICAgIHdpbl9UICp3cDsKIHsKLSAgICBpZiAod3AtPnBlcmxfcHJpdmF0ZSkKLQlzdl9zZXRpdigoU1YgKil3cC0+cGVybF9wcml2YXRlLCAwKTsKKyAgICBpZiAod3AtPndfcGVybF9wcml2YXRlKQorCXN2X3NldGl2KChTViAqKXdwLT53X3BlcmxfcHJpdmF0ZSwgMCk7CiAgICAgcmV0dXJuOwogfQogCkBAIC00ODYsOCArNDk5LDggQEAKIHBlcmxfYnVmX2ZyZWUoYnApCiAgICAgYnVmX1QgKmJwOwogewotICAgIGlmIChicC0+cGVybF9wcml2YXRlKQotCXN2X3NldGl2KChTViAqKWJwLT5wZXJsX3ByaXZhdGUsIDApOworICAgIGlmIChicC0+Yl9wZXJsX3ByaXZhdGUpCisJc3Zfc2V0aXYoKFNWICopYnAtPmJfcGVybF9wcml2YXRlLCAwKTsKICAgICByZXR1cm47CiB9CiAKQEAgLTkxNSw3ICs5MjgsNyBAQAogCiAgICAgQ09ERToKICAgICBpZiAod2luX3ZhbGlkKHdpbikpCi0Jd2luLT5wZXJsX3ByaXZhdGUgPSAwOworCXdpbi0+d19wZXJsX3ByaXZhdGUgPSAwOwogCiBTViAqCiBCdWZmZXIod2luKQpAQCAtOTc5LDcgKzk5Miw3IEBACiAKICAgICBDT0RFOgogICAgIGlmIChidWZfdmFsaWQodmltYnVmKSkKLQl2aW1idWYtPnBlcmxfcHJpdmF0ZSA9IDA7CisJdmltYnVmLT5iX3BlcmxfcHJpdmF0ZSA9IDA7CiAKIHZvaWQKIE5hbWUodmltYnVmKQpkaWZmIC0tZ2l0IGEvc3JjL2lmX3B5dGhvbi5jIGIvc3JjL2lmX3B5dGhvbi5jCmluZGV4IDFiNWQwZTMuLjYyMzczMWEgMTAwNjQ0Ci0tLSBhL3NyYy9pZl9weXRob24uYworKysgYi9zcmMvaWZfcHl0aG9uLmMKQEAgLTEzMDUsMTIgKzEzMDUsMTIgQEAKIEJ1ZmZlck5ldyhidWZfVCAqYnVmKQogewogICAgIC8qIFdlIG5lZWQgdG8gaGFuZGxlIGRlbGV0aW9uIG9mIGJ1ZmZlcnMgdW5kZXJuZWF0aCB1cy4KLSAgICAgKiBJZiB3ZSBhZGQgYSAicHl0aG9uX3JlZiIgZmllbGQgdG8gdGhlIGJ1Zl9UIHN0cnVjdHVyZSwKKyAgICAgKiBJZiB3ZSBhZGQgYSAiYl9weXRob25fcmVmIiBmaWVsZCB0byB0aGUgYnVmX1Qgc3RydWN0dXJlLAogICAgICAqIHRoZW4gd2UgY2FuIGdldCBhdCBpdCBpbiBidWZfZnJlZWFsbCgpIGluIHZpbS4gV2UgdGhlbgogICAgICAqIG5lZWQgdG8gY3JlYXRlIG9ubHkgT05FIFB5dGhvbiBvYmplY3QgcGVyIGJ1ZmZlciAtIGlmCiAgICAgICogd2UgdHJ5IHRvIGNyZWF0ZSBhIHNlY29uZCwganVzdCBJTkNSRUYgdGhlIGV4aXN0aW5nIG9uZQogICAgICAqIGFuZCByZXR1cm4gaXQuIFRoZSAoc2luZ2xlKSBQeXRob24gb2JqZWN0IHJlZmVycmluZyB0bwotICAgICAqIHRoZSBidWZmZXIgaXMgc3RvcmVkIGluICJweXRob25fcmVmIi4KKyAgICAgKiB0aGUgYnVmZmVyIGlzIHN0b3JlZCBpbiAiYl9weXRob25fcmVmIi4KICAgICAgKiBRdWVzdGlvbjogd2hhdCB0byBkbyBvbiBhIGJ1Zl9mcmVlYWxsKCkuIFdlJ2xsIHByb2JhYmx5CiAgICAgICogaGF2ZSB0byBlaXRoZXIgZGVsZXRlIHRoZSBQeXRob24gb2JqZWN0IChERUNSRUYgaXQgdG8KICAgICAgKiB6ZXJvIC0gYSBiYWQgaWRlYSwgYXMgaXQgbGVhdmVzIGRhbmdsaW5nIHJlZnMhKSBvcgpAQCAtMTMyMCw5ICsxMzIwLDkgQEAKIAogICAgIEJ1ZmZlck9iamVjdCAqc2VsZjsKIAotICAgIGlmIChidWYtPnB5dGhvbl9yZWYpCisgICAgaWYgKGJ1Zi0+Yl9weXRob25fcmVmICE9IE5VTEwpCiAgICAgewotCXNlbGYgPSBidWYtPnB5dGhvbl9yZWY7CisJc2VsZiA9IGJ1Zi0+Yl9weXRob25fcmVmOwogCVB5X0lOQ1JFRihzZWxmKTsKICAgICB9CiAgICAgZWxzZQpAQCAtMTMzMSw3ICsxMzMxLDcgQEAKIAlpZiAoc2VsZiA9PSBOVUxMKQogCSAgICByZXR1cm4gTlVMTDsKIAlzZWxmLT5idWYgPSBidWY7Ci0JYnVmLT5weXRob25fcmVmID0gc2VsZjsKKwlidWYtPmJfcHl0aG9uX3JlZiA9IHNlbGY7CiAgICAgfQogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKShzZWxmKTsKQEAgLTEzNDMsNyArMTM0Myw3IEBACiAgICAgQnVmZmVyT2JqZWN0ICp0aGlzID0gKEJ1ZmZlck9iamVjdCAqKShzZWxmKTsKIAogICAgIGlmICh0aGlzLT5idWYgJiYgdGhpcy0+YnVmICE9IElOVkFMSURfQlVGRkVSX1ZBTFVFKQotCXRoaXMtPmJ1Zi0+cHl0aG9uX3JlZiA9IE5VTEw7CisJdGhpcy0+YnVmLT5iX3B5dGhvbl9yZWYgPSBOVUxMOwogCiAgICAgUHlNZW1fREVMKHNlbGYpOwogfQpAQCAtMTc4OCwxMiArMTc4OCwxMiBAQAogV2luZG93TmV3KHdpbl9UICp3aW4pCiB7CiAgICAgLyogV2UgbmVlZCB0byBoYW5kbGUgZGVsZXRpb24gb2Ygd2luZG93cyB1bmRlcm5lYXRoIHVzLgotICAgICAqIElmIHdlIGFkZCBhICJweXRob25fcmVmIiBmaWVsZCB0byB0aGUgd2luX1Qgc3RydWN0dXJlLAorICAgICAqIElmIHdlIGFkZCBhICJ3X3B5dGhvbl9yZWYiIGZpZWxkIHRvIHRoZSB3aW5fVCBzdHJ1Y3R1cmUsCiAgICAgICogdGhlbiB3ZSBjYW4gZ2V0IGF0IGl0IGluIHdpbl9mcmVlKCkgaW4gdmltLiBXZSB0aGVuCiAgICAgICogbmVlZCB0byBjcmVhdGUgb25seSBPTkUgUHl0aG9uIG9iamVjdCBwZXIgd2luZG93IC0gaWYKICAgICAgKiB3ZSB0cnkgdG8gY3JlYXRlIGEgc2Vjb25kLCBqdXN0IElOQ1JFRiB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICogYW5kIHJldHVybiBpdC4gVGhlIChzaW5nbGUpIFB5dGhvbiBvYmplY3QgcmVmZXJyaW5nIHRvCi0gICAgICogdGhlIHdpbmRvdyBpcyBzdG9yZWQgaW4gInB5dGhvbl9yZWYiLgorICAgICAqIHRoZSB3aW5kb3cgaXMgc3RvcmVkIGluICJ3X3B5dGhvbl9yZWYiLgogICAgICAqIE9uIGEgd2luX2ZyZWUoKSB3ZSBzZXQgdGhlIFB5dGhvbiBvYmplY3QncyB3aW5fVCogZmllbGQKICAgICAgKiB0byBhbiBpbnZhbGlkIHZhbHVlLiBXZSB0cmFwIGFsbCB1c2VzIG9mIGEgd2luZG93CiAgICAgICogb2JqZWN0LCBhbmQgcmVqZWN0IHRoZW0gaWYgdGhlIHdpbl9UKiBmaWVsZCBpcyBpbnZhbGlkLgpAQCAtMTgwMSw5ICsxODAxLDkgQEAKIAogICAgIFdpbmRvd09iamVjdCAqc2VsZjsKIAotICAgIGlmICh3aW4tPnB5dGhvbl9yZWYpCisgICAgaWYgKHdpbi0+d19weXRob25fcmVmKQogICAgIHsKLQlzZWxmID0gd2luLT5weXRob25fcmVmOworCXNlbGYgPSB3aW4tPndfcHl0aG9uX3JlZjsKIAlQeV9JTkNSRUYoc2VsZik7CiAgICAgfQogICAgIGVsc2UKQEAgLTE4MTIsNyArMTgxMiw3IEBACiAJaWYgKHNlbGYgPT0gTlVMTCkKIAkgICAgcmV0dXJuIE5VTEw7CiAJc2VsZi0+d2luID0gd2luOwotCXdpbi0+cHl0aG9uX3JlZiA9IHNlbGY7CisJd2luLT53X3B5dGhvbl9yZWYgPSBzZWxmOwogICAgIH0KIAogICAgIHJldHVybiAoUHlPYmplY3QgKikoc2VsZik7CkBAIC0xODI0LDcgKzE4MjQsNyBAQAogICAgIFdpbmRvd09iamVjdCAqdGhpcyA9IChXaW5kb3dPYmplY3QgKikoc2VsZik7CiAKICAgICBpZiAodGhpcy0+d2luICYmIHRoaXMtPndpbiAhPSBJTlZBTElEX1dJTkRPV19WQUxVRSkKLQl0aGlzLT53aW4tPnB5dGhvbl9yZWYgPSBOVUxMOworCXRoaXMtPndpbi0+d19weXRob25fcmVmID0gTlVMTDsKIAogICAgIFB5TWVtX0RFTChzZWxmKTsKIH0KQEAgLTIxNDQsMTEgKzIxNDQsMTEgQEAKICAgICB2b2lkCiBweXRob25fYnVmZmVyX2ZyZWUoYnVmX1QgKmJ1ZikKIHsKLSAgICBpZiAoYnVmLT5weXRob25fcmVmKQorICAgIGlmIChidWYtPmJfcHl0aG9uX3JlZiAhPSBOVUxMKQogICAgIHsKLQlCdWZmZXJPYmplY3QgKmJwID0gYnVmLT5weXRob25fcmVmOworCUJ1ZmZlck9iamVjdCAqYnAgPSBidWYtPmJfcHl0aG9uX3JlZjsKIAlicC0+YnVmID0gSU5WQUxJRF9CVUZGRVJfVkFMVUU7Ci0JYnVmLT5weXRob25fcmVmID0gTlVMTDsKKwlidWYtPmJfcHl0aG9uX3JlZiA9IE5VTEw7CiAgICAgfQogfQogCkBAIC0yMTU2LDExICsyMTU2LDExIEBACiAgICAgdm9pZAogcHl0aG9uX3dpbmRvd19mcmVlKHdpbl9UICp3aW4pCiB7Ci0gICAgaWYgKHdpbi0+cHl0aG9uX3JlZikKKyAgICBpZiAod2luLT53X3B5dGhvbl9yZWYgIT0gTlVMTCkKICAgICB7Ci0JV2luZG93T2JqZWN0ICp3cCA9IHdpbi0+cHl0aG9uX3JlZjsKKwlXaW5kb3dPYmplY3QgKndwID0gd2luLT53X3B5dGhvbl9yZWY7CiAJd3AtPndpbiA9IElOVkFMSURfV0lORE9XX1ZBTFVFOwotCXdpbi0+cHl0aG9uX3JlZiA9IE5VTEw7CisJd2luLT53X3B5dGhvbl9yZWYgPSBOVUxMOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2lmX3J1YnkuYyBiL3NyYy9pZl9ydWJ5LmMKaW5kZXggNDM5NmI0Ni4uZjA5YjIyMCAxMDA2NDQKLS0tIGEvc3JjL2lmX3J1YnkuYworKysgYi9zcmMvaWZfcnVieS5jCkBAIC0zODgsMTcgKzM4OCwxOSBAQAogCiB2b2lkIHJ1YnlfYnVmZmVyX2ZyZWUoYnVmX1QgKmJ1ZikKIHsKLSAgICBpZiAoYnVmLT5ydWJ5X3JlZikgewotCXJiX2hhc2hfYXNldChvYmp0YmwsIHJiX29ial9pZCgoVkFMVUUpIGJ1Zi0+cnVieV9yZWYpLCBRbmlsKTsKLQlSREFUQShidWYtPnJ1YnlfcmVmKS0+ZGF0YSA9IE5VTEw7CisgICAgaWYgKGJ1Zi0+Yl9ydWJ5X3JlZikKKyAgICB7CisJcmJfaGFzaF9hc2V0KG9ianRibCwgcmJfb2JqX2lkKChWQUxVRSkgYnVmLT5iX3J1YnlfcmVmKSwgUW5pbCk7CisJUkRBVEEoYnVmLT5iX3J1YnlfcmVmKS0+ZGF0YSA9IE5VTEw7CiAgICAgfQogfQogCiB2b2lkIHJ1Ynlfd2luZG93X2ZyZWUod2luX1QgKndpbikKIHsKLSAgICBpZiAod2luLT5ydWJ5X3JlZikgewotCXJiX2hhc2hfYXNldChvYmp0YmwsIHJiX29ial9pZCgoVkFMVUUpIHdpbi0+cnVieV9yZWYpLCBRbmlsKTsKLQlSREFUQSh3aW4tPnJ1YnlfcmVmKS0+ZGF0YSA9IE5VTEw7CisgICAgaWYgKHdpbi0+d19ydWJ5X3JlZikKKyAgICB7CisJcmJfaGFzaF9hc2V0KG9ianRibCwgcmJfb2JqX2lkKChWQUxVRSkgd2luLT53X3J1YnlfcmVmKSwgUW5pbCk7CisJUkRBVEEod2luLT53X3J1YnlfcmVmKS0+ZGF0YSA9IE5VTEw7CiAgICAgfQogfQogCkBAIC01MzIsMTIgKzUzNCwxNCBAQAogCiBzdGF0aWMgVkFMVUUgYnVmZmVyX25ldyhidWZfVCAqYnVmKQogewotICAgIGlmIChidWYtPnJ1YnlfcmVmKSB7Ci0JcmV0dXJuIChWQUxVRSkgYnVmLT5ydWJ5X3JlZjsKKyAgICBpZiAoYnVmLT5iX3J1YnlfcmVmKQorICAgIHsKKwlyZXR1cm4gKFZBTFVFKSBidWYtPmJfcnVieV9yZWY7CiAgICAgfQotICAgIGVsc2UgeworICAgIGVsc2UKKyAgICB7CiAJVkFMVUUgb2JqID0gRGF0YV9XcmFwX1N0cnVjdChjQnVmZmVyLCAwLCAwLCBidWYpOwotCWJ1Zi0+cnVieV9yZWYgPSAodm9pZCAqKSBvYmo7CisJYnVmLT5iX3J1YnlfcmVmID0gKHZvaWQgKikgb2JqOwogCXJiX2hhc2hfYXNldChvYmp0YmwsIHJiX29ial9pZChvYmopLCBvYmopOwogCXJldHVybiBvYmo7CiAgICAgfQpAQCAtNjg4LDEyICs2OTIsMTQgQEAKIAogc3RhdGljIFZBTFVFIHdpbmRvd19uZXcod2luX1QgKndpbikKIHsKLSAgICBpZiAod2luLT5ydWJ5X3JlZikgewotCXJldHVybiAoVkFMVUUpIHdpbi0+cnVieV9yZWY7CisgICAgaWYgKHdpbi0+d19ydWJ5X3JlZikKKyAgICB7CisJcmV0dXJuIChWQUxVRSkgd2luLT53X3J1YnlfcmVmOwogICAgIH0KLSAgICBlbHNlIHsKKyAgICBlbHNlCisgICAgewogCVZBTFVFIG9iaiA9IERhdGFfV3JhcF9TdHJ1Y3QoY1ZpbVdpbmRvdywgMCwgMCwgd2luKTsKLQl3aW4tPnJ1YnlfcmVmID0gKHZvaWQgKikgb2JqOworCXdpbi0+d19ydWJ5X3JlZiA9ICh2b2lkICopIG9iajsKIAlyYl9oYXNoX2FzZXQob2JqdGJsLCByYl9vYmpfaWQob2JqKSwgb2JqKTsKIAlyZXR1cm4gb2JqOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9pZl90Y2wuYyBiL3NyYy9pZl90Y2wuYwppbmRleCA4Zjc1ZTBkLi4zMGY3ZDk4IDEwMDY0NAotLS0gYS9zcmMvaWZfdGNsLmMKKysrIGIvc3JjL2lmX3RjbC5jCkBAIC0xMTMsOSArMTEzLDEwIEBACiAKIC8qCiAgKiAgTGlzdCBvZiBUY2wgaW50ZXJwcmV0ZXJzIHdobyByZWZlcmVuY2UgYSB2aW0gd2luZG93IG9yIGJ1ZmZlci4KLSAqICBFYWNoIGJ1ZmZlciBhbmQgd2luZG93IGhhcyBpdCdzIG93biBsaXN0IGluIHRoZSB0Y2xfcmVmIHN0cnVjdCBtZW1iZXIuCi0gKiAgV2UgbmVlZCB0aGlzIGJlY2F1c2UgVGNsIGNhbiBjcmVhdGUgc3ViLWludGVycHJldGVycyB3aXRoIHRoZSAiaW50ZXJwIgotICogIGNvbW1hbmQsIGFuZCBlYWNoIGludGVycHJldGVyIGNhbiByZWZlcmVuY2UgYWxsIHdpbmRvd3MgYW5kIGJ1ZmZlcnMuCisgKiAgRWFjaCBidWZmZXIgYW5kIHdpbmRvdyBoYXMgaXQncyBvd24gbGlzdCBpbiB0aGUgd190Y2xfcmVmIG9yIGJfdGNsX3JlZgorICogIHN0cnVjdCBtZW1iZXIuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBUY2wgY2FuIGNyZWF0ZSBzdWItaW50ZXJwcmV0ZXJzIHdpdGgKKyAqICB0aGUgImludGVycCIgY29tbWFuZCwgYW5kIGVhY2ggaW50ZXJwcmV0ZXIgY2FuIHJlZmVyZW5jZSBhbGwgd2luZG93cyBhbmQKKyAqICBidWZmZXJzLgogICovCiBzdHJ1Y3QgcmVmCiB7CkBAIC05MzIsNyArOTMzLDcgQEAKIAkJZXJyID0gVENMX0VSUk9SOwogCQlicmVhazsKIAkgICAgfQotCSAgICBlcnIgPSB0Y2xzZXRkZWxjbWQoaW50ZXJwLCBidWYtPnRjbF9yZWYsICh2b2lkICopYnVmLCBvYmp2WzJdKTsKKwkgICAgZXJyID0gdGNsc2V0ZGVsY21kKGludGVycCwgYnVmLT5iX3RjbF9yZWYsICh2b2lkICopYnVmLCBvYmp2WzJdKTsKIAkgICAgYnJlYWs7CiAKIAlkZWZhdWx0OgpAQCAtMTA1OCw3ICsxMDU5LDcgQEAKIAkJZXJyID0gVENMX0VSUk9SOwogCQlicmVhazsKIAkgICAgfQotCSAgICBlcnIgPSB0Y2xzZXRkZWxjbWQoaW50ZXJwLCB3aW4tPnRjbF9yZWYsICh2b2lkICopd2luLCBvYmp2WzJdKTsKKwkgICAgZXJyID0gdGNsc2V0ZGVsY21kKGludGVycCwgd2luLT53X3RjbF9yZWYsICh2b2lkICopd2luLCBvYmp2WzJdKTsKIAkgICAgYnJlYWs7CiAKIAljYXNlIFdJTl9DVVJTT1I6CkBAIC0xNDY1LDcgKzE0NjYsOCBAQAogICAgIHN0YXRpYyBjaGFyICoKIHRjbGdldHJlZihpbnRlcnAsIHJlZnN0YXJ0UCwgcHJlZml4LCB2aW1vYmosIHByb2MpCiAgICAgVGNsX0ludGVycAkqaW50ZXJwOwotICAgIHZvaWQJKipyZWZzdGFydFA7CS8qIHB0ciB0byB0Y2xfcmVmIG1lbWJlciBvZiB3aW5fVC9idWZfVCBzdHJ1Y3QgKi8KKyAgICB2b2lkCSoqcmVmc3RhcnRQOwkvKiBwdHIgdG8gd190Y2xfcmVmL2JfdGNsLXJlZiBtZW1iZXIgb2YKKwkJCQkgICB3aW5fVC9idWZfVCBzdHJ1Y3QgKi8KICAgICBjaGFyCSpwcmVmaXg7CS8qICJ3aW4iIG9yICJidWYiICovCiAgICAgdm9pZAkqdmltb2JqOwkvKiB3aW5fVCogb3IgYnVmX1QqICovCiAgICAgVGNsX09iakNtZFByb2MgKnByb2M7CS8qIHdpbnNlbGZjbWQgb3IgYnVmc2VsZmNtZCAqLwpAQCAtMTUzMyw3ICsxNTM1LDcgQEAKICAgICBUY2xfSW50ZXJwCSppbnRlcnA7CiAgICAgd2luX1QJKndpbjsKIHsKLSAgICByZXR1cm4gdGNsZ2V0cmVmKGludGVycCwgJih3aW4tPnRjbF9yZWYpLCAid2luIiwgKHZvaWQgKil3aW4sIHdpbnNlbGZjbWQpOworICAgIHJldHVybiB0Y2xnZXRyZWYoaW50ZXJwLCAmKHdpbi0+d190Y2xfcmVmKSwgIndpbiIsICh2b2lkICopd2luLCB3aW5zZWxmY21kKTsKIH0KIAogICAgIHN0YXRpYyBjaGFyICoKQEAgLTE1NDEsNyArMTU0Myw3IEBACiAgICAgVGNsX0ludGVycAkqaW50ZXJwOwogICAgIGJ1Zl9UCSpidWY7CiB7Ci0gICAgcmV0dXJuIHRjbGdldHJlZihpbnRlcnAsICYoYnVmLT50Y2xfcmVmKSwgImJ1ZiIsICh2b2lkICopYnVmLCBidWZzZWxmY21kKTsKKyAgICByZXR1cm4gdGNsZ2V0cmVmKGludGVycCwgJihidWYtPmJfdGNsX3JlZiksICJidWYiLCAodm9pZCAqKWJ1ZiwgYnVmc2VsZmNtZCk7CiB9CiAKICAgICBzdGF0aWMgaW50CkBAIC0yMDk1LDEyICsyMDk3LDEyIEBACiAJcmV0dXJuOwogI2VuZGlmCiAKLSAgICByZWZsaXN0ID0gKHN0cnVjdCByZWYqKShidWYtPnRjbF9yZWYpOworICAgIHJlZmxpc3QgPSAoc3RydWN0IHJlZiAqKShidWYtPmJfdGNsX3JlZik7CiAgICAgaWYgKHJlZmxpc3QgIT0gJnJlZnNkZWxldGVkKQogICAgIHsKLQlidWYtPnRjbF9yZWYgPSAodm9pZCAqKSZyZWZzZGVsZXRlZDsKKwlidWYtPmJfdGNsX3JlZiA9ICh2b2lkICopJnJlZnNkZWxldGVkOwogCXRjbGRlbGFsbHJlZnMocmVmbGlzdCk7Ci0JYnVmLT50Y2xfcmVmID0gTlVMTDsKKwlidWYtPmJfdGNsX3JlZiA9IE5VTEw7CiAgICAgfQogfQogCkBAIC0yMTE2LDEyICsyMTE4LDEyIEBACiAJcmV0dXJuOwogI2VuZGlmCiAKLSAgICByZWZsaXN0ID0gKHN0cnVjdCByZWYqKSh3aW4tPnRjbF9yZWYpOworICAgIHJlZmxpc3QgPSAoc3RydWN0IHJlZiopKHdpbi0+d190Y2xfcmVmKTsKICAgICBpZiAocmVmbGlzdCAhPSAmcmVmc2RlbGV0ZWQpCiAgICAgewotCXdpbi0+dGNsX3JlZiA9ICh2b2lkICopJnJlZnNkZWxldGVkOworCXdpbi0+d190Y2xfcmVmID0gKHZvaWQgKikmcmVmc2RlbGV0ZWQ7CiAJdGNsZGVsYWxscmVmcyhyZWZsaXN0KTsKLQl3aW4tPnRjbF9yZWYgPSBOVUxMOworCXdpbi0+d190Y2xfcmVmID0gTlVMTDsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pZl94Y21kc3J2LmMgYi9zcmMvaWZfeGNtZHNydi5jCmluZGV4IDYzZmFmMGMuLmQxOWY1MGQgMTAwNjQ0Ci0tLSBhL3NyYy9pZl94Y21kc3J2LmMKKysrIGIvc3JjL2lmX3hjbWRzcnYuYwpAQCAtMTI3Myw3ICsxMjczLDcgQEAKIAkJZ2FfZ3JvdygmcmVwbHksIDUwICsgU1RSTEVOKHBfZW5jKSk7CiAJCXNwcmludGYocmVwbHkuZ2FfZGF0YSwgIiVjciVjLUUgJXMlYy1zICVzJWMtciAiLAogCQkJCQkJICAgMCwgMCwgcF9lbmMsIDAsIHNlcmlhbCwgMCk7Ci0JCXJlcGx5LmdhX2xlbiA9IDE0ICsgU1RSTEVOKHNlcmlhbCk7CisJCXJlcGx5LmdhX2xlbiA9IDE0ICsgU1RSTEVOKHBfZW5jKSArIFNUUkxFTihzZXJpYWwpOwogI2Vsc2UKIAkJZ2FfZ3JvdygmcmVwbHksIDUwKTsKIAkJc3ByaW50ZihyZXBseS5nYV9kYXRhLCAiJWNyJWMtcyAlcyVjLXIgIiwgMCwgMCwgc2VyaWFsLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9tYnl0ZS5jIGIvc3JjL21ieXRlLmMKaW5kZXggYmY4NmI1ZS4uYWJkYjllOCAxMDA2NDQKLS0tIGEvc3JjL21ieXRlLmMKKysrIGIvc3JjL21ieXRlLmMKQEAgLTI5ODcsMTYgKzI5ODcsMTIgQEAKICMgaWZkZWYgSEFWRV9OTF9MQU5HSU5GT19DT0RFU0VUCiAgICAgaWYgKChzID0gbmxfbGFuZ2luZm8oQ09ERVNFVCkpID09IE5VTEwgfHwgKnMgPT0gTlVMKQogIyBlbmRpZgotIyBpZmRlZiBNQUNPUwotCXMgPSAidXRmLTgiOwotIyBlbHNlCiAjICBpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX0gpIHx8IGRlZmluZWQoWF9MT0NBTEUpCiAJaWYgKChzID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKSkgPT0gTlVMTCB8fCAqcyA9PSBOVUwpCiAjICBlbmRpZgogCSAgICBpZiAoKHMgPSBnZXRlbnYoIkxDX0FMTCIpKSA9PSBOVUxMIHx8ICpzID09IE5VTCkKIAkJaWYgKChzID0gZ2V0ZW52KCJMQ19DVFlQRSIpKSA9PSBOVUxMIHx8ICpzID09IE5VTCkKIAkJICAgIHMgPSBnZXRlbnYoIkxBTkciKTsKLSMgZW5kaWYKIAogICAgIGlmIChzID09IE5VTEwgfHwgKnMgPT0gTlVMKQogCXJldHVybiBGQUlMOwpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IGJiZjU2NGEuLmJmZTNlZDYgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTEwOSw2ICsxMDksNyBAQAogICAgICwgUFZfTlUKICAgICAsIFBWX05VVwogICAgICwgUFZfT0ZUCisgICAgLCBQVl9PRlUKICAgICAsIFBWX1BBVEgKICAgICAsIFBWX1BJCiAgICAgLCBQVl9QVlcKQEAgLTE4MSw2ICsxODIsNyBAQAogI2VuZGlmCiAjaWZkZWYgRkVBVF9DT01QTF9GVU5DCiBzdGF0aWMgY2hhcl91CSpwX2NmdTsKK3N0YXRpYyBjaGFyX3UJKnBfb2Z1OwogI2VuZGlmCiBzdGF0aWMgaW50CXBfZW9sOwogc3RhdGljIGludAlwX2V0OwpAQCAtMTYwMSw2ICsxNjAzLDE1IEBACiAJCQkgICAgKGNoYXJfdSAqKU5VTEwsIFBWX05PTkUsCiAjZW5kaWYKIAkJCSAgICB7KGNoYXJfdSAqKThMLCAoY2hhcl91ICopNEx9fSwKKyAgICB7Im9jY3VsdGZ1bmMiLCAib2Z1IiwgUF9TVFJJTkd8UF9BTExPQ0VEfFBfVklfREVGfFBfU0VDVVJFLAorI2lmZGVmIEZFQVRfQ09NUExfRlVOQworCQkJICAgIChjaGFyX3UgKikmcF9vZnUsIFBWX09GVSwKKwkJCSAgICB7KGNoYXJfdSAqKSIiLCAoY2hhcl91ICopMEx9CisjZWxzZQorCQkJICAgIChjaGFyX3UgKilOVUxMLCBQVl9OT05FLAorCQkJICAgIHsoY2hhcl91ICopMEwsIChjaGFyX3UgKikwTH0KKyNlbmRpZgorCQkJICAgIH0sCiAgICAgeyJvcGVuIiwJICAgIE5VTEwsICAgUF9CT09MfFBfVklfREVGLAogCQkJICAgIChjaGFyX3UgKilOVUxMLCBQVl9OT05FLAogCQkJICAgIHsoY2hhcl91ICopRkFMU0UsIChjaGFyX3UgKikwTH19LApAQCAtNDc0MCw2ICs0NzUxLDcgQEAKICNlbmRpZgogI2lmZGVmIEZFQVRfQ09NUExfRlVOQwogICAgIGNoZWNrX3N0cmluZ19vcHRpb24oJmJ1Zi0+Yl9wX2NmdSk7CisgICAgY2hlY2tfc3RyaW5nX29wdGlvbigmYnVmLT5iX3Bfb2Z1KTsKICNlbmRpZgogI2lmZGVmIEZFQVRfS0VZTUFQCiAgICAgY2hlY2tfc3RyaW5nX29wdGlvbigmYnVmLT5iX3Bfa2V5bWFwKTsKQEAgLTg0NDcsNiArODQ1OSw3IEBACiAjZW5kaWYKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAljYXNlIFBWX0NGVToJcmV0dXJuIChjaGFyX3UgKikmKGN1cmJ1Zi0+Yl9wX2NmdSk7CisJY2FzZSBQVl9PRlU6CXJldHVybiAoY2hhcl91ICopJihjdXJidWYtPmJfcF9vZnUpOwogI2VuZGlmCiAJY2FzZSBQVl9FT0w6CXJldHVybiAoY2hhcl91ICopJihjdXJidWYtPmJfcF9lb2wpOwogCWNhc2UgUFZfRVQ6CXJldHVybiAoY2hhcl91ICopJihjdXJidWYtPmJfcF9ldCk7CkBAIC04Nzc4LDYgKzg3OTEsNyBAQAogI2VuZGlmCiAjaWZkZWYgRkVBVF9DT01QTF9GVU5DCiAJICAgIGJ1Zi0+Yl9wX2NmdSA9IHZpbV9zdHJzYXZlKHBfY2Z1KTsKKwkgICAgYnVmLT5iX3Bfb2Z1ID0gdmltX3N0cnNhdmUocF9vZnUpOwogI2VuZGlmCiAJICAgIGJ1Zi0+Yl9wX3N0cyA9IHBfc3RzOwogCSAgICBidWYtPmJfcF9zdHNfbm9wYXN0ZSA9IHBfc3RzX25vcGFzdGU7CmRpZmYgLS1naXQgYS9zcmMvcG8vaXQucG8gYi9zcmMvcG8vaXQucG8KaW5kZXggZWUwYmVjZi4uZWQyNWY0NyAxMDA2NDQKLS0tIGEvc3JjL3BvL2l0LnBvCisrKyBiL3NyYy9wby9pdC5wbwpAQCAtMTMsOCArMTMsOCBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiB2aW0gNy4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA1LTA3LTAyIDE4OjAwKzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAgMjAwNS0wNy0wMiAxODowMCswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDUtMDgtMjUgMDk6MzArMDIwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6ICAyMDA1LTA4LTI5IDIxOjMwKzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6ICAgVmxhZCBTYW5kcmluaSAgIDxtYXJjb0BzYW5kcmluaS5iaXo+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogICAgIEl0YWxpYW4iCiAiICAgICAgICAgICAgICAgICAgIEFudG9uaW8gQ29sb21ibyA8YXpjMTBAeWFob28uY29tPiIKQEAgLTIyNCwxMyArMjI0LDggQEAKIG1zZ3N0ciAiIENvbXBsZXRhbWVudG8gS2V5d29yZCAoXk5eUCkiCiAKICMuIGN0cmxfeF9tb2RlID09IDAsIF5QL15OIGNvbXBsLgotbXNnaWQgIiBeWCBtb2RlICheRV5ZXkxeXV5GXkleS15EXlVeVl5OXlApIgotbXNnc3RyICIgbW9kYWxpdOAgXlggKF5FXlleTF5dXkZeSV5LXkReVV5WXk5eUCkiCi0KLSMuIFNjcm9sbCBoYXMgaXQncyBvd24gbXNncywgaW4gaXQncyBwbGFjZSB0aGVyZSBpcyB0aGUgbXNnIGZvciBsb2NhbAotIy4gKiBjdHJsX3hfbW9kZSA9IDAgKGVnIGNvbnRpbnVlX3N0YXR1cyAmIENPTlRfTE9DQUwpICAtLSBBY2V2ZWRvCi1tc2dpZCAiIEtleXdvcmQgTG9jYWwgY29tcGxldGlvbiAoXk5eUCkiCi1tc2dzdHIgIiBDb21wbGV0YW1lbnRvIEtleXdvcmQgTG9jYWxlICheTl5QKSIKK21zZ2lkICIgXlggbW9kZSAoXl1eRF5FXkZeSV5LXkxeTl5PXlBeU15VXlZeWSkiCittc2dzdHIgIiBtb2RhbGl04CBeWCAoXl1eRF5FXkZeSV5LXkxeTl5PXlBeU15VXlZeWSkiCiAKIG1zZ2lkICIgV2hvbGUgbGluZSBjb21wbGV0aW9uICheTF5OXlApIgogbXNnc3RyICIgQ29tcGxldGFtZW50byBMaW5lYSBJbnRlcmEgKF5MXk5eUCkiCkBAIC0yNTksMTUgKzI1NCwyNCBAQAogbXNnaWQgIiBVc2VyIGRlZmluZWQgY29tcGxldGlvbiAoXlVeTl5QKSIKIG1zZ3N0ciAiIENvbXBsZXRhbWVudG8gZGVmaW5pdG8gZGFsbCd1dGVudGUgKF5VXk5eUCkiCiAKK21zZ2lkICIgT2NjdWx0IGNvbXBsZXRpb24gKF5PXk5eUCkiCittc2dzdHIgIiBDb21wbGV0YW1lbnRvIG5hc2Nvc3RvICheT15OXlApIgorCittc2dpZCAiIFNwZWxsaW5nIHN1Z2dlc3Rpb24gKF5TXk5eUCkiCittc2dzdHIgIiBTdWdnZXJpbWVudG8gb3J0b2dyYWZpY28gKF5TXk5eUCkiCisKK21zZ2lkICIgS2V5d29yZCBMb2NhbCBjb21wbGV0aW9uICheTl5QKSIKK21zZ3N0ciAiIENvbXBsZXRhbWVudG8gS2V5d29yZCBMb2NhbGUgKF5OXlApIgorCiBtc2dpZCAiSGl0IGVuZCBvZiBwYXJhZ3JhcGgiCiBtc2dzdHIgIkdpdW50byBhbGxhIGZpbmUgZGVsIHBhcmFncmFmbyIKIAotbXNnaWQgIid0aGVzYXVydXMnIG9wdGlvbiBpcyBlbXB0eSIKLW1zZ3N0ciAibCdvcHppb25lICd0aGVzYXVydXMnIOggdnVvdGEiCi0KIG1zZ2lkICInZGljdGlvbmFyeScgb3B0aW9uIGlzIGVtcHR5IgogbXNnc3RyICJsJ29wemlvbmUgJ2RpY3Rpb25hcnknIOggdnVvdGEiCiAKK21zZ2lkICIndGhlc2F1cnVzJyBvcHRpb24gaXMgZW1wdHkiCittc2dzdHIgImwnb3B6aW9uZSAndGhlc2F1cnVzJyDoIHZ1b3RhIgorCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNjYW5uaW5nIGRpY3Rpb25hcnk6ICVzIgogbXNnc3RyICJTY2Fuc2lvbmUgZGl6aW9uYXJpbzogJXMiCkBAIC02NjksNiArNjczLDEzIEBACiAiXG4iCiAiIyB2YXJpYWJpbGkgZ2xvYmFsaTpcbiIKIAorbXNnaWQgIiIKKyJcbiIKKyJcdExhc3Qgc2V0IGZyb20gIgorbXNnc3RyICIiCisiXG4iCisiXHRJbXBvc3RhdGEgbCd1bHRpbWEgdm9sdGEgZGEgIgorCiBtc2dpZCAiRW50ZXJpbmcgRGVidWcgbW9kZS4gIFR5cGUgXCJjb250XCIgdG8gY29udGludWUuIgogbXNnc3RyICJFbnRybyBtb2RhbGl04CBEZWJ1Zy4gIEJhdHRpIFwiY29udFwiIHBlciBjb250aW51YXJlLiIKIApAQCAtNzc5LDkwICs3OTAsNiBAQAogbXNnc3RyICJFMTY4OiA6ZmluaXNoIHVzYXRvIGZ1b3JpIGRhIGZpbGUgZGkgY29tYW5kaSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJQYWdlICVkIgotbXNnc3RyICJQYWdpbmEgJWQiCi0KLW1zZ2lkICJObyB0ZXh0IHRvIGJlIHByaW50ZWQiCi1tc2dzdHIgIk1hbmNhIHRlc3RvIGRhIHN0YW1wYXJlIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIlByaW50aW5nIHBhZ2UgJWQgKCVkJSUpIgotbXNnc3RyICJTdG8gc3RhbXBhbmRvIHBhZ2luYSAlZCAoJWQlJSkiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiIENvcHkgJWQgb2YgJWQiCi1tc2dzdHIgIiBDb3BpYSAlZCBkaSAlZCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJQcmludGVkOiAlcyIKLW1zZ3N0ciAiU3RhbXBhdG86ICVzIgotCi1tc2dpZCAiUHJpbnRpbmcgYWJvcnRlZCIKLW1zZ3N0ciAiU3RhbXBhIG5vbiBjb21wbGV0YXRhJyIKLQotbXNnaWQgIkU0NTU6IEVycm9yIHdyaXRpbmcgdG8gUG9zdFNjcmlwdCBvdXRwdXQgZmlsZSIKLW1zZ3N0ciAiRTQ1NTogRXJyb3JlIGluIHNjcml0dHVyYSBhIGZpbGUgUG9zdFNjcmlwdCBkaSBvdXRwdXQiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTYyNDogQ2FuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIKLW1zZ3N0ciAiRTYyNDogTm9uIHJpZXNjbyBhZCBhcHJpcmUgaWwgZmlsZSBcIiVzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ1NzogQ2FuJ3QgcmVhZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlc1wiIgotbXNnc3RyICJFNDU3OiBOb24gcmllc2NvIGEgbGVnZ2VyZSBmaWxlIHJpc29yc2UgUG9zdFNjcmlwdCBcIiVzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTYxODogZmlsZSBcIiVzXCIgaXMgbm90IGEgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgotbXNnc3RyICJFNjE4OiBmaWxlIFwiJXNcIiBub24g6CB1biBmaWxlIGRpIHJpc29yc2UgUG9zdFNjcmlwdCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFNjE5OiBmaWxlIFwiJXNcIiBpcyBub3QgYSBzdXBwb3J0ZWQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgotbXNnc3RyICJFNjE5OiBmaWxlIFwiJXNcIiBub24g6CB1biBmaWxlIGRpIHJpc29yc2UgUG9zdFNjcmlwdCBzdXBwb3J0YXRvIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkU2MjE6IFwiJXNcIiByZXNvdXJjZSBmaWxlIGhhcyB3cm9uZyB2ZXJzaW9uIgotbXNnc3RyICJFNjIxOiBpbCBmaWxlIGRpIHJpc29yc2UgXCIlc1wiIGhhIHVuYSB2ZXJzaW9uZSBzYmFnbGlhdGEiCi0KLW1zZ2lkICJFNjczOiBJbmNvbXBhdGlibGUgbXVsdGktYnl0ZSBlbmNvZGluZyBhbmQgY2hhcmFjdGVyIHNldC4iCi1tc2dzdHIgIkU2NzM6IENvZGlmaWNhIGUgc2V0IGRpIGNhcmF0dGVyaSBtdWx0aS1ieXRlIG5vbiBjb21wYXRpYmlsaS4iCi0KLW1zZ2lkICJFNjc0OiBwcmludG1iY2hhcnNldCBjYW5ub3QgYmUgZW1wdHkgd2l0aCBtdWx0aS1ieXRlIGVuY29kaW5nLiIKLW1zZ3N0ciAiRTY3NDogcHJpbnRtYmNoYXJzZXQgbm9uIHB18iBlc3NlcmUgbnVsbG8gY29uIGNvZGlmaWNhIG11bHRpLWJ5dGUuIgotCi1tc2dpZCAiRTY3NTogTm8gZGVmYXVsdCBmb250IHNwZWNpZmllZCBmb3IgbXVsdGktYnl0ZSBwcmludGluZy4iCi1tc2dzdHIgIkU2NzU6IEZvbnQgcHJlZGVmaW5pdG8gbm9uIHNwZWNpZmljYXRvIHBlciBzdGFtcGEgbXVsdGktYnl0ZS4iCi0KLW1zZ2lkICJFMzI0OiBDYW4ndCBvcGVuIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCi1tc2dzdHIgIkUzMjQ6IE5vbiByaWVzY28gYWQgYXByaXJlIGZpbGUgUG9zdFNjcmlwdCBkaSBvdXRwdXQiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ1NjogQ2FuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIKLW1zZ3N0ciAiRTQ1NjogTm9uIHJpZXNjbyBhZCBhcHJpcmUgaWwgZmlsZSBcIiVzXCIiCi0KLW1zZ2lkICJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcInByb2xvZy5wc1wiIgotbXNnc3RyICJFNDU2OiBOb24gdHJvdm8gZmlsZSByaXNvcnNlIFBvc3RTY3JpcHQgXCJwcm9sb2cucHNcIiIKLQotbXNnaWQgIkU0NTY6IENhbid0IGZpbmQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIFwiY2lkZm9udC5wc1wiIgotbXNnc3RyICJFNDU2OiBOb24gdHJvdm8gZmlsZSByaXNvcnNlIFBvc3RTY3JpcHQgXCJjaWRmb250LnBzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlcy5wc1wiIgotbXNnc3RyICJFNDU2OiBOb24gdHJvdm8gZmlsZSByaXNvcnNlIFBvc3RTY3JpcHQgXCIlcy5wc1wiIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkU2MjA6IFVuYWJsZSB0byBjb252ZXJ0IHRvIHByaW50IGVuY29kaW5nIFwiJXNcIiIKLW1zZ3N0ciAiRTYyMDogSW1wb3NzaWJpbGUgY29udmVydGlyZSBhIGNvZGlmaWNhIGRpIHN0YW1wYSBcIiVzXCIiCi0KLW1zZ2lkICJTZW5kaW5nIHRvIHByaW50ZXIuLi4iCi1tc2dzdHIgIkludmlvIGEgc3RhbXBhbnRlLi4uIgotCi1tc2dpZCAiRTM2NTogRmFpbGVkIHRvIHByaW50IFBvc3RTY3JpcHQgZmlsZSIKLW1zZ3N0ciAiRTM2NTogTm9uIHJpZXNjbyBhZCBhcHJpcmUgZmlsZSBQb3N0U2NyaXB0IgotCi1tc2dpZCAiUHJpbnQgam9iIHNlbnQuIgotbXNnc3RyICJSaWNoaWVzdGEgZGkgc3RhbXBhIGludmlhdGEuIgotCi0jLCBjLWZvcm1hdAogbXNnaWQgIkN1cnJlbnQgJXNsYW5ndWFnZTogXCIlc1wiIgogbXNnc3RyICJMaW5ndWEgJXNpbiB1c286IFwiJXNcIiIKIApAQCAtOTY1LDYgKzg5MiwxNCBAQAogbXNnc3RyICJSaXNjcml0dHVyYSBkZWwgZmlsZSBlc2lzdGVudGUgXCIlc1wiPyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJTd2FwIGZpbGUgXCIlc1wiIGV4aXN0cywgb3ZlcndyaXRlIGFueXdheT8iCittc2dzdHIgIklsIGZpbGUgc3dhcCBcIiVzXCIgZXNpc3RlIGdp4Cwgc292cmFzY3Jpdm8/IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3Njg6IFN3YXAgZmlsZSBleGlzdHM6ICVzICg6c2lsZW50ISBvdmVycmlkZXMpIgorbXNnc3RyICJFNzY4OiBGaWxlIHN3YXAgZXNpc3RlbnRlOiAlcyAoOnNpbGVudCEgcGVyIHNvdnJhc2NyaXZlcmxvKSIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFMTQxOiBObyBmaWxlIG5hbWUgZm9yIGJ1ZmZlciAlbGQiCiBtc2dzdHIgIkUxNDE6IE1hbmNhIG5vbWUgZmlsZSBwZXIgaWwgYnVmZmVyICVsZCIKIApAQCAtMTIyMSw3ICsxMTU2LDcgQEAKIAogbXNnaWQgIkUxODM6IFVzZXIgZGVmaW5lZCBjb21tYW5kcyBtdXN0IHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlciIKIG1zZ3N0ciAiIgotIkUxODMgSSBjb21hbmRpIGRlZmluaXRpIGRhbGwndXRlbnRlIGRldm9ubyBpbml6aWFyZSBjb24gbGV0dGVyYSBtYWl1c2NvbGEiCisiRTE4MzogSSBjb21hbmRpIGRlZmluaXRpIGRhbGwndXRlbnRlIGRldm9ubyBpbml6aWFyZSBjb24gbGV0dGVyYSBtYWl1c2NvbGEiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4NDogTm8gc3VjaCB1c2VyLWRlZmluZWQgY29tbWFuZDogJXMiCkBAIC0yMTYzLDYgKzIwOTgsOTkgQEAKIG1zZ2lkICJFMjU2OiBIYW5ndWwgYXV0b21hdGEgRVJST1IiCiBtc2dzdHIgIkUyNTY6IEVSUk9SRSBwcm9jZXNzb3JlIEhhbmd1bCIKIAorbXNnaWQgIkU1NTA6IE1pc3NpbmcgY29sb24iCittc2dzdHIgIkU1NTA6IE1hbmNhICc6JyIKKworbXNnaWQgIkU1NTE6IElsbGVnYWwgY29tcG9uZW50IgorbXNnc3RyICJFNTUxOiBDb21wb25lbnRlIG5vbiB2YWxpZG8iCisKK21zZ2lkICJFNTUyOiBkaWdpdCBleHBlY3RlZCIKK21zZ3N0ciAiRTU1MjogYXNwZXR0YXZvIHVuIG51bWVybyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJQYWdlICVkIgorbXNnc3RyICJQYWdpbmEgJWQiCisKK21zZ2lkICJObyB0ZXh0IHRvIGJlIHByaW50ZWQiCittc2dzdHIgIk1hbmNhIHRlc3RvIGRhIHN0YW1wYXJlIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIlByaW50aW5nIHBhZ2UgJWQgKCVkJSUpIgorbXNnc3RyICJTdG8gc3RhbXBhbmRvIHBhZ2luYSAlZCAoJWQlJSkiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiIENvcHkgJWQgb2YgJWQiCittc2dzdHIgIiBDb3BpYSAlZCBkaSAlZCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJQcmludGVkOiAlcyIKK21zZ3N0ciAiU3RhbXBhdG86ICVzIgorCittc2dpZCAiUHJpbnRpbmcgYWJvcnRlZCIKK21zZ3N0ciAiU3RhbXBhIG5vbiBjb21wbGV0YXRhJyIKKworbXNnaWQgIkU0NTU6IEVycm9yIHdyaXRpbmcgdG8gUG9zdFNjcmlwdCBvdXRwdXQgZmlsZSIKK21zZ3N0ciAiRTQ1NTogRXJyb3JlIGluIHNjcml0dHVyYSBhIGZpbGUgUG9zdFNjcmlwdCBkaSBvdXRwdXQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTYyNDogQ2FuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIKK21zZ3N0ciAiRTYyNDogTm9uIHJpZXNjbyBhZCBhcHJpcmUgaWwgZmlsZSBcIiVzXCIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTQ1NzogQ2FuJ3QgcmVhZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlc1wiIgorbXNnc3RyICJFNDU3OiBOb24gcmllc2NvIGEgbGVnZ2VyZSBmaWxlIHJpc29yc2UgUG9zdFNjcmlwdCBcIiVzXCIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTYxODogZmlsZSBcIiVzXCIgaXMgbm90IGEgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgorbXNnc3RyICJFNjE4OiBmaWxlIFwiJXNcIiBub24g6CB1biBmaWxlIGRpIHJpc29yc2UgUG9zdFNjcmlwdCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNjE5OiBmaWxlIFwiJXNcIiBpcyBub3QgYSBzdXBwb3J0ZWQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgorbXNnc3RyICJFNjE5OiBmaWxlIFwiJXNcIiBub24g6CB1biBmaWxlIGRpIHJpc29yc2UgUG9zdFNjcmlwdCBzdXBwb3J0YXRvIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2MjE6IFwiJXNcIiByZXNvdXJjZSBmaWxlIGhhcyB3cm9uZyB2ZXJzaW9uIgorbXNnc3RyICJFNjIxOiBpbCBmaWxlIGRpIHJpc29yc2UgXCIlc1wiIGhhIHVuYSB2ZXJzaW9uZSBzYmFnbGlhdGEiCisKK21zZ2lkICJFNjczOiBJbmNvbXBhdGlibGUgbXVsdGktYnl0ZSBlbmNvZGluZyBhbmQgY2hhcmFjdGVyIHNldC4iCittc2dzdHIgIkU2NzM6IENvZGlmaWNhIGUgc2V0IGRpIGNhcmF0dGVyaSBtdWx0aS1ieXRlIG5vbiBjb21wYXRpYmlsaS4iCisKK21zZ2lkICJFNjc0OiBwcmludG1iY2hhcnNldCBjYW5ub3QgYmUgZW1wdHkgd2l0aCBtdWx0aS1ieXRlIGVuY29kaW5nLiIKK21zZ3N0ciAiRTY3NDogcHJpbnRtYmNoYXJzZXQgbm9uIHB18iBlc3NlcmUgbnVsbG8gY29uIGNvZGlmaWNhIG11bHRpLWJ5dGUuIgorCittc2dpZCAiRTY3NTogTm8gZGVmYXVsdCBmb250IHNwZWNpZmllZCBmb3IgbXVsdGktYnl0ZSBwcmludGluZy4iCittc2dzdHIgIkU2NzU6IEZvbnQgcHJlZGVmaW5pdG8gbm9uIHNwZWNpZmljYXRvIHBlciBzdGFtcGEgbXVsdGktYnl0ZS4iCisKK21zZ2lkICJFMzI0OiBDYW4ndCBvcGVuIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCittc2dzdHIgIkUzMjQ6IE5vbiByaWVzY28gYWQgYXByaXJlIGZpbGUgUG9zdFNjcmlwdCBkaSBvdXRwdXQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTQ1NjogQ2FuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIKK21zZ3N0ciAiRTQ1NjogTm9uIHJpZXNjbyBhZCBhcHJpcmUgaWwgZmlsZSBcIiVzXCIiCisKK21zZ2lkICJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcInByb2xvZy5wc1wiIgorbXNnc3RyICJFNDU2OiBOb24gdHJvdm8gZmlsZSByaXNvcnNlIFBvc3RTY3JpcHQgXCJwcm9sb2cucHNcIiIKKworbXNnaWQgIkU0NTY6IENhbid0IGZpbmQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIFwiY2lkZm9udC5wc1wiIgorbXNnc3RyICJFNDU2OiBOb24gdHJvdm8gZmlsZSByaXNvcnNlIFBvc3RTY3JpcHQgXCJjaWRmb250LnBzXCIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlcy5wc1wiIgorbXNnc3RyICJFNDU2OiBOb24gdHJvdm8gZmlsZSByaXNvcnNlIFBvc3RTY3JpcHQgXCIlcy5wc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2MjA6IFVuYWJsZSB0byBjb252ZXJ0IHRvIHByaW50IGVuY29kaW5nIFwiJXNcIiIKK21zZ3N0ciAiRTYyMDogSW1wb3NzaWJpbGUgY29udmVydGlyZSBhIGNvZGlmaWNhIGRpIHN0YW1wYSBcIiVzXCIiCisKK21zZ2lkICJTZW5kaW5nIHRvIHByaW50ZXIuLi4iCittc2dzdHIgIkludmlvIGEgc3RhbXBhbnRlLi4uIgorCittc2dpZCAiRTM2NTogRmFpbGVkIHRvIHByaW50IFBvc3RTY3JpcHQgZmlsZSIKK21zZ3N0ciAiRTM2NTogTm9uIHJpZXNjbyBhZCBhcHJpcmUgZmlsZSBQb3N0U2NyaXB0IgorCittc2dpZCAiUHJpbnQgam9iIHNlbnQuIgorbXNnc3RyICJSaWNoaWVzdGEgZGkgc3RhbXBhIGludmlhdGEuIgorCiBtc2dpZCAiQWRkIGEgbmV3IGRhdGFiYXNlIgogbXNnc3RyICJBZ2dpdW5naSB1biBudW92byBkYXRhYmFzZSIKIApAQCAtMjYxMiw4ICsyNjQwLDggQEAKIG1zZ2lkICJFMjUxOiBWSU0gaW5zdGFuY2UgcmVnaXN0cnkgcHJvcGVydHkgaXMgYmFkbHkgZm9ybWVkLiAgRGVsZXRlZCEiCiBtc2dzdHIgIkUyNTE6IFByb3ByaWV04CByZWdpc3RyeSByZWxhdGl2ZSBhIFZJTSBub24gYWRlZ3VhdGUuICBDYW5jZWxsYXRlISIKIAotbXNnaWQgIlVua25vd24gb3B0aW9uIgotbXNnc3RyICJPcHppb25lIGluZXNpc3RlbnRlIgorbXNnaWQgIlVua25vd24gb3B0aW9uIGFyZ3VtZW50IgorbXNnc3RyICJBcmdvbWVudG8gZGkgb3B6aW9uZSBzY29ub3NjaXV0byIKIAogbXNnaWQgIlRvbyBtYW55IGVkaXQgYXJndW1lbnRzIgogbXNnc3RyICJUcm9wcGkgYXJnb21lbnRpIGRpIGVkaXQiCkBAIC0yNjIxLDggKzI2NDksOCBAQAogbXNnaWQgIkFyZ3VtZW50IG1pc3NpbmcgYWZ0ZXIiCiBtc2dzdHIgIkFyZ29tZW50byBtYW5jYW50ZSBkb3BvIgogCi1tc2dpZCAiR2FyYmFnZSBhZnRlciBvcHRpb24iCi1tc2dzdHIgIlNwYXp6YXR1cmEgZG9wbyBvcHppb25lIgorbXNnaWQgIkdhcmJhZ2UgYWZ0ZXIgb3B0aW9uIGFyZ3VtZW50IgorbXNnc3RyICJTcGF6emF0dXJhIGRvcG8gYXJnb21lbnRvIGRpIG9wemlvbmUiCiAKIG1zZ2lkICJUb28gbWFueSBcIitjb21tYW5kXCIsIFwiLWMgY29tbWFuZFwiIG9yIFwiLS1jbWQgY29tbWFuZFwiIGFyZ3VtZW50cyIKIG1zZ3N0ciAiVHJvcHBpIGFyZ29tZW50aSBcIitjb21tYW5kXCIsIFwiLWMgY29tbWFuZFwiIG8gXCItLWNtZCBjb21tYW5kXCIiCkBAIC0yNjMwLDYgKzI2NTgsMTAgQEAKIG1zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IGZvciIKIG1zZ3N0ciAiQXJnb21lbnRvIG5vbiB2YWxpZG8gcGVyIgogCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGZpbGVzIHRvIGVkaXRcbiIKK21zZ3N0ciAiJWQgZmlsZSBkYSBlbGFib3JhcmVcbiIKKwogbXNnaWQgIlRoaXMgVmltIHdhcyBub3QgY29tcGlsZWQgd2l0aCB0aGUgZGlmZiBmZWF0dXJlLiIKIG1zZ3N0ciAiVmltIG5vbiBjb21waWxhdG8gY29uIG9wemlvbmUgJ2RpZmYnLiIKIApAQCAtMjY1MSwxMCArMjY4Myw2IEBACiBtc2dpZCAiVmltOiBXYXJuaW5nOiBJbnB1dCBpcyBub3QgZnJvbSBhIHRlcm1pbmFsXG4iCiBtc2dzdHIgIlZpbTogQXR0ZW56aW9uZTogSW5wdXQgbm9uIHByb3ZlbmllbnRlIGRhIHVuIHRlcm1pbmFsZVxuIgogCi0jLCBjLWZvcm1hdAotbXNnaWQgIiVkIGZpbGVzIHRvIGVkaXRcbiIKLW1zZ3N0ciAiJWQgZmlsZSBkYSBlbGFib3JhcmVcbiIKLQogIy4ganVzdCBpbiBjYXNlLi4KIG1zZ2lkICJwcmUtdmltcmMgY29tbWFuZCBsaW5lIgogbXNnc3RyICJsaW5lYSBjb21hbmRpIHByaW1hIGRpIHZpbXJjIgpAQCAtMzU0OSw4ICszNTc3LDkgQEAKIG1zZ2lkICJFMzI4OiBNZW51IG9ubHkgZXhpc3RzIGluIGFub3RoZXIgbW9kZSIKIG1zZ3N0ciAiRTMyODogSSBNZW51IGVzaXN0b25vIHNvbG8gaW4gdW4nYWx0cmEgbW9kYWxpdOAiCiAKLW1zZ2lkICJFMzI5OiBObyBtZW51IG9mIHRoYXQgbmFtZSIKLW1zZ3N0ciAiRTMyOTogTmVzc3VuIE1lbnUgY29uIHF1ZWwgbm9tZSIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTMyOTogTm8gbWVudSBcIiVzXCIiCittc2dzdHIgIkUzMjk6IE5lc3N1biBNZW51IFwiJXNcIiIKIAogbXNnaWQgIkUzMzA6IE1lbnUgcGF0aCBtdXN0IG5vdCBsZWFkIHRvIGEgc3ViLW1lbnUiCiBtc2dzdHIgIkUzMzA6IElsIHBlcmNvcnNvIGRlbCBNZW51IG5vbiBkZXZlIGNvbmR1cnJlIGEgdW4gc290dG8tTWVudSIKQEAgLTM2MDksMTcgKzM2MzgsMTQgQEAKIG1zZ2lkICJJbnRlcnJ1cHQ6ICIKIG1zZ3N0ciAiSW50ZXJydXppb25lOiAiCiAKLW1zZ2lkICJIaXQgRU5URVIgb3IgdHlwZSBjb21tYW5kIHRvIGNvbnRpbnVlIgotbXNnc3RyICJCYXR0aSBJTlZJTyBvIHVuIGNvbWFuZG8gcGVyIHByb3NlZ3VpcmUiCittc2dpZCAiUHJlc3MgRU5URVIgb3IgdHlwZSBjb21tYW5kIHRvIGNvbnRpbnVlIgorbXNnc3RyICJQcmVtaSBJTlZJTyBvIHVuIGNvbWFuZG8gcGVyIHByb3NlZ3VpcmUiCiAKIG1zZ2lkICItLSBNb3JlIC0tIgogbXNnc3RyICItLSBBbmNvcmEgLS0iCiAKLW1zZ2lkICIgKFJFVC9CUzogbGluZSwgU1BBQ0UvYjogcGFnZSwgZC91OiBoYWxmIHBhZ2UsIHE6IHF1aXQpIgotbXNnc3RyICIgKFJFVC9CUzogbGluZWEsIFNQQVpJTy9iOiBwYWdpbmEsIGQvdTogbWV6emEgcGFnaW5hLCBxOiBlc2NpKSIKLQotbXNnaWQgIiAoUkVUOiBsaW5lLCBTUEFDRTogcGFnZSwgZDogaGFsZiBwYWdlLCBxOiBxdWl0KSIKLW1zZ3N0ciAiIChSRVQ6IGxpbmVhLCBTUEFaSU86IHBhZ2luYSwgZDogbWV6emEgcGFnaW5hLCBxOiBlc2NpKSIKK21zZ2lkICIgU1BBQ0UvZC9qOiBzY3JlZW4vcGFnZS9saW5lIGRvd24sIGIvdS9rOiB1cCwgcTogcXVpdCAiCittc2dzdHIgIiBTUEFaSU8vZC9qOiBzY2hlcm1vL3BhZ2luYS9yaWdhIGdp+SwgYi91L2s6IHN1LCBxOiBhYmJhbmRvbmEiCiAKIG1zZ2lkICJRdWVzdGlvbiIKIG1zZ3N0ciAiRG9tYW5kYSIKQEAgLTM2NTcsNiArMzY4MywxMiBAQAogbXNnaWQgIkUzMzg6IFNvcnJ5LCBubyBmaWxlIGJyb3dzZXIgaW4gY29uc29sZSBtb2RlIgogbXNnc3RyICJFMzM4OiBTcGlhY2VudGUsIG5pZW50ZSBlc3Bsb3JhemlvbmUgZmlsZSBpbiBtb2RhbGl04CBjb25zb2xlIgogCittc2dpZCAiRTc2NjogSW5zdWZmaWNpZW50IGFyZ3VtZW50cyBmb3IgcHJpbnRmKCkiCittc2dzdHIgIkU3NjY6IEFyZ29tZW50aSBub24gc3VmZmljaWVudGkgcGVyIHByaW50ZigpIgorCittc2dpZCAiRTc2NzogVG9vIG1hbnkgYXJndW1lbnRzIHRvIHByaW50ZigpIgorbXNnc3RyICJFNzY3OiBUcm9wcGkgYXJnb21lbnRpIHBlciBwcmludGYoKSIKKwogbXNnaWQgIlcxMDogV2FybmluZzogQ2hhbmdpbmcgYSByZWFkb25seSBmaWxlIgogbXNnc3RyICJXMTA6IEF0dGVuemlvbmU6IE1vZGlmaWNhIGEgdW4gZmlsZSBpbiBzb2xhLWxldHR1cmEiCiAKQEAgLTM3NzYsMTUgKzM4MDgsNiBAQAogbXNnaWQgIkUzNDc6IE5vIG1vcmUgZmlsZSBcIiVzXCIgZm91bmQgaW4gcGF0aCIKIG1zZ3N0ciAiRTM0NzogTmVzc3VuIGFsdHJvIGZpbGUgXCIlc1wiIHRyb3ZhdG8gbmVsIHBlcmNvcnNvIgogCi1tc2dpZCAiRTU1MDogTWlzc2luZyBjb2xvbiIKLW1zZ3N0ciAiRTU1MDogTWFuY2EgJzonIgotCi1tc2dpZCAiRTU1MTogSWxsZWdhbCBjb21wb25lbnQiCi1tc2dzdHIgIkU1NTE6IENvbXBvbmVudGUgbm9uIHZhbGlkbyIKLQotbXNnaWQgIkU1NTI6IGRpZ2l0IGV4cGVjdGVkIgotbXNnc3RyICJFNTUyOiBhc3BldHRhdm8gdW4gbnVtZXJvIgotCiAjLiBHZXQgaGVyZSB3aGVuIHRoZSBzZXJ2ZXIgY2FuJ3QgYmUgZm91bmQuCiBtc2dpZCAiQ2Fubm90IGNvbm5lY3QgdG8gTmV0YmVhbnMgIzIiCiBtc2dzdHIgIk5vbiBwb3NzbyBjb25uZXR0ZXJtaSBhIE5ldGJlYW5zICMyIgpAQCAtMzk2NCwxMyArMzk4Nyw2IEBACiBtc2dpZCAiRTUyMDogTm90IGFsbG93ZWQgaW4gYSBtb2RlbGluZSIKIG1zZ3N0ciAiRTUyMDogTm9uIGNvbnNlbnRpdG8gaW4gdW5hICdtb2RlbGluZSciCiAKLW1zZ2lkICIiCi0iXG4iCi0iXHRMYXN0IHNldCBmcm9tICIKLW1zZ3N0ciAiIgotIlxuIgotIlx0SW1wb3N0YXRhIGwndWx0aW1hIHZvbHRhIGRhICIKLQogbXNnaWQgIkU1MjE6IE51bWJlciByZXF1aXJlZCBhZnRlciA9IgogbXNnc3RyICJFNTIxOiBDaSB2dW9sZSB1biBudW1lcm8gZG9wbyA9IgogCkBAIC00NDgyLDYgKzQ0OTgsMTAgQEAKIG1zZ3N0ciAiRTcxOiBDYXJhdHRlcmUgbm9uIGFtbWVzc28gZG9wbyAlcyUlIgogCiAjLCBjLWZvcm1hdAorbXNnaWQgIkU3Njk6IE1pc3NpbmcgXSBhZnRlciAlc1siCittc2dzdHIgIkU3Njk6IE1hbmNhIF0gZG9wbyAlc1siCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTU1NDogU3ludGF4IGVycm9yIGluICVzey4uLn0iCiBtc2dzdHIgIkU1NTQ6IEVycm9yZSBzaW50YXR0aWNvIGluICVzey4uLn0iCiAKQEAgLTQ2MDcsMjkgKzQ2MjcsNTEgQEAKIG1zZ2lkICJFNzU4OiBUcnVuY2F0ZWQgc3BlbGwgZmlsZSIKIG1zZ3N0ciAiRTc1ODogRmlsZSBvcnRvZ3JhZmljbyB0cm9uY2F0byIKIAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFpbGluZyB0ZXh0IGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJUZXN0byBpbiBlY2Nlc3NvIGluICVzIGxpbmVhICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJBZmZpeCBuYW1lIHRvbyBsb25nIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJOb21lIGFmZmlzc28gdHJvcHBvIGx1bmdvIGluICVzIGxpbmVhICVkOiAlcyIKKworbXNnaWQgIkU3NjE6IEZvcm1hdCBlcnJvciBpbiBhZmZpeCBmaWxlIEZPTCwgTE9XIG9yIFVQUCIKK21zZ3N0ciAiRTc2MTogRXJyb3JlIGRpIGZvcm1hdG8gbmVsIGZpbGUgYWZmaXNzaSBGT0wsIExPVyBvIFVQUCIKKworbXNnaWQgIkU3NjI6IENoYXJhY3RlciBpbiBGT0wsIExPVyBvciBVUFAgaXMgb3V0IG9mIHJhbmdlIgorbXNnc3RyICJFNzYyOiBDYXJhdHRlcmUgZnVvcmkgaW50ZXJ2YWxsbyBpbiBGT0wsIExPVyBvIFVQUCIKKworbXNnaWQgIkNvbXByZXNzaW5nIHdvcmQgdHJlZS4uLiIKK21zZ3N0ciAiQ29tcHJpbW8gYWxiZXJvIGRpIHBhcm9sZS4uLiIKKwogbXNnaWQgIkU3NTY6IFNwZWxsIGNoZWNraW5nIGlzIG5vdCBlbmFibGVkIgogbXNnc3RyICJFNzU2OiBJbCBjb250cm9sbG8gb3J0b2dyYWZpY28gbm9uIOggYWJpbGl0YXRvIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIldhcm5pbmc6IENhbm5vdCBmaW5kIHdvcmQgbGlzdCBcIiVzXCIiCi1tc2dzdHIgIkF0dGVuemlvbmU6IE5vbiB0cm92byBsaXN0YSBwYXJvbGUgXCIlc1wiIgorbXNnaWQgIldhcm5pbmc6IENhbm5vdCBmaW5kIHdvcmQgbGlzdCBcIiVzLiVzLnNwbFwiIG9yIFwiJXMuYXNjaWkuc3BsXCIiCittc2dzdHIgIkF0dGVuemlvbmU6IE5vbiB0cm92byBsaXN0YSBwYXJvbGUgXCIlcy4lcy5zcGxcIiBvIFwiJXMuYXNjaWkuc3BsXCIiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyBzcGVsbCBmaWxlIFwiJXNcIiIKIG1zZ3N0ciAiTGV0dHVyYSBmaWxlIG9ydG9ncmFmaWNvIFwiJXNcIiIKIAotbXNnaWQgIkU3NTc6IFdyb25nIGZpbGUgSUQgaW4gc3BlbGwgZmlsZSIKLW1zZ3N0ciAiRTc1NzogRmlsZSBJRCBlcnJhdG8gbmVsIGZpbGUgb3J0b2dyYWZpY28iCittc2dpZCAiRTc1NzogVGhpcyBkb2VzIG5vdCBsb29rIGxpa2UgYSBzcGVsbCBmaWxlIgorbXNnc3RyICJFNzU3OiBRdWVzdG8gbm9uIHNlbWJyYSB1biBmaWxlIG9ydG9ncmFmaWNvIgorCittc2dpZCAiRTc3MTogT2xkIHNwZWxsIGZpbGUsIG5lZWRzIHRvIGJlIHVwZGF0ZWQiCittc2dzdHIgIkU3NzE6IEZpbGUgb3J0b2dyYWZpY28gb2Jzb2xldG8sIG5lY2Vzc2FyaW8gYWdnaW9ybmFtZW50byIKKworbXNnaWQgIkU3NzI6IFNwZWxsIGZpbGUgaXMgZm9yIG5ld2VyIHZlcnNpb24gb2YgVmltIgorbXNnc3RyICJFNzcyOiBJbCBmaWxlIG9ydG9ncmFmaWNvIOggcGVyIHZlcnNpb25pIGRpIFZpbSBwafkgcmVjZW50aSIKKworbXNnaWQgIkU3NzA6IFVuc3VwcG9ydGVkIHNlY3Rpb24gaW4gc3BlbGwgZmlsZSIKK21zZ3N0ciAiRTc3MDogU2V6aW9uZSBub24gc3VwcG9ydGF0YSBuZWwgZmlsZSBvcnRvZ3JhZmljbyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiByZWdpb24gJXMgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiQXR0ZW56aW9uZTogcmVnaW9uZSAlcyBub24gc3VwcG9ydGF0YSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJBZmZpeCBuYW1lIHRvbyBsb25nIGluICVzIGxpbmUgJWQ6ICVzIgotbXNnc3RyICJOb21lIGFmZmlzc28gdHJvcHBvIGx1bmdvIGluICVzIGxpbmVhICVkOiAlcyIKLQotIywgYy1mb3JtYXQKIG1zZ2lkICJSZWFkaW5nIGFmZml4IGZpbGUgJXMgLi4uIgogbXNnc3RyICJMZXR0dXJhIGZpbGUgYWZmaXNzaSAlcyAuLi4iCiAKQEAgLTQ2NDYsOCArNDY4OCwyOCBAQAogbXNnc3RyICJDb252ZXJzaW9uZSBpbiAlcyBub24gc3VwcG9ydGF0YSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJUcmFpbGluZyB0ZXh0IGluICVzIGxpbmUgJWQ6ICVzIgotbXNnc3RyICJUZXN0byBpbiBlY2Nlc3NvIGluICVzIGxpbmVhICVkOiAlcyIKK21zZ2lkICJJbnZhbGlkIHZhbHVlIGZvciBGTEFHIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJWYWxvcmUgZGkgRkxBRyBub24gdmFsaWRvIGluICVzIGxpbmVhICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJGTEFHIGFmdGVyIHVzaW5nIGZsYWdzIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJGTEFHIGRvcG8gbCd1c28gZGkgZmxhZ3MgaW4gJXMgbGluZWEgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkNoYXJhY3RlciB1c2VkIGZvciBTTEFTSCBtdXN0IGJlIEFTQ0lJOyBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiSWwgY2FyYXR0ZXJlIHVzYXRvIHBlciBTTEFTSCBkZXZlIGVzc2VyZSBBU0NJSTsgaW4gJXMgbGluZWEgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIldyb25nIENPTVBPVU5ETUFYIHZhbHVlIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJWYWxvcmUgZXJyYXRvIHBlciBDT01QT1VORE1BWCBpbiAlcyBsaW5lYSAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JvbmcgQ09NUE9VTkRNSU4gdmFsdWUgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIlZhbG9yZSBlcnJhdG8gcGVyIENPTVBPVU5ETUlOIGluICVzIGxpbmVhICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJXcm9uZyBDT01QT1VORFNZTE1BWCB2YWx1ZSBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiVmFsb3JlIGVycmF0byBwZXIgQ09NUE9VTkRTWUxNQVggaW4gJXMgbGluZWEgJWQ6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkV4cGVjdGVkIFkgb3IgTiBpbiAlcyBsaW5lICVkOiAlcyIKQEAgLTQ2NTgsMTYgKzQ3MjAsOCBAQAogbXNnc3RyICJBZmZpc3NvIGR1cGxpY2F0byBpbiAlcyBsaW5lYSAlZDogJXMiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRHVwbGljYXRlIEZPTCBpbiAlcyBsaW5lICVkIgotbXNnc3RyICJGT0wgZHVwbGljYXRvIGluICVzIGxpbmVhICVkIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkR1cGxpY2F0ZSBMT1cgaW4gJXMgbGluZSAlZCIKLW1zZ3N0ciAiTE9XIGR1cGxpY2F0byBpbiAlcyBsaW5lYSAlZCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJEdXBsaWNhdGUgVVBQIGluICVzIGxpbmUgJWQiCi1tc2dzdHIgIlVQUCBkdXBsaWNhdG8gaW4gJXMgbGluZWEgJWQiCittc2dpZCAiQnJva2VuIGNvbmRpdGlvbiBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiQ29uZGl6aW9uZSBub24gcmlzcGV0dGF0YSBpbiAlcyBsaW5lYSAlZDogJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXhwZWN0ZWQgUkVQIGNvdW50IGluICVzIGxpbmUgJWQiCkBAIC00NjgyLDggKzQ3MzYsMjQgQEAKIG1zZ3N0ciAiQ2FyYXR0ZXJlIGR1cGxpY2F0byBpbiBNQVAgaW4gJXMgbGluZWEgJWQiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVW5yZWNvZ25pemVkIGl0ZW0gaW4gJXMgbGluZSAlZDogJXMiCi1tc2dzdHIgIkVsZW1lbnRvIG5vbiByaWNvbm9zY2l1dG8gaW4gJXMgbGluZWEgJWQ6ICVzIgorbXNnaWQgIlVucmVjb2duaXplZCBvciBkdXBsaWNhdGUgaXRlbSBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiRWxlbWVudG8gbm9uIHJpY29ub3NjaXV0byBvIGR1cGxpY2F0byBpbiAlcyBsaW5lYSAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyBGT0wvTE9XL1VQUCBsaW5lIGluICVzIgorbXNnc3RyICJMaW5lYSBGT0wvTE9XL1VQUCBtYW5jYW50ZSBpbiAlcyIKKworbXNnaWQgIkNPTVBPVU5EU1lMTUFYIHVzZWQgd2l0aG91dCBTWUxMQUJMRSIKK21zZ3N0ciAiQ09NUE9VTkRTWUxNQVggdXNhdG8gc2VuemEgU1lMTEFCTEUiCisKK21zZ2lkICJUb28gbWFueSBwb3N0cG9uZWQgcHJlZml4ZXMiCittc2dzdHIgIlRyb3BwaSBwcmVmaXNzaSBwb3Nwb3N0aSIKKworbXNnaWQgIlRvbyBtYW55IGNvbXBvdW5kIGZsYWdzIgorbXNnc3RyICJUcm9wcGkgZmxhZyBjb21wb3N0aSIKKworbXNnaWQgIlRvbyBtYW55IHBvc3BvbmVkIHByZWZpeGVzIGFuZC9vciBjb21wb3VuZCBmbGFncyIKK21zZ3N0ciAiVHJvcHBpIHByZWZpc3NpIHBvc3Bvc3RpIGUvbyBmbGFnIGNvbXBvc3RpIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3NpbmcgU09GTyVzIGxpbmUgaW4gJXMiCkBAIC00Njk0LDggKzQ3NjQsMTYgQEAKIG1zZ3N0ciAiTGluZWUgc2lhIFNBTCBjaGUgU09GTyBpbiAlcyIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJNaXNzaW5nIEZPTC9MT1cvVVBQIGxpbmUgaW4gJXMiCi1tc2dzdHIgIkxpbmVhIEZPTC9MT1cvVVBQIG1hbmNhbnRlIGluICVzIgorbXNnaWQgIkZsYWcgaXMgbm90IGEgbnVtYmVyIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJJbCBmbGFnIG5vbiDoIHVuIG51bWVybyBpbiAlcyBsaW5lYSAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWxsZWdhbCBmbGFnIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJGbGFnIG5vbiBhbW1lc3NvIGluICVzIGxpbmVhICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICIlcyB2YWx1ZSBkaWZmZXJzIGZyb20gd2hhdCBpcyB1c2VkIGluIGFub3RoZXIgLmFmZiBmaWxlIgorbXNnc3RyICJJbCB2YWxvcmUgZGkgJXMg6CBkaXZlcnNvIGRhIHF1ZWxsbyB1c2F0byBpbiB1biBhbHRybyBmaWxlIC5hZmYiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyBkaWN0aW9uYXJ5IGZpbGUgJXMgLi4uIgpAQCAtNDcxNCw4ICs0NzkyLDE2IEBACiBtc2dzdHIgIlBhcm9sYSBkdXBsaWNhdGEgaW4gJXMgbGluZWEgJWQ6ICVzIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIklnbm9yZWQgJWQgd29yZHMgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyIKLW1zZ3N0ciAiJWQgcGFyb2xlIGNvbiBjYXJhdHRlcmkgbm9uLUFTQ0lJIGlnbm9yYXRlIgorbXNnaWQgIkZpcnN0IGR1cGxpY2F0ZSB3b3JkIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJQcmltYSBwYXJvbGEgZHVwbGljYXRhIGluICVzIGxpbmVhICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBkdXBsaWNhdGUgd29yZChzKSBpbiAlcyIKK21zZ3N0ciAiJWQgcGFyb2xlIGR1cGxpY2F0ZSBpbiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJJZ25vcmVkICVkIHdvcmQocykgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBpbiAlcyIKK21zZ3N0ciAiJWQgcGFyb2xlIGNvbiBjYXJhdHRlcmkgbm9uLUFTQ0lJIGlnbm9yYXRlIGluICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlYWRpbmcgd29yZCBmaWxlICVzIC4uLiIKQEAgLTQ3NTAsNiArNDgzNiwxMCBAQAogbXNnc3RyICJGbGFnIG5vbiByaWNvbm9zY2l1dGkgaW4gJXMgbGluZWEgJWQ6ICVzIgogCiAjLCBjLWZvcm1hdAorbXNnaWQgIklnbm9yZWQgJWQgd29yZHMgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyIKK21zZ3N0ciAiJWQgcGFyb2xlIGNvbiBjYXJhdHRlcmkgbm9uLUFTQ0lJIGlnbm9yYXRlIgorCisjLCBjLWZvcm1hdAogbXNnaWQgIkNvbXByZXNzZWQgJWQgb2YgJWQgbm9kZXM7ICVkJSUgcmVtYWluaW5nIgogbXNnc3RyICIlZCBkaSAlZCBub2RpIGNvbXByZXNzaTsgbmUgcmVzdGFubyAlZCUlIgogCkBAIC00NzYzLDggKzQ4NTMsOCBAQAogbXNnaWQgIkU3NTU6IEludmFsaWQgcmVnaW9uIGluICVzIgogbXNnc3RyICJFNzU1OiBSZWdpb25lIG5vbiB2YWxpZGEgaW4gJXMiCiAKLW1zZ2lkICJDb21wcmVzc2luZyB3b3JkIHRyZWUuLi4iCi1tc2dzdHIgIkNvbXByaW1vIGFsYmVybyBkaSBwYXJvbGUuLi4iCittc2dpZCAiV2FybmluZzogYm90aCBjb21wb3VuZGluZyBhbmQgTk9CUkVBSyBzcGVjaWZpZWQiCittc2dzdHIgIkF0dGVuemlvbmU6IHNwZWNpZmljYXRpIHNpYSBjb21wb3NpemlvbmUgc2lhIE5PQlJFQUsiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiV3JpdGluZyBzcGVsbCBmaWxlICVzIC4uLiIKQEAgLTQ3ODAsMTEgKzQ4NzAsOSBAQAogbXNnaWQgIkU3NjQ6ICdzcGVsbGZpbGUnIGlzIG5vdCBzZXQiCiBtc2dzdHIgIkU3NjQ6IG9wemlvbmUgJ3NwZWxsZmlsZScgdnVvdGEiCiAKLW1zZ2lkICJFNzYxOiBGb3JtYXQgZXJyb3IgaW4gYWZmaXggZmlsZSBGT0wsIExPVyBvciBVUFAiCi1tc2dzdHIgIkU3NjE6IEVycm9yZSBkaSBmb3JtYXRvIG5lbCBmaWxlIGFmZmlzc2kgRk9MLCBMT1cgbyBVUFAiCi0KLW1zZ2lkICJFNzYyOiBDaGFyYWN0ZXIgaW4gRk9MLCBMT1cgb3IgVVBQIGlzIG91dCBvZiByYW5nZSIKLW1zZ3N0ciAiRTc2MjogQ2FyYXR0ZXJlIGZ1b3JpIGludGVydmFsbG8gaW4gRk9MLCBMT1cgbyBVUFAiCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3NjU6ICdzcGVsbGZpbGUnIGRvZXMgbm90IGhhdmUgJWxkIGVudGllcyIKK21zZ3N0ciAiRTc2NTogJ3NwZWxsZmlsZScgbm9uIGhhICVsZCBlbGVtZW50aSIKIAogbXNnaWQgIkU3NjM6IFdvcmQgY2hhcmFjdGVycyBkaWZmZXIgYmV0d2VlbiBzcGVsbCBmaWxlcyIKIG1zZ3N0ciAiRTc2MzogQ2FyYXR0ZXJpIGRpIHBhcm9sYSBkaWZmZXJlbnRpIG5laSBmaWxlIG9ydG9ncmFmaWNpIgpAQCAtNDc5MiwyNyArNDg4MCwxOSBAQAogbXNnaWQgIlNvcnJ5LCBubyBzdWdnZXN0aW9ucyIKIG1zZ3N0ciAiU3BpYWNlbnRlLCBuZXNzdW4gc3VnZ2VyaW1lbnRvIgogCisjLCBjLWZvcm1hdAorbXNnaWQgIlNvcnJ5LCBvbmx5ICVsZCBzdWdnZXN0aW9ucyIKK21zZ3N0ciAiU3BpYWNlbnRlLCBzb2xvICVsZCBzdWdnZXJpbWVudGkiCisKICMuIGF2b2lkIG1vcmUgcHJvbXB0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoYW5nZSBcIiUuKnNcIiB0bzoiCiBtc2dzdHIgIkNhbWJpYXJlIFwiJS4qc1wiIGluOiIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICIlMmQgXCIlc1wiIgotbXNnc3RyICIlMmQgXCIlc1wiIgotCi0jLCBjLWZvcm1hdAogbXNnaWQgIiA8IFwiJS4qc1wiIgogbXNnc3RyICIgPCBcIiUuKnNcIiIKIAotIywgYy1mb3JtYXQKLW1zZ2lkICIgKCVzJWQgLSAlZCkiCi1tc2dzdHIgIiAoJXMlZCAtICVkKSIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICIgKCVkKSIKLW1zZ3N0ciAiICglZCkiCi0KIG1zZ2lkICJFNzUyOiBObyBwcmV2aW91cyBzcGVsbCByZXBsYWNlbWVudCIKIG1zZ3N0ciAiRTc1MjogTmVzc3VuYSBzb3N0aXR1emlvbmUgb3J0b2dyYWZpY2EgcHJlY2VkZW50ZSIKIApkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2d1aV93MzIucHJvIGIvc3JjL3Byb3RvL2d1aV93MzIucHJvCmluZGV4IDQ5MTk3MWMuLjMxZjQ0YWEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9ndWlfdzMyLnBybworKysgYi9zcmMvcHJvdG8vZ3VpX3czMi5wcm8KQEAgLTgyLDExICs4MiwxMSBAQAogdm9pZCBndWlfbWNoX2RyYXdzaWduIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgaW50IHR5cGVucikpOwogdm9pZCAqZ3VpX21jaF9yZWdpc3Rlcl9zaWduIF9fQVJHUygoY2hhcl91ICpzaWduZmlsZSkpOwogdm9pZCBndWlfbWNoX2Rlc3Ryb3lfc2lnbiBfX0FSR1MoKHZvaWQgKnNpZ24pKTsKK2ludCBtdWx0aWxpbmVfYmFsbG9vbl9hdmFpbGFibGUgX19BUkdTKCh2b2lkKSk7CiB2b2lkIGd1aV9tY2hfZGlzYWJsZV9iZXZhbF9hcmVhIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsKSk7CiB2b2lkIGd1aV9tY2hfZW5hYmxlX2JldmFsX2FyZWEgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwpKTsKIHZvaWQgZ3VpX21jaF9wb3N0X2JhbGxvb24gX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwsIGNoYXJfdSAqbWVzZykpOwogQmFsbG9vbkV2YWwgKmd1aV9tY2hfY3JlYXRlX2JldmFsX2FyZWEgX19BUkdTKCh2b2lkICp0YXJnZXQsIGNoYXJfdSAqbWVzZywgdm9pZCAoKm1lc2dDQikoQmFsbG9vbkV2YWwgKiwgaW50KSwgdm9pZCAqY2xpZW50RGF0YSkpOwogdm9pZCBndWlfbWNoX2Rlc3Ryb3lfYmV2YWxfYXJlYSBfX0FSR1MoKEJhbGxvb25FdmFsICpiZXZhbCkpOwogdm9pZCBuZXRiZWFuc19kcmF3X211bHRpc2lnbl9pbmRpY2F0b3IgX19BUkdTKChpbnQgcm93KSk7Ci1pbnQgbXVsdGlsaW5lX2JhbGxvb25fYXZhaWxhYmxlIF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vc2VhcmNoLnBybyBiL3NyYy9wcm90by9zZWFyY2gucHJvCmluZGV4IDE1ZThiMzAuLjhlMjIyYWEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9zZWFyY2gucHJvCisrKyBiL3NyYy9wcm90by9zZWFyY2gucHJvCkBAIC0yNiw3ICsyNiw3IEBACiBpbnQgY3VycmVudF93b3JkIF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50LCBpbnQgaW5jbHVkZSwgaW50IGJpZ3dvcmQpKTsKIGludCBjdXJyZW50X3NlbnQgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnQsIGludCBpbmNsdWRlKSk7CiBpbnQgY3VycmVudF9ibG9jayBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgbG9uZyBjb3VudCwgaW50IGluY2x1ZGUsIGludCB3aGF0LCBpbnQgb3RoZXIpKTsKLWludCBjdXJyZW50X3RhZ2Jsb2NrIF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50LCBpbnQgaW5jbHVkZSkpOworaW50IGN1cnJlbnRfdGFnYmxvY2sgX19BUkdTKChvcGFyZ19UICpvYXAsIGxvbmcgY291bnRfYXJnLCBpbnQgaW5jbHVkZSkpOwogaW50IGN1cnJlbnRfcGFyIF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50LCBpbnQgaW5jbHVkZSwgaW50IHR5cGUpKTsKIGludCBjdXJyZW50X3F1b3RlIF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50LCBpbnQgaW5jbHVkZSwgaW50IHF1b3RlY2hhcikpOwogaW50IGxpbmV3aGl0ZSBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKZGlmZiAtLWdpdCBhL3NyYy9xdWlja2ZpeC5jIGIvc3JjL3F1aWNrZml4LmMKaW5kZXggYmYwYjBiOC4uZDU5NWM0ZiAxMDA2NDQKLS0tIGEvc3JjL3F1aWNrZml4LmMKKysrIGIvc3JjL3F1aWNrZml4LmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCWNoYXIJKnBhdHRlcm47CiAgICAgfQkJICAgIGZtdF9wYXRbRk1UX1BBVFRFUk5TXSA9CiAJCSAgICB7Ci0JCQl7J2YnLCAiXFxmXFwrIn0sCisJCQl7J2YnLCAiLlxcKyJ9LAkgICAgLyogb25seSB1c2VkIHdoZW4gYXQgZW5kICovCiAJCQl7J24nLCAiXFxkXFwrIn0sCiAJCQl7J2wnLCAiXFxkXFwrIn0sCiAJCQl7J2MnLCAiXFxkXFwrIn0sCkBAIC0zMTksMTYgKzMxOSwyNSBAQAogCQkJcHRyICs9IDEwOwogCQkgICAgfQogI2VuZGlmCi0JCSAgICBpZiAoKmVmbXAgPT0gJ2YnICYmIGVmbXBbMV0gIT0gTlVMCi0JCQkJCSAmJiBlZm1wWzFdICE9ICdcXCcgJiYgZWZtcFsxXSAhPSAnJScpCisJCSAgICBpZiAoKmVmbXAgPT0gJ2YnICYmIGVmbXBbMV0gIT0gTlVMKQogCQkgICAgewotCQkJLyogQSBmaWxlIG5hbWUgbWF5IGNvbnRhaW4gc3BhY2VzLCBidXQgdGhpcyBpc24ndCBpbgotCQkJICogIlxmIi4gIEZvciAiJWY6JWw6JW0iIHRoZXJlIG1heSBiZSBhICI6IiBpbiB0aGUKLQkJCSAqIGZpbGUgbmFtZS4gIFVzZSAiLlx7LTEsfXgiIGluc3RlYWQgKHggaXMgdGhlIG5leHQKLQkJCSAqIGNoYXJhY3RlciksIHRoZSByZXF1aXJlbWVudCB0aGF0IDo5OTk6IGZvbGxvd3MKLQkJCSAqIHNob3VsZCB3b3JrLiAqLwotCQkJU1RSQ1BZKHB0ciwgIi5cXHstMSx9Iik7Ci0JCQlwdHIgKz0gNzsKKwkJCWlmIChlZm1wWzFdICE9ICdcXCcgJiYgZWZtcFsxXSAhPSAnJScpCisJCQl7CisJCQkgICAgLyogQSBmaWxlIG5hbWUgbWF5IGNvbnRhaW4gc3BhY2VzLCBidXQgdGhpcyBpc24ndAorCQkJICAgICAqIGluICJcZiIuICBGb3IgIiVmOiVsOiVtIiB0aGVyZSBtYXkgYmUgYSAiOiIgaW4KKwkJCSAgICAgKiB0aGUgZmlsZSBuYW1lLiAgVXNlICIuXHstMSx9eCIgaW5zdGVhZCAoeCBpcworCQkJICAgICAqIHRoZSBuZXh0IGNoYXJhY3RlciksIHRoZSByZXF1aXJlbWVudCB0aGF0IDo5OTk6CisJCQkgICAgICogZm9sbG93cyBzaG91bGQgd29yay4gKi8KKwkJCSAgICBTVFJDUFkocHRyLCAiLlxcey0xLH0iKTsKKwkJCSAgICBwdHIgKz0gNzsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCSAgICAvKiBGaWxlIG5hbWUgZm9sbG93ZWQgYnkgJ1xcJyBvciAnJSc6IGluY2x1ZGUgYXMKKwkJCSAgICAgKiBtYW55IGZpbGUgbmFtZSBjaGFycyBhcyBwb3NzaWJsZS4gKi8KKwkJCSAgICBTVFJDUFkocHRyLCAiXFxmXFwrIik7CisJCQkgICAgcHRyICs9IDQ7CisJCQl9CiAJCSAgICB9CiAJCSAgICBlbHNlCiAJCSAgICB7CmRpZmYgLS1naXQgYS9zcmMvc3BlbGwuYyBiL3NyYy9zcGVsbC5jCmluZGV4IDU2Yzg5MWQuLjJjMjFkOTQgMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC5jCisrKyBiL3NyYy9zcGVsbC5jCkBAIC03NjU0LDcgKzc2NTQsNyBAQAogCQlicmVhazsKIAkgICAgaWYgKCpzcGYgPT0gTlVMKQogCSAgICB7Ci0JCUVNU0dOKF8oIkU3NjU6ICdzcGVsbGZpbGUnIGRvZXMgbm90IGhhdmUgJWxkIGVudGllcyIpLCBpbmRleCk7CisJCUVNU0dOKF8oIkU3NjU6ICdzcGVsbGZpbGUnIGRvZXMgbm90IGhhdmUgJWxkIGVudHJpZXMiKSwgaW5kZXgpOwogCQlyZXR1cm47CiAJICAgIH0KIAl9CmRpZmYgLS1naXQgYS9zcmMvc3RydWN0cy5oIGIvc3JjL3N0cnVjdHMuaAppbmRleCA1NDczNTEwLi45YzYzNDA3IDEwMDY0NAotLS0gYS9zcmMvc3RydWN0cy5oCisrKyBiL3NyYy9zdHJ1Y3RzLmgKQEAgLTEyODgsNiArMTI4OCw3IEBACiAjZW5kaWYKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKICAgICBjaGFyX3UJKmJfcF9jZnU7CS8qICdjb21wbGV0ZWZ1bmMnICovCisgICAgY2hhcl91CSpiX3Bfb2Z1OwkvKiAnb2NjdWx0ZnVuYycgKi8KICNlbmRpZgogICAgIGludAkJYl9wX2VvbDsJLyogJ2VuZG9mbGluZScgKi8KICAgICBpbnQJCWJfcF9ldDsJCS8qICdleHBhbmR0YWInICovCkBAIC0xNDEwLDIzICsxNDExLDIzIEBACiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfTVpTQ0hFTUUKLSAgICB2b2lkCSptenNjaGVtZV9yZWY7CS8qIFRoZSBNelNjaGVtZSByZWZlcmVuY2UgdG8gdGhpcyBidWZmZXIgKi8KKyAgICB2b2lkCSpiX216c2NoZW1lX3JlZjsgLyogVGhlIE16U2NoZW1lIHJlZmVyZW5jZSB0byB0aGlzIGJ1ZmZlciAqLwogI2VuZGlmCiAKICNpZmRlZiBGRUFUX1BFUkwKLSAgICB2b2lkCSpwZXJsX3ByaXZhdGU7CisgICAgdm9pZAkqYl9wZXJsX3ByaXZhdGU7CiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfUFlUSE9OCi0gICAgdm9pZAkqcHl0aG9uX3JlZjsJLyogVGhlIFB5dGhvbiByZWZlcmVuY2UgdG8gdGhpcyBidWZmZXIgKi8KKyAgICB2b2lkCSpiX3B5dGhvbl9yZWY7CS8qIFRoZSBQeXRob24gcmVmZXJlbmNlIHRvIHRoaXMgYnVmZmVyICovCiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfVENMCi0gICAgdm9pZAkqdGNsX3JlZjsKKyAgICB2b2lkCSpiX3RjbF9yZWY7CiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfUlVCWQotICAgIHZvaWQJKnJ1YnlfcmVmOworICAgIHZvaWQJKmJfcnVieV9yZWY7CiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfU1lOX0hMCkBAIC0xODEwLDMxICsxODExLDMwIEBACiAKIAogI2lmZGVmIEZFQVRfTVpTQ0hFTUUKLSAgICB2b2lkCSAgICAqbXpzY2hlbWVfcmVmOwkvKiBUaGUgTXpTY2hlbWUgdmFsdWUgcmVmZXJyaW5nIHRvIHRoaXMgd2luZG93ICovCisgICAgdm9pZAkqd19tenNjaGVtZV9yZWY7CS8qIFRoZSBNelNjaGVtZSB2YWx1ZSBmb3IgdGhpcyB3aW5kb3cgKi8KICNlbmRpZgogCiAjaWZkZWYgRkVBVF9QRVJMCi0gICAgdm9pZAkqcGVybF9wcml2YXRlOworICAgIHZvaWQJKndfcGVybF9wcml2YXRlOwogI2VuZGlmCiAKICNpZmRlZiBGRUFUX1BZVEhPTgotICAgIHZvaWQJKnB5dGhvbl9yZWY7CS8qIFRoZSBQeXRob24gdmFsdWUgcmVmZXJyaW5nIHRvIHRoaXMKLQkJCQkJICAgd2luZG93ICovCisgICAgdm9pZAkqd19weXRob25fcmVmOwkJLyogVGhlIFB5dGhvbiB2YWx1ZSBmb3IgdGhpcyB3aW5kb3cgKi8KICNlbmRpZgogCiAjaWZkZWYgRkVBVF9UQ0wKLSAgICB2b2lkCSp0Y2xfcmVmOworICAgIHZvaWQJKndfdGNsX3JlZjsKICNlbmRpZgogCiAjaWZkZWYgRkVBVF9SVUJZCi0gICAgdm9pZAkqcnVieV9yZWY7CisgICAgdm9pZAkqd19ydWJ5X3JlZjsKICNlbmRpZgogfTsKIAogLyoKICAqIEFyZ3VtZW50cyBmb3Igb3BlcmF0b3JzLgogICovCi10eXBlZGVmIHN0cnVjdCBvcGFyZwordHlwZWRlZiBzdHJ1Y3Qgb3BhcmdfUwogewogICAgIGludAkJb3BfdHlwZTsJLyogY3VycmVudCBwZW5kaW5nIG9wZXJhdG9yIHR5cGUgKi8KICAgICBpbnQJCXJlZ25hbWU7CS8qIHJlZ2lzdGVyIHRvIHVzZSBmb3IgdGhlIG9wZXJhdG9yICovCkBAIC0xODY1LDcgKzE4NjUsNyBAQAogLyoKICAqIEFyZ3VtZW50cyBmb3IgTm9ybWFsIG1vZGUgY29tbWFuZHMuCiAgKi8KLXR5cGVkZWYgc3RydWN0IGNtZGFyZwordHlwZWRlZiBzdHJ1Y3QgY21kYXJnX1MKIHsKICAgICBvcGFyZ19UCSpvYXA7CQkvKiBPcGVyYXRvciBhcmd1bWVudHMgKi8KICAgICBpbnQJCXByZWNoYXI7CS8qIHByZWZpeCBjaGFyYWN0ZXIgKG9wdGlvbmFsLCBhbHdheXMgJ2cnKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uaCBiL3NyYy92ZXJzaW9uLmgKaW5kZXggMmVhNDZhYi4uMGRiOWFiMiAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uaAorKysgYi9zcmMvdmVyc2lvbi5oCkBAIC0zNiw1ICszNiw1IEBACiAjZGVmaW5lIFZJTV9WRVJTSU9OX05PRE9UCSJ2aW03MGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9TSE9SVAkiNy4wYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX01FRElVTQkiNy4wYWEgQUxQSEEiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IEF1ZyAzMCkiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDMwLCBjb21waWxlZCAiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IFNlcCAxKSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBTZXAgMSwgY29tcGlsZWQgIgpkaWZmIC0tZ2l0IGEvc3JjL3ZpbS5oIGIvc3JjL3ZpbS5oCmluZGV4IDI3NjAzMzAuLmMyMDU0MWMgMTAwNjQ0Ci0tLSBhL3NyYy92aW0uaAorKysgYi9zcmMvdmltLmgKQEAgLTY4LDYgKzY4LDEwIEBACiAjIGlmbmRlZiBIQVZFX0NPTkZJR19ICiAjICBkZWZpbmUgVU5JWAogIyBlbmRpZgorIyBpZmRlZiBIQVZFX1NUUklOR1NfSAorLyogT24gTWFjIE9TIFggc3RyaW5ncy5oIGV4aXN0cyBidXQgcHJvZHVjZXMgYW4gYW5ub3lpbmcgd2FybmluZyBtZXNzYWdlLiAqLworIyAgdW5kZWYgSEFWRV9TVFJJTkdTX0gKKyMgZW5kaWYKICNlbmRpZgogI2lmIGRlZmluZWQoTUFDT1NfWCkgfHwgZGVmaW5lZChNQUNPU19DTEFTU0lDKQogIyAgZGVmaW5lIE1BQ09TCg==