From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Orphaned Packages Process To: git-commits@fedoraproject.org Subject: [rpms/slashem] rawhide: Orphaned for 6+ weeks Date: Fri, 26 Jun 2026 02:17:26 GMT Message-ID: <178244024664.1.7970083326707054175.rpms-slashem-5deec3f7b925@fedoraproject.org> List-ID: X-Git-Repo: rpms/slashem X-Git-Branch: rawhide X-Git-Rev: 5deec3f7b9257dfb0ff047e8433a4a1ed2573863 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvc2xhc2hlbQpCcmFu Y2ggOiByYXdoaWRlCkNvbW1pdCA6IDVkZWVjM2Y3YjkyNTdkZmIwZmYwNDdlODQzM2E0YTFlZDI1 NzM4NjMKQXV0aG9yIDogT3JwaGFuZWQgUGFja2FnZXMgUHJvY2VzcyA8cGFja2FnaW5nLXJlcG9y dHNAZmVkb3JhcHJvamVjdC5vcmc+CkRhdGUgICA6IDIwMjYtMDYtMjVUMjE6MTc6MjEtMDU6MDAK U3RhdHMgIDogKzEvLTIxMDMgaW4gMTIgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRv cmFwcm9qZWN0Lm9yZy9ycG1zL3NsYXNoZW0vYy81ZGVlYzNmN2I5MjU3ZGZiMGZmMDQ3ZTg0MzNh NGExZWQyNTczODYzP2JyYW5jaD1yYXdoaWRlCgpMb2c6Ck9ycGhhbmVkIGZvciA2KyB3ZWVrcwoK LS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZTczZTUyNS4uMDAwMDAwMAotLS0gYS8uZ2l0aWdub3JlCisrKyAvZGV2 L251bGwKQEAgLTEgKzAsMCBAQAotc2UwMDhlMGYxLnRhci5negoKZGlmZiAtLWdpdCBhL2RlYWQu cGFja2FnZSBiL2RlYWQucGFja2FnZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41MjA0YTg0Ci0tLSAvZGV2L251bGwKKysrIGIvZGVhZC5wYWNrYWdlCkBAIC0wLDAgKzEgQEAK K09ycGhhbmVkIGZvciA2KyB3ZWVrcwoKZGlmZiAtLWdpdCBhL3NsYXNoZW0tYWRkLUZERUNMcy1j OTkucGF0Y2ggYi9zbGFzaGVtLWFkZC1GREVDTHMtYzk5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAxNTJkMDJkLi4wMDAwMDAwCi0tLSBhL3NsYXNoZW0tYWRkLUZERUNMcy1j OTkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1BZGQgbWlzc2luZyBGb3J3 YXJkIGRlY2xhcmF0aW9ucyBmb3IgcmVuYW1lX2FyZWEgYW5kIHJlbW92ZV9hcmVhIGFuZCBmaXgg YSBjYWxsLXNpdGUuCi0KLVVwc3RyZWFtIGlzc3VlIHRyYWNrZWQgaGVyZToKLWh0dHBzOi8vc291 cmNlZm9yZ2UubmV0L3Avc2xhc2hlbS9idWdzLzk2My8KLQotaHR0cHM6Ly9mZWRvcmFwcm9qZWN0 Lm9yZy93aWtpL1Rvb2xjaGFpbi9Qb3J0aW5nVG9Nb2Rlcm5DCi0KLWRpZmYgLS1naXQgYS9pbmNs dWRlL2V4dGVybi5oIGIvaW5jbHVkZS9leHRlcm4uaAotaW5kZXggOGE4MzlkYi4uNTVhOTgyOSAx MDA2NDQKLS0tLSBhL2luY2x1ZGUvZXh0ZXJuLmgKLSsrKyBiL2luY2x1ZGUvZXh0ZXJuLmgKLUBA IC0yMjc0LDYgKzIyNzQsOCBAQCBFIEZJTEUgKkZERUNMKGZyZW9wZW5fYXJlYSwgKGNvbnN0IGNo YXIgKixjb25zdCBjaGFyICosY29uc3QgY2hhciAqLCBGSUxFICopKTsKLSBFIGludCBGREVDTChj aG1vZF9hcmVhLCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCkpOwotIEUgaW50IEZE RUNMKG9wZW5fYXJlYSwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwot IEUgaW50IEZERUNMKGNyZWF0X2FyZWEsIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50 KSk7Ci0rRSBpbnQgRkRFQ0wocmVuYW1lX2FyZWEsIChjb25zdCBjaGFyICosY29uc3QgY2hhciAq LGNvbnN0IGNoYXIgKikpOwotK0UgaW50IEZERUNMKHJlbW92ZV9hcmVhLCAoY29uc3QgY2hhciAq LGNvbnN0IGNoYXIgKikpOwotIEUgYm9vbGVhbiBGREVDTChsb2NrX2ZpbGVfYXJlYSwgKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLGludCkpOwotIEUgdm9pZCBGREVDTCh1bmxvY2tfZmlsZV9h cmVhLCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQg YS9zcmMvZmlsZXMuYyBiL3NyYy9maWxlcy5jCi1pbmRleCA0NjlhMjNmLi4wOTczOGM4IDEwMDY0 NAotLS0tIGEvc3JjL2ZpbGVzLmMKLSsrKyBiL3NyYy9maWxlcy5jCi1AQCAtNTY2LDcgKzU2Niw3 IEBAIGludCBsZXY7Ci0gCWlmIChsZXYgPT0gMCB8fCAobGV2ZWxfaW5mb1tsZXZdLmZsYWdzICYg TEZJTEVfRVhJU1RTKSkgewotIAkJc2V0X2xldmVsZmlsZV9uYW1lKGxvY2ssIGxldik7Ci0gI2lm ZGVmIEZJTEVfQVJFQVMKLS0JCSh2b2lkKSByZW1vdmVfYXJlYShGSUxFX0FSRUFfTEVWTCwgbG9j aywgMCk7Ci0rCQkodm9pZCkgcmVtb3ZlX2FyZWEoRklMRV9BUkVBX0xFVkwsIGxvY2spOwotICNl bHNlCi0gIyBpZmRlZiBIT0xEX0xPQ0tGSUxFX09QRU4KLSAJCWlmIChsZXYgPT0gMCkgcmVhbGx5 X2Nsb3NlKCk7CgpkaWZmIC0tZ2l0IGEvc2xhc2hlbS1jOTkucGF0Y2ggYi9zbGFzaGVtLWM5OS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyYjA4Yy4uMDAwMDAwMAotLS0g YS9zbGFzaGVtLWM5OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUFkZGl0 aW9uYWwgcHJvdG90eXBlcyBmb3IgQzk5IGNvbXBhdGliaWxpdHk6IERlY2xhcmUgZm9wZW5fZGF0 YWZpbGUKLXVuY29uZGl0aW9uYWxseSBiZWNhdXNlIGl0IGlzIHVzZWQgdGhyb3VnaG91dCB0aGUg c291cmNlcy4gIEFkZAotYSBtaXNzaW5nIHByb3RvdHlwZSBmb3IgcmVhZF90ZXN0X2ZpbGVfY29s b3JtYXAuCi0KLUFsc28gYXZvaWQgYW4gaW1wbGljaXQgaW50IGluIHRoZSBkZWZpbml0aW9uIG9m IGFib3J0dGVjaC4KLQotU3VibWl0dGVkIHVwc3RyZWFtOiA8aHR0cHM6Ly9zb3VyY2Vmb3JnZS5u ZXQvcC9zbGFzaGVtL2J1Z3MvOTY0Lz4KLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXh0ZXJuLmgg Yi9pbmNsdWRlL2V4dGVybi5oCi1pbmRleCA1NWE5ODI5Y2IwZjA1NjU5Li5iYjUyNTRlZWFjNWZk ZjA4IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9leHRlcm4uaAotKysrIGIvaW5jbHVkZS9leHRlcm4u aAotQEAgLTY4MSw5ICs2ODEsNyBAQCBFIHZvaWQgTkRFQ0wobWFrZXJvZ3VlZ2hvc3QpOwotIEUg Y2hhciAqRkRFQ0woZm5hbWVfZW5jb2RlLCAoY29uc3QgY2hhciAqLCBDSEFSX1AsIGNoYXIgKiwg Y2hhciAqLCBpbnQpKTsKLSBFIGNoYXIgKkZERUNMKGZuYW1lX2RlY29kZSwgKENIQVJfUCwgY2hh ciAqLCBjaGFyICosIGludCkpOwotIEUgY29uc3QgY2hhciAqRkRFQ0woZnFuYW1lLCAoY29uc3Qg Y2hhciAqLCBpbnQsIGludCkpOwotLSNpZm5kZWYgRklMRV9BUkVBUwotIEUgRklMRSAqRkRFQ0wo Zm9wZW5fZGF0YWZpbGUsIChjb25zdCBjaGFyICosY29uc3QgY2hhciAqLGludCkpOwotLSNlbmRp ZgotIEUgYm9vbGVhbiBGREVDTCh1cHRvZGF0ZSwgKGludCxjb25zdCBjaGFyICopKTsKLSBFIHZv aWQgRkRFQ0woc3RvcmVfdmVyc2lvbiwgKGludCkpOwotICNpZmRlZiBNRkxPUFBZCi1kaWZmIC0t Z2l0IGEvc3JjL3RlY2guYyBiL3NyYy90ZWNoLmMKLWluZGV4IGZkNmZlNDZiMjQ3OGVlNDAuLmMy NWQ1ODA4ZWJjYjIyODAgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVjaC5jCi0rKysgYi9zcmMvdGVjaC5j Ci1AQCAtMjM4LDYgKzIzOCw3IEBAIHRlY2hfa25vd24odGVjaCkKLSAvKiBDYWxsZWQgdG8gcHJl bWF0dXJlbHkgc3RvcCBhIHRlY2huaXF1ZSAqLwotIHZvaWQKLSBhYm9ydHRlY2godGVjaCkKLStp bnQgdGVjaDsKLSB7Ci0gCWludCBpOwotIAotZGlmZiAtLWdpdCBhL3dpbi9zaGFyZS90aWxlX3Qu aCBiL3dpbi9zaGFyZS90aWxlX3QuaAotaW5kZXggYzI4ZjhkZDM3NjI0YTkxZC4uMDFiZGZlNzFh ZTdlOTdlZCAxMDA2NDQKLS0tLSBhL3dpbi9zaGFyZS90aWxlX3QuaAotKysrIGIvd2luL3NoYXJl L3RpbGVfdC5oCi1AQCAtMzksNiArMzksNyBAQCBleHRlcm4gaW50IHRpbGVfeCwgdGlsZV95Owot IAotICNkZWZpbmUgcGl4ZWxfZXF1YWwoeCx5KSAoKHguciA9PSB5LnIpICYmICh4LmcgPT0geS5n KSAmJiAoeC5iID09IHkuYikpCi0gCi0rZXh0ZXJuIGJvb2xlYW4gRkRFQ0wocmVhZF90ZXh0X2Zp bGVfY29sb3JtYXAsIChjb25zdCBjaGFyICpmaWxlbmFtZSkpOwotIGV4dGVybiBib29sZWFuIEZE RUNMKGZvcGVuX3RleHRfZmlsZSwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSk7Ci0gZXh0 ZXJuIGJvb2xlYW4gRkRFQ0woZm9wZW5fdmlydHVhbF90ZXh0X2ZpbGUsIChjb25zdCBjaGFyICpi YXNlX25hbWUsCi0gCQljb25zdCBjaGFyICpvdmVybGF5X25hbWUsIGNvbnN0IGNoYXIgKnR5cGUp KTsKCmRpZmYgLS1naXQgYS9zbGFzaGVtLWNvbmZpZy5wYXRjaCBiL3NsYXNoZW0tY29uZmlnLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjZkOTgzLi4wMDAwMDAwCi0tLSBh L3NsYXNoZW0tY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotZGlm ZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvaW5jbHVkZS9jb25maWcuaC5jb25maWcgc2xhc2hlbS0w LjAuOEUwRjEvaW5jbHVkZS9jb25maWcuaAotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL2luY2x1ZGUv Y29uZmlnLmguY29uZmlnCTIwMDYtMTItMzAgMTQ6MDQ6NTMuMDAwMDAwMDAwICswMTAwCi0rKysg c2xhc2hlbS0wLjAuOEUwRjEvaW5jbHVkZS9jb25maWcuaAkyMDA5LTA1LTIxIDA5OjU0OjA1LjAw MDAwMDAwMCArMDIwMAotQEAgLTIyMCw4ICsyMjAsOCBAQAotIAotICNpZmRlZiBVTklYCi0gLyog cGF0aCBhbmQgZmlsZSBuYW1lIGV4dGVuc2lvbiBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSAqLwot LSMgZGVmaW5lIENPTVBSRVNTICIvdXNyL2Jpbi9jb21wcmVzcyIgLyogTGVtcGVsLVppdiBjb21w cmVzc2lvbiAqLwotLSMgZGVmaW5lIENPTVBSRVNTX0VYVEVOU0lPTiAiLloiCSAgICAgLyogY29t cHJlc3MncyBleHRlbnNpb24gKi8KLSsjIGRlZmluZSBDT01QUkVTUyAiL3Vzci9iaW4vYnppcDIi IC8qIGJ6aXAyIGNvbXByZXNzaW9uICovCi0rIyBkZWZpbmUgQ09NUFJFU1NfRVhURU5TSU9OICIu YnoyIgkgICAgIC8qIGJ6aXAyIGV4dGVuc2lvbiAqLwotIAotIC8qIEFuIGV4YW1wbGUgb2Ygb25l IGFsdGVybmF0aXZlIHlvdSBtaWdodCB3YW50IHRvIHVzZTogKi8KLSAvKiAjIGRlZmluZSBDT01Q UkVTUyAiL3Vzci9sb2NhbC9iaW4vZ3ppcCIgKi8gICAvKiBGU0YgZ3ppcCBjb21wcmVzc2lvbiAq LwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvaW5jbHVkZS91bml4Y29uZi5oLmNvbmZpZyBz bGFzaGVtLTAuMC44RTBGMS9pbmNsdWRlL3VuaXhjb25mLmgKLS0tLSBzbGFzaGVtLTAuMC44RTBG MS9pbmNsdWRlL3VuaXhjb25mLmguY29uZmlnCTIwMDYtMTItMzAgMTQ6MDQ6NTMuMDAwMDAwMDAw ICswMTAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvaW5jbHVkZS91bml4Y29uZi5oCTIwMDktMDUt MjEgMDk6NTI6NTYuMDAwMDAwMDAwICswMjAwCi1AQCAtMTEzLDcgKzExMyw3IEBACi0gICogRklM RV9BUkVBX0RPQwlGb3IgaHVtYW4tcmVhZGFibGUgZG9jdW1lbnRhdGlvbgotICAqLwotIAotLS8q ICNkZWZpbmUgRklMRV9BUkVBUyAqLwkJLyogVXNlIGZpbGUgYXJlYXMgKi8KLSsjZGVmaW5lIEZJ TEVfQVJFQVMgCQkvKiBVc2UgZmlsZSBhcmVhcyAqLwotIAotICNpZmRlZiBGSUxFX0FSRUFTCi0g CgpkaWZmIC0tZ2l0IGEvc2xhc2hlbS1jb25maWd1cmUtYzk5LnBhdGNoIGIvc2xhc2hlbS1jb25m aWd1cmUtYzk5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTk4MGJiLi4w MDAwMDAwCi0tLSBhL3NsYXNoZW0tY29uZmlndXJlLWM5OS5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDE1ICswLDAgQEAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4 IGRjNWQ5M2YuLmFiN2FjYjggMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3Vy ZQotQEAgLTUyNjQsOCArNTI2NCw4IEBAIG1haW4gKCkKLSAgIGZvciAoaSA9IDA7IGkgPCAyNTY7 IGkrKykKLSAgICAgaWYgKFhPUiAoaXNsb3dlciAoaSksIElTTE9XRVIgKGkpKQotIAl8fCB0b3Vw cGVyIChpKSAhPSBUT1VQUEVSIChpKSkKLS0gICAgICBleGl0KDIpOwotLSAgZXhpdCAoMCk7Ci0r ICAgICAgcmV0dXJuIDI7Ci0rICByZXR1cm4gMDsKLSB9Ci0gX0FDRU9GCi0gcm0gLWYgY29uZnRl c3QkYWNfZXhlZXh0CgpkaWZmIC0tZ2l0IGEvc2xhc2hlbS1mb3JtYXQtc2VjdXJpdHkucGF0Y2gg Yi9zbGFzaGVtLWZvcm1hdC1zZWN1cml0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggOTE1Y2I2Yy4uMDAwMDAwMAotLS0gYS9zbGFzaGVtLWZvcm1hdC1zZWN1cml0eS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDE2MjIgKzAsMCBAQAotZGlmZiAtdXAgc2xhc2hlbS0wLjAu OEUwRjEvc3JjL2FwcGx5LmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9h cHBseS5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2FwcGx5LmMuZm9ybWF0LXNlY3VyaXR5 CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUw RjEvc3JjL2FwcGx5LmMJMjAxMy0xMi0wNCAwOTowNDoyNS4yNjg1MDI2MjggLTA3MDAKLUBAIC02 Niw3ICs2Niw3IEBAIHVzZV9jYW1lcmEob2JqKQotIAlpZighZ2V0ZGlyKChjaGFyICopMCkpIHJl dHVybigwKTsKLSAKLSAJaWYgKG9iai0+c3BlIDw9IDApIHsKLS0JCXBsaW5lKG5vdGhpbmdfaGFw cGVucyk7Ci0rCQlwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCQlyZXR1cm4gKDEpOwot IAl9Ci0gCWNvbnN1bWVfb2JqX2NoYXJnZShvYmosIFRSVUUpOwotQEAgLTEwMDUsNyArMTAwNSw3 IEBAIHN0cnVjdCBvYmogKipvcHRyOwotIAkJaWYgKCFvYmotPmN1cnNlZCkKLSAJCSAgICAodm9p ZCkgb3Blbml0KCk7Ci0gCQllbHNlCi0tCQkgICAgcGxpbmUobm90aGluZ19oYXBwZW5zKTsKLSsJ CSAgICBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCi0gCSAgICB9IGVsc2UgaWYgKG9i ai0+Y3Vyc2VkKSB7Ci0gCQljb29yZCBtbTsKLUBAIC0xMDM3LDcgKzEwMzcsNyBAQCBzdHJ1Y3Qg b2JqICoqb3B0cjsKLSAJCX0KLSAJCXJlcyArPSBvcGVuaXQoKTsKLSAJCXN3aXRjaCAocmVzKSB7 Ci0tCQkgIGNhc2UgMDogIHBsaW5lKG5vdGhpbmdfaGFwcGVucyk7IGJyZWFrOwotKwkJICBjYXNl IDA6ICBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7IGJyZWFrOwotIAkJICBjYXNlIDE6ICBw bGluZSgiJXMgb3BlbnMuLi4iLCBTb21ldGhpbmcpOwotIAkJCSAgIGxlYXJubyA9IFRSVUU7IGJy ZWFrOwotIAkJICBkZWZhdWx0OiBwbGluZSgiVGhpbmdzIG9wZW4gYXJvdW5kIHlvdS4uLiIpOwot QEAgLTEwNDksNyArMTA0OSw3IEBAIHN0cnVjdCBvYmogKipvcHRyOwotIAkJYW1paV9zcGVha2Vy KCBvYmosICJBZUZlYWVGZUFlZmVndyIsIEFNSUlfT0tBWV9WT0xVTUUgKTsKLSAjZW5kaWYKLSAJ CWlmIChmaW5kaXQoKSAhPSAwKSBsZWFybm8gPSBUUlVFOwotLQkJZWxzZSBwbGluZShub3RoaW5n X2hhcHBlbnMpOwotKwkJZWxzZSBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCSAgICB9 Ci0gCi0gCX0JLyogY2hhcmdlZCBCb2ZPICovCi1AQCAtMTEyMiw3ICsxMTIyLDcgQEAgc3RydWN0 IG9iaiAqKm9wdHI7Ci0gCWNoYXIgcWJ1ZltRQlVGU1pdOwotIAotIAlpZih1LnVzd2FsbG93KSB7 Ci0tCQlZb3Uobm9fZWxib3dfcm9vbSk7Ci0rCQlZb3UoIiVzIixub19lbGJvd19yb29tKTsKLSAJ CXJldHVybjsKLSAJfQotIAlpZihVbmRlcndhdGVyKSB7Ci1AQCAtMTM4OCw3ICsxMzg4LDcgQEAg c3RydWN0IG9iaiAqb2JqOwotIHsKLSAgICAgc3RydWN0IG9iaiAqb3RtcCA9IE5VTEw7Ci0gICAg IGlmICh1LnVzd2FsbG93KSB7Ci0tCVlvdShub19lbGJvd19yb29tKTsKLSsJWW91KCIlcyIsbm9f ZWxib3dfcm9vbSk7Ci0gCXJldHVybiAwOwotICAgICB9Ci0gICAgIGlmIChVbmRlcndhdGVyKSB7 Ci1AQCAtMTQyNCw3ICsxNDI0LDcgQEAgbGlnaHRfY29ja3RhaWwob2JqKQotICNlbmRpZgotIAot IAlpZiAodS51c3dhbGxvdykgewotLQkgICAgWW91KG5vX2VsYm93X3Jvb20pOwotKwkgICAgWW91 KCIlcyIsbm9fZWxib3dfcm9vbSk7Ci0gCSAgICByZXR1cm47Ci0gCX0KLSAKLUBAIC0xNTE3LDEy ICsxNTE3LDEyIEBAIGRvcnViKCkKLSAJCXVwZGF0ZV9pbnZlbnRvcnkoKTsKLSAJICAgIH0gZWxz ZSBpZiAocm4yKDIpICYmICFCbGluZCkKLSAJCVlvdSgic2VlIGEgcHVmZiBvZiBzbW9rZS4iKTsK LS0JICAgIGVsc2UgcGxpbmUobm90aGluZ19oYXBwZW5zKTsKLSsJICAgIGVsc2UgcGxpbmUoIiVz Iixub3RoaW5nX2hhcHBlbnMpOwotIAl9IGVsc2UgaWYgKG9iai0+b3R5cCA9PSBCUkFTU19MQU5U RVJOKSB7Ci0gCSAgICAvKiBtZXNzYWdlIGZyb20gQWR2ZW50dXJlICovCi0gCSAgICBwbGluZSgi UnViYmluZyB0aGUgZWxlY3RyaWMgbGFtcCBpcyBub3QgcGFydGljdWxhcmx5IHJld2FyZGluZy4i KTsKLSAJICAgIHBsaW5lKCJBbnl3YXksIG5vdGhpbmcgZXhjaXRpbmcgaGFwcGVucy4iKTsKLS0J fSBlbHNlIHBsaW5lKG5vdGhpbmdfaGFwcGVucyk7Ci0rCX0gZWxzZSBwbGluZSgiJXMiLG5vdGhp bmdfaGFwcGVucyk7Ci0gCXJldHVybiAxOwotIH0KLSAKLUBAIC0xNzc4LDEzICsxNzc4LDEzIEBA IHJlZ2lzdGVyIHN0cnVjdCBvYmogKm9iajsKLSAJICAgIGNhbi0+c3BlID0gLTE7ICAvKiBNYXJr IHRpbm5lZCB0aW5zLiBObyBzcGluYWNoIGFsbG93ZWQuLi4gKi8KLSAJICAgIGlmIChjYXJyaWVk KGNvcnBzZSkpIHsKLSAJCWlmIChjb3Jwc2UtPnVucGFpZCkKLS0JCSAgICB2ZXJiYWxpemUoeW91 X2J1eV9pdCk7Ci0rCQkgICAgdmVyYmFsaXplKCIlcyIseW91X2J1eV9pdCk7Ci0gCQl1c2V1cChj b3Jwc2UpOwotIAkgICAgfSBlbHNlIGlmIChtY2FycmllZChjb3Jwc2UpKSB7Ci0gCQltX3VzZXVw KGNvcnBzZS0+b2NhcnJ5LCBjb3Jwc2UpOwotIAkgICAgfSBlbHNlIHsKLSAJCWlmIChjb3N0bHlf c3BvdChjb3Jwc2UtPm94LCBjb3Jwc2UtPm95KSAmJiAhY29ycHNlLT5ub19jaGFyZ2UpCi0tCQkg ICAgdmVyYmFsaXplKHlvdV9idXlfaXQpOwotKwkJICAgIHZlcmJhbGl6ZSgiJXMiLHlvdV9idXlf aXQpOwotIAkJdXNldXBmKGNvcnBzZSwgMUwpOwotIAkgICAgfQotIAkgICAgY2FuID0gaG9sZF9h bm90aGVyX29iamVjdChjYW4sICJZb3UgbWFrZSwgYnV0IGNhbm5vdCBwaWNrIHVwLCAlcy4iLAot QEAgLTE4NjMsNyArMTg2Myw3IEBAIHN0cnVjdCBvYmogKm9iajsKLSAJfQotIAotIAlpZiAodHJv dWJsZV9jb3VudCA9PSAwKSB7Ci0tCSAgICBwbGluZShub3RoaW5nX2hhcHBlbnMpOwotKwkgICAg cGxpbmUoIiVzIixub3RoaW5nX2hhcHBlbnMpOwotIAkgICAgcmV0dXJuOwotIAl9IGVsc2UgaWYg KHRyb3VibGVfY291bnQgPiAxKSB7CQkvKiBzaHVmZmxlICovCi0gCSAgICBpbnQgaSwgaiwgazsK LUBAIC0yNDMyLDcgKzI0MzIsNyBAQCBzdHJ1Y3Qgb2JqICp0c3RvbmU7Ci0gICAgIH0KLSAKLSAg ICAgaWYgKEJsaW5kKSB7Ci0tCXBsaW5lKHNjcml0Y2gpOwotKwlwbGluZSgiJXMiLHNjcml0Y2gp OwotIAlyZXR1cm47Ci0gICAgIH0gZWxzZSBpZiAoSGFsbHVjaW5hdGlvbikgewotIAlwbGluZSgi T2ggd293LCBtYW46IEZyYWN0YWxzISIpOwotQEAgLTI1MTQsNyArMjUxNCw3IEBAIHN0cnVjdCBv YmogKnRzdG9uZTsKLSAgICAgZWxzZSBpZiAoc3RyZWFrX2NvbG9yKQotIAlwbGluZSgiWW91IHNl ZSAlcyBzdHJlYWtzIG9uIHRoZSAlcy4iLCBzdHJlYWtfY29sb3IsIHN0b25lYnVmKTsKLSAgICAg ZWxzZQotLQlwbGluZShzY3JpdGNoKTsKLSsJcGxpbmUoIiVzIixzY3JpdGNoKTsKLSAgICAgcmV0 dXJuOwotIH0KLSAKLUBAIC0yNzIwLDcgKzI3MjAsNyBAQCBzdHJ1Y3Qgb2JqICpvYmo7Ci0gCQlZ b3UoIndyYXAgeW91ciBidWxsd2hpcCBhcm91bmQgJXMgb24gdGhlICVzLiIsCi0gCQkgICAgYW4o c2luZ3VsYXIob3RtcCwgeG5hbWUpKSwgc3VyZmFjZSh1LnV4LCB1LnV5KSk7Ci0gCQlpZiAocm5s KDYpIHx8IHBpY2t1cF9vYmplY3Qob3RtcCwgMUwsIFRSVUUpIDwgMSkKLS0JCSAgICBwbGluZSht c2dfc2xpcHNmcmVlKTsKLSsJCSAgICBwbGluZSgiJXMiLG1zZ19zbGlwc2ZyZWUpOwotIAkJcmV0 dXJuIDE7Ci0gCSAgICB9Ci0gCX0KLUBAIC0yNzYxLDcgKzI3NjEsNyBAQCBzdHJ1Y3Qgb2JqICpv Ymo7Ci0gCQl3cmFwcGVkX3doYXQgPSBzdHJjcHkoYnVmLCBtb25fbmFtKG10bXApKTsKLSAJICAg IH0gZWxzZSBpZiAocHJvZmljaWVudCkgewotIAkJaWYgKGF0dGFjayhtdG1wKSkgcmV0dXJuIDE7 Ci0tCQllbHNlIHBsaW5lKG1zZ19zbmFwKTsKLSsJCWVsc2UgcGxpbmUoIiVzIixtc2dfc25hcCk7 Ci0gCSAgICB9Ci0gCX0KLSAJaWYgKCF3cmFwcGVkX3doYXQpIHsKLUBAIC0yNzgzLDEwICsyNzgz LDEwIEBAIHN0cnVjdCBvYmogKm9iajsKLSAJCSAgICB2aXNpb25fZnVsbF9yZWNhbGMgPSAxOwot IAkJfQotIAkgICAgfSBlbHNlIHsKLS0JCXBsaW5lKG1zZ19zbGlwc2ZyZWUpOwotKwkJcGxpbmUo IiVzIixtc2dfc2xpcHNmcmVlKTsKLSAJICAgIH0KLSAJICAgIGlmIChtdG1wKSB3YWtldXAobXRt cCk7Ci0tCX0gZWxzZSBwbGluZShtc2dfc25hcCk7Ci0rCX0gZWxzZSBwbGluZSgiJXMiLG1zZ19z bmFwKTsKLSAKLSAgICAgfSBlbHNlIGlmIChtdG1wKSB7Ci0gCWlmICghY2Fuc3BvdG1vbihtdG1w KSAmJgotQEAgLTI4NzgsNyArMjg3OCw3IEBAIHN0cnVjdCBvYmogKm9iajsKLSAJCSAgICBicmVh azsKLSAJCX0KLSAJICAgIH0gZWxzZSB7Ci0tCQlwbGluZShtc2dfc2xpcHNmcmVlKTsKLSsJCXBs aW5lKCIlcyIsbXNnX3NsaXBzZnJlZSk7Ci0gCSAgICB9Ci0gCSAgICB3YWtldXAobXRtcCk7Ci0g CX0gZWxzZSB7Ci1AQCAtMjg4OCw3ICsyODg4LDcgQEAgc3RydWN0IG9iaiAqb2JqOwotIAkgICAg ZWxzZSBZb3UoImZsaWNrIHlvdXIgYnVsbHdoaXAgdG93YXJkcyAlcy4iLCBtb25fbmFtKG10bXAp KTsKLSAJICAgIGlmIChwcm9maWNpZW50KSB7Ci0gCQlpZiAoYXR0YWNrKG10bXApKSByZXR1cm4g MTsKLS0JCWVsc2UgcGxpbmUobXNnX3NuYXApOwotKwkJZWxzZSBwbGluZSgiJXMiLG1zZ19zbmFw KTsKLSAJICAgIH0KLSAJfQotIAotQEAgLTI4OTcsNyArMjg5Nyw3IEBAIHN0cnVjdCBvYmogKm9i ajsKLSAJICAgIFlvdSgic25hcCB5b3VyIHdoaXAgdGhyb3VnaCB0aGluIGFpci4iKTsKLSAKLSAg ICAgfSBlbHNlIHsKLS0JcGxpbmUobXNnX3NuYXApOwotKwlwbGluZSgiJXMiLG1zZ19zbmFwKTsK LSAKLSAgICAgfQotICAgICByZXR1cm4gMTsKLUBAIC0yOTI1LDcgKzI5MjUsNyBAQCB1c2VfcG9s ZSAob2JqKQotIAotIAkvKiBBcmUgeW91IGFsbG93ZWQgdG8gdXNlIHRoZSBwb2xlPyAqLwotIAlp ZiAodS51c3dhbGxvdykgewotLQkgICAgcGxpbmUobm90X2Vub3VnaF9yb29tKTsKLSsJICAgIHBs aW5lKCIlcyIsbm90X2Vub3VnaF9yb29tKTsKLSAJICAgIHJldHVybiAoMCk7Ci0gCX0KLSAJaWYg KG9iaiAhPSB1d2VwKSB7Ci1AQCAtMjkzNCw3ICsyOTM0LDcgQEAgdXNlX3BvbGUgKG9iaikKLSAJ fQotIAotIAkvKiBQcm9tcHQgZm9yIGEgbG9jYXRpb24gKi8KLS0JcGxpbmUod2hlcmVfdG9faGl0 KTsKLSsJcGxpbmUoIiVzIix3aGVyZV90b19oaXQpOwotIAljYy54ID0gdS51eDsKLSAJY2MueSA9 IHUudXk7Ci0gCWlmIChnZXRwb3MoJmNjLCBUUlVFLCAidGhlIHNwb3QgdG8gaGl0IikgPCAwKQot QEAgLTI5NTksMTAgKzI5NTksMTAgQEAgdXNlX3BvbGUgKG9iaikKLSAJfSBlbHNlIGlmICghY2Fu c2VlKGNjLngsIGNjLnkpICYmCi0gCQkgICAoKG10bXAgPSBtX2F0KGNjLngsIGNjLnkpKSA9PSAo c3RydWN0IG1vbnN0ICopMCB8fAotIAkJICAgICFjYW5zZWVtb24obXRtcCkpKSB7Ci0tCSAgICBZ b3UoY2FudF9zZWVfc3BvdCk7Ci0rCSAgICBZb3UoIiVzIixjYW50X3NlZV9zcG90KTsKLSAJICAg IHJldHVybiAocmVzKTsKLSAJfSBlbHNlIGlmICghY291bGRzZWUoY2MueCwgY2MueSkpIHsgLyog RXllcyBvZiB0aGUgT3ZlcndvcmxkICovCi0tCSAgICBZb3UoY2FudF9yZWFjaCk7Ci0rCSAgICBZ b3UoIiVzIixjYW50X3JlYWNoKTsKLSAJICAgIHJldHVybiByZXM7Ci0gCX0KLSAKLUBAIC0zMDY5 LDcgKzMwNjksNyBAQCB1c2VfcG9sZSAob2JqKQotIAkJdS51Y29uZHVjdC53ZWFwaGl0Kys7Ci0g CX0gZWxzZQotIAkgICAgLyogTm93IHlvdSBrbm93IHRoYXQgbm90aGluZyBpcyB0aGVyZS4uLiAq LwotLQkgICAgcGxpbmUobm90aGluZ19oYXBwZW5zKTsKLSsJICAgIHBsaW5lKCIlcyIsbm90aGlu Z19oYXBwZW5zKTsKLSAJcmV0dXJuICgxKTsKLSB9Ci0gCi1AQCAtMzEyMyw3ICszMTIzLDcgQEAg dXNlX2dyYXBwbGUgKG9iaikKLSAKLSAJLyogQXJlIHlvdSBhbGxvd2VkIHRvIHVzZSB0aGUgaG9v az8gKi8KLSAJaWYgKHUudXN3YWxsb3cpIHsKLS0JICAgIHBsaW5lKG5vdF9lbm91Z2hfcm9vbSk7 Ci0rCSAgICBwbGluZSgiJXMiLG5vdF9lbm91Z2hfcm9vbSk7Ci0gCSAgICByZXR1cm4gKDApOwot IAl9Ci0gCWlmIChvYmogIT0gdXdlcCkgewotQEAgLTMxMzMsNyArMzEzMyw3IEBAIHVzZV9ncmFw cGxlIChvYmopCi0gICAgICAvKiBhc3NlcnQob2JqID09IHV3ZXApOyAqLwotIAotIAkvKiBQcm9t cHQgZm9yIGEgbG9jYXRpb24gKi8KLS0JcGxpbmUod2hlcmVfdG9faGl0KTsKLSsJcGxpbmUoIiVz Iix3aGVyZV90b19oaXQpOwotIAljYy54ID0gdS51eDsKLSAJY2MueSA9IHUudXk7Ci0gCWlmIChn ZXRwb3MoJmNjLCBUUlVFLCAidGhlIHNwb3QgdG8gaGl0IikgPCAwKQotQEAgLTMxNDgsNyArMzE0 OCw3IEBAIHVzZV9ncmFwcGxlIChvYmopCi0gCQlwbGluZSgiVG9vIGZhciEiKTsKLSAJCXJldHVy biAocmVzKTsKLSAJfSBlbHNlIGlmICghY2Fuc2VlKGNjLngsIGNjLnkpKSB7Ci0tCQlZb3UoY2Fu dF9zZWVfc3BvdCk7Ci0rCQlZb3UoIiVzIixjYW50X3NlZV9zcG90KTsKLSAJCXJldHVybiAocmVz KTsKLSAJfQotIAotQEAgLTMyMjgsNyArMzIyOCw3IEBAIHVzZV9ncmFwcGxlIChvYmopCi0gCSAg ICB9Ci0gCSAgICBicmVhazsKLSAJfQotLQlwbGluZShub3RoaW5nX2hhcHBlbnMpOwotKwlwbGlu ZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCXJldHVybiAoMSk7Ci0gfQotIAotQEAgLTMzMDQs NyArMzMwNCw3IEBAIHdhbmRfZXhwbG9kZShvYmosIGhlcm9fYnJva2UpCi0gICAgIHNldG5vdHdv cm4ob2JqKTsJCS8qIHNvIHdlIG5lZWQgdG8gZG8gdGhpcyBvdXJzZWx2ZXMgKi8KLSAKLSAgICAg aWYgKG9iai0+c3BlIDw9IDApIHsKLS0JcGxpbmUobm90aGluZ19lbHNlX2hhcHBlbnMpOwotKwlw bGluZSgiJXMiLG5vdGhpbmdfZWxzZV9oYXBwZW5zKTsKLSAJZ290byBkaXNjYXJkX2Jyb2tlbl93 YW5kOwotICAgICB9Ci0gICAgIG9iai0+b3ggPSB1LnV4OwotQEAgLTMzMjAsNyArMzMyMCw3IEBA IHdhbmRfZXhwbG9kZShvYmosIGhlcm9fYnJva2UpCi0gICAgIGNhc2UgV0FOX0VOTElHSFRFTk1F TlQ6Ci0gICAgIGNhc2UgV0FOX09QRU5JTkc6Ci0gICAgIGNhc2UgV0FOX1NFQ1JFVF9ET09SX0RF VEVDVElPTjoKLS0JcGxpbmUobm90aGluZ19lbHNlX2hhcHBlbnMpOwotKwlwbGluZSgiJXMiLG5v dGhpbmdfZWxzZV9oYXBwZW5zKTsKLSAJZ290byBkaXNjYXJkX2Jyb2tlbl93YW5kOwotICAgICBj YXNlIFdBTl9ERUFUSDoKLSAgICAgY2FzZSBXQU5fTElHSFROSU5HOgotQEAgLTM3OTgsNyArMzc5 OCw3IEBAIGRvYXBwbHkoKQotIAkJCQlpZiAodS51aHAgPiB1LnVocG1heCkgdS51aHAgPSB1LnVo cG1heDsKLSAJCQkJWW91X2ZlZWwoImJldHRlci4iKTsKLSAJCQkJZmxhZ3MuYm90bCA9IFRSVUU7 Ci0tCQkJICAgIH0gZWxzZSBwbGluZShub3RoaW5nX2hhcHBlbnMpOwotKwkJCSAgICB9IGVsc2Ug cGxpbmUoIiVzIixub3RoaW5nX2hhcHBlbnMpOwotIAkJCX0gZWxzZSBpZiAoIXJuMigzKSkKLSAJ CQkgICAgcGxpbmUoIk5vdGhpbmcgc2VlbXMgdG8gaGFwcGVuLiIpOwotIAkJCWVsc2UgaWYgKCFT aWNrKQotQEAgLTM4NDYsNyArMzg0Niw3IEBAIGRvYXBwbHkoKQotIAkJCQkJICAgICAgIChjb25z dCBjaGFyICopMCk7Ci0gCQkgICAgbWFrZWtub3duKEhPUk5fT0ZfUExFTlRZKTsKLSAJCX0gZWxz ZQotLQkJICAgIHBsaW5lKG5vdGhpbmdfaGFwcGVucyk7Ci0rCQkgICAgcGxpbmUoIiVzIixub3Ro aW5nX2hhcHBlbnMpOwotIAkJYnJlYWs7Ci0gCWNhc2UgTEFORF9NSU5FOgotIAljYXNlIEJFQVJU UkFQOgotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2FydGlmYWN0LmMuZm9ybWF0LXNl Y3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9hcnRpZmFjdC5jCi0tLS0gc2xhc2hlbS0wLjAu OEUwRjEvc3JjL2FydGlmYWN0LmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAgMDY6MDQ6NTMu MDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2FydGlmYWN0LmMJMjAx My0xMi0wNCAwOToyNzozMS4wODAzOTMxNjIgLTA3MDAKLUBAIC0xNDc4LDcgKzE0NzgsNyBAQCBh cnRpX2ludm9rZShvYmopCi0gCWlmKG9iai0+b3R5cCA9PSBDUllTVEFMX0JBTEwpCi0gCSAgICB1 c2VfY3J5c3RhbF9iYWxsKG9iaik7Ci0gCWVsc2UKLS0JICAgIHBsaW5lKG5vdGhpbmdfaGFwcGVu cyk7Ci0rCSAgICBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCXJldHVybiAxOwotICAg ICB9Ci0gCi1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvYm90bC5jLmZvcm1hdC1zZWN1 cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvYm90bC5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEv c3JjL2JvdGwuYy5mb3JtYXQtc2VjdXJpdHkJMjAxMy0xMi0wNCAwODozNzozNy40NzA5OTIwMzMg LTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvYm90bC5jCTIwMTMtMTItMDQgMDg6Mzg6 MjYuMjYwNzAzNDczIC0wNzAwCi1AQCAtMjI0LDkgKzIyNCw5IEBAIGJvdGxfcGxheWVyKCkKLSAJ CQltYm90W2tdICs9ICdBJyAtICdhJzsKLSAJCSAgICBrKys7Ci0gCQl9Ci0tCVNwcmludGYoZW9z KG5iKSwgbWJvdCk7Ci0rCVNwcmludGYoZW9zKG5iKSwgIiVzIiwgbWJvdCk7Ci0gCX0gZWxzZQot LQlTcHJpbnRmKGVvcyhuYiksIHJhbmsoKSk7Ci0rCVNwcmludGYoZW9zKG5iKSwgIiVzIiwgcmFu aygpKTsKLSAgICAgcmV0dXJuIHBsYXllcjsKLSB9Ci0gCi1kaWZmIC11cCBzbGFzaGVtLTAuMC44 RTBGMS9zcmMvY21kLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9jbWQu YwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9jbWQuYy5mb3JtYXQtc2VjdXJpdHkJMjAwNi0x Mi0zMCAwNjowNDo1My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMv Y21kLmMJMjAxMy0xMi0wNCAwODo0MDo1MC43MDU5MDM0ODUgLTA3MDAKLUBAIC04NjMsNyArODYz LDcgQEAgc3BlY2lhbHBvd2VyKCkgICAgICAvKiBTcGVjaWFsIGNsYXNzIGFiaQotIAkJCWVsc2Ug ICAgIHUudWhwICs9ICh1LnVsZXZlbCAqIDQpOwotIAkJCWlmICh1LnVocCA+IHUudWhwbWF4KSB1 LnVocCA9IHUudWhwbWF4OwotIAkJCXUudW5leHR1c2UgPSAzMDAwOwotLQkJfSBlbHNlIHBsaW5l KG5vdGhpbmdfaGFwcGVucyk7Ci0rCQl9IGVsc2UgcGxpbmUoIiVzIixub3RoaW5nX2hhcHBlbnMp OwotIAkJYnJlYWs7Ci0gCSAgICBjYXNlICdTJzoKLSAJCVlvdSgic2NyZWFtIFwiS0lJSUxMTCFc IiIpOwotQEAgLTEwMzMsNyArMTAzMyw3IEBAIHdpel9sZXZlbF9jaGFuZ2UoKQotICAgICBlbHNl IHJldCA9IHNzY2FuZihidWYsICIlZCIsICZuZXdsZXZlbCk7Ci0gCi0gICAgIGlmIChyZXQgIT0g MSkgewotLQlwbGluZShOZXZlcl9taW5kKTsKLSsJcGxpbmUoIiVzIixOZXZlcl9taW5kKTsKLSAJ cmV0dXJuIDA7Ci0gICAgIH0KLSAgICAgaWYgKG5ld2xldmVsID09IHUudWxldmVsKSB7Ci1AQCAt MzMwMyw3ICszMzAzLDcgQEAgY29vcmQgKmNjOwotIHsKLSAJeGNoYXIgbmV3X3gsIG5ld195Owot IAlpZiAoIWdldGRpcihwcm9tcHQpKSB7Ci0tCQlwbGluZShOZXZlcl9taW5kKTsKLSsJCXBsaW5l KCIlcyIsTmV2ZXJfbWluZCk7Ci0gCQlyZXR1cm4gMDsKLSAJfQotIAluZXdfeCA9IHggKyB1LmR4 OwotQEAgLTMzMTIsNyArMzMxMiw3IEBAIGNvb3JkICpjYzsKLSAJCWNjLT54ID0gbmV3X3g7Ci0g CQljYy0+eSA9IG5ld195OwotIAl9IGVsc2UgewotLQkJaWYgKGVtc2cpIHBsaW5lKGVtc2cpOwot KwkJaWYgKGVtc2cpIHBsaW5lKCIlcyIsZW1zZyk7Ci0gCQlyZXR1cm4gMDsKLSAJfQotIAlyZXR1 cm4gMTsKLUBAIC0zNjI1LDcgKzM2MjUsNyBAQCBwYXJzZSgpCi0gCQkgICAgaWYgKG11bHRpID4g OSkgewotIAkJCWNsZWFyX25od2luZG93KFdJTl9NRVNTQUdFKTsKLSAJCQlTcHJpbnRmKGluX2xp bmUsICJDb3VudDogJWQiLCBtdWx0aSk7Ci0tCQkJcGxpbmUoaW5fbGluZSk7Ci0rCQkJcGxpbmUo IiVzIixpbl9saW5lKTsKLSAJCQltYXJrX3N5bmNoKCk7Ci0gCQkgICAgfQotIAkJICAgIGxhc3Rf bXVsdGkgPSBtdWx0aTsKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9kZXRlY3QuYy5m b3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2RldGVjdC5jCi0tLS0gc2xhc2hl bS0wLjAuOEUwRjEvc3JjL2RldGVjdC5jLmZvcm1hdC1zZWN1cml0eQkyMDEzLTEyLTA0IDA4OjQy OjEyLjUwMzQ2OTU1NyAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9kZXRlY3QuYwky MDEzLTEyLTA0IDA4OjQ2OjQ2LjA1MjQ5NjI2NiAtMDcwMAotQEAgLTgyMyw3ICs4MjMsNyBAQCBz dHJ1Y3Qgb2JqICpvYmo7Ci0gCWNhc2UgMyA6IGlmICghcmVzaXN0c19ibG5kKCZ5b3Vtb25zdCkp IHsKLSAJCXBsaW5lKCIlcyB5b3VyIHZpc2lvbiEiLCBUb2JqbmFtKG9iaiwgImRhbWFnZSIpKTsK LSAJCW1ha2VfYmxpbmRlZChCbGluZGVkICsgcm5kKDEwMCksRkFMU0UpOwotLQkJaWYgKCFCbGlu ZCkgWW91cih2aXNpb25fY2xlYXJzKTsKLSsJCWlmICghQmxpbmQpIFlvdXIoIiVzIix2aXNpb25f Y2xlYXJzKTsKLSAJICAgIH0gZWxzZSB7Ci0gCQlwbGluZSgiJXMgeW91ciB2aXNpb24uIiwgVG9i am5hbShvYmosICJhc3NhdWx0IikpOwotIAkJWW91KCJhcmUgdW5hZmZlY3RlZCEiKTsKLUBAIC04 NzIsNyArODcyLDcgQEAgc3RydWN0IG9iaiAqb2JqOwotICAgICBjaCA9IHluX2Z1bmN0aW9uKCJX aGF0IGRvIHlvdSBsb29rIGZvcj8iLCAoY2hhciAqKTAsICdcMCcpOwotICAgICAvKiBEb24ndCBm aWx0ZXIgb3V0ICcgJyBoZXJlOyBpdCBoYXMgYSB1c2UgKi8KLSAgICAgaWYgKChjaCAhPSBkZWZf bW9uc3ltc1tTX0dIT1NUXSkgJiYgaW5kZXgocXVpdGNoYXJzLGNoKSkgeyAKLS0JaWYgKGZsYWdz LnZlcmJvc2UpIHBsaW5lKE5ldmVyX21pbmQpOwotKwlpZiAoZmxhZ3MudmVyYm9zZSkgcGxpbmUo IiVzIixOZXZlcl9taW5kKTsKLSAJcmV0dXJuOwotICAgICB9Ci0gICAgIFlvdSgicGVlciBpbnRv ICVzLi4uIiwgdGhlKHhuYW1lKG9iaikpKTsKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3Ny Yy9kaWcuYy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2RpZy5jCi0tLS0g c2xhc2hlbS0wLjAuOEUwRjEvc3JjL2RpZy5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMwIDA2 OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9kaWcuYwky MDEzLTEyLTA0IDA4OjQzOjQ4LjY4OTExNzczNSAtMDcwMAotQEAgLTQxNiw3ICs0MTYsNyBAQCBk aWcoKQotIAkJICAgIGZlZWxfbG9jYXRpb24oZHB4LCBkcHkpOwotIAkJZWxzZQotIAkJICAgIG5l d3N5bShkcHgsIGRweSk7Ci0tCQlpZihkaWd0eHQgJiYgIWRpZ2dpbmcucXVpZXQpIHBsaW5lKGRp Z3R4dCk7IC8qIGFmdGVyIG5ld3N5bSAqLwotKwkJaWYoZGlndHh0ICYmICFkaWdnaW5nLnF1aWV0 KSBwbGluZSgiJXMiLGRpZ3R4dCk7IC8qIGFmdGVyIG5ld3N5bSAqLwotIAkJaWYoZG1ndHh0KQot IAkJICAgIHBheV9mb3JfZGFtYWdlKGRtZ3R4dCwgRkFMU0UpOwotIAotQEAgLTY1NSw3ICs2NTUs NyBAQCBpbnQgdHR5cDsKLSAJCQlzY2hlZHVsZV9nb3RvKCZuZXdsZXZlbCwgRkFMU0UsIFRSVUUs IEZBTFNFLAotIAkJCSAgWW91X2ZhbGwsIChjaGFyICopMCk7Ci0gCQkgICAgfSBlbHNlIHsKLS0J CQlwbGluZShZb3VfZmFsbCk7Ci0rCQkJcGxpbmUoIiVzIixZb3VfZmFsbCk7Ci0gCQkgICAgZ290 b19sZXZlbCgmbmV3bGV2ZWwsIEZBTFNFLCBUUlVFLCBGQUxTRSk7Ci0gCQkgICAgLyogbWVzc2Fn ZXMgZm9yIGFycml2aW5nIGluIHNwZWNpYWwgcm9vbXMgKi8KLSAJCSAgICBzcG90ZWZmZWN0cyhG QUxTRSk7Ci1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvZG8uYy5mb3JtYXQtc2VjdXJp dHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2RvLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMv ZG8uYy5mb3JtYXQtc2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1My4wMDAwMDAwMDAgLTA3MDAK LSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvZG8uYwkyMDEzLTEyLTA0IDA4OjM1OjE1Ljc0NTg0 MDI3OSAtMDcwMAotQEAgLTEzNjUsNyArMTM2NSw3IEBAIGJvb2xlYW4gYXRfc3RhaXJzLCBmYWxs aW5nLCBwb3J0YWw7Ci0gCQlTcHJpbnRmKGJ1ZiwgbWVzZywgIUJsaW5kID8gImxvb2tzIiA6ICJz ZWVtcyIpOwotIAkJbWVzZyA9IGJ1ZjsKLSAJICAgIH0KLS0JICAgIGlmIChtZXNnKSBwbGluZSht ZXNnKTsKLSsJICAgIGlmIChtZXNnKSBwbGluZSgiJXMiLG1lc2cpOwotIAl9Ci0gCi0gI2lmZGVm IFJFSU5DQVJOQVRJT04KLUBAIC0xNTEzLDcgKzE1MTMsNyBAQCBkZWZlcnJlZF9nb3RvKCkKLSAJ ICAgIGludCB0eXBtYXNrID0gdS51dG90eXBlOyAvKiBzYXZlIGl0OyBnb3RvX2xldmVsIHplcm9l cyB1LnV0b3R5cGUgKi8KLSAKLSAJICAgIGFzc2lnbl9sZXZlbCgmZGVzdCwgJnUudXRvbGV2KTsK LS0JICAgIGlmIChkZnJfcHJlX21zZykgcGxpbmUoZGZyX3ByZV9tc2cpOwotKwkgICAgaWYgKGRm cl9wcmVfbXNnKSBwbGluZSgiJXMiLGRmcl9wcmVfbXNnKTsKLSAJICAgIGdvdG9fbGV2ZWwoJmRl c3QsICEhKHR5cG1hc2smMSksICEhKHR5cG1hc2smMiksICEhKHR5cG1hc2smNCkpOwotIAkgICAg aWYgKHR5cG1hc2sgJiAwMjAwKSB7CS8qIHJlbW92ZSBwb3J0YWwgKi8KLSAJCXN0cnVjdCB0cmFw ICp0ID0gdF9hdCh1LnV4LCB1LnV5KTsKLUBAIC0xNTIzLDcgKzE1MjMsNyBAQCBkZWZlcnJlZF9n b3RvKCkKLSAJCSAgICBuZXdzeW0odS51eCwgdS51eSk7Ci0gCQl9Ci0gCSAgICB9Ci0tCSAgICBp ZiAoZGZyX3Bvc3RfbXNnKSBwbGluZShkZnJfcG9zdF9tc2cpOwotKwkgICAgaWYgKGRmcl9wb3N0 X21zZykgcGxpbmUoIiVzIixkZnJfcG9zdF9tc2cpOwotIAl9Ci0gCXUudXRvdHlwZSA9IDA7CQkv KiBvdXIgY2FsbGVyIGtleXMgb2ZmIG9mIHRoaXMgKi8KLSAJaWYgKGRmcl9wcmVfbXNnKQotZGlm ZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2RvdGhyb3cuYy5mb3JtYXQtc2VjdXJpdHkgc2xh c2hlbS0wLjAuOEUwRjEvc3JjL2RvdGhyb3cuYwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9k b3Rocm93LmMuZm9ybWF0LXNlY3VyaXR5CTIwMTMtMTItMDQgMDg6NDI6MTIuNTA3NDY5NTM1IC0w NzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2RvdGhyb3cuYwkyMDEzLTEyLTA0IDA4OjQ5 OjA5Ljg0MDkyODk2MyAtMDcwMAotQEAgLTg5OSw3ICs4OTksNyBAQCBib29sZWFuIGhpdHNyb29m OwotIAkJCXBsaW5lKCJJdCBibGluZHMgeW91ISIpOwotIAkJICAgIHUudWNyZWFtZWQgKz0gYmxp bmRpbmM7Ci0gCQkgICAgbWFrZV9ibGluZGVkKEJsaW5kZWQgKyAobG9uZylibGluZGluYywgRkFM U0UpOwotLQkJICAgIGlmICghQmxpbmQpIFlvdXIodmlzaW9uX2NsZWFycyk7Ci0rCQkgICAgaWYg KCFCbGluZCkgWW91cigiJXMiLHZpc2lvbl9jbGVhcnMpOwotIAkJfQotIAkJYnJlYWs7Ci0gCWRl ZmF1bHQ6Ci1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvZHVuZ2Vvbi5jLmZvcm1hdC1z ZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvZHVuZ2Vvbi5jCi0tLS0gc2xhc2hlbS0wLjAu OEUwRjEvc3JjL2R1bmdlb24uYy5mb3JtYXQtc2VjdXJpdHkJMjAxMy0xMi0wNCAwODo1MTo0MC45 OTkyNzQyMDggLTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvZHVuZ2Vvbi5jCTIwMTMt MTItMDQgMDg6NTE6NTguNTc1MTg5MDI4IC0wNzAwCi1AQCAtNjc4LDcgKzY3OCw3IEBAIGluaXRf ZHVuZ2VvbnMoKQotIAkgICAgaW50ZXJqZWN0X2Fzc2lzdGFuY2UoMSwgSU5URVJKRUNUX1BBTklD LCAoZ2VuZXJpY3B0cl90KXRidWYsCi0gCQkJCSAoZ2VuZXJpY3B0cl90KWZxbl9wcmVmaXhbREFU QVBSRUZJWF0pOwotICNlbmRpZgotLQkgICAgcGFuaWModGJ1Zik7Ci0rCSAgICBwYW5pYygiJXMi LHRidWYpOwotIAl9Ci0gCi0gCS8qIHZhbGlkYXRlIHRoZSBkYXRhJ3MgdmVyc2lvbiBhZ2FpbnN0 IHRoZSBwcm9ncmFtJ3MgdmVyc2lvbiAqLwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3Jj L2VhdC5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvZWF0LmMKLS0tLSBz bGFzaGVtLTAuMC44RTBGMS9zcmMvZWF0LmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAgMDY6 MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2VhdC5jCTIw MTMtMTItMDQgMDg6NDk6MzMuMDU2ODMzMTIxIC0wNzAwCi1AQCAtNDcxLDcgKzQ3MSw3IEBAIGJv b2xlYW4gbWVzc2FnZTsKLSAJb2NjdXBhdGlvbiA9IDA7IC8qIGRvIHRoaXMgZWFybHksIHNvIG5l d3VocygpIGtub3dzIHdlJ3JlIGRvbmUgKi8KLSAJbmV3dWhzKEZBTFNFKTsKLSAJaWYgKG5vbW92 ZW1zZykgewotLQkJaWYgKG1lc3NhZ2UpIHBsaW5lKG5vbW92ZW1zZyk7Ci0rCQlpZiAobWVzc2Fn ZSkgcGxpbmUoIiVzIixub21vdmVtc2cpOwotIAkJbm9tb3ZlbXNnID0gMDsKLSAJfSBlbHNlIGlm IChtZXNzYWdlKQotIAkJWW91KCJmaW5pc2ggJXMgJXMuIiwgdmljdHVhbC5waWVjZS0+b2RyYWlu ZWQgPyAiZHJhaW5pbmciIDoKLUBAIC0xNDQzLDcgKzE0NDMsNyBAQCBzdHJ1Y3Qgb2JqICpvYmo7 Ci0gCX0gZWxzZSBpZighcm4yKDQpICYmICFCbGluZCkgewotIAkJcGxpbmUoIkV2ZXJ5dGhpbmcg c3VkZGVubHkgZ29lcyBkYXJrLiIpOwotIAkJbWFrZV9ibGluZGVkKChsb25nKWQoMiwxMCksRkFM U0UpOwotLQkJaWYgKCFCbGluZCkgWW91cih2aXNpb25fY2xlYXJzKTsKLSsJCWlmICghQmxpbmQp IFlvdXIoIiVzIix2aXNpb25fY2xlYXJzKTsKLSAJfSBlbHNlIGlmKCFybjIoMykpIHsKLSAJCWNv bnN0IGNoYXIgKndoYXQsICp3aGVyZTsKLSAJCWlmICghQmxpbmQpCi1kaWZmIC11cCBzbGFzaGVt LTAuMC44RTBGMS9zcmMvZW5ncmF2ZS5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBG MS9zcmMvZW5ncmF2ZS5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2VuZ3JhdmUuYy5mb3Jt YXQtc2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzbGFz aGVtLTAuMC44RTBGMS9zcmMvZW5ncmF2ZS5jCTIwMTMtMTItMDQgMDg6NDk6MjcuMDk1ODU3Nzk5 IC0wNzAwCi1AQCAtOTgyLDcgKzk4Miw3IEBAIGRvZW5ncmF2ZSgpCi0gCQljID0geW5fZnVuY3Rp b24oIkRvIHlvdSB3YW50IHRvIGFkZCB0byB0aGUgY3VycmVudCBlbmdyYXZpbmc/IiwKLSAJCQkJ eW5xY2hhcnMsICd5Jyk7Ci0gCQlpZiAoYyA9PSAncScpIHsKLS0JCSAgICBwbGluZShOZXZlcl9t aW5kKTsKLSsJCSAgICBwbGluZSgiJXMiLE5ldmVyX21pbmQpOwotIAkJICAgIHJldHVybigwKTsK LSAJCX0KLSAJICAgIH0KLUBAIC0xMDc1LDcgKzEwNzUsNyBAQCBkb2VuZ3JhdmUoKQotIAkJCSAg VG9iam5hbShvdG1wLCAiZ2xvdyIpLCBvdGVuc2Uob3RtcCwgImZhZGUiKSk7Ci0gCQlyZXR1cm4o MSk7Ci0gCSAgICB9IGVsc2UgewotLQkJcGxpbmUoTmV2ZXJfbWluZCk7Ci0rCQlwbGluZSgiJXMi LE5ldmVyX21pbmQpOwotIAkJcmV0dXJuKDApOwotIAkgICAgfQotIAl9Ci1AQCAtMTE5MiwxMiAr MTE5MiwxMiBAQCBkb2VuZ3JhdmUoKQotIAotIAltYWtlX2VuZ3JfYXQodS51eCwgdS51eSwgYnVm LCAobW92ZXMgLSBtdWx0aSksIHR5cGUpOwotIAotLQlpZiAocG9zdF9lbmdyX3RleHRbMF0pIHBs aW5lKHBvc3RfZW5ncl90ZXh0KTsKLSsJaWYgKHBvc3RfZW5ncl90ZXh0WzBdKSBwbGluZSgiJXMi LHBvc3RfZW5ncl90ZXh0KTsKLSAKLSAJaWYgKGRvYmxpbmQgJiYgIXJlc2lzdHNfYmxuZCgmeW91 bW9uc3QpKSB7Ci0gCSAgICBZb3UoImFyZSBibGluZGVkIGJ5IHRoZSBmbGFzaCEiKTsKLSAJICAg IG1ha2VfYmxpbmRlZCgobG9uZylybmQoNTApLEZBTFNFKTsKLS0JICAgIGlmICghQmxpbmQpIFlv dXIodmlzaW9uX2NsZWFycyk7Ci0rCSAgICBpZiAoIUJsaW5kKSBZb3VyKCIlcyIsdmlzaW9uX2Ns ZWFycyk7Ci0gCX0KLSAKLSAJcmV0dXJuKDEpOwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEv c3JjL2hhY2suYy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2hhY2suYwot LS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9oYWNrLmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTIt MzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2hh Y2suYwkyMDEzLTEyLTA0IDA4OjU5OjUzLjIwMTg3NDY0MSAtMDcwMAotQEAgLTc1NCw3ICs3NTQs NyBAQCBzdGlsbF9jaGV3aW5nKHgseSkKLSAKLSAgICAgdW5ibG9ja19wb2ludCh4LCB5KTsJLyog dmlzaW9uICovCi0gICAgIG5ld3N5bSh4LCB5KTsKLS0gICAgaWYgKGRpZ3R4dCkgWW91KGRpZ3R4 dCk7CS8qIGFmdGVyIG5ld3N5bSAqLwotKyAgICBpZiAoZGlndHh0KSBZb3UoIiVzIixkaWd0eHQp OwkvKiBhZnRlciBuZXdzeW0gKi8KLSAgICAgaWYgKGRtZ3R4dCkgcGF5X2Zvcl9kYW1hZ2UoZG1n dHh0LCBGQUxTRSk7Ci0gICAgICh2b2lkKSBtZW1zZXQoKGdlbmVyaWNwdHJfdCkmZGlnZ2luZywg MCwgc2l6ZW9mIGRpZ2dpbmcpOwotICAgICByZXR1cm4gMDsKLUBAIC0yNTgyLDcgKzI1ODIsNyBA QCBjb25zdCBjaGFyICptc2dfb3ZlcnJpZGU7Ci0gCW11bHRpID0gMDsJLyogY2FsbGVyIHdpbGwg dXN1YWxseSBoYXZlIGRvbmUgdGhpcyBhbHJlYWR5ICovCi0gCWlmIChtc2dfb3ZlcnJpZGUpIG5v bW92ZW1zZyA9IG1zZ19vdmVycmlkZTsKLSAJZWxzZSBpZiAoIW5vbW92ZW1zZykgbm9tb3ZlbXNn ID0gWW91X2Nhbl9tb3ZlX2FnYWluOwotLQlpZiAoKm5vbW92ZW1zZykgcGxpbmUobm9tb3ZlbXNn KTsKLSsJaWYgKCpub21vdmVtc2cpIHBsaW5lKCIlcyIsbm9tb3ZlbXNnKTsKLSAJbm9tb3ZlbXNn ID0gMDsKLSAJdS51c2xlZXAgPSAwOwotIAlpZiAoYWZ0ZXJubXYpICgqYWZ0ZXJubXYpKCk7Ci1A QCAtMjc3MSw3ICsyNzcxLDcgQEAgY29uc3QgY2hhciAqc3RyOwotIHsKLSAgICAgaWYobmVhcl9j YXBhY2l0eSgpID49IEVYVF9FTkNVTUJFUikgewotIAlpZihzdHIpCi0tCSAgICBwbGluZShzdHIp OwotKwkgICAgcGxpbmUoIiVzIixzdHIpOwotIAllbHNlCi0gCSAgICBZb3VfY2FudCgiZG8gdGhh dCB3aGlsZSBjYXJyeWluZyBzbyBtdWNoIHN0dWZmLiIpOwotIAlyZXR1cm4gMTsKLWRpZmYgLXVw IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9pbnZlbnQuYy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0w LjAuOEUwRjEvc3JjL2ludmVudC5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL2ludmVudC5j LmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysr IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9pbnZlbnQuYwkyMDEzLTEyLTA0IDA4OjQzOjIxLjg3MzIw MjI5MCAtMDcwMAotQEAgLTExNTMsNyArMTE1Myw3IEBAIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmxl dCwqd29yZDsKLSAJCX0KLSAJCWlmKGluZGV4KHF1aXRjaGFycyxpbGV0KSkgewotIAkJICAgIGlm KGZsYWdzLnZlcmJvc2UpCi0tCQkJcGxpbmUoTmV2ZXJfbWluZCk7Ci0rCQkJcGxpbmUoIiVzIixO ZXZlcl9taW5kKTsKLSAJCSAgICByZXR1cm4oKHN0cnVjdCBvYmogKikwKTsKLSAJCX0KLSAJCWlm KGlsZXQgPT0gJy0nKSB7Ci1AQCAtMTIyMCw3ICsxMjIwLDcgQEAgcmVnaXN0ZXIgY29uc3QgY2hh ciAqbGV0LCp3b3JkOwotIAkJCSAgICBQSUNLX09ORSwgYWxsb3dhbGwgPyBhbGxvd19hbGwgOiBh bGxvd191Z2x5KTsKLSAJCSAgICBpZiAobjwwKSB7Ci0gCQkJaWYgKGZsYWdzLnZlcmJvc2UpCi0t CQkJICAgIHBsaW5lKE5ldmVyX21pbmQpOwotKwkJCSAgICBwbGluZSgiJXMiLE5ldmVyX21pbmQp OwotIAkJCXJldHVybiAoc3RydWN0IG9iaiAqKTA7Ci0gCQkgICAgfSBlbHNlIGlmICghbikKLSAJ CQljb250aW51ZTsKLUBAIC0xMjUwLDcgKzEyNTAsNyBAQCByZWdpc3RlciBjb25zdCBjaGFyICps ZXQsKndvcmQ7Ci0gCQkgICAgfQotIAkJICAgIGlmKGlsZXQgPT0gJ1wwMzMnKSB7Ci0gCQkJaWYo ZmxhZ3MudmVyYm9zZSkKLS0JCQkgICAgcGxpbmUoTmV2ZXJfbWluZCk7Ci0rCQkJICAgIHBsaW5l KCIlcyIsTmV2ZXJfbWluZCk7Ci0gCQkJcmV0dXJuKChzdHJ1Y3Qgb2JqICopMCk7Ci0gCQkgICAg fQotIAkJICAgIC8qIHRoZXkgdHlwZWQgYSBsZXR0ZXIgKG5vdCBhIHNwYWNlKSBhdCB0aGUgcHJv bXB0ICovCi1AQCAtMjUzNiw3ICsyNTM2LDcgQEAgYm9vbGVhbiBwaWNrZWRfc29tZTsKLSAJfQot IAotIAlpZiAoIW90bXAgfHwgaXNfbGF2YSh1LnV4LHUudXkpIHx8IChpc19wb29sKHUudXgsdS51 eSkgJiYgIVVuZGVyd2F0ZXIpKSB7Ci0tCQlpZiAoZGZlYXR1cmUpIHBsaW5lKGZidWYpOwotKwkJ aWYgKGRmZWF0dXJlKSBwbGluZSgiJXMiLGZidWYpOwotIAkJc2Vuc2VfZW5ncl9hdCh1LnV4LCB1 LnV5LCBGQUxTRSk7IC8qIEVyaWMgQmFja3VzICovCi0gCQlpZiAoIXNraXBfb2JqZWN0cyAmJiAo QmxpbmQgfHwgIWRmZWF0dXJlKSkKLSAJCSAgICBZb3UoIiVzIG5vIG9iamVjdHMgaGVyZS4iLCB2 ZXJiKTsKLUBAIC0yNTQ1LDE0ICsyNTQ1LDE0IEBAIGJvb2xlYW4gcGlja2VkX3NvbWU7Ci0gCS8q IHdlIGtub3cgdGhlcmUgaXMgc29tZXRoaW5nIGhlcmUgKi8KLSAKLSAJaWYgKHNraXBfb2JqZWN0 cykgewotLQkgICAgaWYgKGRmZWF0dXJlKSBwbGluZShmYnVmKTsKLSsJICAgIGlmIChkZmVhdHVy ZSkgcGxpbmUoIiVzIixmYnVmKTsKLSAJICAgIHNlbnNlX2VuZ3JfYXQodS51eCwgdS51eSwgRkFM U0UpOyAvKiBFcmljIEJhY2t1cyAqLwotIAkgICAgVGhlcmUoImFyZSAlcyVzIG9iamVjdHMgaGVy ZS4iLAotIAkJICAob2JqX2NudCA8PSAxMCkgPyAic2V2ZXJhbCIgOiAibWFueSIsCi0gCQkgIHBp Y2tlZF9zb21lID8gIiBtb3JlIiA6ICIiKTsKLSAJfSBlbHNlIGlmICghb3RtcC0+bmV4dGhlcmUp IHsKLSAJICAgIC8qIG9ubHkgb25lIG9iamVjdCAqLwotLQkgICAgaWYgKGRmZWF0dXJlKSBwbGlu ZShmYnVmKTsKLSsJICAgIGlmIChkZmVhdHVyZSkgcGxpbmUoIiVzIixmYnVmKTsKLSAJICAgIHNl bnNlX2VuZ3JfYXQodS51eCwgdS51eSwgRkFMU0UpOyAvKiBFcmljIEJhY2t1cyAqLwotICNpZmRl ZiBJTlZJU0lCTEVfT0JKRUNUUwotIAkgICAgaWYgKG90bXAtPm9pbnZpcyAmJiAhU2VlX2ludmlz aWJsZSkgdmVyYiA9ICJmZWVsIjsKLUBAIC0zMDUyLDcgKzMwNTIsNyBAQCBkb29yZ2FuaXplKCkJ LyogaW52ZW50b3J5IG9yZ2FuaXplciBieSBECi0gCQlTcHJpbnRmKHFidWYsICJBZGp1c3QgbGV0 dGVyIHRvIHdoYXQgWyVzXT8iLGJ1Zik7Ci0gCQlsZXQgPSB5bl9mdW5jdGlvbihxYnVmLCAoY2hh ciAqKTAsICdcMCcpOwotIAkJaWYoaW5kZXgocXVpdGNoYXJzLGxldCkpIHsKLS0JCQlwbGluZShO ZXZlcl9taW5kKTsKLSsJCQlwbGluZSgiJXMiLE5ldmVyX21pbmQpOwotIAkJCXJldHVybigwKTsK LSAJCX0KLSAJCWlmIChsZXQgPT0gJ0AnIHx8ICFsZXR0ZXIobGV0KSkKLWRpZmYgLXVwIHNsYXNo ZW0tMC4wLjhFMEYxL3NyYy9sb2NrLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYx L3NyYy9sb2NrLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbG9jay5jLmZvcm1hdC1zZWN1 cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4w LjhFMEYxL3NyYy9sb2NrLmMJMjAxMy0xMi0wNCAwODozNToxNS43NTA4NDAyNDggLTA3MDAKLUBA IC0xMTU3LDcgKzExNTcsNyBAQCBpbnQgeCwgeTsKLSAJZGVmYXVsdDogaW1wb3NzaWJsZSgibWFn aWMgKCVkKSBhdHRlbXB0ZWQgb24gZG9vci4iLCBvdG1wLT5vdHlwKTsKLSAJICAgIGJyZWFrOwot IAl9Ci0tCWlmIChtc2cgJiYgY2Fuc2VlKHgseSkpIHBsaW5lKG1zZyk7Ci0rCWlmIChtc2cgJiYg Y2Fuc2VlKHgseSkpIHBsaW5lKCIlcyIsbXNnKTsKLSAJaWYgKGxvdWRuZXNzID4gMCkgewotIAkg ICAgLyogZG9vciB3YXMgZGVzdHJveWVkICovCi0gCSAgICB3YWtlX25lYXJ0byh4LCB5LCBsb3Vk bmVzcyk7Ci1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbWFpbC5jLmZvcm1hdC1zZWN1 cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbWFpbC5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEv c3JjL21haWwuYy5mb3JtYXQtc2VjdXJpdHkJMjAxMy0xMi0wNCAwOTowMjo0Ny45OTY5OTMzMTEg LTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbWFpbC5jCTIwMTMtMTItMDQgMDk6MDM6 MTEuMjczODc1OTA2IC0wNzAwCi1AQCAtMzE5LDcgKzMxOSw3IEBAIG1kX3J1c2gobWQsdHgsdHkp Ci0gCWlmIChmeCA9PSB0eCAmJiBmeSA9PSB0eSkgYnJlYWs7Ci0gCi0gCWlmICgobW9uID0gbV9h dChmeCxmeSkpICE9IDApCS8qIHNhdmUgbW9uc3RlciBhdCB0aGlzIHBvc2l0aW9uICovCi0tCSAg ICB2ZXJiYWxpemUobWRfZXhjbGFtYXRpb25zKCkpOwotKwkgICAgdmVyYmFsaXplKCIlcyIsbWRf ZXhjbGFtYXRpb25zKCkpOwotIAllbHNlIGlmIChmeCA9PSB1LnV4ICYmIGZ5ID09IHUudXkpCi0g CSAgICB2ZXJiYWxpemUoIkV4Y3VzZSBtZS4iKTsKLSAKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhF MEYxL3NyYy9tYWtlbW9uLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9t YWtlbW9uLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbWFrZW1vbi5jLmZvcm1hdC1zZWN1 cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4w LjhFMEYxL3NyYy9tYWtlbW9uLmMJMjAxMy0xMi0wNCAwODozNToxNS43NTE4NDAyNDIgLTA3MDAK LUBAIC0yNTA3LDcgKzI1MDcsNyBAQCBzdHJ1Y3Qgb2JqICpiYWc7Ci0gICAgIGlmICghYmFnIHx8 IGJhZy0+b3R5cCAhPSBCQUdfT0ZfVFJJQ0tTKSB7Ci0gCWltcG9zc2libGUoImJhZCBiYWcgbycg dHJpY2tzIik7Ci0gICAgIH0gZWxzZSBpZiAoYmFnLT5zcGUgPCAxKSB7Ci0tCXBsaW5lKG5vdGhp bmdfaGFwcGVucyk7Ci0rCXBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5zKTsKLSAgICAgfSBlbHNl IHsKLSAJYm9vbGVhbiBnb3RvbmUgPSBGQUxTRTsKLSAJaW50IGNudCA9IDE7Ci1kaWZmIC11cCBz bGFzaGVtLTAuMC44RTBGMS9zcmMvbWNhc3R1LmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4w LjhFMEYxL3NyYy9tY2FzdHUuYwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9tY2FzdHUuYy5m b3JtYXQtc2VjdXJpdHkJMjAxMy0xMi0wNCAwODo0ODoxNC4yMDIxNTQxMjAgLTA3MDAKLSsrKyBz bGFzaGVtLTAuMC44RTBGMS9zcmMvbWNhc3R1LmMJMjAxMy0xMi0wNCAwODo0OToyMi4zMTk4Nzc1 NTIgLTA3MDAKLUBAIC02OTIsNyArNjkyLDcgQEAgaW50IHNwZWxsbnVtOwotIAkJICAobnVtX2V5 ZXMgPT0gMSkgPwotIAkJICBib2R5X3BhcnQoRVlFKSA6IG1ha2VwbHVyYWwoYm9keV9wYXJ0KEVZ RSkpKTsKLSAJICAgIG1ha2VfYmxpbmRlZChIYWxmX3NwZWxsX2RhbWFnZSA/IDEwMEwgOiAyMDBM LCBGQUxTRSk7Ci0tCSAgICBpZiAoIUJsaW5kKSBZb3VyKHZpc2lvbl9jbGVhcnMpOwotKwkgICAg aWYgKCFCbGluZCkgWW91cigiJXMiLHZpc2lvbl9jbGVhcnMpOwotIAkgICAgZG1nID0gMDsKLSAJ fSBlbHNlCi0gCSAgICBpbXBvc3NpYmxlKCJubyByZWFzb24gZm9yIG1vbnN0ZXIgdG8gY2FzdCBi bGluZG5lc3Mgc3BlbGw/Iik7Ci1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbWhpdHUu Yy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL21oaXR1LmMKLS0tLSBzbGFz aGVtLTAuMC44RTBGMS9zcmMvbWhpdHUuYy5mb3JtYXQtc2VjdXJpdHkJMjAxMy0xMi0wNCAwODo0 ODoxNC4yMDQxNTQxMTIgLTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbWhpdHUuYwky MDEzLTEyLTA0IDA4OjQ5OjQyLjg0Mjc5MjM5MiAtMDcwMAotQEAgLTEzMTUsNyArMTMxNSw3IEBA IGhpdG11KG10bXAsIG1hdHRrKQotIAkJaWYgKGNhbl9ibG5kKG10bXAsICZ5b3Vtb25zdCwgbWF0 dGstPmFhdHlwLCAoc3RydWN0IG9iaiopMCkpIHsKLSAJCSAgICBpZiAoIUJsaW5kKSBwbGluZSgi JXMgYmxpbmRzIHlvdSEiLCBNb25uYW0obXRtcCkpOwotIAkJICAgIG1ha2VfYmxpbmRlZChCbGlu ZGVkKyhsb25nKWRtZyxGQUxTRSk7Ci0tCQkgICAgaWYgKCFCbGluZCkgWW91cih2aXNpb25fY2xl YXJzKTsKLSsJCSAgICBpZiAoIUJsaW5kKSBZb3VyKCIlcyIsdmlzaW9uX2NsZWFycyk7Ci0gCQl9 Ci0gCQlkbWcgPSAwOwotIAkJYnJlYWs7Ci1AQCAtMjExMiw3ICsyMTEyLDcgQEAgZ3VscG11KG10 bXAsIG1hdHRrKQkvKiBtb25zdGVyIHN3YWxsb3dzCi0gCQkJaWYoIUJsaW5kKSB7Ci0gCQkJICAg IFlvdV9jYW50KCJzZWUgaW4gaGVyZSEiKTsKLSAJCQkgICAgbWFrZV9ibGluZGVkKChsb25nKXRt cCxGQUxTRSk7Ci0tCQkJICAgIGlmICghQmxpbmQpIFlvdXIodmlzaW9uX2NsZWFycyk7Ci0rCQkJ ICAgIGlmICghQmxpbmQpIFlvdXIoIiVzIix2aXNpb25fY2xlYXJzKTsKLSAJCQl9IGVsc2UKLSAJ CQkgICAgLyoga2VlcCBoaW0gYmxpbmQgdW50aWwgZGlzZ29yZ2VkICovCi0gCQkJICAgIG1ha2Vf YmxpbmRlZChCbGluZGVkKzEsRkFMU0UpOwotQEAgLTIyMjgsNyArMjIyOCw3IEBAIGNvbW1vbjoK LSAJCSAgICBpZiAobW9uX3Zpc2libGUobXRtcCkgfHwgKHJuZCh0bXAgLz0gMikgPiB1LnVsZXZl bCkpIHsKLSAJCQlZb3UoImFyZSBibGluZGVkIGJ5IGEgYmxhc3Qgb2YgbGlnaHQhIik7Ci0gCQkJ bWFrZV9ibGluZGVkKChsb25nKXRtcCwgRkFMU0UpOwotLQkJCWlmICghQmxpbmQpIFlvdXIodmlz aW9uX2NsZWFycyk7Ci0rCQkJaWYgKCFCbGluZCkgWW91cigiJXMiLHZpc2lvbl9jbGVhcnMpOwot IAkJICAgIH0gZWxzZSBpZiAoZmxhZ3MudmVyYm9zZSkKLSAJCQlZb3UoImdldCB0aGUgaW1wcmVz c2lvbiBpdCB3YXMgbm90IHRlcnJpYmx5IGJyaWdodC4iKTsKLSAJCX0KLUBAIC0yMzU1LDcgKzIz NTUsNyBAQCBnYXplbXUobXRtcCwgbWF0dGspCS8qIG1vbnN0ZXIgZ2F6ZXMgYXQKLSAJCSAgICAv KiBub3QgYmxpbmQgYXQgdGhpcyBwb2ludCBpbXBsaWVzIHlvdSdyZSB3ZWFyaW5nCi0gCQkgICAg ICAgdGhlIEV5ZXMgb2YgdGhlIE92ZXJ3b3JsZDsgbWFrZSB0aGVtIGJsb2NrIHRoaXMKLSAJCSAg ICAgICBwYXJ0aWN1bGFyIHN0dW4gYXR0YWNrIHRvbyAqLwotLQkJICAgIGlmICghQmxpbmQpIFlv dXIodmlzaW9uX2NsZWFycyk7Ci0rCQkgICAgaWYgKCFCbGluZCkgWW91cigiJXMiLHZpc2lvbl9j bGVhcnMpOwotIAkJICAgIGVsc2UgbWFrZV9zdHVubmVkKChsb25nKWQoMSwzKSxUUlVFKTsKLSAJ CX0KLSAJCWJyZWFrOwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL21vbi5jLmZvcm1h dC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbW9uLmMKLS0tLSBzbGFzaGVtLTAuMC44 RTBGMS9zcmMvbW9uLmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAw MDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL21vbi5jCTIwMTMtMTItMDQgMDk6 MDc6MzkuMzkxNTIzMjA1IC0wNzAwCi1AQCAtMTU5Miw3ICsxNTkyLDcgQEAgc3RydWN0IG1vbnN0 ICptdG1wOwotIAlpbnQgdmlzaWJsZTsKLSAJY2hhciBidWZbQlVGU1pdOwotIAotLQlzcHJpbnRm KGJ1ZiwgTW9ubmFtKG10bXApKTsKLSsJc3ByaW50ZihidWYsICIlcyIsIE1vbm5hbShtdG1wKSk7 Ci0gCi0gCS8qIElmIHRoZXJlIGlzIGEgdGltZXIgPT0gbW9uc3RlciB3YXMgcG9seSdlZCAqLwot IAlpZiAoc3RvcF90aW1lcihVTlBPTFlfTU9OLCAoZ2VuZXJpY3B0cl90KSBtdG1wKSkgewotQEAg LTI2NzUsNyArMjY3NSw3IEBAIHN0cnVjdCBtb25zdCAqbW9uOwotIAkJCQlZb3UoImNhbm5vdCBw b2x5bW9ycGggJXMgaW50byB0aGF0LiIsIG1vbl9uYW0obW9uKSk7Ci0gCQkJZWxzZSBicmVhazsK LSAJCX0gd2hpbGUoKyt0cmllcyA8IDUpOwotLQkJaWYgKHRyaWVzPT01KSBwbGluZSh0aGF0c19l bm91Z2hfdHJpZXMpOwotKwkJaWYgKHRyaWVzPT01KSBwbGluZSgiJXMiLHRoYXRzX2Vub3VnaF90 cmllcyk7Ci0gCX0KLSAjZW5kaWYgLypXSVpBUkQqLwotIAlpZiAobW5keCA9PSBOT05fUE0pIG1u ZHggPSBybjEoU1BFQ0lBTF9QTSAtIExPV19QTSwgTE9XX1BNKTsKLWRpZmYgLXVwIHNsYXNoZW0t MC4wLjhFMEYxL3NyYy9tdGhyb3d1LmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYx L3NyYy9tdGhyb3d1LmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbXRocm93dS5jLmZvcm1h dC1zZWN1cml0eQkyMDEzLTEyLTA0IDA4OjQ4OjE0LjIwMDE1NDEyOCAtMDcwMAotKysrIHNsYXNo ZW0tMC4wLjhFMEYxL3NyYy9tdGhyb3d1LmMJMjAxMy0xMi0wNCAwODo0OToxOC41OTM4OTI5NTgg LTA3MDAKLUBAIC01MzMsNyArNTMzLDcgQEAgbV90aHJvdyhtb24sIHgsIHksIGR4LCBkeSwgcmFu Z2UsIG9iaikKLSAJaWYgKGJsaW5kaW5jKSB7Ci0gCQl1LnVjcmVhbWVkICs9IGJsaW5kaW5jOwot IAkJbWFrZV9ibGluZGVkKEJsaW5kZWQgKyAobG9uZylibGluZGluYywgRkFMU0UpOwotLQkJaWYg KCFCbGluZCkgWW91cih2aXNpb25fY2xlYXJzKTsKLSsJCWlmICghQmxpbmQpIFlvdXIoIiVzIix2 aXNpb25fY2xlYXJzKTsKLSAJfQotIH0KLSAKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3Ny Yy9tdXNlLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9tdXNlLmMKLS0t LSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvbXVzZS5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMw IDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9tdXNl LmMJMjAxMy0xMi0wNCAwODozNToxNS43NTM4NDAyMzAgLTA3MDAKLUBAIC04MSw3ICs4MSw3IEBA IHN0cnVjdCBvYmogKm9iajsKLSAJCSAgICBtX3VzZXVwKG1vbiwgb2JqKTsKLSAJCSAgICBtdG1w ID0gbWFrZW1vbigmbW9uc1tQTV9HSE9TVF0sIGNjLngsIGNjLnksIE5PX01NX0ZMQUdTKTsKLSAJ CSAgICBpZiAoIW10bXApIHsKLS0JCQlpZiAodmlzKSBwbGluZShlbXB0eSk7Ci0rCQkJaWYgKHZp cykgcGxpbmUoIiVzIixlbXB0eSk7Ci0gCQkgICAgfSBlbHNlIHsKLSAJCQlpZiAodmlzKSB7Ci0g CQkJICAgIHBsaW5lKCJBcyAlcyBvcGVucyB0aGUgYm90dGxlLCBhbiBlbm9ybW91cyAlcyBlbWVy Z2VzISIsCi1AQCAtMTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBvYmogKm9iajsKLSAJCW1fdXNldXAo bW9uLCBvYmopOwotIAkJbXRtcCA9IG1ha2Vtb24oJm1vbnNbUE1fREpJTk5JXSwgY2MueCwgY2Mu eSwgTk9fTU1fRkxBR1MpOwotIAkJaWYgKCFtdG1wKSB7Ci0tCQkgICAgaWYgKHZpcykgcGxpbmUo ZW1wdHkpOwotKwkJICAgIGlmICh2aXMpIHBsaW5lKCIlcyIsZW1wdHkpOwotIAkJfSBlbHNlIHsK LSAJCSAgICBpZiAodmlzKQotIAkJCXBsaW5lKCJJbiBhIGNsb3VkIG9mIHNtb2tlLCAlcyBlbWVy Z2VzISIsCi1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvcG9seXNlbGYuYy5mb3JtYXQt c2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3BvbHlzZWxmLmMKLS0tLSBzbGFzaGVtLTAu MC44RTBGMS9zcmMvcG9seXNlbGYuYy5mb3JtYXQtc2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1 My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvcG9seXNlbGYuYwky MDEzLTEyLTA0IDA4OjU4OjUxLjY0NDE3Njc5MyAtMDcwMAotQEAgLTI5MCw3ICsyOTAsNyBAQCBi b29sZWFuIGZvcmNlY29udHJvbDsKLSAJaWYoIVBvbHltb3JwaF9jb250cm9sICYmICFmb3JjZWNv bnRyb2wgJiYgIWRyYWNvbmlhbiAmJiAhaXN3ZXJlICYmCi0gCQkJIWlzdmFtcCAmJiAhUmFjZV9p ZihQTV9ET1BQRUxHQU5HRVIpKSB7Ci0gCQlpZiAocm4yKDEyKSA+IEFDVVJSKEFfQ09OKSkgewot LQkJWW91KHNodWRkZXJfZm9yX21vbWVudCk7Ci0rCQlZb3UoIiVzIixzaHVkZGVyX2Zvcl9tb21l bnQpOwotIAkJbG9zZWhwKHJuZCgzMCksICJzeXN0ZW0gc2hvY2siLCBLSUxMRURfQllfQU4pOwot IAkJZXhlcmNpc2UoQV9DT04sIEZBTFNFKTsKLSAJCXJldHVybjsKLUBAIC0zMTIsNyArMzEyLDcg QEAgYm9vbGVhbiBmb3JjZWNvbnRyb2w7Ci0gCQkJCVlvdSgiY2Fubm90IHBvbHltb3JwaCBpbnRv IHRoYXQuIik7Ci0gCQkJZWxzZSBicmVhazsKLSAJCX0gd2hpbGUoKyt0cmllcyA8IDUpOwotLQkJ aWYgKHRyaWVzPT01KSBwbGluZSh0aGF0c19lbm91Z2hfdHJpZXMpOwotKwkJaWYgKHRyaWVzPT01 KSBwbGluZSgiJXMiLHRoYXRzX2Vub3VnaF90cmllcyk7Ci0gCQkvKiBhbGxvdyBza2luIG1lcmdp bmcsIGV2ZW4gd2hlbiBwb2x5bW9ycGggaXMgY29udHJvbGxlZCAqLwotIAkJaWYgKGRyYWNvbmlh biAmJgotIAkJICAgIChtbnRtcCA9PSBhcm1vcl90b19kcmFnb24odWFybS0+b3R5cCkgfHwgdHJp ZXMgPT0gNSkpCi1AQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2xlYW4gZm9yY2Vjb250cm9sOwotIAot IAkJCWVsc2UgYnJlYWs7Ci0gCQl9IHdoaWxlKCsrdHJpZXMgPCA1KTsKLS0JCWlmICh0cmllcz09 NSkgcGxpbmUodGhhdHNfZW5vdWdoX3RyaWVzKTsKLSsJCWlmICh0cmllcz09NSkgcGxpbmUoIiVz Iix0aGF0c19lbm91Z2hfdHJpZXMpOwotIAkJLyogYWxsb3cgc2tpbiBtZXJnaW5nLCBldmVuIHdo ZW4gcG9seW1vcnBoIGlzIGNvbnRyb2xsZWQgKi8KLSAJCWlmIChkcmFjb25pYW4gJiYKLSAJCSAg ICAobW50bXAgPT0gYXJtb3JfdG9fZHJhZ29uKHVhcm0tPm90eXApIHx8IHRyaWVzID09IDUpKQot ZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3BvdGlvbi5jLmZvcm1hdC1zZWN1cml0eSBz bGFzaGVtLTAuMC44RTBGMS9zcmMvcG90aW9uLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMv cG90aW9uLmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0w NzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3BvdGlvbi5jCTIwMTMtMTItMDQgMDg6NDk6 MzAuMTYzODQ1MDM5IC0wNzAwCi1AQCAtMTEzNSw3ICsxMTM1LDcgQEAgcmVnaXN0ZXIgY29uc3Qg Y2hhciAqdHh0OwotIAkJWW91KCJoYXZlIGEgJXMgZmVlbGluZyBmb3IgYSBtb21lbnQsIHRoZW4g aXQgcGFzc2VzLiIsCi0gCQlIYWxsdWNpbmF0aW9uID8gIm5vcm1hbCIgOiAic3RyYW5nZSIpOwot IAllbHNlCi0tCQlwbGluZSh0eHQpOwotKwkJcGxpbmUoIiVzIix0eHQpOwotIAotIAlpZighb2Jq KQkvKiBlLmcuLCBjcnlzdGFsIGJhbGwgZmluZHMgbm8gdHJhcHMgKi8KLSAJCXJldHVybjsKLUBA IC0xNjA5LDcgKzE2MDksNyBAQCByZWdpc3RlciBzdHJ1Y3Qgb2JqICpvYmo7Ci0gCQkgICAgcGxp bmUoIkl0IHN1ZGRlbmx5IGdldHMgZGFyay4iKTsKLSAJCX0KLSAJCW1ha2VfYmxpbmRlZChpdGlt ZW91dF9pbmNyKEJsaW5kZWQsIHJuZCg1KSksIEZBTFNFKTsKLS0JCWlmICghQmxpbmQgJiYgIXUu dXNsZWVwKSBZb3VyKHZpc2lvbl9jbGVhcnMpOwotKwkJaWYgKCFCbGluZCAmJiAhdS51c2xlZXAp IFlvdXIoIiVzIix2aXNpb25fY2xlYXJzKTsKLSAJCWJyZWFrOwotIAljYXNlIFBPVF9XQVRFUjoK LSAJCWlmKHUudW1vbm51bSA9PSBQTV9HUkVNTElOKSB7Ci1AQCAtMjc3NCw3ICsyNzc0LDcgQEAg ZG9kaXAoKQotIAkJICAgIG9iaiA9PSB1YmFsbCB8fCBvYmogPT0gdXNraW4gfHwKLSAJCSAgICBv YmpfcmVzaXN0cyhvYmotPm90eXAgPT0gUE9UX1BPTFlNT1JQSCA/Ci0gCQkJCXBvdGlvbiA6IG9i aiwgNSwgOTUpKSB7Ci0tCQlwbGluZShub3RoaW5nX2hhcHBlbnMpOwotKwkJcGxpbmUoIiVzIixu b3RoaW5nX2hhcHBlbnMpOwotIAkgICAgfSBlbHNlIHsKLSAJICAgIAlib29sZWFuIHdhc193ZXAg PSBGQUxTRSwgd2FzX3N3YXB3ZXAgPSBGQUxTRSwgd2FzX3F1aXZlciA9IEZBTFNFOwotIAkJc2hv cnQgc2F2ZV9vdHlwID0gb2JqLT5vdHlwOwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3Jj L3ByYXkuYy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3ByYXkuYwotLS0t IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9wcmF5LmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAg MDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3ByYXku YwkyMDEzLTEyLTA0IDA4OjM1OjE1Ljc1Njg0MDIxMiAtMDcwMAotQEAgLTEyMzMsNyArMTIzMyw3 IEBAIG9mZmVyX29yYWNsZSAobXRtcCwgb3RtcCkKLSAKLSAJLyogTWFrZSBzdXJlIGl0J3MgYSBj b3Jwc2UgKi8KLSAgICAgaWYgKG90bXAtPm90eXAgIT0gQ09SUFNFKSB7Ci0tCQlwbGluZShub3Ro aW5nX2hhcHBlbnMpOwotKwkJcGxpbmUoIiVzIixub3RoaW5nX2hhcHBlbnMpOwotIAkJcmV0dXJu ICgxKTsKLSAJfQotIAotQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZlcmJhbGl6ZSgiSW4gcmV0dXJu IGZvciB0aHkgc2VydmljZSwgSQotICAgICB9IC8qIGZha2UgQW11bGV0ICovCi0gCi0gICAgIGlm ICh2YWx1ZSA9PSAwKSB7Ci0tCXBsaW5lKG5vdGhpbmdfaGFwcGVucyk7Ci0rCXBsaW5lKCIlcyIs bm90aGluZ19oYXBwZW5zKTsKLSAJcmV0dXJuICgxKTsKLSAgICAgfQotIAotZGlmZiAtdXAgc2xh c2hlbS0wLjAuOEUwRjEvc3JjL3ByaWVzdC5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44 RTBGMS9zcmMvcHJpZXN0LmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvcHJpZXN0LmMuZm9y bWF0LXNlY3VyaXR5CTIwMTMtMTItMDQgMDk6MDI6NDguMDAwOTkzMjkwIC0wNzAwCi0rKysgc2xh c2hlbS0wLjAuOEUwRjEvc3JjL3ByaWVzdC5jCTIwMTMtMTItMDQgMDk6MDM6MzYuNTU1NzQ4Mzg3 IC0wNzAwCi1AQCAtMzc1LDggKzM3NSw4IEBAIHJlZ2lzdGVyIGludCByb29tbm87Ci0gCQkgICAg bXNnMSA9IGJ1ZjsKLSAJCX0KLSAJCWlmIChjYW5fc3BlYWspIHsKLS0JCSAgICB2ZXJiYWxpemUo bXNnMSk7Ci0tCQkgICAgaWYgKG1zZzIpIHZlcmJhbGl6ZShtc2cyKTsKLSsJCSAgICB2ZXJiYWxp emUoIiVzIixtc2cxKTsKLSsJCSAgICBpZiAobXNnMikgdmVyYmFsaXplKCIlcyIsbXNnMik7Ci0g CQl9Ci0gCQlpZighc2FuY3R1bSkgewotIAkJICAgIC8qICF0ZW5kZWQgLT4gIXNocmluZWQgKi8K LUBAIC00NDUsNyArNDQ1LDcgQEAgcmVnaXN0ZXIgc3RydWN0IG1vbnN0ICpwcmllc3Q7Ci0gCQlw cmllc3QtPm1jYW5tb3ZlID0gMTsKLSAJICAgIH0KLSAJICAgIHByaWVzdC0+bXBlYWNlZnVsID0g MDsKLS0JICAgIHZlcmJhbGl6ZShjcmFua3lfbXNnW3JuMigzKV0pOwotKwkgICAgdmVyYmFsaXpl KCIlcyIsY3Jhbmt5X21zZ1tybjIoMyldKTsKLSAJICAgIHJldHVybjsKLSAJfQotIAotZGlmZiAt dXAgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3F1ZXN0cGdyLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNo ZW0tMC4wLjhFMEYxL3NyYy9xdWVzdHBnci5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3F1 ZXN0cGdyLmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0w NzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3F1ZXN0cGdyLmMJMjAxMy0xMi0wNCAwOTox MTozMi4wNzczMzE5NDUgLTA3MDAKLUBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IHF0bXNnICpx dF9tc2c7Ci0gCWZvciAoc2l6ZSA9IDA7IHNpemUgPCBxdF9tc2ctPnNpemU7IHNpemUgKz0gKGxv bmcpc3RybGVuKGluX2xpbmUpKSB7Ci0gCSAgICAodm9pZCkgZGxiX2ZnZXRzKGluX2xpbmUsIDgw LCBtc2dfZmlsZSk7Ci0gCSAgICBjb252ZXJ0X2xpbmUoKTsKLS0JICAgIHBsaW5lKG91dF9saW5l KTsKLSsJICAgIHBsaW5lKCIlcyIsb3V0X2xpbmUpOwotIAl9Ci0gCi0gfQotZGlmZiAtdXAgc2xh c2hlbS0wLjAuOEUwRjEvc3JjL3JlYWQuYy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUw RjEvc3JjL3JlYWQuYwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9yZWFkLmMuZm9ybWF0LXNl Y3VyaXR5CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0w LjAuOEUwRjEvc3JjL3JlYWQuYwkyMDEzLTEyLTA0IDA4OjQzOjQwLjU4NzE0MzU3NSAtMDcwMAot QEAgLTI3MCwxNCArMjcwLDE0IEBAIHN0YXRpYyB2b2lkCi0gc3RyaXBzcGUob2JqKQotIHJlZ2lz dGVyIHN0cnVjdCBvYmogKm9iajsKLSB7Ci0tCWlmIChvYmotPmJsZXNzZWQpIHBsaW5lKG5vdGhp bmdfaGFwcGVucyk7Ci0rCWlmIChvYmotPmJsZXNzZWQpIHBsaW5lKCIlcyIsbm90aGluZ19oYXBw ZW5zKTsKLSAJZWxzZSB7Ci0gCQlpZiAob2JqLT5zcGUgPiAwKSB7Ci0gCQkgICAgb2JqLT5zcGUg PSAwOwotIAkJICAgIGlmIChvYmotPm90eXAgPT0gT0lMX0xBTVAgfHwgb2JqLT5vdHlwID09IEJS QVNTX0xBTlRFUk4pCi0gCQkJb2JqLT5hZ2UgPSAwOwotIAkJICAgIFlvdXIoIiVzICVzIGJyaWVm bHkuIix4bmFtZShvYmopLCBvdGVuc2Uob2JqLCAidmlicmF0ZSIpKTsKLS0JCX0gZWxzZSBwbGlu ZShub3RoaW5nX2hhcHBlbnMpOwotKwkJfSBlbHNlIHBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5z KTsKLSAJfQotIH0KLSAKLUBAIC0zOTEsNyArMzkxLDcgQEAgaW50IGN1cnNlX2JsZXNzOwotIAl9 IGVsc2UgaWYgKG9iai0+b2NsYXNzID09IFNQQk9PS19DTEFTUykgewotIAotIAkgICAgaWYgKG9i ai0+b3R5cCA9PSBTUEVfQk9PS19PRl9USEVfREVBRCkgewotLQkgICAgCXBsaW5lKG5vdGhpbmdf aGFwcGVucyk7Ci0rCSAgICAJcGxpbmUoIiVzIixub3RoaW5nX2hhcHBlbnMpOwotIAkJcmV0dXJu OwotIAkgICAgfQotICAgIAotQEAgLTQ5Myw3ICs0OTMsNyBAQCBpbnQgY3Vyc2VfYmxlc3M7Ci0g CQkgICAgaWYgKG9iai0+c3BlIDwgMykKLSAJCQlZb3VyKCJtYXJrZXIgc2VlbXMgcGVybWFuZW50 bHkgZHJpZWQgb3V0LiIpOwotIAkJICAgIGVsc2UKLS0JCQlwbGluZShub3RoaW5nX2hhcHBlbnMp OwotKwkJCXBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5zKTsKLSAJCX0gZWxzZSBpZiAoaXNfYmxl c3NlZCkgewotIAkJICAgIG4gPSBybjEoMTYsMTUpOwkJLyogMTUuLjMwICovCi0gCQkgICAgaWYg KG9iai0+c3BlICsgbiA8PSA1MCkKLUBAIC01NzYsNyArNTc2LDcgQEAgaW50IGN1cnNlX2JsZXNz OwotIAkJICAgIGlmIChvYmotPnNwZSA8IDUpIHsKLSAJCQlvYmotPnNwZSsrOwotIAkJCXBfZ2xv dzEob2JqKTsKLS0JCSAgICB9IGVsc2UgcGxpbmUobm90aGluZ19oYXBwZW5zKTsKLSsJCSAgICB9 IGVsc2UgcGxpbmUoIiVzIixub3RoaW5nX2hhcHBlbnMpOwotIAkJfQotIAkJYnJlYWs7Ci0gCSAg ICBjYXNlIEhPUk5fT0ZfUExFTlRZOgotQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHJlZ2lzdGVyIHN0 cnVjdCBvYmoJKnNvYmo7Ci0gCQljYy54ID0gdS51eDsKLSAJCWNjLnkgPSB1LnV5OwotIAkJaWYg KGdldHBvcygmY2MsIFRSVUUsICJ0aGUgZGVzaXJlZCBwb3NpdGlvbiIpIDwgMCkgewotLQkJICAg IHBsaW5lKE5ldmVyX21pbmQpOwotKwkJICAgIHBsaW5lKCIlcyIsTmV2ZXJfbWluZCk7Ci0gCQkg ICAgcmV0dXJuIDA7Ci0gCQl9Ci0gCQlpZiAoIWNhbnNlZShjYy54LCBjYy55KSB8fCBkaXN0dShj Yy54LCBjYy55KSA+PSAzMikgewotQEAgLTE3NTUsNyArMTc1NSw3IEBAIGRvX2NsYXNzX2dlbm9j aWRlKCkKLSAKLSAJZm9yKGo9MDsgOyBqKyspIHsKLSAJCWlmIChqID49IDUpIHsKLS0JCQlwbGlu ZSh0aGF0c19lbm91Z2hfdHJpZXMpOwotKwkJCXBsaW5lKCIlcyIsdGhhdHNfZW5vdWdoX3RyaWVz KTsKLSAJCQlyZXR1cm47Ci0gCQl9Ci0gCQlkbyB7Ci1AQCAtMTk0NSw3ICsxOTQ1LDcgQEAgaW50 IGhvdzsKLSAJfSBlbHNlIHsKLSAJICAgIGZvcihpID0gMDsgOyBpKyspIHsKLSAJCWlmKGkgPj0g NSkgewotLQkJICAgIHBsaW5lKHRoYXRzX2Vub3VnaF90cmllcyk7Ci0rCQkgICAgcGxpbmUoIiVz Iix0aGF0c19lbm91Z2hfdHJpZXMpOwotIAkJICAgIHJldHVybjsKLSAJCX0KLSAJCWdldGxpbigi V2hhdCBtb25zdGVyIGRvIHlvdSB3YW50IHRvIGdlbm9jaWRlPyBbdHlwZSB0aGUgbmFtZV0iLAot QEAgLTIwNjgsNyArMjA2OCw3IEBAIGludCBob3c7Ci0gCSAgICBpZiAoY250KQotIAkJcGxpbmUo IlNlbnQgaW4gc29tZSAlcy4iLCBtYWtlcGx1cmFsKGJ1ZikpOwotIAkgICAgZWxzZQotLQkJcGxp bmUobm90aGluZ19oYXBwZW5zKTsKLSsJCXBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5zKTsKLSAJ fQotIH0KLSAKLUBAIC0yMTg4LDcgKzIxODgsNyBAQCBjcmVhdGVfcGFydGljdWxhcigpCi0gCX0g d2hpbGUgKCsrdHJpZXMgPCA1KTsKLSAKLSAJaWYgKHRyaWVzID09IDUpIHsKLS0JICAgIHBsaW5l KHRoYXRzX2Vub3VnaF90cmllcyk7Ci0rCSAgICBwbGluZSgiJXMiLHRoYXRzX2Vub3VnaF90cmll cyk7Ci0gCX0gZWxzZSB7Ci0gCSAgICAodm9pZCkgY2FudF9jcmVhdGUoJndoaWNoLCBGQUxTRSk7 Ci0gCSAgICB3aGljaHBtID0gJm1vbnNbd2hpY2hdOwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUw RjEvc3JjL3JlZ2lvbi5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvcmVn aW9uLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvcmVnaW9uLmMuZm9ybWF0LXNlY3VyaXR5 CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUw RjEvc3JjL3JlZ2lvbi5jCTIwMTMtMTItMDQgMDg6MzU6MTUuNzU4ODQwMjAwIC0wNzAwCi1AQCAt NDQ4LDcgKzQ0OCw3IEBAIHhjaGFyCi0gCQkhcmVnaW9uc1tpXS0+YXR0YWNoXzJfdSAmJiAhaW5z aWRlX3JlZ2lvbihyZWdpb25zW2ldLCB4LCB5KSkgewotIAkgICAgY2xlYXJfaGVyb19pbnNpZGUo cmVnaW9uc1tpXSk7Ci0gCSAgICBpZiAocmVnaW9uc1tpXS0+bGVhdmVfbXNnICE9IE5VTEwpCi0t CQlwbGluZShyZWdpb25zW2ldLT5sZWF2ZV9tc2cpOwotKwkJcGxpbmUoIiVzIixyZWdpb25zW2ld LT5sZWF2ZV9tc2cpOwotIAkgICAgaWYgKChmX2luZHggPSByZWdpb25zW2ldLT5sZWF2ZV9mKSAh PSBOT19DQUxMQkFDSykKLSAJCSh2b2lkKSAoKmNhbGxiYWNrc1tmX2luZHhdKShyZWdpb25zW2ld LCAoZ2VuZXJpY3B0cl90KSAwKTsKLSAJfQotQEAgLTQ1OSw3ICs0NTksNyBAQCB4Y2hhcgotIAkJ IXJlZ2lvbnNbaV0tPmF0dGFjaF8yX3UgJiYgaW5zaWRlX3JlZ2lvbihyZWdpb25zW2ldLCB4LCB5 KSkgewotIAkgICAgc2V0X2hlcm9faW5zaWRlKHJlZ2lvbnNbaV0pOwotIAkgICAgaWYgKHJlZ2lv bnNbaV0tPmVudGVyX21zZyAhPSBOVUxMKQotLQkJcGxpbmUocmVnaW9uc1tpXS0+ZW50ZXJfbXNn KTsKLSsJCXBsaW5lKCIlcyIscmVnaW9uc1tpXS0+ZW50ZXJfbXNnKTsKLSAJICAgIGlmICgoZl9p bmR4ID0gcmVnaW9uc1tpXS0+ZW50ZXJfZikgIT0gTk9fQ0FMTEJBQ0spCi0gCQkodm9pZCkgKCpj YWxsYmFja3NbZl9pbmR4XSkocmVnaW9uc1tpXSwgKGdlbmVyaWNwdHJfdCkgMCk7Ci0gCX0KLWRp ZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9yZXN0b3JlLmMuZm9ybWF0LXNlY3VyaXR5IHNs YXNoZW0tMC4wLjhFMEYxL3NyYy9yZXN0b3JlLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMv cmVzdG9yZS5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUzLjAwMDAwMDAwMCAt MDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9yZXN0b3JlLmMJMjAxMy0xMi0wNCAwODoz NToxNS43NTk4NDAxOTQgLTA3MDAKLUBAIC03NzgsNyArNzc4LDcgQEAgYm9vbGVhbiBnaG9zdGx5 OwotIAkgICAgZWxzZQotIAkJU3ByaW50Zih0cmlja2J1ZiwgIlRoaXMgaXMgbGV2ZWwgJWQsIG5v dCAlZCEiLCBkbHZsLCBsZXYpOwotICNpZmRlZiBXSVpBUkQKLS0JICAgIGlmICh3aXphcmQpIHBs aW5lKHRyaWNrYnVmKTsKLSsJICAgIGlmICh3aXphcmQpIHBsaW5lKCIlcyIsdHJpY2tidWYpOwot ICNlbmRpZgotIAkgICAgdHJpY2tlcnkodHJpY2tidWYpOwotIAl9Ci1kaWZmIC11cCBzbGFzaGVt LTAuMC44RTBGMS9zcmMvcnVtb3JzLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYx L3NyYy9ydW1vcnMuYwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9ydW1vcnMuYy5mb3JtYXQt c2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzbGFzaGVt LTAuMC44RTBGMS9zcmMvcnVtb3JzLmMJMjAxMy0xMi0wNCAwODozNToxNS43NTk4NDAxOTQgLTA3 MDAKLUBAIC0xNTIsNyArMTUyLDcgQEAgaW50IG1lY2hhbmlzbTsKLSAJICAgIAlyZXR1cm47Ci0g CSAgICBlbHNlIGlmIChCbGluZCkgewotIAkJaWYgKG1lY2hhbmlzbSA9PSBCWV9DT09LSUUpCi0t CQkJcGxpbmUoZm9ydHVuZV9tc2cpOwotKwkJCXBsaW5lKCIlcyIsZm9ydHVuZV9tc2cpOwotIAkJ cGxpbmUoIldoYXQgYSBwaXR5IHRoYXQgeW91IGNhbm5vdCByZWFkIGl0ISIpOwotIAkgICAgCXJl dHVybjsKLSAJICAgIH0KLUBAIC0xNzAsNyArMTcwLDcgQEAgaW50IG1lY2hhbmlzbTsKLSAJCWV4 ZXJjaXNlKEFfV0lTLCBUUlVFKTsKLSAJCXJldHVybjsKLSAJICAgIGNhc2UgQllfQ09PS0lFOgot LQkJcGxpbmUoZm9ydHVuZV9tc2cpOwotKwkJcGxpbmUoIiVzIixmb3J0dW5lX21zZyk7Ci0gCQkv KiBGQUxMVEhSVSAqLwotIAkgICAgY2FzZSBCWV9QQVBFUjoKLSAJCXBsaW5lKCJJdCByZWFkczoi KTsKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9zaGsuYy5mb3JtYXQtc2VjdXJpdHkg c2xhc2hlbS0wLjAuOEUwRjEvc3JjL3Noay5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3No ay5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAot KysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9zaGsuYwkyMDEzLTEyLTA0IDA5OjAzOjU1Ljk2ODY1 MDQxOCAtMDcwMAotQEAgLTY0NCw3ICs2NDQsNyBAQCByZWdpc3RlciBjaGFyICplbnRlcnN0cmlu ZzsKLSAJICAgIGlmICghaW5kZXgoZW1wdHlfc2hvcHMsICplbnRlcnN0cmluZykgJiYKLSAJCWlu X3Jvb21zKHUudXgsIHUudXksIFNIT1BCQVNFKSAhPQotIAkJCQkgIGluX3Jvb21zKHUudXgwLCB1 LnV5MCwgU0hPUEJBU0UpKQotLQkJcGxpbmUobm9fc2hrKTsKLSsJCXBsaW5lKCIlcyIsbm9fc2hr KTsKLSAJICAgIFN0cmNweShlbXB0eV9zaG9wcywgdS51c2hvcHMpOwotIAkgICAgdS51c2hvcHNb MF0gPSAnXDAnOwotIAkgICAgcmV0dXJuOwotQEAgLTY1Niw3ICs2NTYsNyBAQCByZWdpc3RlciBj aGFyICplbnRlcnN0cmluZzsKLSAJICAgIC8qIGR1bXAgY29yZSB3aGVuIHJlZmVyZW5jZWQgKi8K LSAJICAgIGVzaGtwLT5iaWxsX3AgPSAoc3RydWN0IGJpbGxfeCAqKSAtMTAwMDsKLSAJICAgIGlm ICghaW5kZXgoZW1wdHlfc2hvcHMsICplbnRlcnN0cmluZykpCi0tCQlwbGluZShub19zaGspOwot KwkJcGxpbmUoIiVzIixub19zaGspOwotIAkgICAgU3RyY3B5KGVtcHR5X3Nob3BzLCB1LnVzaG9w cyk7Ci0gCSAgICB1LnVzaG9wc1swXSA9ICdcMCc7Ci0gCSAgICByZXR1cm47Ci1AQCAtMTY3MSw3 ICsxNjcxLDcgQEAgcHJvY2VlZDoKLSAJCSAgICBlbHNlIFN0cmNhdChzYnVmLAotIAkJCSAgICJm b3IgZ29sZCBwaWNrZWQgdXAgYW5kIHRoZSB1c2Ugb2YgbWVyY2hhbmRpc2UuIik7Ci0gCQl9IGVs c2UgU3RyY2F0KHNidWYsICJmb3IgdGhlIHVzZSBvZiBtZXJjaGFuZGlzZS4iKTsKLS0JCXBsaW5l KHNidWYpOwotKwkJcGxpbmUoIiVzIixzYnVmKTsKLSAjaWZuZGVmIEdPTERPQkoKLSAJCWlmICh1 LnVnb2xkICsgZXNoa3AtPmNyZWRpdCA8IGR0bXApIHsKLSAJCSAgICBwbGluZSgiQnV0IHlvdSBk b24ndCVzIGhhdmUgZW5vdWdoIGdvbGQlcy4iLAotQEAgLTUwODQsOSArNTA4NCw5IEBAIHN0cnVj dCBtb25zdCAqc2hrcDsKLSAKLSAgICAgLyogSGVyZSB3ZSBnbyAqLwotICAgICBpZiAoc2Vydmlj ZSA+IDApCi0tCXZlcmJhbGl6ZSh3ZV9vZmZlcik7Ci0rCXZlcmJhbGl6ZSgiJXMiLHdlX29mZmVy KTsKLSAgICAgZWxzZQotLQlwbGluZShOZXZlcl9taW5kKTsKLSsJcGxpbmUoIiVzIixOZXZlcl9t aW5kKTsKLSAKLSAgICAgc3dpdGNoKHNlcnZpY2UpIHsKLSAJY2FzZSAwOgotQEAgLTUyMTcsNyAr NTIxNyw3IEBAIHNoa19hcm1vcl93b3JrcyhzbGFuZywgc2hrcCkKLSAJbiA9IHNlbGVjdF9tZW51 KHRtcHdpbiwgUElDS19PTkUsICZzZWxlY3RlZCk7Ci0gCWRlc3Ryb3lfbmh3aW5kb3codG1wd2lu KTsKLSAKLS0JdmVyYmFsaXplKHdlX29mZmVyKTsKLSsJdmVyYmFsaXplKCIlcyIsd2Vfb2ZmZXIp OwotIAotIAlpZiAobiA+IDApCi0gCXN3aXRjaChzZWxlY3RlZFswXS5pdGVtLmFfaW50KSB7Ci1k aWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvc291bmRzLmMuZm9ybWF0LXNlY3VyaXR5IHNs YXNoZW0tMC4wLjhFMEYxL3NyYy9zb3VuZHMuYwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9z b3VuZHMuYy5mb3JtYXQtc2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1My4wMDAwMDAwMDAgLTA3 MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zcmMvc291bmRzLmMJMjAxMy0xMi0wNCAwOToxNzow Ni41ODA2MTQ1MTIgLTA3MDAKLUBAIC03NSw3ICs3NSw3IEBAIGRvc291bmRzKCkKLSAJCSJ0aGUg c3BsYXNoaW5nIG9mIGEgbmFpYWQuIiwKLSAJCSJhIHNvZGEgZm91bnRhaW4hIiwKLSAJfTsKLS0J WW91X2hlYXIoZm91bnRhaW5fbXNnW3JuMigzKStoYWxsdV0pOwotKwlZb3VfaGVhcigiJXMiLGZv dW50YWluX21zZ1tybjIoMykraGFsbHVdKTsKLSAgICAgfQotICNpZmRlZiBTSU5LCi0gICAgIGlm IChsZXZlbC5mbGFncy5uc2lua3MgJiYgIXJuMigzMDApKSB7Ci1AQCAtODQsNyArODQsNyBAQCBk b3NvdW5kcygpCi0gCQkiYSBndXJnbGluZyBub2lzZS4iLAotIAkJImRpc2hlcyBiZWluZyB3YXNo ZWQhIiwKLSAJfTsKLS0JWW91X2hlYXIoc2lua19tc2dbcm4yKDIpK2hhbGx1XSk7Ci0rCVlvdV9o ZWFyKCIlcyIsc2lua19tc2dbcm4yKDIpK2hhbGx1XSk7Ci0gICAgIH0KLSAjZW5kaWYKLSAgICAg aWYgKGxldmVsLmZsYWdzLmhhc19jb3VydCAmJiAhcm4yKDIwMCkpIHsKLUBAIC0xMDMsNyArMTAz LDcgQEAgZG9zb3VuZHMoKQotIAkJLyogZmluZGluZyBvbmUgaXMgZW5vdWdoLCBhdCBsZWFzdCBm b3Igbm93ICovCi0gCQlpbnQgd2hpY2ggPSBybjIoMykraGFsbHU7Ci0gCi0tCQlpZiAod2hpY2gg IT0gMikgWW91X2hlYXIodGhyb25lX21zZ1t3aGljaF0pOwotKwkJaWYgKHdoaWNoICE9IDIpIFlv dV9oZWFyKCIlcyIsdGhyb25lX21zZ1t3aGljaF0pOwotIAkJZWxzZQkJcGxpbmUodGhyb25lX21z Z1syXSwgdWhpcygpKTsKLSAJCXJldHVybjsKLSAJICAgIH0KLUBAIC0xMTUsNyArMTE1LDcgQEAg ZG9zb3VuZHMoKQotIAkJInNtZWxsIG1hcnNoIGdhcyEiLAkvKiBzbyBpdCdzIGEgc21lbGwuLi4q LwotIAkJImhlYXIgRG9uYWxkIER1Y2shIiwKLSAJfTsKLS0JWW91KHN3YW1wX21zZ1tybjIoMikr aGFsbHVdKTsKLSsJWW91KCIlcyIsc3dhbXBfbXNnW3JuMigyKStoYWxsdV0pOwotIAlyZXR1cm47 Ci0gICAgIH0KLSAgICAgaWYgKGxldmVsLmZsYWdzLnNwb29reSAmJiAhcm4yKDIwMCkpIHsKLUBA IC0xNDUsNyArMTQ1LDcgQEAgZG9zb3VuZHMoKQotIAkJImhlYXIgc29tZW9uZSBwcmFpc2luZyB5 b3VyIHZhbG9yISIsCi0gCQkiaGVhciBzb21lb25lIHNpbmdpbmc6IFwiSmluZ2xlIGJlbGxzLCBq aW5nbGUgYmVsbHMuLi5cIiIsCi0gCX07Ci0tCVlvdShzcG9va3lfbXNnW3JuMigxNSkraGFsbHUq OV0pOwotKwlZb3UoIiVzIixzcG9va3lfbXNnW3JuMigxNSkraGFsbHUqOV0pOwotIAlyZXR1cm47 Ci0gICAgIH0KLSAgICAgaWYgKGxldmVsLmZsYWdzLmhhc192YXVsdCAmJiAhcm4yKDIwMCkpIHsK LUBAIC0yNTMsNyArMjUzLDcgQEAgZG9zb3VuZHMoKQotIAkJbW9uX2luX3Jvb20obXRtcCwgQkFS UkFDS1MpICYmCi0gCQkvKiBzbGVlcGluZyBpbXBsaWVzIG5vdC15ZXQtZGlzdHVyYmVkICh1c3Vh bGx5KSAqLwotIAkJKG10bXAtPm1zbGVlcGluZyB8fCArK2NvdW50ID4gNSkpIHsKLS0JCVlvdV9o ZWFyKGJhcnJhY2tzX21zZ1tybjIoMykraGFsbHVdKTsKLSsJCVlvdV9oZWFyKCIlcyIsYmFycmFj a3NfbXNnW3JuMigzKStoYWxsdV0pOwotIAkJcmV0dXJuOwotIAkgICAgfQotIAl9Ci1AQCAtMjY4 LDcgKzI2OCw3IEBAIGRvc291bmRzKCkKLSAJICAgIGlmIChERUFETU9OU1RFUihtdG1wKSkgY29u dGludWU7Ci0gCSAgICBpZiAoKG10bXAtPm1zbGVlcGluZyB8fCBpc19hbmltYWwobXRtcC0+ZGF0 YSkpICYmCi0gCQkgICAgbW9uX2luX3Jvb20obXRtcCwgWk9PKSkgewotLQkJWW91X2hlYXIoem9v X21zZ1tybjIoMikraGFsbHVdKTsKLSsJCVlvdV9oZWFyKCIlcyIsem9vX21zZ1tybjIoMikraGFs bHVdKTsKLSAJCXJldHVybjsKLSAJICAgIH0KLSAJfQotQEAgLTI4Niw3ICsyODYsNyBAQCBkb3Nv dW5kcygpCi0gCQkgICAgInRoZSBjaGltZSBvZiBhIGNhc2ggcmVnaXN0ZXIuIiwKLSAJCSAgICAi TmVpbWFuIGFuZCBNYXJjdXMgYXJndWluZyEiLAotIAkgICAgfTsKLS0JICAgIFlvdV9oZWFyKHNo b3BfbXNnW3JuMigyKStoYWxsdV0pOwotKwkgICAgWW91X2hlYXIoIiVzIixzaG9wX21zZ1tybjIo MikraGFsbHVdKTsKLSAJfQotIAlyZXR1cm47Ci0gICAgIH0KLUBAIC0zMDYsNyArMzA2LDcgQEAg ZG9zb3VuZHMoKQotIAkgICAgfTsKLSAJICAgIC8qIEtNSCAtLSBHaXZlIGZ1bm55IG1lc3NhZ2Vz IG9uIEdyb3VuZGhvZyBEYXkgKi8KLSAJICAgIGlmIChmbGFncy5ncm91bmRob2dkYXkpIGhhbGx1 ID0gMTsKLS0JICAgIFlvdV9oZWFyKG9yYV9tc2dbcm4yKDMpK2hhbGx1KjJdKTsKLSsJICAgIFlv dV9oZWFyKCIlcyIsb3JhX21zZ1tybjIoMykraGFsbHUqMl0pOwotIAl9Ci0gCXJldHVybjsKLSAg ICAgfQotQEAgLTMxOCw3ICszMTgsNyBAQCBkb3NvdW5kcygpCi0gICAgICAgICAiU29tZWJvZHkg d2hpc3BlcnM6IFwiRm9vZCByYXRpb25zPyBPbmx5IDkwMCB6b3JrbWlkcy5cIiIsCi0gICAgICAg ICAiWW91IGZlZWwgbGlrZSBzZWFyY2hpbmcgZm9yIG1vcmUgZ29sZC4iLAotICAgICAgIH07Ci0t ICAgICAgcGxpbmUoYmxrbWFyX21zZ1tybjIoMikraGFsbHVdKTsKLSsgICAgICBwbGluZSgiJXMi LGJsa21hcl9tc2dbcm4yKDIpK2hhbGx1XSk7Ci0gICAgIH0KLSAjZW5kaWYgLyogQkxBQ0tNQVJL RVQgKi8KLSB9Ci1AQCAtOTQyLDcgKzk0Miw3IEBAIHJlZ2lzdGVyIHN0cnVjdCBtb25zdCAqbXRt cDsKLSAgICAgfQotIAotICAgICBpZiAocGxpbmVfbXNnKSBwbGluZSgiJXMgJXMiLCBNb25uYW0o bXRtcCksIHBsaW5lX21zZyk7Ci0tICAgIGVsc2UgaWYgKHZlcmJsX21zZykgdmVyYmFsaXplKHZl cmJsX21zZyk7Ci0rICAgIGVsc2UgaWYgKHZlcmJsX21zZykgdmVyYmFsaXplKCIlcyIsdmVyYmxf bXNnKTsKLSAgICAgcmV0dXJuKDEpOwotIH0KLSAKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYx L3NyYy9zcGVsbC5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvc3BlbGwu YwotLS0tIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy9zcGVsbC5jLmZvcm1hdC1zZWN1cml0eQkyMDA2 LTEyLTMwIDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3Ny Yy9zcGVsbC5jCTIwMTMtMTItMDQgMDg6MzU6MTUuNzYzODQwMTcwIC0wNzAwCi1AQCAtMTA1OSwx NCArMTA1OSwxNCBAQCBib29sZWFuIGF0bWU7Ci0gCQlicmVhazsKLSAJY2FzZSBTUEVfSlVNUElO RzoKLSAJCWlmICghanVtcChtYXgocm9sZV9za2lsbCwxKSkpCi0tCQkJcGxpbmUobm90aGluZ19o YXBwZW5zKTsKLSsJCQlwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCQlicmVhazsKLSAJ Y2FzZSBTUEVfUkVTSVNUX1BPSVNPTjoKLSAJCWlmKCEoSFBvaXNvbl9yZXNpc3RhbmNlICYgSU5U UklOU0lDKSkgewotIAkJCVlvdSgiZmVlbCBoZWFsdGh5IC4uLi4uIGZvciB0aGUgbW9tZW50IGF0 IGxlYXN0LiIpOwotIAkJCWluY3JfaXRpbWVvdXQoJkhQb2lzb25fcmVzaXN0YW5jZSwgcm4xKDEw MDAsIDUwMCkgKwotIAkJCQlzcGVsbF9kYW1hZ2VfYm9udXMoc3BlbGxpZChzcGVsbCkpKjEwMCk7 Ci0tCQl9IGVsc2UgcGxpbmUobm90aGluZ19oYXBwZW5zKTsJLyogQWxyZWFkeSBoYXZlIGFzIGlu dHJpbnNpYyAqLwotKwkJfSBlbHNlIHBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5zKTsJLyogQWxy ZWFkeSBoYXZlIGFzIGludHJpbnNpYyAqLwotIAkJYnJlYWs7Ci0gCWNhc2UgU1BFX1JFU0lTVF9T TEVFUDoKLSAJCWlmKCEoSFNsZWVwX3Jlc2lzdGFuY2UgJiBJTlRSSU5TSUMpKSB7Ci1AQCAtMTA3 NiwxNCArMTA3NiwxNCBAQCBib29sZWFuIGF0bWU7Ci0gCQkJCVlvdSgibm8gbG9uZ2VyIGZlZWwg dGlyZWQuIik7Ci0gCQkJaW5jcl9pdGltZW91dCgmSFNsZWVwX3Jlc2lzdGFuY2UsIHJuMSgxMDAw LCA1MDApICsKLSAJCQkJc3BlbGxfZGFtYWdlX2JvbnVzKHNwZWxsaWQoc3BlbGwpKSoxMDApOwot LQkJfSBlbHNlIHBsaW5lKG5vdGhpbmdfaGFwcGVucyk7CS8qIEFscmVhZHkgaGF2ZSBhcyBpbnRy aW5zaWMgKi8KLSsJCX0gZWxzZSBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7CS8qIEFscmVh ZHkgaGF2ZSBhcyBpbnRyaW5zaWMgKi8KLSAJCWJyZWFrOwotIAljYXNlIFNQRV9FTkRVUkVfQ09M RDoKLSAJCWlmKCEoSENvbGRfcmVzaXN0YW5jZSAmIElOVFJJTlNJQykpIHsKLSAJCQlZb3UoImZl ZWwgd2FybWVyLiIpOwotIAkJCWluY3JfaXRpbWVvdXQoJkhDb2xkX3Jlc2lzdGFuY2UsIHJuMSgx MDAwLCA1MDApICsKLSAJCQkJc3BlbGxfZGFtYWdlX2JvbnVzKHNwZWxsaWQoc3BlbGwpKSoxMDAp OwotLQkJfSBlbHNlIHBsaW5lKG5vdGhpbmdfaGFwcGVucyk7CS8qIEFscmVhZHkgaGF2ZSBhcyBp bnRyaW5zaWMgKi8KLSsJCX0gZWxzZSBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7CS8qIEFs cmVhZHkgaGF2ZSBhcyBpbnRyaW5zaWMgKi8KLSAJCWJyZWFrOwotIAljYXNlIFNQRV9FTkRVUkVf SEVBVDoKLSAJCWlmKCEoSEZpcmVfcmVzaXN0YW5jZSAmIElOVFJJTlNJQykpIHsKLUBAIC0xMDkz LDcgKzEwOTMsNyBAQCBib29sZWFuIGF0bWU7Ci0gCQkJCVlvdSgiZmVlbCBjb2xkZXIuIik7Ci0g CQkJaW5jcl9pdGltZW91dCgmSEZpcmVfcmVzaXN0YW5jZSwgcm4xKDEwMDAsIDUwMCkgKwotIAkJ CQlzcGVsbF9kYW1hZ2VfYm9udXMoc3BlbGxpZChzcGVsbCkpKjEwMCk7Ci0tCQl9IGVsc2UgcGxp bmUobm90aGluZ19oYXBwZW5zKTsJLyogQWxyZWFkeSBoYXZlIGFzIGludHJpbnNpYyAqLwotKwkJ fSBlbHNlIHBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5zKTsJLyogQWxyZWFkeSBoYXZlIGFzIGlu dHJpbnNpYyAqLwotIAkJYnJlYWs7Ci0gCWNhc2UgU1BFX0lOU1VMQVRFOgotIAkJaWYoIShIU2hv Y2tfcmVzaXN0YW5jZSAmIElOVFJJTlNJQykpIHsKLUBAIC0xMTAzLDcgKzExMDMsNyBAQCBib29s ZWFuIGF0bWU7Ci0gCQkJCVlvdSgiYXJlIG5vdCBhdCBhbGwgc2hvY2tlZCBieSB0aGlzIGZlZWxp bmcuIik7Ci0gCQkJaW5jcl9pdGltZW91dCgmSFNob2NrX3Jlc2lzdGFuY2UsIHJuMSgxMDAwLCA1 MDApICsKLSAJCQkJc3BlbGxfZGFtYWdlX2JvbnVzKHNwZWxsaWQoc3BlbGwpKSoxMDApOwotLQkJ fSBlbHNlIHBsaW5lKG5vdGhpbmdfaGFwcGVucyk7CS8qIEFscmVhZHkgaGF2ZSBhcyBpbnRyaW5z aWMgKi8KLSsJCX0gZWxzZSBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7CS8qIEFscmVhZHkg aGF2ZSBhcyBpbnRyaW5zaWMgKi8KLSAJCWJyZWFrOwotIAljYXNlIFNQRV9FTkxJR0hURU46IAot IAkJWW91KCJmZWVsIHNlbGYta25vd2xlZGdlYWJsZS4uLiIpOwotZGlmZiAtdXAgc2xhc2hlbS0w LjAuOEUwRjEvc3JjL3N0ZWVkLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3Ny Yy9zdGVlZC5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3N0ZWVkLmMuZm9ybWF0LXNlY3Vy aXR5CTIwMTMtMTItMDQgMDg6NDI6MTIuNTA1NDY5NTQ2IC0wNzAwCi0rKysgc2xhc2hlbS0wLjAu OEUwRjEvc3JjL3N0ZWVkLmMJMjAxMy0xMi0wNCAwODo0MzowNS4wNDMyNTM5NTIgLTA3MDAKLUBA IC01OCw3ICs1OCw3IEBAIHVzZV9zYWRkbGUob3RtcCkKLSAKLSAJLyogU2VsZWN0IGFuIGFuaW1h bCAqLwotIAlpZiAodS51c3dhbGxvdyB8fCBVbmRlcndhdGVyIHx8ICFnZXRkaXIoKGNoYXIgKikw KSkgewotLQkgICAgcGxpbmUoTmV2ZXJfbWluZCk7Ci0rCSAgICBwbGluZSgiJXMiLE5ldmVyX21p bmQpOwotIAkgICAgcmV0dXJuIDA7Ci0gCX0KLSAJaWYgKCF1LmR4ICYmICF1LmR5KSB7Ci1kaWZm IC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvdGVjaC5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVt LTAuMC44RTBGMS9zcmMvdGVjaC5jCi0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3RlY2guYy5m b3JtYXQtc2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBz bGFzaGVtLTAuMC44RTBGMS9zcmMvdGVjaC5jCTIwMTMtMTItMDQgMDg6NTg6MzQuNTMxMjYwNTA1 IC0wNzAwCi1AQCAtNzM1LDcgKzczNSw3IEBAIGludCB0ZWNoX25vOwotIAkJICAgIGhlYWx1cCh0 ZWNobGV2KHRlY2hfbm8pICogNCwgMCwgRkFMU0UsIEZBTFNFKTsKLSAJCSAgICB0X3RpbWVvdXQg PSAzMDAwOwotIAkJfSBlbHNlCi0tCQkgICAgcGxpbmUobm90aGluZ19oYXBwZW5zKTsKLSsJCSAg ICBwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCQlicmVhazsKLSAgICAgICAgICAgICBj YXNlIFRfS0lJSToKLSAJCVlvdSgic2NyZWFtIFwiS0lJSUxMTCFcIiIpOwotQEAgLTEwOTgsNyAr MTA5OCw3IEBAIGludCB0ZWNoX25vOwotIAkJYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSBUX1JF VklWRTogCi0gCQlpZiAodS51c3dhbGxvdykgewotLQkJICAgIFlvdShub19lbGJvd19yb29tKTsK LSsJCSAgICBZb3UoIiVzIixub19lbGJvd19yb29tKTsKLSAJCSAgICByZXR1cm4gMDsKLSAJCX0K LSAgICAgICAgICAgICAJbnVtID0gMTAwIC0gdGVjaGxldih0ZWNoX25vKTsgLyogV0FDIG1ha2Ug dGhpcyBkZXBlbmQgb24gbW9uPyAqLwotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3Rl bGVwb3J0LmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90ZWxlcG9ydC5j Ci0tLS0gc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3RlbGVwb3J0LmMuZm9ybWF0LXNlY3VyaXR5CTIw MDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEv c3JjL3RlbGVwb3J0LmMJMjAxMy0xMi0wNCAwODo1OTozMy42Nzg5NzEwMzQgLTA3MDAKLUBAIC00 OTcsNyArNDk3LDcgQEAgd2l6X2RlYnVnX2NtZCgpIC8qIGluIHRoaXMgY2FzZSwgcnVuIHdwYQot ICAgICBjaGFyIGJ1ZltCVUZTSVpdOwotICAgICBmb3IoaSA9IDA7IDsgaSsrKSB7Ci0gCWlmKGkg Pj0gNSkgewotLQkgICAgcGxpbmUodGhhdHNfZW5vdWdoX3RyaWVzKTsKLSsJICAgIHBsaW5lKCIl cyIsdGhhdHNfZW5vdWdoX3RyaWVzKTsKLSAJICAgIHJldHVybjsKLSAJfQotIAlnZXRsaW4oIldo YXQgbW9uc3RlciBkbyB5b3Ugd2FudCB0byB0ZXN0PyBbdHlwZSB0aGUgbmFtZV0iLCBidWYpOwot QEAgLTkzNCw3ICs5MzQsNyBAQCBkb3RlbGUoKQotIAkJZWxzZSB0ZWxlKCk7Ci0gCQkodm9pZCkg bmV4dF90b191KCk7Ci0gCX0gZWxzZSB7Ci0tCQlZb3Uoc2h1ZGRlcl9mb3JfbW9tZW50KTsKLSsJ CVlvdSgiJXMiLHNodWRkZXJfZm9yX21vbWVudCk7Ci0gCQlyZXR1cm4oMCk7Ci0gCX0KLSAJaWYg KCF0cmFwKSBtb3JlaHVuZ3J5KDEwKTsKLUBAIC0xMDY2LDcgKzEwNjYsNyBAQCBsZXZlbF90ZWxl KCkKLSAJCSAgICBJc19ibGFja21hcmtldCgmdS51eikgfHwKLSAjZW5kaWYKLSAJCSAgICBJc19h bGlnbmVkX3F1ZXN0KCZ1LnV6KSkgJiYgbmV3bGV2ID4gMCkgewotLQkJWW91KHNodWRkZXJfZm9y X21vbWVudCk7Ci0rCQlZb3UoIiVzIixzaHVkZGVyX2Zvcl9tb21lbnQpOwotIAkJcmV0dXJuOwot IAkgICAgfQotIAkgICAgLyogaWYgaW4gUXVlc3QsIHRoZSBwbGF5ZXIgc2VlcyAiSG9tZSAxIiwg ZXRjLiwgb24gdGhlIHN0YXR1cwotQEAgLTEwODMsMTMgKzEwODMsMTMgQEAgbGV2ZWxfdGVsZSgp Ci0gIHJhbmRvbV9sZXZ0cG9ydDoKLSAJICAgIG5ld2xldiA9IHJhbmRvbV90ZWxlcG9ydF9sZXZl bCgpOwotIAkgICAgaWYgKG5ld2xldiA9PSBkZXB0aCgmdS51eikpIHsKLS0JCVlvdShzaHVkZGVy X2Zvcl9tb21lbnQpOwotKwkJWW91KCIlcyIsc2h1ZGRlcl9mb3JfbW9tZW50KTsKLSAJCXJldHVy bjsKLSAJICAgIH0KLSAJfQotIAotIAlpZiAoIW5leHRfdG9fdSgpKSB7Ci0tCQlZb3Uoc2h1ZGRl cl9mb3JfbW9tZW50KTsKLSsJCVlvdSgiJXMiLHNodWRkZXJfZm9yX21vbWVudCk7Ci0gCQlyZXR1 cm47Ci0gCX0KLSAjaWZkZWYgV0laQVJECi1AQCAtMTIyOSw3ICsxMjI5LDcgQEAgcmVnaXN0ZXIg c3RydWN0IHRyYXAgKnR0bXA7Ci0gCXN0cnVjdCBkX2xldmVsIHRhcmdldF9sZXZlbDsKLSAKLSAJ aWYgKCFuZXh0X3RvX3UoKSkgewotLQkJWW91KHNodWRkZXJfZm9yX21vbWVudCk7Ci0rCQlZb3Uo IiVzIixzaHVkZGVyX2Zvcl9tb21lbnQpOwotIAkJcmV0dXJuOwotIAl9Ci0gCi1AQCAtMTI2Myw3 ICsxMjYzLDcgQEAgc3RydWN0IHRyYXAgKnRyYXA7Ci0gCQkJc2hpZWxkZWZmKHUudXgsIHUudXkp OwotIAkJWW91X2ZlZWwoImEgd3JlbmNoaW5nIHNlbnNhdGlvbi4iKTsKLSAJfSBlbHNlIGlmICgh bmV4dF90b191KCkpIHsKLS0JCVlvdShzaHVkZGVyX2Zvcl9tb21lbnQpOwotKwkJWW91KCIlcyIs c2h1ZGRlcl9mb3JfbW9tZW50KTsKLSAJfSBlbHNlIGlmICh0cmFwLT5vbmNlKSB7Ci0gCQlkZWx0 cmFwKHRyYXApOwotIAkJbmV3c3ltKHUudXgsdS51eSk7CS8qIGdldCByaWQgb2YgdHJhcCBzeW1i b2wgKi8KLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90aW1lb3V0LmMuZm9ybWF0LXNl Y3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90aW1lb3V0LmMKLS0tLSBzbGFzaGVtLTAuMC44 RTBGMS9zcmMvdGltZW91dC5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUzLjAw MDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90aW1lb3V0LmMJMjAxMy0x Mi0wNCAwODo1ODo0My4yNTgyMTc4MTQgLTA3MDAKLUBAIC0zMyw3ICszMyw3IEBAIHN0b25lZF9k aWFsb2d1ZSgpCi0gCXJlZ2lzdGVyIGxvbmcgaSA9IChTdG9uZWQgJiBUSU1FT1VUKTsKLSAKLSAJ aWYgKGkgPiAwTCAmJiBpIDw9IFNJWkUoc3RvbmVkX3RleHRzKSkKLS0JCXBsaW5lKHN0b25lZF90 ZXh0c1tTSVpFKHN0b25lZF90ZXh0cykgLSBpXSk7Ci0rCQlwbGluZSgiJXMiLHN0b25lZF90ZXh0 c1tTSVpFKHN0b25lZF90ZXh0cykgLSBpXSk7Ci0gCWlmIChpID09IDVMKQotIAkJSEZhc3QgPSAw TDsKLSAJaWYgKGkgPT0gM0wpIHsKLUBAIC02MCw3ICs2MCw3IEBAIHZvbWl0aW5nX2RpYWxvZ3Vl KCkKLSAKLSAJaWYgKCgoKFZvbWl0aW5nICYgVElNRU9VVCkgJSAzTCkgPT0gMikgJiYgKGkgPj0g MCkKLSAJICAgICYmIChpIDwgU0laRSh2b21pdGluZ190ZXh0cykpKQotLQkJWW91KHZvbWl0aW5n X3RleHRzW1NJWkUodm9taXRpbmdfdGV4dHMpIC0gaSAtIDFdKTsKLSsJCVlvdSgiJXMiLHZvbWl0 aW5nX3RleHRzW1NJWkUodm9taXRpbmdfdGV4dHMpIC0gaSAtIDFdKTsKLSAKLSAJc3dpdGNoICgo aW50KSBpKSB7Ci0gCWNhc2UgMDoKLUBAIC0xMDcsNyArMTA3LDcgQEAgY2hva2VfZGlhbG9ndWUo KQotIAkJaWYgKGluZGV4KHN0ciwgJyUnKSkKLSAJCSAgICBwbGluZShzdHIsIGhjb2xvcihOSF9C TFVFKSk7Ci0gCQllbHNlCi0tCQkgICAgcGxpbmUoc3RyKTsKLSsJCSAgICBwbGluZSgiJXMiLHN0 cik7Ci0gCSAgICB9Ci0gCX0KLSAJZXhlcmNpc2UoQV9TVFIsIEZBTFNFKTsKLUBAIC0xMzcsNyAr MTM3LDcgQEAgc2xpbWVfZGlhbG9ndWUoKQotIAkJfSBlbHNlCi0gCQkgICAgcGxpbmUoc3RyLCBh bihIYWxsdWNpbmF0aW9uID8gcm5kbW9ubmFtKCkgOiAiZ3JlZW4gc2xpbWUiKSk7Ci0gCSAgICB9 IGVsc2UKLS0JCXBsaW5lKHN0cik7Ci0rCQlwbGluZSgiJXMiLHN0cik7Ci0gCX0KLSAJaWYgKGkg PT0gM0wpIHsJLyogbGltYnMgYmVjb21pbmcgb296eSAqLwotIAkgICAgSEZhc3QgPSAwTDsJLyog bG9zZSBpbnRyaW5zaWMgc3BlZWQgKi8KLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90 cmFwLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90cmFwLmMKLS0tLSBz bGFzaGVtLTAuMC44RTBGMS9zcmMvdHJhcC5jLmZvcm1hdC1zZWN1cml0eQkyMDEzLTEyLTA0IDA4 OjQ4OjE0LjE5ODE1NDEzNiAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3NyYy90cmFwLmMJ MjAxMy0xMi0wNCAwODo1OToxOC4wNTkwNDc1NTIgLTA3MDAKLUBAIC0zNjUsNyArMzY1LDcgQEAg Ym9vbGVhbiB0ZDsJLyogdGQgPT0gVFJVRSA6IHRyYXAgZG9vciBvcgotIAkgICAgZG9udF9mYWxs ID0gImFyZSBqZXJrZWQgYmFjayBieSB5b3VyIHBldCEiOwotIAl9Ci0gCWlmIChkb250X2ZhbGwp IHsKLS0JICAgIFlvdShkb250X2ZhbGwpOwotKwkgICAgWW91KCIlcyIsZG9udF9mYWxsKTsKLSAJ ICAgIC8qIGhlcm8gZGlkbid0IGZhbGwgdGhyb3VnaCwgYnV0IGFueSBvYmplY3RzIGhlcmUgbWln aHQgKi8KLSAJICAgIGltcGFjdF9kcm9wKChzdHJ1Y3Qgb2JqICopMCwgdS51eCwgdS51eSwgMCk7 Ci0gCSAgICBpZiAoIXRkKSB7Ci1AQCAtMjYxMyw3ICsyNjEzLDcgQEAgZG9tYWdpY3RyYXAoKQot IAkgIGlmICghcmVzaXN0c19ibG5kKCZ5b3Vtb25zdCkpIHsKLSAJCVlvdSgiYXJlIG1vbWVudGFy aWx5IGJsaW5kZWQgYnkgYSBmbGFzaCBvZiBsaWdodCEiKTsKLSAJCW1ha2VfYmxpbmRlZCgobG9u ZylybjEoNSwxMCksRkFMU0UpOwotLQkJaWYgKCFCbGluZCkgWW91cih2aXNpb25fY2xlYXJzKTsK LSsJCWlmICghQmxpbmQpIFlvdXIoIiVzIix2aXNpb25fY2xlYXJzKTsKLSAJICB9IGVsc2UgaWYg KCFCbGluZCkgewotIAkJWW91KCJzZWUgYSBmbGFzaCBvZiBsaWdodCEiKTsKLSAJICB9ICBlbHNl Ci1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvdWhpdG0uYy5mb3JtYXQtc2VjdXJpdHkg c2xhc2hlbS0wLjAuOEUwRjEvc3JjL3VoaXRtLmMKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYx L3NyYy91X2luaXQuYy5mb3JtYXQtc2VjdXJpdHkgc2xhc2hlbS0wLjAuOEUwRjEvc3JjL3VfaW5p dC5jCi1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS9zcmMvd2l6YXJkLmMuZm9ybWF0LXNlY3Vy aXR5IHNsYXNoZW0tMC4wLjhFMEYxL3NyYy93aXphcmQuYwotZGlmZiAtdXAgc2xhc2hlbS0wLjAu OEUwRjEvc3JjL3phcC5jLmZvcm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvemFw LmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9zcmMvemFwLmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYt MTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvc3Jj L3phcC5jCTIwMTMtMTItMDQgMDk6MjA6MDQuMjQ1NzA0MjI1IC0wNzAwCi1AQCAtMjE4MCw3ICsy MTgwLDcgQEAgZG96YXAoKQotIAljaGVja191bnBhaWQob2JqKTsKLSAKLSAJLyogemFwcGFibGUg YWRkaXRpb24gZG9uZSBieSBHQU4gMTEvMDMvODYgKi8KLS0JaWYoIXphcHBhYmxlKG9iaikpIHBs aW5lKG5vdGhpbmdfaGFwcGVucyk7Ci0rCWlmKCF6YXBwYWJsZShvYmopKSBwbGluZSgiJXMiLG5v dGhpbmdfaGFwcGVucyk7Ci0gCWVsc2UgaWYob2JqLT5jdXJzZWQgJiYgIXJuMig1KSkgewotIAkJ LyogV0FDIG1hZGUgdGhpcyBybjIoNSkgZnJvbSBybjIoMTAwKSovCi0gCQliYWNrZmlyZShvYmop OyAgLyogdGhlIHdhbmQgYmxvd3MgdXAgaW4geW91ciBmYWNlISAqLwotQEAgLTIzODMsOSArMjM4 Myw5IEBAIGJvb2xlYW4gb3JkaW5hcnk7Ci0gCQkgICAgZGVzdHJveV9pdGVtKFdBTkRfQ0xBU1Ms IEFEX0VMRUMpOwotIAkJICAgIGRlc3Ryb3lfaXRlbShSSU5HX0NMQVNTLCBBRF9FTEVDKTsKLSAJ CSAgICBpZiAoIXJlc2lzdHNfYmxuZCgmeW91bW9uc3QpKSB7Ci0tCQkJICAgIFlvdShhcmVfYmxp bmRlZF9ieV90aGVfZmxhc2gpOwotKwkJCSAgICBZb3UoIiVzIixhcmVfYmxpbmRlZF9ieV90aGVf Zmxhc2gpOwotIAkJCSAgICBtYWtlX2JsaW5kZWQoKGxvbmcpcm5kKDEwMCksRkFMU0UpOwotLQkJ CSAgICBpZiAoIUJsaW5kKSBZb3VyKHZpc2lvbl9jbGVhcnMpOwotKwkJCSAgICBpZiAoIUJsaW5k KSBZb3VyKCIlcyIsdmlzaW9uX2NsZWFycyk7Ci0gCQkgICAgfQotIAkJICAgIGJyZWFrOwotIAot QEAgLTI1OTksMTAgKzI1OTksMTAgQEAgYm9vbGVhbiBvcmRpbmFyeTsKLSAjZW5kaWYKLSAJCSAg ICBkYW1hZ2UgKz0gcm5kKDI1KTsKLSAJCSAgICBpZiAoIXJlc2lzdHNfYmxuZCgmeW91bW9uc3Qp KSB7Ci0tCQkJWW91KGFyZV9ibGluZGVkX2J5X3RoZV9mbGFzaCk7Ci0rCQkJWW91KCIlcyIsYXJl X2JsaW5kZWRfYnlfdGhlX2ZsYXNoKTsKLSAJCQltYWtlX2JsaW5kZWQoKGxvbmcpZGFtYWdlLCBG QUxTRSk7Ci0gCQkJbWFrZWtub3duKG9iai0+b3R5cCk7Ci0tCQkJaWYgKCFCbGluZCkgWW91cih2 aXNpb25fY2xlYXJzKTsKLSsJCQlpZiAoIUJsaW5kKSBZb3VyKCIlcyIsdmlzaW9uX2NsZWFycyk7 Ci0gCQkgICAgfQotIAkJICAgIGRhbWFnZSA9IDA7CS8qIHJlc2V0ICovCi0gCQkgICAgYnJlYWs7 Ci1AQCAtMjkwOCw3ICsyOTA4LDcgQEAgc3RydWN0IG9iaiAqb2JqOwkvKiB3YW5kIG9yIHNwZWxs ICovCi0gCWNhc2UgU1BFX1NUT05FX1RPX0ZMRVNIOgotIAkgICAgaWYgKElzX2FpcmxldmVsKCZ1 LnV6KSB8fCBJc193YXRlcmxldmVsKCZ1LnV6KSB8fAotIAkJICAgICBVbmRlcndhdGVyIHx8IChJ c19xc3RhcnQoJnUudXopICYmIHUuZHogPCAwKSkgewotLQkJcGxpbmUobm90aGluZ19oYXBwZW5z KTsKLSsJCXBsaW5lKCIlcyIsbm90aGluZ19oYXBwZW5zKTsKLSAJICAgIH0gZWxzZSBpZiAodS5k eiA8IDApIHsJLyogd2Ugc2hvdWxkIGRvIG1vcmUuLi4gKi8KLSAJCXBsaW5lKCJCbG9vZCBkcmlw cyBvbiB5b3VyICVzLiIsIGJvZHlfcGFydChGQUNFKSk7Ci0gCSAgICB9IGVsc2UgaWYgKHUuZHog PiAwICYmICFPQkpfQVQodS51eCwgdS51eSkpIHsKLUBAIC0yOTE5LDcgKzI5MTksNyBAQCBzdHJ1 Y3Qgb2JqICpvYmo7CS8qIHdhbmQgb3Igc3BlbGwgKi8KLSAJCWUgPSBlbmdyX2F0KHUudXgsIHUu dXkpOwotIAkJaWYgKCEoZSAmJiBlLT5lbmdyX3R5cGUgPT0gRU5HUkFWRSkpIHsKLSAJCSAgICBp ZiAoaXNfcG9vbCh1LnV4LCB1LnV5KSB8fCBpc19pY2UodS51eCwgdS51eSkpCi0tCQkJcGxpbmUo bm90aGluZ19oYXBwZW5zKTsKLSsJCQlwbGluZSgiJXMiLG5vdGhpbmdfaGFwcGVucyk7Ci0gCQkg ICAgZWxzZQotIAkJCXBsaW5lKCJCbG9vZCAlc3MgJXMgeW91ciAlcy4iLAotIAkJCSAgICAgIGlz X2xhdmEodS51eCwgdS51eSkgPyAiYm9pbCIgOiAicG9vbCIsCi1AQCAtNDE5OSw5ICs0MTk5LDkg QEAgcmVnaXN0ZXIgaW50IGR4LGR5OwotIAkJcGxpbmUoIiVzIHdoaXp6ZXMgYnkgeW91ISIsIFRo ZShmbHR4dCkpOwotIAkgICAgfQotIAkgICAgaWYgKGFic3R5cGUgPT0gWlRfTElHSFROSU5HICYm ICFyZXNpc3RzX2JsbmQoJnlvdW1vbnN0KSkgewotLQkJWW91KGFyZV9ibGluZGVkX2J5X3RoZV9m bGFzaCk7Ci0rCQlZb3UoIiVzIixhcmVfYmxpbmRlZF9ieV90aGVfZmxhc2gpOwotIAkJbWFrZV9i bGluZGVkKChsb25nKWQobmQsNTApLEZBTFNFKTsKLS0JCWlmICghQmxpbmQpIFlvdXIodmlzaW9u X2NsZWFycyk7Ci0rCQlpZiAoIUJsaW5kKSBZb3VyKCIlcyIsdmlzaW9uX2NsZWFycyk7Ci0gCSAg ICB9Ci0gCSAgICBzdG9wX29jY3VwYXRpb24oKTsKLSAJICAgIG5vbXVsKDApOwotQEAgLTQzNzQs NyArNDM3NCw3IEBAIGJvb2xlYW4gKnNob3BkYW1hZ2U7Ci0gCQkgICAgaWYgKHR0bXApIHR0bXAt PnRzZWVuID0gMTsKLSAJCSAgICBpZiAoY2Fuc2VlKHgseSkpIG1zZ3R4dCA9ICJUaGUgd2F0ZXIg ZXZhcG9yYXRlcy4iOwotIAkJfQotLQkJTm9yZXAobXNndHh0KTsKLSsJCU5vcmVwKCIlcyIsbXNn dHh0KTsKLSAJCWlmIChsZXYtPnR5cCA9PSBST09NKSBuZXdzeW0oeCx5KTsKLSAJICAgIH0gZWxz ZSBpZihJU19GT1VOVEFJTihsZXYtPnR5cCkpIHsKLSAJCSAgICBpZiAoY2Fuc2VlKHgseSkpCi1A QCAtNDUwNiwxMiArNDUwNiwxMiBAQCBib29sZWFuICpzaG9wZGFtYWdlOwotIAkJICAgIGxldi0+ ZG9vcm1hc2sgPSBuZXdfZG9vcm1hc2s7Ci0gCQkgICAgdW5ibG9ja19wb2ludCh4LCB5KTsJLyog dmlzaW9uICovCi0gCQkgICAgaWYgKGNhbnNlZSh4LCB5KSkgewotLQkJCXBsaW5lKHNlZV90eHQp OwotKwkJCXBsaW5lKCIlcyIsc2VlX3R4dCk7Ci0gCQkJbmV3c3ltKHgsIHkpOwotIAkJICAgIH0g ZWxzZSBpZiAoc2Vuc2VfdHh0KSB7Ci0tCQkJWW91KHNlbnNlX3R4dCk7Ci0rCQkJWW91KCIlcyIs c2Vuc2VfdHh0KTsKLSAJCSAgICB9IGVsc2UgaWYgKGhlYXJfdHh0KSB7Ci0tCQkJaWYgKGZsYWdz LnNvdW5kb2spIFlvdV9oZWFyKGhlYXJfdHh0KTsKLSsJCQlpZiAoZmxhZ3Muc291bmRvaykgWW91 X2hlYXIoIiVzIixoZWFyX3R4dCk7Ci0gCQkgICAgfQotIAkJICAgIGlmIChwaWNraW5nX2F0KHgs IHkpKSB7Ci0gCQkJc3RvcF9vY2N1cGF0aW9uKCk7Ci1AQCAtNDk0MSw3ICs0OTQxLDcgQEAgcmV0 cnk6Ci0gCWlmICghb3RtcCkgewotIAkgICAgcGxpbmUoIk5vdGhpbmcgZml0dGluZyB0aGF0IGRl c2NyaXB0aW9uIGV4aXN0cyBpbiB0aGUgZ2FtZS4iKTsKLSAJICAgIGlmICgrK3RyaWVzIDwgNSkg Z290byByZXRyeTsKLS0JICAgIHBsaW5lKHRoYXRzX2Vub3VnaF90cmllcyk7Ci0rCSAgICBwbGlu ZSgiJXMiLHRoYXRzX2Vub3VnaF90cmllcyk7Ci0gCSAgICBvdG1wID0gcmVhZG9iam5hbSgoY2hh ciAqKTAsIChzdHJ1Y3Qgb2JqICopMCwgVFJVRSk7Ci0gCSAgICBpZiAoIW90bXApIHJldHVybjsJ LyogZm9yIHNhZmV0eTsgc2hvdWxkIG5ldmVyIGhhcHBlbiAqLwotIAl9IGVsc2UgaWYgKG90bXAg PT0gJm5vdGhpbmcpIHsKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS90eHQy aWZmLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS90eHQyaWZm LmMKLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS93aW5jaGFyLmMuZm9ybWF0 LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS93aW5jaGFyLmMKLWRpZmYgLXVw IHNsYXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS93aW5tZW51LmMuZm9ybWF0LXNlY3VyaXR5IHNs YXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS93aW5tZW51LmMKLS0tLSBzbGFzaGVtLTAuMC44RTBG MS9zeXMvYW1pZ2Evd2lubWVudS5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMwIDA2OjA0OjUz LjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3N5cy9hbWlnYS93aW5tZW51 LmMJMjAxMy0xMi0wNCAwODozNToxNS43Njk4NDAxMzMgLTA3MDAKLUBAIC04MjIsNyArODIyLDcg QEAgRG9NZW51U2Nyb2xsKCB3aW4sIGJsb2NraW5nLCBob3csIHJldG1pcAotIAkJCQlyZXNldF9j b3VudGluZyA9IFRSVUU7Ci0gCQkJICAgIH0KLSAJCQkgICAgc3ByaW50Zihjb3VudFN0cmluZywg IkNvdW50OiAlZCIsIGNvdW50KTsKLS0JCQkgICAgcGxpbmUoY291bnRTdHJpbmcpOwotKwkJCSAg ICBwbGluZSgiJXMiLGNvdW50U3RyaW5nKTsKLSAJCQl9Ci0gCQkgICAgfSBlbHNlIGlmKCBjb2Rl ID09IENUUkwoJ0QnKSB8fCBjb2RlID09IENUUkwoJ1UnKSB8fAotIAkJCSAgICAgICBjb2RlID09 IE1FTlVfTkVYVF9QQUdFIHx8IGNvZGUgPT0gTUVOVV9QUkVWSU9VU19QQUdFIHx8Ci1kaWZmIC11 cCBzbGFzaGVtLTAuMC44RTBGMS9zeXMvc2hhcmUvbmhsYW4uYy5mb3JtYXQtc2VjdXJpdHkgc2xh c2hlbS0wLjAuOEUwRjEvc3lzL3NoYXJlL25obGFuLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS9z eXMvc2hhcmUvbmhsYW4uYy5mb3JtYXQtc2VjdXJpdHkJMjAwNi0xMi0zMCAwNjowNDo1My4wMDAw MDAwMDAgLTA3MDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS9zeXMvc2hhcmUvbmhsYW4uYwkyMDEz LTEyLTA0IDA4OjM1OjE1Ljc3MDg0MDEyNyAtMDcwMAotQEAgLTY2LDcgKzY2LDcgQEAgY2hhciAq bGFuX3VzZXJuYW1lKCkKLSAjIGlmZGVmIExBTl9NQUlMCi0gI2lmIDAKLSBzdGF0aWMgdm9pZAot LW1haWxfYnlfcGxpbmUobXNnKQotK21haWxfYnlfcGxpbmUoIiVzIixtc2cpCi0gc3RydWN0IGxh bl9tYWlsX3N0cnVjdCAqbXNnOwotIHsKLSAJbG9uZwlzaXplOwotQEAgLTc0LDcgKzc0LDcgQEAg c3RydWN0IGxhbl9tYWlsX3N0cnVjdCAqbXNnOwotIAlmb3IgKHNpemUgPSAwOyBzaXplIDwgcXRf bXNnLT5zaXplOyBzaXplICs9IChsb25nKXN0cmxlbihpbl9saW5lKSkgewotIAkgICAgKHZvaWQp IGRsYl9mZ2V0cyhpbl9saW5lLCA4MCwgbXNnX2ZpbGUpOwotIAkgICAgY29udmVydF9saW5lKCk7 Ci0tCSAgICBwbGluZShvdXRfbGluZSk7Ci0rCSAgICBwbGluZSgiJXMiLG91dF9saW5lKTsKLSAJ fQotIAotIH0KLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3N5cy92bXMvdm1zbWFpbC5jLmZv cm1hdC1zZWN1cml0eSBzbGFzaGVtLTAuMC44RTBGMS9zeXMvdm1zL3Ztc21haWwuYwotZGlmZiAt dXAgc2xhc2hlbS0wLjAuOEUwRjEvdXRpbC9tYWtlZGVmcy5jLmZvcm1hdC1zZWN1cml0eSBzbGFz aGVtLTAuMC44RTBGMS91dGlsL21ha2VkZWZzLmMKLS0tLSBzbGFzaGVtLTAuMC44RTBGMS91dGls L21ha2VkZWZzLmMuZm9ybWF0LXNlY3VyaXR5CTIwMDYtMTItMzAgMDY6MDQ6NTMuMDAwMDAwMDAw IC0wNzAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvdXRpbC9tYWtlZGVmcy5jCTIwMTMtMTItMDQg MDg6MzU6MTUuNzcxODQwMTIxIC0wNzAwCi1AQCAtMzg0LDcgKzM4NCw3IEBAIGRvX3J1bW9ycygp Ci0gCQlwZXJyb3IoZmlsZW5hbWUpOwotIAkJZXhpdChFWElUX0ZBSUxVUkUpOwotIAl9Ci0tCUZw cmludGYob2ZwLERvbnRfRWRpdF9EYXRhKTsKLSsJRnByaW50ZihvZnAsIiVzIixEb250X0VkaXRf RGF0YSk7Ci0gCi0gCVNwcmludGYoaW5maWxlLCBEQVRBX0lOX1RFTVBMQVRFLCBSVU1PUl9GSUxF KTsKLSAJU3RyY2F0KGluZmlsZSwgIi50cnUiKTsKLUBAIC02MDgsNyArNjA4LDcgQEAgZG9fZGF0 ZSgpCi0gCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0gCX0KLSAJRnByaW50ZihvZnAsIi8qXHRTQ0NT IElkOiBAKCMpZGF0ZS5oXHQzLjRcdDIwMDIvMDIvMDMgKi9cblxuIik7Ci0tCUZwcmludGYob2Zw LERvbnRfRWRpdF9Db2RlKTsKLSsJRnByaW50ZihvZnAsIiVzIixEb250X0VkaXRfQ29kZSk7Ci0g Ci0gI2lmZGVmIEtSMUVECi0gCSh2b2lkKSB0aW1lKCZjbG9ja3RpbSk7Ci1AQCAtMTM4OCw3ICsx Mzg4LDcgQEAgZG9fZHVuZ2VvbigpCi0gCQlwZXJyb3IoZmlsZW5hbWUpOwotIAkJZXhpdChFWElU X0ZBSUxVUkUpOwotIAl9Ci0tCUZwcmludGYob2ZwLERvbnRfRWRpdF9EYXRhKTsKLSsJRnByaW50 ZihvZnAsIiVzIixEb250X0VkaXRfRGF0YSk7Ci0gCi0gCXdoaWxlIChmZ2V0cyhpbl9saW5lLCBz aXplb2YgaW5fbGluZSwgaWZwKSAhPSAwKSB7Ci0gCSAgICBTcGluQ3Vyc29yKDMpOwotQEAgLTE1 MTMsNyArMTUxMyw3IEBAIGRvX21vbnN0cigpCi0gCXBlcnJvcihmaWxlbmFtZSk7Ci0gCWV4aXQo RVhJVF9GQUlMVVJFKTsKLSAgICAgfQotLSAgICBGcHJpbnRmKG9mcCxEb250X0VkaXRfQ29kZSk7 Ci0rICAgIEZwcmludGYob2ZwLCIlcyIsRG9udF9FZGl0X0NvZGUpOwotICAgICBGcHJpbnRmKG9m cCwiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iKTsKLSAgICAgRnByaW50ZihvZnAsIlxuY29uc3Qg aW50IG1vbnN0cltdID0ge1xuIik7Ci0gICAgIGZvciAocHRyID0gJm1vbnNbMF0sIGogPSAwOyBw dHItPm1sZXQ7IHB0cisrKSB7Ci1AQCAtMTU1NCw3ICsxNTU0LDcgQEAgZG9fcGVybW9uc3QoKQot IAkJZXhpdChFWElUX0ZBSUxVUkUpOwotIAl9Ci0gCUZwcmludGYob2ZwLCIvKlx0U0NDUyBJZDog QCgjKXBtLmhcdDMuNFx0MjAwMi8wMi8wMyAqL1xuXG4iKTsKLS0JRnByaW50ZihvZnAsRG9udF9F ZGl0X0NvZGUpOwotKwlGcHJpbnRmKG9mcCwiJXMiLERvbnRfRWRpdF9Db2RlKTsKLSAJRnByaW50 ZihvZnAsIiNpZm5kZWYgUE1fSFxuI2RlZmluZSBQTV9IXG4iKTsKLSAKLSAJaWYgKHN0cmNtcCht b25zWzBdLm1uYW1lLCAicGxheWVybW9uIikgIT0gMCkKLUBAIC0xODY5LDcgKzE4NjksNyBAQCBk b19vYmpzKCkKLSAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKLSAJfQotIAlGcHJpbnRmKG9mcCwiLypc dFNDQ1MgSWQ6IEAoIylvbmFtZXMuaFx0My40XHQyMDAyLzAyLzAzICovXG5cbiIpOwotLQlGcHJp bnRmKG9mcCxEb250X0VkaXRfQ29kZSk7Ci0rCUZwcmludGYob2ZwLCIlcyIsRG9udF9FZGl0X0Nv ZGUpOwotIAlGcHJpbnRmKG9mcCwiI2lmbmRlZiBPTkFNRVNfSFxuI2RlZmluZSBPTkFNRVNfSFxu XG4iKTsKLSAKLSAJZm9yKGkgPSAwOyAhaSB8fCBvYmplY3RzW2ldLm9jX2NsYXNzICE9IElMTE9C Sl9DTEFTUzsgaSsrKSB7Ci1AQCAtMjAyNCw3ICsyMDI0LDcgQEAgZG9fdmlzaW9uKCkKLSAJcGVy cm9yKGZpbGVuYW1lKTsKLSAJZXhpdChFWElUX0ZBSUxVUkUpOwotICAgICB9Ci0tICAgIEZwcmlu dGYob2ZwLERvbnRfRWRpdF9Db2RlKTsKLSsgICAgRnByaW50ZihvZnAsIiVzIixEb250X0VkaXRf Q29kZSk7Ci0gICAgIEZwcmludGYob2ZwLCIjaWZkZWYgVklTSU9OX1RBQkxFU1xuIik7Ci0gI2lm ZGVmIFZJU0lPTl9UQUJMRVMKLSAgICAgSF9jbG9zZV9nZW4oKTsKLUBAIC0yMDQ5LDcgKzIwNDks NyBAQCBkb192aXNpb24oKQotIAlVbmxpbmsoZmlsZW5hbWUpOwotIAlleGl0KEVYSVRfRkFJTFVS RSk7Ci0gICAgIH0KLS0gICAgRnByaW50ZihvZnAsRG9udF9FZGl0X0NvZGUpOwotKyAgICBGcHJp bnRmKG9mcCwiJXMiLERvbnRfRWRpdF9Db2RlKTsKLSAgICAgRnByaW50ZihvZnAsIiNpbmNsdWRl IFwiY29uZmlnLmhcIlxuIik7Ci0gICAgIEZwcmludGYob2ZwLCIjaWZkZWYgVklTSU9OX1RBQkxF U1xuIik7Ci0gICAgIEZwcmludGYob2ZwLCIjaW5jbHVkZSBcInZpc190YWIuaFwiXG4iKTsKLUBA IC0yMzgxLDcgKzIzODEsNyBAQCBkb19maWxlbmFtZXMoKQotIAkJZXhpdChFWElUX0ZBSUxVUkUp OwotICAgICB9Ci0gICAgIEZwcmludGYob2ZwLCIvKlx0U0NDUyBJZDogQCgjKWZpbGVuYW1lLmhc dDMuMlx0OTYvMDUvMTcgKi9cblxuIik7Ci0tICAgIEZwcmludGYob2ZwLERvbnRfRWRpdF9Db2Rl KTsKLSsgICAgRnByaW50ZihvZnAsIiVzIixEb250X0VkaXRfQ29kZSk7Ci0gCi0gLypPUEVOIGZp bGUqLwotICAgICBTcHJpbnRmKGluZmlsZSwgSU5DTFVERV9URU1QTEFURSwgRklMRV9IKTsKLWRp ZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYxL3dpbi9wcm94eS93aW5wcm94eS5jLmZvcm1hdC1zZWN1 cml0eSBzbGFzaGVtLTAuMC44RTBGMS93aW4vcHJveHkvd2lucHJveHkuYwotLS0tIHNsYXNoZW0t MC4wLjhFMEYxL3dpbi9wcm94eS93aW5wcm94eS5jLmZvcm1hdC1zZWN1cml0eQkyMDA2LTEyLTMw IDA2OjA0OjUzLjAwMDAwMDAwMCAtMDcwMAotKysrIHNsYXNoZW0tMC4wLjhFMEYxL3dpbi9wcm94 eS93aW5wcm94eS5jCTIwMTMtMTItMDQgMDg6MzU6MTUuNzcxODQwMTIxIC0wNzAwCi1AQCAtNDIy LDcgKzQyMiw3IEBAIGNvbnN0IGNoYXIgKmVycm9yOwotIAkodm9pZCkgZmZsdXNoKHN0ZGVycik7 Ci0gCWhhbmd1cCgwKTsKLSAgICAgfSBlbHNlIHsKLS0JcGxpbmUoZXJyb3IpOwotKwlwbGluZSgi JXMiLGVycm9yKTsKLSAJcGxpbmUoIlByb2dyYW0gaW4gZGlzb3JkZXIgLSBwZXJoYXBzIHlvdSdk IGJldHRlciAjcXVpdC4iKTsKLSAgICAgfQotIH0KLWRpZmYgLXVwIHNsYXNoZW0tMC4wLjhFMEYx L3dpbi93aW4zMi93aW5oYWNrLmMuZm9ybWF0LXNlY3VyaXR5IHNsYXNoZW0tMC4wLjhFMEYxL3dp bi93aW4zMi93aW5oYWNrLmMKCmRpZmYgLS1naXQgYS9zbGFzaGVtLWxpYnBuZy0xLjUucGF0Y2gg Yi9zbGFzaGVtLWxpYnBuZy0xLjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGIwOTUxMWMuLjAwMDAwMDAKLS0tIGEvc2xhc2hlbS1saWJwbmctMS41LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMzIgKzAsMCBAQAotZGlmZiAtdXAgc2xhc2hlbS0wLjAuOEUwRjEvd2luL2ds L2dsX2ltYWdlLmMubGlicG5nIHNsYXNoZW0tMC4wLjhFMEYxL3dpbi9nbC9nbF9pbWFnZS5jCi0t LS0gc2xhc2hlbS0wLjAuOEUwRjEvd2luL2dsL2dsX2ltYWdlLmMubGlicG5nCTIwMDYtMTItMzAg MTQ6MDQ6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgc2xhc2hlbS0wLjAuOEUwRjEvd2luL2dsL2ds X2ltYWdlLmMJMjAxMi0wMS0xNSAwMToxMzo1NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00OTUsNyAr NDk1LDcgQEAgdW5zaWduZWQgY2hhciAqc2RsZ2xfbG9hZF9wbmdfZmlsZShjb25zdAotICAgLyog c2V0IGVycm9yIGhhbmRsaW5nIHNpbmNlIHdlIGFyZSB1c2luZyB0aGUgc2V0am1wL2xvbmdqbXAg bWV0aG9kCi0gICAgKiAodGhpcyBpcyB0aGUgbm9ybWFsIG1ldGhvZCBvZiBkb2luZyB0aGluZ3Mg d2l0aCBsaWJwbmcpLgotICAgICovCi0tICBpZiAoc2V0am1wKHBuZ19wdHItPmptcGJ1ZikpCi0r ICBpZiAoc2V0am1wKHBuZ19qbXBidWYocG5nX3B0cikpKQotICAgewotICAgICBzZGxnbF93YXJu aW5nKCJQcm9ibGVtIHdpdGhpbiBMaWJQTkcgKHVua25vd24pXG4iKTsKLSAgICAgZ290byBmYWls ZWQ7Ci1kaWZmIC11cCBzbGFzaGVtLTAuMC44RTBGMS93aW4vc2hhcmUvdGlsZTJwbmcuYy5saWJw bmcgc2xhc2hlbS0wLjAuOEUwRjEvd2luL3NoYXJlL3RpbGUycG5nLmMKLS0tLSBzbGFzaGVtLTAu MC44RTBGMS93aW4vc2hhcmUvdGlsZTJwbmcuYy5saWJwbmcJMjAxMi0wMS0xNSAwMToxNDowOC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBzbGFzaGVtLTAuMC44RTBGMS93aW4vc2hhcmUvdGlsZTJwbmcu YwkyMDEyLTAxLTE1IDAxOjI1OjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTI2LDYgKzI2LDcgQEAK LSAjdW5kZWYgYmx1ZQotIAotICNpbmNsdWRlIDxwbmcuaD4KLSsjaW5jbHVkZSA8emxpYi5oPgot ICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLUBAIC0xMDQsNyArMTA1LDcgQEAgdm9pZCBzYXZl X3BuZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50Ci0gICAvKiBzZXQgZXJyb3IgaGFuZGxpbmcg c2luY2Ugd2UgYXJlIHVzaW5nIHRoZSBzZXRqbXAvbG9uZ2ptcCBtZXRob2QKLSAgICAqICh0aGlz IGlzIHRoZSBub3JtYWwgbWV0aG9kIG9mIGRvaW5nIHRoaW5ncyB3aXRoIGxpYnBuZykuCi0gICAg Ki8KLS0gIGlmIChzZXRqbXAocG5nX3B0ci0+am1wYnVmKSkKLSsgIGlmIChzZXRqbXAocG5nX2pt cGJ1ZihwbmdfcHRyKSkpCi0gICB7Ci0gICAgIGZwcmludGYoc3RkZXJyLCAidGlsZTJwbmc6IFVu a25vd24gcHJvYmxlbSB3aGlsZSB3cml0aW5nIFBORy5cbiIpOwotICAgICBnb3RvIGZhaWxlZDsK CmRpZmYgLS1naXQgYS9zbGFzaGVtLmFwcGRhdGEueG1sIGIvc2xhc2hlbS5hcHBkYXRhLnhtbApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY1YzE4MC4uMDAwMDAwMAotLS0gYS9zbGFz aGVtLmFwcGRhdGEueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotPD94bWwgdmVy c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0gQ29weXJpZ2h0IDIwMTQgRGF2aWQg S2luZyA8YW1pZ2FkYXZlQGFtaWdhZGF2ZS5jb20+IC0tPgotPGFwcGxpY2F0aW9uPgotICAgIDxp ZCB0eXBlPSJkZXNrdG9wIj5zbGFzaGVtLmRlc2t0b3A8L2lkPgotICAgIDxuYW1lPlNsYXNoJ0VN PC9uYW1lPgotICAgIDxzdW1tYXJ5PlNsYXNoJ0VNIGlzIGEgc2luZ2xlIHBsYXllciBkdW5nZW9u IGV4cGxvcmF0aW9uIGdhbWU8L3N1bW1hcnk+Ci0gICAgPG1ldGFkYXRhX2xpY2Vuc2U+Q0MwLTEu MDwvbWV0YWRhdGFfbGljZW5zZT4KLSAgICA8cHJvamVjdF9saWNlbnNlPk5HUEw8L3Byb2plY3Rf bGljZW5zZT4KLSAgICA8ZGVzY3JpcHRpb24+Ci0gICAgICAgIDxwPlNsYXNoJ0VNIChTdXBlciBM b3RzYSBBZGRlZCBTdHVmZiBIYWNrIC0gRXh0ZW5kZWQgTWFnaWMpIGlzIGEKLSAgICAgICAgdmFy aWFudCBvZiB0aGUgcm9ndWVsaWtlIGdhbWUgTmV0SGFjayB0aGF0IG9mZmVycyBleHRyYSBmZWF0 dXJlcywKLSAgICAgICAgbW9uc3RlcnMsIGxldmVscyBhbmQgaXRlbXMuPC9wPgotICAgIDwvZGVz Y3JpcHRpb24+Ci0gICAgPHVybCB0eXBlPSJob21lcGFnZSI+aHR0cDovL3NsYXNoZW0uc291cmNl Zm9yZ2UubmV0LzwvdXJsPgotICAgIDx1cGRhdGVjb250YWN0PmFtaWdhZGF2ZUBhbWlnYWRhdmUu Y29tPC91cGRhdGVjb250YWN0PgotPC9hcHBsaWNhdGlvbj4KCmRpZmYgLS1naXQgYS9zbGFzaGVt LmRlc2t0b3AgYi9zbGFzaGVtLmRlc2t0b3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDA2MDU5NTkuLjAwMDAwMDAKLS0tIGEvc2xhc2hlbS5kZXNrdG9wCisrKyAvZGV2L251bGwKQEAg LTEsOCArMCwwIEBACi1bRGVza3RvcCBFbnRyeV0KLU5hbWU9U2xhc2gnRU0KLUNvbW1lbnQ9U2xh c2gnRU0gaXMgYSBzaW5nbGUgcGxheWVyIGR1bmdlb24gZXhwbG9yYXRpb24gZ2FtZQotRXhlYz1z bGFzaGVtCi1JY29uPXNsYXNoZW0KLVRlcm1pbmFsPXRydWUKLVR5cGU9QXBwbGljYXRpb24KLUNh dGVnb3JpZXM9R2FtZTtBZHZlbnR1cmVHYW1lO1JvbGVQbGF5aW5nO1gtRmVkb3JhOwoKZGlmZiAt LWdpdCBhL3NsYXNoZW0uc3BlYyBiL3NsYXNoZW0uc3BlYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggOTI4Y2ZkMi4uMDAwMDAwMAotLS0gYS9zbGFzaGVtLnNwZWMKKysrIC9kZXYvbnVs bApAQCAtMSwzMDMgKzAsMCBAQAotIyB0aGlzIGNvZGUgaXMgcXVpdGUgb2xkLCBub3QgY29tcGF0 aWJsZSB3aXRoIGxhdGVzdCBzdGFuZGFyZHMKLSVnbG9iYWwgYnVpbGRfdHlwZV9zYWZldHlfYyAy Ci0KLU5hbWU6ICAgICAgICAgICBzbGFzaGVtCi1WZXJzaW9uOiAgICAgICAgMC4wLjgKLVJlbGVh c2U6ICAgICAgICAwLjQyLkUwRjElez9kaXN0fQotU3VtbWFyeTogICAgICAgIFN1cGVyIExvdHNh IEFkZGVkIFN0dWZmIEhhY2sgLSBFeHRlbmRlZCBNYWdpYwotCi1MaWNlbnNlOiAgICAgICAgTkdQ TAotVVJMOiAgICAgICAgICAgIGh0dHBzOi8vc2xhc2hlbS5zb3VyY2Vmb3JnZS5uZXQvCi1Tb3Vy Y2UwOiAgICAgICAgaHR0cHM6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0LyV7bmFtZX0vc2Uw MDhlMGYxLnRhci5negotU291cmNlMTogICAgICAgICV7bmFtZX0uZGVza3RvcAotU291cmNlMjog ICAgICAgICV7bmFtZX0uYXBwZGF0YS54bWwKLVBhdGNoMDogICAgICAgICBzbGFzaGVtLWNvbmZp Zy5wYXRjaAotIyBmaXggYnVpbGRpbmcgd2l0aCBsaWJwbmcgMS41Ci1QYXRjaDE6ICAgICAgICAg c2xhc2hlbS1saWJwbmctMS41LnBhdGNoCi0jIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9z aG93X2J1Zy5jZ2k/aWQ9MTAzNzMzMAotUGF0Y2gyOiAgICAgICAgIHNsYXNoZW0tZm9ybWF0LXNl Y3VyaXR5LnBhdGNoCi0jIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Avc2xhc2hlbS9idWdzLzk2 My8KLVBhdGNoMzogICAgICAgICBzbGFzaGVtLWFkZC1GREVDTHMtYzk5LnBhdGNoCi1QYXRjaDQ6 ICAgICAgICAgc2xhc2hlbS1jb25maWd1cmUtYzk5LnBhdGNoCi1QYXRjaDU6ICAgICAgICAgc2xh c2hlbS1jOTkucGF0Y2gKLQotQnVpbGRSZXF1aXJlczogIGdjYwotQnVpbGRSZXF1aXJlczogIG1h a2UKLUJ1aWxkUmVxdWlyZXM6ICAvdXNyL2Jpbi9hcHBzdHJlYW0tdXRpbAotQnVpbGRSZXF1aXJl czogIC91c3IvYmluL2NvbnZlcnQKLUJ1aWxkUmVxdWlyZXM6ICBuY3Vyc2VzLWRldmVsCi1CdWls ZFJlcXVpcmVzOiAgYmlzb24sIGZsZXgsIGRlc2t0b3AtZmlsZS11dGlscwotQnVpbGRSZXF1aXJl czogIGJkZnRvcGNmLCBsaWJYMTEtZGV2ZWwsIGxpYlhleHQtZGV2ZWwKLUJ1aWxkUmVxdWlyZXM6 ICBsaWJYbXUtZGV2ZWwsIGxpYlhwbS1kZXZlbCwgbGliWHQtZGV2ZWwKLUJ1aWxkUmVxdWlyZXM6 ICBTREwtZGV2ZWwgIGxpYkdMLWRldmVsIGxpYnBuZy1kZXZlbCB6bGliLWRldmVsCi1CdWlsZFJl cXVpcmVzOiAgcGtnY29uZmlnKHhhdzcpCi0jIHRvIGNvbXByZXNzIHNhdmUgZmlsZXMKLVJlcXVp cmVzOiAgICAgICBiemlwMgotIyBGb3IgaWNvbiB0aGVtZSBkaXJlY3Rvcmllcy4KLVJlcXVpcmVz OiAgICAgICBoaWNvbG9yLWljb24tdGhlbWUKLSMgZm9yIFgxMSBjb3JlIGZvbnRzCi1SZXF1aXJl czogICAgICAgbmV0aGFjay1iaXRtYXAtZm9udHMtY29yZQotCi0leyE/X3BrZ2RvY2RpcjogJWds b2JhbCBfcGtnZG9jZGlyICV7X2RvY2Rpcn0vJXtuYW1lfS0le3ZlcnNpb259fQotCi0lZ2xvYmFs IGZhX3ZhciAgICAgIC92YXIvZ2FtZXMvJXtuYW1lfQotJWdsb2JhbCBmYV9zYXZlICAgICAvdmFy L2dhbWVzLyV7bmFtZX0vc2F2ZQotJWdsb2JhbCBmYV9zaGFyZSAgICAle19kYXRhZGlyfS9nYW1l cy8le25hbWV9Ci0lZ2xvYmFsIGZhX3Vuc2hhcmUgICV7X2xpYmRpcn0vZ2FtZXMvJXtuYW1lfQot JWdsb2JhbCBmYV9kb2MgICAgICAle19wa2dkb2NkaXJ9Ci0KLSVkZXNjcmlwdGlvbgotRnJvbSB0 aGUgbGFuZCBiZWZvcmUgM0RGWCwgYmVmb3JlIFZHQSBncmFwaGljcyBhbmQgRE9PTSwgYmVmb3Jl IHRoZSBJQk0gUEMsIHdheQotYmFjayBpbiB0aGUgZGFyayBhZ2VzIG9mIFVuaXhsYW5kLCB0aGVy ZSB3YXMgYSBnYW1lLiBUaGV5IGNhbGxlZCBpdCBSb2d1ZS4KLVBlb3BsZSBwbGF5ZWQgaXQsIGFu ZCBmb3VuZCBpdCBnb29kLiBGcm9tIHRoaXMgYmFzaXMsIEhhY2sgd2FzIGJvcm4uIFNvb24gSGFj awotYmVjYW1lIE5ldGhhY2ssIGJlY2F1c2UgaXQgd2FzIGRldmVsb3BlZCBieSBtYW55IHBlb3Bs ZSAoYW5kIGhhcyBub3RoaW5nIHRvIGRvCi13aXRoIGhhY2tpbmcgdGhlIGludGVybmV0KS4gQW5k IHBlb3BsZSBwbGF5ZWQgdGhpcyBvbiBtYW55IG1hY2hpbmVzLCBmcm9tCi1VbmljZXMgdG8gTWFj cyB0byBQQ3MsIGR1ZSB0byB0aGUgYW1hemluZyBwb3dlciBvZiBPcGVuIFNvdXJjZSBDb2RlLgot Ci1CdXQgdGhlIERldlRlYW0sIHRoZSByZWNsdXNpdmUgbWFzdGVybWluZHMgb2YgTmV0aGFjaywg YXJlIGEgcmF0aGVyIHF1aWV0Ci1idW5jaCwgZ3JhY2luZyB0aGUgd29ybGQgd2l0aCBuZXcgdmVy c2lvbnMgYXMgdGhleSBzZWUgZml0LCBhbmQgd2hlbiB0aGV5IHNlZQotZml0LiBXaGljaCBpcyB1 c3VhbGx5IGEgbmV3IHZlcnNpb24gZXZlcnkgZ29vZCBudW1iZXIgb2YgeWVhcnMuCi0KLUFuZCB0 aGVyZSB3YXMgbXVjaCBnbmFzaGluZyBvZiB0ZWV0aC4KLQotQnV0IGJlY2F1c2Ugb2YgdGhlIEZy ZWVseSBBdmFpbGFibGUgU291cmNlIENvZGUgUGhlbm9tZW5vbiwgcGVvcGxlIGJlZ2FuIG1ha2lu ZwotdGhlaXIgb3duIHZlcnNpb25zIG9mIE5ldGhhY2sgdG8gdGlkZSB0aGVtc2VsdmVzIGJldHdl ZW4gbWFnaWNhbCByZWxlYXNlcy4KLQotU0xBU0gnRU0gaXMgdGhlIChjb250aW51aW5nKSBzYWdh IG9mIG9uZSBzdWNoIHZhcmlhbnQuLi4KLQotCi0lcHJlcAotJWF1dG9zZXR1cCAtcDEgLW4gJXtu YW1lfS0le3ZlcnNpb259RTBGMQotCi1zZWQgLWkgXAotICAgIC1lICdzOl5cKCNkZWZpbmUgRklM RV9BUkVBX1ZBUlwpLio6XDEgIiV7ZmFfdmFyfS8iOicgXAotICAgIC1lICdzOl5cKCNkZWZpbmUg RklMRV9BUkVBX1NBVkVcKS4qOlwxICIle2ZhX3NhdmV9LyI6JyAgXAotICAgIC1lICdzOl5cKCNk ZWZpbmUgRklMRV9BUkVBX1NIQVJFXCkuKjpcMSAiJXtmYV9zaGFyZX0vIjonIFwKLSAgICAtZSAn czpeXCgjZGVmaW5lIEZJTEVfQVJFQV9VTlNIQVJFXCkuKjpcMSAiJXtmYV91bnNoYXJlfS8iOicg XAotICAgIC1lICdzOl5cKCNkZWZpbmUgRklMRV9BUkVBX0RPQ1wpLio6XDEgIiV7ZmFfZG9jfS8i OicgXAotICAgIGluY2x1ZGUvdW5peGNvbmYuaAotCi1mb3IgZiBpbiAqLnR4dCA7IGRvCi0gIGlj b252IC1mIGlzbzg4NTktMSAtdCB1dGYtOCAkZiA+JGYuY29udgotICB0b3VjaCAtciAkZiAkZi5j b252Ci0gIG12ICRmLmNvbnYgJGYKLWRvbmUKLQotCi0lYnVpbGQKLSMgdGhpcyBjb2RlIGlzIHF1 aXRlIG9sZCwgbm90IGNvbXBhdGlibGUgd2l0aCBsYXRlc3Qgc3RhbmRhcmRzCi1leHBvcnQgQ0ZM QUdTPSIkQ0ZMQUdTIC1zdGQ9Z251OTkiCi1leHBvcnQgTElCWEFXX0NGTEFHUz0iLUkvdXNyL2lu Y2x1ZGUiCi1leHBvcnQgTElCWEFXX0xJQlM9IiQocGtnLWNvbmZpZyAtLWxpYnMgeGF3NykiCi0l Y29uZmlndXJlIFwKLSAgICAtLWVuYWJsZS10dHktZ3JhcGhpY3MgICBcCi0gICAgLS1lbmFibGUt eDExLWdyYXBoaWNzICAgXAotICAgIC0tZW5hYmxlLXNkbC1ncmFwaGljcyAgIFwKLSAgICAtLWVu YWJsZS1nbC1ncmFwaGljcyAgICBcCi0gICAgLS1lbmFibGUtZGF0YS1saWJyYXJpYW4gXAotICAg IC0tZW5hYmxlLXNpbmtzICAgICAgICAgIFwKLSAgICAtLWVuYWJsZS1yZWluY2FybmF0aW9uICBc Ci0gICAgLS1lbmFibGUtem91dGhlcm4gICAgICAgXAotICAgIC0tZW5hYmxlLXNjb3JlLW9uLWJv dGwgIFwKLSAgICAtLWVuYWJsZS13aXptb2RlPWdhbWVzCi0jIHNtcF9tZmxhZ3MgZmFpbHMKLW1h a2UgXAotICAgIEZJTEVfQVJFQV9WQVI9JXtmYV92YXJ9IFwKLSAgICBGSUxFX0FSRUFfU0FWRT0l e2ZhX3NhdmV9IFwKLSAgICBGSUxFX0FSRUFfU0hBUkU9JXtmYV9zaGFyZX0gXAotICAgIEZJTEVf QVJFQV9VTlNIQVJFPSV7ZmFfdW5zaGFyZX0gXAotICAgIEZJTEVfQVJFQV9ET0M9JXtmYV9kb2N9 IFwKLSAgICBTSEVMTERJUj0le19iaW5kaXJ9Ci0KLQotJWluc3RhbGwKLW1ha2UgaW5zdGFsbCBE RVNURElSPSV7YnVpbGRyb290fSBcCi0gICAgRklMRV9BUkVBX1ZBUj0le2J1aWxkcm9vdH0le2Zh X3Zhcn0gXAotICAgIEZJTEVfQVJFQV9TQVZFPSV7YnVpbGRyb290fSV7ZmFfc2F2ZX0gXAotICAg IEZJTEVfQVJFQV9TSEFSRT0le2J1aWxkcm9vdH0le2ZhX3NoYXJlfSBcCi0gICAgRklMRV9BUkVB X1VOU0hBUkU9JXtidWlsZHJvb3R9JXtmYV91bnNoYXJlfSBcCi0gICAgRklMRV9BUkVBX0RPQz0l e2J1aWxkcm9vdH0le2ZhX2RvY30gXAotICAgIElOU1RBTEw9Imluc3RhbGwgLXAiIFwKLSAgICBT SEVMTERJUj0le2J1aWxkcm9vdH0le19iaW5kaXJ9IFwKLSAgICBDSE9XTj0vYmluL3RydWUgXAot ICAgIENIR1JQPS9iaW4vdHJ1ZQotCi1pbnN0YWxsIC1kIC1tIDA3NTUgJXtidWlsZHJvb3R9JXtf bWFuZGlyfS9tYW42Ci1tYWtlIC1DIGRvYyBNQU5ESVI9JXtidWlsZHJvb3R9JXtfbWFuZGlyfS9t YW42IG1hbnBhZ2VzCi0KLXNlZCAtaSBcCi0gICAgLWUgJ3MhJXtidWlsZHJvb3R9ISFnJyBcCi0g ICAgLWUgJy9YVVNFUkZJTEUvcyFcJEhBQ0tESVIhJXtmYV9zaGFyZX0hJyBcCi0gICAgJXtidWls ZHJvb3R9JXtfYmluZGlyfS9zbGFzaGVtCi0KLW12ICV7YnVpbGRyb290fSV7ZmFfdW5zaGFyZX0v cmVjb3ZlciAle2J1aWxkcm9vdH0le19iaW5kaXJ9L3NsYXNoZW0tcmVjb3ZlcgotbXYgJXtidWls ZHJvb3R9JXtfbWFuZGlyfS9tYW42L3JlY292ZXIuNiAle2J1aWxkcm9vdH0le19tYW5kaXJ9L21h bjYvc2xhc2hlbS1yZWNvdmVyLjYKLXJtICV7YnVpbGRyb290fSV7X21hbmRpcn0vbWFuNi9bXnNd Kgotcm0gJXtidWlsZHJvb3R9JXtfcGtnZG9jZGlyfS9saWNlbnNlCi0KLXNlZCAtaSAtZSAnczpe IVwoU2xhc2hFTS50aWxlX2ZpbGUuKlwpOlwxOicgJXtidWlsZHJvb3R9JXtmYV9zaGFyZX0vU2xh c2hFTS5hZAotCi1pbnN0YWxsIC1kICV7YnVpbGRyb290fSV7X2RhdGFkaXJ9L2ljb25zL2hpY29s b3IvNDh4NDgvYXBwcwotY29udmVydCB3aW4vWDExL25oX2ljb24ueHBtICV7YnVpbGRyb290fSV7 X2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy8le25hbWV9LnBuZwotZGVza3RvcC1m aWxlLWluc3RhbGwgLS1kaXIgJXtidWlsZHJvb3R9JXtfZGF0YWRpcn0vYXBwbGljYXRpb25zICV7 U09VUkNFMX0KLWluc3RhbGwgLURwbSAwNjQ0ICV7U09VUkNFMn0gJXtidWlsZHJvb3R9JXtfZGF0 YWRpcn0vYXBwZGF0YS8le25hbWV9LmFwcGRhdGEueG1sCi0KLQotJWNoZWNrCi1kZXNrdG9wLWZp bGUtdmFsaWRhdGUgJXtidWlsZHJvb3R9JXtfZGF0YWRpcn0vYXBwbGljYXRpb25zLyouZGVza3Rv cAotYXBwc3RyZWFtLXV0aWwgdmFsaWRhdGUtcmVsYXggLS1ub25ldCAle2J1aWxkcm9vdH0le19k YXRhZGlyfS9hcHBkYXRhLyV7bmFtZX0uYXBwZGF0YS54bWwKLQotCi0lZmlsZXMKLSVkb2MgaGlz dG9yeS50eHQgZG9jLyoudHh0IFJFQURNRS4zNCByZWFkbWUuKiBzbGFtZmFxLnR4dCBkYXQvaGlz dG9yeQotJWxpY2Vuc2UgZGF0L2xpY2Vuc2UKLSV7X2JpbmRpcn0vc2xhc2hlbQotJXtfYmluZGly fS9zbGFzaGVtLXJlY292ZXIKLSV7ZmFfc2hhcmV9Ci0lZGlyICV7ZmFfdW5zaGFyZX0KLSV7ZmFf dW5zaGFyZX0vbmh1c2hhcmUKLSV7X21hbmRpcn0vbWFuNi8qLjYqCi0le19kYXRhZGlyfS9hcHBk YXRhLyV7bmFtZX0uYXBwZGF0YS54bWwKLSV7X2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9zbGFzaGVt LmRlc2t0b3AKLSV7X2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy8le25hbWV9LnBu ZwotJWRlZmF0dHIoMDY2NCxyb290LGdhbWVzKQotJWNvbmZpZyhub3JlcGxhY2UpICV7ZmFfdmFy fS9sb2dmaWxlCi0lY29uZmlnKG5vcmVwbGFjZSkgJXtmYV92YXJ9L3Blcm0KLSVjb25maWcobm9y ZXBsYWNlKSAle2ZhX3Zhcn0vcmVjb3JkCi0lYXR0cigwNzc1LHJvb3QsZ2FtZXMpICVkaXIgJXtm YV92YXJ9Ci0lYXR0cigwNzc1LHJvb3QsZ2FtZXMpICVkaXIgJXtmYV92YXJ9L3NhdmUKLSVhdHRy KDI3NTUscm9vdCxnYW1lcykgJXtmYV91bnNoYXJlfS9zbGFzaGVtCi0KLQotJWNoYW5nZWxvZwot KiBTYXQgSmFuIDE3IDIwMjYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRv cmFwcm9qZWN0Lm9yZz4gLSAwLjAuOC0wLjQyLkUwRjEKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9m ZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80NF9NYXNzX1JlYnVpbGQKLQotKiBGcmkgSnVs IDI1IDIwMjUgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0 Lm9yZz4gLSAwLjAuOC0wLjQxLkUwRjEKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9q ZWN0Lm9yZy93aWtpL0ZlZG9yYV80M19NYXNzX1JlYnVpbGQKLQotKiBTdW4gSmFuIDE5IDIwMjUg RmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAw LjAuOC0wLjQwLkUwRjEKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93 aWtpL0ZlZG9yYV80Ml9NYXNzX1JlYnVpbGQKLQotKiBTYXQgSnVsIDIwIDIwMjQgRmVkb3JhIFJl bGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAwLjAuOC0wLjM5 LkUwRjEKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9y YV80MV9NYXNzX1JlYnVpbGQKLQotKiBTYXQgSmFuIDI3IDIwMjQgRmVkb3JhIFJlbGVhc2UgRW5n aW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAwLjAuOC0wLjM4LkUwRjEKLS0g UmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80MF9NYXNz X1JlYnVpbGQKLQotKiBTYXQgSnVsIDIyIDIwMjMgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcg PHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAwLjAuOC0wLjM3LkUwRjEKLS0gUmVidWlsdCBm b3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8zOV9NYXNzX1JlYnVpbGQK LQotKiBNb24gSmFuIDMwIDIwMjMgRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4g LSAwLjAuOC0wLjM2LkUwRjEKLS0gRnVydGhlciBDOTkgY29tcGF0aWJpbGl0eSBmaXhlcwotCi0q IFNhdCBKYW4gMjEgMjAyMyBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9y YXByb2plY3Qub3JnPiAtIDAuMC44LTAuMzUuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2Zl ZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM4X01hc3NfUmVidWlsZAotCi0qIFNhdCBKYW4g MTQgMjAyMyBQZXRlciBGb3JkaGFtIDxwZXRlci5mb3JkaGFtQGdtYWlsLmNvbT4gLSAwLjAuOC0w LjM0LkUwRjEKLS0gQWRkIG1pc3NpbmcgRm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIHJlbmFtZV9h cmVhIGFuZCByZW1vdmVfYXJlYSBhbmQgZml4IGEgY2FsbC1zaXRlLgotLSBQb3J0IGNvbmZpZ3Vy ZSBzY3JpcHQgdG8gQzk5LgotCi0qIFNhdCBKdWwgMjMgMjAyMiBGZWRvcmEgUmVsZWFzZSBFbmdp bmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMzMuRTBGMQotLSBS ZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM3X01hc3Nf UmVidWlsZAotCi0qIFNhdCBKYW4gMjIgMjAyMiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8 cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMzIuRTBGMQotLSBSZWJ1aWx0IGZv ciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM2X01hc3NfUmVidWlsZAot Ci0qIEZyaSBKdWwgMjMgMjAyMSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZl ZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMzEuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczov L2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM1X01hc3NfUmVidWlsZAotCi0qIFdlZCBK YW4gMjcgMjAyMSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2pl Y3Qub3JnPiAtIDAuMC44LTAuMzAuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXBy b2plY3Qub3JnL3dpa2kvRmVkb3JhXzM0X01hc3NfUmVidWlsZAotCi0qIFdlZCBKdWwgMjkgMjAy MCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAt IDAuMC44LTAuMjkuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3Jn L3dpa2kvRmVkb3JhXzMzX01hc3NfUmVidWlsZAotCi0qIFRodSBKYW4gMzAgMjAyMCBGZWRvcmEg UmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAu MjguRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVk b3JhXzMyX01hc3NfUmVidWlsZAotCi0qIEZyaSBKdWwgMjYgMjAxOSBGZWRvcmEgUmVsZWFzZSBF bmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMjcuRTBGMQot LSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzMxX01h c3NfUmVidWlsZAotCi0qIFNhdCBGZWIgMDIgMjAxOSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmlu ZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMjYuRTBGMQotLSBSZWJ1aWx0 IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzMwX01hc3NfUmVidWls ZAotCi0qIFNhdCBKdWwgMTQgMjAxOCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5n QGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMjUuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRw czovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI5X01hc3NfUmVidWlsZAotCi0qIEZy aSBGZWIgMDkgMjAxOCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXBy b2plY3Qub3JnPiAtIDAuMC44LTAuMjQuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9y YXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI4X01hc3NfUmVidWlsZAotCi0qIFRodSBBdWcgMDMg MjAxNyBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3Jn PiAtIDAuMC44LTAuMjMuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qu b3JnL3dpa2kvRmVkb3JhXzI3X0JpbnV0aWxzX01hc3NfUmVidWlsZAotCi0qIFRodSBKdWwgMjcg MjAxNyBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3Jn PiAtIDAuMC44LTAuMjIuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qu b3JnL3dpa2kvRmVkb3JhXzI3X01hc3NfUmVidWlsZAotCi0qIFNhdCBGZWIgMTEgMjAxNyBGZWRv cmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44 LTAuMjEuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kv RmVkb3JhXzI2X01hc3NfUmVidWlsZAotCi0qIEZyaSBGZWIgMDUgMjAxNiBGZWRvcmEgUmVsZWFz ZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMjAuRTBG MQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI0 X01hc3NfUmVidWlsZAotCi0qIFR1ZSBTZXAgMjIgMjAxNSBEYXZpZCBLaW5nIDxhbWlnYWRhdmVA YW1pZ2FkYXZlLmNvbT4gLSAwLjAuOC0wLjE5LkUwRjEKLS0gQ29udmVydCBYUE0gaWNvbiB0aGUg UE5HCi0KLSogRnJpIEp1biAxOSAyMDE1IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwt ZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuMTguRTBGMQotLSBSZWJ1aWx0 IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzIzX01hc3NfUmVidWls ZAotCi0qIFRodSBOb3YgMjAgMjAxNCBEYXZpZCBLaW5nIDxhbWlnYWRhdmVAYW1pZ2FkYXZlLmNv bT4gLSAwLjAuOC0wLjE3LkUwRjEKLS0gVXBkYXRlIGRlc2t0b3AgZmlsZSBhbmQgdmFsaWRhdGUg aXQgZHVyaW5nIGNoZWNrCi0tIEFkZCBBcHBEYXRhIGRlc2NyaXB0aW9uIGFuZCB2YWxpZGF0ZSBp dCBkdXJpbmcgY2hlY2sKLS0gUHJlc2VydmUgdGltZXN0YW1wcyBkdXJpbmcgaW5zdGFsbAotLSBU aWR5IHNwZWMgZmlsZQotCi0qIE1vbiBBdWcgMTggMjAxNCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVl cmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFwcm9qZWN0Lm9yZz4gLSAwLjAuOC0wLjE2LkUwRjEK LS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8yMV8y Ml9NYXNzX1JlYnVpbGQKLQotKiBTdW4gSnVuIDA4IDIwMTQgRmVkb3JhIFJlbGVhc2UgRW5naW5l ZXJpbmcgPHJlbC1lbmdAbGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gMC4wLjgtMC4xNS5FMEYx Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjFf TWFzc19SZWJ1aWxkCi0KLSogV2VkIERlYyAwNCAyMDEzIElhaW4gQXJuZWxsIDxpYXJuZWxsQGdt YWlsLmNvbT4gMC4wLjgtMC4xNC5FMEYxCi0tIGFwcGx5IHBhdGNoIHRvIGF2b2lkIGZvcm1hdC1z ZWN1cml0eSBlcnJvcnMgKFJIQlojMTAzNzMzMCkKLQotKiBTYXQgQXVnIDEwIDIwMTMgSWFpbiBB cm5lbGwgPGlhcm5lbGxAZ21haWwuY29tPiAwLjAuOC0wLjEzLkUwRjEKLS0gdXNlIF9wa2dkb2Nk aXIgbWFjcm8KLQotKiBTdW4gQXVnIDA0IDIwMTMgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcg PHJlbC1lbmdAbGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gMC4wLjgtMC4xMi5FMEYxCi0tIFJl YnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjBfTWFzc19S ZWJ1aWxkCi0KLSogU2F0IE1hciAyMyAyMDEzIElhaW4gQXJuZWxsIDxpYXJuZWxsQGdtYWlsLmNv bT4gMC4wLjgtMC4xMS5FMEYxCi0tIHBhdGNoIHRvIHN1cHBvcnQgYWFyY2g2NCAodGhhbmtzLCBh dXNpbCkKLQotKiBGcmkgRmViIDE1IDIwMTMgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJl bC1lbmdAbGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gMC4wLjgtMC4xMC5FMEYxCi0tIFJlYnVp bHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMTlfTWFzc19SZWJ1 aWxkCi0KLSogU2F0IEp1bCAyMSAyMDEyIEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwt ZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDAuMC44LTAuOS5FMEYxCi0tIFJlYnVpbHQg Zm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMThfTWFzc19SZWJ1aWxk Ci0KLSogU3VuIEphbiAxNSAyMDEyIElhaW4gQXJuZWxsIDxpYXJuZWxsQGdtYWlsLmNvbT4gMC4w LjgtMC44LkUwRjEKLS0gZml4IGJ1aWxkIGFnYWluc3QgbGlicG5nIDEuNQotCi0qIFNhdCBKYW4g MTQgMjAxMiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFw cm9qZWN0Lm9yZz4gLSAwLjAuOC0wLjcuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9y YXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzE3X01hc3NfUmVidWlsZAotCi0qIFdlZCBGZWIgMDkg MjAxMSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFwcm9q ZWN0Lm9yZz4gLSAwLjAuOC0wLjYuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXBy b2plY3Qub3JnL3dpa2kvRmVkb3JhXzE1X01hc3NfUmVidWlsZAotCi0qIFN1biBKdWwgMjYgMjAw OSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFwcm9qZWN0 Lm9yZz4gLSAwLjAuOC0wLjUuRTBGMQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2pl Y3Qub3JnL3dpa2kvRmVkb3JhXzEyX01hc3NfUmVidWlsZAotCi0qIFN1biBKdWwgMTkgMjAwOSBJ YWluIEFybmVsbCA8aWFybmVsbEBnbWFpbC5jb20+IDAuMC44LTAuNC5FMEYxCi0tIHJlcXVpcmUg bmV0aGFjay1iaXRtYXAtZm9udHMtY29yZSwgbm90IG5ldGhhY2sgYW55bW9yZQotCi0qIE1vbiBK dWwgMDYgMjAwOSBJYWluIEFybmVsbCA8aWFybmVsbEBnbWFpbC5jb20+IDAuMC44LTAuMy5FMEYx Ci0tIGRvbid0IGluc3RhbGwgZm9udHMgLSByZXF1aXJlIG5ldGhhY2sgaW5zdGVhZAotCi0qIFdl ZCBKdW4gMTAgMjAwOSBJYWluIEFybmVsbCA8aWFybmVsbEBnbWFpbC5jb20+IDAuMC44LTAuMi5F MEYxCi0tIGFkZGl0aW9uYWwgcmVxdWlyZXMgZm9yIHNjcmlwdGxldHMKLS0gb25seSBydW4gcHJl dW4gZm9yIGZpbmFsIHVuaW5zdGFsbAotCi0qIFRodSBNYXkgMjEgMjAwOSBJYWluIEFybmVsbCA8 aWFybmVsbEBnbWFpbC5jb20+IDAuMC44LTAuMS5FMEYxCi0tIGluaXRpYWwgcGFja2FnaW5nCi0K CmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYWUwMTFkYS4uMDAwMDAwMAotLS0gYS9zb3VyY2VzCisrKyAvZGV2L251bGwKQEAgLTEg KzAsMCBAQAotY2RmY2VhZjc4ODgyNDY5MzRkZWM4ZTI1NmFjMGE3MzggIHNlMDA4ZTBmMS50YXIu Z3oK