Name: series-workflowksvrk Phase: Failed StartedAt: 2026-07-25 22:14:35 +0000 UTC FinishedAt: 2026-07-25 22:36:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksvrk[0] Phase: Succeeded StartedAt: 2026-07-25 22:14:35 +0000 UTC FinishedAt: 2026-07-25 22:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksvrk[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 22:14:35 +0000 UTC FinishedAt: 2026-07-25 22:36:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIyOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjI6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNThmY2UwNDA1Y2UxYzU0ODEwZDZjNTVkNWVhZDExODkwN2UwZGUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMjI6MzY6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmMgYi90b29scy9icGYvYnBmdG9vbC9jb21tb24uY1xuaW5kZXggOGJmY2ZmOWUyZjYzOTQuLjc2YWJkM2Y0ZmJjYmM1IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXG5AQCAtNTMsNyAmIzQzOzUzLDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtFcnJvcjogXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFx0dmFfZW5kKGFwKTtcbiB9XG5AQCAtNjcsNyAmIzQzOzY3LDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXG4gXHR2YV9zdGFydChhcCwgZm10KTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0dmFfZW5kKGFwKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvbWFpbi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvbWFpbi5jXG5pbmRleCBjOTFlMWE2ZTFhMWVjYS4uYWVjZmM3Nzg2MjVmNzEgMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uY1xuQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgdm9pZCBmcHJpbnRfaGV4KEZJTEUgKmYsIHZvaWQgKmFyZywgdW5zaWduZWQgaW50IG4sIGNvbnN0IGNoYXIgKnNlcClcbiBcdFx0aWYgKCFpKVxuIFx0XHRcdC8qIG5vdGhpbmcgKi87XG4gXHRcdGVsc2UgaWYgKCEoaSAlIDE2KSlcbi1cdFx0XHRmcHJpbnRmKGYsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKGYsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRlbHNlIGlmICghKGkgJSA4KSlcbiBcdFx0XHRmcHJpbnRmKGYsIFwmIzM0OyAgXCYjMzQ7KTtcbiBcdFx0ZWxzZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmggYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5pbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5AQCAtMjUsNyAmIzQzOzI1LDcgQEBcbiBcdGlmIChqc29uX291dHB1dClcdFx0XHRcdFxcXG4gXHRcdGpzb253X3N0YXJ0X29iamVjdChqc29uX3d0cik7XHRcdFxcXG4gXHRlbHNlXHRcdFx0XHRcdFx0XFxcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O3tcJiMzNDspO1x0XHRcdFxcXG4mIzQzO1x0XHRwdXRjaGFyKCYjMzk7eyYjMzk7KTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX0VORF9PQkpFQ1RfTkVTVEVEXHRcdFx0XHRcXFxuQEAgLTMzLDcgJiM0MzszMyw3IEBAXG4gXHRpZiAoanNvbl9vdXRwdXQpXHRcdFx0XHRcXFxuIFx0XHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcdFx0XFxcbiBcdGVsc2VcdFx0XHRcdFx0XHRcXFxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7fVwmIzM0Oyk7XHRcdFx0XFxcbiYjNDM7XHRcdHB1dGNoYXIoJiMzOTt9JiMzOTspO1x0XHRcdFx0XFxcbiB9XG4gXG4gI2RlZmluZSBORVRfRU5EX09CSkVDVFx0XHRcdFx0XHRcXFxuQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAXG4gXHRpZiAoanNvbl9vdXRwdXQpXHRcdFx0XHRcXFxuIFx0XHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcdFx0XFxcbiBcdGVsc2VcdFx0XHRcdFx0XHRcXFxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcdFx0XHRcXFxuJiM0MztcdFx0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX1NUQVJUX0FSUkFZKG5hbWUsIGZtdF9zdHIpXHRcdFx0XFxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbmluZGV4IGE5ZjczMGQ0MDdhOTI5Li5kMjdjYjlkNDk4NjA5MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5AQCAtMTI2Niw3ICYjNDM7MTI2Niw3IEBAIHN0YXRpYyB2b2lkIGhleF9wcmludCh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgRklMRSAqZilcbiBcdFx0XHRmcHJpbnRmKGYsIFwmIzM0OyVjJXNcJiMzNDssIGMsIGogPT0gaSAmIzQzOyA3ID8gXCYjMzQ7IFwmIzM0OyA6IFwmIzM0O1wmIzM0Oyk7XG4gXHRcdH1cbiBcbi1cdFx0ZnByaW50ZihmLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoZiwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vZ3Bpby1ldmVudC1tb24uYyBiL3Rvb2xzL2dwaW8vZ3Bpby1ldmVudC1tb24uY1xuaW5kZXggYjcwODEzYjBiZjhlZmEuLmUxMmUxNDc4MGMwZTQ1IDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmNcbkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIGludCBtb25pdG9yX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSxcbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7dW5rbm93biBldmVudFwmIzM0Oyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRwdXRjaGFyKCYjMzk7XFxuJiMzOTspO1xuIFxuIFx0XHRpJiM0MzsmIzQzOztcbiBcdFx0aWYgKGkgPT0gbG9vcHMpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jIGIvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jXG5pbmRleCBiYTA4NjZlYjM1ODE0NS4uYjc2Yzk0ZmVlMDRkMDkgMTAwNjQ0XG4tLS0gYS90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuY1xuQEAgLTg3LDcgJiM0Mzs4Nyw3IEBAIGludCBoYW1tZXJfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCB1bnNpZ25lZCBpbnQgKmxpbmVzLCBpbnQgbnVtX2xpbmVzLFxuIFx0XHRpZiAoaiA9PSBzaXplb2Yoc3dpcnIpIC0gMSlcbiBcdFx0XHRqID0gMDtcbiBcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1tcJiMzNDspO1xuJiM0MztcdFx0cHV0Y2hhcigmIzM5O1smIzM5Oyk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9saW5lczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7JXU6ICVkXCYjMzQ7LCBsaW5lc1tpXSxcbiBcdFx0XHRcdGdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpO1xuQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgaW50IGhhbW1lcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIHVuc2lnbmVkIGludCAqbGluZXMsIGludCBudW1fbGluZXMsXG4gXHRcdGlmIChsb29wcyBcdTAwMjZcdTAwMjYgaXRlcmF0aW9uID09IGxvb3BzKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuLVx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcbiBcdHJldCA9IDA7XG4gXG4gZXhpdF9jbG9zZV9lcnJvcjpcbmRpZmYgLS1naXQgYS90b29scy9ncGlvL2xzZ3Bpby5jIGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuaW5kZXggNTJhMGJlNDU0MTBjOTcuLmFiYjJjNmZiYzNkN2NhIDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuQEAgLTE1Miw5ICYjNDM7MTUyLDkgQEAgaW50IGxpc3RfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lKVxuIFx0XHRpZiAobGluZm8uZmxhZ3MpIHtcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7IFtcJiMzNDspO1xuIFx0XHRcdHByaW50X2F0dHJpYnV0ZXMoXHUwMDI2bGluZm8pO1xuLVx0XHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtdXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cHV0Y2hhcigmIzM5O10mIzM5Oyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRwdXRjaGFyKCYjMzk7XFxuJiMzOTspO1xuIFxuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oIGIvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmhcbmluZGV4IGUyMmFlODdhNzI4OTIwLi44OWM5YTNkM2JjNzczMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaFxuQEAgLTI3LDcgJiM0MzsyNyw3IEBAIHZvaWQgdndhcm54KGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKVxuIHtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDslczogXCYjMzQ7LCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7XG4gXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXJncyk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5pbmRleCBlNjk1NDkwOTQwMWM4ZS4uZTNhYjFkYjQ0YjE1NGUgMTAwNjQ0XG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbkBAIC04NjcsNyAmIzQzOzg2Nyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0XHR9XG4gXHRcdFx0aWYgKGN1bGwgXHUwMDI2IENVTExfU1RBQ0tUUkFDRSlcbiBcdFx0XHRcdGZwcmludGYoZm91dCwgXCYjMzQ7OlxcbiVzXCYjMzQ7LCBsaXN0W2ldLnN0YWNrdHJhY2UpO1xuLVx0XHRcdGZwcmludGYoZm91dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZnB1dGMoZm91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdH1cbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3lubHRvb2wvbWFpbi5jIGIvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xuaW5kZXggNWQwZjQyOGVlZDBhN2YuLjI0NWQ3ZjU4YzhmYjY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xuQEAgLTE1Niw3ICYjNDM7MTU2LDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtFcnJvcjogXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFx0dmFfZW5kKGFwKTtcbiB9XG5AQCAtMTcwLDcgJiM0MzsxNzAsNyBAQCB2b2lkIHBfaW5mbyhjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcbiBcdHZhX3N0YXJ0KGFwLCBmbXQpO1xuIFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR2YV9lbmQoYXApO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suYyBiL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXG5pbmRleCAxMThjM2RlMmYyOTNlZS4uYjZkMjdkMzI2YjhhZDkgMTAwNjQ0XG4tLS0gYS90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmNcbkBAIC0yOTcsNyAmIzQzOzI5Nyw3IEBAIGludCBtYWtlX2JhY2t1cCh2b2lkKVxuIFx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDsgJXNcJiMzNDssIGFyZyk7XG4gXHR9XG4gXG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvZGlzYXMuYyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuY1xuaW5kZXggZTZhNTRhODM2MDVjOTAuLjMzOWQxZDU2OTBjNDIwIDEwMDY0NFxuLS0tIGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9vYmp0b29sL2Rpc2FzLmNcbkBAIC01MzcsNyAmIzQzOzUzNyw3IEBAIHZvaWQgZGlzYXNfcHJpbnRfaW5zbihGSUxFICpzdHJlYW0sIHN0cnVjdCBkaXNhc19jb250ZXh0ICpkY3R4LFxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoc3RyY21wKGZvcm1hdCwgXCYjMzQ7XFxuXCYjMzQ7KSA9PSAwKSB7XG4tXHRcdGZwcmludGYoc3RyZWFtLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RyZWFtLCAmIzM5O1xcbiYjMzk7KTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xuaW5kZXggYzk1ODRkYmVkZjc3YWYuLmZjOWI2YjE4ZWRlZDllIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL2J1aWx0aW4tYzJjLmNcbkBAIC0yNTExLDcgJiM0MzsyNTExLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfY2FjaGVsaW5lKHN0cnVjdCBjMmNfaGlzdHMgKmMyY19oaXN0cyxcbiBcdFx0aGlzdHNfX2ZwcmludGZfaGVhZGVycyhcdTAwMjZjMmNfaGlzdHMtXHUwMDNlaGlzdHMsIG91dCk7XG4gXHRcdG9uY2UgPSB0cnVlO1xuIFx0fSBlbHNlIHtcbi1cdFx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhvdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFxuIFx0ZnByaW50ZihvdXQsIFwmIzM0OyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwmIzM0Oyk7XG5AQCAtMjU5MCwxNSAmIzQzOzI1OTAsMTUgQEAgc3RhdGljIHZvaWQgcGVyZl9jMmNfX2hpc3RzX2ZwcmludGYoRklMRSAqb3V0LCBzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uKVxuIFx0c2V0dXBfcGFnZXIoKTtcbiBcbiBcdHByaW50X2MyY19fZGlzcGxheV9zdGF0cyhvdXQpO1xuLVx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMob3V0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdHByaW50X3NoYXJlZF9jYWNoZWxpbmVfaW5mbyhvdXQpO1xuLVx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMob3V0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdHByaW50X2MyY19pbmZvKG91dCwgc2Vzc2lvbik7XG4gXG4gXHRpZiAoYzJjLnN0YXRzX29ubHkpXG4gXHRcdHJldHVybjtcbiBcbi1cdGZwcmludGYob3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKG91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7ICAgICAgICAgICBTaGFyZWQgRGF0YSBDYWNoZSBMaW5lIFRhYmxlICAgICAgICAgIFxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG5AQCAtMjYwNiw3ICYjNDM7MjYwNiw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbilcbiBcbiBcdGhpc3RzX19mcHJpbnRmKFx1MDAyNmMyYy5oaXN0cy5oaXN0cywgdHJ1ZSwgMCwgMCwgMCwgc3Rkb3V0LCB0cnVlKTtcbiBcbi1cdGZwcmludGYob3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKG91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7ICAgICAgU2hhcmVkIENhY2hlIExpbmUgRGlzdHJpYnV0aW9uIFBhcmV0byAgICAgIFxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXG5pbmRleCBjNDYzMjU3N2QxMjk2My4uN2NiMjBiM2EwM2U0Y2QgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uY1xuQEAgLTY5MSw3ICYjNDM7NjkxLDcgQEAgc3RhdGljIGludCBjbWRfc2Vzc2lvbl9saXN0KHN0cnVjdCBkYWVtb24gKmRhZW1vbiwgdW5pb24gY21kICpjbWQsIEZJTEUgKm91dClcbiBcdFx0XHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cbiBcdFx0XHRjc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gZGFlbW9uLVx1MDAzZXN0YXJ0KSAvIDYwKSk7XG4gXG4tXHRcdGZwcmludGYob3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMob3V0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYob3V0LCBcJiMzNDtbJWQ6ZGFlbW9uXSBiYXNlOiAlc1xcblwmIzM0OywgZ2V0cGlkKCksIGRhZW1vbi1cdTAwM2ViYXNlKTtcbiBcdFx0aWYgKGNtZC1cdTAwM2VsaXN0LnZlcmJvc2UpIHtcbkBAIC03MzAsNyAmIzQzOzczMCw3IEBAIHN0YXRpYyBpbnQgY21kX3Nlc3Npb25fbGlzdChzdHJ1Y3QgZGFlbW9uICpkYWVtb24sIHVuaW9uIGNtZCAqY21kLCBGSUxFICpvdXQpXG4gXHRcdFx0XHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cbiBcdFx0XHRcdGNzdl9zZXAsICh1aW50NjRfdCkoKGN1cnIgLSBzZXNzaW9uLVx1MDAzZXN0YXJ0KSAvIDYwKSk7XG4gXG4tXHRcdFx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKG91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZnByaW50ZihvdXQsIFwmIzM0O1slZDolc10gcGVyZiByZWNvcmQgJXNcXG5cJiMzNDssXG4gXHRcdFx0XHRzZXNzaW9uLVx1MDAzZXBpZCwgc2Vzc2lvbi1cdTAwM2VuYW1lLCBzZXNzaW9uLVx1MDAzZXJ1bik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbmluZGV4IDU4NDFkNDNiZTk3MTg0Li4wNWYxOGQ0OWZjN2IxNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbkBAIC0xMzE5LDkgJiM0MzsxMzE5LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVzdWx0KHZvaWQpXG4gXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoa2V5LCBcdTAwMjZsb2NrX2tleXMsIGxpc3QpIHtcbiBcdFx0XHRrZXktXHUwMDNlcHJpbnQoa2V5LCBzdCk7XG4tXHRcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7IFwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAmIzM5OyAmIzM5Oyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdFx0aWYgKCYjNDM7JiM0MztwcmludGVkIFx1MDAzZT0gcHJpbnRfbnJfZW50cmllcylcbiBcdFx0XHRicmVhaztcbkBAIC0xNTk4LDcgJiM0MzsxNTk4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX2Nzdihjb25zdCBjaGFyICpzZXApXG4gXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0OyVzJXMgJXNcJiMzNDssIFwmIzM0O3R5cGVcJiMzNDssIHNlcCwgXCYjMzQ7Y2FsbGVyXCYjMzQ7KTtcbiBcdFx0aWYgKHZlcmJvc2UgXHUwMDNlIDApXG4gXHRcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7JXMgJXNcJiMzNDssIHNlcCwgXCYjMzQ7c3RhY2t0cmFjZVwmIzM0Oyk7XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBMT0NLX0FHR1JfQUREUjpcbiBcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7JXMlcyAlcyVzICVzXFxuXCYjMzQ7LCBcJiMzNDthZGRyZXNzXCYjMzQ7LCBzZXAsIFwmIzM0O3N5bWJvbFwmIzM0Oywgc2VwLCBcJiMzNDt0eXBlXCYjMzQ7KTtcbkBAIC0xNjI5LDcgJiM0MzsxNjI5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfbG9ja19zdGF0X3N0ZGlvKHN0cnVjdCBsb2NrX2NvbnRlbnRpb24gKmNvbiwgc3RydWN0IGxvY2tfc3RhdFxuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShrZXksIFx1MDAyNmxvY2tfa2V5cywgbGlzdCkge1xuIFx0XHRrZXktXHUwMDNlcHJpbnQoa2V5LCBzdCk7XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0OyBcJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMobG9ja19vdXRwdXQsICYjMzk7ICYjMzk7KTtcbiBcdH1cbiBcbiBcdHN3aXRjaCAoYWdncl9tb2RlKSB7XG5AQCAtMTY4Nyw3ICYjNDM7MTY4Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXG4gXHRjYXNlIExPQ0tfQUdHUl9DQUxMRVI6XG4gXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0OyVzJXMgJXNcJiMzNDssIGdldF90eXBlX2ZsYWdzX25hbWUoc3QtXHUwMDNlZmxhZ3MpLCBzZXAsIHN0LVx1MDAzZW5hbWUpO1xuIFx0XHRpZiAodmVyYm9zZSBcdTAwM2M9IDApXG4tXHRcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZnB1dGMobG9ja19vdXRwdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTE9DS19BR0dSX1RBU0s6XG4gXHRcdHBpZCA9IHN0LVx1MDAzZWFkZHI7XG5AQCAtMTcyMSw3ICYjNDM7MTcyMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXG4gXHRcdFx0Z2V0X3N5bWJvbF9uYW1lX29mZnNldChrbWFwLCBzeW0sIGlwLCBidWYsIHNpemVvZihidWYpKTtcbiBcdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcJiMzNDslcyAlI2x4ICVzXCYjMzQ7LCBpID8gXCYjMzQ7OlwmIzM0OyA6IHNlcCwgKHVuc2lnbmVkIGxvbmcpIGlwLCBidWYpO1xuIFx0XHR9XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gfVxuIFxuQEAgLTE3ODEsNyAmIzQzOzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9mb290ZXJfY3N2KGludCB0b3RhbCwgaW50IGJhZCwgc3RydWN0IGxvY2tfY29udGVudGlvbl9mYWlscyAqZlxuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCUk9LRU5fTUFYOyBpJiM0MzsmIzQzOylcbiBcdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcJiMzNDslcyBiYWRfJXM9JWRcJiMzNDssIHNlcCwgbmFtZVtpXSwgYmFkX2hpc3RbaV0pO1xuIFx0fVxuLVx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZhaWxzKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuY1xuaW5kZXggOWFjMjliZGMzY2Q1NDcuLmU2MGMwNzMwNWQxOThiIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmNcbkBAIC0yNTYxLDcgJiM0MzsyNTYxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19ldmVudChzdHJ1Y3QgcGVyZl9zY3JpcHQgKnNjcmlwdCxcbiBcbiBcdHBlcmZfc2FtcGxlX19mcHJpbnRmX2lwYyhzYW1wbGUsIGV2c2VsLCBmcCk7XG4gXG4tXHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGlmIChQUklOVF9GSUVMRChTUkNDT0RFKSkge1xuIFx0XHRpZiAobWFwX19mcHJpbnRmX3NyY2NvZGUoYWwtXHUwMDNlbWFwLCBhbC1cdTAwM2VhZGRyLCBzdGRvdXQsXG5AQCAtMjgxNSw3ICYjNDM7MjgxNSw3IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19kZWZlcnJlZF9zYW1wbGVfZXZlbnQoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCxcbiBcdFx0XHRcdCAgICBjdXJzb3IsIHN5bWJvbF9jb25mLmJ0X3N0b3BfbGlzdCwgZnApO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmcCwgJiMzOTtcXG4mIzM5Oyk7XG4gXG4gXHRpZiAodmVyYm9zZSBcdTAwM2UgMClcbiBcdFx0ZmZsdXNoKGZwKTtcbkBAIC0zMjcxLDExICYjNDM7MzI3MSwxMSBAQCBzdGF0aWMgaW50IGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYihzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqb3BzLCBjb25zdCBjaGFyICpzcFxuIFxuIHN0YXRpYyB2b2lkIGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlcyh2b2lkKVxuIHtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7U2NyaXB0aW5nIGxhbmd1YWdlIGV4dGVuc2lvbnMgKHVzZWQgaW4gXCYjMzQ7XG4gXHRcdFwmIzM0O3BlcmYgc2NyaXB0IC1zIFtzcGVjOl1zY3JpcHQuW3NwZWNdKTpcXG5cXG5cJiMzNDspO1xuIFx0c2NyaXB0X3NwZWNfX2Zvcl9lYWNoKFx1MDAyNmxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYik7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiAvKiBGaW5kIHNjcmlwdCBmaWxlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5IG9yIGV4ZWMgcGF0aCAqL1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuaW5kZXggYzQ3ZjVjMzg3ODM4YzUuLjAzN2ViYzQ3ZjdkY2NjIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbkBAIC0zNyw3ICYjNDM7MzcsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiBcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtFcnJvcjpcXG5cJiMzNDspO1xuIFx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4gXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7V2FybmluZzpcXG5cJiMzNDspO1xuIFx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuQEAgLTgzLDcgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIFx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuYyBiL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jXG5pbmRleCA4YzRjODkyNWRmMmMyMi4uMDQ0ZDJhYTNiMzEyMTggMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcbkBAIC02OTEsNyAmIzQzOzY5MSw3IEBAIHN0YXRpYyBpbnQgaGlzdHNfX2ZwcmludGZfaGllcmFyY2h5X2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0fVxuIFxuIG5leHRfbGluZTpcbi1cdFx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcdH1cbiBcbiBcdGZwcmludGYoZnAsIFwmIzM0OyMgXCYjMzQ7KTtcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIGhpc3RzX19mcHJpbnRmX3N0YW5kYXJkX2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0aWYgKGxpbmUpXG4gXHRcdFx0ZnByaW50ZihmcCwgXCYjMzQ7IyBcJiMzNDspO1xuIFx0XHRmcHJpbnRmX2xpbmUoaGlzdHMsIGhwcCwgbGluZSwgZnApO1xuLVx0XHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoZnAsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFxuIFx0aWYgKHNlcClcbkBAIC04MDYsMTAgJiM0Mzs4MDYsMTAgQEAgaGlzdHNfX2ZwcmludGZfc3RhbmRhcmRfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuIFxuIFx0XHR3aWR0aCA9IGZtdC1cdTAwM2V3aWR0aChmbXQsIGhwcCwgaGlzdHMpO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3aWR0aDsgaSYjNDM7JiM0MzspXG4tXHRcdFx0ZnByaW50ZihmcCwgXCYjMzQ7LlwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKGZwLCAmIzM5Oy4mIzM5Oyk7XG4gXHR9XG4gXG4tXHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGZwcmludGYoZnAsIFwmIzM0OyNcXG5cJiMzNDspO1xuIFx0cmV0dXJuIGhwcF9saXN0LVx1MDAzZW5yX2hlYWRlcl9saW5lcyAmIzQzOyAyO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcbmluZGV4IDVkMDY2NGZmNzNiNzkxLi44ZTA5OWNjYWFlMzlhNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS5jXG5AQCAtODk1LDcgJiM0Mzs4OTUsNyBAQCBzdGF0aWMgdm9pZCBjc19ldG1fX2R1bXBfZXZlbnQoc3RydWN0IGNzX2V0bV9xdWV1ZSAqZXRtcSxcbiBcdGNvbnN0IGNoYXIgKmNvbG9yID0gUEVSRl9DT0xPUl9CTFVFO1xuIFx0c2l6ZV90IGJ1ZmZlcl91c2VkID0gMDtcbiBcbi1cdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gXHRjb2xvcl9mcHJpbnRmKHN0ZG91dCwgY29sb3IsXG4gXHRcdCAgICAgXCYjMzQ7LiAuLi4gQ29yZVNpZ2h0ICVzIFRyYWNlIGRhdGE6IHNpemUgJSN6eCBieXRlc1xcblwmIzM0OyxcbiBcdFx0ICAgICBjc19ldG1fZGVjb2Rlcl9fZ2V0X25hbWUoZXRtcS1cdTAwM2VkZWNvZGVyKSwgYnVmZmVyLVx1MDAzZXNpemUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jIGIvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmNcbmluZGV4IDZiNWZmZTgxZjE0MTIxLi41NDI5OTg0YWI0OWM5MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvZGVidWcuY1xuQEAgLTM1MCw3ICYjNDM7MzUwLDcgQEAgdm9pZCBfX2R1bXBfc3RhY2soRklMRSAqZmlsZSwgdm9pZCAqKnN0YWNrZHVtcCwgc2l6ZV90IHN0YWNrZHVtcF9zaXplKVxuIFx0XHRcdGZwcmludGYoZmlsZSwgXCYjMzQ7ICAgICMlemQgJXAgXCYjMzQ7LCBpLCBzdGFja2R1bXBbaV0pO1xuIFxuIFx0XHRtYXBfX2ZwcmludGZfc3JjbGluZShhbC5tYXAsIGFsLmFkZHIsIFwmIzM0O1wmIzM0OywgZmlsZSk7XG4tXHRcdGZwcmludGYoZmlsZSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZpbGUsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRhZGRyX2xvY2F0aW9uX19leGl0KFx1MDAyNmFsKTtcbiBcdH1cbiBcdHRocmVhZF9fcHV0KHRocmVhZCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jIGIvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXG5pbmRleCAwOTFkOGY3ZjZiZDJjOS4uOTY1YjE3YzgxMjI0YjYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvaGVhZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuY1xuQEAgLTI0NTQsNyAmIzQzOzI0NTQsNyBAQCBzdGF0aWMgdm9pZCBfX3ByaW50X3BtdV9jYXBzKEZJTEUgKmZwLCBpbnQgbnJfY2FwcywgY2hhciAqKmNhcHMsIGNoYXIgKnBtdV9uYW1lKVxuIFx0XHRkZWxpbWl0ZXIgPSBcJiMzNDssIFwmIzM0OztcbiBcdH1cbiBcbi1cdGZwcmludGYoZnAsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZnAsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF9jcHVfcG11X2NhcHMoc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcbkBAIC0yNTEzLDcgJiM0MzsyNTEzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfcG11X21hcHBpbmdzKHN0cnVjdCBmZWF0X2ZkICpmZiwgRklMRSAqZnApXG4gXHRcdHBtdV9udW0tLTtcbiBcdH1cbiBcbi1cdGZwcmludGYoZnAsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZnAsICYjMzk7XFxuJiMzOTspO1xuIFxuIFx0aWYgKCFwbXVfbnVtKVxuIFx0XHRyZXR1cm47XG5AQCAtNDM0OSw3ICYjNDM7NDM0OSw3IEBAIGludCBwZXJmX2hlYWRlcl9fZnByaW50Zl9pbmZvKHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24sIEZJTEUgKmZwLCBib29sIGZ1bGwpXG4gXHRcdFx0ZnByaW50ZihmcCwgXCYjMzQ7JXMgXCYjMzQ7LCBmZWF0X29wc1tiaXRdLm5hbWUpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmcCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmMgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xuaW5kZXggZWY1NWQ2MjMyY2YwYzIuLjBhMzU0OTNiODU0YWNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jXG5AQCAtNzAsMTQgJiM0Mzs3MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9kYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbiwgdWludDY0X3QgcG9zLFxuIFx0aW50IGk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpbmRlbnQ7IGkmIzQzOyYjNDM7KVxuLVx0XHRmcHJpbnRmKGYsIFwmIzM0OyBcJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoZiwgJiMzOTsgJiMzOTspO1xuIFxuIFx0ZnByaW50ZihmLCBcJiMzNDsgICUwOFwmIzM0OyBQUkl4NjQgXCYjMzQ7OiBcJiMzNDssIHBvcyk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KVxuIFx0XHRmcHJpbnRmKGYsIFwmIzM0OyAlMDJ4XCYjMzQ7LCBidWZbaV0pO1xuIFx0Zm9yICg7IGkgXHUwMDNjIDE2OyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihmLCBcJiMzNDsgICBcJiMzNDspO1xuLVx0ZnByaW50ZihmLCBcJiMzNDsgXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X25vX2RhdGEodWludDY0X3QgcG9zLCBpbnQgaW5kZW50KVxuQEAgLTg1LDEyICYjNDM7ODUsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHRfcHJpbnRfbm9fZGF0YSh1aW50NjRfdCBwb3MsIGludCBpbmRlbnQpXG4gXHRpbnQgaTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGluZGVudDsgaSYjNDM7JiM0MzspXG4tXHRcdGZwcmludGYoZiwgXCYjMzQ7IFwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7XG4gXG4gXHRmcHJpbnRmKGYsIFwmIzM0OyAgJTA4XCYjMzQ7IFBSSXg2NCBcJiMzNDs6IFwmIzM0OywgcG9zKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDE2OyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihmLCBcJiMzNDsgICBcJiMzNDspO1xuLVx0ZnByaW50ZihmLCBcJiMzNDsgXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyBzc2l6ZV90IGxvZ19idWZfX3dyaXRlKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvbGliYmZkLmMgYi90b29scy9wZXJmL3V0aWwvbGliYmZkLmNcbmluZGV4IGMxYzEyMzA4Y2MxMmZmLi4yNjM4OTQ2NjNmMWE4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9saWJiZmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXG5AQCAtNjAzLDcgJiM0Mzs2MDMsNyBAQCBpbnQgc3ltYm9sX19kaXNhc3NlbWJsZV9icGZfbGliYmZkKHN0cnVjdCBzeW1ib2wgKnN5bSBfX21heWJlX3VudXNlZCxcbiBcdFx0fSBlbHNlXG4gXHRcdFx0c3JjbGluZSA9IE5VTEw7XG4gXG4tXHRcdGZwcmludGYocywgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKHMsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRwcmV2X2J1Zl9zaXplID0gYnVmX3NpemU7XG4gXHRcdGZmbHVzaChzKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc2Vzc2lvbi5jIGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuaW5kZXggZjM5MWE4MjI0ODBkYjAuLjYzYThkM2NjYWE0ZjljIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuQEAgLTEyNTcsNyAmIzQzOzEyNTcsNyBAQCBpbnQgcGVyZl9ldmVudF9fcHJvY2Vzc19maW5pc2hlZF9yb3VuZChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sIF9fbWF5YmVfdW51c1xuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBvcmRlcmVkX2V2ZW50cyAqb2UpXG4ge1xuIFx0aWYgKGR1bXBfdHJhY2UpXG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcbiBcdHJldHVybiBvcmRlcmVkX2V2ZW50c19fZmx1c2gob2UsIE9FX0ZMVVNIX19ST1VORCk7XG4gfVxuIFxuQEAgLTQwMDAsNyAmIzQzOzQwMDAsNyBAQCBpbnQgcGVyZl9ldmVudF9fcHJvY2Vzc19pZF9pbmRleChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sIF9fbWF5YmVfdW51c2VkLFxuIFx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0OyAgbWFjaGluZV9waWQ6ICVcJiMzNDtQUklfbGQ2NCwgZTItXHUwMDNlbWFjaGluZV9waWQpO1xuIFx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0OyAgdmNwdTogJVwmIzM0O1BSSV9sdTY0XCYjMzQ7XFxuXCYjMzQ7LCBlMi1cdTAwM2V2Y3B1KTtcbiBcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmMgYi90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcbmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jXG5AQCAtNTI5LDcgJiM0Mzs1MjksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9tZXRyaWNfanNvbihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnIF9fbWF5YmVfdW51c2VkLFxuIFx0XHR9XG4gXHR9XG4gXHRpZiAoIWNvbmZpZy1cdTAwM2VtZXRyaWNfb25seSlcbi1cdFx0ZnByaW50ZihvdXQsIFwmIzM0O31cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMob3V0LCAmIzM5O30mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5ld19saW5lX2pzb24oc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgdm9pZCAqY3R4KVxuQEAgLTEzMTYsNyAmIzQzOzEzMTYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWFkZXJfc3RkKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsXG4gXHRGSUxFICpvdXRwdXQgPSBjb25maWctXHUwMDNlb3V0cHV0O1xuIFx0aW50IGk7XG4gXG4tXHRmcHJpbnRmKG91dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhvdXRwdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0ZnByaW50ZihvdXRwdXQsIFwmIzM0OyBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciBcJiMzNDspO1xuIFx0aWYgKF90YXJnZXQtXHUwMDNlYnBmX3N0cilcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwmIzM0O1xcJiMzOTtCUEYgcHJvZ3JhbShzKSAlc1wmIzM0OywgX3RhcmdldC1cdTAwM2VicGZfc3RyKTtcbkBAIC0xMzMzLDcgJiM0MzsxMzMzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX3N0ZChzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnLFxuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKG91dHB1dCwgXCYjMzQ7dGhyZWFkIGlkIFxcJiMzOTslc1wmIzM0OywgX3RhcmdldC1cdTAwM2V0aWQpO1xuIFxuLVx0ZnByaW50ZihvdXRwdXQsIFwmIzM0O1xcJiMzOTtcJiMzNDspO1xuJiM0MztcdGZwdXRjKG91dHB1dCwgJiMzOTtcXCYjMzk7JiMzOTspO1xuIFx0aWYgKGNvbmZpZy1cdTAwM2VydW5fY291bnQgXHUwMDNlIDEpXG4gXHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDsgKCVkIHJ1bnMpXCYjMzQ7LCBjb25maWctXHUwMDNlcnVuX2NvdW50KTtcbiBcdGZwcmludGYob3V0cHV0LCBcJiMzNDs6XFxuXFxuXCYjMzQ7KTtcbkBAIC0xNDA2LDkgJiM0MzsxNDA2LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFibGUoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgRklMRSAqb3V0cHV0LCBkb3VibGUgYXZcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwmIzM0OyAlMTcuOWYgKCUmIzQzOy45ZikgXCYjMzQ7LCBydW4sIHJ1biAtIGF2Zyk7XG4gXG4gXHRcdGZvciAoaCA9IDA7IGggXHUwMDNjIG47IGgmIzQzOyYjNDM7KVxuLVx0XHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDsjXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZnB1dGMob3V0cHV0LCAmIzM5OyMmIzM5Oyk7XG4gXG4tXHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMob3V0cHV0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdH1cbiBcbiBcdGZwcmludGYob3V0cHV0LCBcJiMzNDtcXG4lKnMjIEZpbmFsIHJlc3VsdDpcXG5cJiMzNDssIGluZGVudCwgXCYjMzQ7XCYjMzQ7KTtcbkBAIC0xNDI4LDcgJiM0MzsxNDI4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZm9vdGVyKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmICghY29uZmlnLVx1MDAzZW51bGxfcnVuKVxuLVx0XHRmcHJpbnRmKG91dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKG91dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXG4gXHRpZiAoY29uZmlnLVx1MDAzZXJ1bl9jb3VudCA9PSAxKSB7XG4gXHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDsgJTE3LjlmIHNlY29uZHMgdGltZSBlbGFwc2VkXCYjMzQ7LCBhdmcpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuY1xuaW5kZXggNmVhZGRmY2Y4MzNlNTIuLjJjNTM0MGE5MjhkZDFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3ZhbHVlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcbkBAIC0yMTcsNyAmIzQzOzIxNyw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxuIFx0ZnByaW50ZihmcCwgXCYjMzQ7IyAlKnMgICUqc1wmIzM0OywgcGlkd2lkdGgsIFwmIzM0O1BJRFwmIzM0OywgdGlkd2lkdGgsIFwmIzM0O1RJRFwmIzM0Oyk7XG4gXHRmb3IgKGogPSAwOyBqIFx1MDAzYyB2YWx1ZXMtXHUwMDNlbnVtX2NvdW50ZXJzOyBqJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihmcCwgXCYjMzQ7ICAlKnNcJiMzNDssIGNvdW50ZXJ3aWR0aFtqXSwgZXZzZWxfX25hbWUodmFsdWVzLVx1MDAzZWNvdW50ZXJzW2pdKSk7XG4tXHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZhbHVlcy1cdTAwM2V0aHJlYWRzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRmcHJpbnRmKGZwLCBcJiMzNDsgICUqZCAgJSpkXCYjMzQ7LCBwaWR3aWR0aCwgdmFsdWVzLVx1MDAzZXBpZFtpXSxcbkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB2YWx1ZXMtXHUwMDNlbnVtX2NvdW50ZXJzOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRmcHJpbnRmKGZwLCBcJiMzNDsgICUqXCYjMzQ7IFBSSXU2NCxcbiBcdFx0XHRcdGNvdW50ZXJ3aWR0aFtqXSwgdmFsdWVzLVx1MDAzZXZhbHVlW2ldW2pdKTtcbi1cdFx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcdH1cbiBcdGZyZWUoY291bnRlcndpZHRoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuYyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbmluZGV4IDcyYWQ3OTE1YjA0ZmQyLi42MDBkNWI2ZTA0YTg4MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbkBAIC0xNzEsNyAmIzQzOzE3MSw3IEBAIGFwX2R1bXBfdGFibGVfYnVmZmVyKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGUsXG4gXHRhY3BpX3V0X2R1bXBfYnVmZmVyX3RvX2ZpbGUoZ2JsX291dHB1dF9maWxlLFxuIFx0XHRcdFx0ICAgIEFDUElfQ0FTVF9QVFIodTgsIHRhYmxlKSwgdGFibGVfbGVuZ3RoLFxuIFx0XHRcdFx0ICAgIERCX0JZVEVfRElTUExBWSwgMCk7XG4tXHRmcHJpbnRmKGdibF9vdXRwdXRfZmlsZSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhnYmxfb3V0cHV0X2ZpbGUsICYjMzk7XFxuJiMzOTspO1xuIFx0cmV0dXJuICgwKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbkBAIC0xMjIsNyAmIzQzOzEyMiw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKVxuIFxuIFx0aWYgKGxldmVsID09IDApIHtcbiBcdFx0aWYgKGhlYWRlcilcbi1cdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0O3tcJiMzNDspO1xuJiM0MztcdFx0XHRmcHV0YyhvdXRmLCAmIzM5O3smIzM5Oyk7XG4gXHRcdGVsc2VcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0O1xcbn1cXG5cJiMzNDspO1xuIFxuQEAgLTEzOCw3ICYjNDM7MTM4LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXG4gXHRcdGlmICh2YWx1ZSkge1xuIFx0XHRcdGlmIChsYXN0X2xldmVsICE9IGxldmVsKVxuLVx0XHRcdFx0ZnByaW50ZihvdXRmLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGZwdXRjKG91dGYsICYjMzk7XFxuJiMzOTspO1xuIFxuIFx0XHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7JXNcXFwmIzM0OyVzXFxcJiMzNDs6IFwmIzM0OywgZGVsaW1pdGVycywgaGVhZGVyKTtcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0O1xcXCYjMzQ7JXNcXFwmIzM0O1wmIzM0OywgdmFsdWUpO1xuQEAgLTE1Niw3ICYjNDM7MTU2LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXHRcdFx0XHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7XFxuJXN9XCYjMzQ7LCBkZWxpbWl0ZXJzKTtcbiBcdFx0XHR9XG4gXHRcdFx0aWYgKGFicyhsYXN0X2xldmVsIC0gbGV2ZWwpIFx1MDAzYyAzKVxuLVx0XHRcdFx0ZnByaW50ZihvdXRmLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGZwdXRjKG91dGYsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRcdGlmIChoZWFkZXIpXG4gXHRcdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0OyVzXFxcJiMzNDslc1xcXCYjMzQ7OiB7XCYjMzQ7LCBkZWxpbWl0ZXJzLFxuIFx0XHRcdFx0XHRoZWFkZXIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmMgYi90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jXG5pbmRleCA5MjA2OTRjM2MxZWM5NC4uNDVkMzlhMGZjZjcyYTAgMTAwNjQ0XG4tLS0gYS90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jXG5AQCAtOTA5OSw3ICYjNDM7OTA5OSw3IEBAIHZvaWQgZHVtcF9jcHVpZF9oeXBlcnZpc29yKHZvaWQpXG4gXHRkdW1wX3dvcmRfY2hhcnMoZWJ4KTtcbiBcdGR1bXBfd29yZF9jaGFycyhlY3gpO1xuIFx0ZHVtcF93b3JkX2NoYXJzKGVkeCk7XG4tXHRmcHJpbnRmKG91dGYsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMob3V0ZiwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHZvaWQgcHJvY2Vzc19jcHVpZCgpXG5AQCAtOTc0OSw3ICYjNDM7OTc0OSw3IEBAIHZvaWQgdG9wb2xvZ3lfcHJvYmUoYm9vbCBzdGFydHVwKVxuIFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0OyBzaWJsaW5nc1wmIzM0Oyk7XG4gXHRcdGZvciAoaHRfaWQgPSAwOyBodF9pZCBcdTAwM2M9IE1BWF9IVF9JRDsgJiM0MzsmIzQzO2h0X2lkKVxuIFx0XHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7ICVkXCYjMzQ7LCBjcHVzW2ldLmh0X3NpYmxpbmdfY3B1X2lkW2h0X2lkXSk7XG4tXHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKG91dGYsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFxuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmNcbmluZGV4IDFlZTIxN2Q5NzQzNDBlLi42NGI5N2E0MWFmNDVlYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXG5AQCAtMTQ4LDcgJiM0MzsxNDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh0YWJfbWVtX3VzZV9jYXNlICpodGFiX21lbV9maW5kX3VzZV9jYXNlX29yX2V4aXQoY29uc3QgY2hhclxuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O2F2YWlsYWJsZSB1c2UgY2FzZTpcJiMzNDspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh1c2VfY2FzZXMpOyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyAlc1wmIzM0OywgdXNlX2Nhc2VzW2ldLm5hbWUpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGV4aXQoMSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuY1xuaW5kZXggMzU1OGZlMTBlMjhjZjkuLjU4ZWEyYTJlYzEzZTJkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmNcbkBAIC0yMjgsNyAmIzQzOzIyOCw3IEBAIGludCBnZXRfaml0ZWRfcHJvZ3JhbV90ZXh0KGludCBmZCwgY2hhciAqdGV4dCwgc2l6ZV90IHRleHRfc3opXG4gXHRmb3IgKHBjID0gMCwgaSA9IDA7IGkgXHUwMDNjIGppdGVkX2Z1bmNzOyAmIzQzOyYjNDM7aSkge1xuIFx0XHRmcHJpbnRmKHRleHRfb3V0LCBcJiMzNDtmdW5jICMlZDpcXG5cJiMzNDssIGkpO1xuIFx0XHRkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICYjNDM7IHBjLCBmdW5jX2xlbnNbaV0pO1xuLVx0XHRmcHJpbnRmKHRleHRfb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGModGV4dF9vdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRwYyAmIzQzOz0gZnVuY19sZW5zW2ldO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jXG5pbmRleCA3YmE4Mjk3NGVlNzg0ZC4uYjUyMGJlMWJmN2FhYTcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jXG5AQCAtMzgzLDcgJiM0MzszODMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90ZXN0X3Jlc3VsdChjb25zdCBzdHJ1Y3QgcHJvZ190ZXN0X2RlZiAqdGVzdCwgY29uc3Qgc3RydWN0IHRlc1xuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0O09LIChTS0lQOiAlZC8lZClcJiMzNDssIHNraXBwZWRfY250LCBzdWJ0ZXN0c19jbnQpO1xuIFxuLVx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF90ZXN0X2xvZyhjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcbkBAIC0zOTEsNyAmIzQzOzM5MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfbG9nKGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KVxuIFx0bG9nX2J1Zltsb2dfY250XSA9ICYjMzk7XFwwJiMzOTs7XG4gXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0OyVzXCYjMzQ7LCBsb2dfYnVmKTtcbiBcdGlmIChsb2dfYnVmW2xvZ19jbnQgLSAxXSAhPSAmIzM5O1xcbiYjMzk7KVxuLVx0XHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhlbnYuc3Rkb3V0X3NhdmVkLCAmIzM5O1xcbiYjMzk7KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcHJpbnRfc3VidGVzdF9uYW1lKGludCB0ZXN0X251bSwgaW50IHN1YnRlc3RfbnVtLFxuQEAgLTQwOSw3ICYjNDM7NDA5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfc3VidGVzdF9uYW1lKGludCB0ZXN0X251bSwgaW50IHN1YnRlc3RfbnVtLFxuIFx0aWYgKHJlc3VsdClcbiBcdFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcJiMzNDs6JXNcJiMzNDssIHJlc3VsdCk7XG4gXG4tXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGpzb253X3dyaXRlX2xvZ19tZXNzYWdlKGpzb25fd3JpdGVyX3QgKncsIGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KVxuQEAgLTEzMzMsMTQgJiM0MzsxMzMzLDE0IEBAIHZvaWQgaGV4ZHVtcChjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbilcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmICghKGkgJSAxNikpIHtcbiBcdFx0XHRpZiAoaSlcbi1cdFx0XHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0OyVzXCYjMzQ7LCBwcmVmaXgpO1xuIFx0XHR9XG4gXHRcdGlmIChpIFx1MDAyNlx1MDAyNiAhKGkgJSA4KSBcdTAwMjZcdTAwMjYgKGkgJSAxNikpXG4tXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcdFwmIzM0Oyk7XG4mIzQzO1x0XHRcdHB1dGNoYXIoJiMzOTtcXHQmIzM5Oyk7XG4gXHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDslMDJYIFwmIzM0OywgKCh1aW50OF90ICopKGJ1ZikpW2ldKTtcbiBcdH1cbi1cdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYTdkYjZmMDRmN2UxNDUuLmQxYzdmMDZiOGIxY2Y5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5AQCAtMTYwNSw3ICYjNDM7MTYwNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXAoX191MzIgcHJvZ19pZCwgZW51bSBkdW1wX21vZGUgbW9kZSwgY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25zXG4gXHRwcmludGYoXCYjMzQ7RFVNUCAoJXMpICVzLyVzOlxcblwmIzM0OywgbW9kZSA9PSBEVU1QX0pJVEVEID8gXCYjMzQ7SklURURcJiMzNDsgOiBcJiMzNDtYTEFURURcJiMzNDssIGZpbGVfbmFtZSwgcHJvZ19uYW1lKTtcbiBcdHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmcCkpXG4gXHRcdGZwdXRzKGJ1Ziwgc3Rkb3V0KTtcbi1cdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gXG4gXHRpZiAoZmVycm9yKGZwKSlcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O0ZhaWxlZCB0byBkdW1wIEJQRiBwcm9nIHdpdGggZXJyb3I6ICVkXFxuXCYjMzQ7LCBlcnJubyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbmNkZXZtZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcbmluZGV4IGQ5NmU4YTNiNWE2NTI2Li43YmRjYzQxMTRkYmExYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcbkBAIC0xMzUsNyAmIzQzOzEzNSw3IEBAIHN0YXRpYyB2b2lkIHByX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcbiBcdGlmIChlcnJubyAhPSAwKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7OiAlc1wmIzM0Oywgc3RyZXJyb3IoZXJybm8pKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbWVtb3J5X2J1ZmZlciAqdWRtYWJ1Zl9hbGxvYyhzaXplX3Qgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuY1xuaW5kZXggYzc4MDVlODdkMTJjNWQuLjEyMDgzNGY4YmEwZGE1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuY1xuQEAgLTExNyw3ICYjNDM7MTE3LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9zayhjb25zdCB1bnNpZ25lZCBjaGFyIHNrZXlzW10sIGNvbnN0IGNoYXIgKmRlc2NyKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7IyAlM2Q6IFwmIzM0OywgaSk7XG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIDMyOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JTAyeCBcJiMzNDssIHNrZXlzW2kgJiM0Mzsgal0pO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuY1xuaW5kZXggNzgxODBkYTFlZmNjNTMuLjQwNDY3ZTg2YmZkNDdiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmNcbkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIHN0YXRpYyBpbnQgY2FwdHVyZV9ldmVudHMoaW50IGZkLCBpbnQgZXZlbnRfZ3JvdXApXG4gXHRcdH1cbiBcdFx0aWYgKHNlcnZlcl9zaWRlKVxuIFx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDssc2VydmVyX3NpZGU6MVwmIzM0Oyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdH0gd2hpbGUgKDEpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcbmluZGV4IDdjYWYzMTM1NDQ4ZGE3Li43MjRkYTkyMjJhZDlhMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcbkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHN0YXRpYyBpbnQgcGZzb2NrZXQoaW50IHZlcilcbiBzdGF0aWMgdm9pZCBzdGF0dXNfYmFyX3VwZGF0ZSh2b2lkKVxuIHtcbiBcdGlmICh0b3RhbF9wYWNrZXRzICUgMTAgPT0gMCkge1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7LlwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7LiYjMzk7KTtcbiBcdFx0ZmZsdXNoKHN0ZGVycik7XG4gXHR9XG4gfVxuQEAgLTgyNSw3ICYjNDM7ODI1LDcgQEAgc3RhdGljIGludCB0ZXN0X3RwYWNrZXQoaW50IHZlcnNpb24sIGludCB0eXBlKVxuIFx0dW5tYXBfcmluZyhzb2NrLCBcdTAwMjZyaW5nKTtcbiBcdGNsb3NlKHNvY2spO1xuIFxuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jXG5pbmRleCAxNzBiZTE5MmY1YzdjZS4uODZjOGQ0OTQ1ZDczYzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmNcbkBAIC0yMDAsMTAgJiM0MzsyMDAsMTAgQEAgc3RhdGljIHZvaWQgX19wcmludF90aW1lc3RhbXAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHRpbWVzcGVjICpjdXIsXG4gXHRcdHRzX2RlbHRhID0gdGltZXNwZWNfdG9fbnM2NChjdXIpIC0gdGltZXNwZWNfdG9fbnM2NChcdTAwMjZ0c191c3IpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ICAoVVNSICYjNDM7XCYjMzQ7KTtcbiBcdFx0X19wcmludF90c19kZWx0YV9mb3JtYXR0ZWQodHNfZGVsdGEpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7KVwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7KSYjMzk7KTtcbiBcdH1cbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJlY29yZF90aW1lc3RhbXBfdXNyKHZvaWQpXG5AQCAtMjU0LDcgJiM0MzsyNTQsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90aW1pbmdfZXZlbnQoY2hhciAqbmFtZSwgc3RydWN0IHRpbWluZ19ldmVudCAqdGUpXG4gXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cdTAwM2VtaW4pO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OywgbWF4PVwmIzM0Oyk7XG4gXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cdTAwM2VtYXgpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiB9XG4gXG4gLyogVE9ETzogY29udmVydCB0byBjaGVja19hbmRfcHJpbnQgcGF5bG9hZCBvbmNlIEFQSSBpcyBzdGFibGUgKi9cbkBAIC0yNzEsNyAmIzQzOzI3MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3BheWxvYWQoY2hhciAqZGF0YSwgaW50IGxlbilcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtwYXlsb2FkOiBcJiMzNDspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyUwMmhoeCBcJiMzNDssIGRhdGFbaV0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcHJpbnRfcGt0aW5mbyhpbnQgZmFtaWx5LCBpbnQgaWZpbmRleCwgdm9pZCAqc2FkZHIsIHZvaWQgKmRhZGRyKVxuQEAgLTkzMyw3ICYjNDM7OTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O3Byb3RvY29sOiAgICAgJXNcXG5cJiMzNDssIHNvY2tfbmFtZXNbY2ZnX3Byb3RvXSk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7cGF5bG9hZDogICAgICAldVxcblwmIzM0OywgY2ZnX3BheWxvYWRfbGVuKTtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtzZXJ2ZXIgcG9ydDogICV1XFxuXCYjMzQ7LCBkZXN0X3BvcnQpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGlmIChkb19pcHY0KSB7XG4gXHRcdGlmIChjZmdfZG9fbGlzdGVuKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuY1xuaW5kZXggN2MyM2QzZGQ3ZDZkOTEuLjQxMmRlZmU5ODI3MTQzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcG93ZXJwYy9ueC1nemlwL2d1bnpfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcbkBAIC0zNjMsNyAmIzQzOzM2Myw3IEBAIGludCBkZWNvbXByZXNzX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCB2b2lkICpkZXZoYW5kbGUpXG4gXHRcdFx0Z290byBlcnIzO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JTAyeCBcJiMzNDssIHRtcFtpXSk7XG4gXHRcdGlmIChpID09IDUpXG4tXHRcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7Z3pIZWFkZXIgTVRJTUUsIFhGTCwgT1MgaWdub3JlZFxcblwmIzM0Oyk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oXG5pbmRleCA3N2I2OGM3MTI5YTY0OC4uODIwMTViMTlkZjZjMzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxuQEAgLTEwLDcgJiM0MzsxMCw3IEBAXG4gXG4gI2RlZmluZSBWRklPX0xPR19BTkRfRVhJVCguLi4pIGRvIHtcdFx0XFxcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDsgIFwmIzM0OyBfX1ZBX0FSR1NfXyk7XHRcXFxuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XHRcdFx0XFxcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1x0XHRcdFxcXG4gXHRleGl0KEtTRlRfRkFJTCk7XHRcdFx0XFxcbiB9IHdoaWxlICgwKVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2xpYnZmaW8uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2xpYnZmaW8uY1xuaW5kZXggM2EzZDFlZDYzNWMxZGYuLjgwYTMxMmYxNDlhNjZlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmNcbkBAIC02MCwxNiAmIzQzOzYwLDE2IEBAIGNoYXIgKip2ZmlvX3NlbGZ0ZXN0c19nZXRfYmRmcyhpbnQgKmFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50ICpucl9iZGZzKVxuIFx0fVxuIFxuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1VuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggZGV2aWNlKHMpIHRvIHVzZSwgc2tpcHBpbmcgdGVzdC5cXG5cJiMzNDspO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtUbyBwYXNzIHRoZSBkZXZpY2UgYWRkcmVzcyB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGU6XFxuXCYjMzQ7KTtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ICAgIGV4cG9ydCBWRklPX1NFTEZURVNUU19CREY9XFxcJiMzNDtzZWdtZW50OmJ1czpkZXZpY2UuZnVuY3Rpb25cXFwmIzM0O1xcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ICAgICVzIFtvcHRpb25zXVxcblwmIzM0OywgYXJndlswXSk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1RvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzKGVzKSB2aWEgYXJndjpcXG5cJiMzNDspO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDsgICAgJXMgW29wdGlvbnNdIHNlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvbiAuLi5cXG5cJiMzNDssIGFyZ3ZbMF0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGV4aXQoS1NGVF9TS0lQKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbmluZGV4IDA4MWUwNDVmNDY5NjBlLi5jYzkwM2NkYjQ1ZDkyZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbkBAIC04Niw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF92c29ja19hZGRyKEZJTEUgKmZwLCB1bnNpZ25lZCBpbnQgY2lkLCB1bnNpZ25lZCBpbnQgcG9ydClcbiBcdFx0ZnByaW50ZihmcCwgXCYjMzQ7JXU6XCYjMzQ7LCBjaWQpO1xuIFxuIFx0aWYgKHBvcnQgPT0gVk1BRERSX1BPUlRfQU5ZKVxuLVx0XHRmcHJpbnRmKGZwLCBcJiMzNDsqXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZwLCAmIzM5OyomIzM5Oyk7XG4gXHRlbHNlXG4gXHRcdGZwcmludGYoZnAsIFwmIzM0OyV1XCYjMzQ7LCBwb3J0KTtcbiB9XG5AQCAtOTQsNyAmIzQzOzk0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfYWRkcihGSUxFICpmcCwgdW5zaWduZWQgaW50IGNpZCwgdW5zaWduZWQgaW50IHBvcnQpXG4gc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfc3RhdChGSUxFICpmcCwgc3RydWN0IHZzb2NrX3N0YXQgKnN0KVxuIHtcbiBcdHByaW50X3Zzb2NrX2FkZHIoZnAsIHN0LVx1MDAzZW1zZy52ZGlhZ19zcmNfY2lkLCBzdC1cdTAwM2Vtc2cudmRpYWdfc3JjX3BvcnQpO1xuLVx0ZnByaW50ZihmcCwgXCYjMzQ7IFwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZnAsICYjMzk7ICYjMzk7KTtcbiBcdHByaW50X3Zzb2NrX2FkZHIoZnAsIHN0LVx1MDAzZW1zZy52ZGlhZ19kc3RfY2lkLCBzdC1cdTAwM2Vtc2cudmRpYWdfZHN0X3BvcnQpO1xuIFx0ZnByaW50ZihmcCwgXCYjMzQ7ICVzICVzICVzICV1XFxuXCYjMzQ7LFxuIFx0XHRzb2NrX3R5cGVfc3RyKHN0LVx1MDAzZW1zZy52ZGlhZ190eXBlKSxcbmRpZmYgLS1naXQgYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jXG5pbmRleCBjYjExMDhiYzkyNDk4OS4uZWJkYjk1ODE5YTc2NmQgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcbkBAIC01MjIsNyAmIzQzOzUyMiw3IEBAIGludCB1cGRhdGVfdGhlcm1hbF9kYXRhKClcbiBcdH1cbiBcbiBcdGlmICh0bW9uX2xvZykge1xuLVx0XHRmcHJpbnRmKHRtb25fbG9nLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGModG1vbl9sb2csICYjMzk7XFxuJiMzOTspO1xuIFx0XHRmZmx1c2godG1vbl9sb2cpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmMgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5pbmRleCA3ZWIzMjE2YTI3ZjQ1Zi4uOWE5NzJmNzNhMmMwMDUgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5AQCAtMTk5LDcgJiM0MzsxOTksNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2xvZ2dpbmcodm9pZClcbiBcdFx0ZnByaW50Zih0bW9uX2xvZywgXCYjMzQ7JXMlZCBcJiMzNDssIHB0ZGF0YS5jZGlbaV0udHlwZSxcbiBcdFx0XHRwdGRhdGEuY2RpW2ldLmluc3RhbmNlKTtcbiBcbi1cdGZwcmludGYodG1vbl9sb2csIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGModG1vbl9sb2csICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmMgYi90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuY1xuaW5kZXggZWY5NzkxNmUzODczYTEuLjNkYzZmYjlkZjkyNjgzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXG5AQCAtMTk5OSw3ICYjNDM7MTk5OSw3IEBAIHN0YXRpYyB2b2lkIHNjYW5fYXJndW1lbnRzKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXCYjMzQ7YmVlbiBlbmFibGVkLiBSYW5kb20gc2xlZXAgaXMgaW50ZW5kZWQgZm9yIHRoZSBmb2xsb3dpbmcgdHJhY2VyczpcXG5cJiMzNDspO1xuIFx0XHRcdGZvciAoaSA9IDA7IHJhbmRvbV90cmFjZXJzW2ldOyBpJiM0MzsmIzQzOylcbiBcdFx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDslc1xcblwmIzM0OywgcmFuZG9tX3RyYWNlcnNbaV0pO1xuLVx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0XHR9XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uYyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcbmluZGV4IDhjN2Y1ZTc1YjJlYzhkLi5lODFlNjc2ZDUxZDJhZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcbkBAIC00NDksNyAmIzQzOzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsXG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDslcyBbLWhdIFwmIzM0OywgbW9kZSk7XG4gXG4gXHRwcmludF9tc2dfYXJyYXkoc3RhcnRfbXNncyk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0cHJpbnRfbXNnX2FycmF5KGNvbW1vbl9vcHRpb25zKTtcbiBcdHByaW50X21zZ19hcnJheShvcHRfbXNncyk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jIGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jXG5pbmRleCBjYjE4N2U3ZDQ4ZDFjMi4uMzUzMmRhMmYyMjk2ZDggMTAwNjQ0XG4tLS0gYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xuQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIHZvaWQgZmF0YWwoY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXHR2YV9zdGFydChhcCwgZm10KTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4gXHR2YV9lbmQoYXApO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGV4aXQoRVJST1IpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy91c2IvZmZzLXRlc3QuYyBiL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXG5pbmRleCAyMmI5MzhmYmRmYjc3Mi4uZTk5MzczNmJhMGQ2NDcgMTAwNjQ0XG4tLS0gYS90b29scy91c2IvZmZzLXRlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmNcbkBAIC01NjIsNyAmIzQzOzU2Miw3IEBAIGVtcHR5X291dF9idWYoc3RydWN0IHRocmVhZCAqaWdub3JlLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBuYnl0ZXMpXG4gXHRcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JTR6ZDpcJiMzNDssIGxlbik7XG4gXHRcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyAlMDJ4XCYjMzQ7LCAqcCk7XG4gXHRcdFx0aWYgKDMxID09IChsZW4gJSAzMikpXG4tXHRcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0XHR9XG4gXHRcdGZmbHVzaChzdGRlcnIpO1xuIFx0XHRlcnJubyA9IEVJTFNFUTtcbmRpZmYgLS1naXQgYS90b29scy92ZXJpZmljYXRpb24vcnYvc3JjL2luX2tlcm5lbC5jIGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xuaW5kZXggZTZkZWE0MDQwZjhmNGMuLjI2MTMyMTcxZjYwMDhlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xuQEAgLTY2Nyw3ICYjNDM7NjY3LDcgQEAgc3RhdGljIHZvaWQgaWttX3VzYWdlX3ByaW50X3JlYWN0b3JzKHZvaWQpXG4gXHRcdGVuZCA9IHN0cnN0cihzdGFydCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdH1cbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIC8qXG4gICogaWttX3VzYWdlIC0gcHJpbnQgdXNhZ2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMjozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE1OGZjZTA0MDVjZTFjNTQ4MTBkNmM1NWQ1ZWFkMTE4OTA3ZTBkZTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAyMjozNjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmMKaW5kZXggOGJmY2ZmOWUyZjYzOTQuLjc2YWJkM2Y0ZmJjYmM1IDEwMDY0NAotLS0gYS90b29scy9icGYvYnBmdG9vbC9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9jb21tb24uYwpAQCAtNTMsNyAmIzQzOzUzLDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLikKIAl9IGVsc2UgewogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtFcnJvcjogJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJdmFfZW5kKGFwKTsKIH0KQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIHZvaWQgcF9pbmZvKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogCiAJdmFfc3RhcnQoYXAsIGZtdCk7CiAJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCXZhX2VuZChhcCk7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYyBiL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYwppbmRleCBjOTFlMWE2ZTFhMWVjYS4uYWVjZmM3Nzg2MjVmNzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9tYWluLmMKQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgdm9pZCBmcHJpbnRfaGV4KEZJTEUgKmYsIHZvaWQgKmFyZywgdW5zaWduZWQgaW50IG4sIGNvbnN0IGNoYXIgKnNlcCkKIAkJaWYgKCFpKQogCQkJLyogbm90aGluZyAqLzsKIAkJZWxzZSBpZiAoIShpICUgMTYpKQotCQkJZnByaW50ZihmLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCWZwdXRjKGYsICYjMzk7XG4mIzM5Oyk7CiAJCWVsc2UgaWYgKCEoaSAlIDgpKQogCQkJZnByaW50ZihmLCAmIzM0OyAgJiMzNDspOwogCQllbHNlCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oIGIvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaAppbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaApAQCAtMjUsNyAmIzQzOzI1LDcgQEAKIAlpZiAoanNvbl9vdXRwdXQpCQkJCVwKIAkJanNvbndfc3RhcnRfb2JqZWN0KGpzb25fd3RyKTsJCVwKIAllbHNlCQkJCQkJXAotCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDt7JiMzNDspOwkJCVwKJiM0MzsJCXB1dGNoYXIoJiMzOTt7JiMzOTspOwkJCQlcCiB9CiAKICNkZWZpbmUgTkVUX0VORF9PQkpFQ1RfTkVTVEVECQkJCVwKQEAgLTMzLDcgJiM0MzszMyw3IEBACiAJaWYgKGpzb25fb3V0cHV0KQkJCQlcCiAJCWpzb253X2VuZF9vYmplY3QoanNvbl93dHIpOwkJXAogCWVsc2UJCQkJCQlcCi0JCWZwcmludGYoc3Rkb3V0LCAmIzM0O30mIzM0Oyk7CQkJXAomIzQzOwkJcHV0Y2hhcigmIzM5O30mIzM5Oyk7CQkJCVwKIH0KIAogI2RlZmluZSBORVRfRU5EX09CSkVDVAkJCQkJXApAQCAtNDcsNyAmIzQzOzQ3LDcgQEAKIAlpZiAoanNvbl9vdXRwdXQpCQkJCVwKIAkJanNvbndfZW5kX29iamVjdChqc29uX3d0cik7CQlcCiAJZWxzZQkJCQkJCVwKLQkJZnByaW50ZihzdGRvdXQsICYjMzQ7XG4mIzM0Oyk7CQkJXAomIzQzOwkJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwkJCQlcCiB9CiAKICNkZWZpbmUgTkVUX1NUQVJUX0FSUkFZKG5hbWUsIGZtdF9zdHIpCQkJXApkaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCmluZGV4IGE5ZjczMGQ0MDdhOTI5Li5kMjdjYjlkNDk4NjA5MyAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYwpAQCAtMTI2Niw3ICYjNDM7MTI2Niw3IEBAIHN0YXRpYyB2b2lkIGhleF9wcmludCh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgRklMRSAqZikKIAkJCWZwcmludGYoZiwgJiMzNDslYyVzJiMzNDssIGMsIGogPT0gaSAmIzQzOyA3ID8gJiMzNDsgJiMzNDsgOiAmIzM0OyYjMzQ7KTsKIAkJfQogCi0JCWZwcmludGYoZiwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKGYsICYjMzk7XG4mIzM5Oyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMgYi90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMKaW5kZXggYjcwODEzYjBiZjhlZmEuLmUxMmUxNDc4MGMwZTQ1IDEwMDY0NAotLS0gYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jCkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIGludCBtb25pdG9yX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwKIAkJZGVmYXVsdDoKIAkJCWZwcmludGYoc3Rkb3V0LCAmIzM0O3Vua25vd24gZXZlbnQmIzM0Oyk7CiAJCX0KLQkJZnByaW50ZihzdGRvdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAKIAkJaSYjNDM7JiM0Mzs7CiAJCWlmIChpID09IGxvb3BzKQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jIGIvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jCmluZGV4IGJhMDg2NmViMzU4MTQ1Li5iNzZjOTRmZWUwNGQwOSAxMDA2NDQKLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuYwpAQCAtODcsNyAmIzQzOzg3LDcgQEAgaW50IGhhbW1lcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIHVuc2lnbmVkIGludCAqbGluZXMsIGludCBudW1fbGluZXMsCiAJCWlmIChqID09IHNpemVvZihzd2lycikgLSAxKQogCQkJaiA9IDA7CiAKLQkJZnByaW50ZihzdGRvdXQsICYjMzQ7WyYjMzQ7KTsKJiM0MzsJCXB1dGNoYXIoJiMzOTtbJiMzOTspOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX2xpbmVzOyBpJiM0MzsmIzQzOykgewogCQkJZnByaW50ZihzdGRvdXQsICYjMzQ7JXU6ICVkJiMzNDssIGxpbmVzW2ldLAogCQkJCWdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpOwpAQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBpbnQgaGFtbWVyX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgdW5zaWduZWQgaW50ICpsaW5lcywgaW50IG51bV9saW5lcywKIAkJaWYgKGxvb3BzICZhbXA7JmFtcDsgaXRlcmF0aW9uID09IGxvb3BzKQogCQkJYnJlYWs7CiAJfQotCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAJcmV0ID0gMDsKIAogZXhpdF9jbG9zZV9lcnJvcjoKZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vbHNncGlvLmMgYi90b29scy9ncGlvL2xzZ3Bpby5jCmluZGV4IDUyYTBiZTQ1NDEwYzk3Li5hYmIyYzZmYmMzZDdjYSAxMDA2NDQKLS0tIGEvdG9vbHMvZ3Bpby9sc2dwaW8uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9ncGlvL2xzZ3Bpby5jCkBAIC0xNTIsOSAmIzQzOzE1Miw5IEBAIGludCBsaXN0X2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSkKIAkJaWYgKGxpbmZvLmZsYWdzKSB7CiAJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDsgWyYjMzQ7KTsKIAkJCXByaW50X2F0dHJpYnV0ZXMoJmFtcDtsaW5mbyk7Ci0JCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtdJiMzNDspOwomIzQzOwkJCXB1dGNoYXIoJiMzOTtdJiMzOTspOwogCQl9Ci0JCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwogCiAJfQogCmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaCBiL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oCmluZGV4IGUyMmFlODdhNzI4OTIwLi44OWM5YTNkM2JjNzczMyAxMDA2NDQKLS0tIGEvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmgKQEAgLTI3LDcgJiM0MzsyNyw3IEBAIHZvaWQgdndhcm54KGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQogewogCWZwcmludGYoc3RkZXJyLCAmIzM0OyVzOiAmIzM0OywgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwogCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogfQogCiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMKaW5kZXggZTY5NTQ5MDk0MDFjOGUuLmUzYWIxZGI0NGIxNTRlIDEwMDY0NAotLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwpAQCAtODY3LDcgJiM0Mzs4NjcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQl9CiAJCQlpZiAoY3VsbCAmYW1wOyBDVUxMX1NUQUNLVFJBQ0UpCiAJCQkJZnByaW50Zihmb3V0LCAmIzM0OzpcbiVzJiMzNDssIGxpc3RbaV0uc3RhY2t0cmFjZSk7Ci0JCQlmcHJpbnRmKGZvdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJZnB1dGMoZm91dCwgJiMzOTtcbiYjMzk7KTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uYyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmMKaW5kZXggNWQwZjQyOGVlZDBhN2YuLjI0NWQ3ZjU4YzhmYjY1IDEwMDY0NAotLS0gYS90b29scy9uZXQveW5sL3lubHRvb2wvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmMKQEAgLTE1Niw3ICYjNDM7MTU2LDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLikKIAl9IGVsc2UgewogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtFcnJvcjogJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJdmFfZW5kKGFwKTsKIH0KQEAgLTE3MCw3ICYjNDM7MTcwLDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pCiAKIAl2YV9zdGFydChhcCwgZm10KTsKIAl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJdmFfZW5kKGFwKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmMgYi90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suYwppbmRleCAxMThjM2RlMmYyOTNlZS4uYjZkMjdkMzI2YjhhZDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jCkBAIC0yOTcsNyAmIzQzOzI5Nyw3IEBAIGludCBtYWtlX2JhY2t1cCh2b2lkKQogCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7ICVzJiMzNDssIGFyZyk7CiAJfQogCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jIGIvdG9vbHMvb2JqdG9vbC9kaXNhcy5jCmluZGV4IGU2YTU0YTgzNjA1YzkwLi4zMzlkMWQ1NjkwYzQyMCAxMDA2NDQKLS0tIGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuYwpAQCAtNTM3LDcgJiM0Mzs1MzcsNyBAQCB2b2lkIGRpc2FzX3ByaW50X2luc24oRklMRSAqc3RyZWFtLCBzdHJ1Y3QgZGlzYXNfY29udGV4dCAqZGN0eCwKIAkJcmV0dXJuOwogCiAJaWYgKHN0cmNtcChmb3JtYXQsICYjMzQ7XG4mIzM0OykgPT0gMCkgewotCQlmcHJpbnRmKHN0cmVhbSwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0cmVhbSwgJiMzOTtcbiYjMzk7KTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jCmluZGV4IGM5NTg0ZGJlZGY3N2FmLi5mYzliNmIxOGVkZWQ5ZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuYwpAQCAtMjUxMSw3ICYjNDM7MjUxMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2NhY2hlbGluZShzdHJ1Y3QgYzJjX2hpc3RzICpjMmNfaGlzdHMsCiAJCWhpc3RzX19mcHJpbnRmX2hlYWRlcnMoJmFtcDtjMmNfaGlzdHMtJmd0O2hpc3RzLCBvdXQpOwogCQlvbmNlID0gdHJ1ZTsKIAl9IGVsc2UgewotCQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKG91dCwgJiMzOTtcbiYjMzk7KTsKIAl9CiAKIAlmcHJpbnRmKG91dCwgJiMzNDsgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjMzQ7KTsKQEAgLTI1OTAsMTUgJiM0MzsyNTkwLDE1IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbikKIAlzZXR1cF9wYWdlcigpOwogCiAJcHJpbnRfYzJjX19kaXNwbGF5X3N0YXRzKG91dCk7Ci0JZnByaW50ZihvdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKG91dCwgJiMzOTtcbiYjMzk7KTsKIAlwcmludF9zaGFyZWRfY2FjaGVsaW5lX2luZm8ob3V0KTsKLQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMob3V0LCAmIzM5O1xuJiMzOTspOwogCXByaW50X2MyY19pbmZvKG91dCwgc2Vzc2lvbik7CiAKIAlpZiAoYzJjLnN0YXRzX29ubHkpCiAJCXJldHVybjsKIAotCWZwcmludGYob3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhvdXQsICYjMzk7XG4mIzM5Oyk7CiAJZnByaW50ZihvdXQsICYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiMzNDspOwogCWZwcmludGYob3V0LCAmIzM0OyAgICAgICAgICAgU2hhcmVkIERhdGEgQ2FjaGUgTGluZSBUYWJsZSAgICAgICAgICBcbiYjMzQ7KTsKIAlmcHJpbnRmKG91dCwgJiMzNDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4mIzM0Oyk7CkBAIC0yNjA2LDcgJiM0MzsyNjA2LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9jMmNfX2hpc3RzX2ZwcmludGYoRklMRSAqb3V0LCBzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uKQogCiAJaGlzdHNfX2ZwcmludGYoJmFtcDtjMmMuaGlzdHMuaGlzdHMsIHRydWUsIDAsIDAsIDAsIHN0ZG91dCwgdHJ1ZSk7CiAKLQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMob3V0LCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYob3V0LCAmIzM0Oz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiYjMzQ7KTsKIAlmcHJpbnRmKG91dCwgJiMzNDsgICAgICBTaGFyZWQgQ2FjaGUgTGluZSBEaXN0cmlidXRpb24gUGFyZXRvICAgICAgXG4mIzM0Oyk7CiAJZnByaW50ZihvdXQsICYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jCmluZGV4IGM0NjMyNTc3ZDEyOTYzLi43Y2IyMGIzYTAzZTRjZCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uYwpAQCAtNjkxLDcgJiM0Mzs2OTEsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KQogCQkJLyogc2Vzc2lvbiB1cCB0aW1lICovCiAJCQljc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gZGFlbW9uLSZndDtzdGFydCkgLyA2MCkpOwogCi0JCWZwcmludGYob3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMob3V0LCAmIzM5O1xuJiMzOTspOwogCX0gZWxzZSB7CiAJCWZwcmludGYob3V0LCAmIzM0O1slZDpkYWVtb25dIGJhc2U6ICVzXG4mIzM0OywgZ2V0cGlkKCksIGRhZW1vbi0mZ3Q7YmFzZSk7CiAJCWlmIChjbWQtJmd0O2xpc3QudmVyYm9zZSkgewpAQCAtNzMwLDcgJiM0Mzs3MzAsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KQogCQkJCS8qIHNlc3Npb24gdXAgdGltZSAqLwogCQkJCWNzdl9zZXAsICh1aW50NjRfdCkoKGN1cnIgLSBzZXNzaW9uLSZndDtzdGFydCkgLyA2MCkpOwogCi0JCQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCQlmcHV0YyhvdXQsICYjMzk7XG4mIzM5Oyk7CiAJCX0gZWxzZSB7CiAJCQlmcHJpbnRmKG91dCwgJiMzNDtbJWQ6JXNdIHBlcmYgcmVjb3JkICVzXG4mIzM0OywKIAkJCQlzZXNzaW9uLSZndDtwaWQsIHNlc3Npb24tJmd0O25hbWUsIHNlc3Npb24tJmd0O3J1bik7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tbG9jay5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYwppbmRleCA1ODQxZDQzYmU5NzE4NC4uMDVmMThkNDlmYzdiMTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYwpAQCAtMTMxOSw5ICYjNDM7MTMxOSw5IEBAIHN0YXRpYyB2b2lkIHByaW50X3Jlc3VsdCh2b2lkKQogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoa2V5LCAmYW1wO2xvY2tfa2V5cywgbGlzdCkgewogCQkJa2V5LSZndDtwcmludChrZXksIHN0KTsKLQkJCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7ICYjMzQ7KTsKJiM0MzsJCQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTsgJiMzOTspOwogCQl9Ci0JCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAogCQlpZiAoJiM0MzsmIzQzO3ByaW50ZWQgJmd0Oz0gcHJpbnRfbnJfZW50cmllcykKIAkJCWJyZWFrOwpAQCAtMTU5OCw3ICYjNDM7MTU5OCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9jc3YoY29uc3QgY2hhciAqc2VwKQogCQlmcHJpbnRmKGxvY2tfb3V0cHV0LCAmIzM0OyVzJXMgJXMmIzM0OywgJiMzNDt0eXBlJiMzNDssIHNlcCwgJiMzNDtjYWxsZXImIzM0Oyk7CiAJCWlmICh2ZXJib3NlICZndDsgMCkKIAkJCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7JXMgJXMmIzM0Oywgc2VwLCAmIzM0O3N0YWNrdHJhY2UmIzM0Oyk7Ci0JCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAkJYnJlYWs7CiAJY2FzZSBMT0NLX0FHR1JfQUREUjoKIAkJZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDslcyVzICVzJXMgJXNcbiYjMzQ7LCAmIzM0O2FkZHJlc3MmIzM0Oywgc2VwLCAmIzM0O3N5bWJvbCYjMzQ7LCBzZXAsICYjMzQ7dHlwZSYjMzQ7KTsKQEAgLTE2MjksNyAmIzQzOzE2MjksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9sb2NrX3N0YXRfc3RkaW8oc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGtleSwgJmFtcDtsb2NrX2tleXMsIGxpc3QpIHsKIAkJa2V5LSZndDtwcmludChrZXksIHN0KTsKLQkJZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDsgJiMzNDspOwomIzQzOwkJZnB1dGMobG9ja19vdXRwdXQsICYjMzk7ICYjMzk7KTsKIAl9CiAKIAlzd2l0Y2ggKGFnZ3JfbW9kZSkgewpAQCAtMTY4Nyw3ICYjNDM7MTY4Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzCiAJY2FzZSBMT0NLX0FHR1JfQ0FMTEVSOgogCQlmcHJpbnRmKGxvY2tfb3V0cHV0LCAmIzM0OyVzJXMgJXMmIzM0OywgZ2V0X3R5cGVfZmxhZ3NfbmFtZShzdC0mZ3Q7ZmxhZ3MpLCBzZXAsIHN0LSZndDtuYW1lKTsKIAkJaWYgKHZlcmJvc2UgJmx0Oz0gMCkKLQkJCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJZnB1dGMobG9ja19vdXRwdXQsICYjMzk7XG4mIzM5Oyk7CiAJCWJyZWFrOwogCWNhc2UgTE9DS19BR0dSX1RBU0s6CiAJCXBpZCA9IHN0LSZndDthZGRyOwpAQCAtMTcyMSw3ICYjNDM7MTcyMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzCiAJCQlnZXRfc3ltYm9sX25hbWVfb2Zmc2V0KGttYXAsIHN5bSwgaXAsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogCQkJZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDslcyAlI2x4ICVzJiMzNDssIGkgPyAmIzM0OzomIzM0OyA6IHNlcCwgKHVuc2lnbmVkIGxvbmcpIGlwLCBidWYpOwogCQl9Ci0JCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAl9CiB9CiAKQEAgLTE3ODEsNyAmIzQzOzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9mb290ZXJfY3N2KGludCB0b3RhbCwgaW50IGJhZCwgc3RydWN0IGxvY2tfY29udGVudGlvbl9mYWlscyAqZgogCQlmb3IgKGkgPSAwOyBpICZsdDsgQlJPS0VOX01BWDsgaSYjNDM7JiM0MzspCiAJCQlmcHJpbnRmKGxvY2tfb3V0cHV0LCAmIzM0OyVzIGJhZF8lcz0lZCYjMzQ7LCBzZXAsIG5hbWVbaV0sIGJhZF9oaXN0W2ldKTsKIAl9Ci0JZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMobG9ja19vdXRwdXQsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZhaWxzKQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jIGIvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jCmluZGV4IDlhYzI5YmRjM2NkNTQ3Li5lNjBjMDczMDVkMTk4YiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuYwpAQCAtMjU2MSw3ICYjNDM7MjU2MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZXZlbnQoc3RydWN0IHBlcmZfc2NyaXB0ICpzY3JpcHQsCiAKIAlwZXJmX3NhbXBsZV9fZnByaW50Zl9pcGMoc2FtcGxlLCBldnNlbCwgZnApOwogCi0JZnByaW50ZihmcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoUFJJTlRfRklFTEQoU1JDQ09ERSkpIHsKIAkJaWYgKG1hcF9fZnByaW50Zl9zcmNjb2RlKGFsLSZndDttYXAsIGFsLSZndDthZGRyLCBzdGRvdXQsCkBAIC0yODE1LDcgJiM0MzsyODE1LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX2RlZmVycmVkX3NhbXBsZV9ldmVudChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sLAogCQkJCSAgICBjdXJzb3IsIHN5bWJvbF9jb25mLmJ0X3N0b3BfbGlzdCwgZnApOwogCX0KIAotCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGZwLCAmIzM5O1xuJiMzOTspOwogCiAJaWYgKHZlcmJvc2UgJmd0OyAwKQogCQlmZmx1c2goZnApOwpAQCAtMzI3MSwxMSAmIzQzOzMyNzEsMTEgQEAgc3RhdGljIGludCBsaXN0X2F2YWlsYWJsZV9sYW5ndWFnZXNfY2Ioc3RydWN0IHNjcmlwdGluZ19vcHMgKm9wcywgY29uc3QgY2hhciAqc3AKIAogc3RhdGljIHZvaWQgbGlzdF9hdmFpbGFibGVfbGFuZ3VhZ2VzKHZvaWQpCiB7Ci0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAlmcHJpbnRmKHN0ZGVyciwgJiMzNDtTY3JpcHRpbmcgbGFuZ3VhZ2UgZXh0ZW5zaW9ucyAodXNlZCBpbiAmIzM0OwogCQkmIzM0O3BlcmYgc2NyaXB0IC1zIFtzcGVjOl1zY3JpcHQuW3NwZWNdKTpcblxuJiMzNDspOwogCXNjcmlwdF9zcGVjX19mb3JfZWFjaCgmYW1wO2xpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYik7Ci0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIH0KIAogLyogRmluZCBzY3JpcHQgZmlsZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeSBvciBleGVjIHBhdGggKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwppbmRleCBjNDdmNWMzODc4MzhjNS4uMDM3ZWJjNDdmN2RjY2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmMKQEAgLTM3LDcgJiM0MzszNyw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O0Vycm9yOlxuJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7Ci0JCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC02Miw3ICYjNDM7NjIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTgzLDcgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJCXJldHVybiAtMTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jIGIvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmMKaW5kZXggOGM0Yzg5MjVkZjJjMjIuLjA0NGQyYWEzYjMxMjE4IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuYwpAQCAtNjkxLDcgJiM0Mzs2OTEsNyBAQCBzdGF0aWMgaW50IGhpc3RzX19mcHJpbnRmX2hpZXJhcmNoeV9oZWFkZXJzKHN0cnVjdCBoaXN0cyAqaGlzdHMsCiAJCX0KIAogbmV4dF9saW5lOgotCQlmcHJpbnRmKGZwLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiAJfQogCiAJZnByaW50ZihmcCwgJiMzNDsjICYjMzQ7KTsKQEAgLTc4Myw3ICYjNDM7NzgzLDcgQEAgaGlzdHNfX2ZwcmludGZfc3RhbmRhcmRfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLAogCQlpZiAobGluZSkKIAkJCWZwcmludGYoZnAsICYjMzQ7IyAmIzM0Oyk7CiAJCWZwcmludGZfbGluZShoaXN0cywgaHBwLCBsaW5lLCBmcCk7Ci0JCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAl9CiAKIAlpZiAoc2VwKQpAQCAtODA2LDEwICYjNDM7ODA2LDEwIEBAIGhpc3RzX19mcHJpbnRmX3N0YW5kYXJkX2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cywKIAogCQl3aWR0aCA9IGZtdC0mZ3Q7d2lkdGgoZm10LCBocHAsIGhpc3RzKTsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IHdpZHRoOyBpJiM0MzsmIzQzOykKLQkJCWZwcmludGYoZnAsICYjMzQ7LiYjMzQ7KTsKJiM0MzsJCQlmcHV0YyhmcCwgJiMzOTsuJiMzOTspOwogCX0KIAotCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGZwLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoZnAsICYjMzQ7I1xuJiMzNDspOwogCXJldHVybiBocHBfbGlzdC0mZ3Q7bnJfaGVhZGVyX2xpbmVzICYjNDM7IDI7CiB9CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMKaW5kZXggNWQwNjY0ZmY3M2I3OTEuLjhlMDk5Y2NhYWUzOWE2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS5jCkBAIC04OTUsNyAmIzQzOzg5NSw3IEBAIHN0YXRpYyB2b2lkIGNzX2V0bV9fZHVtcF9ldmVudChzdHJ1Y3QgY3NfZXRtX3F1ZXVlICpldG1xLAogCWNvbnN0IGNoYXIgKmNvbG9yID0gUEVSRl9DT0xPUl9CTFVFOwogCXNpemVfdCBidWZmZXJfdXNlZCA9IDA7CiAKLQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwogCWNvbG9yX2ZwcmludGYoc3Rkb3V0LCBjb2xvciwKIAkJICAgICAmIzM0Oy4gLi4uIENvcmVTaWdodCAlcyBUcmFjZSBkYXRhOiBzaXplICUjenggYnl0ZXNcbiYjMzQ7LAogCQkgICAgIGNzX2V0bV9kZWNvZGVyX19nZXRfbmFtZShldG1xLSZndDtkZWNvZGVyKSwgYnVmZmVyLSZndDtzaXplKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jIGIvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmMKaW5kZXggNmI1ZmZlODFmMTQxMjEuLjU0Mjk5ODRhYjQ5YzkwIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvZGVidWcuYwpAQCAtMzUwLDcgJiM0MzszNTAsNyBAQCB2b2lkIF9fZHVtcF9zdGFjayhGSUxFICpmaWxlLCB2b2lkICoqc3RhY2tkdW1wLCBzaXplX3Qgc3RhY2tkdW1wX3NpemUpCiAJCQlmcHJpbnRmKGZpbGUsICYjMzQ7ICAgICMlemQgJXAgJiMzNDssIGksIHN0YWNrZHVtcFtpXSk7CiAKIAkJbWFwX19mcHJpbnRmX3NyY2xpbmUoYWwubWFwLCBhbC5hZGRyLCAmIzM0OyYjMzQ7LCBmaWxlKTsKLQkJZnByaW50ZihmaWxlLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMoZmlsZSwgJiMzOTtcbiYjMzk7KTsKIAkJYWRkcl9sb2NhdGlvbl9fZXhpdCgmYW1wO2FsKTsKIAl9CiAJdGhyZWFkX19wdXQodGhyZWFkKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuYyBiL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuYwppbmRleCAwOTFkOGY3ZjZiZDJjOS4uOTY1YjE3YzgxMjI0YjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvaGVhZGVyLmMKQEAgLTI0NTQsNyAmIzQzOzI0NTQsNyBAQCBzdGF0aWMgdm9pZCBfX3ByaW50X3BtdV9jYXBzKEZJTEUgKmZwLCBpbnQgbnJfY2FwcywgY2hhciAqKmNhcHMsIGNoYXIgKnBtdV9uYW1lKQogCQlkZWxpbWl0ZXIgPSAmIzM0OywgJiMzNDs7CiAJfQogCi0JZnByaW50ZihmcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X2NwdV9wbXVfY2FwcyhzdHJ1Y3QgZmVhdF9mZCAqZmYsIEZJTEUgKmZwKQpAQCAtMjUxMyw3ICYjNDM7MjUxMyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3BtdV9tYXBwaW5ncyhzdHJ1Y3QgZmVhdF9mZCAqZmYsIEZJTEUgKmZwKQogCQlwbXVfbnVtLS07CiAJfQogCi0JZnByaW50ZihmcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoIXBtdV9udW0pCiAJCXJldHVybjsKQEAgLTQzNDksNyAmIzQzOzQzNDksNyBAQCBpbnQgcGVyZl9oZWFkZXJfX2ZwcmludGZfaW5mbyhzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uLCBGSUxFICpmcCwgYm9vbCBmdWxsKQogCQkJZnByaW50ZihmcCwgJiMzNDslcyAmIzM0OywgZmVhdF9vcHNbYml0XS5uYW1lKTsKIAl9CiAKLQlmcHJpbnRmKGZwLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmMgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuYwppbmRleCBlZjU1ZDYyMzJjZjBjMi4uMGEzNTQ5M2I4NTRhY2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jCkBAIC03MCwxNCAmIzQzOzcwLDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X2RhdGEoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbGVuLCB1aW50NjRfdCBwb3MsCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgaW5kZW50OyBpJiM0MzsmIzQzOykKLQkJZnByaW50ZihmLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CQlmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7CiAKIAlmcHJpbnRmKGYsICYjMzQ7ICAlMDgmIzM0OyBQUkl4NjQgJiMzNDs6ICYjMzQ7LCBwb3MpOwogCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KQogCQlmcHJpbnRmKGYsICYjMzQ7ICUwMngmIzM0OywgYnVmW2ldKTsKIAlmb3IgKDsgaSAmbHQ7IDE2OyBpJiM0MzsmIzQzOykKIAkJZnByaW50ZihmLCAmIzM0OyAgICYjMzQ7KTsKLQlmcHJpbnRmKGYsICYjMzQ7ICYjMzQ7KTsKJiM0MzsJZnB1dGMoZiwgJiMzOTsgJiMzOTspOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9ub19kYXRhKHVpbnQ2NF90IHBvcywgaW50IGluZGVudCkKQEAgLTg1LDEyICYjNDM7ODUsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHRfcHJpbnRfbm9fZGF0YSh1aW50NjRfdCBwb3MsIGludCBpbmRlbnQpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgaW5kZW50OyBpJiM0MzsmIzQzOykKLQkJZnByaW50ZihmLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CQlmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7CiAKIAlmcHJpbnRmKGYsICYjMzQ7ICAlMDgmIzM0OyBQUkl4NjQgJiMzNDs6ICYjMzQ7LCBwb3MpOwogCWZvciAoaSA9IDA7IGkgJmx0OyAxNjsgaSYjNDM7JiM0MzspCiAJCWZwcmludGYoZiwgJiMzNDsgICAmIzM0Oyk7Ci0JZnByaW50ZihmLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CWZwdXRjKGYsICYjMzk7ICYjMzk7KTsKIH0KIAogc3RhdGljIHNzaXplX3QgbG9nX2J1Zl9fd3JpdGUodm9pZCAqY29va2llLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jIGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jCmluZGV4IGMxYzEyMzA4Y2MxMmZmLi4yNjM4OTQ2NjNmMWE4NyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9saWJiZmQuYwpAQCAtNjAzLDcgJiM0Mzs2MDMsNyBAQCBpbnQgc3ltYm9sX19kaXNhc3NlbWJsZV9icGZfbGliYmZkKHN0cnVjdCBzeW1ib2wgKnN5bSBfX21heWJlX3VudXNlZCwKIAkJfSBlbHNlCiAJCQlzcmNsaW5lID0gTlVMTDsKIAotCQlmcHJpbnRmKHMsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzLCAmIzM5O1xuJiMzOTspOwogCQlwcmV2X2J1Zl9zaXplID0gYnVmX3NpemU7CiAJCWZmbHVzaChzKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uYyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmMKaW5kZXggZjM5MWE4MjI0ODBkYjAuLjYzYThkM2NjYWE0ZjljIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvc2Vzc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmMKQEAgLTEyNTcsNyAmIzQzOzEyNTcsNyBAQCBpbnQgcGVyZl9ldmVudF9fcHJvY2Vzc19maW5pc2hlZF9yb3VuZChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sIF9fbWF5YmVfdW51cwogCQkJCSAgICAgICBzdHJ1Y3Qgb3JkZXJlZF9ldmVudHMgKm9lKQogewogCWlmIChkdW1wX3RyYWNlKQotCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCXB1dGNoYXIoJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gb3JkZXJlZF9ldmVudHNfX2ZsdXNoKG9lLCBPRV9GTFVTSF9fUk9VTkQpOwogfQogCkBAIC00MDAwLDcgJiM0Mzs0MDAwLDcgQEAgaW50IHBlcmZfZXZlbnRfX3Byb2Nlc3NfaWRfaW5kZXgoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCBfX21heWJlX3VudXNlZCwKIAkJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDsgIG1hY2hpbmVfcGlkOiAlJiMzNDtQUklfbGQ2NCwgZTItJmd0O21hY2hpbmVfcGlkKTsKIAkJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDsgIHZjcHU6ICUmIzM0O1BSSV9sdTY0JiMzNDtcbiYjMzQ7LCBlMi0mZ3Q7dmNwdSk7CiAJCQl9IGVsc2UgewotCQkJCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCQlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jIGIvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jCmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuYwpAQCAtNTI5LDcgJiM0Mzs1MjksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9tZXRyaWNfanNvbihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnIF9fbWF5YmVfdW51c2VkLAogCQl9CiAJfQogCWlmICghY29uZmlnLSZndDttZXRyaWNfb25seSkKLQkJZnByaW50ZihvdXQsICYjMzQ7fSYjMzQ7KTsKJiM0MzsJCWZwdXRjKG91dCwgJiMzOTt9JiMzOTspOwogfQogCiBzdGF0aWMgdm9pZCBuZXdfbGluZV9qc29uKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsIHZvaWQgKmN0eCkKQEAgLTEzMTYsNyAmIzQzOzEzMTYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWFkZXJfc3RkKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsCiAJRklMRSAqb3V0cHV0ID0gY29uZmlnLSZndDtvdXRwdXQ7CiAJaW50IGk7CiAKLQlmcHJpbnRmKG91dHB1dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMob3V0cHV0LCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYob3V0cHV0LCAmIzM0OyBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAmIzM0Oyk7CiAJaWYgKF90YXJnZXQtJmd0O2JwZl9zdHIpCiAJCWZwcmludGYob3V0cHV0LCAmIzM0O1wmIzM5O0JQRiBwcm9ncmFtKHMpICVzJiMzNDssIF90YXJnZXQtJmd0O2JwZl9zdHIpOwpAQCAtMTMzMyw3ICYjNDM7MTMzMyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9zdGQoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywKIAllbHNlCiAJCWZwcmludGYob3V0cHV0LCAmIzM0O3RocmVhZCBpZCBcJiMzOTslcyYjMzQ7LCBfdGFyZ2V0LSZndDt0aWQpOwogCi0JZnByaW50ZihvdXRwdXQsICYjMzQ7XCYjMzk7JiMzNDspOwomIzQzOwlmcHV0YyhvdXRwdXQsICYjMzk7XCYjMzk7JiMzOTspOwogCWlmIChjb25maWctJmd0O3J1bl9jb3VudCAmZ3Q7IDEpCiAJCWZwcmludGYob3V0cHV0LCAmIzM0OyAoJWQgcnVucykmIzM0OywgY29uZmlnLSZndDtydW5fY291bnQpOwogCWZwcmludGYob3V0cHV0LCAmIzM0OzpcblxuJiMzNDspOwpAQCAtMTQwNiw5ICYjNDM7MTQwNiw5IEBAIHN0YXRpYyB2b2lkIHByaW50X3RhYmxlKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsIEZJTEUgKm91dHB1dCwgZG91YmxlIGF2CiAJCWZwcmludGYob3V0cHV0LCAmIzM0OyAlMTcuOWYgKCUmIzQzOy45ZikgJiMzNDssIHJ1biwgcnVuIC0gYXZnKTsKIAogCQlmb3IgKGggPSAwOyBoICZsdDsgbjsgaCYjNDM7JiM0MzspCi0JCQlmcHJpbnRmKG91dHB1dCwgJiMzNDsjJiMzNDspOwomIzQzOwkJCWZwdXRjKG91dHB1dCwgJiMzOTsjJiMzOTspOwogCi0JCWZwcmludGYob3V0cHV0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMob3V0cHV0LCAmIzM5O1xuJiMzOTspOwogCX0KIAogCWZwcmludGYob3V0cHV0LCAmIzM0O1xuJSpzIyBGaW5hbCByZXN1bHQ6XG4mIzM0OywgaW5kZW50LCAmIzM0OyYjMzQ7KTsKQEAgLTE0MjgsNyAmIzQzOzE0MjgsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9mb290ZXIoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZykKIAkJcmV0dXJuOwogCiAJaWYgKCFjb25maWctJmd0O251bGxfcnVuKQotCQlmcHJpbnRmKG91dHB1dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKG91dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAogCWlmIChjb25maWctJmd0O3J1bl9jb3VudCA9PSAxKSB7CiAJCWZwcmludGYob3V0cHV0LCAmIzM0OyAlMTcuOWYgc2Vjb25kcyB0aW1lIGVsYXBzZWQmIzM0OywgYXZnKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYwppbmRleCA2ZWFkZGZjZjgzM2U1Mi4uMmM1MzQwYTkyOGRkMWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmMKQEAgLTIxNyw3ICYjNDM7MjE3LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9yZWFkX3ZhbHVlc19fZGlzcGxheV9wcmV0dHkoRklMRSAqZnAsCiAJZnByaW50ZihmcCwgJiMzNDsjICUqcyAgJSpzJiMzNDssIHBpZHdpZHRoLCAmIzM0O1BJRCYjMzQ7LCB0aWR3aWR0aCwgJiMzNDtUSUQmIzM0Oyk7CiAJZm9yIChqID0gMDsgaiAmbHQ7IHZhbHVlcy0mZ3Q7bnVtX2NvdW50ZXJzOyBqJiM0MzsmIzQzOykKIAkJZnByaW50ZihmcCwgJiMzNDsgICUqcyYjMzQ7LCBjb3VudGVyd2lkdGhbal0sIGV2c2VsX19uYW1lKHZhbHVlcy0mZ3Q7Y291bnRlcnNbal0pKTsKLQlmcHJpbnRmKGZwLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB2YWx1ZXMtJmd0O3RocmVhZHM7IGkmIzQzOyYjNDM7KSB7CiAJCWZwcmludGYoZnAsICYjMzQ7ICAlKmQgICUqZCYjMzQ7LCBwaWR3aWR0aCwgdmFsdWVzLSZndDtwaWRbaV0sCkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLAogCQlmb3IgKGogPSAwOyBqICZsdDsgdmFsdWVzLSZndDtudW1fY291bnRlcnM7IGomIzQzOyYjNDM7KQogCQkJZnByaW50ZihmcCwgJiMzNDsgICUqJiMzNDsgUFJJdTY0LAogCQkJCWNvdW50ZXJ3aWR0aFtqXSwgdmFsdWVzLSZndDt2YWx1ZVtpXVtqXSk7Ci0JCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJZnJlZShjb3VudGVyd2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuYyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmMKaW5kZXggNzJhZDc5MTViMDRmZDIuLjYwMGQ1YjZlMDRhODgwIDEwMDY0NAotLS0gYS90b29scy9wb3dlci9hY3BpL3Rvb2xzL2FjcGlkdW1wL2FwZHVtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmMKQEAgLTE3MSw3ICYjNDM7MTcxLDcgQEAgYXBfZHVtcF90YWJsZV9idWZmZXIoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSwKIAlhY3BpX3V0X2R1bXBfYnVmZmVyX3RvX2ZpbGUoZ2JsX291dHB1dF9maWxlLAogCQkJCSAgICBBQ1BJX0NBU1RfUFRSKHU4LCB0YWJsZSksIHRhYmxlX2xlbmd0aCwKIAkJCQkgICAgREJfQllURV9ESVNQTEFZLCAwKTsKLQlmcHJpbnRmKGdibF9vdXRwdXRfZmlsZSwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZ2JsX291dHB1dF9maWxlLCAmIzM5O1xuJiMzOTspOwogCXJldHVybiAoMCk7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmMgYi90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jCmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDQKLS0tIGEvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jCkBAIC0xMjIsNyAmIzQzOzEyMiw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKQogCiAJaWYgKGxldmVsID09IDApIHsKIAkJaWYgKGhlYWRlcikKLQkJCWZwcmludGYob3V0ZiwgJiMzNDt7JiMzNDspOwomIzQzOwkJCWZwdXRjKG91dGYsICYjMzk7eyYjMzk7KTsKIAkJZWxzZQogCQkJZnByaW50ZihvdXRmLCAmIzM0O1xufVxuJiMzNDspOwogCkBAIC0xMzgsNyAmIzQzOzEzOCw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKQogCiAJCWlmICh2YWx1ZSkgewogCQkJaWYgKGxhc3RfbGV2ZWwgIT0gbGV2ZWwpCi0JCQkJZnByaW50ZihvdXRmLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCQlmcHV0YyhvdXRmLCAmIzM5O1xuJiMzOTspOwogCiAJCQlmcHJpbnRmKG91dGYsICYjMzQ7JXNcJiMzNDslc1wmIzM0OzogJiMzNDssIGRlbGltaXRlcnMsIGhlYWRlcik7CiAJCQlmcHJpbnRmKG91dGYsICYjMzQ7XCYjMzQ7JXNcJiMzNDsmIzM0OywgdmFsdWUpOwpAQCAtMTU2LDcgJiM0MzsxNTYsNyBAQCBzdGF0aWMgdm9pZCBmb3JtYXRfYW5kX3ByaW50KEZJTEUgKm91dGYsIGludCBsZXZlbCwgY2hhciAqaGVhZGVyLCBjaGFyICp2YWx1ZSkKIAkJCQkJZnByaW50ZihvdXRmLCAmIzM0O1xuJXN9JiMzNDssIGRlbGltaXRlcnMpOwogCQkJfQogCQkJaWYgKGFicyhsYXN0X2xldmVsIC0gbGV2ZWwpICZsdDsgMykKLQkJCQlmcHJpbnRmKG91dGYsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJCWZwdXRjKG91dGYsICYjMzk7XG4mIzM5Oyk7CiAJCQlpZiAoaGVhZGVyKQogCQkJCWZwcmludGYob3V0ZiwgJiMzNDslc1wmIzM0OyVzXCYjMzQ7OiB7JiMzNDssIGRlbGltaXRlcnMsCiAJCQkJCWhlYWRlcik7CmRpZmYgLS1naXQgYS90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jIGIvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYwppbmRleCA5MjA2OTRjM2MxZWM5NC4uNDVkMzlhMGZjZjcyYTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYwpAQCAtOTA5OSw3ICYjNDM7OTA5OSw3IEBAIHZvaWQgZHVtcF9jcHVpZF9oeXBlcnZpc29yKHZvaWQpCiAJZHVtcF93b3JkX2NoYXJzKGVieCk7CiAJZHVtcF93b3JkX2NoYXJzKGVjeCk7CiAJZHVtcF93b3JkX2NoYXJzKGVkeCk7Ci0JZnByaW50ZihvdXRmLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhvdXRmLCAmIzM5O1xuJiMzOTspOwogfQogCiB2b2lkIHByb2Nlc3NfY3B1aWQoKQpAQCAtOTc0OSw3ICYjNDM7OTc0OSw3IEBAIHZvaWQgdG9wb2xvZ3lfcHJvYmUoYm9vbCBzdGFydHVwKQogCQlmcHJpbnRmKG91dGYsICYjMzQ7IHNpYmxpbmdzJiMzNDspOwogCQlmb3IgKGh0X2lkID0gMDsgaHRfaWQgJmx0Oz0gTUFYX0hUX0lEOyAmIzQzOyYjNDM7aHRfaWQpCiAJCQlmcHJpbnRmKG91dGYsICYjMzQ7ICVkJiMzNDssIGNwdXNbaV0uaHRfc2libGluZ19jcHVfaWRbaHRfaWRdKTsKLQkJZnByaW50ZihvdXRmLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMob3V0ZiwgJiMzOTtcbiYjMzk7KTsKIAl9CiAKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYwppbmRleCAxZWUyMTdkOTc0MzQwZS4uNjRiOTdhNDFhZjQ1ZWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMKQEAgLTE0OCw3ICYjNDM7MTQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBodGFiX21lbV91c2VfY2FzZSAqaHRhYl9tZW1fZmluZF91c2VfY2FzZV9vcl9leGl0KGNvbnN0IGNoYXIKIAlmcHJpbnRmKHN0ZGVyciwgJiMzNDthdmFpbGFibGUgdXNlIGNhc2U6JiMzNDspOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHVzZV9jYXNlcyk7IGkmIzQzOyYjNDM7KQogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDsgJXMmIzM0OywgdXNlX2Nhc2VzW2ldLm5hbWUpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJZXhpdCgxKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jCmluZGV4IDM1NThmZTEwZTI4Y2Y5Li41OGVhMmEyZWMxM2UyZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuYwpAQCAtMjI4LDcgJiM0MzsyMjgsNyBAQCBpbnQgZ2V0X2ppdGVkX3Byb2dyYW1fdGV4dChpbnQgZmQsIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X3N6KQogCWZvciAocGMgPSAwLCBpID0gMDsgaSAmbHQ7IGppdGVkX2Z1bmNzOyAmIzQzOyYjNDM7aSkgewogCQlmcHJpbnRmKHRleHRfb3V0LCAmIzM0O2Z1bmMgIyVkOlxuJiMzNDssIGkpOwogCQlkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICYjNDM7IHBjLCBmdW5jX2xlbnNbaV0pOwotCQlmcHJpbnRmKHRleHRfb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGModGV4dF9vdXQsICYjMzk7XG4mIzM5Oyk7CiAJCXBjICYjNDM7PSBmdW5jX2xlbnNbaV07CiAJfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYwppbmRleCA3YmE4Mjk3NGVlNzg0ZC4uYjUyMGJlMWJmN2FhYTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYwpAQCAtMzgzLDcgJiM0MzszODMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90ZXN0X3Jlc3VsdChjb25zdCBzdHJ1Y3QgcHJvZ190ZXN0X2RlZiAqdGVzdCwgY29uc3Qgc3RydWN0IHRlcwogCWVsc2UKIAkJZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCAmIzM0O09LIChTS0lQOiAlZC8lZCkmIzM0Oywgc2tpcHBlZF9jbnQsIHN1YnRlc3RzX2NudCk7CiAKLQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfbG9nKGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KQpAQCAtMzkxLDcgJiM0MzszOTEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90ZXN0X2xvZyhjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudCkKIAlsb2dfYnVmW2xvZ19jbnRdID0gJiMzOTtcMCYjMzk7OwogCWZwcmludGYoZW52LnN0ZG91dF9zYXZlZCwgJiMzNDslcyYjMzQ7LCBsb2dfYnVmKTsKIAlpZiAobG9nX2J1Zltsb2dfY250IC0gMV0gIT0gJiMzOTtcbiYjMzk7KQotCQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhlbnYuc3Rkb3V0X3NhdmVkLCAmIzM5O1xuJiMzOTspOwogfQogCiBzdGF0aWMgdm9pZCBwcmludF9zdWJ0ZXN0X25hbWUoaW50IHRlc3RfbnVtLCBpbnQgc3VidGVzdF9udW0sCkBAIC00MDksNyAmIzQzOzQwOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3N1YnRlc3RfbmFtZShpbnQgdGVzdF9udW0sIGludCBzdWJ0ZXN0X251bSwKIAlpZiAocmVzdWx0KQogCQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7OiVzJiMzNDssIHJlc3VsdCk7CiAKLQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIGpzb253X3dyaXRlX2xvZ19tZXNzYWdlKGpzb25fd3JpdGVyX3QgKncsIGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KQpAQCAtMTMzMywxNCAmIzQzOzEzMzMsMTQgQEAgdm9pZCBoZXhkdW1wKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgbGVuOyBpJiM0MzsmIzQzOykgewogCQlpZiAoIShpICUgMTYpKSB7CiAJCQlpZiAoaSkKLQkJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCQkJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwogCQkJZnByaW50ZihzdGRvdXQsICYjMzQ7JXMmIzM0OywgcHJlZml4KTsKIAkJfQogCQlpZiAoaSAmYW1wOyZhbXA7ICEoaSAlIDgpICZhbXA7JmFtcDsgKGkgJSAxNikpCi0JCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcdCYjMzQ7KTsKJiM0MzsJCQlwdXRjaGFyKCYjMzk7XHQmIzM5Oyk7CiAJCWZwcmludGYoc3Rkb3V0LCAmIzM0OyUwMlggJiMzNDssICgodWludDhfdCAqKShidWYpKVtpXSk7CiAJfQotCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCmluZGV4IGE3ZGI2ZjA0ZjdlMTQ1Li5kMWM3ZjA2YjhiMWNmOSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKQEAgLTE2MDUsNyAmIzQzOzE2MDUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wKF9fdTMyIHByb2dfaWQsIGVudW0gZHVtcF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29ucwogCXByaW50ZigmIzM0O0RVTVAgKCVzKSAlcy8lczpcbiYjMzQ7LCBtb2RlID09IERVTVBfSklURUQgPyAmIzM0O0pJVEVEJiMzNDsgOiAmIzM0O1hMQVRFRCYjMzQ7LCBmaWxlX25hbWUsIHByb2dfbmFtZSk7CiAJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSkKIAkJZnB1dHMoYnVmLCBzdGRvdXQpOwotCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoZmVycm9yKGZwKSkKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7RmFpbGVkIHRvIGR1bXAgQlBGIHByb2cgd2l0aCBlcnJvcjogJWRcbiYjMzQ7LCBlcnJubyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbmNkZXZtZW0uYwppbmRleCBkOTZlOGEzYjVhNjUyNi4uN2JkY2M0MTE0ZGJhMWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbmNkZXZtZW0uYwpAQCAtMTM1LDcgJiM0MzsxMzUsNyBAQCBzdGF0aWMgdm9pZCBwcl9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pCiAKIAlpZiAoZXJybm8gIT0gMCkKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7OiAlcyYjMzQ7LCBzdHJlcnJvcihlcnJubykpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbWVtb3J5X2J1ZmZlciAqdWRtYWJ1Zl9hbGxvYyhzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jCmluZGV4IGM3ODA1ZTg3ZDEyYzVkLi4xMjA4MzRmOGJhMGRhNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jCkBAIC0xMTcsNyAmIzQzOzExNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfc2soY29uc3QgdW5zaWduZWQgY2hhciBza2V5c1tdLCBjb25zdCBjaGFyICpkZXNjcikKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7IyAlM2Q6ICYjMzQ7LCBpKTsKIAkJZm9yIChqID0gMDsgaiAmbHQ7IDMyOyBqJiM0MzsmIzQzOykKIAkJCWZwcmludGYoc3RkZXJyLCAmIzM0OyUwMnggJiMzNDssIHNrZXlzW2kgJiM0Mzsgal0pOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYwppbmRleCA3ODE4MGRhMWVmY2M1My4uNDA0NjdlODZiZmQ0N2IgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgc3RhdGljIGludCBjYXB0dXJlX2V2ZW50cyhpbnQgZmQsIGludCBldmVudF9ncm91cCkKIAkJfQogCQlpZiAoc2VydmVyX3NpZGUpCiAJCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDssc2VydmVyX3NpZGU6MSYjMzQ7KTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJfSB3aGlsZSAoMSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jCmluZGV4IDdjYWYzMTM1NDQ4ZGE3Li43MjRkYTkyMjJhZDlhMCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jCkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHN0YXRpYyBpbnQgcGZzb2NrZXQoaW50IHZlcikKIHN0YXRpYyB2b2lkIHN0YXR1c19iYXJfdXBkYXRlKHZvaWQpCiB7CiAJaWYgKHRvdGFsX3BhY2tldHMgJSAxMCA9PSAwKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAmIzM0Oy4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7LiYjMzk7KTsKIAkJZmZsdXNoKHN0ZGVycik7CiAJfQogfQpAQCAtODI1LDcgJiM0Mzs4MjUsNyBAQCBzdGF0aWMgaW50IHRlc3RfdHBhY2tldChpbnQgdmVyc2lvbiwgaW50IHR5cGUpCiAJdW5tYXBfcmluZyhzb2NrLCAmYW1wO3JpbmcpOwogCWNsb3NlKHNvY2spOwogCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuYwppbmRleCAxNzBiZTE5MmY1YzdjZS4uODZjOGQ0OTQ1ZDczYzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jCkBAIC0yMDAsMTAgJiM0MzsyMDAsMTAgQEAgc3RhdGljIHZvaWQgX19wcmludF90aW1lc3RhbXAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHRpbWVzcGVjICpjdXIsCiAJCXRzX2RlbHRhID0gdGltZXNwZWNfdG9fbnM2NChjdXIpIC0gdGltZXNwZWNfdG9fbnM2NCgmYW1wO3RzX3Vzcik7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgKFVTUiAmIzQzOyYjMzQ7KTsKIAkJX19wcmludF90c19kZWx0YV9mb3JtYXR0ZWQodHNfZGVsdGEpOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDspJiMzNDspOwomIzQzOwkJZnB1dGMoc3RkZXJyLCAmIzM5OykmIzM5Oyk7CiAJfQogCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIH0KIAogc3RhdGljIHZvaWQgcmVjb3JkX3RpbWVzdGFtcF91c3Iodm9pZCkKQEAgLTI1NCw3ICYjNDM7MjU0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGltaW5nX2V2ZW50KGNoYXIgKm5hbWUsIHN0cnVjdCB0aW1pbmdfZXZlbnQgKnRlKQogCV9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRlLSZndDttaW4pOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OywgbWF4PSYjMzQ7KTsKIAlfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS0mZ3Q7bWF4KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogfQogCiAvKiBUT0RPOiBjb252ZXJ0IHRvIGNoZWNrX2FuZF9wcmludCBwYXlsb2FkIG9uY2UgQVBJIGlzIHN0YWJsZSAqLwpAQCAtMjcxLDcgJiM0MzsyNzEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9wYXlsb2FkKGNoYXIgKmRhdGEsIGludCBsZW4pCiAJZnByaW50ZihzdGRlcnIsICYjMzQ7cGF5bG9hZDogJiMzNDspOwogCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KQogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDslMDJoaHggJiMzNDssIGRhdGFbaV0pOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcikKQEAgLTkzMyw3ICYjNDM7OTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWZwcmludGYoc3RkZXJyLCAmIzM0O3Byb3RvY29sOiAgICAgJXNcbiYjMzQ7LCBzb2NrX25hbWVzW2NmZ19wcm90b10pOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O3BheWxvYWQ6ICAgICAgJXVcbiYjMzQ7LCBjZmdfcGF5bG9hZF9sZW4pOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O3NlcnZlciBwb3J0OiAgJXVcbiYjMzQ7LCBkZXN0X3BvcnQpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoZG9faXB2NCkgewogCQlpZiAoY2ZnX2RvX2xpc3RlbikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYwppbmRleCA3YzIzZDNkZDdkNmQ5MS4uNDEyZGVmZTk4MjcxNDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmMKQEAgLTM2Myw3ICYjNDM7MzYzLDcgQEAgaW50IGRlY29tcHJlc3NfZmlsZShpbnQgYXJnYywgY2hhciAqKmFyZ3YsIHZvaWQgKmRldmhhbmRsZSkKIAkJCWdvdG8gZXJyMzsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7JTAyeCAmIzM0OywgdG1wW2ldKTsKIAkJaWYgKGkgPT0gNSkKLQkJCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJZnByaW50ZihzdGRlcnIsICYjMzQ7Z3pIZWFkZXIgTVRJTUUsIFhGTCwgT1MgaWdub3JlZFxuJiMzNDspOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmgKaW5kZXggNzdiNjhjNzEyOWE2NDguLjgyMDE1YjE5ZGY2YzM5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oCkBAIC0xMCw3ICYjNDM7MTAsNyBAQAogCiAjZGVmaW5lIFZGSU9fTE9HX0FORF9FWElUKC4uLikgZG8gewkJXAogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgJiMzNDsgX19WQV9BUkdTX18pOwlcCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CQkJXAomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CQkJXAogCWV4aXQoS1NGVF9GQUlMKTsJCQlcCiB9IHdoaWxlICgwKQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMKaW5kZXggM2EzZDFlZDYzNWMxZGYuLjgwYTMxMmYxNDlhNjZlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jCkBAIC02MCwxNiAmIzQzOzYwLDE2IEBAIGNoYXIgKip2ZmlvX3NlbGZ0ZXN0c19nZXRfYmRmcyhpbnQgKmFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50ICpucl9iZGZzKQogCX0KIAogCWZwcmludGYoc3RkZXJyLCAmIzM0O1VuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggZGV2aWNlKHMpIHRvIHVzZSwgc2tpcHBpbmcgdGVzdC5cbiYjMzQ7KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O1RvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZTpcbiYjMzQ7KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgICBleHBvcnQgVkZJT19TRUxGVEVTVFNfQkRGPVwmIzM0O3NlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvblwmIzM0O1xuJiMzNDspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgICAlcyBbb3B0aW9uc11cbiYjMzQ7LCBhcmd2WzBdKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O1RvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzKGVzKSB2aWEgYXJndjpcbiYjMzQ7KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgICAlcyBbb3B0aW9uc10gc2VnbWVudDpidXM6ZGV2aWNlLmZ1bmN0aW9uIC4uLlxuJiMzNDssIGFyZ3ZbMF0pOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJZXhpdChLU0ZUX1NLSVApOwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX2RpYWdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYwppbmRleCAwODFlMDQ1ZjQ2OTYwZS4uY2M5MDNjZGI0NWQ5MmUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYwpAQCAtODYsNyAmIzQzOzg2LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfYWRkcihGSUxFICpmcCwgdW5zaWduZWQgaW50IGNpZCwgdW5zaWduZWQgaW50IHBvcnQpCiAJCWZwcmludGYoZnAsICYjMzQ7JXU6JiMzNDssIGNpZCk7CiAKIAlpZiAocG9ydCA9PSBWTUFERFJfUE9SVF9BTlkpCi0JCWZwcmludGYoZnAsICYjMzQ7KiYjMzQ7KTsKJiM0MzsJCWZwdXRjKGZwLCAmIzM5OyomIzM5Oyk7CiAJZWxzZQogCQlmcHJpbnRmKGZwLCAmIzM0OyV1JiMzNDssIHBvcnQpOwogfQpAQCAtOTQsNyAmIzQzOzk0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfYWRkcihGSUxFICpmcCwgdW5zaWduZWQgaW50IGNpZCwgdW5zaWduZWQgaW50IHBvcnQpCiBzdGF0aWMgdm9pZCBwcmludF92c29ja19zdGF0KEZJTEUgKmZwLCBzdHJ1Y3QgdnNvY2tfc3RhdCAqc3QpCiB7CiAJcHJpbnRfdnNvY2tfYWRkcihmcCwgc3QtJmd0O21zZy52ZGlhZ19zcmNfY2lkLCBzdC0mZ3Q7bXNnLnZkaWFnX3NyY19wb3J0KTsKLQlmcHJpbnRmKGZwLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CWZwdXRjKGZwLCAmIzM5OyAmIzM5Oyk7CiAJcHJpbnRfdnNvY2tfYWRkcihmcCwgc3QtJmd0O21zZy52ZGlhZ19kc3RfY2lkLCBzdC0mZ3Q7bXNnLnZkaWFnX2RzdF9wb3J0KTsKIAlmcHJpbnRmKGZwLCAmIzM0OyAlcyAlcyAlcyAldVxuJiMzNDssCiAJCXNvY2tfdHlwZV9zdHIoc3QtJmd0O21zZy52ZGlhZ190eXBlKSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jIGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmMKaW5kZXggY2IxMTA4YmM5MjQ5ODkuLmViZGI5NTgxOWE3NjZkIDEwMDY0NAotLS0gYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYwpAQCAtNTIyLDcgJiM0Mzs1MjIsNyBAQCBpbnQgdXBkYXRlX3RoZXJtYWxfZGF0YSgpCiAJfQogCiAJaWYgKHRtb25fbG9nKSB7Ci0JCWZwcmludGYodG1vbl9sb2csICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyh0bW9uX2xvZywgJiMzOTtcbiYjMzk7KTsKIAkJZmZsdXNoKHRtb25fbG9nKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmMgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jCmluZGV4IDdlYjMyMTZhMjdmNDVmLi45YTk3MmY3M2EyYzAwNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGhlcm1hbC90bW9uL3Rtb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jCkBAIC0xOTksNyAmIzQzOzE5OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfbG9nZ2luZyh2b2lkKQogCQlmcHJpbnRmKHRtb25fbG9nLCAmIzM0OyVzJWQgJiMzNDssIHB0ZGF0YS5jZGlbaV0udHlwZSwKIAkJCXB0ZGF0YS5jZGlbaV0uaW5zdGFuY2UpOwogCi0JZnByaW50Zih0bW9uX2xvZywgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGModG1vbl9sb2csICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jIGIvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmMKaW5kZXggZWY5NzkxNmUzODczYTEuLjNkYzZmYjlkZjkyNjgzIDEwMDY0NAotLS0gYS90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuYwpAQCAtMTk5OSw3ICYjNDM7MTk5OSw3IEBAIHN0YXRpYyB2b2lkIHNjYW5fYXJndW1lbnRzKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAmIzM0O2JlZW4gZW5hYmxlZC4gUmFuZG9tIHNsZWVwIGlzIGludGVuZGVkIGZvciB0aGUgZm9sbG93aW5nIHRyYWNlcnM6XG4mIzM0Oyk7CiAJCQlmb3IgKGkgPSAwOyByYW5kb21fdHJhY2Vyc1tpXTsgaSYjNDM7JiM0MzspCiAJCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7JXNcbiYjMzQ7LCByYW5kb21fdHJhY2Vyc1tpXSk7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jCmluZGV4IDhjN2Y1ZTc1YjJlYzhkLi5lODFlNjc2ZDUxZDJhZCAxMDA2NDQKLS0tIGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jCkBAIC00NDksNyAmIzQzOzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsCiAJCWZwcmludGYoc3RkZXJyLCAmIzM0OyVzIFstaF0gJiMzNDssIG1vZGUpOwogCiAJcHJpbnRfbXNnX2FycmF5KHN0YXJ0X21zZ3MpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJcHJpbnRfbXNnX2FycmF5KGNvbW1vbl9vcHRpb25zKTsKIAlwcmludF9tc2dfYXJyYXkob3B0X21zZ3MpOwogCmRpZmYgLS1naXQgYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMKaW5kZXggY2IxODdlN2Q0OGQxYzIuLjM1MzJkYTJmMjI5NmQ4IDEwMDY0NAotLS0gYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jCkBAIC02Nyw3ICYjNDM7NjcsNyBAQCB2b2lkIGZhdGFsKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogCXZhX3N0YXJ0KGFwLCBmbXQpOwogCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7CiAJdmFfZW5kKGFwKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCiAJZXhpdChFUlJPUik7CiB9CmRpZmYgLS1naXQgYS90b29scy91c2IvZmZzLXRlc3QuYyBiL3Rvb2xzL3VzYi9mZnMtdGVzdC5jCmluZGV4IDIyYjkzOGZiZGZiNzcyLi5lOTkzNzM2YmEwZDY0NyAxMDA2NDQKLS0tIGEvdG9vbHMvdXNiL2Zmcy10ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmMKQEAgLTU2Miw3ICYjNDM7NTYyLDcgQEAgZW1wdHlfb3V0X2J1ZihzdHJ1Y3QgdGhyZWFkICppZ25vcmUsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IG5ieXRlcykKIAkJCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDslNHpkOiYjMzQ7LCBsZW4pOwogCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7ICUwMngmIzM0OywgKnApOwogCQkJaWYgKDMxID09IChsZW4gJSAzMikpCi0JCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAkJfQogCQlmZmx1c2goc3RkZXJyKTsKIAkJZXJybm8gPSBFSUxTRVE7CmRpZmYgLS1naXQgYS90b29scy92ZXJpZmljYXRpb24vcnYvc3JjL2luX2tlcm5lbC5jIGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYwppbmRleCBlNmRlYTQwNDBmOGY0Yy4uMjYxMzIxNzFmNjAwOGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYwpAQCAtNjY3LDcgJiM0Mzs2NjcsNyBAQCBzdGF0aWMgdm9pZCBpa21fdXNhZ2VfcHJpbnRfcmVhY3RvcnModm9pZCkKIAkJZW5kID0gc3Ryc3RyKHN0YXJ0LCAmIzM0O1xuJiMzNDspOwogCX0KIAotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiB9CiAvKgogICogaWttX3VzYWdlIC0gcHJpbnQgdXNhZ2UKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2ODEKCQkJCQkJCW91dHB1dDogODAKCQkJCQkJCXRob3VnaHRzOiA5OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbjogV29ydGhGdXp6aW5nPWZhbHNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBwcm9wb3NlZC4gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCByZXBsYWNlbWVudCBvZiBgZnByaW50ZiguLi4sICYjMzQ7XG4mIzM0OylgIHdpdGggZWl0aGVyIGBmcHV0YyguLi4sICYjMzk7XG4mIzM5OylgIG9yIGBwdXRjaGFyKCYjMzk7XG4mIzM5OylgLiBJdCYjMzk7cyBoYXBwZW5pbmcgYWNyb3NzIGEgYnVuY2ggb2YgZmlsZXMsIGJ1dCB0aGV5JiMzOTtyZSBhbGwgbG9jYXRlZCB3aXRoaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyBhIGtleSBpbmRpY2F0b3IgcmlnaHQgdGhlcmUg4oCTIGB0b29scy9gIGlzIGZvciB1c2VyLXNwYWNlIHV0aWxpdGllcywgbm90IGtlcm5lbC1sZXZlbCBjb2RlLiBUaGlzIGlzIGRlZmluaXRlbHkgbm90IGEgY2hhbmdlIHRvIGFueXRoaW5nIHRoYXQgcnVucyBkaXJlY3RseSBpbiB0aGUga2VybmVsIGl0c2VsZi4KCkkgbmVlZCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSYjMzk7dmUgdGFrZW4gYSBxdWljayBzY2FuIG9mIHRoZSBtb2RpZmllZCBmaWxlczogYGJwZnRvb2xgLCB2YXJpb3VzIEdQSU8gdG9vbHMsIHBlcmYgdXRpbGl0aWVzLCBgYWNwaWR1bXBgLCBgdHVyYm9zdGF0YCwgQlBGIHNlbGZ0ZXN0cywgS1ZNIHNlbGZ0ZXN0cywgYW5kIG90aGVycy4gVGhlIGZpbGUgbGlzdCBjb25maXJtcyBteSBpbml0aWFsIGh1bmNoLiBUaGVzZSBhcmUgYWxsIHVzZXItc3BhY2UgdG9vbHMgYW5kIHRlc3RpbmcgZnJhbWV3b3Jrcy4gSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIHRvdWNoaW5nIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdGllcyBvciBkcml2ZXJzLgoKU2luY2UgdGhpcyBpcyBwdXJlbHkgYSBjb3NtZXRpYyBjaGFuZ2UgdG8gdGhlIG91dHB1dCBvZiB1c2VyLXNwYWNlIHRvb2xz4oCUbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxm4oCUaXQgc2hvdWxkbiYjMzk7dCBiZSBmdXp6ZWQuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBObyBrZXJuZWwgbG9naWMgaXMgaW52b2x2ZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMjozNjowNC43Njg3NjY1MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1MjA5MTgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjI6MzY6MDQuNzY4Nzc0ODIyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwOTQwMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTU4ZmNlMDQwNWNlMWM1NDgxMGQ2YzU1ZDVlYWQxMTg5MDdlMGRlMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMjozNjowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9jb21tb24uYyBiL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXFxuaW5kZXggOGJmY2ZmOWUyZjYzOTQuLjc2YWJkM2Y0ZmJjYmM1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXFxuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmNcXG5AQCAtNTMsNyArNTMsNyBAQCB2b2lkIHBfZXJyKGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIkVycm9yOiBcXFwiKTtcXG4gXFx0XFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcXG4tXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHR9XFxuIFxcdHZhX2VuZChhcCk7XFxuIH1cXG5AQCAtNjcsNyArNjcsNyBAQCB2b2lkIHBfaW5mbyhjb25zdCBjaGFyICpmbXQsIC4uLilcXG4gXFxuIFxcdHZhX3N0YXJ0KGFwLCBmbXQpO1xcbiBcXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdHZhX2VuZChhcCk7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYyBiL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uY1xcbmluZGV4IGM5MWUxYTZlMWExZWNhLi5hZWNmYzc3ODYyNWY3MSAxMDA2NDRcXG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9tYWluLmNcXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9tYWluLmNcXG5AQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgZnByaW50X2hleChGSUxFICpmLCB2b2lkICphcmcsIHVuc2lnbmVkIGludCBuLCBjb25zdCBjaGFyICpzZXApXFxuIFxcdFxcdGlmICghaSlcXG4gXFx0XFx0XFx0Lyogbm90aGluZyAqLztcXG4gXFx0XFx0ZWxzZSBpZiAoIShpICUgMTYpKVxcbi1cXHRcXHRcXHRmcHJpbnRmKGYsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRmcHV0YyhmLCAnXFxcXG4nKTtcXG4gXFx0XFx0ZWxzZSBpZiAoIShpICUgOCkpXFxuIFxcdFxcdFxcdGZwcmludGYoZiwgXFxcIiAgXFxcIik7XFxuIFxcdFxcdGVsc2VcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaCBiL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmhcXG5pbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaFxcbisrKyBiL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmhcXG5AQCAtMjUsNyArMjUsNyBAQFxcbiBcXHRpZiAoanNvbl9vdXRwdXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRqc29ud19zdGFydF9vYmplY3QoanNvbl93dHIpO1xcdFxcdFxcXFxcXG4gXFx0ZWxzZVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJ7XFxcIik7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRwdXRjaGFyKCd7Jyk7XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbiAjZGVmaW5lIE5FVF9FTkRfT0JKRUNUX05FU1RFRFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMzMsNyArMzMsNyBAQFxcbiBcXHRpZiAoanNvbl9vdXRwdXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcXHRcXHRcXFxcXFxuIFxcdGVsc2VcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwifVxcXCIpO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cHV0Y2hhcignfScpO1xcdFxcdFxcdFxcdFxcXFxcXG4gfVxcbiBcXG4gI2RlZmluZSBORVRfRU5EX09CSkVDVFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtNDcsNyArNDcsNyBAQFxcbiBcXHRpZiAoanNvbl9vdXRwdXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcXHRcXHRcXFxcXFxuIFxcdGVsc2VcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHB1dGNoYXIoJ1xcXFxuJyk7XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbiAjZGVmaW5lIE5FVF9TVEFSVF9BUlJBWShuYW1lLCBmbXRfc3RyKVxcdFxcdFxcdFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXFxuaW5kZXggYTlmNzMwZDQwN2E5MjkuLmQyN2NiOWQ0OTg2MDkzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbisrKyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBzdGF0aWMgdm9pZCBoZXhfcHJpbnQodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIEZJTEUgKmYpXFxuIFxcdFxcdFxcdGZwcmludGYoZiwgXFxcIiVjJXNcXFwiLCBjLCBqID09IGkgKyA3ID8gXFxcIiBcXFwiIDogXFxcIlxcXCIpO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRmcHJpbnRmKGYsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhmLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMgYi90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmNcXG5pbmRleCBiNzA4MTNiMGJmOGVmYS4uZTEyZTE0NzgwYzBlNDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXFxuKysrIGIvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXFxuQEAgLTEyMSw3ICsxMjEsNyBAQCBpbnQgbW9uaXRvcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsXFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwidW5rbm93biBldmVudFxcXCIpO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFxuIFxcdFxcdGkrKztcXG4gXFx0XFx0aWYgKGkgPT0gbG9vcHMpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuYyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuY1xcbmluZGV4IGJhMDg2NmViMzU4MTQ1Li5iNzZjOTRmZWUwNGQwOSAxMDA2NDRcXG4tLS0gYS90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcXG4rKysgYi90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcXG5AQCAtODcsNyArODcsNyBAQCBpbnQgaGFtbWVyX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgdW5zaWduZWQgaW50ICpsaW5lcywgaW50IG51bV9saW5lcyxcXG4gXFx0XFx0aWYgKGogPT0gc2l6ZW9mKHN3aXJyKSAtIDEpXFxuIFxcdFxcdFxcdGogPSAwO1xcbiBcXG4tXFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJbXFxcIik7XFxuK1xcdFxcdHB1dGNoYXIoJ1snKTtcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV9saW5lczsgaSsrKSB7XFxuIFxcdFxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiJXU6ICVkXFxcIiwgbGluZXNbaV0sXFxuIFxcdFxcdFxcdFxcdGdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpO1xcbkBAIC0xMDEsNyArMTAxLDcgQEAgaW50IGhhbW1lcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIHVuc2lnbmVkIGludCAqbGluZXMsIGludCBudW1fbGluZXMsXFxuIFxcdFxcdGlmIChsb29wcyBcXHUwMDI2XFx1MDAyNiBpdGVyYXRpb24gPT0gbG9vcHMpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuLVxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFx0cmV0ID0gMDtcXG4gXFxuIGV4aXRfY2xvc2VfZXJyb3I6XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vbHNncGlvLmMgYi90b29scy9ncGlvL2xzZ3Bpby5jXFxuaW5kZXggNTJhMGJlNDU0MTBjOTcuLmFiYjJjNmZiYzNkN2NhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2dwaW8vbHNncGlvLmNcXG4rKysgYi90b29scy9ncGlvL2xzZ3Bpby5jXFxuQEAgLTE1Miw5ICsxNTIsOSBAQCBpbnQgbGlzdF9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUpXFxuIFxcdFxcdGlmIChsaW5mby5mbGFncykge1xcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiBbXFxcIik7XFxuIFxcdFxcdFxcdHByaW50X2F0dHJpYnV0ZXMoXFx1MDAyNmxpbmZvKTtcXG4tXFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJdXFxcIik7XFxuK1xcdFxcdFxcdHB1dGNoYXIoJ10nKTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdHB1dGNoYXIoJ1xcXFxuJyk7XFxuIFxcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaCBiL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXFxuaW5kZXggZTIyYWU4N2E3Mjg5MjAuLjg5YzlhM2QzYmM3NzMzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXFxuKysrIGIvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmhcXG5AQCAtMjcsNyArMjcsNyBAQCB2b2lkIHZ3YXJueChjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncylcXG4ge1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiVzOiBcXFwiLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7XFxuIFxcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xcbmluZGV4IGU2OTU0OTA5NDAxYzhlLi5lM2FiMWRiNDRiMTU0ZSAxMDA2NDRcXG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xcbisrKyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXFxuQEAgLTg2Nyw3ICs4NjcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0aWYgKGN1bGwgXFx1MDAyNiBDVUxMX1NUQUNLVFJBQ0UpXFxuIFxcdFxcdFxcdFxcdGZwcmludGYoZm91dCwgXFxcIjpcXFxcbiVzXFxcIiwgbGlzdFtpXS5zdGFja3RyYWNlKTtcXG4tXFx0XFx0XFx0ZnByaW50Zihmb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMoZm91dCwgJ1xcXFxuJyk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uYyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcXG5pbmRleCA1ZDBmNDI4ZWVkMGE3Zi4uMjQ1ZDdmNThjOGZiNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xcbisrKyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcXG5AQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgcF9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiRXJyb3I6IFxcXCIpO1xcbiBcXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xcbi1cXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gXFx0dmFfZW5kKGFwKTtcXG4gfVxcbkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcbiBcXHR2YV9zdGFydChhcCwgZm10KTtcXG4gXFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHR2YV9lbmQoYXApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suYyBiL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXFxuaW5kZXggMTE4YzNkZTJmMjkzZWUuLmI2ZDI3ZDMyNmI4YWQ5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXFxuKysrIGIvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmNcXG5AQCAtMjk3LDcgKzI5Nyw3IEBAIGludCBtYWtlX2JhY2t1cCh2b2lkKVxcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAlc1xcXCIsIGFyZyk7XFxuIFxcdH1cXG4gXFxuLVxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvZGlzYXMuYyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuY1xcbmluZGV4IGU2YTU0YTgzNjA1YzkwLi4zMzlkMWQ1NjkwYzQyMCAxMDA2NDRcXG4tLS0gYS90b29scy9vYmp0b29sL2Rpc2FzLmNcXG4rKysgYi90b29scy9vYmp0b29sL2Rpc2FzLmNcXG5AQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgZGlzYXNfcHJpbnRfaW5zbihGSUxFICpzdHJlYW0sIHN0cnVjdCBkaXNhc19jb250ZXh0ICpkY3R4LFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoc3RyY21wKGZvcm1hdCwgXFxcIlxcXFxuXFxcIikgPT0gMCkge1xcbi1cXHRcXHRmcHJpbnRmKHN0cmVhbSwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHN0cmVhbSwgJ1xcXFxuJyk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jXFxuaW5kZXggYzk1ODRkYmVkZjc3YWYuLmZjOWI2YjE4ZWRlZDllIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xcbkBAIC0yNTExLDcgKzI1MTEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9jYWNoZWxpbmUoc3RydWN0IGMyY19oaXN0cyAqYzJjX2hpc3RzLFxcbiBcXHRcXHRoaXN0c19fZnByaW50Zl9oZWFkZXJzKFxcdTAwMjZjMmNfaGlzdHMtXFx1MDAzZWhpc3RzLCBvdXQpO1xcbiBcXHRcXHRvbmNlID0gdHJ1ZTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHR9XFxuIFxcbiBcXHRmcHJpbnRmKG91dCwgXFxcIiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcXFxuXFxcIik7XFxuQEAgLTI1OTAsMTUgKzI1OTAsMTUgQEAgc3RhdGljIHZvaWQgcGVyZl9jMmNfX2hpc3RzX2ZwcmludGYoRklMRSAqb3V0LCBzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uKVxcbiBcXHRzZXR1cF9wYWdlcigpO1xcbiBcXG4gXFx0cHJpbnRfYzJjX19kaXNwbGF5X3N0YXRzKG91dCk7XFxuLVxcdGZwcmludGYob3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0LCAnXFxcXG4nKTtcXG4gXFx0cHJpbnRfc2hhcmVkX2NhY2hlbGluZV9pbmZvKG91dCk7XFxuLVxcdGZwcmludGYob3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0LCAnXFxcXG4nKTtcXG4gXFx0cHJpbnRfYzJjX2luZm8ob3V0LCBzZXNzaW9uKTtcXG4gXFxuIFxcdGlmIChjMmMuc3RhdHNfb25seSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIiAgICAgICAgICAgU2hhcmVkIERhdGEgQ2FjaGUgTGluZSBUYWJsZSAgICAgICAgICBcXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbkBAIC0yNjA2LDcgKzI2MDYsNyBAQCBzdGF0aWMgdm9pZCBwZXJmX2MyY19faGlzdHNfZnByaW50ZihGSUxFICpvdXQsIHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24pXFxuIFxcbiBcXHRoaXN0c19fZnByaW50ZihcXHUwMDI2YzJjLmhpc3RzLmhpc3RzLCB0cnVlLCAwLCAwLCAwLCBzdGRvdXQsIHRydWUpO1xcbiBcXG4tXFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIiAgICAgIFNoYXJlZCBDYWNoZSBMaW5lIERpc3RyaWJ1dGlvbiBQYXJldG8gICAgICBcXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmMgYi90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmNcXG5pbmRleCBjNDYzMjU3N2QxMjk2My4uN2NiMjBiM2EwM2U0Y2QgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXFxuQEAgLTY5MSw3ICs2OTEsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KVxcbiBcXHRcXHRcXHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cXG4gXFx0XFx0XFx0Y3N2X3NlcCwgKHVpbnQ2NF90KSgoY3VyciAtIGRhZW1vbi1cXHUwMDNlc3RhcnQpIC8gNjApKTtcXG4gXFxuLVxcdFxcdGZwcmludGYob3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMob3V0LCAnXFxcXG4nKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZnByaW50ZihvdXQsIFxcXCJbJWQ6ZGFlbW9uXSBiYXNlOiAlc1xcXFxuXFxcIiwgZ2V0cGlkKCksIGRhZW1vbi1cXHUwMDNlYmFzZSk7XFxuIFxcdFxcdGlmIChjbWQtXFx1MDAzZWxpc3QudmVyYm9zZSkge1xcbkBAIC03MzAsNyArNzMwLDcgQEAgc3RhdGljIGludCBjbWRfc2Vzc2lvbl9saXN0KHN0cnVjdCBkYWVtb24gKmRhZW1vbiwgdW5pb24gY21kICpjbWQsIEZJTEUgKm91dClcXG4gXFx0XFx0XFx0XFx0Lyogc2Vzc2lvbiB1cCB0aW1lICovXFxuIFxcdFxcdFxcdFxcdGNzdl9zZXAsICh1aW50NjRfdCkoKGN1cnIgLSBzZXNzaW9uLVxcdTAwM2VzdGFydCkgLyA2MCkpO1xcbiBcXG4tXFx0XFx0XFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRmcHJpbnRmKG91dCwgXFxcIlslZDolc10gcGVyZiByZWNvcmQgJXNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdHNlc3Npb24tXFx1MDAzZXBpZCwgc2Vzc2lvbi1cXHUwMDNlbmFtZSwgc2Vzc2lvbi1cXHUwMDNlcnVuKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcXG5pbmRleCA1ODQxZDQzYmU5NzE4NC4uMDVmMThkNDlmYzdiMTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suY1xcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcXG5AQCAtMTMxOSw5ICsxMzE5LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVzdWx0KHZvaWQpXFxuIFxcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGtleSwgXFx1MDAyNmxvY2tfa2V5cywgbGlzdCkge1xcbiBcXHRcXHRcXHRrZXktXFx1MDAzZXByaW50KGtleSwgc3QpO1xcbi1cXHRcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiIFxcXCIpO1xcbitcXHRcXHRcXHRmcHV0Yyhsb2NrX291dHB1dCwgJyAnKTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMobG9ja19vdXRwdXQsICdcXFxcbicpO1xcbiBcXG4gXFx0XFx0aWYgKCsrcHJpbnRlZCBcXHUwMDNlPSBwcmludF9ucl9lbnRyaWVzKVxcbiBcXHRcXHRcXHRicmVhaztcXG5AQCAtMTU5OCw3ICsxNTk4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX2Nzdihjb25zdCBjaGFyICpzZXApXFxuIFxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCIlcyVzICVzXFxcIiwgXFxcInR5cGVcXFwiLCBzZXAsIFxcXCJjYWxsZXJcXFwiKTtcXG4gXFx0XFx0aWYgKHZlcmJvc2UgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiJXMgJXNcXFwiLCBzZXAsIFxcXCJzdGFja3RyYWNlXFxcIik7XFxuLVxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcXFxuJyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIExPQ0tfQUdHUl9BRERSOlxcbiBcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiJXMlcyAlcyVzICVzXFxcXG5cXFwiLCBcXFwiYWRkcmVzc1xcXCIsIHNlcCwgXFxcInN5bWJvbFxcXCIsIHNlcCwgXFxcInR5cGVcXFwiKTtcXG5AQCAtMTYyOSw3ICsxNjI5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfbG9ja19zdGF0X3N0ZGlvKHN0cnVjdCBsb2NrX2NvbnRlbnRpb24gKmNvbiwgc3RydWN0IGxvY2tfc3RhdFxcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShrZXksIFxcdTAwMjZsb2NrX2tleXMsIGxpc3QpIHtcXG4gXFx0XFx0a2V5LVxcdTAwM2VwcmludChrZXksIHN0KTtcXG4tXFx0XFx0ZnByaW50Zihsb2NrX291dHB1dCwgXFxcIiBcXFwiKTtcXG4rXFx0XFx0ZnB1dGMobG9ja19vdXRwdXQsICcgJyk7XFxuIFxcdH1cXG4gXFxuIFxcdHN3aXRjaCAoYWdncl9tb2RlKSB7XFxuQEAgLTE2ODcsNyArMTY4Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXFxuIFxcdGNhc2UgTE9DS19BR0dSX0NBTExFUjpcXG4gXFx0XFx0ZnByaW50Zihsb2NrX291dHB1dCwgXFxcIiVzJXMgJXNcXFwiLCBnZXRfdHlwZV9mbGFnc19uYW1lKHN0LVxcdTAwM2VmbGFncyksIHNlcCwgc3QtXFx1MDAzZW5hbWUpO1xcbiBcXHRcXHRpZiAodmVyYm9zZSBcXHUwMDNjPSAwKVxcbi1cXHRcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMobG9ja19vdXRwdXQsICdcXFxcbicpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBMT0NLX0FHR1JfVEFTSzpcXG4gXFx0XFx0cGlkID0gc3QtXFx1MDAzZWFkZHI7XFxuQEAgLTE3MjEsNyArMTcyMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXFxuIFxcdFxcdFxcdGdldF9zeW1ib2xfbmFtZV9vZmZzZXQoa21hcCwgc3ltLCBpcCwgYnVmLCBzaXplb2YoYnVmKSk7XFxuIFxcdFxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCIlcyAlI2x4ICVzXFxcIiwgaSA/IFxcXCI6XFxcIiA6IHNlcCwgKHVuc2lnbmVkIGxvbmcpIGlwLCBidWYpO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMTc4MSw3ICsxNzgxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZm9vdGVyX2NzdihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJST0tFTl9NQVg7IGkrKylcXG4gXFx0XFx0XFx0ZnByaW50Zihsb2NrX291dHB1dCwgXFxcIiVzIGJhZF8lcz0lZFxcXCIsIHNlcCwgbmFtZVtpXSwgYmFkX2hpc3RbaV0pO1xcbiBcXHR9XFxuLVxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZhaWxzKVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmNcXG5pbmRleCA5YWMyOWJkYzNjZDU0Ny4uZTYwYzA3MzA1ZDE5OGIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXFxuQEAgLTI1NjEsNyArMjU2MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZXZlbnQoc3RydWN0IHBlcmZfc2NyaXB0ICpzY3JpcHQsXFxuIFxcbiBcXHRwZXJmX3NhbXBsZV9fZnByaW50Zl9pcGMoc2FtcGxlLCBldnNlbCwgZnApO1xcbiBcXG4tXFx0ZnByaW50ZihmcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKGZwLCAnXFxcXG4nKTtcXG4gXFxuIFxcdGlmIChQUklOVF9GSUVMRChTUkNDT0RFKSkge1xcbiBcXHRcXHRpZiAobWFwX19mcHJpbnRmX3NyY2NvZGUoYWwtXFx1MDAzZW1hcCwgYWwtXFx1MDAzZWFkZHIsIHN0ZG91dCxcXG5AQCAtMjgxNSw3ICsyODE1LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX2RlZmVycmVkX3NhbXBsZV9ldmVudChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sLFxcbiBcXHRcXHRcXHRcXHQgICAgY3Vyc29yLCBzeW1ib2xfY29uZi5idF9zdG9wX2xpc3QsIGZwKTtcXG4gXFx0fVxcbiBcXG4tXFx0ZnByaW50ZihmcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKGZwLCAnXFxcXG4nKTtcXG4gXFxuIFxcdGlmICh2ZXJib3NlIFxcdTAwM2UgMClcXG4gXFx0XFx0ZmZsdXNoKGZwKTtcXG5AQCAtMzI3MSwxMSArMzI3MSwxMSBAQCBzdGF0aWMgaW50IGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYihzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqb3BzLCBjb25zdCBjaGFyICpzcFxcbiBcXG4gc3RhdGljIHZvaWQgbGlzdF9hdmFpbGFibGVfbGFuZ3VhZ2VzKHZvaWQpXFxuIHtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlNjcmlwdGluZyBsYW5ndWFnZSBleHRlbnNpb25zICh1c2VkIGluIFxcXCJcXG4gXFx0XFx0XFxcInBlcmYgc2NyaXB0IC1zIFtzcGVjOl1zY3JpcHQuW3NwZWNdKTpcXFxcblxcXFxuXFxcIik7XFxuIFxcdHNjcmlwdF9zcGVjX19mb3JfZWFjaChcXHUwMDI2bGlzdF9hdmFpbGFibGVfbGFuZ3VhZ2VzX2NiKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiAvKiBGaW5kIHNjcmlwdCBmaWxlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5IG9yIGV4ZWMgcGF0aCAqL1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcXG5pbmRleCBjNDdmNWMzODc4MzhjNS4uMDM3ZWJjNDdmN2RjY2MgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIFxcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJFcnJvcjpcXFxcblxcXCIpO1xcbiBcXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIFxcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4tXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4gXFxuQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIFxcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4tXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jIGIvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcXG5pbmRleCA4YzRjODkyNWRmMmMyMi4uMDQ0ZDJhYTNiMzEyMTggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcXG4rKysgYi90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuY1xcbkBAIC02OTEsNyArNjkxLDcgQEAgc3RhdGljIGludCBoaXN0c19fZnByaW50Zl9oaWVyYXJjaHlfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxcbiBcXHRcXHR9XFxuIFxcbiBuZXh0X2xpbmU6XFxuLVxcdFxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gXFxuIFxcdGZwcmludGYoZnAsIFxcXCIjIFxcXCIpO1xcbkBAIC03ODMsNyArNzgzLDcgQEAgaGlzdHNfX2ZwcmludGZfc3RhbmRhcmRfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxcbiBcXHRcXHRpZiAobGluZSlcXG4gXFx0XFx0XFx0ZnByaW50ZihmcCwgXFxcIiMgXFxcIik7XFxuIFxcdFxcdGZwcmludGZfbGluZShoaXN0cywgaHBwLCBsaW5lLCBmcCk7XFxuLVxcdFxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChzZXApXFxuQEAgLTgwNiwxMCArODA2LDEwIEBAIGhpc3RzX19mcHJpbnRmX3N0YW5kYXJkX2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcXG4gXFxuIFxcdFxcdHdpZHRoID0gZm10LVxcdTAwM2V3aWR0aChmbXQsIGhwcCwgaGlzdHMpO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd2lkdGg7IGkrKylcXG4tXFx0XFx0XFx0ZnByaW50ZihmcCwgXFxcIi5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMoZnAsICcuJyk7XFxuIFxcdH1cXG4gXFxuLVxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIFxcdGZwcmludGYoZnAsIFxcXCIjXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIGhwcF9saXN0LVxcdTAwM2Vucl9oZWFkZXJfbGluZXMgKyAyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uYyBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uY1xcbmluZGV4IDVkMDY2NGZmNzNiNzkxLi44ZTA5OWNjYWFlMzlhNiAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcXG5AQCAtODk1LDcgKzg5NSw3IEBAIHN0YXRpYyB2b2lkIGNzX2V0bV9fZHVtcF9ldmVudChzdHJ1Y3QgY3NfZXRtX3F1ZXVlICpldG1xLFxcbiBcXHRjb25zdCBjaGFyICpjb2xvciA9IFBFUkZfQ09MT1JfQkxVRTtcXG4gXFx0c2l6ZV90IGJ1ZmZlcl91c2VkID0gMDtcXG4gXFxuLVxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFx0Y29sb3JfZnByaW50ZihzdGRvdXQsIGNvbG9yLFxcbiBcXHRcXHQgICAgIFxcXCIuIC4uLiBDb3JlU2lnaHQgJXMgVHJhY2UgZGF0YTogc2l6ZSAlI3p4IGJ5dGVzXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgIGNzX2V0bV9kZWNvZGVyX19nZXRfbmFtZShldG1xLVxcdTAwM2VkZWNvZGVyKSwgYnVmZmVyLVxcdTAwM2VzaXplKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmMgYi90b29scy9wZXJmL3V0aWwvZGVidWcuY1xcbmluZGV4IDZiNWZmZTgxZjE0MTIxLi41NDI5OTg0YWI0OWM5MCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvZGVidWcuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jXFxuQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIF9fZHVtcF9zdGFjayhGSUxFICpmaWxlLCB2b2lkICoqc3RhY2tkdW1wLCBzaXplX3Qgc3RhY2tkdW1wX3NpemUpXFxuIFxcdFxcdFxcdGZwcmludGYoZmlsZSwgXFxcIiAgICAjJXpkICVwIFxcXCIsIGksIHN0YWNrZHVtcFtpXSk7XFxuIFxcbiBcXHRcXHRtYXBfX2ZwcmludGZfc3JjbGluZShhbC5tYXAsIGFsLmFkZHIsIFxcXCJcXFwiLCBmaWxlKTtcXG4tXFx0XFx0ZnByaW50ZihmaWxlLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZmlsZSwgJ1xcXFxuJyk7XFxuIFxcdFxcdGFkZHJfbG9jYXRpb25fX2V4aXQoXFx1MDAyNmFsKTtcXG4gXFx0fVxcbiBcXHR0aHJlYWRfX3B1dCh0aHJlYWQpO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvaGVhZGVyLmMgYi90b29scy9wZXJmL3V0aWwvaGVhZGVyLmNcXG5pbmRleCAwOTFkOGY3ZjZiZDJjOS4uOTY1YjE3YzgxMjI0YjYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXFxuKysrIGIvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXFxuQEAgLTI0NTQsNyArMjQ1NCw3IEBAIHN0YXRpYyB2b2lkIF9fcHJpbnRfcG11X2NhcHMoRklMRSAqZnAsIGludCBucl9jYXBzLCBjaGFyICoqY2FwcywgY2hhciAqcG11X25hbWUpXFxuIFxcdFxcdGRlbGltaXRlciA9IFxcXCIsIFxcXCI7XFxuIFxcdH1cXG4gXFxuLVxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X2NwdV9wbXVfY2FwcyhzdHJ1Y3QgZmVhdF9mZCAqZmYsIEZJTEUgKmZwKVxcbkBAIC0yNTEzLDcgKzI1MTMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9wbXVfbWFwcGluZ3Moc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcXG4gXFx0XFx0cG11X251bS0tO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXG4gXFx0aWYgKCFwbXVfbnVtKVxcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTQzNDksNyArNDM0OSw3IEBAIGludCBwZXJmX2hlYWRlcl9fZnByaW50Zl9pbmZvKHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24sIEZJTEUgKmZwLCBib29sIGZ1bGwpXFxuIFxcdFxcdFxcdGZwcmludGYoZnAsIFxcXCIlcyBcXFwiLCBmZWF0X29wc1tiaXRdLm5hbWUpO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmMgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xcbmluZGV4IGVmNTVkNjIzMmNmMGMyLi4wYTM1NDkzYjg1NGFjZCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jXFxuQEAgLTcwLDE0ICs3MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9kYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbiwgdWludDY0X3QgcG9zLFxcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBpbmRlbnQ7IGkrKylcXG4tXFx0XFx0ZnByaW50ZihmLCBcXFwiIFxcXCIpO1xcbitcXHRcXHRmcHV0YyhmLCAnICcpO1xcbiBcXG4gXFx0ZnByaW50ZihmLCBcXFwiICAlMDhcXFwiIFBSSXg2NCBcXFwiOiBcXFwiLCBwb3MpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspXFxuIFxcdFxcdGZwcmludGYoZiwgXFxcIiAlMDJ4XFxcIiwgYnVmW2ldKTtcXG4gXFx0Zm9yICg7IGkgXFx1MDAzYyAxNjsgaSsrKVxcbiBcXHRcXHRmcHJpbnRmKGYsIFxcXCIgICBcXFwiKTtcXG4tXFx0ZnByaW50ZihmLCBcXFwiIFxcXCIpO1xcbitcXHRmcHV0YyhmLCAnICcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9ub19kYXRhKHVpbnQ2NF90IHBvcywgaW50IGluZGVudClcXG5AQCAtODUsMTIgKzg1LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X25vX2RhdGEodWludDY0X3QgcG9zLCBpbnQgaW5kZW50KVxcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBpbmRlbnQ7IGkrKylcXG4tXFx0XFx0ZnByaW50ZihmLCBcXFwiIFxcXCIpO1xcbitcXHRcXHRmcHV0YyhmLCAnICcpO1xcbiBcXG4gXFx0ZnByaW50ZihmLCBcXFwiICAlMDhcXFwiIFBSSXg2NCBcXFwiOiBcXFwiLCBwb3MpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTY7IGkrKylcXG4gXFx0XFx0ZnByaW50ZihmLCBcXFwiICAgXFxcIik7XFxuLVxcdGZwcmludGYoZiwgXFxcIiBcXFwiKTtcXG4rXFx0ZnB1dGMoZiwgJyAnKTtcXG4gfVxcbiBcXG4gc3RhdGljIHNzaXplX3QgbG9nX2J1Zl9fd3JpdGUodm9pZCAqY29va2llLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvbGliYmZkLmMgYi90b29scy9wZXJmL3V0aWwvbGliYmZkLmNcXG5pbmRleCBjMWMxMjMwOGNjMTJmZi4uMjYzODk0NjYzZjFhODcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXFxuKysrIGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXFxuQEAgLTYwMyw3ICs2MDMsNyBAQCBpbnQgc3ltYm9sX19kaXNhc3NlbWJsZV9icGZfbGliYmZkKHN0cnVjdCBzeW1ib2wgKnN5bSBfX21heWJlX3VudXNlZCxcXG4gXFx0XFx0fSBlbHNlXFxuIFxcdFxcdFxcdHNyY2xpbmUgPSBOVUxMO1xcbiBcXG4tXFx0XFx0ZnByaW50ZihzLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMocywgJ1xcXFxuJyk7XFxuIFxcdFxcdHByZXZfYnVmX3NpemUgPSBidWZfc2l6ZTtcXG4gXFx0XFx0ZmZsdXNoKHMpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uYyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmNcXG5pbmRleCBmMzkxYTgyMjQ4MGRiMC4uNjNhOGQzY2NhYTRmOWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmNcXG5AQCAtMTI1Nyw3ICsxMjU3LDcgQEAgaW50IHBlcmZfZXZlbnRfX3Byb2Nlc3NfZmluaXNoZWRfcm91bmQoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCBfX21heWJlX3VudXNcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBvcmRlcmVkX2V2ZW50cyAqb2UpXFxuIHtcXG4gXFx0aWYgKGR1bXBfdHJhY2UpXFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFx0cmV0dXJuIG9yZGVyZWRfZXZlbnRzX19mbHVzaChvZSwgT0VfRkxVU0hfX1JPVU5EKTtcXG4gfVxcbiBcXG5AQCAtNDAwMCw3ICs0MDAwLDcgQEAgaW50IHBlcmZfZXZlbnRfX3Byb2Nlc3NfaWRfaW5kZXgoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCBfX21heWJlX3VudXNlZCxcXG4gXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCIgIG1hY2hpbmVfcGlkOiAlXFxcIlBSSV9sZDY0LCBlMi1cXHUwMDNlbWFjaGluZV9waWQpO1xcbiBcXHRcXHRcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiAgdmNwdTogJVxcXCJQUklfbHU2NFxcXCJcXFxcblxcXCIsIGUyLVxcdTAwM2V2Y3B1KTtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRwdXRjaGFyKCdcXFxcbicpO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuYyBiL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuY1xcbmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcXG5AQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X21ldHJpY19qc29uKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcgX19tYXliZV91bnVzZWQsXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAoIWNvbmZpZy1cXHUwMDNlbWV0cmljX29ubHkpXFxuLVxcdFxcdGZwcmludGYob3V0LCBcXFwifVxcXCIpO1xcbitcXHRcXHRmcHV0YyhvdXQsICd9Jyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIG5ld19saW5lX2pzb24oc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgdm9pZCAqY3R4KVxcbkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWFkZXJfc3RkKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsXFxuIFxcdEZJTEUgKm91dHB1dCA9IGNvbmZpZy1cXHUwMDNlb3V0cHV0O1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZwcmludGYob3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0cHV0LCAnXFxcXG4nKTtcXG4gXFx0ZnByaW50ZihvdXRwdXQsIFxcXCIgUGVyZm9ybWFuY2UgY291bnRlciBzdGF0cyBmb3IgXFxcIik7XFxuIFxcdGlmIChfdGFyZ2V0LVxcdTAwM2VicGZfc3RyKVxcbiBcXHRcXHRmcHJpbnRmKG91dHB1dCwgXFxcIlxcXFwnQlBGIHByb2dyYW0ocykgJXNcXFwiLCBfdGFyZ2V0LVxcdTAwM2VicGZfc3RyKTtcXG5AQCAtMTMzMyw3ICsxMzMzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX3N0ZChzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnLFxcbiBcXHRlbHNlXFxuIFxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwidGhyZWFkIGlkIFxcXFwnJXNcXFwiLCBfdGFyZ2V0LVxcdTAwM2V0aWQpO1xcbiBcXG4tXFx0ZnByaW50ZihvdXRwdXQsIFxcXCJcXFxcJ1xcXCIpO1xcbitcXHRmcHV0YyhvdXRwdXQsICdcXFxcJycpO1xcbiBcXHRpZiAoY29uZmlnLVxcdTAwM2VydW5fY291bnQgXFx1MDAzZSAxKVxcbiBcXHRcXHRmcHJpbnRmKG91dHB1dCwgXFxcIiAoJWQgcnVucylcXFwiLCBjb25maWctXFx1MDAzZXJ1bl9jb3VudCk7XFxuIFxcdGZwcmludGYob3V0cHV0LCBcXFwiOlxcXFxuXFxcXG5cXFwiKTtcXG5AQCAtMTQwNiw5ICsxNDA2LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFibGUoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgRklMRSAqb3V0cHV0LCBkb3VibGUgYXZcXG4gXFx0XFx0ZnByaW50ZihvdXRwdXQsIFxcXCIgJTE3LjlmICglKy45ZikgXFxcIiwgcnVuLCBydW4gLSBhdmcpO1xcbiBcXG4gXFx0XFx0Zm9yIChoID0gMDsgaCBcXHUwMDNjIG47IGgrKylcXG4tXFx0XFx0XFx0ZnByaW50ZihvdXRwdXQsIFxcXCIjXFxcIik7XFxuK1xcdFxcdFxcdGZwdXRjKG91dHB1dCwgJyMnKTtcXG4gXFxuLVxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMob3V0cHV0LCAnXFxcXG4nKTtcXG4gXFx0fVxcbiBcXG4gXFx0ZnByaW50ZihvdXRwdXQsIFxcXCJcXFxcbiUqcyMgRmluYWwgcmVzdWx0OlxcXFxuXFxcIiwgaW5kZW50LCBcXFwiXFxcIik7XFxuQEAgLTE0MjgsNyArMTQyOCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoIWNvbmZpZy1cXHUwMDNlbnVsbF9ydW4pXFxuLVxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMob3V0cHV0LCAnXFxcXG4nKTtcXG4gXFxuIFxcdGlmIChjb25maWctXFx1MDAzZXJ1bl9jb3VudCA9PSAxKSB7XFxuIFxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwiICUxNy45ZiBzZWNvbmRzIHRpbWUgZWxhcHNlZFxcXCIsIGF2Zyk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuY1xcbmluZGV4IDZlYWRkZmNmODMzZTUyLi4yYzUzNDBhOTI4ZGQxZCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcXG5AQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxcbiBcXHRmcHJpbnRmKGZwLCBcXFwiIyAlKnMgICUqc1xcXCIsIHBpZHdpZHRoLCBcXFwiUElEXFxcIiwgdGlkd2lkdGgsIFxcXCJUSURcXFwiKTtcXG4gXFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIHZhbHVlcy1cXHUwMDNlbnVtX2NvdW50ZXJzOyBqKyspXFxuIFxcdFxcdGZwcmludGYoZnAsIFxcXCIgICUqc1xcXCIsIGNvdW50ZXJ3aWR0aFtqXSwgZXZzZWxfX25hbWUodmFsdWVzLVxcdTAwM2Vjb3VudGVyc1tqXSkpO1xcbi1cXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZhbHVlcy1cXHUwMDNldGhyZWFkczsgaSsrKSB7XFxuIFxcdFxcdGZwcmludGYoZnAsIFxcXCIgICUqZCAgJSpkXFxcIiwgcGlkd2lkdGgsIHZhbHVlcy1cXHUwMDNlcGlkW2ldLFxcbkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9yZWFkX3ZhbHVlc19fZGlzcGxheV9wcmV0dHkoRklMRSAqZnAsXFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyB2YWx1ZXMtXFx1MDAzZW51bV9jb3VudGVyczsgaisrKVxcbiBcXHRcXHRcXHRmcHJpbnRmKGZwLCBcXFwiICAlKlxcXCIgUFJJdTY0LFxcbiBcXHRcXHRcXHRcXHRjb3VudGVyd2lkdGhbal0sIHZhbHVlcy1cXHUwMDNldmFsdWVbaV1bal0pO1xcbi1cXHRcXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXHR9XFxuIFxcdGZyZWUoY291bnRlcndpZHRoKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wb3dlci9hY3BpL3Rvb2xzL2FjcGlkdW1wL2FwZHVtcC5jIGIvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuY1xcbmluZGV4IDcyYWQ3OTE1YjA0ZmQyLi42MDBkNWI2ZTA0YTg4MCAxMDA2NDRcXG4tLS0gYS90b29scy9wb3dlci9hY3BpL3Rvb2xzL2FjcGlkdW1wL2FwZHVtcC5jXFxuKysrIGIvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuY1xcbkBAIC0xNzEsNyArMTcxLDcgQEAgYXBfZHVtcF90YWJsZV9idWZmZXIoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSxcXG4gXFx0YWNwaV91dF9kdW1wX2J1ZmZlcl90b19maWxlKGdibF9vdXRwdXRfZmlsZSxcXG4gXFx0XFx0XFx0XFx0ICAgIEFDUElfQ0FTVF9QVFIodTgsIHRhYmxlKSwgdGFibGVfbGVuZ3RoLFxcbiBcXHRcXHRcXHRcXHQgICAgREJfQllURV9ESVNQTEFZLCAwKTtcXG4tXFx0ZnByaW50ZihnYmxfb3V0cHV0X2ZpbGUsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhnYmxfb3V0cHV0X2ZpbGUsICdcXFxcbicpO1xcbiBcXHRyZXR1cm4gKDApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jIGIvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuY1xcbmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDRcXG4tLS0gYS90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jXFxuKysrIGIvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuY1xcbkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXFxuIFxcbiBcXHRpZiAobGV2ZWwgPT0gMCkge1xcbiBcXHRcXHRpZiAoaGVhZGVyKVxcbi1cXHRcXHRcXHRmcHJpbnRmKG91dGYsIFxcXCJ7XFxcIik7XFxuK1xcdFxcdFxcdGZwdXRjKG91dGYsICd7Jyk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG59XFxcXG5cXFwiKTtcXG4gXFxuQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgdm9pZCBmb3JtYXRfYW5kX3ByaW50KEZJTEUgKm91dGYsIGludCBsZXZlbCwgY2hhciAqaGVhZGVyLCBjaGFyICp2YWx1ZSlcXG4gXFxuIFxcdFxcdGlmICh2YWx1ZSkge1xcbiBcXHRcXHRcXHRpZiAobGFzdF9sZXZlbCAhPSBsZXZlbClcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0ZnB1dGMob3V0ZiwgJ1xcXFxuJyk7XFxuIFxcbiBcXHRcXHRcXHRmcHJpbnRmKG91dGYsIFxcXCIlc1xcXFxcXFwiJXNcXFxcXFxcIjogXFxcIiwgZGVsaW1pdGVycywgaGVhZGVyKTtcXG4gXFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXFxcXCIlc1xcXFxcXFwiXFxcIiwgdmFsdWUpO1xcbkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXFxuIFxcdFxcdFxcdFxcdFxcdGZwcmludGYob3V0ZiwgXFxcIlxcXFxuJXN9XFxcIiwgZGVsaW1pdGVycyk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0aWYgKGFicyhsYXN0X2xldmVsIC0gbGV2ZWwpIFxcdTAwM2MgMylcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0ZnB1dGMob3V0ZiwgJ1xcXFxuJyk7XFxuIFxcdFxcdFxcdGlmIChoZWFkZXIpXFxuIFxcdFxcdFxcdFxcdGZwcmludGYob3V0ZiwgXFxcIiVzXFxcXFxcXCIlc1xcXFxcXFwiOiB7XFxcIiwgZGVsaW1pdGVycyxcXG4gXFx0XFx0XFx0XFx0XFx0aGVhZGVyKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcXG5pbmRleCA5MjA2OTRjM2MxZWM5NC4uNDVkMzlhMGZjZjcyYTAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuY1xcbisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcXG5AQCAtOTA5OSw3ICs5MDk5LDcgQEAgdm9pZCBkdW1wX2NwdWlkX2h5cGVydmlzb3Iodm9pZClcXG4gXFx0ZHVtcF93b3JkX2NoYXJzKGVieCk7XFxuIFxcdGR1bXBfd29yZF9jaGFycyhlY3gpO1xcbiBcXHRkdW1wX3dvcmRfY2hhcnMoZWR4KTtcXG4tXFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0ZiwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHZvaWQgcHJvY2Vzc19jcHVpZCgpXFxuQEAgLTk3NDksNyArOTc0OSw3IEBAIHZvaWQgdG9wb2xvZ3lfcHJvYmUoYm9vbCBzdGFydHVwKVxcbiBcXHRcXHRmcHJpbnRmKG91dGYsIFxcXCIgc2libGluZ3NcXFwiKTtcXG4gXFx0XFx0Zm9yIChodF9pZCA9IDA7IGh0X2lkIFxcdTAwM2M9IE1BWF9IVF9JRDsgKytodF9pZClcXG4gXFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiICVkXFxcIiwgY3B1c1tpXS5odF9zaWJsaW5nX2NwdV9pZFtodF9pZF0pO1xcbi1cXHRcXHRmcHJpbnRmKG91dGYsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhvdXRmLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiBcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmNcXG5pbmRleCAxZWUyMTdkOTc0MzQwZS4uNjRiOTdhNDFhZjQ1ZWEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXFxuQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh0YWJfbWVtX3VzZV9jYXNlICpodGFiX21lbV9maW5kX3VzZV9jYXNlX29yX2V4aXQoY29uc3QgY2hhclxcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImF2YWlsYWJsZSB1c2UgY2FzZTpcXFwiKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUodXNlX2Nhc2VzKTsgaSsrKVxcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAlc1xcXCIsIHVzZV9jYXNlc1tpXS5uYW1lKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRleGl0KDEpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmNcXG5pbmRleCAzNTU4ZmUxMGUyOGNmOS4uNThlYTJhMmVjMTNlMmQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXFxuQEAgLTIyOCw3ICsyMjgsNyBAQCBpbnQgZ2V0X2ppdGVkX3Byb2dyYW1fdGV4dChpbnQgZmQsIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X3N6KVxcbiBcXHRmb3IgKHBjID0gMCwgaSA9IDA7IGkgXFx1MDAzYyBqaXRlZF9mdW5jczsgKytpKSB7XFxuIFxcdFxcdGZwcmludGYodGV4dF9vdXQsIFxcXCJmdW5jICMlZDpcXFxcblxcXCIsIGkpO1xcbiBcXHRcXHRkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICsgcGMsIGZ1bmNfbGVuc1tpXSk7XFxuLVxcdFxcdGZwcmludGYodGV4dF9vdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0Yyh0ZXh0X291dCwgJ1xcXFxuJyk7XFxuIFxcdFxcdHBjICs9IGZ1bmNfbGVuc1tpXTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcXG5pbmRleCA3YmE4Mjk3NGVlNzg0ZC4uYjUyMGJlMWJmN2FhYTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcXG5AQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfcmVzdWx0KGNvbnN0IHN0cnVjdCBwcm9nX3Rlc3RfZGVmICp0ZXN0LCBjb25zdCBzdHJ1Y3QgdGVzXFxuIFxcdGVsc2VcXG4gXFx0XFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiT0sgKFNLSVA6ICVkLyVkKVxcXCIsIHNraXBwZWRfY250LCBzdWJ0ZXN0c19jbnQpO1xcbiBcXG4tXFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfbG9nKGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KVxcbkBAIC0zOTEsNyArMzkxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGVzdF9sb2coY2hhciAqbG9nX2J1Ziwgc2l6ZV90IGxvZ19jbnQpXFxuIFxcdGxvZ19idWZbbG9nX2NudF0gPSAnXFxcXDAnO1xcbiBcXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFxcXCIlc1xcXCIsIGxvZ19idWYpO1xcbiBcXHRpZiAobG9nX2J1Zltsb2dfY250IC0gMV0gIT0gJ1xcXFxuJylcXG4tXFx0XFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X3N1YnRlc3RfbmFtZShpbnQgdGVzdF9udW0sIGludCBzdWJ0ZXN0X251bSxcXG5AQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3N1YnRlc3RfbmFtZShpbnQgdGVzdF9udW0sIGludCBzdWJ0ZXN0X251bSxcXG4gXFx0aWYgKHJlc3VsdClcXG4gXFx0XFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiOiVzXFxcIiwgcmVzdWx0KTtcXG4gXFxuLVxcdGZwcmludGYoZW52LnN0ZG91dF9zYXZlZCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICdcXFxcbicpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBqc29ud193cml0ZV9sb2dfbWVzc2FnZShqc29uX3dyaXRlcl90ICp3LCBjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcXG5AQCAtMTMzMywxNCArMTMzMywxNCBAQCB2b2lkIGhleGR1bXAoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pXFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspIHtcXG4gXFx0XFx0aWYgKCEoaSAlIDE2KSkge1xcbiBcXHRcXHRcXHRpZiAoaSlcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRwdXRjaGFyKCdcXFxcbicpO1xcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiVzXFxcIiwgcHJlZml4KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRpZiAoaSBcXHUwMDI2XFx1MDAyNiAhKGkgJSA4KSBcXHUwMDI2XFx1MDAyNiAoaSAlIDE2KSlcXG4tXFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJcXFxcdFxcXCIpO1xcbitcXHRcXHRcXHRwdXRjaGFyKCdcXFxcdCcpO1xcbiBcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiUwMlggXFxcIiwgKCh1aW50OF90ICopKGJ1ZikpW2ldKTtcXG4gXFx0fVxcbi1cXHRmcHJpbnRmKHN0ZG91dCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdHB1dGNoYXIoJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG5pbmRleCBhN2RiNmYwNGY3ZTE0NS4uZDFjN2YwNmI4YjFjZjkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xcbkBAIC0xNjA1LDcgKzE2MDUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wKF9fdTMyIHByb2dfaWQsIGVudW0gZHVtcF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc1xcbiBcXHRwcmludGYoXFxcIkRVTVAgKCVzKSAlcy8lczpcXFxcblxcXCIsIG1vZGUgPT0gRFVNUF9KSVRFRCA/IFxcXCJKSVRFRFxcXCIgOiBcXFwiWExBVEVEXFxcIiwgZmlsZV9uYW1lLCBwcm9nX25hbWUpO1xcbiBcXHR3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZnApKVxcbiBcXHRcXHRmcHV0cyhidWYsIHN0ZG91dCk7XFxuLVxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFxuIFxcdGlmIChmZXJyb3IoZnApKVxcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIkZhaWxlZCB0byBkdW1wIEJQRiBwcm9nIHdpdGggZXJyb3I6ICVkXFxcXG5cXFwiLCBlcnJubyk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXFxuaW5kZXggZDk2ZThhM2I1YTY1MjYuLjdiZGNjNDExNGRiYTFjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXFxuQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBwcl9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcbiBcXHRpZiAoZXJybm8gIT0gMClcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCI6ICVzXFxcIiwgc3RyZXJyb3IoZXJybm8pKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IG1lbW9yeV9idWZmZXIgKnVkbWFidWZfYWxsb2Moc2l6ZV90IHNpemUpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXFxuaW5kZXggYzc4MDVlODdkMTJjNWQuLjEyMDgzNGY4YmEwZGE1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXFxuQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3NrKGNvbnN0IHVuc2lnbmVkIGNoYXIgc2tleXNbXSwgY29uc3QgY2hhciAqZGVzY3IpXFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiIyAlM2Q6IFxcXCIsIGkpO1xcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgMzI7IGorKylcXG4gXFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlMDJ4IFxcXCIsIHNrZXlzW2kgKyBqXSk7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmNcXG5pbmRleCA3ODE4MGRhMWVmY2M1My4uNDA0NjdlODZiZmQ0N2IgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXFxuQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW50IGNhcHR1cmVfZXZlbnRzKGludCBmZCwgaW50IGV2ZW50X2dyb3VwKVxcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChzZXJ2ZXJfc2lkZSlcXG4gXFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIsc2VydmVyX3NpZGU6MVxcXCIpO1xcbi1cXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdH0gd2hpbGUgKDEpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jXFxuaW5kZXggN2NhZjMxMzU0NDhkYTcuLjcyNGRhOTIyMmFkOWEwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jXFxuQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IHBmc29ja2V0KGludCB2ZXIpXFxuIHN0YXRpYyB2b2lkIHN0YXR1c19iYXJfdXBkYXRlKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRvdGFsX3BhY2tldHMgJSAxMCA9PSAwKSB7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiLlxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICcuJyk7XFxuIFxcdFxcdGZmbHVzaChzdGRlcnIpO1xcbiBcXHR9XFxuIH1cXG5AQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRpYyBpbnQgdGVzdF90cGFja2V0KGludCB2ZXJzaW9uLCBpbnQgdHlwZSlcXG4gXFx0dW5tYXBfcmluZyhzb2NrLCBcXHUwMDI2cmluZyk7XFxuIFxcdGNsb3NlKHNvY2spO1xcbiBcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xcbmluZGV4IDE3MGJlMTkyZjVjN2NlLi44NmM4ZDQ5NDVkNzNjMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jXFxuQEAgLTIwMCwxMCArMjAwLDEwIEBAIHN0YXRpYyB2b2lkIF9fcHJpbnRfdGltZXN0YW1wKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB0aW1lc3BlYyAqY3VyLFxcbiBcXHRcXHR0c19kZWx0YSA9IHRpbWVzcGVjX3RvX25zNjQoY3VyKSAtIHRpbWVzcGVjX3RvX25zNjQoXFx1MDAyNnRzX3Vzcik7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiICAoVVNSICtcXFwiKTtcXG4gXFx0XFx0X19wcmludF90c19kZWx0YV9mb3JtYXR0ZWQodHNfZGVsdGEpO1xcbi1cXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIilcXFwiKTtcXG4rXFx0XFx0ZnB1dGMoc3RkZXJyLCAnKScpO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHJlY29yZF90aW1lc3RhbXBfdXNyKHZvaWQpXFxuQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90aW1pbmdfZXZlbnQoY2hhciAqbmFtZSwgc3RydWN0IHRpbWluZ19ldmVudCAqdGUpXFxuIFxcdF9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRlLVxcdTAwM2VtaW4pO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiwgbWF4PVxcXCIpO1xcbiBcXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cXHUwMDNlbWF4KTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiAvKiBUT0RPOiBjb252ZXJ0IHRvIGNoZWNrX2FuZF9wcmludCBwYXlsb2FkIG9uY2UgQVBJIGlzIHN0YWJsZSAqL1xcbkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfcGF5bG9hZChjaGFyICpkYXRhLCBpbnQgbGVuKVxcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcInBheWxvYWQ6IFxcXCIpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspXFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJTAyaGh4IFxcXCIsIGRhdGFbaV0pO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcilcXG5AQCAtOTMzLDcgKzkzMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJwcm90b2NvbDogICAgICVzXFxcXG5cXFwiLCBzb2NrX25hbWVzW2NmZ19wcm90b10pO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcInBheWxvYWQ6ICAgICAgJXVcXFxcblxcXCIsIGNmZ19wYXlsb2FkX2xlbik7XFxuIFxcdGZwcmludGYoc3RkZXJyLCBcXFwic2VydmVyIHBvcnQ6ICAldVxcXFxuXFxcIiwgZGVzdF9wb3J0KTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXG4gXFx0aWYgKGRvX2lwdjQpIHtcXG4gXFx0XFx0aWYgKGNmZ19kb19saXN0ZW4pXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuY1xcbmluZGV4IDdjMjNkM2RkN2Q2ZDkxLi40MTJkZWZlOTgyNzE0MyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcXG5AQCAtMzYzLDcgKzM2Myw3IEBAIGludCBkZWNvbXByZXNzX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCB2b2lkICpkZXZoYW5kbGUpXFxuIFxcdFxcdFxcdGdvdG8gZXJyMztcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlMDJ4IFxcXCIsIHRtcFtpXSk7XFxuIFxcdFxcdGlmIChpID09IDUpXFxuLVxcdFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImd6SGVhZGVyIE1USU1FLCBYRkwsIE9TIGlnbm9yZWRcXFxcblxcXCIpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oXFxuaW5kZXggNzdiNjhjNzEyOWE2NDguLjgyMDE1YjE5ZGY2YzM5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxcbkBAIC0xMCw3ICsxMCw3IEBAXFxuIFxcbiAjZGVmaW5lIFZGSU9fTE9HX0FORF9FWElUKC4uLikgZG8ge1xcdFxcdFxcXFxcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCIgIFxcXCIgX19WQV9BUkdTX18pO1xcdFxcXFxcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcdFxcdFxcdFxcXFxcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXHRcXHRcXHRcXFxcXFxuIFxcdGV4aXQoS1NGVF9GQUlMKTtcXHRcXHRcXHRcXFxcXFxuIH0gd2hpbGUgKDApXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmNcXG5pbmRleCAzYTNkMWVkNjM1YzFkZi4uODBhMzEyZjE0OWE2NmUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXFxuQEAgLTYwLDE2ICs2MCwxNiBAQCBjaGFyICoqdmZpb19zZWxmdGVzdHNfZ2V0X2JkZnMoaW50ICphcmdjLCBjaGFyICphcmd2W10sIGludCAqbnJfYmRmcylcXG4gXFx0fVxcbiBcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGRldmljZShzKSB0byB1c2UsIHNraXBwaW5nIHRlc3QuXFxcXG5cXFwiKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlRvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZTpcXFxcblxcXCIpO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdGZwcmludGYoc3RkZXJyLCBcXFwiICAgIGV4cG9ydCBWRklPX1NFTEZURVNUU19CREY9XFxcXFxcXCJzZWdtZW50OmJ1czpkZXZpY2UuZnVuY3Rpb25cXFxcXFxcIlxcXFxuXFxcIik7XFxuIFxcdGZwcmludGYoc3RkZXJyLCBcXFwiICAgICVzIFtvcHRpb25zXVxcXFxuXFxcIiwgYXJndlswXSk7XFxuLVxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJUbyBwYXNzIHRoZSBkZXZpY2UgYWRkcmVzcyhlcykgdmlhIGFyZ3Y6XFxcXG5cXFwiKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAgICAlcyBbb3B0aW9uc10gc2VnbWVudDpidXM6ZGV2aWNlLmZ1bmN0aW9uIC4uLlxcXFxuXFxcIiwgYXJndlswXSk7XFxuLVxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0ZXhpdChLU0ZUX1NLSVApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX2RpYWdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuY1xcbmluZGV4IDA4MWUwNDVmNDY5NjBlLi5jYzkwM2NkYjQ1ZDkyZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX2RpYWdfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuY1xcbkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX2FkZHIoRklMRSAqZnAsIHVuc2lnbmVkIGludCBjaWQsIHVuc2lnbmVkIGludCBwb3J0KVxcbiBcXHRcXHRmcHJpbnRmKGZwLCBcXFwiJXU6XFxcIiwgY2lkKTtcXG4gXFxuIFxcdGlmIChwb3J0ID09IFZNQUREUl9QT1JUX0FOWSlcXG4tXFx0XFx0ZnByaW50ZihmcCwgXFxcIipcXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZnAsICcqJyk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0ZnByaW50ZihmcCwgXFxcIiV1XFxcIiwgcG9ydCk7XFxuIH1cXG5AQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBwcmludF92c29ja19hZGRyKEZJTEUgKmZwLCB1bnNpZ25lZCBpbnQgY2lkLCB1bnNpZ25lZCBpbnQgcG9ydClcXG4gc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfc3RhdChGSUxFICpmcCwgc3RydWN0IHZzb2NrX3N0YXQgKnN0KVxcbiB7XFxuIFxcdHByaW50X3Zzb2NrX2FkZHIoZnAsIHN0LVxcdTAwM2Vtc2cudmRpYWdfc3JjX2NpZCwgc3QtXFx1MDAzZW1zZy52ZGlhZ19zcmNfcG9ydCk7XFxuLVxcdGZwcmludGYoZnAsIFxcXCIgXFxcIik7XFxuK1xcdGZwdXRjKGZwLCAnICcpO1xcbiBcXHRwcmludF92c29ja19hZGRyKGZwLCBzdC1cXHUwMDNlbXNnLnZkaWFnX2RzdF9jaWQsIHN0LVxcdTAwM2Vtc2cudmRpYWdfZHN0X3BvcnQpO1xcbiBcXHRmcHJpbnRmKGZwLCBcXFwiICVzICVzICVzICV1XFxcXG5cXFwiLFxcbiBcXHRcXHRzb2NrX3R5cGVfc3RyKHN0LVxcdTAwM2Vtc2cudmRpYWdfdHlwZSksXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jIGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcXG5pbmRleCBjYjExMDhiYzkyNDk4OS4uZWJkYjk1ODE5YTc2NmQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcXG4rKysgYi90b29scy90aGVybWFsL3Rtb24vc3lzZnMuY1xcbkBAIC01MjIsNyArNTIyLDcgQEAgaW50IHVwZGF0ZV90aGVybWFsX2RhdGEoKVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAodG1vbl9sb2cpIHtcXG4tXFx0XFx0ZnByaW50Zih0bW9uX2xvZywgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHRtb25fbG9nLCAnXFxcXG4nKTtcXG4gXFx0XFx0ZmZsdXNoKHRtb25fbG9nKTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGhlcm1hbC90bW9uL3Rtb24uYyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmNcXG5pbmRleCA3ZWIzMjE2YTI3ZjQ1Zi4uOWE5NzJmNzNhMmMwMDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGhlcm1hbC90bW9uL3Rtb24uY1xcbisrKyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmNcXG5AQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfbG9nZ2luZyh2b2lkKVxcbiBcXHRcXHRmcHJpbnRmKHRtb25fbG9nLCBcXFwiJXMlZCBcXFwiLCBwdGRhdGEuY2RpW2ldLnR5cGUsXFxuIFxcdFxcdFxcdHB0ZGF0YS5jZGlbaV0uaW5zdGFuY2UpO1xcbiBcXG4tXFx0ZnByaW50Zih0bW9uX2xvZywgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHRtb25fbG9nLCAnXFxcXG4nKTtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuYyBiL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXFxuaW5kZXggZWY5NzkxNmUzODczYTEuLjNkYzZmYjlkZjkyNjgzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXFxuKysrIGIvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmNcXG5AQCAtMTk5OSw3ICsxOTk5LDcgQEAgc3RhdGljIHZvaWQgc2Nhbl9hcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFxcImJlZW4gZW5hYmxlZC4gUmFuZG9tIHNsZWVwIGlzIGludGVuZGVkIGZvciB0aGUgZm9sbG93aW5nIHRyYWNlcnM6XFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0Zm9yIChpID0gMDsgcmFuZG9tX3RyYWNlcnNbaV07IGkrKylcXG4gXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlc1xcXFxuXFxcIiwgcmFuZG9tX3RyYWNlcnNbaV0pO1xcbi1cXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uYyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcXG5pbmRleCA4YzdmNWU3NWIyZWM4ZC4uZTgxZTY3NmQ1MWQyYWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uY1xcbisrKyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsXFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJXMgWy1oXSBcXFwiLCBtb2RlKTtcXG4gXFxuIFxcdHByaW50X21zZ19hcnJheShzdGFydF9tc2dzKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRwcmludF9tc2dfYXJyYXkoY29tbW9uX29wdGlvbnMpO1xcbiBcXHRwcmludF9tc2dfYXJyYXkob3B0X21zZ3MpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jIGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jXFxuaW5kZXggY2IxODdlN2Q0OGQxYzIuLjM1MzJkYTJmMjI5NmQ4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xcbisrKyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xcbkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgZmF0YWwoY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcdHZhX3N0YXJ0KGFwLCBmbXQpO1xcbiBcXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xcbiBcXHR2YV9lbmQoYXApO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcbiBcXHRleGl0KEVSUk9SKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy91c2IvZmZzLXRlc3QuYyBiL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXFxuaW5kZXggMjJiOTM4ZmJkZmI3NzIuLmU5OTM3MzZiYTBkNjQ3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXFxuKysrIGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmNcXG5AQCAtNTYyLDcgKzU2Miw3IEBAIGVtcHR5X291dF9idWYoc3RydWN0IHRocmVhZCAqaWdub3JlLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBuYnl0ZXMpXFxuIFxcdFxcdFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJTR6ZDpcXFwiLCBsZW4pO1xcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAlMDJ4XFxcIiwgKnApO1xcbiBcXHRcXHRcXHRpZiAoMzEgPT0gKGxlbiAlIDMyKSlcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGZmbHVzaChzdGRlcnIpO1xcbiBcXHRcXHRlcnJubyA9IEVJTFNFUTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcXG5pbmRleCBlNmRlYTQwNDBmOGY0Yy4uMjYxMzIxNzFmNjAwOGUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xcbisrKyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcXG5AQCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyB2b2lkIGlrbV91c2FnZV9wcmludF9yZWFjdG9ycyh2b2lkKVxcbiBcXHRcXHRlbmQgPSBzdHJzdHIoc3RhcnQsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIH1cXG4gLypcXG4gICogaWttX3VzYWdlIC0gcHJpbnQgdXNhZ2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjI6MzY6MDUuNzkwNjI4MDA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwMzAyMTUxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1OGZjZTA0MDVjZTFjNTQ4MTBkNmM1NWQ1ZWFkMTE4OTA3ZTBkZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMjozNjowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmNcbmluZGV4IDhiZmNmZjllMmY2Mzk0Li43NmFiZDNmNGZiY2JjNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9jb21tb24uY1xuQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOiBcIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHR9XG4gXHR2YV9lbmQoYXApO1xuIH1cbkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgcF9pbmZvKGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFxuIFx0dmFfc3RhcnQoYXAsIGZtdCk7XG4gXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHR2YV9lbmQoYXApO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9tYWluLmMgYi90b29scy9icGYvYnBmdG9vbC9tYWluLmNcbmluZGV4IGM5MWUxYTZlMWExZWNhLi5hZWNmYzc3ODYyNWY3MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uY1xuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvbWFpbi5jXG5AQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgZnByaW50X2hleChGSUxFICpmLCB2b2lkICphcmcsIHVuc2lnbmVkIGludCBuLCBjb25zdCBjaGFyICpzZXApXG4gXHRcdGlmICghaSlcbiBcdFx0XHQvKiBub3RoaW5nICovO1xuIFx0XHRlbHNlIGlmICghKGkgJSAxNikpXG4tXHRcdFx0ZnByaW50ZihmLCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhmLCAnXFxuJyk7XG4gXHRcdGVsc2UgaWYgKCEoaSAlIDgpKVxuIFx0XHRcdGZwcmludGYoZiwgXCIgIFwiKTtcbiBcdFx0ZWxzZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmggYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5pbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5AQCAtMjUsNyArMjUsNyBAQFxuIFx0aWYgKGpzb25fb3V0cHV0KVx0XHRcdFx0XFxcbiBcdFx0anNvbndfc3RhcnRfb2JqZWN0KGpzb25fd3RyKTtcdFx0XFxcbiBcdGVsc2VcdFx0XHRcdFx0XHRcXFxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCJ7XCIpO1x0XHRcdFxcXG4rXHRcdHB1dGNoYXIoJ3snKTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX0VORF9PQkpFQ1RfTkVTVEVEXHRcdFx0XHRcXFxuQEAgLTMzLDcgKzMzLDcgQEBcbiBcdGlmIChqc29uX291dHB1dClcdFx0XHRcdFxcXG4gXHRcdGpzb253X2VuZF9vYmplY3QoanNvbl93dHIpO1x0XHRcXFxuIFx0ZWxzZVx0XHRcdFx0XHRcdFxcXG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcIn1cIik7XHRcdFx0XFxcbitcdFx0cHV0Y2hhcignfScpO1x0XHRcdFx0XFxcbiB9XG4gXG4gI2RlZmluZSBORVRfRU5EX09CSkVDVFx0XHRcdFx0XHRcXFxuQEAgLTQ3LDcgKzQ3LDcgQEBcbiBcdGlmIChqc29uX291dHB1dClcdFx0XHRcdFxcXG4gXHRcdGpzb253X2VuZF9vYmplY3QoanNvbl93dHIpO1x0XHRcXFxuIFx0ZWxzZVx0XHRcdFx0XHRcdFxcXG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcIlxcblwiKTtcdFx0XHRcXFxuK1x0XHRwdXRjaGFyKCdcXG4nKTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX1NUQVJUX0FSUkFZKG5hbWUsIGZtdF9zdHIpXHRcdFx0XFxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbmluZGV4IGE5ZjczMGQ0MDdhOTI5Li5kMjdjYjlkNDk4NjA5MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5AQCAtMTI2Niw3ICsxMjY2LDcgQEAgc3RhdGljIHZvaWQgaGV4X3ByaW50KHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplLCBGSUxFICpmKVxuIFx0XHRcdGZwcmludGYoZiwgXCIlYyVzXCIsIGMsIGogPT0gaSArIDcgPyBcIiBcIiA6IFwiXCIpO1xuIFx0XHR9XG4gXG4tXHRcdGZwcmludGYoZiwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGYsICdcXG4nKTtcbiBcdH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jIGIvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXG5pbmRleCBiNzA4MTNiMGJmOGVmYS4uZTEyZTE0NzgwYzBlNDUgMTAwNjQ0XG4tLS0gYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmNcbisrKyBiL3Rvb2xzL2dwaW8vZ3Bpby1ldmVudC1tb24uY1xuQEAgLTEyMSw3ICsxMjEsNyBAQCBpbnQgbW9uaXRvcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsXG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwidW5rbm93biBldmVudFwiKTtcbiBcdFx0fVxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRcdHB1dGNoYXIoJ1xcbicpO1xuIFxuIFx0XHRpKys7XG4gXHRcdGlmIChpID09IGxvb3BzKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuYyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuY1xuaW5kZXggYmEwODY2ZWIzNTgxNDUuLmI3NmM5NGZlZTA0ZDA5IDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jXG4rKysgYi90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcbkBAIC04Nyw3ICs4Nyw3IEBAIGludCBoYW1tZXJfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCB1bnNpZ25lZCBpbnQgKmxpbmVzLCBpbnQgbnVtX2xpbmVzLFxuIFx0XHRpZiAoaiA9PSBzaXplb2Yoc3dpcnIpIC0gMSlcbiBcdFx0XHRqID0gMDtcbiBcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwiW1wiKTtcbitcdFx0cHV0Y2hhcignWycpO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fbGluZXM7IGkrKykge1xuIFx0XHRcdGZwcmludGYoc3Rkb3V0LCBcIiV1OiAlZFwiLCBsaW5lc1tpXSxcbiBcdFx0XHRcdGdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpO1xuQEAgLTEwMSw3ICsxMDEsNyBAQCBpbnQgaGFtbWVyX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgdW5zaWduZWQgaW50ICpsaW5lcywgaW50IG51bV9saW5lcyxcbiBcdFx0aWYgKGxvb3BzIFx1MDAyNlx1MDAyNiBpdGVyYXRpb24gPT0gbG9vcHMpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4tXHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRwdXRjaGFyKCdcXG4nKTtcbiBcdHJldCA9IDA7XG4gXG4gZXhpdF9jbG9zZV9lcnJvcjpcbmRpZmYgLS1naXQgYS90b29scy9ncGlvL2xzZ3Bpby5jIGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuaW5kZXggNTJhMGJlNDU0MTBjOTcuLmFiYjJjNmZiYzNkN2NhIDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuKysrIGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuQEAgLTE1Miw5ICsxNTIsOSBAQCBpbnQgbGlzdF9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUpXG4gXHRcdGlmIChsaW5mby5mbGFncykge1xuIFx0XHRcdGZwcmludGYoc3Rkb3V0LCBcIiBbXCIpO1xuIFx0XHRcdHByaW50X2F0dHJpYnV0ZXMoXHUwMDI2bGluZm8pO1xuLVx0XHRcdGZwcmludGYoc3Rkb3V0LCBcIl1cIik7XG4rXHRcdFx0cHV0Y2hhcignXScpO1xuIFx0XHR9XG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcIlxcblwiKTtcbitcdFx0cHV0Y2hhcignXFxuJyk7XG4gXG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmggYi90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaFxuaW5kZXggZTIyYWU4N2E3Mjg5MjAuLjg5YzlhM2QzYmM3NzMzIDEwMDY0NFxuLS0tIGEvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmhcbisrKyBiL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXG5AQCAtMjcsNyArMjcsNyBAQCB2b2lkIHZ3YXJueChjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncylcbiB7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIlczogXCIsIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5pbmRleCBlNjk1NDkwOTQwMWM4ZS4uZTNhYjFkYjQ0YjE1NGUgMTAwNjQ0XG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xuKysrIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbkBAIC04NjcsNyArODY3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdH1cbiBcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9TVEFDS1RSQUNFKVxuIFx0XHRcdFx0ZnByaW50Zihmb3V0LCBcIjpcXG4lc1wiLCBsaXN0W2ldLnN0YWNrdHJhY2UpO1xuLVx0XHRcdGZwcmludGYoZm91dCwgXCJcXG5cIik7XG4rXHRcdFx0ZnB1dGMoZm91dCwgJ1xcbicpO1xuIFx0XHR9XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uYyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcbmluZGV4IDVkMGY0MjhlZWQwYTdmLi4yNDVkN2Y1OGM4ZmI2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcbisrKyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcbkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOiBcIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHR9XG4gXHR2YV9lbmQoYXApO1xuIH1cbkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXG4gXHR2YV9zdGFydChhcCwgZm10KTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdHZhX2VuZChhcCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jIGIvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmNcbmluZGV4IDExOGMzZGUyZjI5M2VlLi5iNmQyN2QzMjZiOGFkOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXG4rKysgYi90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suY1xuQEAgLTI5Nyw3ICsyOTcsNyBAQCBpbnQgbWFrZV9iYWNrdXAodm9pZClcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIgJXNcIiwgYXJnKTtcbiBcdH1cbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvZGlzYXMuYyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuY1xuaW5kZXggZTZhNTRhODM2MDVjOTAuLjMzOWQxZDU2OTBjNDIwIDEwMDY0NFxuLS0tIGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jXG4rKysgYi90b29scy9vYmp0b29sL2Rpc2FzLmNcbkBAIC01MzcsNyArNTM3LDcgQEAgdm9pZCBkaXNhc19wcmludF9pbnNuKEZJTEUgKnN0cmVhbSwgc3RydWN0IGRpc2FzX2NvbnRleHQgKmRjdHgsXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChzdHJjbXAoZm9ybWF0LCBcIlxcblwiKSA9PSAwKSB7XG4tXHRcdGZwcmludGYoc3RyZWFtLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoc3RyZWFtLCAnXFxuJyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tYzJjLmMgYi90b29scy9wZXJmL2J1aWx0aW4tYzJjLmNcbmluZGV4IGM5NTg0ZGJlZGY3N2FmLi5mYzliNmIxOGVkZWQ5ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jXG5AQCAtMjUxMSw3ICsyNTExLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfY2FjaGVsaW5lKHN0cnVjdCBjMmNfaGlzdHMgKmMyY19oaXN0cyxcbiBcdFx0aGlzdHNfX2ZwcmludGZfaGVhZGVycyhcdTAwMjZjMmNfaGlzdHMtXHUwMDNlaGlzdHMsIG91dCk7XG4gXHRcdG9uY2UgPSB0cnVlO1xuIFx0fSBlbHNlIHtcbi1cdFx0ZnByaW50ZihvdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXQsICdcXG4nKTtcbiBcdH1cbiBcbiBcdGZwcmludGYob3V0LCBcIiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwiKTtcbkBAIC0yNTkwLDE1ICsyNTkwLDE1IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbilcbiBcdHNldHVwX3BhZ2VyKCk7XG4gXG4gXHRwcmludF9jMmNfX2Rpc3BsYXlfc3RhdHMob3V0KTtcbi1cdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dCwgJ1xcbicpO1xuIFx0cHJpbnRfc2hhcmVkX2NhY2hlbGluZV9pbmZvKG91dCk7XG4tXHRmcHJpbnRmKG91dCwgXCJcXG5cIik7XG4rXHRmcHV0YyhvdXQsICdcXG4nKTtcbiBcdHByaW50X2MyY19pbmZvKG91dCwgc2Vzc2lvbik7XG4gXG4gXHRpZiAoYzJjLnN0YXRzX29ubHkpXG4gXHRcdHJldHVybjtcbiBcbi1cdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dCwgJ1xcbicpO1xuIFx0ZnByaW50ZihvdXQsIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTtcbiBcdGZwcmludGYob3V0LCBcIiAgICAgICAgICAgU2hhcmVkIERhdGEgQ2FjaGUgTGluZSBUYWJsZSAgICAgICAgICBcXG5cIik7XG4gXHRmcHJpbnRmKG91dCwgXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpO1xuQEAgLTI2MDYsNyArMjYwNiw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbilcbiBcbiBcdGhpc3RzX19mcHJpbnRmKFx1MDAyNmMyYy5oaXN0cy5oaXN0cywgdHJ1ZSwgMCwgMCwgMCwgc3Rkb3V0LCB0cnVlKTtcbiBcbi1cdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dCwgJ1xcbicpO1xuIFx0ZnByaW50ZihvdXQsIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTtcbiBcdGZwcmludGYob3V0LCBcIiAgICAgIFNoYXJlZCBDYWNoZSBMaW5lIERpc3RyaWJ1dGlvbiBQYXJldG8gICAgICBcXG5cIik7XG4gXHRmcHJpbnRmKG91dCwgXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uY1xuaW5kZXggYzQ2MzI1NzdkMTI5NjMuLjdjYjIwYjNhMDNlNGNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXG4rKysgYi90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmNcbkBAIC02OTEsNyArNjkxLDcgQEAgc3RhdGljIGludCBjbWRfc2Vzc2lvbl9saXN0KHN0cnVjdCBkYWVtb24gKmRhZW1vbiwgdW5pb24gY21kICpjbWQsIEZJTEUgKm91dClcbiBcdFx0XHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cbiBcdFx0XHRjc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gZGFlbW9uLVx1MDAzZXN0YXJ0KSAvIDYwKSk7XG4gXG4tXHRcdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdFx0ZnB1dGMob3V0LCAnXFxuJyk7XG4gXHR9IGVsc2Uge1xuIFx0XHRmcHJpbnRmKG91dCwgXCJbJWQ6ZGFlbW9uXSBiYXNlOiAlc1xcblwiLCBnZXRwaWQoKSwgZGFlbW9uLVx1MDAzZWJhc2UpO1xuIFx0XHRpZiAoY21kLVx1MDAzZWxpc3QudmVyYm9zZSkge1xuQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KVxuIFx0XHRcdFx0Lyogc2Vzc2lvbiB1cCB0aW1lICovXG4gXHRcdFx0XHRjc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gc2Vzc2lvbi1cdTAwM2VzdGFydCkgLyA2MCkpO1xuIFxuLVx0XHRcdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhvdXQsICdcXG4nKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRmcHJpbnRmKG91dCwgXCJbJWQ6JXNdIHBlcmYgcmVjb3JkICVzXFxuXCIsXG4gXHRcdFx0XHRzZXNzaW9uLVx1MDAzZXBpZCwgc2Vzc2lvbi1cdTAwM2VuYW1lLCBzZXNzaW9uLVx1MDAzZXJ1bik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbmluZGV4IDU4NDFkNDNiZTk3MTg0Li4wNWYxOGQ0OWZjN2IxNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbkBAIC0xMzE5LDkgKzEzMTksOSBAQCBzdGF0aWMgdm9pZCBwcmludF9yZXN1bHQodm9pZClcbiBcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShrZXksIFx1MDAyNmxvY2tfa2V5cywgbGlzdCkge1xuIFx0XHRcdGtleS1cdTAwM2VwcmludChrZXksIHN0KTtcbi1cdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiBcIik7XG4rXHRcdFx0ZnB1dGMobG9ja19vdXRwdXQsICcgJyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAnXFxuJyk7XG4gXG4gXHRcdGlmICgrK3ByaW50ZWQgXHUwMDNlPSBwcmludF9ucl9lbnRyaWVzKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTE1OTgsNyArMTU5OCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9jc3YoY29uc3QgY2hhciAqc2VwKVxuIFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiVzJXMgJXNcIiwgXCJ0eXBlXCIsIHNlcCwgXCJjYWxsZXJcIik7XG4gXHRcdGlmICh2ZXJib3NlIFx1MDAzZSAwKVxuIFx0XHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMgJXNcIiwgc2VwLCBcInN0YWNrdHJhY2VcIik7XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcbicpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTE9DS19BR0dSX0FERFI6XG4gXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMlcyAlcyVzICVzXFxuXCIsIFwiYWRkcmVzc1wiLCBzZXAsIFwic3ltYm9sXCIsIHNlcCwgXCJ0eXBlXCIpO1xuQEAgLTE2MjksNyArMTYyOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9zdGRpbyhzdHJ1Y3QgbG9ja19jb250ZW50aW9uICpjb24sIHN0cnVjdCBsb2NrX3N0YXRcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoa2V5LCBcdTAwMjZsb2NrX2tleXMsIGxpc3QpIHtcbiBcdFx0a2V5LVx1MDAzZXByaW50KGtleSwgc3QpO1xuLVx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiBcIik7XG4rXHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAnICcpO1xuIFx0fVxuIFxuIFx0c3dpdGNoIChhZ2dyX21vZGUpIHtcbkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9sb2NrX3N0YXRfY3N2KHN0cnVjdCBsb2NrX2NvbnRlbnRpb24gKmNvbiwgc3RydWN0IGxvY2tfc3RhdCAqc1xuIFx0Y2FzZSBMT0NLX0FHR1JfQ0FMTEVSOlxuIFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiVzJXMgJXNcIiwgZ2V0X3R5cGVfZmxhZ3NfbmFtZShzdC1cdTAwM2VmbGFncyksIHNlcCwgc3QtXHUwMDNlbmFtZSk7XG4gXHRcdGlmICh2ZXJib3NlIFx1MDAzYz0gMClcbi1cdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIlxcblwiKTtcbitcdFx0XHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcbicpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTE9DS19BR0dSX1RBU0s6XG4gXHRcdHBpZCA9IHN0LVx1MDAzZWFkZHI7XG5AQCAtMTcyMSw3ICsxNzIxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfbG9ja19zdGF0X2NzdihzdHJ1Y3QgbG9ja19jb250ZW50aW9uICpjb24sIHN0cnVjdCBsb2NrX3N0YXQgKnNcbiBcdFx0XHRnZXRfc3ltYm9sX25hbWVfb2Zmc2V0KGttYXAsIHN5bSwgaXAsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuIFx0XHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMgJSNseCAlc1wiLCBpID8gXCI6XCIgOiBzZXAsICh1bnNpZ25lZCBsb25nKSBpcCwgYnVmKTtcbiBcdFx0fVxuLVx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIlxcblwiKTtcbitcdFx0ZnB1dGMobG9ja19vdXRwdXQsICdcXG4nKTtcbiBcdH1cbiB9XG4gXG5AQCAtMTc4MSw3ICsxNzgxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZm9vdGVyX2NzdihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlJPS0VOX01BWDsgaSsrKVxuIFx0XHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMgYmFkXyVzPSVkXCIsIHNlcCwgbmFtZVtpXSwgYmFkX2hpc3RbaV0pO1xuIFx0fVxuLVx0ZnByaW50Zihsb2NrX291dHB1dCwgXCJcXG5cIik7XG4rXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF9mb290ZXIoaW50IHRvdGFsLCBpbnQgYmFkLCBzdHJ1Y3QgbG9ja19jb250ZW50aW9uX2ZhaWxzICpmYWlscylcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmNcbmluZGV4IDlhYzI5YmRjM2NkNTQ3Li5lNjBjMDczMDVkMTk4YiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXG5AQCAtMjU2MSw3ICsyNTYxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19ldmVudChzdHJ1Y3QgcGVyZl9zY3JpcHQgKnNjcmlwdCxcbiBcbiBcdHBlcmZfc2FtcGxlX19mcHJpbnRmX2lwYyhzYW1wbGUsIGV2c2VsLCBmcCk7XG4gXG4tXHRmcHJpbnRmKGZwLCBcIlxcblwiKTtcbitcdGZwdXRjKGZwLCAnXFxuJyk7XG4gXG4gXHRpZiAoUFJJTlRfRklFTEQoU1JDQ09ERSkpIHtcbiBcdFx0aWYgKG1hcF9fZnByaW50Zl9zcmNjb2RlKGFsLVx1MDAzZW1hcCwgYWwtXHUwMDNlYWRkciwgc3Rkb3V0LFxuQEAgLTI4MTUsNyArMjgxNSw3IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19kZWZlcnJlZF9zYW1wbGVfZXZlbnQoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCxcbiBcdFx0XHRcdCAgICBjdXJzb3IsIHN5bWJvbF9jb25mLmJ0X3N0b3BfbGlzdCwgZnApO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFxuIFx0aWYgKHZlcmJvc2UgXHUwMDNlIDApXG4gXHRcdGZmbHVzaChmcCk7XG5AQCAtMzI3MSwxMSArMzI3MSwxMSBAQCBzdGF0aWMgaW50IGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYihzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqb3BzLCBjb25zdCBjaGFyICpzcFxuIFxuIHN0YXRpYyB2b2lkIGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlcyh2b2lkKVxuIHtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwiU2NyaXB0aW5nIGxhbmd1YWdlIGV4dGVuc2lvbnMgKHVzZWQgaW4gXCJcbiBcdFx0XCJwZXJmIHNjcmlwdCAtcyBbc3BlYzpdc2NyaXB0LltzcGVjXSk6XFxuXFxuXCIpO1xuIFx0c2NyaXB0X3NwZWNfX2Zvcl9lYWNoKFx1MDAyNmxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYik7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiB9XG4gXG4gLyogRmluZCBzY3JpcHQgZmlsZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeSBvciBleGVjIHBhdGggKi9cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbmluZGV4IGM0N2Y1YzM4NzgzOGM1Li4wMzdlYmM0N2Y3ZGNjYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5AQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiBcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4gXG5AQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIFx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiV2FybmluZzpcXG5cIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4gXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmMgYi90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuY1xuaW5kZXggOGM0Yzg5MjVkZjJjMjIuLjA0NGQyYWEzYjMxMjE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jXG5AQCAtNjkxLDcgKzY5MSw3IEBAIHN0YXRpYyBpbnQgaGlzdHNfX2ZwcmludGZfaGllcmFyY2h5X2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0fVxuIFxuIG5leHRfbGluZTpcbi1cdFx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGZwLCAnXFxuJyk7XG4gXHR9XG4gXG4gXHRmcHJpbnRmKGZwLCBcIiMgXCIpO1xuQEAgLTc4Myw3ICs3ODMsNyBAQCBoaXN0c19fZnByaW50Zl9zdGFuZGFyZF9oZWFkZXJzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRcdGlmIChsaW5lKVxuIFx0XHRcdGZwcmludGYoZnAsIFwiIyBcIik7XG4gXHRcdGZwcmludGZfbGluZShoaXN0cywgaHBwLCBsaW5lLCBmcCk7XG4tXHRcdGZwcmludGYoZnAsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhmcCwgJ1xcbicpO1xuIFx0fVxuIFxuIFx0aWYgKHNlcClcbkBAIC04MDYsMTAgKzgwNiwxMCBAQCBoaXN0c19fZnByaW50Zl9zdGFuZGFyZF9oZWFkZXJzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXG4gXHRcdHdpZHRoID0gZm10LVx1MDAzZXdpZHRoKGZtdCwgaHBwLCBoaXN0cyk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHdpZHRoOyBpKyspXG4tXHRcdFx0ZnByaW50ZihmcCwgXCIuXCIpO1xuK1x0XHRcdGZwdXRjKGZwLCAnLicpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFx0ZnByaW50ZihmcCwgXCIjXFxuXCIpO1xuIFx0cmV0dXJuIGhwcF9saXN0LVx1MDAzZW5yX2hlYWRlcl9saW5lcyArIDI7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uYyBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uY1xuaW5kZXggNWQwNjY0ZmY3M2I3OTEuLjhlMDk5Y2NhYWUzOWE2IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcbkBAIC04OTUsNyArODk1LDcgQEAgc3RhdGljIHZvaWQgY3NfZXRtX19kdW1wX2V2ZW50KHN0cnVjdCBjc19ldG1fcXVldWUgKmV0bXEsXG4gXHRjb25zdCBjaGFyICpjb2xvciA9IFBFUkZfQ09MT1JfQkxVRTtcbiBcdHNpemVfdCBidWZmZXJfdXNlZCA9IDA7XG4gXG4tXHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRwdXRjaGFyKCdcXG4nKTtcbiBcdGNvbG9yX2ZwcmludGYoc3Rkb3V0LCBjb2xvcixcbiBcdFx0ICAgICBcIi4gLi4uIENvcmVTaWdodCAlcyBUcmFjZSBkYXRhOiBzaXplICUjenggYnl0ZXNcXG5cIixcbiBcdFx0ICAgICBjc19ldG1fZGVjb2Rlcl9fZ2V0X25hbWUoZXRtcS1cdTAwM2VkZWNvZGVyKSwgYnVmZmVyLVx1MDAzZXNpemUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jIGIvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmNcbmluZGV4IDZiNWZmZTgxZjE0MTIxLi41NDI5OTg0YWI0OWM5MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvZGVidWcuY1xuQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIF9fZHVtcF9zdGFjayhGSUxFICpmaWxlLCB2b2lkICoqc3RhY2tkdW1wLCBzaXplX3Qgc3RhY2tkdW1wX3NpemUpXG4gXHRcdFx0ZnByaW50ZihmaWxlLCBcIiAgICAjJXpkICVwIFwiLCBpLCBzdGFja2R1bXBbaV0pO1xuIFxuIFx0XHRtYXBfX2ZwcmludGZfc3JjbGluZShhbC5tYXAsIGFsLmFkZHIsIFwiXCIsIGZpbGUpO1xuLVx0XHRmcHJpbnRmKGZpbGUsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhmaWxlLCAnXFxuJyk7XG4gXHRcdGFkZHJfbG9jYXRpb25fX2V4aXQoXHUwMDI2YWwpO1xuIFx0fVxuIFx0dGhyZWFkX19wdXQodGhyZWFkKTtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvaGVhZGVyLmMgYi90b29scy9wZXJmL3V0aWwvaGVhZGVyLmNcbmluZGV4IDA5MWQ4ZjdmNmJkMmM5Li45NjViMTdjODEyMjRiNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXG5AQCAtMjQ1NCw3ICsyNDU0LDcgQEAgc3RhdGljIHZvaWQgX19wcmludF9wbXVfY2FwcyhGSUxFICpmcCwgaW50IG5yX2NhcHMsIGNoYXIgKipjYXBzLCBjaGFyICpwbXVfbmFtZSlcbiBcdFx0ZGVsaW1pdGVyID0gXCIsIFwiO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF9jcHVfcG11X2NhcHMoc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcbkBAIC0yNTEzLDcgKzI1MTMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9wbXVfbWFwcGluZ3Moc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcbiBcdFx0cG11X251bS0tO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFxuIFx0aWYgKCFwbXVfbnVtKVxuIFx0XHRyZXR1cm47XG5AQCAtNDM0OSw3ICs0MzQ5LDcgQEAgaW50IHBlcmZfaGVhZGVyX19mcHJpbnRmX2luZm8oc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbiwgRklMRSAqZnAsIGJvb2wgZnVsbClcbiBcdFx0XHRmcHJpbnRmKGZwLCBcIiVzIFwiLCBmZWF0X29wc1tiaXRdLm5hbWUpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jIGIvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmNcbmluZGV4IGVmNTVkNjIzMmNmMGMyLi4wYTM1NDkzYjg1NGFjZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xuQEAgLTcwLDE0ICs3MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9kYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbiwgdWludDY0X3QgcG9zLFxuIFx0aW50IGk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpbmRlbnQ7IGkrKylcbi1cdFx0ZnByaW50ZihmLCBcIiBcIik7XG4rXHRcdGZwdXRjKGYsICcgJyk7XG4gXG4gXHRmcHJpbnRmKGYsIFwiICAlMDhcIiBQUkl4NjQgXCI6IFwiLCBwb3MpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpKyspXG4gXHRcdGZwcmludGYoZiwgXCIgJTAyeFwiLCBidWZbaV0pO1xuIFx0Zm9yICg7IGkgXHUwMDNjIDE2OyBpKyspXG4gXHRcdGZwcmludGYoZiwgXCIgICBcIik7XG4tXHRmcHJpbnRmKGYsIFwiIFwiKTtcbitcdGZwdXRjKGYsICcgJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X25vX2RhdGEodWludDY0X3QgcG9zLCBpbnQgaW5kZW50KVxuQEAgLTg1LDEyICs4NSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9ub19kYXRhKHVpbnQ2NF90IHBvcywgaW50IGluZGVudClcbiBcdGludCBpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaW5kZW50OyBpKyspXG4tXHRcdGZwcmludGYoZiwgXCIgXCIpO1xuK1x0XHRmcHV0YyhmLCAnICcpO1xuIFxuIFx0ZnByaW50ZihmLCBcIiAgJTA4XCIgUFJJeDY0IFwiOiBcIiwgcG9zKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDE2OyBpKyspXG4gXHRcdGZwcmludGYoZiwgXCIgICBcIik7XG4tXHRmcHJpbnRmKGYsIFwiIFwiKTtcbitcdGZwdXRjKGYsICcgJyk7XG4gfVxuIFxuIHN0YXRpYyBzc2l6ZV90IGxvZ19idWZfX3dyaXRlKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvbGliYmZkLmMgYi90b29scy9wZXJmL3V0aWwvbGliYmZkLmNcbmluZGV4IGMxYzEyMzA4Y2MxMmZmLi4yNjM4OTQ2NjNmMWE4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9saWJiZmQuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXG5AQCAtNjAzLDcgKzYwMyw3IEBAIGludCBzeW1ib2xfX2Rpc2Fzc2VtYmxlX2JwZl9saWJiZmQoc3RydWN0IHN5bWJvbCAqc3ltIF9fbWF5YmVfdW51c2VkLFxuIFx0XHR9IGVsc2VcbiBcdFx0XHRzcmNsaW5lID0gTlVMTDtcbiBcbi1cdFx0ZnByaW50ZihzLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMocywgJ1xcbicpO1xuIFx0XHRwcmV2X2J1Zl9zaXplID0gYnVmX3NpemU7XG4gXHRcdGZmbHVzaChzKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc2Vzc2lvbi5jIGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuaW5kZXggZjM5MWE4MjI0ODBkYjAuLjYzYThkM2NjYWE0ZjljIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuQEAgLTEyNTcsNyArMTI1Nyw3IEBAIGludCBwZXJmX2V2ZW50X19wcm9jZXNzX2ZpbmlzaGVkX3JvdW5kKGNvbnN0IHN0cnVjdCBwZXJmX3Rvb2wgKnRvb2wgX19tYXliZV91bnVzXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IG9yZGVyZWRfZXZlbnRzICpvZSlcbiB7XG4gXHRpZiAoZHVtcF90cmFjZSlcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwiXFxuXCIpO1xuK1x0XHRwdXRjaGFyKCdcXG4nKTtcbiBcdHJldHVybiBvcmRlcmVkX2V2ZW50c19fZmx1c2gob2UsIE9FX0ZMVVNIX19ST1VORCk7XG4gfVxuIFxuQEAgLTQwMDAsNyArNDAwMCw3IEBAIGludCBwZXJmX2V2ZW50X19wcm9jZXNzX2lkX2luZGV4KGNvbnN0IHN0cnVjdCBwZXJmX3Rvb2wgKnRvb2wgX19tYXliZV91bnVzZWQsXG4gXHRcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCIgIG1hY2hpbmVfcGlkOiAlXCJQUklfbGQ2NCwgZTItXHUwMDNlbWFjaGluZV9waWQpO1xuIFx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwiICB2Y3B1OiAlXCJQUklfbHU2NFwiXFxuXCIsIGUyLVx1MDAzZXZjcHUpO1xuIFx0XHRcdH0gZWxzZSB7XG4tXHRcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRcdFx0XHRwdXRjaGFyKCdcXG4nKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmMgYi90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcbmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jXG5AQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X21ldHJpY19qc29uKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcgX19tYXliZV91bnVzZWQsXG4gXHRcdH1cbiBcdH1cbiBcdGlmICghY29uZmlnLVx1MDAzZW1ldHJpY19vbmx5KVxuLVx0XHRmcHJpbnRmKG91dCwgXCJ9XCIpO1xuK1x0XHRmcHV0YyhvdXQsICd9Jyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5ld19saW5lX2pzb24oc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgdm9pZCAqY3R4KVxuQEAgLTEzMTYsNyArMTMxNiw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9zdGQoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZyxcbiBcdEZJTEUgKm91dHB1dCA9IGNvbmZpZy1cdTAwM2VvdXRwdXQ7XG4gXHRpbnQgaTtcbiBcbi1cdGZwcmludGYob3V0cHV0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dHB1dCwgJ1xcbicpO1xuIFx0ZnByaW50ZihvdXRwdXQsIFwiIFBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdHMgZm9yIFwiKTtcbiBcdGlmIChfdGFyZ2V0LVx1MDAzZWJwZl9zdHIpXG4gXHRcdGZwcmludGYob3V0cHV0LCBcIlxcJ0JQRiBwcm9ncmFtKHMpICVzXCIsIF90YXJnZXQtXHUwMDNlYnBmX3N0cik7XG5AQCAtMTMzMyw3ICsxMzMzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX3N0ZChzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnLFxuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKG91dHB1dCwgXCJ0aHJlYWQgaWQgXFwnJXNcIiwgX3RhcmdldC1cdTAwM2V0aWQpO1xuIFxuLVx0ZnByaW50ZihvdXRwdXQsIFwiXFwnXCIpO1xuK1x0ZnB1dGMob3V0cHV0LCAnXFwnJyk7XG4gXHRpZiAoY29uZmlnLVx1MDAzZXJ1bl9jb3VudCBcdTAwM2UgMSlcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwiICglZCBydW5zKVwiLCBjb25maWctXHUwMDNlcnVuX2NvdW50KTtcbiBcdGZwcmludGYob3V0cHV0LCBcIjpcXG5cXG5cIik7XG5AQCAtMTQwNiw5ICsxNDA2LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFibGUoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgRklMRSAqb3V0cHV0LCBkb3VibGUgYXZcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwiICUxNy45ZiAoJSsuOWYpIFwiLCBydW4sIHJ1biAtIGF2Zyk7XG4gXG4gXHRcdGZvciAoaCA9IDA7IGggXHUwMDNjIG47IGgrKylcbi1cdFx0XHRmcHJpbnRmKG91dHB1dCwgXCIjXCIpO1xuK1x0XHRcdGZwdXRjKG91dHB1dCwgJyMnKTtcbiBcbi1cdFx0ZnByaW50ZihvdXRwdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXRwdXQsICdcXG4nKTtcbiBcdH1cbiBcbiBcdGZwcmludGYob3V0cHV0LCBcIlxcbiUqcyMgRmluYWwgcmVzdWx0OlxcblwiLCBpbmRlbnQsIFwiXCIpO1xuQEAgLTE0MjgsNyArMTQyOCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoIWNvbmZpZy1cdTAwM2VudWxsX3J1bilcbi1cdFx0ZnByaW50ZihvdXRwdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXRwdXQsICdcXG4nKTtcbiBcbiBcdGlmIChjb25maWctXHUwMDNlcnVuX2NvdW50ID09IDEpIHtcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwiICUxNy45ZiBzZWNvbmRzIHRpbWUgZWxhcHNlZFwiLCBhdmcpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuY1xuaW5kZXggNmVhZGRmY2Y4MzNlNTIuLjJjNTM0MGE5MjhkZDFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3ZhbHVlcy5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcbkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9yZWFkX3ZhbHVlc19fZGlzcGxheV9wcmV0dHkoRklMRSAqZnAsXG4gXHRmcHJpbnRmKGZwLCBcIiMgJSpzICAlKnNcIiwgcGlkd2lkdGgsIFwiUElEXCIsIHRpZHdpZHRoLCBcIlRJRFwiKTtcbiBcdGZvciAoaiA9IDA7IGogXHUwMDNjIHZhbHVlcy1cdTAwM2VudW1fY291bnRlcnM7IGorKylcbiBcdFx0ZnByaW50ZihmcCwgXCIgICUqc1wiLCBjb3VudGVyd2lkdGhbal0sIGV2c2VsX19uYW1lKHZhbHVlcy1cdTAwM2Vjb3VudGVyc1tqXSkpO1xuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmFsdWVzLVx1MDAzZXRocmVhZHM7IGkrKykge1xuIFx0XHRmcHJpbnRmKGZwLCBcIiAgJSpkICAlKmRcIiwgcGlkd2lkdGgsIHZhbHVlcy1cdTAwM2VwaWRbaV0sXG5AQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB2YWx1ZXMtXHUwMDNlbnVtX2NvdW50ZXJzOyBqKyspXG4gXHRcdFx0ZnByaW50ZihmcCwgXCIgICUqXCIgUFJJdTY0LFxuIFx0XHRcdFx0Y291bnRlcndpZHRoW2pdLCB2YWx1ZXMtXHUwMDNldmFsdWVbaV1bal0pO1xuLVx0XHRmcHJpbnRmKGZwLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoZnAsICdcXG4nKTtcbiBcdH1cbiBcdGZyZWUoY291bnRlcndpZHRoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuYyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbmluZGV4IDcyYWQ3OTE1YjA0ZmQyLi42MDBkNWI2ZTA0YTg4MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbisrKyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbkBAIC0xNzEsNyArMTcxLDcgQEAgYXBfZHVtcF90YWJsZV9idWZmZXIoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSxcbiBcdGFjcGlfdXRfZHVtcF9idWZmZXJfdG9fZmlsZShnYmxfb3V0cHV0X2ZpbGUsXG4gXHRcdFx0XHQgICAgQUNQSV9DQVNUX1BUUih1OCwgdGFibGUpLCB0YWJsZV9sZW5ndGgsXG4gXHRcdFx0XHQgICAgREJfQllURV9ESVNQTEFZLCAwKTtcbi1cdGZwcmludGYoZ2JsX291dHB1dF9maWxlLCBcIlxcblwiKTtcbitcdGZwdXRjKGdibF9vdXRwdXRfZmlsZSwgJ1xcbicpO1xuIFx0cmV0dXJuICgwKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXG4gXHRpZiAobGV2ZWwgPT0gMCkge1xuIFx0XHRpZiAoaGVhZGVyKVxuLVx0XHRcdGZwcmludGYob3V0ZiwgXCJ7XCIpO1xuK1x0XHRcdGZwdXRjKG91dGYsICd7Jyk7XG4gXHRcdGVsc2VcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxufVxcblwiKTtcbiBcbkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXG4gXHRcdGlmICh2YWx1ZSkge1xuIFx0XHRcdGlmIChsYXN0X2xldmVsICE9IGxldmVsKVxuLVx0XHRcdFx0ZnByaW50ZihvdXRmLCBcIlxcblwiKTtcbitcdFx0XHRcdGZwdXRjKG91dGYsICdcXG4nKTtcbiBcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwiJXNcXFwiJXNcXFwiOiBcIiwgZGVsaW1pdGVycywgaGVhZGVyKTtcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxcIiVzXFxcIlwiLCB2YWx1ZSk7XG5AQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKVxuIFx0XHRcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxuJXN9XCIsIGRlbGltaXRlcnMpO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAoYWJzKGxhc3RfbGV2ZWwgLSBsZXZlbCkgXHUwMDNjIDMpXG4tXHRcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxuXCIpO1xuK1x0XHRcdFx0ZnB1dGMob3V0ZiwgJ1xcbicpO1xuIFx0XHRcdGlmIChoZWFkZXIpXG4gXHRcdFx0XHRmcHJpbnRmKG91dGYsIFwiJXNcXFwiJXNcXFwiOiB7XCIsIGRlbGltaXRlcnMsXG4gXHRcdFx0XHRcdGhlYWRlcik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcbmluZGV4IDkyMDY5NGMzYzFlYzk0Li40NWQzOWEwZmNmNzJhMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcbisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcbkBAIC05MDk5LDcgKzkwOTksNyBAQCB2b2lkIGR1bXBfY3B1aWRfaHlwZXJ2aXNvcih2b2lkKVxuIFx0ZHVtcF93b3JkX2NoYXJzKGVieCk7XG4gXHRkdW1wX3dvcmRfY2hhcnMoZWN4KTtcbiBcdGR1bXBfd29yZF9jaGFycyhlZHgpO1xuLVx0ZnByaW50ZihvdXRmLCBcIlxcblwiKTtcbitcdGZwdXRjKG91dGYsICdcXG4nKTtcbiB9XG4gXG4gdm9pZCBwcm9jZXNzX2NwdWlkKClcbkBAIC05NzQ5LDcgKzk3NDksNyBAQCB2b2lkIHRvcG9sb2d5X3Byb2JlKGJvb2wgc3RhcnR1cClcbiBcdFx0ZnByaW50ZihvdXRmLCBcIiBzaWJsaW5nc1wiKTtcbiBcdFx0Zm9yIChodF9pZCA9IDA7IGh0X2lkIFx1MDAzYz0gTUFYX0hUX0lEOyArK2h0X2lkKVxuIFx0XHRcdGZwcmludGYob3V0ZiwgXCIgJWRcIiwgY3B1c1tpXS5odF9zaWJsaW5nX2NwdV9pZFtodF9pZF0pO1xuLVx0XHRmcHJpbnRmKG91dGYsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXRmLCAnXFxuJyk7XG4gXHR9XG4gXG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uY1xuaW5kZXggMWVlMjE3ZDk3NDM0MGUuLjY0Yjk3YTQxYWY0NWVhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmNcbkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBodGFiX21lbV91c2VfY2FzZSAqaHRhYl9tZW1fZmluZF91c2VfY2FzZV9vcl9leGl0KGNvbnN0IGNoYXJcbiBcdGZwcmludGYoc3RkZXJyLCBcImF2YWlsYWJsZSB1c2UgY2FzZTpcIik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHVzZV9jYXNlcyk7IGkrKylcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiICVzXCIsIHVzZV9jYXNlc1tpXS5uYW1lKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZXhpdCgxKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXG5pbmRleCAzNTU4ZmUxMGUyOGNmOS4uNThlYTJhMmVjMTNlMmQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuY1xuQEAgLTIyOCw3ICsyMjgsNyBAQCBpbnQgZ2V0X2ppdGVkX3Byb2dyYW1fdGV4dChpbnQgZmQsIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X3N6KVxuIFx0Zm9yIChwYyA9IDAsIGkgPSAwOyBpIFx1MDAzYyBqaXRlZF9mdW5jczsgKytpKSB7XG4gXHRcdGZwcmludGYodGV4dF9vdXQsIFwiZnVuYyAjJWQ6XFxuXCIsIGkpO1xuIFx0XHRkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICsgcGMsIGZ1bmNfbGVuc1tpXSk7XG4tXHRcdGZwcmludGYodGV4dF9vdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0Yyh0ZXh0X291dCwgJ1xcbicpO1xuIFx0XHRwYyArPSBmdW5jX2xlbnNbaV07XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcbmluZGV4IDdiYTgyOTc0ZWU3ODRkLi5iNTIwYmUxYmY3YWFhNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcbkBAIC0zODMsNyArMzgzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGVzdF9yZXN1bHQoY29uc3Qgc3RydWN0IHByb2dfdGVzdF9kZWYgKnRlc3QsIGNvbnN0IHN0cnVjdCB0ZXNcbiBcdGVsc2VcbiBcdFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcIk9LIChTS0lQOiAlZC8lZClcIiwgc2tpcHBlZF9jbnQsIHN1YnRlc3RzX2NudCk7XG4gXG4tXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF90ZXN0X2xvZyhjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcbkBAIC0zOTEsNyArMzkxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGVzdF9sb2coY2hhciAqbG9nX2J1Ziwgc2l6ZV90IGxvZ19jbnQpXG4gXHRsb2dfYnVmW2xvZ19jbnRdID0gJ1xcMCc7XG4gXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiJXNcIiwgbG9nX2J1Zik7XG4gXHRpZiAobG9nX2J1Zltsb2dfY250IC0gMV0gIT0gJ1xcbicpXG4tXHRcdGZwcmludGYoZW52LnN0ZG91dF9zYXZlZCwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICdcXG4nKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcHJpbnRfc3VidGVzdF9uYW1lKGludCB0ZXN0X251bSwgaW50IHN1YnRlc3RfbnVtLFxuQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9zdWJ0ZXN0X25hbWUoaW50IHRlc3RfbnVtLCBpbnQgc3VidGVzdF9udW0sXG4gXHRpZiAocmVzdWx0KVxuIFx0XHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiOiVzXCIsIHJlc3VsdCk7XG4gXG4tXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBqc29ud193cml0ZV9sb2dfbWVzc2FnZShqc29uX3dyaXRlcl90ICp3LCBjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcbkBAIC0xMzMzLDE0ICsxMzMzLDE0IEBAIHZvaWQgaGV4ZHVtcChjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbilcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBsZW47IGkrKykge1xuIFx0XHRpZiAoIShpICUgMTYpKSB7XG4gXHRcdFx0aWYgKGkpXG4tXHRcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRcdFx0XHRwdXRjaGFyKCdcXG4nKTtcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCIlc1wiLCBwcmVmaXgpO1xuIFx0XHR9XG4gXHRcdGlmIChpIFx1MDAyNlx1MDAyNiAhKGkgJSA4KSBcdTAwMjZcdTAwMjYgKGkgJSAxNikpXG4tXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwiXFx0XCIpO1xuK1x0XHRcdHB1dGNoYXIoJ1xcdCcpO1xuIFx0XHRmcHJpbnRmKHN0ZG91dCwgXCIlMDJYIFwiLCAoKHVpbnQ4X3QgKikoYnVmKSlbaV0pO1xuIFx0fVxuLVx0ZnByaW50ZihzdGRvdXQsIFwiXFxuXCIpO1xuK1x0cHV0Y2hhcignXFxuJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYTdkYjZmMDRmN2UxNDUuLmQxYzdmMDZiOGIxY2Y5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5AQCAtMTYwNSw3ICsxNjA1LDcgQEAgc3RhdGljIHZvaWQgZHVtcChfX3UzMiBwcm9nX2lkLCBlbnVtIGR1bXBfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnNcbiBcdHByaW50ZihcIkRVTVAgKCVzKSAlcy8lczpcXG5cIiwgbW9kZSA9PSBEVU1QX0pJVEVEID8gXCJKSVRFRFwiIDogXCJYTEFURURcIiwgZmlsZV9uYW1lLCBwcm9nX25hbWUpO1xuIFx0d2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSlcbiBcdFx0ZnB1dHMoYnVmLCBzdGRvdXQpO1xuLVx0ZnByaW50ZihzdGRvdXQsIFwiXFxuXCIpO1xuK1x0cHV0Y2hhcignXFxuJyk7XG4gXG4gXHRpZiAoZmVycm9yKGZwKSlcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiRmFpbGVkIHRvIGR1bXAgQlBGIHByb2cgd2l0aCBlcnJvcjogJWRcXG5cIiwgZXJybm8pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXG5pbmRleCBkOTZlOGEzYjVhNjUyNi4uN2JkY2M0MTE0ZGJhMWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXG5AQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB2b2lkIHByX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcbiBcdGlmIChlcnJubyAhPSAwKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCI6ICVzXCIsIHN0cmVycm9yKGVycm5vKSk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBtZW1vcnlfYnVmZmVyICp1ZG1hYnVmX2FsbG9jKHNpemVfdCBzaXplKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXG5pbmRleCBjNzgwNWU4N2QxMmM1ZC4uMTIwODM0ZjhiYTBkYTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXG5AQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfc2soY29uc3QgdW5zaWduZWQgY2hhciBza2V5c1tdLCBjb25zdCBjaGFyICpkZXNjcilcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiIyAlM2Q6IFwiLCBpKTtcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgMzI7IGorKylcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIlMDJ4IFwiLCBza2V5c1tpICsgal0pO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0fVxuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmNcbmluZGV4IDc4MTgwZGExZWZjYzUzLi40MDQ2N2U4NmJmZDQ3YiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXG5AQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBpbnQgY2FwdHVyZV9ldmVudHMoaW50IGZkLCBpbnQgZXZlbnRfZ3JvdXApXG4gXHRcdH1cbiBcdFx0aWYgKHNlcnZlcl9zaWRlKVxuIFx0XHRcdGZwcmludGYoc3RkZXJyLCBcIixzZXJ2ZXJfc2lkZToxXCIpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0fSB3aGlsZSAoMSk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuY1xuaW5kZXggN2NhZjMxMzU0NDhkYTcuLjcyNGRhOTIyMmFkOWEwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuY1xuQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IHBmc29ja2V0KGludCB2ZXIpXG4gc3RhdGljIHZvaWQgc3RhdHVzX2Jhcl91cGRhdGUodm9pZClcbiB7XG4gXHRpZiAodG90YWxfcGFja2V0cyAlIDEwID09IDApIHtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwiLlwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnLicpO1xuIFx0XHRmZmx1c2goc3RkZXJyKTtcbiBcdH1cbiB9XG5AQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRpYyBpbnQgdGVzdF90cGFja2V0KGludCB2ZXJzaW9uLCBpbnQgdHlwZSlcbiBcdHVubWFwX3Jpbmcoc29jaywgXHUwMDI2cmluZyk7XG4gXHRjbG9zZShzb2NrKTtcbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmNcbmluZGV4IDE3MGJlMTkyZjVjN2NlLi44NmM4ZDQ5NDVkNzNjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xuQEAgLTIwMCwxMCArMjAwLDEwIEBAIHN0YXRpYyB2b2lkIF9fcHJpbnRfdGltZXN0YW1wKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB0aW1lc3BlYyAqY3VyLFxuIFx0XHR0c19kZWx0YSA9IHRpbWVzcGVjX3RvX25zNjQoY3VyKSAtIHRpbWVzcGVjX3RvX25zNjQoXHUwMDI2dHNfdXNyKTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiICAoVVNSICtcIik7XG4gXHRcdF9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRzX2RlbHRhKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwiKVwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnKScpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJlY29yZF90aW1lc3RhbXBfdXNyKHZvaWQpXG5AQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3RpbWluZ19ldmVudChjaGFyICpuYW1lLCBzdHJ1Y3QgdGltaW5nX2V2ZW50ICp0ZSlcbiBcdF9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRlLVx1MDAzZW1pbik7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIsIG1heD1cIik7XG4gXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cdTAwM2VtYXgpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gfVxuIFxuIC8qIFRPRE86IGNvbnZlcnQgdG8gY2hlY2tfYW5kX3ByaW50IHBheWxvYWQgb25jZSBBUEkgaXMgc3RhYmxlICovXG5AQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3BheWxvYWQoY2hhciAqZGF0YSwgaW50IGxlbilcbiBcdGZwcmludGYoc3RkZXJyLCBcInBheWxvYWQ6IFwiKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSsrKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIlMDJoaHggXCIsIGRhdGFbaV0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcilcbkBAIC05MzMsNyArOTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0ZnByaW50ZihzdGRlcnIsIFwicHJvdG9jb2w6ICAgICAlc1xcblwiLCBzb2NrX25hbWVzW2NmZ19wcm90b10pO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwicGF5bG9hZDogICAgICAldVxcblwiLCBjZmdfcGF5bG9hZF9sZW4pO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwic2VydmVyIHBvcnQ6ICAldVxcblwiLCBkZXN0X3BvcnQpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXG4gXHRpZiAoZG9faXB2NCkge1xuIFx0XHRpZiAoY2ZnX2RvX2xpc3RlbilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcbmluZGV4IDdjMjNkM2RkN2Q2ZDkxLi40MTJkZWZlOTgyNzE0MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcG93ZXJwYy9ueC1nemlwL2d1bnpfdGVzdC5jXG5AQCAtMzYzLDcgKzM2Myw3IEBAIGludCBkZWNvbXByZXNzX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCB2b2lkICpkZXZoYW5kbGUpXG4gXHRcdFx0Z290byBlcnIzO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIlMDJ4IFwiLCB0bXBbaV0pO1xuIFx0XHRpZiAoaSA9PSA1KVxuLVx0XHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdH1cbiBcdGZwcmludGYoc3RkZXJyLCBcImd6SGVhZGVyIE1USU1FLCBYRkwsIE9TIGlnbm9yZWRcXG5cIik7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oXG5pbmRleCA3N2I2OGM3MTI5YTY0OC4uODIwMTViMTlkZjZjMzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxuQEAgLTEwLDcgKzEwLDcgQEBcbiBcbiAjZGVmaW5lIFZGSU9fTE9HX0FORF9FWElUKC4uLikgZG8ge1x0XHRcXFxuIFx0ZnByaW50ZihzdGRlcnIsIFwiICBcIiBfX1ZBX0FSR1NfXyk7XHRcXFxuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1x0XHRcdFxcXG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcdFx0XHRcXFxuIFx0ZXhpdChLU0ZUX0ZBSUwpO1x0XHRcdFxcXG4gfSB3aGlsZSAoMClcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmNcbmluZGV4IDNhM2QxZWQ2MzVjMWRmLi44MGEzMTJmMTQ5YTY2ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2xpYnZmaW8uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXG5AQCAtNjAsMTYgKzYwLDE2IEBAIGNoYXIgKip2ZmlvX3NlbGZ0ZXN0c19nZXRfYmRmcyhpbnQgKmFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50ICpucl9iZGZzKVxuIFx0fVxuIFxuIFx0ZnByaW50ZihzdGRlcnIsIFwiVW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBkZXZpY2UocykgdG8gdXNlLCBza2lwcGluZyB0ZXN0LlxcblwiKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwiVG8gcGFzcyB0aGUgZGV2aWNlIGFkZHJlc3MgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlOlxcblwiKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwiICAgIGV4cG9ydCBWRklPX1NFTEZURVNUU19CREY9XFxcInNlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvblxcXCJcXG5cIik7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIgICAgJXMgW29wdGlvbnNdXFxuXCIsIGFyZ3ZbMF0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCJUbyBwYXNzIHRoZSBkZXZpY2UgYWRkcmVzcyhlcykgdmlhIGFyZ3Y6XFxuXCIpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIgICAgJXMgW29wdGlvbnNdIHNlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvbiAuLi5cXG5cIiwgYXJndlswXSk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdGV4aXQoS1NGVF9TS0lQKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbmluZGV4IDA4MWUwNDVmNDY5NjBlLi5jYzkwM2NkYjQ1ZDkyZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX2FkZHIoRklMRSAqZnAsIHVuc2lnbmVkIGludCBjaWQsIHVuc2lnbmVkIGludCBwb3J0KVxuIFx0XHRmcHJpbnRmKGZwLCBcIiV1OlwiLCBjaWQpO1xuIFxuIFx0aWYgKHBvcnQgPT0gVk1BRERSX1BPUlRfQU5ZKVxuLVx0XHRmcHJpbnRmKGZwLCBcIipcIik7XG4rXHRcdGZwdXRjKGZwLCAnKicpO1xuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKGZwLCBcIiV1XCIsIHBvcnQpO1xuIH1cbkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX2FkZHIoRklMRSAqZnAsIHVuc2lnbmVkIGludCBjaWQsIHVuc2lnbmVkIGludCBwb3J0KVxuIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX3N0YXQoRklMRSAqZnAsIHN0cnVjdCB2c29ja19zdGF0ICpzdClcbiB7XG4gXHRwcmludF92c29ja19hZGRyKGZwLCBzdC1cdTAwM2Vtc2cudmRpYWdfc3JjX2NpZCwgc3QtXHUwMDNlbXNnLnZkaWFnX3NyY19wb3J0KTtcbi1cdGZwcmludGYoZnAsIFwiIFwiKTtcbitcdGZwdXRjKGZwLCAnICcpO1xuIFx0cHJpbnRfdnNvY2tfYWRkcihmcCwgc3QtXHUwMDNlbXNnLnZkaWFnX2RzdF9jaWQsIHN0LVx1MDAzZW1zZy52ZGlhZ19kc3RfcG9ydCk7XG4gXHRmcHJpbnRmKGZwLCBcIiAlcyAlcyAlcyAldVxcblwiLFxuIFx0XHRzb2NrX3R5cGVfc3RyKHN0LVx1MDAzZW1zZy52ZGlhZ190eXBlKSxcbmRpZmYgLS1naXQgYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jXG5pbmRleCBjYjExMDhiYzkyNDk4OS4uZWJkYjk1ODE5YTc2NmQgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuY1xuKysrIGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcbkBAIC01MjIsNyArNTIyLDcgQEAgaW50IHVwZGF0ZV90aGVybWFsX2RhdGEoKVxuIFx0fVxuIFxuIFx0aWYgKHRtb25fbG9nKSB7XG4tXHRcdGZwcmludGYodG1vbl9sb2csIFwiXFxuXCIpO1xuK1x0XHRmcHV0Yyh0bW9uX2xvZywgJ1xcbicpO1xuIFx0XHRmZmx1c2godG1vbl9sb2cpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmMgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5pbmRleCA3ZWIzMjE2YTI3ZjQ1Zi4uOWE5NzJmNzNhMmMwMDUgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG4rKysgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5AQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfbG9nZ2luZyh2b2lkKVxuIFx0XHRmcHJpbnRmKHRtb25fbG9nLCBcIiVzJWQgXCIsIHB0ZGF0YS5jZGlbaV0udHlwZSxcbiBcdFx0XHRwdGRhdGEuY2RpW2ldLmluc3RhbmNlKTtcbiBcbi1cdGZwcmludGYodG1vbl9sb2csIFwiXFxuXCIpO1xuK1x0ZnB1dGModG1vbl9sb2csICdcXG4nKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jIGIvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmNcbmluZGV4IGVmOTc5MTZlMzg3M2ExLi4zZGM2ZmI5ZGY5MjY4MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXG4rKysgYi90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuY1xuQEAgLTE5OTksNyArMTk5OSw3IEBAIHN0YXRpYyB2b2lkIHNjYW5fYXJndW1lbnRzKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXCJiZWVuIGVuYWJsZWQuIFJhbmRvbSBzbGVlcCBpcyBpbnRlbmRlZCBmb3IgdGhlIGZvbGxvd2luZyB0cmFjZXJzOlxcblwiKTtcbiBcdFx0XHRmb3IgKGkgPSAwOyByYW5kb21fdHJhY2Vyc1tpXTsgaSsrKVxuIFx0XHRcdFx0ZnByaW50ZihzdGRlcnIsIFwiJXNcXG5cIiwgcmFuZG9tX3RyYWNlcnNbaV0pO1xuLVx0XHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdFx0fVxuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jXG5pbmRleCA4YzdmNWU3NWIyZWM4ZC4uZTgxZTY3NmQ1MWQyYWQgMTAwNjQ0XG4tLS0gYS90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jXG4rKysgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsXG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIiVzIFstaF0gXCIsIG1vZGUpO1xuIFxuIFx0cHJpbnRfbXNnX2FycmF5KHN0YXJ0X21zZ3MpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHRwcmludF9tc2dfYXJyYXkoY29tbW9uX29wdGlvbnMpO1xuIFx0cHJpbnRfbXNnX2FycmF5KG9wdF9tc2dzKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmNcbmluZGV4IGNiMTg3ZTdkNDhkMWMyLi4zNTMyZGEyZjIyOTZkOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xuKysrIGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jXG5AQCAtNjcsNyArNjcsNyBAQCB2b2lkIGZhdGFsKGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFx0dmFfc3RhcnQoYXAsIGZtdCk7XG4gXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xuIFx0dmFfZW5kKGFwKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFxuIFx0ZXhpdChFUlJPUik7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3VzYi9mZnMtdGVzdC5jIGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmNcbmluZGV4IDIyYjkzOGZiZGZiNzcyLi5lOTkzNzM2YmEwZDY0NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXG4rKysgYi90b29scy91c2IvZmZzLXRlc3QuY1xuQEAgLTU2Miw3ICs1NjIsNyBAQCBlbXB0eV9vdXRfYnVmKHN0cnVjdCB0aHJlYWQgKmlnbm9yZSwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbmJ5dGVzKVxuIFx0XHRcdFx0ZnByaW50ZihzdGRlcnIsIFwiJTR6ZDpcIiwgbGVuKTtcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIgJTAyeFwiLCAqcCk7XG4gXHRcdFx0aWYgKDMxID09IChsZW4gJSAzMikpXG4tXHRcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdFx0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdFx0fVxuIFx0XHRmZmx1c2goc3RkZXJyKTtcbiBcdFx0ZXJybm8gPSBFSUxTRVE7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcbmluZGV4IGU2ZGVhNDA0MGY4ZjRjLi4yNjEzMjE3MWY2MDA4ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcbisrKyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcbkBAIC02NjcsNyArNjY3LDcgQEAgc3RhdGljIHZvaWQgaWttX3VzYWdlX3ByaW50X3JlYWN0b3JzKHZvaWQpXG4gXHRcdGVuZCA9IHN0cnN0cihzdGFydCwgXCJcXG5cIik7XG4gXHR9XG4gXG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiB9XG4gLypcbiAgKiBpa21fdXNhZ2UgLSBwcmludCB1c2FnZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjI6MzY6MDUuNzkwNjI5NTE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMzAxODY2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbjogV29ydGhGdXp6aW5nPWZhbHNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgYmVlbiBwcm9wb3NlZC4gSXQgc2VlbXMgbGlrZSBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50IG9mIGBmcHJpbnRmKC4uLiwgXCJcXG5cIilgIHdpdGggZWl0aGVyIGBmcHV0YyguLi4sICdcXG4nKWAgb3IgYHB1dGNoYXIoJ1xcbicpYC4gSXQncyBoYXBwZW5pbmcgYWNyb3NzIGEgYnVuY2ggb2YgZmlsZXMsIGJ1dCB0aGV5J3JlIGFsbCBsb2NhdGVkIHdpdGhpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5LiBUaGF0J3MgYSBrZXkgaW5kaWNhdG9yIHJpZ2h0IHRoZXJlIOKAkyBgdG9vbHMvYCBpcyBmb3IgdXNlci1zcGFjZSB1dGlsaXRpZXMsIG5vdCBrZXJuZWwtbGV2ZWwgY29kZS4gVGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBhIGNoYW5nZSB0byBhbnl0aGluZyB0aGF0IHJ1bnMgZGlyZWN0bHkgaW4gdGhlIGtlcm5lbCBpdHNlbGYuXG5cbkkgbmVlZCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSd2ZSB0YWtlbiBhIHF1aWNrIHNjYW4gb2YgdGhlIG1vZGlmaWVkIGZpbGVzOiBgYnBmdG9vbGAsIHZhcmlvdXMgR1BJTyB0b29scywgcGVyZiB1dGlsaXRpZXMsIGBhY3BpZHVtcGAsIGB0dXJib3N0YXRgLCBCUEYgc2VsZnRlc3RzLCBLVk0gc2VsZnRlc3RzLCBhbmQgb3RoZXJzLiBUaGUgZmlsZSBsaXN0IGNvbmZpcm1zIG15IGluaXRpYWwgaHVuY2guIFRoZXNlIGFyZSBhbGwgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdGluZyBmcmFtZXdvcmtzLiBJIGRvbid0IHNlZSBhbnl0aGluZyB0b3VjaGluZyBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXRpZXMgb3IgZHJpdmVycy5cblxuU2luY2UgdGhpcyBpcyBwdXJlbHkgYSBjb3NtZXRpYyBjaGFuZ2UgdG8gdGhlIG91dHB1dCBvZiB1c2VyLXNwYWNlIHRvb2xz4oCUbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxm4oCUaXQgc2hvdWxkbid0IGJlIGZ1enplZC4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIE5vIGtlcm5lbCBsb2dpYyBpcyBpbnZvbHZlZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY4MSwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIyOjM2OjE1LjgyMDgxODcyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowksvrk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 22:14:35 +0000 UTC FinishedAt: 2026-07-25 22:36:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIyOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjI6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNThmY2UwNDA1Y2UxYzU0ODEwZDZjNTVkNWVhZDExODkwN2UwZGUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMjI6MzY6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmMgYi90b29scy9icGYvYnBmdG9vbC9jb21tb24uY1xuaW5kZXggOGJmY2ZmOWUyZjYzOTQuLjc2YWJkM2Y0ZmJjYmM1IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXG5AQCAtNTMsNyAmIzQzOzUzLDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtFcnJvcjogXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFx0dmFfZW5kKGFwKTtcbiB9XG5AQCAtNjcsNyAmIzQzOzY3LDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXG4gXHR2YV9zdGFydChhcCwgZm10KTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0dmFfZW5kKGFwKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvbWFpbi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvbWFpbi5jXG5pbmRleCBjOTFlMWE2ZTFhMWVjYS4uYWVjZmM3Nzg2MjVmNzEgMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uY1xuQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgdm9pZCBmcHJpbnRfaGV4KEZJTEUgKmYsIHZvaWQgKmFyZywgdW5zaWduZWQgaW50IG4sIGNvbnN0IGNoYXIgKnNlcClcbiBcdFx0aWYgKCFpKVxuIFx0XHRcdC8qIG5vdGhpbmcgKi87XG4gXHRcdGVsc2UgaWYgKCEoaSAlIDE2KSlcbi1cdFx0XHRmcHJpbnRmKGYsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKGYsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRlbHNlIGlmICghKGkgJSA4KSlcbiBcdFx0XHRmcHJpbnRmKGYsIFwmIzM0OyAgXCYjMzQ7KTtcbiBcdFx0ZWxzZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmggYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5pbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5AQCAtMjUsNyAmIzQzOzI1LDcgQEBcbiBcdGlmIChqc29uX291dHB1dClcdFx0XHRcdFxcXG4gXHRcdGpzb253X3N0YXJ0X29iamVjdChqc29uX3d0cik7XHRcdFxcXG4gXHRlbHNlXHRcdFx0XHRcdFx0XFxcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O3tcJiMzNDspO1x0XHRcdFxcXG4mIzQzO1x0XHRwdXRjaGFyKCYjMzk7eyYjMzk7KTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX0VORF9PQkpFQ1RfTkVTVEVEXHRcdFx0XHRcXFxuQEAgLTMzLDcgJiM0MzszMyw3IEBAXG4gXHRpZiAoanNvbl9vdXRwdXQpXHRcdFx0XHRcXFxuIFx0XHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcdFx0XFxcbiBcdGVsc2VcdFx0XHRcdFx0XHRcXFxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7fVwmIzM0Oyk7XHRcdFx0XFxcbiYjNDM7XHRcdHB1dGNoYXIoJiMzOTt9JiMzOTspO1x0XHRcdFx0XFxcbiB9XG4gXG4gI2RlZmluZSBORVRfRU5EX09CSkVDVFx0XHRcdFx0XHRcXFxuQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAXG4gXHRpZiAoanNvbl9vdXRwdXQpXHRcdFx0XHRcXFxuIFx0XHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcdFx0XFxcbiBcdGVsc2VcdFx0XHRcdFx0XHRcXFxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcdFx0XHRcXFxuJiM0MztcdFx0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX1NUQVJUX0FSUkFZKG5hbWUsIGZtdF9zdHIpXHRcdFx0XFxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbmluZGV4IGE5ZjczMGQ0MDdhOTI5Li5kMjdjYjlkNDk4NjA5MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5AQCAtMTI2Niw3ICYjNDM7MTI2Niw3IEBAIHN0YXRpYyB2b2lkIGhleF9wcmludCh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgRklMRSAqZilcbiBcdFx0XHRmcHJpbnRmKGYsIFwmIzM0OyVjJXNcJiMzNDssIGMsIGogPT0gaSAmIzQzOyA3ID8gXCYjMzQ7IFwmIzM0OyA6IFwmIzM0O1wmIzM0Oyk7XG4gXHRcdH1cbiBcbi1cdFx0ZnByaW50ZihmLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoZiwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vZ3Bpby1ldmVudC1tb24uYyBiL3Rvb2xzL2dwaW8vZ3Bpby1ldmVudC1tb24uY1xuaW5kZXggYjcwODEzYjBiZjhlZmEuLmUxMmUxNDc4MGMwZTQ1IDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmNcbkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIGludCBtb25pdG9yX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSxcbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7dW5rbm93biBldmVudFwmIzM0Oyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRwdXRjaGFyKCYjMzk7XFxuJiMzOTspO1xuIFxuIFx0XHRpJiM0MzsmIzQzOztcbiBcdFx0aWYgKGkgPT0gbG9vcHMpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jIGIvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jXG5pbmRleCBiYTA4NjZlYjM1ODE0NS4uYjc2Yzk0ZmVlMDRkMDkgMTAwNjQ0XG4tLS0gYS90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuY1xuQEAgLTg3LDcgJiM0Mzs4Nyw3IEBAIGludCBoYW1tZXJfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCB1bnNpZ25lZCBpbnQgKmxpbmVzLCBpbnQgbnVtX2xpbmVzLFxuIFx0XHRpZiAoaiA9PSBzaXplb2Yoc3dpcnIpIC0gMSlcbiBcdFx0XHRqID0gMDtcbiBcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1tcJiMzNDspO1xuJiM0MztcdFx0cHV0Y2hhcigmIzM5O1smIzM5Oyk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9saW5lczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7JXU6ICVkXCYjMzQ7LCBsaW5lc1tpXSxcbiBcdFx0XHRcdGdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpO1xuQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgaW50IGhhbW1lcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIHVuc2lnbmVkIGludCAqbGluZXMsIGludCBudW1fbGluZXMsXG4gXHRcdGlmIChsb29wcyBcdTAwMjZcdTAwMjYgaXRlcmF0aW9uID09IGxvb3BzKVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuLVx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcbiBcdHJldCA9IDA7XG4gXG4gZXhpdF9jbG9zZV9lcnJvcjpcbmRpZmYgLS1naXQgYS90b29scy9ncGlvL2xzZ3Bpby5jIGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuaW5kZXggNTJhMGJlNDU0MTBjOTcuLmFiYjJjNmZiYzNkN2NhIDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuQEAgLTE1Miw5ICYjNDM7MTUyLDkgQEAgaW50IGxpc3RfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lKVxuIFx0XHRpZiAobGluZm8uZmxhZ3MpIHtcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCYjMzQ7IFtcJiMzNDspO1xuIFx0XHRcdHByaW50X2F0dHJpYnV0ZXMoXHUwMDI2bGluZm8pO1xuLVx0XHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtdXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cHV0Y2hhcigmIzM5O10mIzM5Oyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRwdXRjaGFyKCYjMzk7XFxuJiMzOTspO1xuIFxuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oIGIvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmhcbmluZGV4IGUyMmFlODdhNzI4OTIwLi44OWM5YTNkM2JjNzczMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaFxuQEAgLTI3LDcgJiM0MzsyNyw3IEBAIHZvaWQgdndhcm54KGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKVxuIHtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDslczogXCYjMzQ7LCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7XG4gXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXJncyk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5pbmRleCBlNjk1NDkwOTQwMWM4ZS4uZTNhYjFkYjQ0YjE1NGUgMTAwNjQ0XG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbkBAIC04NjcsNyAmIzQzOzg2Nyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0XHR9XG4gXHRcdFx0aWYgKGN1bGwgXHUwMDI2IENVTExfU1RBQ0tUUkFDRSlcbiBcdFx0XHRcdGZwcmludGYoZm91dCwgXCYjMzQ7OlxcbiVzXCYjMzQ7LCBsaXN0W2ldLnN0YWNrdHJhY2UpO1xuLVx0XHRcdGZwcmludGYoZm91dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZnB1dGMoZm91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdH1cbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3lubHRvb2wvbWFpbi5jIGIvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xuaW5kZXggNWQwZjQyOGVlZDBhN2YuLjI0NWQ3ZjU4YzhmYjY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xuQEAgLTE1Niw3ICYjNDM7MTU2LDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtFcnJvcjogXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFx0dmFfZW5kKGFwKTtcbiB9XG5AQCAtMTcwLDcgJiM0MzsxNzAsNyBAQCB2b2lkIHBfaW5mbyhjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcbiBcdHZhX3N0YXJ0KGFwLCBmbXQpO1xuIFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR2YV9lbmQoYXApO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suYyBiL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXG5pbmRleCAxMThjM2RlMmYyOTNlZS4uYjZkMjdkMzI2YjhhZDkgMTAwNjQ0XG4tLS0gYS90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmNcbkBAIC0yOTcsNyAmIzQzOzI5Nyw3IEBAIGludCBtYWtlX2JhY2t1cCh2b2lkKVxuIFx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDsgJXNcJiMzNDssIGFyZyk7XG4gXHR9XG4gXG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvZGlzYXMuYyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuY1xuaW5kZXggZTZhNTRhODM2MDVjOTAuLjMzOWQxZDU2OTBjNDIwIDEwMDY0NFxuLS0tIGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9vYmp0b29sL2Rpc2FzLmNcbkBAIC01MzcsNyAmIzQzOzUzNyw3IEBAIHZvaWQgZGlzYXNfcHJpbnRfaW5zbihGSUxFICpzdHJlYW0sIHN0cnVjdCBkaXNhc19jb250ZXh0ICpkY3R4LFxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoc3RyY21wKGZvcm1hdCwgXCYjMzQ7XFxuXCYjMzQ7KSA9PSAwKSB7XG4tXHRcdGZwcmludGYoc3RyZWFtLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RyZWFtLCAmIzM5O1xcbiYjMzk7KTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xuaW5kZXggYzk1ODRkYmVkZjc3YWYuLmZjOWI2YjE4ZWRlZDllIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL2J1aWx0aW4tYzJjLmNcbkBAIC0yNTExLDcgJiM0MzsyNTExLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfY2FjaGVsaW5lKHN0cnVjdCBjMmNfaGlzdHMgKmMyY19oaXN0cyxcbiBcdFx0aGlzdHNfX2ZwcmludGZfaGVhZGVycyhcdTAwMjZjMmNfaGlzdHMtXHUwMDNlaGlzdHMsIG91dCk7XG4gXHRcdG9uY2UgPSB0cnVlO1xuIFx0fSBlbHNlIHtcbi1cdFx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhvdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFxuIFx0ZnByaW50ZihvdXQsIFwmIzM0OyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwmIzM0Oyk7XG5AQCAtMjU5MCwxNSAmIzQzOzI1OTAsMTUgQEAgc3RhdGljIHZvaWQgcGVyZl9jMmNfX2hpc3RzX2ZwcmludGYoRklMRSAqb3V0LCBzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uKVxuIFx0c2V0dXBfcGFnZXIoKTtcbiBcbiBcdHByaW50X2MyY19fZGlzcGxheV9zdGF0cyhvdXQpO1xuLVx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMob3V0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdHByaW50X3NoYXJlZF9jYWNoZWxpbmVfaW5mbyhvdXQpO1xuLVx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMob3V0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdHByaW50X2MyY19pbmZvKG91dCwgc2Vzc2lvbik7XG4gXG4gXHRpZiAoYzJjLnN0YXRzX29ubHkpXG4gXHRcdHJldHVybjtcbiBcbi1cdGZwcmludGYob3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKG91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7ICAgICAgICAgICBTaGFyZWQgRGF0YSBDYWNoZSBMaW5lIFRhYmxlICAgICAgICAgIFxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG5AQCAtMjYwNiw3ICYjNDM7MjYwNiw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbilcbiBcbiBcdGhpc3RzX19mcHJpbnRmKFx1MDAyNmMyYy5oaXN0cy5oaXN0cywgdHJ1ZSwgMCwgMCwgMCwgc3Rkb3V0LCB0cnVlKTtcbiBcbi1cdGZwcmludGYob3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKG91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7ICAgICAgU2hhcmVkIENhY2hlIExpbmUgRGlzdHJpYnV0aW9uIFBhcmV0byAgICAgIFxcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKG91dCwgXCYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXG5pbmRleCBjNDYzMjU3N2QxMjk2My4uN2NiMjBiM2EwM2U0Y2QgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uY1xuQEAgLTY5MSw3ICYjNDM7NjkxLDcgQEAgc3RhdGljIGludCBjbWRfc2Vzc2lvbl9saXN0KHN0cnVjdCBkYWVtb24gKmRhZW1vbiwgdW5pb24gY21kICpjbWQsIEZJTEUgKm91dClcbiBcdFx0XHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cbiBcdFx0XHRjc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gZGFlbW9uLVx1MDAzZXN0YXJ0KSAvIDYwKSk7XG4gXG4tXHRcdGZwcmludGYob3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMob3V0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYob3V0LCBcJiMzNDtbJWQ6ZGFlbW9uXSBiYXNlOiAlc1xcblwmIzM0OywgZ2V0cGlkKCksIGRhZW1vbi1cdTAwM2ViYXNlKTtcbiBcdFx0aWYgKGNtZC1cdTAwM2VsaXN0LnZlcmJvc2UpIHtcbkBAIC03MzAsNyAmIzQzOzczMCw3IEBAIHN0YXRpYyBpbnQgY21kX3Nlc3Npb25fbGlzdChzdHJ1Y3QgZGFlbW9uICpkYWVtb24sIHVuaW9uIGNtZCAqY21kLCBGSUxFICpvdXQpXG4gXHRcdFx0XHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cbiBcdFx0XHRcdGNzdl9zZXAsICh1aW50NjRfdCkoKGN1cnIgLSBzZXNzaW9uLVx1MDAzZXN0YXJ0KSAvIDYwKSk7XG4gXG4tXHRcdFx0ZnByaW50ZihvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKG91dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZnByaW50ZihvdXQsIFwmIzM0O1slZDolc10gcGVyZiByZWNvcmQgJXNcXG5cJiMzNDssXG4gXHRcdFx0XHRzZXNzaW9uLVx1MDAzZXBpZCwgc2Vzc2lvbi1cdTAwM2VuYW1lLCBzZXNzaW9uLVx1MDAzZXJ1bik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbmluZGV4IDU4NDFkNDNiZTk3MTg0Li4wNWYxOGQ0OWZjN2IxNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbkBAIC0xMzE5LDkgJiM0MzsxMzE5LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVzdWx0KHZvaWQpXG4gXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoa2V5LCBcdTAwMjZsb2NrX2tleXMsIGxpc3QpIHtcbiBcdFx0XHRrZXktXHUwMDNlcHJpbnQoa2V5LCBzdCk7XG4tXHRcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7IFwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAmIzM5OyAmIzM5Oyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdFx0aWYgKCYjNDM7JiM0MztwcmludGVkIFx1MDAzZT0gcHJpbnRfbnJfZW50cmllcylcbiBcdFx0XHRicmVhaztcbkBAIC0xNTk4LDcgJiM0MzsxNTk4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX2Nzdihjb25zdCBjaGFyICpzZXApXG4gXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0OyVzJXMgJXNcJiMzNDssIFwmIzM0O3R5cGVcJiMzNDssIHNlcCwgXCYjMzQ7Y2FsbGVyXCYjMzQ7KTtcbiBcdFx0aWYgKHZlcmJvc2UgXHUwMDNlIDApXG4gXHRcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7JXMgJXNcJiMzNDssIHNlcCwgXCYjMzQ7c3RhY2t0cmFjZVwmIzM0Oyk7XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBMT0NLX0FHR1JfQUREUjpcbiBcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7JXMlcyAlcyVzICVzXFxuXCYjMzQ7LCBcJiMzNDthZGRyZXNzXCYjMzQ7LCBzZXAsIFwmIzM0O3N5bWJvbFwmIzM0Oywgc2VwLCBcJiMzNDt0eXBlXCYjMzQ7KTtcbkBAIC0xNjI5LDcgJiM0MzsxNjI5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfbG9ja19zdGF0X3N0ZGlvKHN0cnVjdCBsb2NrX2NvbnRlbnRpb24gKmNvbiwgc3RydWN0IGxvY2tfc3RhdFxuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShrZXksIFx1MDAyNmxvY2tfa2V5cywgbGlzdCkge1xuIFx0XHRrZXktXHUwMDNlcHJpbnQoa2V5LCBzdCk7XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0OyBcJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMobG9ja19vdXRwdXQsICYjMzk7ICYjMzk7KTtcbiBcdH1cbiBcbiBcdHN3aXRjaCAoYWdncl9tb2RlKSB7XG5AQCAtMTY4Nyw3ICYjNDM7MTY4Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXG4gXHRjYXNlIExPQ0tfQUdHUl9DQUxMRVI6XG4gXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0OyVzJXMgJXNcJiMzNDssIGdldF90eXBlX2ZsYWdzX25hbWUoc3QtXHUwMDNlZmxhZ3MpLCBzZXAsIHN0LVx1MDAzZW5hbWUpO1xuIFx0XHRpZiAodmVyYm9zZSBcdTAwM2M9IDApXG4tXHRcdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZnB1dGMobG9ja19vdXRwdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTE9DS19BR0dSX1RBU0s6XG4gXHRcdHBpZCA9IHN0LVx1MDAzZWFkZHI7XG5AQCAtMTcyMSw3ICYjNDM7MTcyMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXG4gXHRcdFx0Z2V0X3N5bWJvbF9uYW1lX29mZnNldChrbWFwLCBzeW0sIGlwLCBidWYsIHNpemVvZihidWYpKTtcbiBcdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcJiMzNDslcyAlI2x4ICVzXCYjMzQ7LCBpID8gXCYjMzQ7OlwmIzM0OyA6IHNlcCwgKHVuc2lnbmVkIGxvbmcpIGlwLCBidWYpO1xuIFx0XHR9XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gfVxuIFxuQEAgLTE3ODEsNyAmIzQzOzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9mb290ZXJfY3N2KGludCB0b3RhbCwgaW50IGJhZCwgc3RydWN0IGxvY2tfY29udGVudGlvbl9mYWlscyAqZlxuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCUk9LRU5fTUFYOyBpJiM0MzsmIzQzOylcbiBcdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcJiMzNDslcyBiYWRfJXM9JWRcJiMzNDssIHNlcCwgbmFtZVtpXSwgYmFkX2hpc3RbaV0pO1xuIFx0fVxuLVx0ZnByaW50Zihsb2NrX291dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZhaWxzKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuY1xuaW5kZXggOWFjMjliZGMzY2Q1NDcuLmU2MGMwNzMwNWQxOThiIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmNcbkBAIC0yNTYxLDcgJiM0MzsyNTYxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19ldmVudChzdHJ1Y3QgcGVyZl9zY3JpcHQgKnNjcmlwdCxcbiBcbiBcdHBlcmZfc2FtcGxlX19mcHJpbnRmX2lwYyhzYW1wbGUsIGV2c2VsLCBmcCk7XG4gXG4tXHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGlmIChQUklOVF9GSUVMRChTUkNDT0RFKSkge1xuIFx0XHRpZiAobWFwX19mcHJpbnRmX3NyY2NvZGUoYWwtXHUwMDNlbWFwLCBhbC1cdTAwM2VhZGRyLCBzdGRvdXQsXG5AQCAtMjgxNSw3ICYjNDM7MjgxNSw3IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19kZWZlcnJlZF9zYW1wbGVfZXZlbnQoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCxcbiBcdFx0XHRcdCAgICBjdXJzb3IsIHN5bWJvbF9jb25mLmJ0X3N0b3BfbGlzdCwgZnApO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmcCwgJiMzOTtcXG4mIzM5Oyk7XG4gXG4gXHRpZiAodmVyYm9zZSBcdTAwM2UgMClcbiBcdFx0ZmZsdXNoKGZwKTtcbkBAIC0zMjcxLDExICYjNDM7MzI3MSwxMSBAQCBzdGF0aWMgaW50IGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYihzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqb3BzLCBjb25zdCBjaGFyICpzcFxuIFxuIHN0YXRpYyB2b2lkIGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlcyh2b2lkKVxuIHtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7U2NyaXB0aW5nIGxhbmd1YWdlIGV4dGVuc2lvbnMgKHVzZWQgaW4gXCYjMzQ7XG4gXHRcdFwmIzM0O3BlcmYgc2NyaXB0IC1zIFtzcGVjOl1zY3JpcHQuW3NwZWNdKTpcXG5cXG5cJiMzNDspO1xuIFx0c2NyaXB0X3NwZWNfX2Zvcl9lYWNoKFx1MDAyNmxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYik7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiAvKiBGaW5kIHNjcmlwdCBmaWxlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5IG9yIGV4ZWMgcGF0aCAqL1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuaW5kZXggYzQ3ZjVjMzg3ODM4YzUuLjAzN2ViYzQ3ZjdkY2NjIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbkBAIC0zNyw3ICYjNDM7MzcsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiBcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtFcnJvcjpcXG5cJiMzNDspO1xuIFx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4gXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7V2FybmluZzpcXG5cJiMzNDspO1xuIFx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuQEAgLTgzLDcgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIFx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuYyBiL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jXG5pbmRleCA4YzRjODkyNWRmMmMyMi4uMDQ0ZDJhYTNiMzEyMTggMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcbkBAIC02OTEsNyAmIzQzOzY5MSw3IEBAIHN0YXRpYyBpbnQgaGlzdHNfX2ZwcmludGZfaGllcmFyY2h5X2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0fVxuIFxuIG5leHRfbGluZTpcbi1cdFx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcdH1cbiBcbiBcdGZwcmludGYoZnAsIFwmIzM0OyMgXCYjMzQ7KTtcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIGhpc3RzX19mcHJpbnRmX3N0YW5kYXJkX2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0aWYgKGxpbmUpXG4gXHRcdFx0ZnByaW50ZihmcCwgXCYjMzQ7IyBcJiMzNDspO1xuIFx0XHRmcHJpbnRmX2xpbmUoaGlzdHMsIGhwcCwgbGluZSwgZnApO1xuLVx0XHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoZnAsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFxuIFx0aWYgKHNlcClcbkBAIC04MDYsMTAgJiM0Mzs4MDYsMTAgQEAgaGlzdHNfX2ZwcmludGZfc3RhbmRhcmRfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuIFxuIFx0XHR3aWR0aCA9IGZtdC1cdTAwM2V3aWR0aChmbXQsIGhwcCwgaGlzdHMpO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3aWR0aDsgaSYjNDM7JiM0MzspXG4tXHRcdFx0ZnByaW50ZihmcCwgXCYjMzQ7LlwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKGZwLCAmIzM5Oy4mIzM5Oyk7XG4gXHR9XG4gXG4tXHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGZwcmludGYoZnAsIFwmIzM0OyNcXG5cJiMzNDspO1xuIFx0cmV0dXJuIGhwcF9saXN0LVx1MDAzZW5yX2hlYWRlcl9saW5lcyAmIzQzOyAyO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcbmluZGV4IDVkMDY2NGZmNzNiNzkxLi44ZTA5OWNjYWFlMzlhNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS5jXG5AQCAtODk1LDcgJiM0Mzs4OTUsNyBAQCBzdGF0aWMgdm9pZCBjc19ldG1fX2R1bXBfZXZlbnQoc3RydWN0IGNzX2V0bV9xdWV1ZSAqZXRtcSxcbiBcdGNvbnN0IGNoYXIgKmNvbG9yID0gUEVSRl9DT0xPUl9CTFVFO1xuIFx0c2l6ZV90IGJ1ZmZlcl91c2VkID0gMDtcbiBcbi1cdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gXHRjb2xvcl9mcHJpbnRmKHN0ZG91dCwgY29sb3IsXG4gXHRcdCAgICAgXCYjMzQ7LiAuLi4gQ29yZVNpZ2h0ICVzIFRyYWNlIGRhdGE6IHNpemUgJSN6eCBieXRlc1xcblwmIzM0OyxcbiBcdFx0ICAgICBjc19ldG1fZGVjb2Rlcl9fZ2V0X25hbWUoZXRtcS1cdTAwM2VkZWNvZGVyKSwgYnVmZmVyLVx1MDAzZXNpemUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jIGIvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmNcbmluZGV4IDZiNWZmZTgxZjE0MTIxLi41NDI5OTg0YWI0OWM5MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvZGVidWcuY1xuQEAgLTM1MCw3ICYjNDM7MzUwLDcgQEAgdm9pZCBfX2R1bXBfc3RhY2soRklMRSAqZmlsZSwgdm9pZCAqKnN0YWNrZHVtcCwgc2l6ZV90IHN0YWNrZHVtcF9zaXplKVxuIFx0XHRcdGZwcmludGYoZmlsZSwgXCYjMzQ7ICAgICMlemQgJXAgXCYjMzQ7LCBpLCBzdGFja2R1bXBbaV0pO1xuIFxuIFx0XHRtYXBfX2ZwcmludGZfc3JjbGluZShhbC5tYXAsIGFsLmFkZHIsIFwmIzM0O1wmIzM0OywgZmlsZSk7XG4tXHRcdGZwcmludGYoZmlsZSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZpbGUsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRhZGRyX2xvY2F0aW9uX19leGl0KFx1MDAyNmFsKTtcbiBcdH1cbiBcdHRocmVhZF9fcHV0KHRocmVhZCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jIGIvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXG5pbmRleCAwOTFkOGY3ZjZiZDJjOS4uOTY1YjE3YzgxMjI0YjYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvaGVhZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuY1xuQEAgLTI0NTQsNyAmIzQzOzI0NTQsNyBAQCBzdGF0aWMgdm9pZCBfX3ByaW50X3BtdV9jYXBzKEZJTEUgKmZwLCBpbnQgbnJfY2FwcywgY2hhciAqKmNhcHMsIGNoYXIgKnBtdV9uYW1lKVxuIFx0XHRkZWxpbWl0ZXIgPSBcJiMzNDssIFwmIzM0OztcbiBcdH1cbiBcbi1cdGZwcmludGYoZnAsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZnAsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF9jcHVfcG11X2NhcHMoc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcbkBAIC0yNTEzLDcgJiM0MzsyNTEzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfcG11X21hcHBpbmdzKHN0cnVjdCBmZWF0X2ZkICpmZiwgRklMRSAqZnApXG4gXHRcdHBtdV9udW0tLTtcbiBcdH1cbiBcbi1cdGZwcmludGYoZnAsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZnAsICYjMzk7XFxuJiMzOTspO1xuIFxuIFx0aWYgKCFwbXVfbnVtKVxuIFx0XHRyZXR1cm47XG5AQCAtNDM0OSw3ICYjNDM7NDM0OSw3IEBAIGludCBwZXJmX2hlYWRlcl9fZnByaW50Zl9pbmZvKHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24sIEZJTEUgKmZwLCBib29sIGZ1bGwpXG4gXHRcdFx0ZnByaW50ZihmcCwgXCYjMzQ7JXMgXCYjMzQ7LCBmZWF0X29wc1tiaXRdLm5hbWUpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmcCwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmMgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xuaW5kZXggZWY1NWQ2MjMyY2YwYzIuLjBhMzU0OTNiODU0YWNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jXG5AQCAtNzAsMTQgJiM0Mzs3MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9kYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbiwgdWludDY0X3QgcG9zLFxuIFx0aW50IGk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpbmRlbnQ7IGkmIzQzOyYjNDM7KVxuLVx0XHRmcHJpbnRmKGYsIFwmIzM0OyBcJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoZiwgJiMzOTsgJiMzOTspO1xuIFxuIFx0ZnByaW50ZihmLCBcJiMzNDsgICUwOFwmIzM0OyBQUkl4NjQgXCYjMzQ7OiBcJiMzNDssIHBvcyk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KVxuIFx0XHRmcHJpbnRmKGYsIFwmIzM0OyAlMDJ4XCYjMzQ7LCBidWZbaV0pO1xuIFx0Zm9yICg7IGkgXHUwMDNjIDE2OyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihmLCBcJiMzNDsgICBcJiMzNDspO1xuLVx0ZnByaW50ZihmLCBcJiMzNDsgXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X25vX2RhdGEodWludDY0X3QgcG9zLCBpbnQgaW5kZW50KVxuQEAgLTg1LDEyICYjNDM7ODUsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHRfcHJpbnRfbm9fZGF0YSh1aW50NjRfdCBwb3MsIGludCBpbmRlbnQpXG4gXHRpbnQgaTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGluZGVudDsgaSYjNDM7JiM0MzspXG4tXHRcdGZwcmludGYoZiwgXCYjMzQ7IFwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7XG4gXG4gXHRmcHJpbnRmKGYsIFwmIzM0OyAgJTA4XCYjMzQ7IFBSSXg2NCBcJiMzNDs6IFwmIzM0OywgcG9zKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDE2OyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihmLCBcJiMzNDsgICBcJiMzNDspO1xuLVx0ZnByaW50ZihmLCBcJiMzNDsgXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyBzc2l6ZV90IGxvZ19idWZfX3dyaXRlKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvbGliYmZkLmMgYi90b29scy9wZXJmL3V0aWwvbGliYmZkLmNcbmluZGV4IGMxYzEyMzA4Y2MxMmZmLi4yNjM4OTQ2NjNmMWE4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9saWJiZmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXG5AQCAtNjAzLDcgJiM0Mzs2MDMsNyBAQCBpbnQgc3ltYm9sX19kaXNhc3NlbWJsZV9icGZfbGliYmZkKHN0cnVjdCBzeW1ib2wgKnN5bSBfX21heWJlX3VudXNlZCxcbiBcdFx0fSBlbHNlXG4gXHRcdFx0c3JjbGluZSA9IE5VTEw7XG4gXG4tXHRcdGZwcmludGYocywgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKHMsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRwcmV2X2J1Zl9zaXplID0gYnVmX3NpemU7XG4gXHRcdGZmbHVzaChzKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc2Vzc2lvbi5jIGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuaW5kZXggZjM5MWE4MjI0ODBkYjAuLjYzYThkM2NjYWE0ZjljIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuQEAgLTEyNTcsNyAmIzQzOzEyNTcsNyBAQCBpbnQgcGVyZl9ldmVudF9fcHJvY2Vzc19maW5pc2hlZF9yb3VuZChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sIF9fbWF5YmVfdW51c1xuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBvcmRlcmVkX2V2ZW50cyAqb2UpXG4ge1xuIFx0aWYgKGR1bXBfdHJhY2UpXG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcbiBcdHJldHVybiBvcmRlcmVkX2V2ZW50c19fZmx1c2gob2UsIE9FX0ZMVVNIX19ST1VORCk7XG4gfVxuIFxuQEAgLTQwMDAsNyAmIzQzOzQwMDAsNyBAQCBpbnQgcGVyZl9ldmVudF9fcHJvY2Vzc19pZF9pbmRleChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sIF9fbWF5YmVfdW51c2VkLFxuIFx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0OyAgbWFjaGluZV9waWQ6ICVcJiMzNDtQUklfbGQ2NCwgZTItXHUwMDNlbWFjaGluZV9waWQpO1xuIFx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0OyAgdmNwdTogJVwmIzM0O1BSSV9sdTY0XCYjMzQ7XFxuXCYjMzQ7LCBlMi1cdTAwM2V2Y3B1KTtcbiBcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0cHV0Y2hhcigmIzM5O1xcbiYjMzk7KTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmMgYi90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcbmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jXG5AQCAtNTI5LDcgJiM0Mzs1MjksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9tZXRyaWNfanNvbihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnIF9fbWF5YmVfdW51c2VkLFxuIFx0XHR9XG4gXHR9XG4gXHRpZiAoIWNvbmZpZy1cdTAwM2VtZXRyaWNfb25seSlcbi1cdFx0ZnByaW50ZihvdXQsIFwmIzM0O31cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMob3V0LCAmIzM5O30mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5ld19saW5lX2pzb24oc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgdm9pZCAqY3R4KVxuQEAgLTEzMTYsNyAmIzQzOzEzMTYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWFkZXJfc3RkKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsXG4gXHRGSUxFICpvdXRwdXQgPSBjb25maWctXHUwMDNlb3V0cHV0O1xuIFx0aW50IGk7XG4gXG4tXHRmcHJpbnRmKG91dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhvdXRwdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0ZnByaW50ZihvdXRwdXQsIFwmIzM0OyBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciBcJiMzNDspO1xuIFx0aWYgKF90YXJnZXQtXHUwMDNlYnBmX3N0cilcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwmIzM0O1xcJiMzOTtCUEYgcHJvZ3JhbShzKSAlc1wmIzM0OywgX3RhcmdldC1cdTAwM2VicGZfc3RyKTtcbkBAIC0xMzMzLDcgJiM0MzsxMzMzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX3N0ZChzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnLFxuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKG91dHB1dCwgXCYjMzQ7dGhyZWFkIGlkIFxcJiMzOTslc1wmIzM0OywgX3RhcmdldC1cdTAwM2V0aWQpO1xuIFxuLVx0ZnByaW50ZihvdXRwdXQsIFwmIzM0O1xcJiMzOTtcJiMzNDspO1xuJiM0MztcdGZwdXRjKG91dHB1dCwgJiMzOTtcXCYjMzk7JiMzOTspO1xuIFx0aWYgKGNvbmZpZy1cdTAwM2VydW5fY291bnQgXHUwMDNlIDEpXG4gXHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDsgKCVkIHJ1bnMpXCYjMzQ7LCBjb25maWctXHUwMDNlcnVuX2NvdW50KTtcbiBcdGZwcmludGYob3V0cHV0LCBcJiMzNDs6XFxuXFxuXCYjMzQ7KTtcbkBAIC0xNDA2LDkgJiM0MzsxNDA2LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFibGUoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgRklMRSAqb3V0cHV0LCBkb3VibGUgYXZcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwmIzM0OyAlMTcuOWYgKCUmIzQzOy45ZikgXCYjMzQ7LCBydW4sIHJ1biAtIGF2Zyk7XG4gXG4gXHRcdGZvciAoaCA9IDA7IGggXHUwMDNjIG47IGgmIzQzOyYjNDM7KVxuLVx0XHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDsjXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZnB1dGMob3V0cHV0LCAmIzM5OyMmIzM5Oyk7XG4gXG4tXHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMob3V0cHV0LCAmIzM5O1xcbiYjMzk7KTtcbiBcdH1cbiBcbiBcdGZwcmludGYob3V0cHV0LCBcJiMzNDtcXG4lKnMjIEZpbmFsIHJlc3VsdDpcXG5cJiMzNDssIGluZGVudCwgXCYjMzQ7XCYjMzQ7KTtcbkBAIC0xNDI4LDcgJiM0MzsxNDI4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZm9vdGVyKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmICghY29uZmlnLVx1MDAzZW51bGxfcnVuKVxuLVx0XHRmcHJpbnRmKG91dHB1dCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKG91dHB1dCwgJiMzOTtcXG4mIzM5Oyk7XG4gXG4gXHRpZiAoY29uZmlnLVx1MDAzZXJ1bl9jb3VudCA9PSAxKSB7XG4gXHRcdGZwcmludGYob3V0cHV0LCBcJiMzNDsgJTE3LjlmIHNlY29uZHMgdGltZSBlbGFwc2VkXCYjMzQ7LCBhdmcpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuY1xuaW5kZXggNmVhZGRmY2Y4MzNlNTIuLjJjNTM0MGE5MjhkZDFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3ZhbHVlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcbkBAIC0yMTcsNyAmIzQzOzIxNyw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxuIFx0ZnByaW50ZihmcCwgXCYjMzQ7IyAlKnMgICUqc1wmIzM0OywgcGlkd2lkdGgsIFwmIzM0O1BJRFwmIzM0OywgdGlkd2lkdGgsIFwmIzM0O1RJRFwmIzM0Oyk7XG4gXHRmb3IgKGogPSAwOyBqIFx1MDAzYyB2YWx1ZXMtXHUwMDNlbnVtX2NvdW50ZXJzOyBqJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihmcCwgXCYjMzQ7ICAlKnNcJiMzNDssIGNvdW50ZXJ3aWR0aFtqXSwgZXZzZWxfX25hbWUodmFsdWVzLVx1MDAzZWNvdW50ZXJzW2pdKSk7XG4tXHRmcHJpbnRmKGZwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZhbHVlcy1cdTAwM2V0aHJlYWRzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRmcHJpbnRmKGZwLCBcJiMzNDsgICUqZCAgJSpkXCYjMzQ7LCBwaWR3aWR0aCwgdmFsdWVzLVx1MDAzZXBpZFtpXSxcbkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB2YWx1ZXMtXHUwMDNlbnVtX2NvdW50ZXJzOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRmcHJpbnRmKGZwLCBcJiMzNDsgICUqXCYjMzQ7IFBSSXU2NCxcbiBcdFx0XHRcdGNvdW50ZXJ3aWR0aFtqXSwgdmFsdWVzLVx1MDAzZXZhbHVlW2ldW2pdKTtcbi1cdFx0ZnByaW50ZihmcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZwLCAmIzM5O1xcbiYjMzk7KTtcbiBcdH1cbiBcdGZyZWUoY291bnRlcndpZHRoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuYyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbmluZGV4IDcyYWQ3OTE1YjA0ZmQyLi42MDBkNWI2ZTA0YTg4MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbkBAIC0xNzEsNyAmIzQzOzE3MSw3IEBAIGFwX2R1bXBfdGFibGVfYnVmZmVyKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGUsXG4gXHRhY3BpX3V0X2R1bXBfYnVmZmVyX3RvX2ZpbGUoZ2JsX291dHB1dF9maWxlLFxuIFx0XHRcdFx0ICAgIEFDUElfQ0FTVF9QVFIodTgsIHRhYmxlKSwgdGFibGVfbGVuZ3RoLFxuIFx0XHRcdFx0ICAgIERCX0JZVEVfRElTUExBWSwgMCk7XG4tXHRmcHJpbnRmKGdibF9vdXRwdXRfZmlsZSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhnYmxfb3V0cHV0X2ZpbGUsICYjMzk7XFxuJiMzOTspO1xuIFx0cmV0dXJuICgwKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbkBAIC0xMjIsNyAmIzQzOzEyMiw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKVxuIFxuIFx0aWYgKGxldmVsID09IDApIHtcbiBcdFx0aWYgKGhlYWRlcilcbi1cdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0O3tcJiMzNDspO1xuJiM0MztcdFx0XHRmcHV0YyhvdXRmLCAmIzM5O3smIzM5Oyk7XG4gXHRcdGVsc2VcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0O1xcbn1cXG5cJiMzNDspO1xuIFxuQEAgLTEzOCw3ICYjNDM7MTM4LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXG4gXHRcdGlmICh2YWx1ZSkge1xuIFx0XHRcdGlmIChsYXN0X2xldmVsICE9IGxldmVsKVxuLVx0XHRcdFx0ZnByaW50ZihvdXRmLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGZwdXRjKG91dGYsICYjMzk7XFxuJiMzOTspO1xuIFxuIFx0XHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7JXNcXFwmIzM0OyVzXFxcJiMzNDs6IFwmIzM0OywgZGVsaW1pdGVycywgaGVhZGVyKTtcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0O1xcXCYjMzQ7JXNcXFwmIzM0O1wmIzM0OywgdmFsdWUpO1xuQEAgLTE1Niw3ICYjNDM7MTU2LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXHRcdFx0XHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7XFxuJXN9XCYjMzQ7LCBkZWxpbWl0ZXJzKTtcbiBcdFx0XHR9XG4gXHRcdFx0aWYgKGFicyhsYXN0X2xldmVsIC0gbGV2ZWwpIFx1MDAzYyAzKVxuLVx0XHRcdFx0ZnByaW50ZihvdXRmLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGZwdXRjKG91dGYsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRcdGlmIChoZWFkZXIpXG4gXHRcdFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0OyVzXFxcJiMzNDslc1xcXCYjMzQ7OiB7XCYjMzQ7LCBkZWxpbWl0ZXJzLFxuIFx0XHRcdFx0XHRoZWFkZXIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmMgYi90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jXG5pbmRleCA5MjA2OTRjM2MxZWM5NC4uNDVkMzlhMGZjZjcyYTAgMTAwNjQ0XG4tLS0gYS90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jXG5AQCAtOTA5OSw3ICYjNDM7OTA5OSw3IEBAIHZvaWQgZHVtcF9jcHVpZF9oeXBlcnZpc29yKHZvaWQpXG4gXHRkdW1wX3dvcmRfY2hhcnMoZWJ4KTtcbiBcdGR1bXBfd29yZF9jaGFycyhlY3gpO1xuIFx0ZHVtcF93b3JkX2NoYXJzKGVkeCk7XG4tXHRmcHJpbnRmKG91dGYsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMob3V0ZiwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHZvaWQgcHJvY2Vzc19jcHVpZCgpXG5AQCAtOTc0OSw3ICYjNDM7OTc0OSw3IEBAIHZvaWQgdG9wb2xvZ3lfcHJvYmUoYm9vbCBzdGFydHVwKVxuIFx0XHRmcHJpbnRmKG91dGYsIFwmIzM0OyBzaWJsaW5nc1wmIzM0Oyk7XG4gXHRcdGZvciAoaHRfaWQgPSAwOyBodF9pZCBcdTAwM2M9IE1BWF9IVF9JRDsgJiM0MzsmIzQzO2h0X2lkKVxuIFx0XHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7ICVkXCYjMzQ7LCBjcHVzW2ldLmh0X3NpYmxpbmdfY3B1X2lkW2h0X2lkXSk7XG4tXHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKG91dGYsICYjMzk7XFxuJiMzOTspO1xuIFx0fVxuIFxuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmNcbmluZGV4IDFlZTIxN2Q5NzQzNDBlLi42NGI5N2E0MWFmNDVlYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXG5AQCAtMTQ4LDcgJiM0MzsxNDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh0YWJfbWVtX3VzZV9jYXNlICpodGFiX21lbV9maW5kX3VzZV9jYXNlX29yX2V4aXQoY29uc3QgY2hhclxuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O2F2YWlsYWJsZSB1c2UgY2FzZTpcJiMzNDspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh1c2VfY2FzZXMpOyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyAlc1wmIzM0OywgdXNlX2Nhc2VzW2ldLm5hbWUpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGV4aXQoMSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuY1xuaW5kZXggMzU1OGZlMTBlMjhjZjkuLjU4ZWEyYTJlYzEzZTJkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmNcbkBAIC0yMjgsNyAmIzQzOzIyOCw3IEBAIGludCBnZXRfaml0ZWRfcHJvZ3JhbV90ZXh0KGludCBmZCwgY2hhciAqdGV4dCwgc2l6ZV90IHRleHRfc3opXG4gXHRmb3IgKHBjID0gMCwgaSA9IDA7IGkgXHUwMDNjIGppdGVkX2Z1bmNzOyAmIzQzOyYjNDM7aSkge1xuIFx0XHRmcHJpbnRmKHRleHRfb3V0LCBcJiMzNDtmdW5jICMlZDpcXG5cJiMzNDssIGkpO1xuIFx0XHRkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICYjNDM7IHBjLCBmdW5jX2xlbnNbaV0pO1xuLVx0XHRmcHJpbnRmKHRleHRfb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGModGV4dF9vdXQsICYjMzk7XFxuJiMzOTspO1xuIFx0XHRwYyAmIzQzOz0gZnVuY19sZW5zW2ldO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jXG5pbmRleCA3YmE4Mjk3NGVlNzg0ZC4uYjUyMGJlMWJmN2FhYTcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jXG5AQCAtMzgzLDcgJiM0MzszODMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90ZXN0X3Jlc3VsdChjb25zdCBzdHJ1Y3QgcHJvZ190ZXN0X2RlZiAqdGVzdCwgY29uc3Qgc3RydWN0IHRlc1xuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0O09LIChTS0lQOiAlZC8lZClcJiMzNDssIHNraXBwZWRfY250LCBzdWJ0ZXN0c19jbnQpO1xuIFxuLVx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF90ZXN0X2xvZyhjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcbkBAIC0zOTEsNyAmIzQzOzM5MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfbG9nKGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KVxuIFx0bG9nX2J1Zltsb2dfY250XSA9ICYjMzk7XFwwJiMzOTs7XG4gXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0OyVzXCYjMzQ7LCBsb2dfYnVmKTtcbiBcdGlmIChsb2dfYnVmW2xvZ19jbnQgLSAxXSAhPSAmIzM5O1xcbiYjMzk7KVxuLVx0XHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhlbnYuc3Rkb3V0X3NhdmVkLCAmIzM5O1xcbiYjMzk7KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcHJpbnRfc3VidGVzdF9uYW1lKGludCB0ZXN0X251bSwgaW50IHN1YnRlc3RfbnVtLFxuQEAgLTQwOSw3ICYjNDM7NDA5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfc3VidGVzdF9uYW1lKGludCB0ZXN0X251bSwgaW50IHN1YnRlc3RfbnVtLFxuIFx0aWYgKHJlc3VsdClcbiBcdFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcJiMzNDs6JXNcJiMzNDssIHJlc3VsdCk7XG4gXG4tXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGpzb253X3dyaXRlX2xvZ19tZXNzYWdlKGpzb25fd3JpdGVyX3QgKncsIGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KVxuQEAgLTEzMzMsMTQgJiM0MzsxMzMzLDE0IEBAIHZvaWQgaGV4ZHVtcChjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbilcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmICghKGkgJSAxNikpIHtcbiBcdFx0XHRpZiAoaSlcbi1cdFx0XHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0OyVzXCYjMzQ7LCBwcmVmaXgpO1xuIFx0XHR9XG4gXHRcdGlmIChpIFx1MDAyNlx1MDAyNiAhKGkgJSA4KSBcdTAwMjZcdTAwMjYgKGkgJSAxNikpXG4tXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwmIzM0O1xcdFwmIzM0Oyk7XG4mIzQzO1x0XHRcdHB1dGNoYXIoJiMzOTtcXHQmIzM5Oyk7XG4gXHRcdGZwcmludGYoc3Rkb3V0LCBcJiMzNDslMDJYIFwmIzM0OywgKCh1aW50OF90ICopKGJ1ZikpW2ldKTtcbiBcdH1cbi1cdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYTdkYjZmMDRmN2UxNDUuLmQxYzdmMDZiOGIxY2Y5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5AQCAtMTYwNSw3ICYjNDM7MTYwNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXAoX191MzIgcHJvZ19pZCwgZW51bSBkdW1wX21vZGUgbW9kZSwgY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25zXG4gXHRwcmludGYoXCYjMzQ7RFVNUCAoJXMpICVzLyVzOlxcblwmIzM0OywgbW9kZSA9PSBEVU1QX0pJVEVEID8gXCYjMzQ7SklURURcJiMzNDsgOiBcJiMzNDtYTEFURURcJiMzNDssIGZpbGVfbmFtZSwgcHJvZ19uYW1lKTtcbiBcdHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmcCkpXG4gXHRcdGZwdXRzKGJ1Ziwgc3Rkb3V0KTtcbi1cdGZwcmludGYoc3Rkb3V0LCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdHB1dGNoYXIoJiMzOTtcXG4mIzM5Oyk7XG4gXG4gXHRpZiAoZmVycm9yKGZwKSlcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O0ZhaWxlZCB0byBkdW1wIEJQRiBwcm9nIHdpdGggZXJyb3I6ICVkXFxuXCYjMzQ7LCBlcnJubyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbmNkZXZtZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcbmluZGV4IGQ5NmU4YTNiNWE2NTI2Li43YmRjYzQxMTRkYmExYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcbkBAIC0xMzUsNyAmIzQzOzEzNSw3IEBAIHN0YXRpYyB2b2lkIHByX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcbiBcdGlmIChlcnJubyAhPSAwKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7OiAlc1wmIzM0Oywgc3RyZXJyb3IoZXJybm8pKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbWVtb3J5X2J1ZmZlciAqdWRtYWJ1Zl9hbGxvYyhzaXplX3Qgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuY1xuaW5kZXggYzc4MDVlODdkMTJjNWQuLjEyMDgzNGY4YmEwZGE1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuY1xuQEAgLTExNyw3ICYjNDM7MTE3LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9zayhjb25zdCB1bnNpZ25lZCBjaGFyIHNrZXlzW10sIGNvbnN0IGNoYXIgKmRlc2NyKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7IyAlM2Q6IFwmIzM0OywgaSk7XG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIDMyOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JTAyeCBcJiMzNDssIHNrZXlzW2kgJiM0Mzsgal0pO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuY1xuaW5kZXggNzgxODBkYTFlZmNjNTMuLjQwNDY3ZTg2YmZkNDdiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmNcbkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIHN0YXRpYyBpbnQgY2FwdHVyZV9ldmVudHMoaW50IGZkLCBpbnQgZXZlbnRfZ3JvdXApXG4gXHRcdH1cbiBcdFx0aWYgKHNlcnZlcl9zaWRlKVxuIFx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDssc2VydmVyX3NpZGU6MVwmIzM0Oyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdH0gd2hpbGUgKDEpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcbmluZGV4IDdjYWYzMTM1NDQ4ZGE3Li43MjRkYTkyMjJhZDlhMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcbkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHN0YXRpYyBpbnQgcGZzb2NrZXQoaW50IHZlcilcbiBzdGF0aWMgdm9pZCBzdGF0dXNfYmFyX3VwZGF0ZSh2b2lkKVxuIHtcbiBcdGlmICh0b3RhbF9wYWNrZXRzICUgMTAgPT0gMCkge1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7LlwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7LiYjMzk7KTtcbiBcdFx0ZmZsdXNoKHN0ZGVycik7XG4gXHR9XG4gfVxuQEAgLTgyNSw3ICYjNDM7ODI1LDcgQEAgc3RhdGljIGludCB0ZXN0X3RwYWNrZXQoaW50IHZlcnNpb24sIGludCB0eXBlKVxuIFx0dW5tYXBfcmluZyhzb2NrLCBcdTAwMjZyaW5nKTtcbiBcdGNsb3NlKHNvY2spO1xuIFxuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jXG5pbmRleCAxNzBiZTE5MmY1YzdjZS4uODZjOGQ0OTQ1ZDczYzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmNcbkBAIC0yMDAsMTAgJiM0MzsyMDAsMTAgQEAgc3RhdGljIHZvaWQgX19wcmludF90aW1lc3RhbXAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHRpbWVzcGVjICpjdXIsXG4gXHRcdHRzX2RlbHRhID0gdGltZXNwZWNfdG9fbnM2NChjdXIpIC0gdGltZXNwZWNfdG9fbnM2NChcdTAwMjZ0c191c3IpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ICAoVVNSICYjNDM7XCYjMzQ7KTtcbiBcdFx0X19wcmludF90c19kZWx0YV9mb3JtYXR0ZWQodHNfZGVsdGEpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7KVwmIzM0Oyk7XG4mIzQzO1x0XHRmcHV0YyhzdGRlcnIsICYjMzk7KSYjMzk7KTtcbiBcdH1cbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJlY29yZF90aW1lc3RhbXBfdXNyKHZvaWQpXG5AQCAtMjU0LDcgJiM0MzsyNTQsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90aW1pbmdfZXZlbnQoY2hhciAqbmFtZSwgc3RydWN0IHRpbWluZ19ldmVudCAqdGUpXG4gXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cdTAwM2VtaW4pO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OywgbWF4PVwmIzM0Oyk7XG4gXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cdTAwM2VtYXgpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiB9XG4gXG4gLyogVE9ETzogY29udmVydCB0byBjaGVja19hbmRfcHJpbnQgcGF5bG9hZCBvbmNlIEFQSSBpcyBzdGFibGUgKi9cbkBAIC0yNzEsNyAmIzQzOzI3MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3BheWxvYWQoY2hhciAqZGF0YSwgaW50IGxlbilcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtwYXlsb2FkOiBcJiMzNDspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpJiM0MzsmIzQzOylcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyUwMmhoeCBcJiMzNDssIGRhdGFbaV0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcHJpbnRfcGt0aW5mbyhpbnQgZmFtaWx5LCBpbnQgaWZpbmRleCwgdm9pZCAqc2FkZHIsIHZvaWQgKmRhZGRyKVxuQEAgLTkzMyw3ICYjNDM7OTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O3Byb3RvY29sOiAgICAgJXNcXG5cJiMzNDssIHNvY2tfbmFtZXNbY2ZnX3Byb3RvXSk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7cGF5bG9hZDogICAgICAldVxcblwmIzM0OywgY2ZnX3BheWxvYWRfbGVuKTtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtzZXJ2ZXIgcG9ydDogICV1XFxuXCYjMzQ7LCBkZXN0X3BvcnQpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGlmIChkb19pcHY0KSB7XG4gXHRcdGlmIChjZmdfZG9fbGlzdGVuKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuY1xuaW5kZXggN2MyM2QzZGQ3ZDZkOTEuLjQxMmRlZmU5ODI3MTQzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcG93ZXJwYy9ueC1nemlwL2d1bnpfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcbkBAIC0zNjMsNyAmIzQzOzM2Myw3IEBAIGludCBkZWNvbXByZXNzX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCB2b2lkICpkZXZoYW5kbGUpXG4gXHRcdFx0Z290byBlcnIzO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JTAyeCBcJiMzNDssIHRtcFtpXSk7XG4gXHRcdGlmIChpID09IDUpXG4tXHRcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHR9XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7Z3pIZWFkZXIgTVRJTUUsIFhGTCwgT1MgaWdub3JlZFxcblwmIzM0Oyk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oXG5pbmRleCA3N2I2OGM3MTI5YTY0OC4uODIwMTViMTlkZjZjMzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxuQEAgLTEwLDcgJiM0MzsxMCw3IEBAXG4gXG4gI2RlZmluZSBWRklPX0xPR19BTkRfRVhJVCguLi4pIGRvIHtcdFx0XFxcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDsgIFwmIzM0OyBfX1ZBX0FSR1NfXyk7XHRcXFxuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XHRcdFx0XFxcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1x0XHRcdFxcXG4gXHRleGl0KEtTRlRfRkFJTCk7XHRcdFx0XFxcbiB9IHdoaWxlICgwKVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2xpYnZmaW8uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2xpYnZmaW8uY1xuaW5kZXggM2EzZDFlZDYzNWMxZGYuLjgwYTMxMmYxNDlhNjZlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmNcbkBAIC02MCwxNiAmIzQzOzYwLDE2IEBAIGNoYXIgKip2ZmlvX3NlbGZ0ZXN0c19nZXRfYmRmcyhpbnQgKmFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50ICpucl9iZGZzKVxuIFx0fVxuIFxuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1VuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggZGV2aWNlKHMpIHRvIHVzZSwgc2tpcHBpbmcgdGVzdC5cXG5cJiMzNDspO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtUbyBwYXNzIHRoZSBkZXZpY2UgYWRkcmVzcyB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGU6XFxuXCYjMzQ7KTtcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ICAgIGV4cG9ydCBWRklPX1NFTEZURVNUU19CREY9XFxcJiMzNDtzZWdtZW50OmJ1czpkZXZpY2UuZnVuY3Rpb25cXFwmIzM0O1xcblwmIzM0Oyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ICAgICVzIFtvcHRpb25zXVxcblwmIzM0OywgYXJndlswXSk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1RvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzKGVzKSB2aWEgYXJndjpcXG5cJiMzNDspO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGZwcmludGYoc3RkZXJyLCBcJiMzNDsgICAgJXMgW29wdGlvbnNdIHNlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvbiAuLi5cXG5cJiMzNDssIGFyZ3ZbMF0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcdGV4aXQoS1NGVF9TS0lQKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbmluZGV4IDA4MWUwNDVmNDY5NjBlLi5jYzkwM2NkYjQ1ZDkyZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbkBAIC04Niw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF92c29ja19hZGRyKEZJTEUgKmZwLCB1bnNpZ25lZCBpbnQgY2lkLCB1bnNpZ25lZCBpbnQgcG9ydClcbiBcdFx0ZnByaW50ZihmcCwgXCYjMzQ7JXU6XCYjMzQ7LCBjaWQpO1xuIFxuIFx0aWYgKHBvcnQgPT0gVk1BRERSX1BPUlRfQU5ZKVxuLVx0XHRmcHJpbnRmKGZwLCBcJiMzNDsqXCYjMzQ7KTtcbiYjNDM7XHRcdGZwdXRjKGZwLCAmIzM5OyomIzM5Oyk7XG4gXHRlbHNlXG4gXHRcdGZwcmludGYoZnAsIFwmIzM0OyV1XCYjMzQ7LCBwb3J0KTtcbiB9XG5AQCAtOTQsNyAmIzQzOzk0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfYWRkcihGSUxFICpmcCwgdW5zaWduZWQgaW50IGNpZCwgdW5zaWduZWQgaW50IHBvcnQpXG4gc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfc3RhdChGSUxFICpmcCwgc3RydWN0IHZzb2NrX3N0YXQgKnN0KVxuIHtcbiBcdHByaW50X3Zzb2NrX2FkZHIoZnAsIHN0LVx1MDAzZW1zZy52ZGlhZ19zcmNfY2lkLCBzdC1cdTAwM2Vtc2cudmRpYWdfc3JjX3BvcnQpO1xuLVx0ZnByaW50ZihmcCwgXCYjMzQ7IFwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoZnAsICYjMzk7ICYjMzk7KTtcbiBcdHByaW50X3Zzb2NrX2FkZHIoZnAsIHN0LVx1MDAzZW1zZy52ZGlhZ19kc3RfY2lkLCBzdC1cdTAwM2Vtc2cudmRpYWdfZHN0X3BvcnQpO1xuIFx0ZnByaW50ZihmcCwgXCYjMzQ7ICVzICVzICVzICV1XFxuXCYjMzQ7LFxuIFx0XHRzb2NrX3R5cGVfc3RyKHN0LVx1MDAzZW1zZy52ZGlhZ190eXBlKSxcbmRpZmYgLS1naXQgYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jXG5pbmRleCBjYjExMDhiYzkyNDk4OS4uZWJkYjk1ODE5YTc2NmQgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcbkBAIC01MjIsNyAmIzQzOzUyMiw3IEBAIGludCB1cGRhdGVfdGhlcm1hbF9kYXRhKClcbiBcdH1cbiBcbiBcdGlmICh0bW9uX2xvZykge1xuLVx0XHRmcHJpbnRmKHRtb25fbG9nLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0ZnB1dGModG1vbl9sb2csICYjMzk7XFxuJiMzOTspO1xuIFx0XHRmZmx1c2godG1vbl9sb2cpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmMgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5pbmRleCA3ZWIzMjE2YTI3ZjQ1Zi4uOWE5NzJmNzNhMmMwMDUgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5AQCAtMTk5LDcgJiM0MzsxOTksNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2xvZ2dpbmcodm9pZClcbiBcdFx0ZnByaW50Zih0bW9uX2xvZywgXCYjMzQ7JXMlZCBcJiMzNDssIHB0ZGF0YS5jZGlbaV0udHlwZSxcbiBcdFx0XHRwdGRhdGEuY2RpW2ldLmluc3RhbmNlKTtcbiBcbi1cdGZwcmludGYodG1vbl9sb2csIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGModG1vbl9sb2csICYjMzk7XFxuJiMzOTspO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmMgYi90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuY1xuaW5kZXggZWY5NzkxNmUzODczYTEuLjNkYzZmYjlkZjkyNjgzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXG5AQCAtMTk5OSw3ICYjNDM7MTk5OSw3IEBAIHN0YXRpYyB2b2lkIHNjYW5fYXJndW1lbnRzKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXCYjMzQ7YmVlbiBlbmFibGVkLiBSYW5kb20gc2xlZXAgaXMgaW50ZW5kZWQgZm9yIHRoZSBmb2xsb3dpbmcgdHJhY2VyczpcXG5cJiMzNDspO1xuIFx0XHRcdGZvciAoaSA9IDA7IHJhbmRvbV90cmFjZXJzW2ldOyBpJiM0MzsmIzQzOylcbiBcdFx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDslc1xcblwmIzM0OywgcmFuZG9tX3RyYWNlcnNbaV0pO1xuLVx0XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0XHR9XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uYyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcbmluZGV4IDhjN2Y1ZTc1YjJlYzhkLi5lODFlNjc2ZDUxZDJhZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcbkBAIC00NDksNyAmIzQzOzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsXG4gXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDslcyBbLWhdIFwmIzM0OywgbW9kZSk7XG4gXG4gXHRwcmludF9tc2dfYXJyYXkoc3RhcnRfbXNncyk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0cHJpbnRfbXNnX2FycmF5KGNvbW1vbl9vcHRpb25zKTtcbiBcdHByaW50X21zZ19hcnJheShvcHRfbXNncyk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jIGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jXG5pbmRleCBjYjE4N2U3ZDQ4ZDFjMi4uMzUzMmRhMmYyMjk2ZDggMTAwNjQ0XG4tLS0gYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xuQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIHZvaWQgZmF0YWwoY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXHR2YV9zdGFydChhcCwgZm10KTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4gXHR2YV9lbmQoYXApO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0ZnB1dGMoc3RkZXJyLCAmIzM5O1xcbiYjMzk7KTtcbiBcbiBcdGV4aXQoRVJST1IpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy91c2IvZmZzLXRlc3QuYyBiL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXG5pbmRleCAyMmI5MzhmYmRmYjc3Mi4uZTk5MzczNmJhMGQ2NDcgMTAwNjQ0XG4tLS0gYS90b29scy91c2IvZmZzLXRlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmNcbkBAIC01NjIsNyAmIzQzOzU2Miw3IEBAIGVtcHR5X291dF9idWYoc3RydWN0IHRocmVhZCAqaWdub3JlLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBuYnl0ZXMpXG4gXHRcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JTR6ZDpcJiMzNDssIGxlbik7XG4gXHRcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyAlMDJ4XCYjMzQ7LCAqcCk7XG4gXHRcdFx0aWYgKDMxID09IChsZW4gJSAzMikpXG4tXHRcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRmcHV0YyhzdGRlcnIsICYjMzk7XFxuJiMzOTspO1xuIFx0XHR9XG4gXHRcdGZmbHVzaChzdGRlcnIpO1xuIFx0XHRlcnJubyA9IEVJTFNFUTtcbmRpZmYgLS1naXQgYS90b29scy92ZXJpZmljYXRpb24vcnYvc3JjL2luX2tlcm5lbC5jIGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xuaW5kZXggZTZkZWE0MDQwZjhmNGMuLjI2MTMyMTcxZjYwMDhlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xuQEAgLTY2Nyw3ICYjNDM7NjY3LDcgQEAgc3RhdGljIHZvaWQgaWttX3VzYWdlX3ByaW50X3JlYWN0b3JzKHZvaWQpXG4gXHRcdGVuZCA9IHN0cnN0cihzdGFydCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdH1cbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdGZwdXRjKHN0ZGVyciwgJiMzOTtcXG4mIzM5Oyk7XG4gfVxuIC8qXG4gICogaWttX3VzYWdlIC0gcHJpbnQgdXNhZ2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMjozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE1OGZjZTA0MDVjZTFjNTQ4MTBkNmM1NWQ1ZWFkMTE4OTA3ZTBkZTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAyMjozNjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmMKaW5kZXggOGJmY2ZmOWUyZjYzOTQuLjc2YWJkM2Y0ZmJjYmM1IDEwMDY0NAotLS0gYS90b29scy9icGYvYnBmdG9vbC9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9jb21tb24uYwpAQCAtNTMsNyAmIzQzOzUzLDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLikKIAl9IGVsc2UgewogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtFcnJvcjogJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJdmFfZW5kKGFwKTsKIH0KQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIHZvaWQgcF9pbmZvKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogCiAJdmFfc3RhcnQoYXAsIGZtdCk7CiAJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCXZhX2VuZChhcCk7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYyBiL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYwppbmRleCBjOTFlMWE2ZTFhMWVjYS4uYWVjZmM3Nzg2MjVmNzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9tYWluLmMKQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgdm9pZCBmcHJpbnRfaGV4KEZJTEUgKmYsIHZvaWQgKmFyZywgdW5zaWduZWQgaW50IG4sIGNvbnN0IGNoYXIgKnNlcCkKIAkJaWYgKCFpKQogCQkJLyogbm90aGluZyAqLzsKIAkJZWxzZSBpZiAoIShpICUgMTYpKQotCQkJZnByaW50ZihmLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCWZwdXRjKGYsICYjMzk7XG4mIzM5Oyk7CiAJCWVsc2UgaWYgKCEoaSAlIDgpKQogCQkJZnByaW50ZihmLCAmIzM0OyAgJiMzNDspOwogCQllbHNlCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oIGIvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaAppbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaApAQCAtMjUsNyAmIzQzOzI1LDcgQEAKIAlpZiAoanNvbl9vdXRwdXQpCQkJCVwKIAkJanNvbndfc3RhcnRfb2JqZWN0KGpzb25fd3RyKTsJCVwKIAllbHNlCQkJCQkJXAotCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDt7JiMzNDspOwkJCVwKJiM0MzsJCXB1dGNoYXIoJiMzOTt7JiMzOTspOwkJCQlcCiB9CiAKICNkZWZpbmUgTkVUX0VORF9PQkpFQ1RfTkVTVEVECQkJCVwKQEAgLTMzLDcgJiM0MzszMyw3IEBACiAJaWYgKGpzb25fb3V0cHV0KQkJCQlcCiAJCWpzb253X2VuZF9vYmplY3QoanNvbl93dHIpOwkJXAogCWVsc2UJCQkJCQlcCi0JCWZwcmludGYoc3Rkb3V0LCAmIzM0O30mIzM0Oyk7CQkJXAomIzQzOwkJcHV0Y2hhcigmIzM5O30mIzM5Oyk7CQkJCVwKIH0KIAogI2RlZmluZSBORVRfRU5EX09CSkVDVAkJCQkJXApAQCAtNDcsNyAmIzQzOzQ3LDcgQEAKIAlpZiAoanNvbl9vdXRwdXQpCQkJCVwKIAkJanNvbndfZW5kX29iamVjdChqc29uX3d0cik7CQlcCiAJZWxzZQkJCQkJCVwKLQkJZnByaW50ZihzdGRvdXQsICYjMzQ7XG4mIzM0Oyk7CQkJXAomIzQzOwkJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwkJCQlcCiB9CiAKICNkZWZpbmUgTkVUX1NUQVJUX0FSUkFZKG5hbWUsIGZtdF9zdHIpCQkJXApkaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCmluZGV4IGE5ZjczMGQ0MDdhOTI5Li5kMjdjYjlkNDk4NjA5MyAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYwpAQCAtMTI2Niw3ICYjNDM7MTI2Niw3IEBAIHN0YXRpYyB2b2lkIGhleF9wcmludCh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgRklMRSAqZikKIAkJCWZwcmludGYoZiwgJiMzNDslYyVzJiMzNDssIGMsIGogPT0gaSAmIzQzOyA3ID8gJiMzNDsgJiMzNDsgOiAmIzM0OyYjMzQ7KTsKIAkJfQogCi0JCWZwcmludGYoZiwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKGYsICYjMzk7XG4mIzM5Oyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMgYi90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMKaW5kZXggYjcwODEzYjBiZjhlZmEuLmUxMmUxNDc4MGMwZTQ1IDEwMDY0NAotLS0gYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jCkBAIC0xMjEsNyAmIzQzOzEyMSw3IEBAIGludCBtb25pdG9yX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwKIAkJZGVmYXVsdDoKIAkJCWZwcmludGYoc3Rkb3V0LCAmIzM0O3Vua25vd24gZXZlbnQmIzM0Oyk7CiAJCX0KLQkJZnByaW50ZihzdGRvdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAKIAkJaSYjNDM7JiM0Mzs7CiAJCWlmIChpID09IGxvb3BzKQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jIGIvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jCmluZGV4IGJhMDg2NmViMzU4MTQ1Li5iNzZjOTRmZWUwNGQwOSAxMDA2NDQKLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuYwpAQCAtODcsNyAmIzQzOzg3LDcgQEAgaW50IGhhbW1lcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIHVuc2lnbmVkIGludCAqbGluZXMsIGludCBudW1fbGluZXMsCiAJCWlmIChqID09IHNpemVvZihzd2lycikgLSAxKQogCQkJaiA9IDA7CiAKLQkJZnByaW50ZihzdGRvdXQsICYjMzQ7WyYjMzQ7KTsKJiM0MzsJCXB1dGNoYXIoJiMzOTtbJiMzOTspOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX2xpbmVzOyBpJiM0MzsmIzQzOykgewogCQkJZnByaW50ZihzdGRvdXQsICYjMzQ7JXU6ICVkJiMzNDssIGxpbmVzW2ldLAogCQkJCWdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpOwpAQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBpbnQgaGFtbWVyX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgdW5zaWduZWQgaW50ICpsaW5lcywgaW50IG51bV9saW5lcywKIAkJaWYgKGxvb3BzICZhbXA7JmFtcDsgaXRlcmF0aW9uID09IGxvb3BzKQogCQkJYnJlYWs7CiAJfQotCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAJcmV0ID0gMDsKIAogZXhpdF9jbG9zZV9lcnJvcjoKZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vbHNncGlvLmMgYi90b29scy9ncGlvL2xzZ3Bpby5jCmluZGV4IDUyYTBiZTQ1NDEwYzk3Li5hYmIyYzZmYmMzZDdjYSAxMDA2NDQKLS0tIGEvdG9vbHMvZ3Bpby9sc2dwaW8uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9ncGlvL2xzZ3Bpby5jCkBAIC0xNTIsOSAmIzQzOzE1Miw5IEBAIGludCBsaXN0X2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSkKIAkJaWYgKGxpbmZvLmZsYWdzKSB7CiAJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDsgWyYjMzQ7KTsKIAkJCXByaW50X2F0dHJpYnV0ZXMoJmFtcDtsaW5mbyk7Ci0JCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtdJiMzNDspOwomIzQzOwkJCXB1dGNoYXIoJiMzOTtdJiMzOTspOwogCQl9Ci0JCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwogCiAJfQogCmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaCBiL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oCmluZGV4IGUyMmFlODdhNzI4OTIwLi44OWM5YTNkM2JjNzczMyAxMDA2NDQKLS0tIGEvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmgKQEAgLTI3LDcgJiM0MzsyNyw3IEBAIHZvaWQgdndhcm54KGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQogewogCWZwcmludGYoc3RkZXJyLCAmIzM0OyVzOiAmIzM0OywgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwogCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogfQogCiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMKaW5kZXggZTY5NTQ5MDk0MDFjOGUuLmUzYWIxZGI0NGIxNTRlIDEwMDY0NAotLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwpAQCAtODY3LDcgJiM0Mzs4NjcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQl9CiAJCQlpZiAoY3VsbCAmYW1wOyBDVUxMX1NUQUNLVFJBQ0UpCiAJCQkJZnByaW50Zihmb3V0LCAmIzM0OzpcbiVzJiMzNDssIGxpc3RbaV0uc3RhY2t0cmFjZSk7Ci0JCQlmcHJpbnRmKGZvdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJZnB1dGMoZm91dCwgJiMzOTtcbiYjMzk7KTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uYyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmMKaW5kZXggNWQwZjQyOGVlZDBhN2YuLjI0NWQ3ZjU4YzhmYjY1IDEwMDY0NAotLS0gYS90b29scy9uZXQveW5sL3lubHRvb2wvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmMKQEAgLTE1Niw3ICYjNDM7MTU2LDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLikKIAl9IGVsc2UgewogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtFcnJvcjogJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJdmFfZW5kKGFwKTsKIH0KQEAgLTE3MCw3ICYjNDM7MTcwLDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pCiAKIAl2YV9zdGFydChhcCwgZm10KTsKIAl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJdmFfZW5kKGFwKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmMgYi90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suYwppbmRleCAxMThjM2RlMmYyOTNlZS4uYjZkMjdkMzI2YjhhZDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jCkBAIC0yOTcsNyAmIzQzOzI5Nyw3IEBAIGludCBtYWtlX2JhY2t1cCh2b2lkKQogCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7ICVzJiMzNDssIGFyZyk7CiAJfQogCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jIGIvdG9vbHMvb2JqdG9vbC9kaXNhcy5jCmluZGV4IGU2YTU0YTgzNjA1YzkwLi4zMzlkMWQ1NjkwYzQyMCAxMDA2NDQKLS0tIGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuYwpAQCAtNTM3LDcgJiM0Mzs1MzcsNyBAQCB2b2lkIGRpc2FzX3ByaW50X2luc24oRklMRSAqc3RyZWFtLCBzdHJ1Y3QgZGlzYXNfY29udGV4dCAqZGN0eCwKIAkJcmV0dXJuOwogCiAJaWYgKHN0cmNtcChmb3JtYXQsICYjMzQ7XG4mIzM0OykgPT0gMCkgewotCQlmcHJpbnRmKHN0cmVhbSwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0cmVhbSwgJiMzOTtcbiYjMzk7KTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jCmluZGV4IGM5NTg0ZGJlZGY3N2FmLi5mYzliNmIxOGVkZWQ5ZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuYwpAQCAtMjUxMSw3ICYjNDM7MjUxMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2NhY2hlbGluZShzdHJ1Y3QgYzJjX2hpc3RzICpjMmNfaGlzdHMsCiAJCWhpc3RzX19mcHJpbnRmX2hlYWRlcnMoJmFtcDtjMmNfaGlzdHMtJmd0O2hpc3RzLCBvdXQpOwogCQlvbmNlID0gdHJ1ZTsKIAl9IGVsc2UgewotCQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKG91dCwgJiMzOTtcbiYjMzk7KTsKIAl9CiAKIAlmcHJpbnRmKG91dCwgJiMzNDsgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjMzQ7KTsKQEAgLTI1OTAsMTUgJiM0MzsyNTkwLDE1IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbikKIAlzZXR1cF9wYWdlcigpOwogCiAJcHJpbnRfYzJjX19kaXNwbGF5X3N0YXRzKG91dCk7Ci0JZnByaW50ZihvdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKG91dCwgJiMzOTtcbiYjMzk7KTsKIAlwcmludF9zaGFyZWRfY2FjaGVsaW5lX2luZm8ob3V0KTsKLQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMob3V0LCAmIzM5O1xuJiMzOTspOwogCXByaW50X2MyY19pbmZvKG91dCwgc2Vzc2lvbik7CiAKIAlpZiAoYzJjLnN0YXRzX29ubHkpCiAJCXJldHVybjsKIAotCWZwcmludGYob3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhvdXQsICYjMzk7XG4mIzM5Oyk7CiAJZnByaW50ZihvdXQsICYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiMzNDspOwogCWZwcmludGYob3V0LCAmIzM0OyAgICAgICAgICAgU2hhcmVkIERhdGEgQ2FjaGUgTGluZSBUYWJsZSAgICAgICAgICBcbiYjMzQ7KTsKIAlmcHJpbnRmKG91dCwgJiMzNDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4mIzM0Oyk7CkBAIC0yNjA2LDcgJiM0MzsyNjA2LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9jMmNfX2hpc3RzX2ZwcmludGYoRklMRSAqb3V0LCBzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uKQogCiAJaGlzdHNfX2ZwcmludGYoJmFtcDtjMmMuaGlzdHMuaGlzdHMsIHRydWUsIDAsIDAsIDAsIHN0ZG91dCwgdHJ1ZSk7CiAKLQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMob3V0LCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYob3V0LCAmIzM0Oz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiYjMzQ7KTsKIAlmcHJpbnRmKG91dCwgJiMzNDsgICAgICBTaGFyZWQgQ2FjaGUgTGluZSBEaXN0cmlidXRpb24gUGFyZXRvICAgICAgXG4mIzM0Oyk7CiAJZnByaW50ZihvdXQsICYjMzQ7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jCmluZGV4IGM0NjMyNTc3ZDEyOTYzLi43Y2IyMGIzYTAzZTRjZCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uYwpAQCAtNjkxLDcgJiM0Mzs2OTEsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KQogCQkJLyogc2Vzc2lvbiB1cCB0aW1lICovCiAJCQljc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gZGFlbW9uLSZndDtzdGFydCkgLyA2MCkpOwogCi0JCWZwcmludGYob3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMob3V0LCAmIzM5O1xuJiMzOTspOwogCX0gZWxzZSB7CiAJCWZwcmludGYob3V0LCAmIzM0O1slZDpkYWVtb25dIGJhc2U6ICVzXG4mIzM0OywgZ2V0cGlkKCksIGRhZW1vbi0mZ3Q7YmFzZSk7CiAJCWlmIChjbWQtJmd0O2xpc3QudmVyYm9zZSkgewpAQCAtNzMwLDcgJiM0Mzs3MzAsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KQogCQkJCS8qIHNlc3Npb24gdXAgdGltZSAqLwogCQkJCWNzdl9zZXAsICh1aW50NjRfdCkoKGN1cnIgLSBzZXNzaW9uLSZndDtzdGFydCkgLyA2MCkpOwogCi0JCQlmcHJpbnRmKG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCQlmcHV0YyhvdXQsICYjMzk7XG4mIzM5Oyk7CiAJCX0gZWxzZSB7CiAJCQlmcHJpbnRmKG91dCwgJiMzNDtbJWQ6JXNdIHBlcmYgcmVjb3JkICVzXG4mIzM0OywKIAkJCQlzZXNzaW9uLSZndDtwaWQsIHNlc3Npb24tJmd0O25hbWUsIHNlc3Npb24tJmd0O3J1bik7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tbG9jay5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYwppbmRleCA1ODQxZDQzYmU5NzE4NC4uMDVmMThkNDlmYzdiMTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYwpAQCAtMTMxOSw5ICYjNDM7MTMxOSw5IEBAIHN0YXRpYyB2b2lkIHByaW50X3Jlc3VsdCh2b2lkKQogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoa2V5LCAmYW1wO2xvY2tfa2V5cywgbGlzdCkgewogCQkJa2V5LSZndDtwcmludChrZXksIHN0KTsKLQkJCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7ICYjMzQ7KTsKJiM0MzsJCQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTsgJiMzOTspOwogCQl9Ci0JCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAogCQlpZiAoJiM0MzsmIzQzO3ByaW50ZWQgJmd0Oz0gcHJpbnRfbnJfZW50cmllcykKIAkJCWJyZWFrOwpAQCAtMTU5OCw3ICYjNDM7MTU5OCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9jc3YoY29uc3QgY2hhciAqc2VwKQogCQlmcHJpbnRmKGxvY2tfb3V0cHV0LCAmIzM0OyVzJXMgJXMmIzM0OywgJiMzNDt0eXBlJiMzNDssIHNlcCwgJiMzNDtjYWxsZXImIzM0Oyk7CiAJCWlmICh2ZXJib3NlICZndDsgMCkKIAkJCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7JXMgJXMmIzM0Oywgc2VwLCAmIzM0O3N0YWNrdHJhY2UmIzM0Oyk7Ci0JCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAkJYnJlYWs7CiAJY2FzZSBMT0NLX0FHR1JfQUREUjoKIAkJZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDslcyVzICVzJXMgJXNcbiYjMzQ7LCAmIzM0O2FkZHJlc3MmIzM0Oywgc2VwLCAmIzM0O3N5bWJvbCYjMzQ7LCBzZXAsICYjMzQ7dHlwZSYjMzQ7KTsKQEAgLTE2MjksNyAmIzQzOzE2MjksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9sb2NrX3N0YXRfc3RkaW8oc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGtleSwgJmFtcDtsb2NrX2tleXMsIGxpc3QpIHsKIAkJa2V5LSZndDtwcmludChrZXksIHN0KTsKLQkJZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDsgJiMzNDspOwomIzQzOwkJZnB1dGMobG9ja19vdXRwdXQsICYjMzk7ICYjMzk7KTsKIAl9CiAKIAlzd2l0Y2ggKGFnZ3JfbW9kZSkgewpAQCAtMTY4Nyw3ICYjNDM7MTY4Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzCiAJY2FzZSBMT0NLX0FHR1JfQ0FMTEVSOgogCQlmcHJpbnRmKGxvY2tfb3V0cHV0LCAmIzM0OyVzJXMgJXMmIzM0OywgZ2V0X3R5cGVfZmxhZ3NfbmFtZShzdC0mZ3Q7ZmxhZ3MpLCBzZXAsIHN0LSZndDtuYW1lKTsKIAkJaWYgKHZlcmJvc2UgJmx0Oz0gMCkKLQkJCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJZnB1dGMobG9ja19vdXRwdXQsICYjMzk7XG4mIzM5Oyk7CiAJCWJyZWFrOwogCWNhc2UgTE9DS19BR0dSX1RBU0s6CiAJCXBpZCA9IHN0LSZndDthZGRyOwpAQCAtMTcyMSw3ICYjNDM7MTcyMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzCiAJCQlnZXRfc3ltYm9sX25hbWVfb2Zmc2V0KGttYXAsIHN5bSwgaXAsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogCQkJZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDslcyAlI2x4ICVzJiMzNDssIGkgPyAmIzM0OzomIzM0OyA6IHNlcCwgKHVuc2lnbmVkIGxvbmcpIGlwLCBidWYpOwogCQl9Ci0JCWZwcmludGYobG9ja19vdXRwdXQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyhsb2NrX291dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAl9CiB9CiAKQEAgLTE3ODEsNyAmIzQzOzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9mb290ZXJfY3N2KGludCB0b3RhbCwgaW50IGJhZCwgc3RydWN0IGxvY2tfY29udGVudGlvbl9mYWlscyAqZgogCQlmb3IgKGkgPSAwOyBpICZsdDsgQlJPS0VOX01BWDsgaSYjNDM7JiM0MzspCiAJCQlmcHJpbnRmKGxvY2tfb3V0cHV0LCAmIzM0OyVzIGJhZF8lcz0lZCYjMzQ7LCBzZXAsIG5hbWVbaV0sIGJhZF9oaXN0W2ldKTsKIAl9Ci0JZnByaW50Zihsb2NrX291dHB1dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMobG9ja19vdXRwdXQsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZhaWxzKQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jIGIvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jCmluZGV4IDlhYzI5YmRjM2NkNTQ3Li5lNjBjMDczMDVkMTk4YiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuYwpAQCAtMjU2MSw3ICYjNDM7MjU2MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZXZlbnQoc3RydWN0IHBlcmZfc2NyaXB0ICpzY3JpcHQsCiAKIAlwZXJmX3NhbXBsZV9fZnByaW50Zl9pcGMoc2FtcGxlLCBldnNlbCwgZnApOwogCi0JZnByaW50ZihmcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoUFJJTlRfRklFTEQoU1JDQ09ERSkpIHsKIAkJaWYgKG1hcF9fZnByaW50Zl9zcmNjb2RlKGFsLSZndDttYXAsIGFsLSZndDthZGRyLCBzdGRvdXQsCkBAIC0yODE1LDcgJiM0MzsyODE1LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX2RlZmVycmVkX3NhbXBsZV9ldmVudChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sLAogCQkJCSAgICBjdXJzb3IsIHN5bWJvbF9jb25mLmJ0X3N0b3BfbGlzdCwgZnApOwogCX0KIAotCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGZwLCAmIzM5O1xuJiMzOTspOwogCiAJaWYgKHZlcmJvc2UgJmd0OyAwKQogCQlmZmx1c2goZnApOwpAQCAtMzI3MSwxMSAmIzQzOzMyNzEsMTEgQEAgc3RhdGljIGludCBsaXN0X2F2YWlsYWJsZV9sYW5ndWFnZXNfY2Ioc3RydWN0IHNjcmlwdGluZ19vcHMgKm9wcywgY29uc3QgY2hhciAqc3AKIAogc3RhdGljIHZvaWQgbGlzdF9hdmFpbGFibGVfbGFuZ3VhZ2VzKHZvaWQpCiB7Ci0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAlmcHJpbnRmKHN0ZGVyciwgJiMzNDtTY3JpcHRpbmcgbGFuZ3VhZ2UgZXh0ZW5zaW9ucyAodXNlZCBpbiAmIzM0OwogCQkmIzM0O3BlcmYgc2NyaXB0IC1zIFtzcGVjOl1zY3JpcHQuW3NwZWNdKTpcblxuJiMzNDspOwogCXNjcmlwdF9zcGVjX19mb3JfZWFjaCgmYW1wO2xpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYik7Ci0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIH0KIAogLyogRmluZCBzY3JpcHQgZmlsZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeSBvciBleGVjIHBhdGggKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwppbmRleCBjNDdmNWMzODc4MzhjNS4uMDM3ZWJjNDdmN2RjY2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmMKQEAgLTM3LDcgJiM0MzszNyw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O0Vycm9yOlxuJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7Ci0JCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC02Miw3ICYjNDM7NjIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTgzLDcgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJCXJldHVybiAtMTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jIGIvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmMKaW5kZXggOGM0Yzg5MjVkZjJjMjIuLjA0NGQyYWEzYjMxMjE4IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuYwpAQCAtNjkxLDcgJiM0Mzs2OTEsNyBAQCBzdGF0aWMgaW50IGhpc3RzX19mcHJpbnRmX2hpZXJhcmNoeV9oZWFkZXJzKHN0cnVjdCBoaXN0cyAqaGlzdHMsCiAJCX0KIAogbmV4dF9saW5lOgotCQlmcHJpbnRmKGZwLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiAJfQogCiAJZnByaW50ZihmcCwgJiMzNDsjICYjMzQ7KTsKQEAgLTc4Myw3ICYjNDM7NzgzLDcgQEAgaGlzdHNfX2ZwcmludGZfc3RhbmRhcmRfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLAogCQlpZiAobGluZSkKIAkJCWZwcmludGYoZnAsICYjMzQ7IyAmIzM0Oyk7CiAJCWZwcmludGZfbGluZShoaXN0cywgaHBwLCBsaW5lLCBmcCk7Ci0JCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAl9CiAKIAlpZiAoc2VwKQpAQCAtODA2LDEwICYjNDM7ODA2LDEwIEBAIGhpc3RzX19mcHJpbnRmX3N0YW5kYXJkX2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cywKIAogCQl3aWR0aCA9IGZtdC0mZ3Q7d2lkdGgoZm10LCBocHAsIGhpc3RzKTsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IHdpZHRoOyBpJiM0MzsmIzQzOykKLQkJCWZwcmludGYoZnAsICYjMzQ7LiYjMzQ7KTsKJiM0MzsJCQlmcHV0YyhmcCwgJiMzOTsuJiMzOTspOwogCX0KIAotCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGZwLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoZnAsICYjMzQ7I1xuJiMzNDspOwogCXJldHVybiBocHBfbGlzdC0mZ3Q7bnJfaGVhZGVyX2xpbmVzICYjNDM7IDI7CiB9CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMKaW5kZXggNWQwNjY0ZmY3M2I3OTEuLjhlMDk5Y2NhYWUzOWE2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS5jCkBAIC04OTUsNyAmIzQzOzg5NSw3IEBAIHN0YXRpYyB2b2lkIGNzX2V0bV9fZHVtcF9ldmVudChzdHJ1Y3QgY3NfZXRtX3F1ZXVlICpldG1xLAogCWNvbnN0IGNoYXIgKmNvbG9yID0gUEVSRl9DT0xPUl9CTFVFOwogCXNpemVfdCBidWZmZXJfdXNlZCA9IDA7CiAKLQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwogCWNvbG9yX2ZwcmludGYoc3Rkb3V0LCBjb2xvciwKIAkJICAgICAmIzM0Oy4gLi4uIENvcmVTaWdodCAlcyBUcmFjZSBkYXRhOiBzaXplICUjenggYnl0ZXNcbiYjMzQ7LAogCQkgICAgIGNzX2V0bV9kZWNvZGVyX19nZXRfbmFtZShldG1xLSZndDtkZWNvZGVyKSwgYnVmZmVyLSZndDtzaXplKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jIGIvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmMKaW5kZXggNmI1ZmZlODFmMTQxMjEuLjU0Mjk5ODRhYjQ5YzkwIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvZGVidWcuYwpAQCAtMzUwLDcgJiM0MzszNTAsNyBAQCB2b2lkIF9fZHVtcF9zdGFjayhGSUxFICpmaWxlLCB2b2lkICoqc3RhY2tkdW1wLCBzaXplX3Qgc3RhY2tkdW1wX3NpemUpCiAJCQlmcHJpbnRmKGZpbGUsICYjMzQ7ICAgICMlemQgJXAgJiMzNDssIGksIHN0YWNrZHVtcFtpXSk7CiAKIAkJbWFwX19mcHJpbnRmX3NyY2xpbmUoYWwubWFwLCBhbC5hZGRyLCAmIzM0OyYjMzQ7LCBmaWxlKTsKLQkJZnByaW50ZihmaWxlLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMoZmlsZSwgJiMzOTtcbiYjMzk7KTsKIAkJYWRkcl9sb2NhdGlvbl9fZXhpdCgmYW1wO2FsKTsKIAl9CiAJdGhyZWFkX19wdXQodGhyZWFkKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuYyBiL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuYwppbmRleCAwOTFkOGY3ZjZiZDJjOS4uOTY1YjE3YzgxMjI0YjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvaGVhZGVyLmMKQEAgLTI0NTQsNyAmIzQzOzI0NTQsNyBAQCBzdGF0aWMgdm9pZCBfX3ByaW50X3BtdV9jYXBzKEZJTEUgKmZwLCBpbnQgbnJfY2FwcywgY2hhciAqKmNhcHMsIGNoYXIgKnBtdV9uYW1lKQogCQlkZWxpbWl0ZXIgPSAmIzM0OywgJiMzNDs7CiAJfQogCi0JZnByaW50ZihmcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X2NwdV9wbXVfY2FwcyhzdHJ1Y3QgZmVhdF9mZCAqZmYsIEZJTEUgKmZwKQpAQCAtMjUxMyw3ICYjNDM7MjUxMyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3BtdV9tYXBwaW5ncyhzdHJ1Y3QgZmVhdF9mZCAqZmYsIEZJTEUgKmZwKQogCQlwbXVfbnVtLS07CiAJfQogCi0JZnByaW50ZihmcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZnAsICYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoIXBtdV9udW0pCiAJCXJldHVybjsKQEAgLTQzNDksNyAmIzQzOzQzNDksNyBAQCBpbnQgcGVyZl9oZWFkZXJfX2ZwcmludGZfaW5mbyhzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uLCBGSUxFICpmcCwgYm9vbCBmdWxsKQogCQkJZnByaW50ZihmcCwgJiMzNDslcyAmIzM0OywgZmVhdF9vcHNbYml0XS5uYW1lKTsKIAl9CiAKLQlmcHJpbnRmKGZwLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmMgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuYwppbmRleCBlZjU1ZDYyMzJjZjBjMi4uMGEzNTQ5M2I4NTRhY2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jCkBAIC03MCwxNCAmIzQzOzcwLDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X2RhdGEoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbGVuLCB1aW50NjRfdCBwb3MsCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgaW5kZW50OyBpJiM0MzsmIzQzOykKLQkJZnByaW50ZihmLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CQlmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7CiAKIAlmcHJpbnRmKGYsICYjMzQ7ICAlMDgmIzM0OyBQUkl4NjQgJiMzNDs6ICYjMzQ7LCBwb3MpOwogCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KQogCQlmcHJpbnRmKGYsICYjMzQ7ICUwMngmIzM0OywgYnVmW2ldKTsKIAlmb3IgKDsgaSAmbHQ7IDE2OyBpJiM0MzsmIzQzOykKIAkJZnByaW50ZihmLCAmIzM0OyAgICYjMzQ7KTsKLQlmcHJpbnRmKGYsICYjMzQ7ICYjMzQ7KTsKJiM0MzsJZnB1dGMoZiwgJiMzOTsgJiMzOTspOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9ub19kYXRhKHVpbnQ2NF90IHBvcywgaW50IGluZGVudCkKQEAgLTg1LDEyICYjNDM7ODUsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHRfcHJpbnRfbm9fZGF0YSh1aW50NjRfdCBwb3MsIGludCBpbmRlbnQpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgaW5kZW50OyBpJiM0MzsmIzQzOykKLQkJZnByaW50ZihmLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CQlmcHV0YyhmLCAmIzM5OyAmIzM5Oyk7CiAKIAlmcHJpbnRmKGYsICYjMzQ7ICAlMDgmIzM0OyBQUkl4NjQgJiMzNDs6ICYjMzQ7LCBwb3MpOwogCWZvciAoaSA9IDA7IGkgJmx0OyAxNjsgaSYjNDM7JiM0MzspCiAJCWZwcmludGYoZiwgJiMzNDsgICAmIzM0Oyk7Ci0JZnByaW50ZihmLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CWZwdXRjKGYsICYjMzk7ICYjMzk7KTsKIH0KIAogc3RhdGljIHNzaXplX3QgbG9nX2J1Zl9fd3JpdGUodm9pZCAqY29va2llLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jIGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jCmluZGV4IGMxYzEyMzA4Y2MxMmZmLi4yNjM4OTQ2NjNmMWE4NyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9saWJiZmQuYwpAQCAtNjAzLDcgJiM0Mzs2MDMsNyBAQCBpbnQgc3ltYm9sX19kaXNhc3NlbWJsZV9icGZfbGliYmZkKHN0cnVjdCBzeW1ib2wgKnN5bSBfX21heWJlX3VudXNlZCwKIAkJfSBlbHNlCiAJCQlzcmNsaW5lID0gTlVMTDsKIAotCQlmcHJpbnRmKHMsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzLCAmIzM5O1xuJiMzOTspOwogCQlwcmV2X2J1Zl9zaXplID0gYnVmX3NpemU7CiAJCWZmbHVzaChzKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uYyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmMKaW5kZXggZjM5MWE4MjI0ODBkYjAuLjYzYThkM2NjYWE0ZjljIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvc2Vzc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmMKQEAgLTEyNTcsNyAmIzQzOzEyNTcsNyBAQCBpbnQgcGVyZl9ldmVudF9fcHJvY2Vzc19maW5pc2hlZF9yb3VuZChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sIF9fbWF5YmVfdW51cwogCQkJCSAgICAgICBzdHJ1Y3Qgb3JkZXJlZF9ldmVudHMgKm9lKQogewogCWlmIChkdW1wX3RyYWNlKQotCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCXB1dGNoYXIoJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gb3JkZXJlZF9ldmVudHNfX2ZsdXNoKG9lLCBPRV9GTFVTSF9fUk9VTkQpOwogfQogCkBAIC00MDAwLDcgJiM0Mzs0MDAwLDcgQEAgaW50IHBlcmZfZXZlbnRfX3Byb2Nlc3NfaWRfaW5kZXgoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCBfX21heWJlX3VudXNlZCwKIAkJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDsgIG1hY2hpbmVfcGlkOiAlJiMzNDtQUklfbGQ2NCwgZTItJmd0O21hY2hpbmVfcGlkKTsKIAkJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDsgIHZjcHU6ICUmIzM0O1BSSV9sdTY0JiMzNDtcbiYjMzQ7LCBlMi0mZ3Q7dmNwdSk7CiAJCQl9IGVsc2UgewotCQkJCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCQlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jIGIvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jCmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuYwpAQCAtNTI5LDcgJiM0Mzs1MjksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9tZXRyaWNfanNvbihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnIF9fbWF5YmVfdW51c2VkLAogCQl9CiAJfQogCWlmICghY29uZmlnLSZndDttZXRyaWNfb25seSkKLQkJZnByaW50ZihvdXQsICYjMzQ7fSYjMzQ7KTsKJiM0MzsJCWZwdXRjKG91dCwgJiMzOTt9JiMzOTspOwogfQogCiBzdGF0aWMgdm9pZCBuZXdfbGluZV9qc29uKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsIHZvaWQgKmN0eCkKQEAgLTEzMTYsNyAmIzQzOzEzMTYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWFkZXJfc3RkKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsCiAJRklMRSAqb3V0cHV0ID0gY29uZmlnLSZndDtvdXRwdXQ7CiAJaW50IGk7CiAKLQlmcHJpbnRmKG91dHB1dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMob3V0cHV0LCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYob3V0cHV0LCAmIzM0OyBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAmIzM0Oyk7CiAJaWYgKF90YXJnZXQtJmd0O2JwZl9zdHIpCiAJCWZwcmludGYob3V0cHV0LCAmIzM0O1wmIzM5O0JQRiBwcm9ncmFtKHMpICVzJiMzNDssIF90YXJnZXQtJmd0O2JwZl9zdHIpOwpAQCAtMTMzMyw3ICYjNDM7MTMzMyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9zdGQoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywKIAllbHNlCiAJCWZwcmludGYob3V0cHV0LCAmIzM0O3RocmVhZCBpZCBcJiMzOTslcyYjMzQ7LCBfdGFyZ2V0LSZndDt0aWQpOwogCi0JZnByaW50ZihvdXRwdXQsICYjMzQ7XCYjMzk7JiMzNDspOwomIzQzOwlmcHV0YyhvdXRwdXQsICYjMzk7XCYjMzk7JiMzOTspOwogCWlmIChjb25maWctJmd0O3J1bl9jb3VudCAmZ3Q7IDEpCiAJCWZwcmludGYob3V0cHV0LCAmIzM0OyAoJWQgcnVucykmIzM0OywgY29uZmlnLSZndDtydW5fY291bnQpOwogCWZwcmludGYob3V0cHV0LCAmIzM0OzpcblxuJiMzNDspOwpAQCAtMTQwNiw5ICYjNDM7MTQwNiw5IEBAIHN0YXRpYyB2b2lkIHByaW50X3RhYmxlKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsIEZJTEUgKm91dHB1dCwgZG91YmxlIGF2CiAJCWZwcmludGYob3V0cHV0LCAmIzM0OyAlMTcuOWYgKCUmIzQzOy45ZikgJiMzNDssIHJ1biwgcnVuIC0gYXZnKTsKIAogCQlmb3IgKGggPSAwOyBoICZsdDsgbjsgaCYjNDM7JiM0MzspCi0JCQlmcHJpbnRmKG91dHB1dCwgJiMzNDsjJiMzNDspOwomIzQzOwkJCWZwdXRjKG91dHB1dCwgJiMzOTsjJiMzOTspOwogCi0JCWZwcmludGYob3V0cHV0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMob3V0cHV0LCAmIzM5O1xuJiMzOTspOwogCX0KIAogCWZwcmludGYob3V0cHV0LCAmIzM0O1xuJSpzIyBGaW5hbCByZXN1bHQ6XG4mIzM0OywgaW5kZW50LCAmIzM0OyYjMzQ7KTsKQEAgLTE0MjgsNyAmIzQzOzE0MjgsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9mb290ZXIoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZykKIAkJcmV0dXJuOwogCiAJaWYgKCFjb25maWctJmd0O251bGxfcnVuKQotCQlmcHJpbnRmKG91dHB1dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKG91dHB1dCwgJiMzOTtcbiYjMzk7KTsKIAogCWlmIChjb25maWctJmd0O3J1bl9jb3VudCA9PSAxKSB7CiAJCWZwcmludGYob3V0cHV0LCAmIzM0OyAlMTcuOWYgc2Vjb25kcyB0aW1lIGVsYXBzZWQmIzM0OywgYXZnKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYwppbmRleCA2ZWFkZGZjZjgzM2U1Mi4uMmM1MzQwYTkyOGRkMWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmMKQEAgLTIxNyw3ICYjNDM7MjE3LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9yZWFkX3ZhbHVlc19fZGlzcGxheV9wcmV0dHkoRklMRSAqZnAsCiAJZnByaW50ZihmcCwgJiMzNDsjICUqcyAgJSpzJiMzNDssIHBpZHdpZHRoLCAmIzM0O1BJRCYjMzQ7LCB0aWR3aWR0aCwgJiMzNDtUSUQmIzM0Oyk7CiAJZm9yIChqID0gMDsgaiAmbHQ7IHZhbHVlcy0mZ3Q7bnVtX2NvdW50ZXJzOyBqJiM0MzsmIzQzOykKIAkJZnByaW50ZihmcCwgJiMzNDsgICUqcyYjMzQ7LCBjb3VudGVyd2lkdGhbal0sIGV2c2VsX19uYW1lKHZhbHVlcy0mZ3Q7Y291bnRlcnNbal0pKTsKLQlmcHJpbnRmKGZwLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB2YWx1ZXMtJmd0O3RocmVhZHM7IGkmIzQzOyYjNDM7KSB7CiAJCWZwcmludGYoZnAsICYjMzQ7ICAlKmQgICUqZCYjMzQ7LCBwaWR3aWR0aCwgdmFsdWVzLSZndDtwaWRbaV0sCkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLAogCQlmb3IgKGogPSAwOyBqICZsdDsgdmFsdWVzLSZndDtudW1fY291bnRlcnM7IGomIzQzOyYjNDM7KQogCQkJZnByaW50ZihmcCwgJiMzNDsgICUqJiMzNDsgUFJJdTY0LAogCQkJCWNvdW50ZXJ3aWR0aFtqXSwgdmFsdWVzLSZndDt2YWx1ZVtpXVtqXSk7Ci0JCWZwcmludGYoZnAsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhmcCwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJZnJlZShjb3VudGVyd2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuYyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmMKaW5kZXggNzJhZDc5MTViMDRmZDIuLjYwMGQ1YjZlMDRhODgwIDEwMDY0NAotLS0gYS90b29scy9wb3dlci9hY3BpL3Rvb2xzL2FjcGlkdW1wL2FwZHVtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmMKQEAgLTE3MSw3ICYjNDM7MTcxLDcgQEAgYXBfZHVtcF90YWJsZV9idWZmZXIoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSwKIAlhY3BpX3V0X2R1bXBfYnVmZmVyX3RvX2ZpbGUoZ2JsX291dHB1dF9maWxlLAogCQkJCSAgICBBQ1BJX0NBU1RfUFRSKHU4LCB0YWJsZSksIHRhYmxlX2xlbmd0aCwKIAkJCQkgICAgREJfQllURV9ESVNQTEFZLCAwKTsKLQlmcHJpbnRmKGdibF9vdXRwdXRfZmlsZSwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoZ2JsX291dHB1dF9maWxlLCAmIzM5O1xuJiMzOTspOwogCXJldHVybiAoMCk7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmMgYi90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jCmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDQKLS0tIGEvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jCkBAIC0xMjIsNyAmIzQzOzEyMiw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKQogCiAJaWYgKGxldmVsID09IDApIHsKIAkJaWYgKGhlYWRlcikKLQkJCWZwcmludGYob3V0ZiwgJiMzNDt7JiMzNDspOwomIzQzOwkJCWZwdXRjKG91dGYsICYjMzk7eyYjMzk7KTsKIAkJZWxzZQogCQkJZnByaW50ZihvdXRmLCAmIzM0O1xufVxuJiMzNDspOwogCkBAIC0xMzgsNyAmIzQzOzEzOCw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKQogCiAJCWlmICh2YWx1ZSkgewogCQkJaWYgKGxhc3RfbGV2ZWwgIT0gbGV2ZWwpCi0JCQkJZnByaW50ZihvdXRmLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCQlmcHV0YyhvdXRmLCAmIzM5O1xuJiMzOTspOwogCiAJCQlmcHJpbnRmKG91dGYsICYjMzQ7JXNcJiMzNDslc1wmIzM0OzogJiMzNDssIGRlbGltaXRlcnMsIGhlYWRlcik7CiAJCQlmcHJpbnRmKG91dGYsICYjMzQ7XCYjMzQ7JXNcJiMzNDsmIzM0OywgdmFsdWUpOwpAQCAtMTU2LDcgJiM0MzsxNTYsNyBAQCBzdGF0aWMgdm9pZCBmb3JtYXRfYW5kX3ByaW50KEZJTEUgKm91dGYsIGludCBsZXZlbCwgY2hhciAqaGVhZGVyLCBjaGFyICp2YWx1ZSkKIAkJCQkJZnByaW50ZihvdXRmLCAmIzM0O1xuJXN9JiMzNDssIGRlbGltaXRlcnMpOwogCQkJfQogCQkJaWYgKGFicyhsYXN0X2xldmVsIC0gbGV2ZWwpICZsdDsgMykKLQkJCQlmcHJpbnRmKG91dGYsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJCWZwdXRjKG91dGYsICYjMzk7XG4mIzM5Oyk7CiAJCQlpZiAoaGVhZGVyKQogCQkJCWZwcmludGYob3V0ZiwgJiMzNDslc1wmIzM0OyVzXCYjMzQ7OiB7JiMzNDssIGRlbGltaXRlcnMsCiAJCQkJCWhlYWRlcik7CmRpZmYgLS1naXQgYS90b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jIGIvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYwppbmRleCA5MjA2OTRjM2MxZWM5NC4uNDVkMzlhMGZjZjcyYTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYwpAQCAtOTA5OSw3ICYjNDM7OTA5OSw3IEBAIHZvaWQgZHVtcF9jcHVpZF9oeXBlcnZpc29yKHZvaWQpCiAJZHVtcF93b3JkX2NoYXJzKGVieCk7CiAJZHVtcF93b3JkX2NoYXJzKGVjeCk7CiAJZHVtcF93b3JkX2NoYXJzKGVkeCk7Ci0JZnByaW50ZihvdXRmLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhvdXRmLCAmIzM5O1xuJiMzOTspOwogfQogCiB2b2lkIHByb2Nlc3NfY3B1aWQoKQpAQCAtOTc0OSw3ICYjNDM7OTc0OSw3IEBAIHZvaWQgdG9wb2xvZ3lfcHJvYmUoYm9vbCBzdGFydHVwKQogCQlmcHJpbnRmKG91dGYsICYjMzQ7IHNpYmxpbmdzJiMzNDspOwogCQlmb3IgKGh0X2lkID0gMDsgaHRfaWQgJmx0Oz0gTUFYX0hUX0lEOyAmIzQzOyYjNDM7aHRfaWQpCiAJCQlmcHJpbnRmKG91dGYsICYjMzQ7ICVkJiMzNDssIGNwdXNbaV0uaHRfc2libGluZ19jcHVfaWRbaHRfaWRdKTsKLQkJZnByaW50ZihvdXRmLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGMob3V0ZiwgJiMzOTtcbiYjMzk7KTsKIAl9CiAKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYwppbmRleCAxZWUyMTdkOTc0MzQwZS4uNjRiOTdhNDFhZjQ1ZWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMKQEAgLTE0OCw3ICYjNDM7MTQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBodGFiX21lbV91c2VfY2FzZSAqaHRhYl9tZW1fZmluZF91c2VfY2FzZV9vcl9leGl0KGNvbnN0IGNoYXIKIAlmcHJpbnRmKHN0ZGVyciwgJiMzNDthdmFpbGFibGUgdXNlIGNhc2U6JiMzNDspOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHVzZV9jYXNlcyk7IGkmIzQzOyYjNDM7KQogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDsgJXMmIzM0OywgdXNlX2Nhc2VzW2ldLm5hbWUpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJZXhpdCgxKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jCmluZGV4IDM1NThmZTEwZTI4Y2Y5Li41OGVhMmEyZWMxM2UyZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuYwpAQCAtMjI4LDcgJiM0MzsyMjgsNyBAQCBpbnQgZ2V0X2ppdGVkX3Byb2dyYW1fdGV4dChpbnQgZmQsIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X3N6KQogCWZvciAocGMgPSAwLCBpID0gMDsgaSAmbHQ7IGppdGVkX2Z1bmNzOyAmIzQzOyYjNDM7aSkgewogCQlmcHJpbnRmKHRleHRfb3V0LCAmIzM0O2Z1bmMgIyVkOlxuJiMzNDssIGkpOwogCQlkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICYjNDM7IHBjLCBmdW5jX2xlbnNbaV0pOwotCQlmcHJpbnRmKHRleHRfb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwkJZnB1dGModGV4dF9vdXQsICYjMzk7XG4mIzM5Oyk7CiAJCXBjICYjNDM7PSBmdW5jX2xlbnNbaV07CiAJfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYwppbmRleCA3YmE4Mjk3NGVlNzg0ZC4uYjUyMGJlMWJmN2FhYTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYwpAQCAtMzgzLDcgJiM0MzszODMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90ZXN0X3Jlc3VsdChjb25zdCBzdHJ1Y3QgcHJvZ190ZXN0X2RlZiAqdGVzdCwgY29uc3Qgc3RydWN0IHRlcwogCWVsc2UKIAkJZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCAmIzM0O09LIChTS0lQOiAlZC8lZCkmIzM0Oywgc2tpcHBlZF9jbnQsIHN1YnRlc3RzX2NudCk7CiAKLQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfbG9nKGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KQpAQCAtMzkxLDcgJiM0MzszOTEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90ZXN0X2xvZyhjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudCkKIAlsb2dfYnVmW2xvZ19jbnRdID0gJiMzOTtcMCYjMzk7OwogCWZwcmludGYoZW52LnN0ZG91dF9zYXZlZCwgJiMzNDslcyYjMzQ7LCBsb2dfYnVmKTsKIAlpZiAobG9nX2J1Zltsb2dfY250IC0gMV0gIT0gJiMzOTtcbiYjMzk7KQotCQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhlbnYuc3Rkb3V0X3NhdmVkLCAmIzM5O1xuJiMzOTspOwogfQogCiBzdGF0aWMgdm9pZCBwcmludF9zdWJ0ZXN0X25hbWUoaW50IHRlc3RfbnVtLCBpbnQgc3VidGVzdF9udW0sCkBAIC00MDksNyAmIzQzOzQwOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3N1YnRlc3RfbmFtZShpbnQgdGVzdF9udW0sIGludCBzdWJ0ZXN0X251bSwKIAlpZiAocmVzdWx0KQogCQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7OiVzJiMzNDssIHJlc3VsdCk7CiAKLQlmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIGpzb253X3dyaXRlX2xvZ19tZXNzYWdlKGpzb25fd3JpdGVyX3QgKncsIGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KQpAQCAtMTMzMywxNCAmIzQzOzEzMzMsMTQgQEAgdm9pZCBoZXhkdW1wKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgbGVuOyBpJiM0MzsmIzQzOykgewogCQlpZiAoIShpICUgMTYpKSB7CiAJCQlpZiAoaSkKLQkJCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCQkJcHV0Y2hhcigmIzM5O1xuJiMzOTspOwogCQkJZnByaW50ZihzdGRvdXQsICYjMzQ7JXMmIzM0OywgcHJlZml4KTsKIAkJfQogCQlpZiAoaSAmYW1wOyZhbXA7ICEoaSAlIDgpICZhbXA7JmFtcDsgKGkgJSAxNikpCi0JCQlmcHJpbnRmKHN0ZG91dCwgJiMzNDtcdCYjMzQ7KTsKJiM0MzsJCQlwdXRjaGFyKCYjMzk7XHQmIzM5Oyk7CiAJCWZwcmludGYoc3Rkb3V0LCAmIzM0OyUwMlggJiMzNDssICgodWludDhfdCAqKShidWYpKVtpXSk7CiAJfQotCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCmluZGV4IGE3ZGI2ZjA0ZjdlMTQ1Li5kMWM3ZjA2YjhiMWNmOSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMKQEAgLTE2MDUsNyAmIzQzOzE2MDUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wKF9fdTMyIHByb2dfaWQsIGVudW0gZHVtcF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29ucwogCXByaW50ZigmIzM0O0RVTVAgKCVzKSAlcy8lczpcbiYjMzQ7LCBtb2RlID09IERVTVBfSklURUQgPyAmIzM0O0pJVEVEJiMzNDsgOiAmIzM0O1hMQVRFRCYjMzQ7LCBmaWxlX25hbWUsIHByb2dfbmFtZSk7CiAJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSkKIAkJZnB1dHMoYnVmLCBzdGRvdXQpOwotCWZwcmludGYoc3Rkb3V0LCAmIzM0O1xuJiMzNDspOwomIzQzOwlwdXRjaGFyKCYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoZmVycm9yKGZwKSkKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7RmFpbGVkIHRvIGR1bXAgQlBGIHByb2cgd2l0aCBlcnJvcjogJWRcbiYjMzQ7LCBlcnJubyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbmNkZXZtZW0uYwppbmRleCBkOTZlOGEzYjVhNjUyNi4uN2JkY2M0MTE0ZGJhMWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbmNkZXZtZW0uYwpAQCAtMTM1LDcgJiM0MzsxMzUsNyBAQCBzdGF0aWMgdm9pZCBwcl9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pCiAKIAlpZiAoZXJybm8gIT0gMCkKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7OiAlcyYjMzQ7LCBzdHJlcnJvcihlcnJubykpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbWVtb3J5X2J1ZmZlciAqdWRtYWJ1Zl9hbGxvYyhzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jCmluZGV4IGM3ODA1ZTg3ZDEyYzVkLi4xMjA4MzRmOGJhMGRhNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3MzOTAva2V5b3AuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jCkBAIC0xMTcsNyAmIzQzOzExNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfc2soY29uc3QgdW5zaWduZWQgY2hhciBza2V5c1tdLCBjb25zdCBjaGFyICpkZXNjcikKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7IyAlM2Q6ICYjMzQ7LCBpKTsKIAkJZm9yIChqID0gMDsgaiAmbHQ7IDMyOyBqJiM0MzsmIzQzOykKIAkJCWZwcmludGYoc3RkZXJyLCAmIzM0OyUwMnggJiMzNDssIHNrZXlzW2kgJiM0Mzsgal0pOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYwppbmRleCA3ODE4MGRhMWVmY2M1My4uNDA0NjdlODZiZmQ0N2IgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgc3RhdGljIGludCBjYXB0dXJlX2V2ZW50cyhpbnQgZmQsIGludCBldmVudF9ncm91cCkKIAkJfQogCQlpZiAoc2VydmVyX3NpZGUpCiAJCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDssc2VydmVyX3NpZGU6MSYjMzQ7KTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJfSB3aGlsZSAoMSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jCmluZGV4IDdjYWYzMTM1NDQ4ZGE3Li43MjRkYTkyMjJhZDlhMCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jCkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHN0YXRpYyBpbnQgcGZzb2NrZXQoaW50IHZlcikKIHN0YXRpYyB2b2lkIHN0YXR1c19iYXJfdXBkYXRlKHZvaWQpCiB7CiAJaWYgKHRvdGFsX3BhY2tldHMgJSAxMCA9PSAwKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAmIzM0Oy4mIzM0Oyk7CiYjNDM7CQlmcHV0YyhzdGRlcnIsICYjMzk7LiYjMzk7KTsKIAkJZmZsdXNoKHN0ZGVycik7CiAJfQogfQpAQCAtODI1LDcgJiM0Mzs4MjUsNyBAQCBzdGF0aWMgaW50IHRlc3RfdHBhY2tldChpbnQgdmVyc2lvbiwgaW50IHR5cGUpCiAJdW5tYXBfcmluZyhzb2NrLCAmYW1wO3JpbmcpOwogCWNsb3NlKHNvY2spOwogCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuYwppbmRleCAxNzBiZTE5MmY1YzdjZS4uODZjOGQ0OTQ1ZDczYzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jCkBAIC0yMDAsMTAgJiM0MzsyMDAsMTAgQEAgc3RhdGljIHZvaWQgX19wcmludF90aW1lc3RhbXAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHRpbWVzcGVjICpjdXIsCiAJCXRzX2RlbHRhID0gdGltZXNwZWNfdG9fbnM2NChjdXIpIC0gdGltZXNwZWNfdG9fbnM2NCgmYW1wO3RzX3Vzcik7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgKFVTUiAmIzQzOyYjMzQ7KTsKIAkJX19wcmludF90c19kZWx0YV9mb3JtYXR0ZWQodHNfZGVsdGEpOwotCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDspJiMzNDspOwomIzQzOwkJZnB1dGMoc3RkZXJyLCAmIzM5OykmIzM5Oyk7CiAJfQogCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIH0KIAogc3RhdGljIHZvaWQgcmVjb3JkX3RpbWVzdGFtcF91c3Iodm9pZCkKQEAgLTI1NCw3ICYjNDM7MjU0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGltaW5nX2V2ZW50KGNoYXIgKm5hbWUsIHN0cnVjdCB0aW1pbmdfZXZlbnQgKnRlKQogCV9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRlLSZndDttaW4pOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OywgbWF4PSYjMzQ7KTsKIAlfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS0mZ3Q7bWF4KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogfQogCiAvKiBUT0RPOiBjb252ZXJ0IHRvIGNoZWNrX2FuZF9wcmludCBwYXlsb2FkIG9uY2UgQVBJIGlzIHN0YWJsZSAqLwpAQCAtMjcxLDcgJiM0MzsyNzEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9wYXlsb2FkKGNoYXIgKmRhdGEsIGludCBsZW4pCiAJZnByaW50ZihzdGRlcnIsICYjMzQ7cGF5bG9hZDogJiMzNDspOwogCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KQogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDslMDJoaHggJiMzNDssIGRhdGFbaV0pOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcikKQEAgLTkzMyw3ICYjNDM7OTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWZwcmludGYoc3RkZXJyLCAmIzM0O3Byb3RvY29sOiAgICAgJXNcbiYjMzQ7LCBzb2NrX25hbWVzW2NmZ19wcm90b10pOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O3BheWxvYWQ6ICAgICAgJXVcbiYjMzQ7LCBjZmdfcGF5bG9hZF9sZW4pOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O3NlcnZlciBwb3J0OiAgJXVcbiYjMzQ7LCBkZXN0X3BvcnQpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAKIAlpZiAoZG9faXB2NCkgewogCQlpZiAoY2ZnX2RvX2xpc3RlbikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYwppbmRleCA3YzIzZDNkZDdkNmQ5MS4uNDEyZGVmZTk4MjcxNDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmMKQEAgLTM2Myw3ICYjNDM7MzYzLDcgQEAgaW50IGRlY29tcHJlc3NfZmlsZShpbnQgYXJnYywgY2hhciAqKmFyZ3YsIHZvaWQgKmRldmhhbmRsZSkKIAkJCWdvdG8gZXJyMzsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7JTAyeCAmIzM0OywgdG1wW2ldKTsKIAkJaWYgKGkgPT0gNSkKLQkJCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwkJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAl9CiAJZnByaW50ZihzdGRlcnIsICYjMzQ7Z3pIZWFkZXIgTVRJTUUsIFhGTCwgT1MgaWdub3JlZFxuJiMzNDspOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmgKaW5kZXggNzdiNjhjNzEyOWE2NDguLjgyMDE1YjE5ZGY2YzM5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oCkBAIC0xMCw3ICYjNDM7MTAsNyBAQAogCiAjZGVmaW5lIFZGSU9fTE9HX0FORF9FWElUKC4uLikgZG8gewkJXAogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgJiMzNDsgX19WQV9BUkdTX18pOwlcCi0JZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CQkJXAomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CQkJXAogCWV4aXQoS1NGVF9GQUlMKTsJCQlcCiB9IHdoaWxlICgwKQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMKaW5kZXggM2EzZDFlZDYzNWMxZGYuLjgwYTMxMmYxNDlhNjZlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jCkBAIC02MCwxNiAmIzQzOzYwLDE2IEBAIGNoYXIgKip2ZmlvX3NlbGZ0ZXN0c19nZXRfYmRmcyhpbnQgKmFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50ICpucl9iZGZzKQogCX0KIAogCWZwcmludGYoc3RkZXJyLCAmIzM0O1VuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggZGV2aWNlKHMpIHRvIHVzZSwgc2tpcHBpbmcgdGVzdC5cbiYjMzQ7KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O1RvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZTpcbiYjMzQ7KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgICBleHBvcnQgVkZJT19TRUxGVEVTVFNfQkRGPVwmIzM0O3NlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvblwmIzM0O1xuJiMzNDspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgICAlcyBbb3B0aW9uc11cbiYjMzQ7LCBhcmd2WzBdKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0O1RvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzKGVzKSB2aWEgYXJndjpcbiYjMzQ7KTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCWZwcmludGYoc3RkZXJyLCAmIzM0OyAgICAlcyBbb3B0aW9uc10gc2VnbWVudDpidXM6ZGV2aWNlLmZ1bmN0aW9uIC4uLlxuJiMzNDssIGFyZ3ZbMF0pOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJZXhpdChLU0ZUX1NLSVApOwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX2RpYWdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYwppbmRleCAwODFlMDQ1ZjQ2OTYwZS4uY2M5MDNjZGI0NWQ5MmUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYwpAQCAtODYsNyAmIzQzOzg2LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfYWRkcihGSUxFICpmcCwgdW5zaWduZWQgaW50IGNpZCwgdW5zaWduZWQgaW50IHBvcnQpCiAJCWZwcmludGYoZnAsICYjMzQ7JXU6JiMzNDssIGNpZCk7CiAKIAlpZiAocG9ydCA9PSBWTUFERFJfUE9SVF9BTlkpCi0JCWZwcmludGYoZnAsICYjMzQ7KiYjMzQ7KTsKJiM0MzsJCWZwdXRjKGZwLCAmIzM5OyomIzM5Oyk7CiAJZWxzZQogCQlmcHJpbnRmKGZwLCAmIzM0OyV1JiMzNDssIHBvcnQpOwogfQpAQCAtOTQsNyAmIzQzOzk0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfYWRkcihGSUxFICpmcCwgdW5zaWduZWQgaW50IGNpZCwgdW5zaWduZWQgaW50IHBvcnQpCiBzdGF0aWMgdm9pZCBwcmludF92c29ja19zdGF0KEZJTEUgKmZwLCBzdHJ1Y3QgdnNvY2tfc3RhdCAqc3QpCiB7CiAJcHJpbnRfdnNvY2tfYWRkcihmcCwgc3QtJmd0O21zZy52ZGlhZ19zcmNfY2lkLCBzdC0mZ3Q7bXNnLnZkaWFnX3NyY19wb3J0KTsKLQlmcHJpbnRmKGZwLCAmIzM0OyAmIzM0Oyk7CiYjNDM7CWZwdXRjKGZwLCAmIzM5OyAmIzM5Oyk7CiAJcHJpbnRfdnNvY2tfYWRkcihmcCwgc3QtJmd0O21zZy52ZGlhZ19kc3RfY2lkLCBzdC0mZ3Q7bXNnLnZkaWFnX2RzdF9wb3J0KTsKIAlmcHJpbnRmKGZwLCAmIzM0OyAlcyAlcyAlcyAldVxuJiMzNDssCiAJCXNvY2tfdHlwZV9zdHIoc3QtJmd0O21zZy52ZGlhZ190eXBlKSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jIGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmMKaW5kZXggY2IxMTA4YmM5MjQ5ODkuLmViZGI5NTgxOWE3NjZkIDEwMDY0NAotLS0gYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYwpAQCAtNTIyLDcgJiM0Mzs1MjIsNyBAQCBpbnQgdXBkYXRlX3RoZXJtYWxfZGF0YSgpCiAJfQogCiAJaWYgKHRtb25fbG9nKSB7Ci0JCWZwcmludGYodG1vbl9sb2csICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQlmcHV0Yyh0bW9uX2xvZywgJiMzOTtcbiYjMzk7KTsKIAkJZmZsdXNoKHRtb25fbG9nKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmMgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jCmluZGV4IDdlYjMyMTZhMjdmNDVmLi45YTk3MmY3M2EyYzAwNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGhlcm1hbC90bW9uL3Rtb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jCkBAIC0xOTksNyAmIzQzOzE5OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfbG9nZ2luZyh2b2lkKQogCQlmcHJpbnRmKHRtb25fbG9nLCAmIzM0OyVzJWQgJiMzNDssIHB0ZGF0YS5jZGlbaV0udHlwZSwKIAkJCXB0ZGF0YS5jZGlbaV0uaW5zdGFuY2UpOwogCi0JZnByaW50Zih0bW9uX2xvZywgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGModG1vbl9sb2csICYjMzk7XG4mIzM5Oyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jIGIvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmMKaW5kZXggZWY5NzkxNmUzODczYTEuLjNkYzZmYjlkZjkyNjgzIDEwMDY0NAotLS0gYS90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuYwpAQCAtMTk5OSw3ICYjNDM7MTk5OSw3IEBAIHN0YXRpYyB2b2lkIHNjYW5fYXJndW1lbnRzKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAmIzM0O2JlZW4gZW5hYmxlZC4gUmFuZG9tIHNsZWVwIGlzIGludGVuZGVkIGZvciB0aGUgZm9sbG93aW5nIHRyYWNlcnM6XG4mIzM0Oyk7CiAJCQlmb3IgKGkgPSAwOyByYW5kb21fdHJhY2Vyc1tpXTsgaSYjNDM7JiM0MzspCiAJCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7JXNcbiYjMzQ7LCByYW5kb21fdHJhY2Vyc1tpXSk7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJCQlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jCmluZGV4IDhjN2Y1ZTc1YjJlYzhkLi5lODFlNjc2ZDUxZDJhZCAxMDA2NDQKLS0tIGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jCkBAIC00NDksNyAmIzQzOzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsCiAJCWZwcmludGYoc3RkZXJyLCAmIzM0OyVzIFstaF0gJiMzNDssIG1vZGUpOwogCiAJcHJpbnRfbXNnX2FycmF5KHN0YXJ0X21zZ3MpOwotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiAJcHJpbnRfbXNnX2FycmF5KGNvbW1vbl9vcHRpb25zKTsKIAlwcmludF9tc2dfYXJyYXkob3B0X21zZ3MpOwogCmRpZmYgLS1naXQgYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMKaW5kZXggY2IxODdlN2Q0OGQxYzIuLjM1MzJkYTJmMjI5NmQ4IDEwMDY0NAotLS0gYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jCkBAIC02Nyw3ICYjNDM7NjcsNyBAQCB2b2lkIGZhdGFsKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogCXZhX3N0YXJ0KGFwLCBmbXQpOwogCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7CiAJdmFfZW5kKGFwKTsKLQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJZnB1dGMoc3RkZXJyLCAmIzM5O1xuJiMzOTspOwogCiAJZXhpdChFUlJPUik7CiB9CmRpZmYgLS1naXQgYS90b29scy91c2IvZmZzLXRlc3QuYyBiL3Rvb2xzL3VzYi9mZnMtdGVzdC5jCmluZGV4IDIyYjkzOGZiZGZiNzcyLi5lOTkzNzM2YmEwZDY0NyAxMDA2NDQKLS0tIGEvdG9vbHMvdXNiL2Zmcy10ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmMKQEAgLTU2Miw3ICYjNDM7NTYyLDcgQEAgZW1wdHlfb3V0X2J1ZihzdHJ1Y3QgdGhyZWFkICppZ25vcmUsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IG5ieXRlcykKIAkJCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDslNHpkOiYjMzQ7LCBsZW4pOwogCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7ICUwMngmIzM0OywgKnApOwogCQkJaWYgKDMxID09IChsZW4gJSAzMikpCi0JCQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CQkJCWZwdXRjKHN0ZGVyciwgJiMzOTtcbiYjMzk7KTsKIAkJfQogCQlmZmx1c2goc3RkZXJyKTsKIAkJZXJybm8gPSBFSUxTRVE7CmRpZmYgLS1naXQgYS90b29scy92ZXJpZmljYXRpb24vcnYvc3JjL2luX2tlcm5lbC5jIGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYwppbmRleCBlNmRlYTQwNDBmOGY0Yy4uMjYxMzIxNzFmNjAwOGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYwpAQCAtNjY3LDcgJiM0Mzs2NjcsNyBAQCBzdGF0aWMgdm9pZCBpa21fdXNhZ2VfcHJpbnRfcmVhY3RvcnModm9pZCkKIAkJZW5kID0gc3Ryc3RyKHN0YXJ0LCAmIzM0O1xuJiMzNDspOwogCX0KIAotCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwomIzQzOwlmcHV0YyhzdGRlcnIsICYjMzk7XG4mIzM5Oyk7CiB9CiAvKgogICogaWttX3VzYWdlIC0gcHJpbnQgdXNhZ2UKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2ODEKCQkJCQkJCW91dHB1dDogODAKCQkJCQkJCXRob3VnaHRzOiA5OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbjogV29ydGhGdXp6aW5nPWZhbHNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBwcm9wb3NlZC4gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCByZXBsYWNlbWVudCBvZiBgZnByaW50ZiguLi4sICYjMzQ7XG4mIzM0OylgIHdpdGggZWl0aGVyIGBmcHV0YyguLi4sICYjMzk7XG4mIzM5OylgIG9yIGBwdXRjaGFyKCYjMzk7XG4mIzM5OylgLiBJdCYjMzk7cyBoYXBwZW5pbmcgYWNyb3NzIGEgYnVuY2ggb2YgZmlsZXMsIGJ1dCB0aGV5JiMzOTtyZSBhbGwgbG9jYXRlZCB3aXRoaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyBhIGtleSBpbmRpY2F0b3IgcmlnaHQgdGhlcmUg4oCTIGB0b29scy9gIGlzIGZvciB1c2VyLXNwYWNlIHV0aWxpdGllcywgbm90IGtlcm5lbC1sZXZlbCBjb2RlLiBUaGlzIGlzIGRlZmluaXRlbHkgbm90IGEgY2hhbmdlIHRvIGFueXRoaW5nIHRoYXQgcnVucyBkaXJlY3RseSBpbiB0aGUga2VybmVsIGl0c2VsZi4KCkkgbmVlZCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSYjMzk7dmUgdGFrZW4gYSBxdWljayBzY2FuIG9mIHRoZSBtb2RpZmllZCBmaWxlczogYGJwZnRvb2xgLCB2YXJpb3VzIEdQSU8gdG9vbHMsIHBlcmYgdXRpbGl0aWVzLCBgYWNwaWR1bXBgLCBgdHVyYm9zdGF0YCwgQlBGIHNlbGZ0ZXN0cywgS1ZNIHNlbGZ0ZXN0cywgYW5kIG90aGVycy4gVGhlIGZpbGUgbGlzdCBjb25maXJtcyBteSBpbml0aWFsIGh1bmNoLiBUaGVzZSBhcmUgYWxsIHVzZXItc3BhY2UgdG9vbHMgYW5kIHRlc3RpbmcgZnJhbWV3b3Jrcy4gSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIHRvdWNoaW5nIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdGllcyBvciBkcml2ZXJzLgoKU2luY2UgdGhpcyBpcyBwdXJlbHkgYSBjb3NtZXRpYyBjaGFuZ2UgdG8gdGhlIG91dHB1dCBvZiB1c2VyLXNwYWNlIHRvb2xz4oCUbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxm4oCUaXQgc2hvdWxkbiYjMzk7dCBiZSBmdXp6ZWQuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBObyBrZXJuZWwgbG9naWMgaXMgaW52b2x2ZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMjozNjowNC43Njg3NjY1MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1MjA5MTgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjI6MzY6MDQuNzY4Nzc0ODIyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwOTQwMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTU4ZmNlMDQwNWNlMWM1NDgxMGQ2YzU1ZDVlYWQxMTg5MDdlMGRlMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMjozNjowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9jb21tb24uYyBiL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXFxuaW5kZXggOGJmY2ZmOWUyZjYzOTQuLjc2YWJkM2Y0ZmJjYmM1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXFxuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmNcXG5AQCAtNTMsNyArNTMsNyBAQCB2b2lkIHBfZXJyKGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIkVycm9yOiBcXFwiKTtcXG4gXFx0XFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcXG4tXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHR9XFxuIFxcdHZhX2VuZChhcCk7XFxuIH1cXG5AQCAtNjcsNyArNjcsNyBAQCB2b2lkIHBfaW5mbyhjb25zdCBjaGFyICpmbXQsIC4uLilcXG4gXFxuIFxcdHZhX3N0YXJ0KGFwLCBmbXQpO1xcbiBcXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdHZhX2VuZChhcCk7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uYyBiL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uY1xcbmluZGV4IGM5MWUxYTZlMWExZWNhLi5hZWNmYzc3ODYyNWY3MSAxMDA2NDRcXG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9tYWluLmNcXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9tYWluLmNcXG5AQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgZnByaW50X2hleChGSUxFICpmLCB2b2lkICphcmcsIHVuc2lnbmVkIGludCBuLCBjb25zdCBjaGFyICpzZXApXFxuIFxcdFxcdGlmICghaSlcXG4gXFx0XFx0XFx0Lyogbm90aGluZyAqLztcXG4gXFx0XFx0ZWxzZSBpZiAoIShpICUgMTYpKVxcbi1cXHRcXHRcXHRmcHJpbnRmKGYsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRmcHV0YyhmLCAnXFxcXG4nKTtcXG4gXFx0XFx0ZWxzZSBpZiAoIShpICUgOCkpXFxuIFxcdFxcdFxcdGZwcmludGYoZiwgXFxcIiAgXFxcIik7XFxuIFxcdFxcdGVsc2VcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaCBiL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmhcXG5pbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvbmV0bGlua19kdW1wZXIuaFxcbisrKyBiL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmhcXG5AQCAtMjUsNyArMjUsNyBAQFxcbiBcXHRpZiAoanNvbl9vdXRwdXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRqc29ud19zdGFydF9vYmplY3QoanNvbl93dHIpO1xcdFxcdFxcXFxcXG4gXFx0ZWxzZVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJ7XFxcIik7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRwdXRjaGFyKCd7Jyk7XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbiAjZGVmaW5lIE5FVF9FTkRfT0JKRUNUX05FU1RFRFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMzMsNyArMzMsNyBAQFxcbiBcXHRpZiAoanNvbl9vdXRwdXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcXHRcXHRcXFxcXFxuIFxcdGVsc2VcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwifVxcXCIpO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cHV0Y2hhcignfScpO1xcdFxcdFxcdFxcdFxcXFxcXG4gfVxcbiBcXG4gI2RlZmluZSBORVRfRU5EX09CSkVDVFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtNDcsNyArNDcsNyBAQFxcbiBcXHRpZiAoanNvbl9vdXRwdXQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTtcXHRcXHRcXFxcXFxuIFxcdGVsc2VcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHB1dGNoYXIoJ1xcXFxuJyk7XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbiAjZGVmaW5lIE5FVF9TVEFSVF9BUlJBWShuYW1lLCBmbXRfc3RyKVxcdFxcdFxcdFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXFxuaW5kZXggYTlmNzMwZDQwN2E5MjkuLmQyN2NiOWQ0OTg2MDkzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbisrKyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBzdGF0aWMgdm9pZCBoZXhfcHJpbnQodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIEZJTEUgKmYpXFxuIFxcdFxcdFxcdGZwcmludGYoZiwgXFxcIiVjJXNcXFwiLCBjLCBqID09IGkgKyA3ID8gXFxcIiBcXFwiIDogXFxcIlxcXCIpO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRmcHJpbnRmKGYsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhmLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmMgYi90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmNcXG5pbmRleCBiNzA4MTNiMGJmOGVmYS4uZTEyZTE0NzgwYzBlNDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXFxuKysrIGIvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXFxuQEAgLTEyMSw3ICsxMjEsNyBAQCBpbnQgbW9uaXRvcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsXFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwidW5rbm93biBldmVudFxcXCIpO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFxuIFxcdFxcdGkrKztcXG4gXFx0XFx0aWYgKGkgPT0gbG9vcHMpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuYyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuY1xcbmluZGV4IGJhMDg2NmViMzU4MTQ1Li5iNzZjOTRmZWUwNGQwOSAxMDA2NDRcXG4tLS0gYS90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcXG4rKysgYi90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcXG5AQCAtODcsNyArODcsNyBAQCBpbnQgaGFtbWVyX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgdW5zaWduZWQgaW50ICpsaW5lcywgaW50IG51bV9saW5lcyxcXG4gXFx0XFx0aWYgKGogPT0gc2l6ZW9mKHN3aXJyKSAtIDEpXFxuIFxcdFxcdFxcdGogPSAwO1xcbiBcXG4tXFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJbXFxcIik7XFxuK1xcdFxcdHB1dGNoYXIoJ1snKTtcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV9saW5lczsgaSsrKSB7XFxuIFxcdFxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiJXU6ICVkXFxcIiwgbGluZXNbaV0sXFxuIFxcdFxcdFxcdFxcdGdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpO1xcbkBAIC0xMDEsNyArMTAxLDcgQEAgaW50IGhhbW1lcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIHVuc2lnbmVkIGludCAqbGluZXMsIGludCBudW1fbGluZXMsXFxuIFxcdFxcdGlmIChsb29wcyBcXHUwMDI2XFx1MDAyNiBpdGVyYXRpb24gPT0gbG9vcHMpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuLVxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFx0cmV0ID0gMDtcXG4gXFxuIGV4aXRfY2xvc2VfZXJyb3I6XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vbHNncGlvLmMgYi90b29scy9ncGlvL2xzZ3Bpby5jXFxuaW5kZXggNTJhMGJlNDU0MTBjOTcuLmFiYjJjNmZiYzNkN2NhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2dwaW8vbHNncGlvLmNcXG4rKysgYi90b29scy9ncGlvL2xzZ3Bpby5jXFxuQEAgLTE1Miw5ICsxNTIsOSBAQCBpbnQgbGlzdF9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUpXFxuIFxcdFxcdGlmIChsaW5mby5mbGFncykge1xcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiBbXFxcIik7XFxuIFxcdFxcdFxcdHByaW50X2F0dHJpYnV0ZXMoXFx1MDAyNmxpbmZvKTtcXG4tXFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJdXFxcIik7XFxuK1xcdFxcdFxcdHB1dGNoYXIoJ10nKTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdHB1dGNoYXIoJ1xcXFxuJyk7XFxuIFxcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaCBiL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXFxuaW5kZXggZTIyYWU4N2E3Mjg5MjAuLjg5YzlhM2QzYmM3NzMzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXFxuKysrIGIvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmhcXG5AQCAtMjcsNyArMjcsNyBAQCB2b2lkIHZ3YXJueChjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncylcXG4ge1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiVzOiBcXFwiLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7XFxuIFxcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xcbmluZGV4IGU2OTU0OTA5NDAxYzhlLi5lM2FiMWRiNDRiMTU0ZSAxMDA2NDRcXG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xcbisrKyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXFxuQEAgLTg2Nyw3ICs4NjcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0aWYgKGN1bGwgXFx1MDAyNiBDVUxMX1NUQUNLVFJBQ0UpXFxuIFxcdFxcdFxcdFxcdGZwcmludGYoZm91dCwgXFxcIjpcXFxcbiVzXFxcIiwgbGlzdFtpXS5zdGFja3RyYWNlKTtcXG4tXFx0XFx0XFx0ZnByaW50Zihmb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMoZm91dCwgJ1xcXFxuJyk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uYyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcXG5pbmRleCA1ZDBmNDI4ZWVkMGE3Zi4uMjQ1ZDdmNThjOGZiNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uY1xcbisrKyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcXG5AQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgcF9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiRXJyb3I6IFxcXCIpO1xcbiBcXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xcbi1cXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gXFx0dmFfZW5kKGFwKTtcXG4gfVxcbkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcbiBcXHR2YV9zdGFydChhcCwgZm10KTtcXG4gXFx0dmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHR2YV9lbmQoYXApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suYyBiL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXFxuaW5kZXggMTE4YzNkZTJmMjkzZWUuLmI2ZDI3ZDMyNmI4YWQ5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXFxuKysrIGIvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmNcXG5AQCAtMjk3LDcgKzI5Nyw3IEBAIGludCBtYWtlX2JhY2t1cCh2b2lkKVxcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAlc1xcXCIsIGFyZyk7XFxuIFxcdH1cXG4gXFxuLVxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvZGlzYXMuYyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuY1xcbmluZGV4IGU2YTU0YTgzNjA1YzkwLi4zMzlkMWQ1NjkwYzQyMCAxMDA2NDRcXG4tLS0gYS90b29scy9vYmp0b29sL2Rpc2FzLmNcXG4rKysgYi90b29scy9vYmp0b29sL2Rpc2FzLmNcXG5AQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgZGlzYXNfcHJpbnRfaW5zbihGSUxFICpzdHJlYW0sIHN0cnVjdCBkaXNhc19jb250ZXh0ICpkY3R4LFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoc3RyY21wKGZvcm1hdCwgXFxcIlxcXFxuXFxcIikgPT0gMCkge1xcbi1cXHRcXHRmcHJpbnRmKHN0cmVhbSwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHN0cmVhbSwgJ1xcXFxuJyk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jXFxuaW5kZXggYzk1ODRkYmVkZjc3YWYuLmZjOWI2YjE4ZWRlZDllIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xcbkBAIC0yNTExLDcgKzI1MTEsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9jYWNoZWxpbmUoc3RydWN0IGMyY19oaXN0cyAqYzJjX2hpc3RzLFxcbiBcXHRcXHRoaXN0c19fZnByaW50Zl9oZWFkZXJzKFxcdTAwMjZjMmNfaGlzdHMtXFx1MDAzZWhpc3RzLCBvdXQpO1xcbiBcXHRcXHRvbmNlID0gdHJ1ZTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHR9XFxuIFxcbiBcXHRmcHJpbnRmKG91dCwgXFxcIiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcXFxuXFxcIik7XFxuQEAgLTI1OTAsMTUgKzI1OTAsMTUgQEAgc3RhdGljIHZvaWQgcGVyZl9jMmNfX2hpc3RzX2ZwcmludGYoRklMRSAqb3V0LCBzdHJ1Y3QgcGVyZl9zZXNzaW9uICpzZXNzaW9uKVxcbiBcXHRzZXR1cF9wYWdlcigpO1xcbiBcXG4gXFx0cHJpbnRfYzJjX19kaXNwbGF5X3N0YXRzKG91dCk7XFxuLVxcdGZwcmludGYob3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0LCAnXFxcXG4nKTtcXG4gXFx0cHJpbnRfc2hhcmVkX2NhY2hlbGluZV9pbmZvKG91dCk7XFxuLVxcdGZwcmludGYob3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0LCAnXFxcXG4nKTtcXG4gXFx0cHJpbnRfYzJjX2luZm8ob3V0LCBzZXNzaW9uKTtcXG4gXFxuIFxcdGlmIChjMmMuc3RhdHNfb25seSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIiAgICAgICAgICAgU2hhcmVkIERhdGEgQ2FjaGUgTGluZSBUYWJsZSAgICAgICAgICBcXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbkBAIC0yNjA2LDcgKzI2MDYsNyBAQCBzdGF0aWMgdm9pZCBwZXJmX2MyY19faGlzdHNfZnByaW50ZihGSUxFICpvdXQsIHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24pXFxuIFxcbiBcXHRoaXN0c19fZnByaW50ZihcXHUwMDI2YzJjLmhpc3RzLmhpc3RzLCB0cnVlLCAwLCAwLCAwLCBzdGRvdXQsIHRydWUpO1xcbiBcXG4tXFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIiAgICAgIFNoYXJlZCBDYWNoZSBMaW5lIERpc3RyaWJ1dGlvbiBQYXJldG8gICAgICBcXFxcblxcXCIpO1xcbiBcXHRmcHJpbnRmKG91dCwgXFxcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmMgYi90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmNcXG5pbmRleCBjNDYzMjU3N2QxMjk2My4uN2NiMjBiM2EwM2U0Y2QgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXFxuQEAgLTY5MSw3ICs2OTEsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KVxcbiBcXHRcXHRcXHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cXG4gXFx0XFx0XFx0Y3N2X3NlcCwgKHVpbnQ2NF90KSgoY3VyciAtIGRhZW1vbi1cXHUwMDNlc3RhcnQpIC8gNjApKTtcXG4gXFxuLVxcdFxcdGZwcmludGYob3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMob3V0LCAnXFxcXG4nKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZnByaW50ZihvdXQsIFxcXCJbJWQ6ZGFlbW9uXSBiYXNlOiAlc1xcXFxuXFxcIiwgZ2V0cGlkKCksIGRhZW1vbi1cXHUwMDNlYmFzZSk7XFxuIFxcdFxcdGlmIChjbWQtXFx1MDAzZWxpc3QudmVyYm9zZSkge1xcbkBAIC03MzAsNyArNzMwLDcgQEAgc3RhdGljIGludCBjbWRfc2Vzc2lvbl9saXN0KHN0cnVjdCBkYWVtb24gKmRhZW1vbiwgdW5pb24gY21kICpjbWQsIEZJTEUgKm91dClcXG4gXFx0XFx0XFx0XFx0Lyogc2Vzc2lvbiB1cCB0aW1lICovXFxuIFxcdFxcdFxcdFxcdGNzdl9zZXAsICh1aW50NjRfdCkoKGN1cnIgLSBzZXNzaW9uLVxcdTAwM2VzdGFydCkgLyA2MCkpO1xcbiBcXG4tXFx0XFx0XFx0ZnByaW50ZihvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRmcHV0YyhvdXQsICdcXFxcbicpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRmcHJpbnRmKG91dCwgXFxcIlslZDolc10gcGVyZiByZWNvcmQgJXNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdHNlc3Npb24tXFx1MDAzZXBpZCwgc2Vzc2lvbi1cXHUwMDNlbmFtZSwgc2Vzc2lvbi1cXHUwMDNlcnVuKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcXG5pbmRleCA1ODQxZDQzYmU5NzE4NC4uMDVmMThkNDlmYzdiMTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suY1xcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcXG5AQCAtMTMxOSw5ICsxMzE5LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVzdWx0KHZvaWQpXFxuIFxcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGtleSwgXFx1MDAyNmxvY2tfa2V5cywgbGlzdCkge1xcbiBcXHRcXHRcXHRrZXktXFx1MDAzZXByaW50KGtleSwgc3QpO1xcbi1cXHRcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiIFxcXCIpO1xcbitcXHRcXHRcXHRmcHV0Yyhsb2NrX291dHB1dCwgJyAnKTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMobG9ja19vdXRwdXQsICdcXFxcbicpO1xcbiBcXG4gXFx0XFx0aWYgKCsrcHJpbnRlZCBcXHUwMDNlPSBwcmludF9ucl9lbnRyaWVzKVxcbiBcXHRcXHRcXHRicmVhaztcXG5AQCAtMTU5OCw3ICsxNTk4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX2Nzdihjb25zdCBjaGFyICpzZXApXFxuIFxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCIlcyVzICVzXFxcIiwgXFxcInR5cGVcXFwiLCBzZXAsIFxcXCJjYWxsZXJcXFwiKTtcXG4gXFx0XFx0aWYgKHZlcmJvc2UgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiJXMgJXNcXFwiLCBzZXAsIFxcXCJzdGFja3RyYWNlXFxcIik7XFxuLVxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcXFxuJyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIExPQ0tfQUdHUl9BRERSOlxcbiBcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiJXMlcyAlcyVzICVzXFxcXG5cXFwiLCBcXFwiYWRkcmVzc1xcXCIsIHNlcCwgXFxcInN5bWJvbFxcXCIsIHNlcCwgXFxcInR5cGVcXFwiKTtcXG5AQCAtMTYyOSw3ICsxNjI5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfbG9ja19zdGF0X3N0ZGlvKHN0cnVjdCBsb2NrX2NvbnRlbnRpb24gKmNvbiwgc3RydWN0IGxvY2tfc3RhdFxcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShrZXksIFxcdTAwMjZsb2NrX2tleXMsIGxpc3QpIHtcXG4gXFx0XFx0a2V5LVxcdTAwM2VwcmludChrZXksIHN0KTtcXG4tXFx0XFx0ZnByaW50Zihsb2NrX291dHB1dCwgXFxcIiBcXFwiKTtcXG4rXFx0XFx0ZnB1dGMobG9ja19vdXRwdXQsICcgJyk7XFxuIFxcdH1cXG4gXFxuIFxcdHN3aXRjaCAoYWdncl9tb2RlKSB7XFxuQEAgLTE2ODcsNyArMTY4Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXFxuIFxcdGNhc2UgTE9DS19BR0dSX0NBTExFUjpcXG4gXFx0XFx0ZnByaW50Zihsb2NrX291dHB1dCwgXFxcIiVzJXMgJXNcXFwiLCBnZXRfdHlwZV9mbGFnc19uYW1lKHN0LVxcdTAwM2VmbGFncyksIHNlcCwgc3QtXFx1MDAzZW5hbWUpO1xcbiBcXHRcXHRpZiAodmVyYm9zZSBcXHUwMDNjPSAwKVxcbi1cXHRcXHRcXHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMobG9ja19vdXRwdXQsICdcXFxcbicpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBMT0NLX0FHR1JfVEFTSzpcXG4gXFx0XFx0cGlkID0gc3QtXFx1MDAzZWFkZHI7XFxuQEAgLTE3MjEsNyArMTcyMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9jc3Yoc3RydWN0IGxvY2tfY29udGVudGlvbiAqY29uLCBzdHJ1Y3QgbG9ja19zdGF0ICpzXFxuIFxcdFxcdFxcdGdldF9zeW1ib2xfbmFtZV9vZmZzZXQoa21hcCwgc3ltLCBpcCwgYnVmLCBzaXplb2YoYnVmKSk7XFxuIFxcdFxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCIlcyAlI2x4ICVzXFxcIiwgaSA/IFxcXCI6XFxcIiA6IHNlcCwgKHVuc2lnbmVkIGxvbmcpIGlwLCBidWYpO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMTc4MSw3ICsxNzgxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZm9vdGVyX2NzdihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJST0tFTl9NQVg7IGkrKylcXG4gXFx0XFx0XFx0ZnByaW50Zihsb2NrX291dHB1dCwgXFxcIiVzIGJhZF8lcz0lZFxcXCIsIHNlcCwgbmFtZVtpXSwgYmFkX2hpc3RbaV0pO1xcbiBcXHR9XFxuLVxcdGZwcmludGYobG9ja19vdXRwdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZhaWxzKVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmNcXG5pbmRleCA5YWMyOWJkYzNjZDU0Ny4uZTYwYzA3MzA1ZDE5OGIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXFxuQEAgLTI1NjEsNyArMjU2MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZXZlbnQoc3RydWN0IHBlcmZfc2NyaXB0ICpzY3JpcHQsXFxuIFxcbiBcXHRwZXJmX3NhbXBsZV9fZnByaW50Zl9pcGMoc2FtcGxlLCBldnNlbCwgZnApO1xcbiBcXG4tXFx0ZnByaW50ZihmcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKGZwLCAnXFxcXG4nKTtcXG4gXFxuIFxcdGlmIChQUklOVF9GSUVMRChTUkNDT0RFKSkge1xcbiBcXHRcXHRpZiAobWFwX19mcHJpbnRmX3NyY2NvZGUoYWwtXFx1MDAzZW1hcCwgYWwtXFx1MDAzZWFkZHIsIHN0ZG91dCxcXG5AQCAtMjgxNSw3ICsyODE1LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX2RlZmVycmVkX3NhbXBsZV9ldmVudChjb25zdCBzdHJ1Y3QgcGVyZl90b29sICp0b29sLFxcbiBcXHRcXHRcXHRcXHQgICAgY3Vyc29yLCBzeW1ib2xfY29uZi5idF9zdG9wX2xpc3QsIGZwKTtcXG4gXFx0fVxcbiBcXG4tXFx0ZnByaW50ZihmcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKGZwLCAnXFxcXG4nKTtcXG4gXFxuIFxcdGlmICh2ZXJib3NlIFxcdTAwM2UgMClcXG4gXFx0XFx0ZmZsdXNoKGZwKTtcXG5AQCAtMzI3MSwxMSArMzI3MSwxMSBAQCBzdGF0aWMgaW50IGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYihzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqb3BzLCBjb25zdCBjaGFyICpzcFxcbiBcXG4gc3RhdGljIHZvaWQgbGlzdF9hdmFpbGFibGVfbGFuZ3VhZ2VzKHZvaWQpXFxuIHtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlNjcmlwdGluZyBsYW5ndWFnZSBleHRlbnNpb25zICh1c2VkIGluIFxcXCJcXG4gXFx0XFx0XFxcInBlcmYgc2NyaXB0IC1zIFtzcGVjOl1zY3JpcHQuW3NwZWNdKTpcXFxcblxcXFxuXFxcIik7XFxuIFxcdHNjcmlwdF9zcGVjX19mb3JfZWFjaChcXHUwMDI2bGlzdF9hdmFpbGFibGVfbGFuZ3VhZ2VzX2NiKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiAvKiBGaW5kIHNjcmlwdCBmaWxlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5IG9yIGV4ZWMgcGF0aCAqL1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcXG5pbmRleCBjNDdmNWMzODc4MzhjNS4uMDM3ZWJjNDdmN2RjY2MgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIFxcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJFcnJvcjpcXFxcblxcXCIpO1xcbiBcXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIFxcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4tXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4gXFxuQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIFxcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4tXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jIGIvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcXG5pbmRleCA4YzRjODkyNWRmMmMyMi4uMDQ0ZDJhYTNiMzEyMTggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcXG4rKysgYi90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuY1xcbkBAIC02OTEsNyArNjkxLDcgQEAgc3RhdGljIGludCBoaXN0c19fZnByaW50Zl9oaWVyYXJjaHlfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxcbiBcXHRcXHR9XFxuIFxcbiBuZXh0X2xpbmU6XFxuLVxcdFxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gXFxuIFxcdGZwcmludGYoZnAsIFxcXCIjIFxcXCIpO1xcbkBAIC03ODMsNyArNzgzLDcgQEAgaGlzdHNfX2ZwcmludGZfc3RhbmRhcmRfaGVhZGVycyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxcbiBcXHRcXHRpZiAobGluZSlcXG4gXFx0XFx0XFx0ZnByaW50ZihmcCwgXFxcIiMgXFxcIik7XFxuIFxcdFxcdGZwcmludGZfbGluZShoaXN0cywgaHBwLCBsaW5lLCBmcCk7XFxuLVxcdFxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChzZXApXFxuQEAgLTgwNiwxMCArODA2LDEwIEBAIGhpc3RzX19mcHJpbnRmX3N0YW5kYXJkX2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcXG4gXFxuIFxcdFxcdHdpZHRoID0gZm10LVxcdTAwM2V3aWR0aChmbXQsIGhwcCwgaGlzdHMpO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd2lkdGg7IGkrKylcXG4tXFx0XFx0XFx0ZnByaW50ZihmcCwgXFxcIi5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMoZnAsICcuJyk7XFxuIFxcdH1cXG4gXFxuLVxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIFxcdGZwcmludGYoZnAsIFxcXCIjXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIGhwcF9saXN0LVxcdTAwM2Vucl9oZWFkZXJfbGluZXMgKyAyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uYyBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uY1xcbmluZGV4IDVkMDY2NGZmNzNiNzkxLi44ZTA5OWNjYWFlMzlhNiAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcXG5AQCAtODk1LDcgKzg5NSw3IEBAIHN0YXRpYyB2b2lkIGNzX2V0bV9fZHVtcF9ldmVudChzdHJ1Y3QgY3NfZXRtX3F1ZXVlICpldG1xLFxcbiBcXHRjb25zdCBjaGFyICpjb2xvciA9IFBFUkZfQ09MT1JfQkxVRTtcXG4gXFx0c2l6ZV90IGJ1ZmZlcl91c2VkID0gMDtcXG4gXFxuLVxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFx0Y29sb3JfZnByaW50ZihzdGRvdXQsIGNvbG9yLFxcbiBcXHRcXHQgICAgIFxcXCIuIC4uLiBDb3JlU2lnaHQgJXMgVHJhY2UgZGF0YTogc2l6ZSAlI3p4IGJ5dGVzXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgIGNzX2V0bV9kZWNvZGVyX19nZXRfbmFtZShldG1xLVxcdTAwM2VkZWNvZGVyKSwgYnVmZmVyLVxcdTAwM2VzaXplKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmMgYi90b29scy9wZXJmL3V0aWwvZGVidWcuY1xcbmluZGV4IDZiNWZmZTgxZjE0MTIxLi41NDI5OTg0YWI0OWM5MCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvZGVidWcuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jXFxuQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIF9fZHVtcF9zdGFjayhGSUxFICpmaWxlLCB2b2lkICoqc3RhY2tkdW1wLCBzaXplX3Qgc3RhY2tkdW1wX3NpemUpXFxuIFxcdFxcdFxcdGZwcmludGYoZmlsZSwgXFxcIiAgICAjJXpkICVwIFxcXCIsIGksIHN0YWNrZHVtcFtpXSk7XFxuIFxcbiBcXHRcXHRtYXBfX2ZwcmludGZfc3JjbGluZShhbC5tYXAsIGFsLmFkZHIsIFxcXCJcXFwiLCBmaWxlKTtcXG4tXFx0XFx0ZnByaW50ZihmaWxlLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZmlsZSwgJ1xcXFxuJyk7XFxuIFxcdFxcdGFkZHJfbG9jYXRpb25fX2V4aXQoXFx1MDAyNmFsKTtcXG4gXFx0fVxcbiBcXHR0aHJlYWRfX3B1dCh0aHJlYWQpO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvaGVhZGVyLmMgYi90b29scy9wZXJmL3V0aWwvaGVhZGVyLmNcXG5pbmRleCAwOTFkOGY3ZjZiZDJjOS4uOTY1YjE3YzgxMjI0YjYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXFxuKysrIGIvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXFxuQEAgLTI0NTQsNyArMjQ1NCw3IEBAIHN0YXRpYyB2b2lkIF9fcHJpbnRfcG11X2NhcHMoRklMRSAqZnAsIGludCBucl9jYXBzLCBjaGFyICoqY2FwcywgY2hhciAqcG11X25hbWUpXFxuIFxcdFxcdGRlbGltaXRlciA9IFxcXCIsIFxcXCI7XFxuIFxcdH1cXG4gXFxuLVxcdGZwcmludGYoZnAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhmcCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X2NwdV9wbXVfY2FwcyhzdHJ1Y3QgZmVhdF9mZCAqZmYsIEZJTEUgKmZwKVxcbkBAIC0yNTEzLDcgKzI1MTMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9wbXVfbWFwcGluZ3Moc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcXG4gXFx0XFx0cG11X251bS0tO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXG4gXFx0aWYgKCFwbXVfbnVtKVxcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTQzNDksNyArNDM0OSw3IEBAIGludCBwZXJmX2hlYWRlcl9fZnByaW50Zl9pbmZvKHN0cnVjdCBwZXJmX3Nlc3Npb24gKnNlc3Npb24sIEZJTEUgKmZwLCBib29sIGZ1bGwpXFxuIFxcdFxcdFxcdGZwcmludGYoZnAsIFxcXCIlcyBcXFwiLCBmZWF0X29wc1tiaXRdLm5hbWUpO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmMgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xcbmluZGV4IGVmNTVkNjIzMmNmMGMyLi4wYTM1NDkzYjg1NGFjZCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jXFxuQEAgLTcwLDE0ICs3MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9kYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbiwgdWludDY0X3QgcG9zLFxcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBpbmRlbnQ7IGkrKylcXG4tXFx0XFx0ZnByaW50ZihmLCBcXFwiIFxcXCIpO1xcbitcXHRcXHRmcHV0YyhmLCAnICcpO1xcbiBcXG4gXFx0ZnByaW50ZihmLCBcXFwiICAlMDhcXFwiIFBSSXg2NCBcXFwiOiBcXFwiLCBwb3MpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspXFxuIFxcdFxcdGZwcmludGYoZiwgXFxcIiAlMDJ4XFxcIiwgYnVmW2ldKTtcXG4gXFx0Zm9yICg7IGkgXFx1MDAzYyAxNjsgaSsrKVxcbiBcXHRcXHRmcHJpbnRmKGYsIFxcXCIgICBcXFwiKTtcXG4tXFx0ZnByaW50ZihmLCBcXFwiIFxcXCIpO1xcbitcXHRmcHV0YyhmLCAnICcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9ub19kYXRhKHVpbnQ2NF90IHBvcywgaW50IGluZGVudClcXG5AQCAtODUsMTIgKzg1LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X25vX2RhdGEodWludDY0X3QgcG9zLCBpbnQgaW5kZW50KVxcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBpbmRlbnQ7IGkrKylcXG4tXFx0XFx0ZnByaW50ZihmLCBcXFwiIFxcXCIpO1xcbitcXHRcXHRmcHV0YyhmLCAnICcpO1xcbiBcXG4gXFx0ZnByaW50ZihmLCBcXFwiICAlMDhcXFwiIFBSSXg2NCBcXFwiOiBcXFwiLCBwb3MpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTY7IGkrKylcXG4gXFx0XFx0ZnByaW50ZihmLCBcXFwiICAgXFxcIik7XFxuLVxcdGZwcmludGYoZiwgXFxcIiBcXFwiKTtcXG4rXFx0ZnB1dGMoZiwgJyAnKTtcXG4gfVxcbiBcXG4gc3RhdGljIHNzaXplX3QgbG9nX2J1Zl9fd3JpdGUodm9pZCAqY29va2llLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvbGliYmZkLmMgYi90b29scy9wZXJmL3V0aWwvbGliYmZkLmNcXG5pbmRleCBjMWMxMjMwOGNjMTJmZi4uMjYzODk0NjYzZjFhODcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXFxuKysrIGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXFxuQEAgLTYwMyw3ICs2MDMsNyBAQCBpbnQgc3ltYm9sX19kaXNhc3NlbWJsZV9icGZfbGliYmZkKHN0cnVjdCBzeW1ib2wgKnN5bSBfX21heWJlX3VudXNlZCxcXG4gXFx0XFx0fSBlbHNlXFxuIFxcdFxcdFxcdHNyY2xpbmUgPSBOVUxMO1xcbiBcXG4tXFx0XFx0ZnByaW50ZihzLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMocywgJ1xcXFxuJyk7XFxuIFxcdFxcdHByZXZfYnVmX3NpemUgPSBidWZfc2l6ZTtcXG4gXFx0XFx0ZmZsdXNoKHMpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uYyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmNcXG5pbmRleCBmMzkxYTgyMjQ4MGRiMC4uNjNhOGQzY2NhYTRmOWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9zZXNzaW9uLmNcXG5AQCAtMTI1Nyw3ICsxMjU3LDcgQEAgaW50IHBlcmZfZXZlbnRfX3Byb2Nlc3NfZmluaXNoZWRfcm91bmQoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCBfX21heWJlX3VudXNcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBvcmRlcmVkX2V2ZW50cyAqb2UpXFxuIHtcXG4gXFx0aWYgKGR1bXBfdHJhY2UpXFxuLVxcdFxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFx0cmV0dXJuIG9yZGVyZWRfZXZlbnRzX19mbHVzaChvZSwgT0VfRkxVU0hfX1JPVU5EKTtcXG4gfVxcbiBcXG5AQCAtNDAwMCw3ICs0MDAwLDcgQEAgaW50IHBlcmZfZXZlbnRfX3Byb2Nlc3NfaWRfaW5kZXgoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCBfX21heWJlX3VudXNlZCxcXG4gXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCIgIG1hY2hpbmVfcGlkOiAlXFxcIlBSSV9sZDY0LCBlMi1cXHUwMDNlbWFjaGluZV9waWQpO1xcbiBcXHRcXHRcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiAgdmNwdTogJVxcXCJQUklfbHU2NFxcXCJcXFxcblxcXCIsIGUyLVxcdTAwM2V2Y3B1KTtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRwdXRjaGFyKCdcXFxcbicpO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuYyBiL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuY1xcbmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcXG5AQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X21ldHJpY19qc29uKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcgX19tYXliZV91bnVzZWQsXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAoIWNvbmZpZy1cXHUwMDNlbWV0cmljX29ubHkpXFxuLVxcdFxcdGZwcmludGYob3V0LCBcXFwifVxcXCIpO1xcbitcXHRcXHRmcHV0YyhvdXQsICd9Jyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIG5ld19saW5lX2pzb24oc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgdm9pZCAqY3R4KVxcbkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9oZWFkZXJfc3RkKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcsXFxuIFxcdEZJTEUgKm91dHB1dCA9IGNvbmZpZy1cXHUwMDNlb3V0cHV0O1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZwcmludGYob3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0cHV0LCAnXFxcXG4nKTtcXG4gXFx0ZnByaW50ZihvdXRwdXQsIFxcXCIgUGVyZm9ybWFuY2UgY291bnRlciBzdGF0cyBmb3IgXFxcIik7XFxuIFxcdGlmIChfdGFyZ2V0LVxcdTAwM2VicGZfc3RyKVxcbiBcXHRcXHRmcHJpbnRmKG91dHB1dCwgXFxcIlxcXFwnQlBGIHByb2dyYW0ocykgJXNcXFwiLCBfdGFyZ2V0LVxcdTAwM2VicGZfc3RyKTtcXG5AQCAtMTMzMyw3ICsxMzMzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX3N0ZChzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnLFxcbiBcXHRlbHNlXFxuIFxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwidGhyZWFkIGlkIFxcXFwnJXNcXFwiLCBfdGFyZ2V0LVxcdTAwM2V0aWQpO1xcbiBcXG4tXFx0ZnByaW50ZihvdXRwdXQsIFxcXCJcXFxcJ1xcXCIpO1xcbitcXHRmcHV0YyhvdXRwdXQsICdcXFxcJycpO1xcbiBcXHRpZiAoY29uZmlnLVxcdTAwM2VydW5fY291bnQgXFx1MDAzZSAxKVxcbiBcXHRcXHRmcHJpbnRmKG91dHB1dCwgXFxcIiAoJWQgcnVucylcXFwiLCBjb25maWctXFx1MDAzZXJ1bl9jb3VudCk7XFxuIFxcdGZwcmludGYob3V0cHV0LCBcXFwiOlxcXFxuXFxcXG5cXFwiKTtcXG5AQCAtMTQwNiw5ICsxNDA2LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFibGUoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgRklMRSAqb3V0cHV0LCBkb3VibGUgYXZcXG4gXFx0XFx0ZnByaW50ZihvdXRwdXQsIFxcXCIgJTE3LjlmICglKy45ZikgXFxcIiwgcnVuLCBydW4gLSBhdmcpO1xcbiBcXG4gXFx0XFx0Zm9yIChoID0gMDsgaCBcXHUwMDNjIG47IGgrKylcXG4tXFx0XFx0XFx0ZnByaW50ZihvdXRwdXQsIFxcXCIjXFxcIik7XFxuK1xcdFxcdFxcdGZwdXRjKG91dHB1dCwgJyMnKTtcXG4gXFxuLVxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMob3V0cHV0LCAnXFxcXG4nKTtcXG4gXFx0fVxcbiBcXG4gXFx0ZnByaW50ZihvdXRwdXQsIFxcXCJcXFxcbiUqcyMgRmluYWwgcmVzdWx0OlxcXFxuXFxcIiwgaW5kZW50LCBcXFwiXFxcIik7XFxuQEAgLTE0MjgsNyArMTQyOCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoIWNvbmZpZy1cXHUwMDNlbnVsbF9ydW4pXFxuLVxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMob3V0cHV0LCAnXFxcXG4nKTtcXG4gXFxuIFxcdGlmIChjb25maWctXFx1MDAzZXJ1bl9jb3VudCA9PSAxKSB7XFxuIFxcdFxcdGZwcmludGYob3V0cHV0LCBcXFwiICUxNy45ZiBzZWNvbmRzIHRpbWUgZWxhcHNlZFxcXCIsIGF2Zyk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuY1xcbmluZGV4IDZlYWRkZmNmODMzZTUyLi4yYzUzNDBhOTI4ZGQxZCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcXG5AQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxcbiBcXHRmcHJpbnRmKGZwLCBcXFwiIyAlKnMgICUqc1xcXCIsIHBpZHdpZHRoLCBcXFwiUElEXFxcIiwgdGlkd2lkdGgsIFxcXCJUSURcXFwiKTtcXG4gXFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIHZhbHVlcy1cXHUwMDNlbnVtX2NvdW50ZXJzOyBqKyspXFxuIFxcdFxcdGZwcmludGYoZnAsIFxcXCIgICUqc1xcXCIsIGNvdW50ZXJ3aWR0aFtqXSwgZXZzZWxfX25hbWUodmFsdWVzLVxcdTAwM2Vjb3VudGVyc1tqXSkpO1xcbi1cXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZhbHVlcy1cXHUwMDNldGhyZWFkczsgaSsrKSB7XFxuIFxcdFxcdGZwcmludGYoZnAsIFxcXCIgICUqZCAgJSpkXFxcIiwgcGlkd2lkdGgsIHZhbHVlcy1cXHUwMDNlcGlkW2ldLFxcbkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9yZWFkX3ZhbHVlc19fZGlzcGxheV9wcmV0dHkoRklMRSAqZnAsXFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyB2YWx1ZXMtXFx1MDAzZW51bV9jb3VudGVyczsgaisrKVxcbiBcXHRcXHRcXHRmcHJpbnRmKGZwLCBcXFwiICAlKlxcXCIgUFJJdTY0LFxcbiBcXHRcXHRcXHRcXHRjb3VudGVyd2lkdGhbal0sIHZhbHVlcy1cXHUwMDNldmFsdWVbaV1bal0pO1xcbi1cXHRcXHRmcHJpbnRmKGZwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZnAsICdcXFxcbicpO1xcbiBcXHR9XFxuIFxcdGZyZWUoY291bnRlcndpZHRoKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wb3dlci9hY3BpL3Rvb2xzL2FjcGlkdW1wL2FwZHVtcC5jIGIvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuY1xcbmluZGV4IDcyYWQ3OTE1YjA0ZmQyLi42MDBkNWI2ZTA0YTg4MCAxMDA2NDRcXG4tLS0gYS90b29scy9wb3dlci9hY3BpL3Rvb2xzL2FjcGlkdW1wL2FwZHVtcC5jXFxuKysrIGIvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuY1xcbkBAIC0xNzEsNyArMTcxLDcgQEAgYXBfZHVtcF90YWJsZV9idWZmZXIoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSxcXG4gXFx0YWNwaV91dF9kdW1wX2J1ZmZlcl90b19maWxlKGdibF9vdXRwdXRfZmlsZSxcXG4gXFx0XFx0XFx0XFx0ICAgIEFDUElfQ0FTVF9QVFIodTgsIHRhYmxlKSwgdGFibGVfbGVuZ3RoLFxcbiBcXHRcXHRcXHRcXHQgICAgREJfQllURV9ESVNQTEFZLCAwKTtcXG4tXFx0ZnByaW50ZihnYmxfb3V0cHV0X2ZpbGUsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhnYmxfb3V0cHV0X2ZpbGUsICdcXFxcbicpO1xcbiBcXHRyZXR1cm4gKDApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jIGIvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuY1xcbmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDRcXG4tLS0gYS90b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0L2lzc3QtZGlzcGxheS5jXFxuKysrIGIvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuY1xcbkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXFxuIFxcbiBcXHRpZiAobGV2ZWwgPT0gMCkge1xcbiBcXHRcXHRpZiAoaGVhZGVyKVxcbi1cXHRcXHRcXHRmcHJpbnRmKG91dGYsIFxcXCJ7XFxcIik7XFxuK1xcdFxcdFxcdGZwdXRjKG91dGYsICd7Jyk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG59XFxcXG5cXFwiKTtcXG4gXFxuQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgdm9pZCBmb3JtYXRfYW5kX3ByaW50KEZJTEUgKm91dGYsIGludCBsZXZlbCwgY2hhciAqaGVhZGVyLCBjaGFyICp2YWx1ZSlcXG4gXFxuIFxcdFxcdGlmICh2YWx1ZSkge1xcbiBcXHRcXHRcXHRpZiAobGFzdF9sZXZlbCAhPSBsZXZlbClcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0ZnB1dGMob3V0ZiwgJ1xcXFxuJyk7XFxuIFxcbiBcXHRcXHRcXHRmcHJpbnRmKG91dGYsIFxcXCIlc1xcXFxcXFwiJXNcXFxcXFxcIjogXFxcIiwgZGVsaW1pdGVycywgaGVhZGVyKTtcXG4gXFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXFxcXCIlc1xcXFxcXFwiXFxcIiwgdmFsdWUpO1xcbkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXFxuIFxcdFxcdFxcdFxcdFxcdGZwcmludGYob3V0ZiwgXFxcIlxcXFxuJXN9XFxcIiwgZGVsaW1pdGVycyk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0aWYgKGFicyhsYXN0X2xldmVsIC0gbGV2ZWwpIFxcdTAwM2MgMylcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0ZnB1dGMob3V0ZiwgJ1xcXFxuJyk7XFxuIFxcdFxcdFxcdGlmIChoZWFkZXIpXFxuIFxcdFxcdFxcdFxcdGZwcmludGYob3V0ZiwgXFxcIiVzXFxcXFxcXCIlc1xcXFxcXFwiOiB7XFxcIiwgZGVsaW1pdGVycyxcXG4gXFx0XFx0XFx0XFx0XFx0aGVhZGVyKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcXG5pbmRleCA5MjA2OTRjM2MxZWM5NC4uNDVkMzlhMGZjZjcyYTAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuY1xcbisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcXG5AQCAtOTA5OSw3ICs5MDk5LDcgQEAgdm9pZCBkdW1wX2NwdWlkX2h5cGVydmlzb3Iodm9pZClcXG4gXFx0ZHVtcF93b3JkX2NoYXJzKGVieCk7XFxuIFxcdGR1bXBfd29yZF9jaGFycyhlY3gpO1xcbiBcXHRkdW1wX3dvcmRfY2hhcnMoZWR4KTtcXG4tXFx0ZnByaW50ZihvdXRmLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMob3V0ZiwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHZvaWQgcHJvY2Vzc19jcHVpZCgpXFxuQEAgLTk3NDksNyArOTc0OSw3IEBAIHZvaWQgdG9wb2xvZ3lfcHJvYmUoYm9vbCBzdGFydHVwKVxcbiBcXHRcXHRmcHJpbnRmKG91dGYsIFxcXCIgc2libGluZ3NcXFwiKTtcXG4gXFx0XFx0Zm9yIChodF9pZCA9IDA7IGh0X2lkIFxcdTAwM2M9IE1BWF9IVF9JRDsgKytodF9pZClcXG4gXFx0XFx0XFx0ZnByaW50ZihvdXRmLCBcXFwiICVkXFxcIiwgY3B1c1tpXS5odF9zaWJsaW5nX2NwdV9pZFtodF9pZF0pO1xcbi1cXHRcXHRmcHJpbnRmKG91dGYsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0YyhvdXRmLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiBcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmNcXG5pbmRleCAxZWUyMTdkOTc0MzQwZS4uNjRiOTdhNDFhZjQ1ZWEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXFxuQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh0YWJfbWVtX3VzZV9jYXNlICpodGFiX21lbV9maW5kX3VzZV9jYXNlX29yX2V4aXQoY29uc3QgY2hhclxcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImF2YWlsYWJsZSB1c2UgY2FzZTpcXFwiKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUodXNlX2Nhc2VzKTsgaSsrKVxcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAlc1xcXCIsIHVzZV9jYXNlc1tpXS5uYW1lKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRleGl0KDEpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmNcXG5pbmRleCAzNTU4ZmUxMGUyOGNmOS4uNThlYTJhMmVjMTNlMmQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXFxuQEAgLTIyOCw3ICsyMjgsNyBAQCBpbnQgZ2V0X2ppdGVkX3Byb2dyYW1fdGV4dChpbnQgZmQsIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X3N6KVxcbiBcXHRmb3IgKHBjID0gMCwgaSA9IDA7IGkgXFx1MDAzYyBqaXRlZF9mdW5jczsgKytpKSB7XFxuIFxcdFxcdGZwcmludGYodGV4dF9vdXQsIFxcXCJmdW5jICMlZDpcXFxcblxcXCIsIGkpO1xcbiBcXHRcXHRkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICsgcGMsIGZ1bmNfbGVuc1tpXSk7XFxuLVxcdFxcdGZwcmludGYodGV4dF9vdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRmcHV0Yyh0ZXh0X291dCwgJ1xcXFxuJyk7XFxuIFxcdFxcdHBjICs9IGZ1bmNfbGVuc1tpXTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcXG5pbmRleCA3YmE4Mjk3NGVlNzg0ZC4uYjUyMGJlMWJmN2FhYTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcXG5AQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfcmVzdWx0KGNvbnN0IHN0cnVjdCBwcm9nX3Rlc3RfZGVmICp0ZXN0LCBjb25zdCBzdHJ1Y3QgdGVzXFxuIFxcdGVsc2VcXG4gXFx0XFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiT0sgKFNLSVA6ICVkLyVkKVxcXCIsIHNraXBwZWRfY250LCBzdWJ0ZXN0c19jbnQpO1xcbiBcXG4tXFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X3Rlc3RfbG9nKGNoYXIgKmxvZ19idWYsIHNpemVfdCBsb2dfY250KVxcbkBAIC0zOTEsNyArMzkxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGVzdF9sb2coY2hhciAqbG9nX2J1Ziwgc2l6ZV90IGxvZ19jbnQpXFxuIFxcdGxvZ19idWZbbG9nX2NudF0gPSAnXFxcXDAnO1xcbiBcXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFxcXCIlc1xcXCIsIGxvZ19idWYpO1xcbiBcXHRpZiAobG9nX2J1Zltsb2dfY250IC0gMV0gIT0gJ1xcXFxuJylcXG4tXFx0XFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X3N1YnRlc3RfbmFtZShpbnQgdGVzdF9udW0sIGludCBzdWJ0ZXN0X251bSxcXG5AQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3N1YnRlc3RfbmFtZShpbnQgdGVzdF9udW0sIGludCBzdWJ0ZXN0X251bSxcXG4gXFx0aWYgKHJlc3VsdClcXG4gXFx0XFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcXFwiOiVzXFxcIiwgcmVzdWx0KTtcXG4gXFxuLVxcdGZwcmludGYoZW52LnN0ZG91dF9zYXZlZCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICdcXFxcbicpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBqc29ud193cml0ZV9sb2dfbWVzc2FnZShqc29uX3dyaXRlcl90ICp3LCBjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcXG5AQCAtMTMzMywxNCArMTMzMywxNCBAQCB2b2lkIGhleGR1bXAoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pXFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspIHtcXG4gXFx0XFx0aWYgKCEoaSAlIDE2KSkge1xcbiBcXHRcXHRcXHRpZiAoaSlcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRwdXRjaGFyKCdcXFxcbicpO1xcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiVzXFxcIiwgcHJlZml4KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRpZiAoaSBcXHUwMDI2XFx1MDAyNiAhKGkgJSA4KSBcXHUwMDI2XFx1MDAyNiAoaSAlIDE2KSlcXG4tXFx0XFx0XFx0ZnByaW50ZihzdGRvdXQsIFxcXCJcXFxcdFxcXCIpO1xcbitcXHRcXHRcXHRwdXRjaGFyKCdcXFxcdCcpO1xcbiBcXHRcXHRmcHJpbnRmKHN0ZG91dCwgXFxcIiUwMlggXFxcIiwgKCh1aW50OF90ICopKGJ1ZikpW2ldKTtcXG4gXFx0fVxcbi1cXHRmcHJpbnRmKHN0ZG91dCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdHB1dGNoYXIoJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG5pbmRleCBhN2RiNmYwNGY3ZTE0NS4uZDFjN2YwNmI4YjFjZjkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xcbkBAIC0xNjA1LDcgKzE2MDUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wKF9fdTMyIHByb2dfaWQsIGVudW0gZHVtcF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc1xcbiBcXHRwcmludGYoXFxcIkRVTVAgKCVzKSAlcy8lczpcXFxcblxcXCIsIG1vZGUgPT0gRFVNUF9KSVRFRCA/IFxcXCJKSVRFRFxcXCIgOiBcXFwiWExBVEVEXFxcIiwgZmlsZV9uYW1lLCBwcm9nX25hbWUpO1xcbiBcXHR3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZnApKVxcbiBcXHRcXHRmcHV0cyhidWYsIHN0ZG91dCk7XFxuLVxcdGZwcmludGYoc3Rkb3V0LCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0cHV0Y2hhcignXFxcXG4nKTtcXG4gXFxuIFxcdGlmIChmZXJyb3IoZnApKVxcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIkZhaWxlZCB0byBkdW1wIEJQRiBwcm9nIHdpdGggZXJyb3I6ICVkXFxcXG5cXFwiLCBlcnJubyk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXFxuaW5kZXggZDk2ZThhM2I1YTY1MjYuLjdiZGNjNDExNGRiYTFjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXFxuQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBwcl9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcbiBcXHRpZiAoZXJybm8gIT0gMClcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCI6ICVzXFxcIiwgc3RyZXJyb3IoZXJybm8pKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IG1lbW9yeV9idWZmZXIgKnVkbWFidWZfYWxsb2Moc2l6ZV90IHNpemUpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXFxuaW5kZXggYzc4MDVlODdkMTJjNWQuLjEyMDgzNGY4YmEwZGE1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXFxuQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3NrKGNvbnN0IHVuc2lnbmVkIGNoYXIgc2tleXNbXSwgY29uc3QgY2hhciAqZGVzY3IpXFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiIyAlM2Q6IFxcXCIsIGkpO1xcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgMzI7IGorKylcXG4gXFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlMDJ4IFxcXCIsIHNrZXlzW2kgKyBqXSk7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmNcXG5pbmRleCA3ODE4MGRhMWVmY2M1My4uNDA0NjdlODZiZmQ0N2IgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXFxuQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW50IGNhcHR1cmVfZXZlbnRzKGludCBmZCwgaW50IGV2ZW50X2dyb3VwKVxcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChzZXJ2ZXJfc2lkZSlcXG4gXFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIsc2VydmVyX3NpZGU6MVxcXCIpO1xcbi1cXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdH0gd2hpbGUgKDEpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jXFxuaW5kZXggN2NhZjMxMzU0NDhkYTcuLjcyNGRhOTIyMmFkOWEwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wc29ja190cGFja2V0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jXFxuQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IHBmc29ja2V0KGludCB2ZXIpXFxuIHN0YXRpYyB2b2lkIHN0YXR1c19iYXJfdXBkYXRlKHZvaWQpXFxuIHtcXG4gXFx0aWYgKHRvdGFsX3BhY2tldHMgJSAxMCA9PSAwKSB7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiLlxcXCIpO1xcbitcXHRcXHRmcHV0YyhzdGRlcnIsICcuJyk7XFxuIFxcdFxcdGZmbHVzaChzdGRlcnIpO1xcbiBcXHR9XFxuIH1cXG5AQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRpYyBpbnQgdGVzdF90cGFja2V0KGludCB2ZXJzaW9uLCBpbnQgdHlwZSlcXG4gXFx0dW5tYXBfcmluZyhzb2NrLCBcXHUwMDI2cmluZyk7XFxuIFxcdGNsb3NlKHNvY2spO1xcbiBcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xcbmluZGV4IDE3MGJlMTkyZjVjN2NlLi44NmM4ZDQ5NDVkNzNjMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jXFxuQEAgLTIwMCwxMCArMjAwLDEwIEBAIHN0YXRpYyB2b2lkIF9fcHJpbnRfdGltZXN0YW1wKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB0aW1lc3BlYyAqY3VyLFxcbiBcXHRcXHR0c19kZWx0YSA9IHRpbWVzcGVjX3RvX25zNjQoY3VyKSAtIHRpbWVzcGVjX3RvX25zNjQoXFx1MDAyNnRzX3Vzcik7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiICAoVVNSICtcXFwiKTtcXG4gXFx0XFx0X19wcmludF90c19kZWx0YV9mb3JtYXR0ZWQodHNfZGVsdGEpO1xcbi1cXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIilcXFwiKTtcXG4rXFx0XFx0ZnB1dGMoc3RkZXJyLCAnKScpO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHJlY29yZF90aW1lc3RhbXBfdXNyKHZvaWQpXFxuQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90aW1pbmdfZXZlbnQoY2hhciAqbmFtZSwgc3RydWN0IHRpbWluZ19ldmVudCAqdGUpXFxuIFxcdF9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRlLVxcdTAwM2VtaW4pO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiwgbWF4PVxcXCIpO1xcbiBcXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cXHUwMDNlbWF4KTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiB9XFxuIFxcbiAvKiBUT0RPOiBjb252ZXJ0IHRvIGNoZWNrX2FuZF9wcmludCBwYXlsb2FkIG9uY2UgQVBJIGlzIHN0YWJsZSAqL1xcbkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfcGF5bG9hZChjaGFyICpkYXRhLCBpbnQgbGVuKVxcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcInBheWxvYWQ6IFxcXCIpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspXFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJTAyaGh4IFxcXCIsIGRhdGFbaV0pO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcilcXG5AQCAtOTMzLDcgKzkzMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJwcm90b2NvbDogICAgICVzXFxcXG5cXFwiLCBzb2NrX25hbWVzW2NmZ19wcm90b10pO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcInBheWxvYWQ6ICAgICAgJXVcXFxcblxcXCIsIGNmZ19wYXlsb2FkX2xlbik7XFxuIFxcdGZwcmludGYoc3RkZXJyLCBcXFwic2VydmVyIHBvcnQ6ICAldVxcXFxuXFxcIiwgZGVzdF9wb3J0KTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXG4gXFx0aWYgKGRvX2lwdjQpIHtcXG4gXFx0XFx0aWYgKGNmZ19kb19saXN0ZW4pXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuY1xcbmluZGV4IDdjMjNkM2RkN2Q2ZDkxLi40MTJkZWZlOTgyNzE0MyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcXG5AQCAtMzYzLDcgKzM2Myw3IEBAIGludCBkZWNvbXByZXNzX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCB2b2lkICpkZXZoYW5kbGUpXFxuIFxcdFxcdFxcdGdvdG8gZXJyMztcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlMDJ4IFxcXCIsIHRtcFtpXSk7XFxuIFxcdFxcdGlmIChpID09IDUpXFxuLVxcdFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0fVxcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImd6SGVhZGVyIE1USU1FLCBYRkwsIE9TIGlnbm9yZWRcXFxcblxcXCIpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oXFxuaW5kZXggNzdiNjhjNzEyOWE2NDguLjgyMDE1YjE5ZGY2YzM5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxcbkBAIC0xMCw3ICsxMCw3IEBAXFxuIFxcbiAjZGVmaW5lIFZGSU9fTE9HX0FORF9FWElUKC4uLikgZG8ge1xcdFxcdFxcXFxcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCIgIFxcXCIgX19WQV9BUkdTX18pO1xcdFxcXFxcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcdFxcdFxcdFxcXFxcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXHRcXHRcXHRcXFxcXFxuIFxcdGV4aXQoS1NGVF9GQUlMKTtcXHRcXHRcXHRcXFxcXFxuIH0gd2hpbGUgKDApXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmNcXG5pbmRleCAzYTNkMWVkNjM1YzFkZi4uODBhMzEyZjE0OWE2NmUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXFxuQEAgLTYwLDE2ICs2MCwxNiBAQCBjaGFyICoqdmZpb19zZWxmdGVzdHNfZ2V0X2JkZnMoaW50ICphcmdjLCBjaGFyICphcmd2W10sIGludCAqbnJfYmRmcylcXG4gXFx0fVxcbiBcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGRldmljZShzKSB0byB1c2UsIHNraXBwaW5nIHRlc3QuXFxcXG5cXFwiKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlRvIHBhc3MgdGhlIGRldmljZSBhZGRyZXNzIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZTpcXFxcblxcXCIpO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdGZwcmludGYoc3RkZXJyLCBcXFwiICAgIGV4cG9ydCBWRklPX1NFTEZURVNUU19CREY9XFxcXFxcXCJzZWdtZW50OmJ1czpkZXZpY2UuZnVuY3Rpb25cXFxcXFxcIlxcXFxuXFxcIik7XFxuIFxcdGZwcmludGYoc3RkZXJyLCBcXFwiICAgICVzIFtvcHRpb25zXVxcXFxuXFxcIiwgYXJndlswXSk7XFxuLVxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJUbyBwYXNzIHRoZSBkZXZpY2UgYWRkcmVzcyhlcykgdmlhIGFyZ3Y6XFxcXG5cXFwiKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAgICAlcyBbb3B0aW9uc10gc2VnbWVudDpidXM6ZGV2aWNlLmZ1bmN0aW9uIC4uLlxcXFxuXFxcIiwgYXJndlswXSk7XFxuLVxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0ZnB1dGMoc3RkZXJyLCAnXFxcXG4nKTtcXG4gXFx0ZXhpdChLU0ZUX1NLSVApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX2RpYWdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuY1xcbmluZGV4IDA4MWUwNDVmNDY5NjBlLi5jYzkwM2NkYjQ1ZDkyZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX2RpYWdfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuY1xcbkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX2FkZHIoRklMRSAqZnAsIHVuc2lnbmVkIGludCBjaWQsIHVuc2lnbmVkIGludCBwb3J0KVxcbiBcXHRcXHRmcHJpbnRmKGZwLCBcXFwiJXU6XFxcIiwgY2lkKTtcXG4gXFxuIFxcdGlmIChwb3J0ID09IFZNQUREUl9QT1JUX0FOWSlcXG4tXFx0XFx0ZnByaW50ZihmcCwgXFxcIipcXFwiKTtcXG4rXFx0XFx0ZnB1dGMoZnAsICcqJyk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0ZnByaW50ZihmcCwgXFxcIiV1XFxcIiwgcG9ydCk7XFxuIH1cXG5AQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBwcmludF92c29ja19hZGRyKEZJTEUgKmZwLCB1bnNpZ25lZCBpbnQgY2lkLCB1bnNpZ25lZCBpbnQgcG9ydClcXG4gc3RhdGljIHZvaWQgcHJpbnRfdnNvY2tfc3RhdChGSUxFICpmcCwgc3RydWN0IHZzb2NrX3N0YXQgKnN0KVxcbiB7XFxuIFxcdHByaW50X3Zzb2NrX2FkZHIoZnAsIHN0LVxcdTAwM2Vtc2cudmRpYWdfc3JjX2NpZCwgc3QtXFx1MDAzZW1zZy52ZGlhZ19zcmNfcG9ydCk7XFxuLVxcdGZwcmludGYoZnAsIFxcXCIgXFxcIik7XFxuK1xcdGZwdXRjKGZwLCAnICcpO1xcbiBcXHRwcmludF92c29ja19hZGRyKGZwLCBzdC1cXHUwMDNlbXNnLnZkaWFnX2RzdF9jaWQsIHN0LVxcdTAwM2Vtc2cudmRpYWdfZHN0X3BvcnQpO1xcbiBcXHRmcHJpbnRmKGZwLCBcXFwiICVzICVzICVzICV1XFxcXG5cXFwiLFxcbiBcXHRcXHRzb2NrX3R5cGVfc3RyKHN0LVxcdTAwM2Vtc2cudmRpYWdfdHlwZSksXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jIGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcXG5pbmRleCBjYjExMDhiYzkyNDk4OS4uZWJkYjk1ODE5YTc2NmQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcXG4rKysgYi90b29scy90aGVybWFsL3Rtb24vc3lzZnMuY1xcbkBAIC01MjIsNyArNTIyLDcgQEAgaW50IHVwZGF0ZV90aGVybWFsX2RhdGEoKVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAodG1vbl9sb2cpIHtcXG4tXFx0XFx0ZnByaW50Zih0bW9uX2xvZywgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdGZwdXRjKHRtb25fbG9nLCAnXFxcXG4nKTtcXG4gXFx0XFx0ZmZsdXNoKHRtb25fbG9nKTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGhlcm1hbC90bW9uL3Rtb24uYyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmNcXG5pbmRleCA3ZWIzMjE2YTI3ZjQ1Zi4uOWE5NzJmNzNhMmMwMDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGhlcm1hbC90bW9uL3Rtb24uY1xcbisrKyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmNcXG5AQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfbG9nZ2luZyh2b2lkKVxcbiBcXHRcXHRmcHJpbnRmKHRtb25fbG9nLCBcXFwiJXMlZCBcXFwiLCBwdGRhdGEuY2RpW2ldLnR5cGUsXFxuIFxcdFxcdFxcdHB0ZGF0YS5jZGlbaV0uaW5zdGFuY2UpO1xcbiBcXG4tXFx0ZnByaW50Zih0bW9uX2xvZywgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHRtb25fbG9nLCAnXFxcXG4nKTtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuYyBiL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXFxuaW5kZXggZWY5NzkxNmUzODczYTEuLjNkYzZmYjlkZjkyNjgzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXFxuKysrIGIvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmNcXG5AQCAtMTk5OSw3ICsxOTk5LDcgQEAgc3RhdGljIHZvaWQgc2Nhbl9hcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFxcImJlZW4gZW5hYmxlZC4gUmFuZG9tIHNsZWVwIGlzIGludGVuZGVkIGZvciB0aGUgZm9sbG93aW5nIHRyYWNlcnM6XFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0Zm9yIChpID0gMDsgcmFuZG9tX3RyYWNlcnNbaV07IGkrKylcXG4gXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlc1xcXFxuXFxcIiwgcmFuZG9tX3RyYWNlcnNbaV0pO1xcbi1cXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uYyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcXG5pbmRleCA4YzdmNWU3NWIyZWM4ZC4uZTgxZTY3NmQ1MWQyYWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy9jb21tb24uY1xcbisrKyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmNcXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsXFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJXMgWy1oXSBcXFwiLCBtb2RlKTtcXG4gXFxuIFxcdHByaW50X21zZ19hcnJheShzdGFydF9tc2dzKTtcXG4tXFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRwcmludF9tc2dfYXJyYXkoY29tbW9uX29wdGlvbnMpO1xcbiBcXHRwcmludF9tc2dfYXJyYXkob3B0X21zZ3MpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jIGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jXFxuaW5kZXggY2IxODdlN2Q0OGQxYzIuLjM1MzJkYTJmMjI5NmQ4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xcbisrKyBiL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xcbkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgZmF0YWwoY29uc3QgY2hhciAqZm10LCAuLi4pXFxuIFxcdHZhX3N0YXJ0KGFwLCBmbXQpO1xcbiBcXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xcbiBcXHR2YV9lbmQoYXApO1xcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIFxcbiBcXHRleGl0KEVSUk9SKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy91c2IvZmZzLXRlc3QuYyBiL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXFxuaW5kZXggMjJiOTM4ZmJkZmI3NzIuLmU5OTM3MzZiYTBkNjQ3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXFxuKysrIGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmNcXG5AQCAtNTYyLDcgKzU2Miw3IEBAIGVtcHR5X291dF9idWYoc3RydWN0IHRocmVhZCAqaWdub3JlLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBuYnl0ZXMpXFxuIFxcdFxcdFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJTR6ZDpcXFwiLCBsZW4pO1xcbiBcXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIiAlMDJ4XFxcIiwgKnApO1xcbiBcXHRcXHRcXHRpZiAoMzEgPT0gKGxlbiAlIDMyKSlcXG4tXFx0XFx0XFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRmcHV0YyhzdGRlcnIsICdcXFxcbicpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGZmbHVzaChzdGRlcnIpO1xcbiBcXHRcXHRlcnJubyA9IEVJTFNFUTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcXG5pbmRleCBlNmRlYTQwNDBmOGY0Yy4uMjYxMzIxNzFmNjAwOGUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuY1xcbisrKyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcXG5AQCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyB2b2lkIGlrbV91c2FnZV9wcmludF9yZWFjdG9ycyh2b2lkKVxcbiBcXHRcXHRlbmQgPSBzdHJzdHIoc3RhcnQsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHR9XFxuIFxcbi1cXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdGZwdXRjKHN0ZGVyciwgJ1xcXFxuJyk7XFxuIH1cXG4gLypcXG4gICogaWttX3VzYWdlIC0gcHJpbnQgdXNhZ2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjI6MzY6MDUuNzkwNjI4MDA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwMzAyMTUxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSBieSByZXBsYWNpbmcgYGZwcmludGZgIHdpdGggYGZwdXRjYCBvciBgcHV0Y2hhcmAgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1OGZjZTA0MDVjZTFjNTQ4MTBkNmM1NWQ1ZWFkMTE4OTA3ZTBkZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMjozNjowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvY29tbW9uLmNcbmluZGV4IDhiZmNmZjllMmY2Mzk0Li43NmFiZDNmNGZiY2JjNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL2NvbW1vbi5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9jb21tb24uY1xuQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOiBcIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHR9XG4gXHR2YV9lbmQoYXApO1xuIH1cbkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgcF9pbmZvKGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFxuIFx0dmFfc3RhcnQoYXAsIGZtdCk7XG4gXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHR2YV9lbmQoYXApO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9tYWluLmMgYi90b29scy9icGYvYnBmdG9vbC9tYWluLmNcbmluZGV4IGM5MWUxYTZlMWExZWNhLi5hZWNmYzc3ODYyNWY3MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL21haW4uY1xuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvbWFpbi5jXG5AQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgZnByaW50X2hleChGSUxFICpmLCB2b2lkICphcmcsIHVuc2lnbmVkIGludCBuLCBjb25zdCBjaGFyICpzZXApXG4gXHRcdGlmICghaSlcbiBcdFx0XHQvKiBub3RoaW5nICovO1xuIFx0XHRlbHNlIGlmICghKGkgJSAxNikpXG4tXHRcdFx0ZnByaW50ZihmLCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhmLCAnXFxuJyk7XG4gXHRcdGVsc2UgaWYgKCEoaSAlIDgpKVxuIFx0XHRcdGZwcmludGYoZiwgXCIgIFwiKTtcbiBcdFx0ZWxzZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL25ldGxpbmtfZHVtcGVyLmggYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5pbmRleCA5NjMxODEwNmZiNDk3My4uYmYwOTE5YjRmNTJhYjggMTAwNjQ0XG4tLS0gYS90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9uZXRsaW5rX2R1bXBlci5oXG5AQCAtMjUsNyArMjUsNyBAQFxuIFx0aWYgKGpzb25fb3V0cHV0KVx0XHRcdFx0XFxcbiBcdFx0anNvbndfc3RhcnRfb2JqZWN0KGpzb25fd3RyKTtcdFx0XFxcbiBcdGVsc2VcdFx0XHRcdFx0XHRcXFxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCJ7XCIpO1x0XHRcdFxcXG4rXHRcdHB1dGNoYXIoJ3snKTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX0VORF9PQkpFQ1RfTkVTVEVEXHRcdFx0XHRcXFxuQEAgLTMzLDcgKzMzLDcgQEBcbiBcdGlmIChqc29uX291dHB1dClcdFx0XHRcdFxcXG4gXHRcdGpzb253X2VuZF9vYmplY3QoanNvbl93dHIpO1x0XHRcXFxuIFx0ZWxzZVx0XHRcdFx0XHRcdFxcXG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcIn1cIik7XHRcdFx0XFxcbitcdFx0cHV0Y2hhcignfScpO1x0XHRcdFx0XFxcbiB9XG4gXG4gI2RlZmluZSBORVRfRU5EX09CSkVDVFx0XHRcdFx0XHRcXFxuQEAgLTQ3LDcgKzQ3LDcgQEBcbiBcdGlmIChqc29uX291dHB1dClcdFx0XHRcdFxcXG4gXHRcdGpzb253X2VuZF9vYmplY3QoanNvbl93dHIpO1x0XHRcXFxuIFx0ZWxzZVx0XHRcdFx0XHRcdFxcXG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcIlxcblwiKTtcdFx0XHRcXFxuK1x0XHRwdXRjaGFyKCdcXG4nKTtcdFx0XHRcdFxcXG4gfVxuIFxuICNkZWZpbmUgTkVUX1NUQVJUX0FSUkFZKG5hbWUsIGZtdF9zdHIpXHRcdFx0XFxcbmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbmluZGV4IGE5ZjczMGQ0MDdhOTI5Li5kMjdjYjlkNDk4NjA5MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5AQCAtMTI2Niw3ICsxMjY2LDcgQEAgc3RhdGljIHZvaWQgaGV4X3ByaW50KHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplLCBGSUxFICpmKVxuIFx0XHRcdGZwcmludGYoZiwgXCIlYyVzXCIsIGMsIGogPT0gaSArIDcgPyBcIiBcIiA6IFwiXCIpO1xuIFx0XHR9XG4gXG4tXHRcdGZwcmludGYoZiwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGYsICdcXG4nKTtcbiBcdH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jIGIvdG9vbHMvZ3Bpby9ncGlvLWV2ZW50LW1vbi5jXG5pbmRleCBiNzA4MTNiMGJmOGVmYS4uZTEyZTE0NzgwYzBlNDUgMTAwNjQ0XG4tLS0gYS90b29scy9ncGlvL2dwaW8tZXZlbnQtbW9uLmNcbisrKyBiL3Rvb2xzL2dwaW8vZ3Bpby1ldmVudC1tb24uY1xuQEAgLTEyMSw3ICsxMjEsNyBAQCBpbnQgbW9uaXRvcl9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUsXG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwidW5rbm93biBldmVudFwiKTtcbiBcdFx0fVxuLVx0XHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRcdHB1dGNoYXIoJ1xcbicpO1xuIFxuIFx0XHRpKys7XG4gXHRcdGlmIChpID09IGxvb3BzKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuYyBiL3Rvb2xzL2dwaW8vZ3Bpby1oYW1tZXIuY1xuaW5kZXggYmEwODY2ZWIzNTgxNDUuLmI3NmM5NGZlZTA0ZDA5IDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9ncGlvLWhhbW1lci5jXG4rKysgYi90b29scy9ncGlvL2dwaW8taGFtbWVyLmNcbkBAIC04Nyw3ICs4Nyw3IEBAIGludCBoYW1tZXJfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCB1bnNpZ25lZCBpbnQgKmxpbmVzLCBpbnQgbnVtX2xpbmVzLFxuIFx0XHRpZiAoaiA9PSBzaXplb2Yoc3dpcnIpIC0gMSlcbiBcdFx0XHRqID0gMDtcbiBcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwiW1wiKTtcbitcdFx0cHV0Y2hhcignWycpO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fbGluZXM7IGkrKykge1xuIFx0XHRcdGZwcmludGYoc3Rkb3V0LCBcIiV1OiAlZFwiLCBsaW5lc1tpXSxcbiBcdFx0XHRcdGdwaW90b29sc190ZXN0X2JpdCh2YWx1ZXMuYml0cywgaSkpO1xuQEAgLTEwMSw3ICsxMDEsNyBAQCBpbnQgaGFtbWVyX2RldmljZShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgdW5zaWduZWQgaW50ICpsaW5lcywgaW50IG51bV9saW5lcyxcbiBcdFx0aWYgKGxvb3BzIFx1MDAyNlx1MDAyNiBpdGVyYXRpb24gPT0gbG9vcHMpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4tXHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRwdXRjaGFyKCdcXG4nKTtcbiBcdHJldCA9IDA7XG4gXG4gZXhpdF9jbG9zZV9lcnJvcjpcbmRpZmYgLS1naXQgYS90b29scy9ncGlvL2xzZ3Bpby5jIGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuaW5kZXggNTJhMGJlNDU0MTBjOTcuLmFiYjJjNmZiYzNkN2NhIDEwMDY0NFxuLS0tIGEvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuKysrIGIvdG9vbHMvZ3Bpby9sc2dwaW8uY1xuQEAgLTE1Miw5ICsxNTIsOSBAQCBpbnQgbGlzdF9kZXZpY2UoY29uc3QgY2hhciAqZGV2aWNlX25hbWUpXG4gXHRcdGlmIChsaW5mby5mbGFncykge1xuIFx0XHRcdGZwcmludGYoc3Rkb3V0LCBcIiBbXCIpO1xuIFx0XHRcdHByaW50X2F0dHJpYnV0ZXMoXHUwMDI2bGluZm8pO1xuLVx0XHRcdGZwcmludGYoc3Rkb3V0LCBcIl1cIik7XG4rXHRcdFx0cHV0Y2hhcignXScpO1xuIFx0XHR9XG4tXHRcdGZwcmludGYoc3Rkb3V0LCBcIlxcblwiKTtcbitcdFx0cHV0Y2hhcignXFxuJyk7XG4gXG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmggYi90b29scy9pbmNsdWRlL25vbGliYy9lcnIuaFxuaW5kZXggZTIyYWU4N2E3Mjg5MjAuLjg5YzlhM2QzYmM3NzMzIDEwMDY0NFxuLS0tIGEvdG9vbHMvaW5jbHVkZS9ub2xpYmMvZXJyLmhcbisrKyBiL3Rvb2xzL2luY2x1ZGUvbm9saWJjL2Vyci5oXG5AQCAtMjcsNyArMjcsNyBAQCB2b2lkIHZ3YXJueChjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncylcbiB7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIlczogXCIsIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5pbmRleCBlNjk1NDkwOTQwMWM4ZS4uZTNhYjFkYjQ0YjE1NGUgMTAwNjQ0XG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xuKysrIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbkBAIC04NjcsNyArODY3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdH1cbiBcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9TVEFDS1RSQUNFKVxuIFx0XHRcdFx0ZnByaW50Zihmb3V0LCBcIjpcXG4lc1wiLCBsaXN0W2ldLnN0YWNrdHJhY2UpO1xuLVx0XHRcdGZwcmludGYoZm91dCwgXCJcXG5cIik7XG4rXHRcdFx0ZnB1dGMoZm91dCwgJ1xcbicpO1xuIFx0XHR9XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC95bmx0b29sL21haW4uYyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcbmluZGV4IDVkMGY0MjhlZWQwYTdmLi4yNDVkN2Y1OGM4ZmI2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcbisrKyBiL3Rvb2xzL25ldC95bmwveW5sdG9vbC9tYWluLmNcbkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBwX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdH0gZWxzZSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOiBcIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHR9XG4gXHR2YV9lbmQoYXApO1xuIH1cbkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBwX2luZm8oY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXG4gXHR2YV9zdGFydChhcCwgZm10KTtcbiBcdHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdHZhX2VuZChhcCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jIGIvdG9vbHMvb2JqdG9vbC9idWlsdGluLWNoZWNrLmNcbmluZGV4IDExOGMzZGUyZjI5M2VlLi5iNmQyN2QzMjZiOGFkOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL29ianRvb2wvYnVpbHRpbi1jaGVjay5jXG4rKysgYi90b29scy9vYmp0b29sL2J1aWx0aW4tY2hlY2suY1xuQEAgLTI5Nyw3ICsyOTcsNyBAQCBpbnQgbWFrZV9iYWNrdXAodm9pZClcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIgJXNcIiwgYXJnKTtcbiBcdH1cbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvZGlzYXMuYyBiL3Rvb2xzL29ianRvb2wvZGlzYXMuY1xuaW5kZXggZTZhNTRhODM2MDVjOTAuLjMzOWQxZDU2OTBjNDIwIDEwMDY0NFxuLS0tIGEvdG9vbHMvb2JqdG9vbC9kaXNhcy5jXG4rKysgYi90b29scy9vYmp0b29sL2Rpc2FzLmNcbkBAIC01MzcsNyArNTM3LDcgQEAgdm9pZCBkaXNhc19wcmludF9pbnNuKEZJTEUgKnN0cmVhbSwgc3RydWN0IGRpc2FzX2NvbnRleHQgKmRjdHgsXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChzdHJjbXAoZm9ybWF0LCBcIlxcblwiKSA9PSAwKSB7XG4tXHRcdGZwcmludGYoc3RyZWFtLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoc3RyZWFtLCAnXFxuJyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tYzJjLmMgYi90b29scy9wZXJmL2J1aWx0aW4tYzJjLmNcbmluZGV4IGM5NTg0ZGJlZGY3N2FmLi5mYzliNmIxOGVkZWQ5ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1jMmMuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWMyYy5jXG5AQCAtMjUxMSw3ICsyNTExLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfY2FjaGVsaW5lKHN0cnVjdCBjMmNfaGlzdHMgKmMyY19oaXN0cyxcbiBcdFx0aGlzdHNfX2ZwcmludGZfaGVhZGVycyhcdTAwMjZjMmNfaGlzdHMtXHUwMDNlaGlzdHMsIG91dCk7XG4gXHRcdG9uY2UgPSB0cnVlO1xuIFx0fSBlbHNlIHtcbi1cdFx0ZnByaW50ZihvdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXQsICdcXG4nKTtcbiBcdH1cbiBcbiBcdGZwcmludGYob3V0LCBcIiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwiKTtcbkBAIC0yNTkwLDE1ICsyNTkwLDE1IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbilcbiBcdHNldHVwX3BhZ2VyKCk7XG4gXG4gXHRwcmludF9jMmNfX2Rpc3BsYXlfc3RhdHMob3V0KTtcbi1cdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dCwgJ1xcbicpO1xuIFx0cHJpbnRfc2hhcmVkX2NhY2hlbGluZV9pbmZvKG91dCk7XG4tXHRmcHJpbnRmKG91dCwgXCJcXG5cIik7XG4rXHRmcHV0YyhvdXQsICdcXG4nKTtcbiBcdHByaW50X2MyY19pbmZvKG91dCwgc2Vzc2lvbik7XG4gXG4gXHRpZiAoYzJjLnN0YXRzX29ubHkpXG4gXHRcdHJldHVybjtcbiBcbi1cdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dCwgJ1xcbicpO1xuIFx0ZnByaW50ZihvdXQsIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTtcbiBcdGZwcmludGYob3V0LCBcIiAgICAgICAgICAgU2hhcmVkIERhdGEgQ2FjaGUgTGluZSBUYWJsZSAgICAgICAgICBcXG5cIik7XG4gXHRmcHJpbnRmKG91dCwgXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpO1xuQEAgLTI2MDYsNyArMjYwNiw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfYzJjX19oaXN0c19mcHJpbnRmKEZJTEUgKm91dCwgc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbilcbiBcbiBcdGhpc3RzX19mcHJpbnRmKFx1MDAyNmMyYy5oaXN0cy5oaXN0cywgdHJ1ZSwgMCwgMCwgMCwgc3Rkb3V0LCB0cnVlKTtcbiBcbi1cdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dCwgJ1xcbicpO1xuIFx0ZnByaW50ZihvdXQsIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwiKTtcbiBcdGZwcmludGYob3V0LCBcIiAgICAgIFNoYXJlZCBDYWNoZSBMaW5lIERpc3RyaWJ1dGlvbiBQYXJldG8gICAgICBcXG5cIik7XG4gXHRmcHJpbnRmKG91dCwgXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1kYWVtb24uY1xuaW5kZXggYzQ2MzI1NzdkMTI5NjMuLjdjYjIwYjNhMDNlNGNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWRhZW1vbi5jXG4rKysgYi90b29scy9wZXJmL2J1aWx0aW4tZGFlbW9uLmNcbkBAIC02OTEsNyArNjkxLDcgQEAgc3RhdGljIGludCBjbWRfc2Vzc2lvbl9saXN0KHN0cnVjdCBkYWVtb24gKmRhZW1vbiwgdW5pb24gY21kICpjbWQsIEZJTEUgKm91dClcbiBcdFx0XHQvKiBzZXNzaW9uIHVwIHRpbWUgKi9cbiBcdFx0XHRjc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gZGFlbW9uLVx1MDAzZXN0YXJ0KSAvIDYwKSk7XG4gXG4tXHRcdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdFx0ZnB1dGMob3V0LCAnXFxuJyk7XG4gXHR9IGVsc2Uge1xuIFx0XHRmcHJpbnRmKG91dCwgXCJbJWQ6ZGFlbW9uXSBiYXNlOiAlc1xcblwiLCBnZXRwaWQoKSwgZGFlbW9uLVx1MDAzZWJhc2UpO1xuIFx0XHRpZiAoY21kLVx1MDAzZWxpc3QudmVyYm9zZSkge1xuQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0aWMgaW50IGNtZF9zZXNzaW9uX2xpc3Qoc3RydWN0IGRhZW1vbiAqZGFlbW9uLCB1bmlvbiBjbWQgKmNtZCwgRklMRSAqb3V0KVxuIFx0XHRcdFx0Lyogc2Vzc2lvbiB1cCB0aW1lICovXG4gXHRcdFx0XHRjc3Zfc2VwLCAodWludDY0X3QpKChjdXJyIC0gc2Vzc2lvbi1cdTAwM2VzdGFydCkgLyA2MCkpO1xuIFxuLVx0XHRcdGZwcmludGYob3V0LCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhvdXQsICdcXG4nKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRmcHJpbnRmKG91dCwgXCJbJWQ6JXNdIHBlcmYgcmVjb3JkICVzXFxuXCIsXG4gXHRcdFx0XHRzZXNzaW9uLVx1MDAzZXBpZCwgc2Vzc2lvbi1cdTAwM2VuYW1lLCBzZXNzaW9uLVx1MDAzZXJ1bik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWxvY2suYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbmluZGV4IDU4NDFkNDNiZTk3MTg0Li4wNWYxOGQ0OWZjN2IxNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1sb2NrLmNcbkBAIC0xMzE5LDkgKzEzMTksOSBAQCBzdGF0aWMgdm9pZCBwcmludF9yZXN1bHQodm9pZClcbiBcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShrZXksIFx1MDAyNmxvY2tfa2V5cywgbGlzdCkge1xuIFx0XHRcdGtleS1cdTAwM2VwcmludChrZXksIHN0KTtcbi1cdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiBcIik7XG4rXHRcdFx0ZnB1dGMobG9ja19vdXRwdXQsICcgJyk7XG4gXHRcdH1cbi1cdFx0ZnByaW50Zihsb2NrX291dHB1dCwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAnXFxuJyk7XG4gXG4gXHRcdGlmICgrK3ByaW50ZWQgXHUwMDNlPSBwcmludF9ucl9lbnRyaWVzKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTE1OTgsNyArMTU5OCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9jc3YoY29uc3QgY2hhciAqc2VwKVxuIFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiVzJXMgJXNcIiwgXCJ0eXBlXCIsIHNlcCwgXCJjYWxsZXJcIik7XG4gXHRcdGlmICh2ZXJib3NlIFx1MDAzZSAwKVxuIFx0XHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMgJXNcIiwgc2VwLCBcInN0YWNrdHJhY2VcIik7XG4tXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcbicpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTE9DS19BR0dSX0FERFI6XG4gXHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMlcyAlcyVzICVzXFxuXCIsIFwiYWRkcmVzc1wiLCBzZXAsIFwic3ltYm9sXCIsIHNlcCwgXCJ0eXBlXCIpO1xuQEAgLTE2MjksNyArMTYyOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2xvY2tfc3RhdF9zdGRpbyhzdHJ1Y3QgbG9ja19jb250ZW50aW9uICpjb24sIHN0cnVjdCBsb2NrX3N0YXRcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoa2V5LCBcdTAwMjZsb2NrX2tleXMsIGxpc3QpIHtcbiBcdFx0a2V5LVx1MDAzZXByaW50KGtleSwgc3QpO1xuLVx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiBcIik7XG4rXHRcdGZwdXRjKGxvY2tfb3V0cHV0LCAnICcpO1xuIFx0fVxuIFxuIFx0c3dpdGNoIChhZ2dyX21vZGUpIHtcbkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9sb2NrX3N0YXRfY3N2KHN0cnVjdCBsb2NrX2NvbnRlbnRpb24gKmNvbiwgc3RydWN0IGxvY2tfc3RhdCAqc1xuIFx0Y2FzZSBMT0NLX0FHR1JfQ0FMTEVSOlxuIFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIiVzJXMgJXNcIiwgZ2V0X3R5cGVfZmxhZ3NfbmFtZShzdC1cdTAwM2VmbGFncyksIHNlcCwgc3QtXHUwMDNlbmFtZSk7XG4gXHRcdGlmICh2ZXJib3NlIFx1MDAzYz0gMClcbi1cdFx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIlxcblwiKTtcbitcdFx0XHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcbicpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTE9DS19BR0dSX1RBU0s6XG4gXHRcdHBpZCA9IHN0LVx1MDAzZWFkZHI7XG5AQCAtMTcyMSw3ICsxNzIxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfbG9ja19zdGF0X2NzdihzdHJ1Y3QgbG9ja19jb250ZW50aW9uICpjb24sIHN0cnVjdCBsb2NrX3N0YXQgKnNcbiBcdFx0XHRnZXRfc3ltYm9sX25hbWVfb2Zmc2V0KGttYXAsIHN5bSwgaXAsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuIFx0XHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMgJSNseCAlc1wiLCBpID8gXCI6XCIgOiBzZXAsICh1bnNpZ25lZCBsb25nKSBpcCwgYnVmKTtcbiBcdFx0fVxuLVx0XHRmcHJpbnRmKGxvY2tfb3V0cHV0LCBcIlxcblwiKTtcbitcdFx0ZnB1dGMobG9ja19vdXRwdXQsICdcXG4nKTtcbiBcdH1cbiB9XG4gXG5AQCAtMTc4MSw3ICsxNzgxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZm9vdGVyX2NzdihpbnQgdG90YWwsIGludCBiYWQsIHN0cnVjdCBsb2NrX2NvbnRlbnRpb25fZmFpbHMgKmZcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlJPS0VOX01BWDsgaSsrKVxuIFx0XHRcdGZwcmludGYobG9ja19vdXRwdXQsIFwiJXMgYmFkXyVzPSVkXCIsIHNlcCwgbmFtZVtpXSwgYmFkX2hpc3RbaV0pO1xuIFx0fVxuLVx0ZnByaW50Zihsb2NrX291dHB1dCwgXCJcXG5cIik7XG4rXHRmcHV0Yyhsb2NrX291dHB1dCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF9mb290ZXIoaW50IHRvdGFsLCBpbnQgYmFkLCBzdHJ1Y3QgbG9ja19jb250ZW50aW9uX2ZhaWxzICpmYWlscylcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmNcbmluZGV4IDlhYzI5YmRjM2NkNTQ3Li5lNjBjMDczMDVkMTk4YiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jXG5AQCAtMjU2MSw3ICsyNTYxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19ldmVudChzdHJ1Y3QgcGVyZl9zY3JpcHQgKnNjcmlwdCxcbiBcbiBcdHBlcmZfc2FtcGxlX19mcHJpbnRmX2lwYyhzYW1wbGUsIGV2c2VsLCBmcCk7XG4gXG4tXHRmcHJpbnRmKGZwLCBcIlxcblwiKTtcbitcdGZwdXRjKGZwLCAnXFxuJyk7XG4gXG4gXHRpZiAoUFJJTlRfRklFTEQoU1JDQ09ERSkpIHtcbiBcdFx0aWYgKG1hcF9fZnByaW50Zl9zcmNjb2RlKGFsLVx1MDAzZW1hcCwgYWwtXHUwMDNlYWRkciwgc3Rkb3V0LFxuQEAgLTI4MTUsNyArMjgxNSw3IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19kZWZlcnJlZF9zYW1wbGVfZXZlbnQoY29uc3Qgc3RydWN0IHBlcmZfdG9vbCAqdG9vbCxcbiBcdFx0XHRcdCAgICBjdXJzb3IsIHN5bWJvbF9jb25mLmJ0X3N0b3BfbGlzdCwgZnApO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFxuIFx0aWYgKHZlcmJvc2UgXHUwMDNlIDApXG4gXHRcdGZmbHVzaChmcCk7XG5AQCAtMzI3MSwxMSArMzI3MSwxMSBAQCBzdGF0aWMgaW50IGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYihzdHJ1Y3Qgc2NyaXB0aW5nX29wcyAqb3BzLCBjb25zdCBjaGFyICpzcFxuIFxuIHN0YXRpYyB2b2lkIGxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlcyh2b2lkKVxuIHtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwiU2NyaXB0aW5nIGxhbmd1YWdlIGV4dGVuc2lvbnMgKHVzZWQgaW4gXCJcbiBcdFx0XCJwZXJmIHNjcmlwdCAtcyBbc3BlYzpdc2NyaXB0LltzcGVjXSk6XFxuXFxuXCIpO1xuIFx0c2NyaXB0X3NwZWNfX2Zvcl9lYWNoKFx1MDAyNmxpc3RfYXZhaWxhYmxlX2xhbmd1YWdlc19jYik7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiB9XG4gXG4gLyogRmluZCBzY3JpcHQgZmlsZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeSBvciBleGVjIHBhdGggKi9cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbmluZGV4IGM0N2Y1YzM4NzgzOGM1Li4wMzdlYmM0N2Y3ZGNjYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5AQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiBcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4gXG5AQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIFx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiV2FybmluZzpcXG5cIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4gXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmMgYi90b29scy9wZXJmL3VpL3N0ZGlvL2hpc3QuY1xuaW5kZXggOGM0Yzg5MjVkZjJjMjIuLjA0NGQyYWEzYjMxMjE4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9zdGRpby9oaXN0LmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvc3RkaW8vaGlzdC5jXG5AQCAtNjkxLDcgKzY5MSw3IEBAIHN0YXRpYyBpbnQgaGlzdHNfX2ZwcmludGZfaGllcmFyY2h5X2hlYWRlcnMoc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0fVxuIFxuIG5leHRfbGluZTpcbi1cdFx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGZwLCAnXFxuJyk7XG4gXHR9XG4gXG4gXHRmcHJpbnRmKGZwLCBcIiMgXCIpO1xuQEAgLTc4Myw3ICs3ODMsNyBAQCBoaXN0c19fZnByaW50Zl9zdGFuZGFyZF9oZWFkZXJzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRcdGlmIChsaW5lKVxuIFx0XHRcdGZwcmludGYoZnAsIFwiIyBcIik7XG4gXHRcdGZwcmludGZfbGluZShoaXN0cywgaHBwLCBsaW5lLCBmcCk7XG4tXHRcdGZwcmludGYoZnAsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhmcCwgJ1xcbicpO1xuIFx0fVxuIFxuIFx0aWYgKHNlcClcbkBAIC04MDYsMTAgKzgwNiwxMCBAQCBoaXN0c19fZnByaW50Zl9zdGFuZGFyZF9oZWFkZXJzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXG4gXHRcdHdpZHRoID0gZm10LVx1MDAzZXdpZHRoKGZtdCwgaHBwLCBoaXN0cyk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHdpZHRoOyBpKyspXG4tXHRcdFx0ZnByaW50ZihmcCwgXCIuXCIpO1xuK1x0XHRcdGZwdXRjKGZwLCAnLicpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFx0ZnByaW50ZihmcCwgXCIjXFxuXCIpO1xuIFx0cmV0dXJuIGhwcF9saXN0LVx1MDAzZW5yX2hlYWRlcl9saW5lcyArIDI7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uYyBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uY1xuaW5kZXggNWQwNjY0ZmY3M2I3OTEuLjhlMDk5Y2NhYWUzOWE2IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLmNcbkBAIC04OTUsNyArODk1LDcgQEAgc3RhdGljIHZvaWQgY3NfZXRtX19kdW1wX2V2ZW50KHN0cnVjdCBjc19ldG1fcXVldWUgKmV0bXEsXG4gXHRjb25zdCBjaGFyICpjb2xvciA9IFBFUkZfQ09MT1JfQkxVRTtcbiBcdHNpemVfdCBidWZmZXJfdXNlZCA9IDA7XG4gXG4tXHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRwdXRjaGFyKCdcXG4nKTtcbiBcdGNvbG9yX2ZwcmludGYoc3Rkb3V0LCBjb2xvcixcbiBcdFx0ICAgICBcIi4gLi4uIENvcmVTaWdodCAlcyBUcmFjZSBkYXRhOiBzaXplICUjenggYnl0ZXNcXG5cIixcbiBcdFx0ICAgICBjc19ldG1fZGVjb2Rlcl9fZ2V0X25hbWUoZXRtcS1cdTAwM2VkZWNvZGVyKSwgYnVmZmVyLVx1MDAzZXNpemUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jIGIvdG9vbHMvcGVyZi91dGlsL2RlYnVnLmNcbmluZGV4IDZiNWZmZTgxZjE0MTIxLi41NDI5OTg0YWI0OWM5MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9kZWJ1Zy5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvZGVidWcuY1xuQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIF9fZHVtcF9zdGFjayhGSUxFICpmaWxlLCB2b2lkICoqc3RhY2tkdW1wLCBzaXplX3Qgc3RhY2tkdW1wX3NpemUpXG4gXHRcdFx0ZnByaW50ZihmaWxlLCBcIiAgICAjJXpkICVwIFwiLCBpLCBzdGFja2R1bXBbaV0pO1xuIFxuIFx0XHRtYXBfX2ZwcmludGZfc3JjbGluZShhbC5tYXAsIGFsLmFkZHIsIFwiXCIsIGZpbGUpO1xuLVx0XHRmcHJpbnRmKGZpbGUsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhmaWxlLCAnXFxuJyk7XG4gXHRcdGFkZHJfbG9jYXRpb25fX2V4aXQoXHUwMDI2YWwpO1xuIFx0fVxuIFx0dGhyZWFkX19wdXQodGhyZWFkKTtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvaGVhZGVyLmMgYi90b29scy9wZXJmL3V0aWwvaGVhZGVyLmNcbmluZGV4IDA5MWQ4ZjdmNmJkMmM5Li45NjViMTdjODEyMjRiNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9oZWFkZXIuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2hlYWRlci5jXG5AQCAtMjQ1NCw3ICsyNDU0LDcgQEAgc3RhdGljIHZvaWQgX19wcmludF9wbXVfY2FwcyhGSUxFICpmcCwgaW50IG5yX2NhcHMsIGNoYXIgKipjYXBzLCBjaGFyICpwbXVfbmFtZSlcbiBcdFx0ZGVsaW1pdGVyID0gXCIsIFwiO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF9jcHVfcG11X2NhcHMoc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcbkBAIC0yNTEzLDcgKzI1MTMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9wbXVfbWFwcGluZ3Moc3RydWN0IGZlYXRfZmQgKmZmLCBGSUxFICpmcClcbiBcdFx0cG11X251bS0tO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFxuIFx0aWYgKCFwbXVfbnVtKVxuIFx0XHRyZXR1cm47XG5AQCAtNDM0OSw3ICs0MzQ5LDcgQEAgaW50IHBlcmZfaGVhZGVyX19mcHJpbnRmX2luZm8oc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbiwgRklMRSAqZnAsIGJvb2wgZnVsbClcbiBcdFx0XHRmcHJpbnRmKGZwLCBcIiVzIFwiLCBmZWF0X29wc1tiaXRdLm5hbWUpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jIGIvdG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LWRlY29kZXIvaW50ZWwtcHQtbG9nLmNcbmluZGV4IGVmNTVkNjIzMmNmMGMyLi4wYTM1NDkzYjg1NGFjZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC1kZWNvZGVyL2ludGVsLXB0LWxvZy5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvaW50ZWwtcHQtZGVjb2Rlci9pbnRlbC1wdC1sb2cuY1xuQEAgLTcwLDE0ICs3MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9kYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGxlbiwgdWludDY0X3QgcG9zLFxuIFx0aW50IGk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpbmRlbnQ7IGkrKylcbi1cdFx0ZnByaW50ZihmLCBcIiBcIik7XG4rXHRcdGZwdXRjKGYsICcgJyk7XG4gXG4gXHRmcHJpbnRmKGYsIFwiICAlMDhcIiBQUkl4NjQgXCI6IFwiLCBwb3MpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpKyspXG4gXHRcdGZwcmludGYoZiwgXCIgJTAyeFwiLCBidWZbaV0pO1xuIFx0Zm9yICg7IGkgXHUwMDNjIDE2OyBpKyspXG4gXHRcdGZwcmludGYoZiwgXCIgICBcIik7XG4tXHRmcHJpbnRmKGYsIFwiIFwiKTtcbitcdGZwdXRjKGYsICcgJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGludGVsX3B0X3ByaW50X25vX2RhdGEodWludDY0X3QgcG9zLCBpbnQgaW5kZW50KVxuQEAgLTg1LDEyICs4NSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wdF9wcmludF9ub19kYXRhKHVpbnQ2NF90IHBvcywgaW50IGluZGVudClcbiBcdGludCBpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaW5kZW50OyBpKyspXG4tXHRcdGZwcmludGYoZiwgXCIgXCIpO1xuK1x0XHRmcHV0YyhmLCAnICcpO1xuIFxuIFx0ZnByaW50ZihmLCBcIiAgJTA4XCIgUFJJeDY0IFwiOiBcIiwgcG9zKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDE2OyBpKyspXG4gXHRcdGZwcmludGYoZiwgXCIgICBcIik7XG4tXHRmcHJpbnRmKGYsIFwiIFwiKTtcbitcdGZwdXRjKGYsICcgJyk7XG4gfVxuIFxuIHN0YXRpYyBzc2l6ZV90IGxvZ19idWZfX3dyaXRlKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvbGliYmZkLmMgYi90b29scy9wZXJmL3V0aWwvbGliYmZkLmNcbmluZGV4IGMxYzEyMzA4Y2MxMmZmLi4yNjM4OTQ2NjNmMWE4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9saWJiZmQuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2xpYmJmZC5jXG5AQCAtNjAzLDcgKzYwMyw3IEBAIGludCBzeW1ib2xfX2Rpc2Fzc2VtYmxlX2JwZl9saWJiZmQoc3RydWN0IHN5bWJvbCAqc3ltIF9fbWF5YmVfdW51c2VkLFxuIFx0XHR9IGVsc2VcbiBcdFx0XHRzcmNsaW5lID0gTlVMTDtcbiBcbi1cdFx0ZnByaW50ZihzLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMocywgJ1xcbicpO1xuIFx0XHRwcmV2X2J1Zl9zaXplID0gYnVmX3NpemU7XG4gXHRcdGZmbHVzaChzKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc2Vzc2lvbi5jIGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuaW5kZXggZjM5MWE4MjI0ODBkYjAuLjYzYThkM2NjYWE0ZjljIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL3Nlc3Npb24uY1xuQEAgLTEyNTcsNyArMTI1Nyw3IEBAIGludCBwZXJmX2V2ZW50X19wcm9jZXNzX2ZpbmlzaGVkX3JvdW5kKGNvbnN0IHN0cnVjdCBwZXJmX3Rvb2wgKnRvb2wgX19tYXliZV91bnVzXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IG9yZGVyZWRfZXZlbnRzICpvZSlcbiB7XG4gXHRpZiAoZHVtcF90cmFjZSlcbi1cdFx0ZnByaW50ZihzdGRvdXQsIFwiXFxuXCIpO1xuK1x0XHRwdXRjaGFyKCdcXG4nKTtcbiBcdHJldHVybiBvcmRlcmVkX2V2ZW50c19fZmx1c2gob2UsIE9FX0ZMVVNIX19ST1VORCk7XG4gfVxuIFxuQEAgLTQwMDAsNyArNDAwMCw3IEBAIGludCBwZXJmX2V2ZW50X19wcm9jZXNzX2lkX2luZGV4KGNvbnN0IHN0cnVjdCBwZXJmX3Rvb2wgKnRvb2wgX19tYXliZV91bnVzZWQsXG4gXHRcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCIgIG1hY2hpbmVfcGlkOiAlXCJQUklfbGQ2NCwgZTItXHUwMDNlbWFjaGluZV9waWQpO1xuIFx0XHRcdFx0ZnByaW50ZihzdGRvdXQsIFwiICB2Y3B1OiAlXCJQUklfbHU2NFwiXFxuXCIsIGUyLVx1MDAzZXZjcHUpO1xuIFx0XHRcdH0gZWxzZSB7XG4tXHRcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRcdFx0XHRwdXRjaGFyKCdcXG4nKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmMgYi90b29scy9wZXJmL3V0aWwvc3RhdC1kaXNwbGF5LmNcbmluZGV4IDBhNTc1MGJiNTlmYTNiLi4zYmU3YTdmNGZkYTMzNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zdGF0LWRpc3BsYXkuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL3N0YXQtZGlzcGxheS5jXG5AQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X21ldHJpY19qc29uKHN0cnVjdCBwZXJmX3N0YXRfY29uZmlnICpjb25maWcgX19tYXliZV91bnVzZWQsXG4gXHRcdH1cbiBcdH1cbiBcdGlmICghY29uZmlnLVx1MDAzZW1ldHJpY19vbmx5KVxuLVx0XHRmcHJpbnRmKG91dCwgXCJ9XCIpO1xuK1x0XHRmcHV0YyhvdXQsICd9Jyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5ld19saW5lX2pzb24oc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgdm9pZCAqY3R4KVxuQEAgLTEzMTYsNyArMTMxNiw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlYWRlcl9zdGQoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZyxcbiBcdEZJTEUgKm91dHB1dCA9IGNvbmZpZy1cdTAwM2VvdXRwdXQ7XG4gXHRpbnQgaTtcbiBcbi1cdGZwcmludGYob3V0cHV0LCBcIlxcblwiKTtcbitcdGZwdXRjKG91dHB1dCwgJ1xcbicpO1xuIFx0ZnByaW50ZihvdXRwdXQsIFwiIFBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdHMgZm9yIFwiKTtcbiBcdGlmIChfdGFyZ2V0LVx1MDAzZWJwZl9zdHIpXG4gXHRcdGZwcmludGYob3V0cHV0LCBcIlxcJ0JQRiBwcm9ncmFtKHMpICVzXCIsIF90YXJnZXQtXHUwMDNlYnBmX3N0cik7XG5AQCAtMTMzMyw3ICsxMzMzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfaGVhZGVyX3N0ZChzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnLFxuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKG91dHB1dCwgXCJ0aHJlYWQgaWQgXFwnJXNcIiwgX3RhcmdldC1cdTAwM2V0aWQpO1xuIFxuLVx0ZnByaW50ZihvdXRwdXQsIFwiXFwnXCIpO1xuK1x0ZnB1dGMob3V0cHV0LCAnXFwnJyk7XG4gXHRpZiAoY29uZmlnLVx1MDAzZXJ1bl9jb3VudCBcdTAwM2UgMSlcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwiICglZCBydW5zKVwiLCBjb25maWctXHUwMDNlcnVuX2NvdW50KTtcbiBcdGZwcmludGYob3V0cHV0LCBcIjpcXG5cXG5cIik7XG5AQCAtMTQwNiw5ICsxNDA2LDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFibGUoc3RydWN0IHBlcmZfc3RhdF9jb25maWcgKmNvbmZpZywgRklMRSAqb3V0cHV0LCBkb3VibGUgYXZcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwiICUxNy45ZiAoJSsuOWYpIFwiLCBydW4sIHJ1biAtIGF2Zyk7XG4gXG4gXHRcdGZvciAoaCA9IDA7IGggXHUwMDNjIG47IGgrKylcbi1cdFx0XHRmcHJpbnRmKG91dHB1dCwgXCIjXCIpO1xuK1x0XHRcdGZwdXRjKG91dHB1dCwgJyMnKTtcbiBcbi1cdFx0ZnByaW50ZihvdXRwdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXRwdXQsICdcXG4nKTtcbiBcdH1cbiBcbiBcdGZwcmludGYob3V0cHV0LCBcIlxcbiUqcyMgRmluYWwgcmVzdWx0OlxcblwiLCBpbmRlbnQsIFwiXCIpO1xuQEAgLTE0MjgsNyArMTQyOCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2Zvb3RlcihzdHJ1Y3QgcGVyZl9zdGF0X2NvbmZpZyAqY29uZmlnKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoIWNvbmZpZy1cdTAwM2VudWxsX3J1bilcbi1cdFx0ZnByaW50ZihvdXRwdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXRwdXQsICdcXG4nKTtcbiBcbiBcdGlmIChjb25maWctXHUwMDNlcnVuX2NvdW50ID09IDEpIHtcbiBcdFx0ZnByaW50ZihvdXRwdXQsIFwiICUxNy45ZiBzZWNvbmRzIHRpbWUgZWxhcHNlZFwiLCBhdmcpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuYyBiL3Rvb2xzL3BlcmYvdXRpbC92YWx1ZXMuY1xuaW5kZXggNmVhZGRmY2Y4MzNlNTIuLjJjNTM0MGE5MjhkZDFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL3ZhbHVlcy5jXG4rKysgYi90b29scy9wZXJmL3V0aWwvdmFsdWVzLmNcbkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9yZWFkX3ZhbHVlc19fZGlzcGxheV9wcmV0dHkoRklMRSAqZnAsXG4gXHRmcHJpbnRmKGZwLCBcIiMgJSpzICAlKnNcIiwgcGlkd2lkdGgsIFwiUElEXCIsIHRpZHdpZHRoLCBcIlRJRFwiKTtcbiBcdGZvciAoaiA9IDA7IGogXHUwMDNjIHZhbHVlcy1cdTAwM2VudW1fY291bnRlcnM7IGorKylcbiBcdFx0ZnByaW50ZihmcCwgXCIgICUqc1wiLCBjb3VudGVyd2lkdGhbal0sIGV2c2VsX19uYW1lKHZhbHVlcy1cdTAwM2Vjb3VudGVyc1tqXSkpO1xuLVx0ZnByaW50ZihmcCwgXCJcXG5cIik7XG4rXHRmcHV0YyhmcCwgJ1xcbicpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmFsdWVzLVx1MDAzZXRocmVhZHM7IGkrKykge1xuIFx0XHRmcHJpbnRmKGZwLCBcIiAgJSpkICAlKmRcIiwgcGlkd2lkdGgsIHZhbHVlcy1cdTAwM2VwaWRbaV0sXG5AQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfcmVhZF92YWx1ZXNfX2Rpc3BsYXlfcHJldHR5KEZJTEUgKmZwLFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyB2YWx1ZXMtXHUwMDNlbnVtX2NvdW50ZXJzOyBqKyspXG4gXHRcdFx0ZnByaW50ZihmcCwgXCIgICUqXCIgUFJJdTY0LFxuIFx0XHRcdFx0Y291bnRlcndpZHRoW2pdLCB2YWx1ZXMtXHUwMDNldmFsdWVbaV1bal0pO1xuLVx0XHRmcHJpbnRmKGZwLCBcIlxcblwiKTtcbitcdFx0ZnB1dGMoZnAsICdcXG4nKTtcbiBcdH1cbiBcdGZyZWUoY291bnRlcndpZHRoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIvYWNwaS90b29scy9hY3BpZHVtcC9hcGR1bXAuYyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbmluZGV4IDcyYWQ3OTE1YjA0ZmQyLi42MDBkNWI2ZTA0YTg4MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbisrKyBiL3Rvb2xzL3Bvd2VyL2FjcGkvdG9vbHMvYWNwaWR1bXAvYXBkdW1wLmNcbkBAIC0xNzEsNyArMTcxLDcgQEAgYXBfZHVtcF90YWJsZV9idWZmZXIoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSxcbiBcdGFjcGlfdXRfZHVtcF9idWZmZXJfdG9fZmlsZShnYmxfb3V0cHV0X2ZpbGUsXG4gXHRcdFx0XHQgICAgQUNQSV9DQVNUX1BUUih1OCwgdGFibGUpLCB0YWJsZV9sZW5ndGgsXG4gXHRcdFx0XHQgICAgREJfQllURV9ESVNQTEFZLCAwKTtcbi1cdGZwcmludGYoZ2JsX291dHB1dF9maWxlLCBcIlxcblwiKTtcbitcdGZwdXRjKGdibF9vdXRwdXRfZmlsZSwgJ1xcbicpO1xuIFx0cmV0dXJuICgwKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L2ludGVsLXNwZWVkLXNlbGVjdC9pc3N0LWRpc3BsYXkuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbmluZGV4IGU0ODg0ZWIwMjgzNzkxLi41ZDQ5Mjc4MGFhZDliYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni9pbnRlbC1zcGVlZC1zZWxlY3QvaXNzdC1kaXNwbGF5LmNcbkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXG4gXHRpZiAobGV2ZWwgPT0gMCkge1xuIFx0XHRpZiAoaGVhZGVyKVxuLVx0XHRcdGZwcmludGYob3V0ZiwgXCJ7XCIpO1xuK1x0XHRcdGZwdXRjKG91dGYsICd7Jyk7XG4gXHRcdGVsc2VcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxufVxcblwiKTtcbiBcbkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHZvaWQgZm9ybWF0X2FuZF9wcmludChGSUxFICpvdXRmLCBpbnQgbGV2ZWwsIGNoYXIgKmhlYWRlciwgY2hhciAqdmFsdWUpXG4gXG4gXHRcdGlmICh2YWx1ZSkge1xuIFx0XHRcdGlmIChsYXN0X2xldmVsICE9IGxldmVsKVxuLVx0XHRcdFx0ZnByaW50ZihvdXRmLCBcIlxcblwiKTtcbitcdFx0XHRcdGZwdXRjKG91dGYsICdcXG4nKTtcbiBcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwiJXNcXFwiJXNcXFwiOiBcIiwgZGVsaW1pdGVycywgaGVhZGVyKTtcbiBcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxcIiVzXFxcIlwiLCB2YWx1ZSk7XG5AQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGZvcm1hdF9hbmRfcHJpbnQoRklMRSAqb3V0ZiwgaW50IGxldmVsLCBjaGFyICpoZWFkZXIsIGNoYXIgKnZhbHVlKVxuIFx0XHRcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxuJXN9XCIsIGRlbGltaXRlcnMpO1xuIFx0XHRcdH1cbiBcdFx0XHRpZiAoYWJzKGxhc3RfbGV2ZWwgLSBsZXZlbCkgXHUwMDNjIDMpXG4tXHRcdFx0XHRmcHJpbnRmKG91dGYsIFwiXFxuXCIpO1xuK1x0XHRcdFx0ZnB1dGMob3V0ZiwgJ1xcbicpO1xuIFx0XHRcdGlmIChoZWFkZXIpXG4gXHRcdFx0XHRmcHJpbnRmKG91dGYsIFwiJXNcXFwiJXNcXFwiOiB7XCIsIGRlbGltaXRlcnMsXG4gXHRcdFx0XHRcdGhlYWRlcik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcbmluZGV4IDkyMDY5NGMzYzFlYzk0Li40NWQzOWEwZmNmNzJhMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcbisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmNcbkBAIC05MDk5LDcgKzkwOTksNyBAQCB2b2lkIGR1bXBfY3B1aWRfaHlwZXJ2aXNvcih2b2lkKVxuIFx0ZHVtcF93b3JkX2NoYXJzKGVieCk7XG4gXHRkdW1wX3dvcmRfY2hhcnMoZWN4KTtcbiBcdGR1bXBfd29yZF9jaGFycyhlZHgpO1xuLVx0ZnByaW50ZihvdXRmLCBcIlxcblwiKTtcbitcdGZwdXRjKG91dGYsICdcXG4nKTtcbiB9XG4gXG4gdm9pZCBwcm9jZXNzX2NwdWlkKClcbkBAIC05NzQ5LDcgKzk3NDksNyBAQCB2b2lkIHRvcG9sb2d5X3Byb2JlKGJvb2wgc3RhcnR1cClcbiBcdFx0ZnByaW50ZihvdXRmLCBcIiBzaWJsaW5nc1wiKTtcbiBcdFx0Zm9yIChodF9pZCA9IDA7IGh0X2lkIFx1MDAzYz0gTUFYX0hUX0lEOyArK2h0X2lkKVxuIFx0XHRcdGZwcmludGYob3V0ZiwgXCIgJWRcIiwgY3B1c1tpXS5odF9zaWJsaW5nX2NwdV9pZFtodF9pZF0pO1xuLVx0XHRmcHJpbnRmKG91dGYsIFwiXFxuXCIpO1xuK1x0XHRmcHV0YyhvdXRmLCAnXFxuJyk7XG4gXHR9XG4gXG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uY1xuaW5kZXggMWVlMjE3ZDk3NDM0MGUuLjY0Yjk3YTQxYWY0NWVhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmNcbkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBodGFiX21lbV91c2VfY2FzZSAqaHRhYl9tZW1fZmluZF91c2VfY2FzZV9vcl9leGl0KGNvbnN0IGNoYXJcbiBcdGZwcmludGYoc3RkZXJyLCBcImF2YWlsYWJsZSB1c2UgY2FzZTpcIik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHVzZV9jYXNlcyk7IGkrKylcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiICVzXCIsIHVzZV9jYXNlc1tpXS5uYW1lKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZXhpdCgxKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2ppdF9kaXNhc21faGVscGVycy5jXG5pbmRleCAzNTU4ZmUxMGUyOGNmOS4uNThlYTJhMmVjMTNlMmQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvaml0X2Rpc2FzbV9oZWxwZXJzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9qaXRfZGlzYXNtX2hlbHBlcnMuY1xuQEAgLTIyOCw3ICsyMjgsNyBAQCBpbnQgZ2V0X2ppdGVkX3Byb2dyYW1fdGV4dChpbnQgZmQsIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X3N6KVxuIFx0Zm9yIChwYyA9IDAsIGkgPSAwOyBpIFx1MDAzYyBqaXRlZF9mdW5jczsgKytpKSB7XG4gXHRcdGZwcmludGYodGV4dF9vdXQsIFwiZnVuYyAjJWQ6XFxuXCIsIGkpO1xuIFx0XHRkaXNhc21fb25lX2Z1bmModGV4dF9vdXQsIGltYWdlICsgcGMsIGZ1bmNfbGVuc1tpXSk7XG4tXHRcdGZwcmludGYodGV4dF9vdXQsIFwiXFxuXCIpO1xuK1x0XHRmcHV0Yyh0ZXh0X291dCwgJ1xcbicpO1xuIFx0XHRwYyArPSBmdW5jX2xlbnNbaV07XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcbmluZGV4IDdiYTgyOTc0ZWU3ODRkLi5iNTIwYmUxYmY3YWFhNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmNcbkBAIC0zODMsNyArMzgzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGVzdF9yZXN1bHQoY29uc3Qgc3RydWN0IHByb2dfdGVzdF9kZWYgKnRlc3QsIGNvbnN0IHN0cnVjdCB0ZXNcbiBcdGVsc2VcbiBcdFx0ZnByaW50ZihlbnYuc3Rkb3V0X3NhdmVkLCBcIk9LIChTS0lQOiAlZC8lZClcIiwgc2tpcHBlZF9jbnQsIHN1YnRlc3RzX2NudCk7XG4gXG4tXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwcmludF90ZXN0X2xvZyhjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcbkBAIC0zOTEsNyArMzkxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGVzdF9sb2coY2hhciAqbG9nX2J1Ziwgc2l6ZV90IGxvZ19jbnQpXG4gXHRsb2dfYnVmW2xvZ19jbnRdID0gJ1xcMCc7XG4gXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiJXNcIiwgbG9nX2J1Zik7XG4gXHRpZiAobG9nX2J1Zltsb2dfY250IC0gMV0gIT0gJ1xcbicpXG4tXHRcdGZwcmludGYoZW52LnN0ZG91dF9zYXZlZCwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKGVudi5zdGRvdXRfc2F2ZWQsICdcXG4nKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcHJpbnRfc3VidGVzdF9uYW1lKGludCB0ZXN0X251bSwgaW50IHN1YnRlc3RfbnVtLFxuQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9zdWJ0ZXN0X25hbWUoaW50IHRlc3RfbnVtLCBpbnQgc3VidGVzdF9udW0sXG4gXHRpZiAocmVzdWx0KVxuIFx0XHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiOiVzXCIsIHJlc3VsdCk7XG4gXG4tXHRmcHJpbnRmKGVudi5zdGRvdXRfc2F2ZWQsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoZW52LnN0ZG91dF9zYXZlZCwgJ1xcbicpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBqc29ud193cml0ZV9sb2dfbWVzc2FnZShqc29uX3dyaXRlcl90ICp3LCBjaGFyICpsb2dfYnVmLCBzaXplX3QgbG9nX2NudClcbkBAIC0xMzMzLDE0ICsxMzMzLDE0IEBAIHZvaWQgaGV4ZHVtcChjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbilcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBsZW47IGkrKykge1xuIFx0XHRpZiAoIShpICUgMTYpKSB7XG4gXHRcdFx0aWYgKGkpXG4tXHRcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCJcXG5cIik7XG4rXHRcdFx0XHRwdXRjaGFyKCdcXG4nKTtcbiBcdFx0XHRmcHJpbnRmKHN0ZG91dCwgXCIlc1wiLCBwcmVmaXgpO1xuIFx0XHR9XG4gXHRcdGlmIChpIFx1MDAyNlx1MDAyNiAhKGkgJSA4KSBcdTAwMjZcdTAwMjYgKGkgJSAxNikpXG4tXHRcdFx0ZnByaW50ZihzdGRvdXQsIFwiXFx0XCIpO1xuK1x0XHRcdHB1dGNoYXIoJ1xcdCcpO1xuIFx0XHRmcHJpbnRmKHN0ZG91dCwgXCIlMDJYIFwiLCAoKHVpbnQ4X3QgKikoYnVmKSlbaV0pO1xuIFx0fVxuLVx0ZnByaW50ZihzdGRvdXQsIFwiXFxuXCIpO1xuK1x0cHV0Y2hhcignXFxuJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCBzaWdudW0pXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYTdkYjZmMDRmN2UxNDUuLmQxYzdmMDZiOGIxY2Y5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG5AQCAtMTYwNSw3ICsxNjA1LDcgQEAgc3RhdGljIHZvaWQgZHVtcChfX3UzMiBwcm9nX2lkLCBlbnVtIGR1bXBfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnNcbiBcdHByaW50ZihcIkRVTVAgKCVzKSAlcy8lczpcXG5cIiwgbW9kZSA9PSBEVU1QX0pJVEVEID8gXCJKSVRFRFwiIDogXCJYTEFURURcIiwgZmlsZV9uYW1lLCBwcm9nX25hbWUpO1xuIFx0d2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSlcbiBcdFx0ZnB1dHMoYnVmLCBzdGRvdXQpO1xuLVx0ZnByaW50ZihzdGRvdXQsIFwiXFxuXCIpO1xuK1x0cHV0Y2hhcignXFxuJyk7XG4gXG4gXHRpZiAoZmVycm9yKGZwKSlcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiRmFpbGVkIHRvIGR1bXAgQlBGIHByb2cgd2l0aCBlcnJvcjogJWRcXG5cIiwgZXJybm8pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L25jZGV2bWVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXG5pbmRleCBkOTZlOGEzYjVhNjUyNi4uN2JkY2M0MTE0ZGJhMWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9uY2Rldm1lbS5jXG5AQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB2b2lkIHByX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcbiBcdGlmIChlcnJubyAhPSAwKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCI6ICVzXCIsIHN0cmVycm9yKGVycm5vKSk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBtZW1vcnlfYnVmZmVyICp1ZG1hYnVmX2FsbG9jKHNpemVfdCBzaXplKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zMzkwL2tleW9wLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXG5pbmRleCBjNzgwNWU4N2QxMmM1ZC4uMTIwODM0ZjhiYTBkYTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC9rZXlvcC5jXG5AQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfc2soY29uc3QgdW5zaWduZWQgY2hhciBza2V5c1tdLCBjb25zdCBjaGFyICpkZXNjcilcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiIyAlM2Q6IFwiLCBpKTtcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgMzI7IGorKylcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIlMDJ4IFwiLCBza2V5c1tpICsgal0pO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0fVxuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvcG1fbmxfY3RsLmNcbmluZGV4IDc4MTgwZGExZWZjYzUzLi40MDQ2N2U4NmJmZDQ3YiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9wbV9ubF9jdGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL3BtX25sX2N0bC5jXG5AQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBpbnQgY2FwdHVyZV9ldmVudHMoaW50IGZkLCBpbnQgZXZlbnRfZ3JvdXApXG4gXHRcdH1cbiBcdFx0aWYgKHNlcnZlcl9zaWRlKVxuIFx0XHRcdGZwcmludGYoc3RkZXJyLCBcIixzZXJ2ZXJfc2lkZToxXCIpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0fSB3aGlsZSAoMSk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcHNvY2tfdHBhY2tldC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuY1xuaW5kZXggN2NhZjMxMzU0NDhkYTcuLjcyNGRhOTIyMmFkOWEwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Bzb2NrX3RwYWNrZXQuY1xuQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IHBmc29ja2V0KGludCB2ZXIpXG4gc3RhdGljIHZvaWQgc3RhdHVzX2Jhcl91cGRhdGUodm9pZClcbiB7XG4gXHRpZiAodG90YWxfcGFja2V0cyAlIDEwID09IDApIHtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwiLlwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnLicpO1xuIFx0XHRmZmx1c2goc3RkZXJyKTtcbiBcdH1cbiB9XG5AQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRpYyBpbnQgdGVzdF90cGFja2V0KGludCB2ZXJzaW9uLCBpbnQgdHlwZSlcbiBcdHVubWFwX3Jpbmcoc29jaywgXHUwMDI2cmluZyk7XG4gXHRjbG9zZShzb2NrKTtcbiBcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmNcbmluZGV4IDE3MGJlMTkyZjVjN2NlLi44NmM4ZDQ5NDVkNzNjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuY1xuQEAgLTIwMCwxMCArMjAwLDEwIEBAIHN0YXRpYyB2b2lkIF9fcHJpbnRfdGltZXN0YW1wKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB0aW1lc3BlYyAqY3VyLFxuIFx0XHR0c19kZWx0YSA9IHRpbWVzcGVjX3RvX25zNjQoY3VyKSAtIHRpbWVzcGVjX3RvX25zNjQoXHUwMDI2dHNfdXNyKTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiICAoVVNSICtcIik7XG4gXHRcdF9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRzX2RlbHRhKTtcbi1cdFx0ZnByaW50ZihzdGRlcnIsIFwiKVwiKTtcbitcdFx0ZnB1dGMoc3RkZXJyLCAnKScpO1xuIFx0fVxuIFxuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJlY29yZF90aW1lc3RhbXBfdXNyKHZvaWQpXG5AQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3RpbWluZ19ldmVudChjaGFyICpuYW1lLCBzdHJ1Y3QgdGltaW5nX2V2ZW50ICp0ZSlcbiBcdF9fcHJpbnRfdHNfZGVsdGFfZm9ybWF0dGVkKHRlLVx1MDAzZW1pbik7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIsIG1heD1cIik7XG4gXHRfX3ByaW50X3RzX2RlbHRhX2Zvcm1hdHRlZCh0ZS1cdTAwM2VtYXgpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gfVxuIFxuIC8qIFRPRE86IGNvbnZlcnQgdG8gY2hlY2tfYW5kX3ByaW50IHBheWxvYWQgb25jZSBBUEkgaXMgc3RhYmxlICovXG5AQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3BheWxvYWQoY2hhciAqZGF0YSwgaW50IGxlbilcbiBcdGZwcmludGYoc3RkZXJyLCBcInBheWxvYWQ6IFwiKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSsrKVxuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIlMDJoaHggXCIsIGRhdGFbaV0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcilcbkBAIC05MzMsNyArOTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0ZnByaW50ZihzdGRlcnIsIFwicHJvdG9jb2w6ICAgICAlc1xcblwiLCBzb2NrX25hbWVzW2NmZ19wcm90b10pO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwicGF5bG9hZDogICAgICAldVxcblwiLCBjZmdfcGF5bG9hZF9sZW4pO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwic2VydmVyIHBvcnQ6ICAldVxcblwiLCBkZXN0X3BvcnQpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXG4gXHRpZiAoZG9faXB2NCkge1xuIFx0XHRpZiAoY2ZnX2RvX2xpc3RlbilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wb3dlcnBjL254LWd6aXAvZ3Vuel90ZXN0LmNcbmluZGV4IDdjMjNkM2RkN2Q2ZDkxLi40MTJkZWZlOTgyNzE0MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMvbngtZ3ppcC9ndW56X3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcG93ZXJwYy9ueC1nemlwL2d1bnpfdGVzdC5jXG5AQCAtMzYzLDcgKzM2Myw3IEBAIGludCBkZWNvbXByZXNzX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCB2b2lkICpkZXZoYW5kbGUpXG4gXHRcdFx0Z290byBlcnIzO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIlMDJ4IFwiLCB0bXBbaV0pO1xuIFx0XHRpZiAoaSA9PSA1KVxuLVx0XHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdH1cbiBcdGZwcmludGYoc3RkZXJyLCBcImd6SGVhZGVyIE1USU1FLCBYRkwsIE9TIGlnbm9yZWRcXG5cIik7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvaW5jbHVkZS9saWJ2ZmlvL2Fzc2VydC5oXG5pbmRleCA3N2I2OGM3MTI5YTY0OC4uODIwMTViMTlkZjZjMzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9pbmNsdWRlL2xpYnZmaW8vYXNzZXJ0LmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2luY2x1ZGUvbGlidmZpby9hc3NlcnQuaFxuQEAgLTEwLDcgKzEwLDcgQEBcbiBcbiAjZGVmaW5lIFZGSU9fTE9HX0FORF9FWElUKC4uLikgZG8ge1x0XHRcXFxuIFx0ZnByaW50ZihzdGRlcnIsIFwiICBcIiBfX1ZBX0FSR1NfXyk7XHRcXFxuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1x0XHRcdFxcXG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcdFx0XHRcXFxuIFx0ZXhpdChLU0ZUX0ZBSUwpO1x0XHRcdFxcXG4gfSB3aGlsZSAoMClcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2xpYi9saWJ2ZmlvLmNcbmluZGV4IDNhM2QxZWQ2MzVjMWRmLi44MGEzMTJmMTQ5YTY2ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vbGliL2xpYnZmaW8uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9saWIvbGlidmZpby5jXG5AQCAtNjAsMTYgKzYwLDE2IEBAIGNoYXIgKip2ZmlvX3NlbGZ0ZXN0c19nZXRfYmRmcyhpbnQgKmFyZ2MsIGNoYXIgKmFyZ3ZbXSwgaW50ICpucl9iZGZzKVxuIFx0fVxuIFxuIFx0ZnByaW50ZihzdGRlcnIsIFwiVW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBkZXZpY2UocykgdG8gdXNlLCBza2lwcGluZyB0ZXN0LlxcblwiKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwiVG8gcGFzcyB0aGUgZGV2aWNlIGFkZHJlc3MgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlOlxcblwiKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFx0ZnByaW50ZihzdGRlcnIsIFwiICAgIGV4cG9ydCBWRklPX1NFTEZURVNUU19CREY9XFxcInNlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvblxcXCJcXG5cIik7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIgICAgJXMgW29wdGlvbnNdXFxuXCIsIGFyZ3ZbMF0pO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCJUbyBwYXNzIHRoZSBkZXZpY2UgYWRkcmVzcyhlcykgdmlhIGFyZ3Y6XFxuXCIpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHRmcHJpbnRmKHN0ZGVyciwgXCIgICAgJXMgW29wdGlvbnNdIHNlZ21lbnQ6YnVzOmRldmljZS5mdW5jdGlvbiAuLi5cXG5cIiwgYXJndlswXSk7XG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdGV4aXQoS1NGVF9TS0lQKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay92c29ja19kaWFnX3Rlc3QuYyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbmluZGV4IDA4MWUwNDVmNDY5NjBlLi5jYzkwM2NkYjQ1ZDkyZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfZGlhZ190ZXN0LmNcbkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX2FkZHIoRklMRSAqZnAsIHVuc2lnbmVkIGludCBjaWQsIHVuc2lnbmVkIGludCBwb3J0KVxuIFx0XHRmcHJpbnRmKGZwLCBcIiV1OlwiLCBjaWQpO1xuIFxuIFx0aWYgKHBvcnQgPT0gVk1BRERSX1BPUlRfQU5ZKVxuLVx0XHRmcHJpbnRmKGZwLCBcIipcIik7XG4rXHRcdGZwdXRjKGZwLCAnKicpO1xuIFx0ZWxzZVxuIFx0XHRmcHJpbnRmKGZwLCBcIiV1XCIsIHBvcnQpO1xuIH1cbkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX2FkZHIoRklMRSAqZnAsIHVuc2lnbmVkIGludCBjaWQsIHVuc2lnbmVkIGludCBwb3J0KVxuIHN0YXRpYyB2b2lkIHByaW50X3Zzb2NrX3N0YXQoRklMRSAqZnAsIHN0cnVjdCB2c29ja19zdGF0ICpzdClcbiB7XG4gXHRwcmludF92c29ja19hZGRyKGZwLCBzdC1cdTAwM2Vtc2cudmRpYWdfc3JjX2NpZCwgc3QtXHUwMDNlbXNnLnZkaWFnX3NyY19wb3J0KTtcbi1cdGZwcmludGYoZnAsIFwiIFwiKTtcbitcdGZwdXRjKGZwLCAnICcpO1xuIFx0cHJpbnRfdnNvY2tfYWRkcihmcCwgc3QtXHUwMDNlbXNnLnZkaWFnX2RzdF9jaWQsIHN0LVx1MDAzZW1zZy52ZGlhZ19kc3RfcG9ydCk7XG4gXHRmcHJpbnRmKGZwLCBcIiAlcyAlcyAlcyAldVxcblwiLFxuIFx0XHRzb2NrX3R5cGVfc3RyKHN0LVx1MDAzZW1zZy52ZGlhZ190eXBlKSxcbmRpZmYgLS1naXQgYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuYyBiL3Rvb2xzL3RoZXJtYWwvdG1vbi9zeXNmcy5jXG5pbmRleCBjYjExMDhiYzkyNDk4OS4uZWJkYjk1ODE5YTc2NmQgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vc3lzZnMuY1xuKysrIGIvdG9vbHMvdGhlcm1hbC90bW9uL3N5c2ZzLmNcbkBAIC01MjIsNyArNTIyLDcgQEAgaW50IHVwZGF0ZV90aGVybWFsX2RhdGEoKVxuIFx0fVxuIFxuIFx0aWYgKHRtb25fbG9nKSB7XG4tXHRcdGZwcmludGYodG1vbl9sb2csIFwiXFxuXCIpO1xuK1x0XHRmcHV0Yyh0bW9uX2xvZywgJ1xcbicpO1xuIFx0XHRmZmx1c2godG1vbl9sb2cpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RoZXJtYWwvdG1vbi90bW9uLmMgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5pbmRleCA3ZWIzMjE2YTI3ZjQ1Zi4uOWE5NzJmNzNhMmMwMDUgMTAwNjQ0XG4tLS0gYS90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG4rKysgYi90b29scy90aGVybWFsL3Rtb24vdG1vbi5jXG5AQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfbG9nZ2luZyh2b2lkKVxuIFx0XHRmcHJpbnRmKHRtb25fbG9nLCBcIiVzJWQgXCIsIHB0ZGF0YS5jZGlbaV0udHlwZSxcbiBcdFx0XHRwdGRhdGEuY2RpW2ldLmluc3RhbmNlKTtcbiBcbi1cdGZwcmludGYodG1vbl9sb2csIFwiXFxuXCIpO1xuK1x0ZnB1dGModG1vbl9sb2csICdcXG4nKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jIGIvdG9vbHMvdHJhY2luZy9sYXRlbmN5L2xhdGVuY3ktY29sbGVjdG9yLmNcbmluZGV4IGVmOTc5MTZlMzg3M2ExLi4zZGM2ZmI5ZGY5MjY4MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvbGF0ZW5jeS9sYXRlbmN5LWNvbGxlY3Rvci5jXG4rKysgYi90b29scy90cmFjaW5nL2xhdGVuY3kvbGF0ZW5jeS1jb2xsZWN0b3IuY1xuQEAgLTE5OTksNyArMTk5OSw3IEBAIHN0YXRpYyB2b2lkIHNjYW5fYXJndW1lbnRzKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXCJiZWVuIGVuYWJsZWQuIFJhbmRvbSBzbGVlcCBpcyBpbnRlbmRlZCBmb3IgdGhlIGZvbGxvd2luZyB0cmFjZXJzOlxcblwiKTtcbiBcdFx0XHRmb3IgKGkgPSAwOyByYW5kb21fdHJhY2Vyc1tpXTsgaSsrKVxuIFx0XHRcdFx0ZnByaW50ZihzdGRlcnIsIFwiJXNcXG5cIiwgcmFuZG9tX3RyYWNlcnNbaV0pO1xuLVx0XHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdFx0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdFx0fVxuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvY29tbW9uLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jXG5pbmRleCA4YzdmNWU3NWIyZWM4ZC4uZTgxZTY3NmQ1MWQyYWQgMTAwNjQ0XG4tLS0gYS90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jXG4rKysgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL2NvbW1vbi5jXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgY29tbW9uX3VzYWdlKGNvbnN0IGNoYXIgKnRvb2wsIGNvbnN0IGNoYXIgKm1vZGUsXG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIiVzIFstaF0gXCIsIG1vZGUpO1xuIFxuIFx0cHJpbnRfbXNnX2FycmF5KHN0YXJ0X21zZ3MpO1xuLVx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuK1x0ZnB1dGMoc3RkZXJyLCAnXFxuJyk7XG4gXHRwcmludF9tc2dfYXJyYXkoY29tbW9uX29wdGlvbnMpO1xuIFx0cHJpbnRfbXNnX2FycmF5KG9wdF9tc2dzKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmMgYi90b29scy90cmFjaW5nL3J0bGEvc3JjL3V0aWxzLmNcbmluZGV4IGNiMTg3ZTdkNDhkMWMyLi4zNTMyZGEyZjIyOTZkOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3RyYWNpbmcvcnRsYS9zcmMvdXRpbHMuY1xuKysrIGIvdG9vbHMvdHJhY2luZy9ydGxhL3NyYy91dGlscy5jXG5AQCAtNjcsNyArNjcsNyBAQCB2b2lkIGZhdGFsKGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuIFx0dmFfc3RhcnQoYXAsIGZtdCk7XG4gXHR2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApO1xuIFx0dmFfZW5kKGFwKTtcbi1cdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbitcdGZwdXRjKHN0ZGVyciwgJ1xcbicpO1xuIFxuIFx0ZXhpdChFUlJPUik7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3VzYi9mZnMtdGVzdC5jIGIvdG9vbHMvdXNiL2Zmcy10ZXN0LmNcbmluZGV4IDIyYjkzOGZiZGZiNzcyLi5lOTkzNzM2YmEwZDY0NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3VzYi9mZnMtdGVzdC5jXG4rKysgYi90b29scy91c2IvZmZzLXRlc3QuY1xuQEAgLTU2Miw3ICs1NjIsNyBAQCBlbXB0eV9vdXRfYnVmKHN0cnVjdCB0aHJlYWQgKmlnbm9yZSwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbmJ5dGVzKVxuIFx0XHRcdFx0ZnByaW50ZihzdGRlcnIsIFwiJTR6ZDpcIiwgbGVuKTtcbiBcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCIgJTAyeFwiLCAqcCk7XG4gXHRcdFx0aWYgKDMxID09IChsZW4gJSAzMikpXG4tXHRcdFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRcdFx0XHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiBcdFx0fVxuIFx0XHRmZmx1c2goc3RkZXJyKTtcbiBcdFx0ZXJybm8gPSBFSUxTRVE7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2L3NyYy9pbl9rZXJuZWwuYyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcbmluZGV4IGU2ZGVhNDA0MGY4ZjRjLi4yNjEzMjE3MWY2MDA4ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcbisrKyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydi9zcmMvaW5fa2VybmVsLmNcbkBAIC02NjcsNyArNjY3LDcgQEAgc3RhdGljIHZvaWQgaWttX3VzYWdlX3ByaW50X3JlYWN0b3JzKHZvaWQpXG4gXHRcdGVuZCA9IHN0cnN0cihzdGFydCwgXCJcXG5cIik7XG4gXHR9XG4gXG4tXHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4rXHRmcHV0YyhzdGRlcnIsICdcXG4nKTtcbiB9XG4gLypcbiAgKiBpa21fdXNhZ2UgLSBwcmludCB1c2FnZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjI6MzY6MDUuNzkwNjI5NTE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMzAxODY2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbjogV29ydGhGdXp6aW5nPWZhbHNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgYmVlbiBwcm9wb3NlZC4gSXQgc2VlbXMgbGlrZSBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50IG9mIGBmcHJpbnRmKC4uLiwgXCJcXG5cIilgIHdpdGggZWl0aGVyIGBmcHV0YyguLi4sICdcXG4nKWAgb3IgYHB1dGNoYXIoJ1xcbicpYC4gSXQncyBoYXBwZW5pbmcgYWNyb3NzIGEgYnVuY2ggb2YgZmlsZXMsIGJ1dCB0aGV5J3JlIGFsbCBsb2NhdGVkIHdpdGhpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5LiBUaGF0J3MgYSBrZXkgaW5kaWNhdG9yIHJpZ2h0IHRoZXJlIOKAkyBgdG9vbHMvYCBpcyBmb3IgdXNlci1zcGFjZSB1dGlsaXRpZXMsIG5vdCBrZXJuZWwtbGV2ZWwgY29kZS4gVGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBhIGNoYW5nZSB0byBhbnl0aGluZyB0aGF0IHJ1bnMgZGlyZWN0bHkgaW4gdGhlIGtlcm5lbCBpdHNlbGYuXG5cbkkgbmVlZCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSd2ZSB0YWtlbiBhIHF1aWNrIHNjYW4gb2YgdGhlIG1vZGlmaWVkIGZpbGVzOiBgYnBmdG9vbGAsIHZhcmlvdXMgR1BJTyB0b29scywgcGVyZiB1dGlsaXRpZXMsIGBhY3BpZHVtcGAsIGB0dXJib3N0YXRgLCBCUEYgc2VsZnRlc3RzLCBLVk0gc2VsZnRlc3RzLCBhbmQgb3RoZXJzLiBUaGUgZmlsZSBsaXN0IGNvbmZpcm1zIG15IGluaXRpYWwgaHVuY2guIFRoZXNlIGFyZSBhbGwgdXNlci1zcGFjZSB0b29scyBhbmQgdGVzdGluZyBmcmFtZXdvcmtzLiBJIGRvbid0IHNlZSBhbnl0aGluZyB0b3VjaGluZyBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXRpZXMgb3IgZHJpdmVycy5cblxuU2luY2UgdGhpcyBpcyBwdXJlbHkgYSBjb3NtZXRpYyBjaGFuZ2UgdG8gdGhlIG91dHB1dCBvZiB1c2VyLXNwYWNlIHRvb2xz4oCUbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxm4oCUaXQgc2hvdWxkbid0IGJlIGZ1enplZC4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIE5vIGtlcm5lbCBsb2dpYyBpcyBpbnZvbHZlZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY4MSwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIyOjM2OjE1LjgyMDgxODcyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHRvb2xzIGFuZCB0ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IGJ5IHJlcGxhY2luZyBgZnByaW50ZmAgd2l0aCBgZnB1dGNgIG9yIGBwdXRjaGFyYCBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowksvrk[1] Phase: Running StartedAt: 2026-07-25 22:36:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksvrk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 22:36:27 +0000 UTC FinishedAt: 2026-07-25 22:36:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}