Name: series-workflow2jvfn Phase: Failed StartedAt: 2026-07-12 12:06:24 +0000 UTC FinishedAt: 2026-07-12 12:27:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2jvfn[0] Phase: Succeeded StartedAt: 2026-07-12 12:06:24 +0000 UTC FinishedAt: 2026-07-12 12:27:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2jvfn[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 12:06:24 +0000 UTC FinishedAt: 2026-07-12 12:27:42 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDEyOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBydHc4OSB3aXJlbGVzcyBkcml2ZXIgKFJlYWx0ZWsgODAyLjExYXgvYmUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBmaXJtd2FyZSBlbXVsYXRpb24gKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIpIHRvIHBhc3MgdGhlIGluaXRpYWwgcHJvYmUgYW5kIHJlYWNoIHRoZSBjb3JlIGxvZ2ljIChNQUMvUEhZIGluaXRpYWxpemF0aW9uLCBSRiBjYWxpYnJhdGlvbiwgZXRjLikuIFRoZXJlZm9yZSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDEyOjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzE5OGNhMzQxYWFjMGRjZmEwZWE1YTFiMjc5ZTNjMDFhOWRlMTNlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDEyOjI2OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNcbmluZGV4IDY4ZGFkNjA5MGY4N2UyLi45Yjk2YjU3YmMzOWNkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTQ4Niw2ICYjNDM7NDg2LDM3IEBAIHZvaWQgcnR3ODlfY29yZV9zZXRfY2hpcF90eHB3cihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRfX3J0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3IocnR3ZGV2LCBjb25mLmNoYW5zWzFdLCBSVFc4OV9QSFlfMSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma19yZWNvcmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbiYjNDM7XHRcdFx0XHQgIGJvb2wgc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkID0gXHUwMDI2aW5mby1cdTAwM2VyZWNvcmRzW2luZm8tXHUwMDNlcmVjb3JkX2lkeF07XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuJiM0MztcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XG4mIzQzO1x0aW50IHBhdGg7XG4mIzQzO1xuJiM0MztcdGlmICghc3RhcnQpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gcmVjb3JkO1xuJiM0MztcdHJlY29yZC1cdTAwM2VwaHlfaWR4ID0gcnR3dmlmX2xpbmstXHUwMDNlcGh5X2lkeDtcbiYjNDM7XG4mIzQzO1x0Zm9yIChwYXRoID0gMDsgcGF0aCBcdTAwM2MgcGF0aF9udW07IHBhdGgmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRyZWNvcmQtXHUwMDNlY2hbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfQ0ZHQ0gsXG4mIzQzO1x0XHRcdFx0XHRcdCBSUl9DRkdDSF9CQU5EMCB8IFJSX0NGR0NIX0NIKTtcbiYjNDM7XHRcdHJlY29yZC1cdTAwM2VjdltwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9WQ08sXG4mIzQzO1x0XHRcdFx0XHRcdCBSUl9WQ09fU0VMIHwgUlJfVkNPX1NUUyk7XG4mIzQzO1x0XHRyZWNvcmQtXHUwMDNlYzVbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfU1lORkIsIFJGUkVHX01BU0spO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuO1xuJiM0MztcbiYjNDM7ZW5kOlxuJiM0MztcdGluZm8tXHUwMDNlcmVjb3JkX2lkeCA9IChpbmZvLVx1MDAzZXJlY29yZF9pZHggJiM0MzsgMSkgJSBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7XG4mIzQzO1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxuIHtcbkBAIC01MDMsOSAmIzQzOzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpO1xuIFx0fVxuIFxuLVx0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZXJma19jaGFubmVsKVxuJiM0MztcdGlmIChjaGlwLVx1MDAzZW9wcy1cdTAwM2VyZmtfY2hhbm5lbCkge1xuJiM0MztcdFx0cnR3ODlfY29yZV9yZmtfcmVjb3JkKHJ0d2RldiwgcnR3dmlmX2xpbmssIHRydWUpO1xuJiM0MztcbiBcdFx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlcmZrX2NoYW5uZWwocnR3ZGV2LCBydHd2aWZfbGluayk7XG4gXG4mIzQzO1x0XHRydHc4OV9jb3JlX3Jma19yZWNvcmQocnR3ZGV2LCBydHd2aWZfbGluaywgZmFsc2UpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAocHJlaGRsX2xpbmspIHtcbiBcdFx0cnR3ODlfZW50aXR5X2ZvcmNlX2h3KHJ0d2RldiwgUlRXODlfUEhZX05VTSk7XG4gXHRcdHJ0dzg5X3NldF9jaGFubmVsKHJ0d2Rldik7XG5AQCAtNTI2NSw2ICYjNDM7NTMwMSwzNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9lbnRlcl9scHNfdHJhY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuJiM0MztcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlcmZrX3dhaXQ7XG4mIzQzO1x0aW50IGkgPSBpbmZvLVx1MDAzZXJlY29yZF90c3NpX2lkeDtcbiYjNDM7XHR1MzIgYmFzZTtcbiYjNDM7XHR1MzIgbWFzaztcbiYjNDM7XHRpbnQgcGF0aDtcbiYjNDM7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggPSAoaW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggJiM0MzsgMSkgJVxuJiM0MztcdFx0XHRcdFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjtcbiYjNDM7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyQSkge1xuJiM0MztcdFx0YmFzZSA9IDB4MmVlMTA7XG4mIzQzO1x0XHRtYXNrID0gMHg3ZmMwMDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0YmFzZSA9IDB4MmY5MTg7XG4mIzQzO1x0XHRtYXNrID0gMHgwMDAwMDFmZjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAocGF0aCA9IDA7IHBhdGggXHUwMDNjIHBhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dTMyIGFkZHIgPSBiYXNlICYjNDM7IDB4MTAwICogcGF0aDtcbiYjNDM7XG4mIzQzO1x0XHRpbmZvLVx1MDAzZXRzc2lfY29kZVtpXVtwYXRoXSA9IHJ0dzg5X3JlYWQzMl9tYXNrKHJ0d2RldiwgYWRkciwgbWFzayk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRlbnVtIHJ0dzg5X2VudGl0eV9tb2RlIG1vZGU7XG5AQCAtNTI3NCw2ICYjNDM7NTM0MSw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cnR3ODlfY2hpcF9yZmtfdHJhY2socnR3ZGV2KTtcbiYjNDM7XG4mIzQzO1x0cnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQocnR3ZGV2KTtcbiB9XG4gXG4gdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9wMnBfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuQEAgLTcxODAsOSAmIzQzOzcyNDksMTkgQEAgaW50IHJ0dzg5X2NvcmVfbWxzcl9zd2l0Y2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYsXG4gc3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlbWFjX2RlZjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4mIzQzO1x0Ym9vbCBiYl9wcmVpbml0ID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlKTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE5vcm1hbGx5IGluIHByb2JlIHN0YWdlLCB3ZSBkb24mIzM5O3QgbmVlZCB0byBkbyBCQiBwcmUtaW5pdGlhbGl6YXRpb24uXG4mIzQzO1x0ICogSG93ZXZlciwgUlRMODkyMkQgZmlybXdhcmUgY2FuIGFjY2VzcyBCQiByZWdpc3RlcnMgYXQgZmlybXdhcmVcbiYjNDM7XHQgKiBpbml0aWFsIHN0YXRlLCBzbyBpbml0aWFsaXplIGl0IHRvIGF2b2lkIEJCIElPIHN0dWNrIGluIGZpcm13YXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWNoaXBfaWQgPT0gUlRMODkyMkQpXG4mIzQzO1x0XHRiYl9wcmVpbml0ID0gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlLCBiYl9wcmVpbml0KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaFxuaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjJlYWNiNWZlOTdmMjA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXG5AQCAtNDI5NCw4ICYjNDM7NDI5NCwxMiBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfcnVsZV82Z2h6IHtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV90eF9zaGFwZSB7XG4tXHRjb25zdCB1OCAoKmxtdClbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuLVx0Y29uc3QgdTggKCpsbXRfcnUpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XG4mIzQzO1x0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXVxuJiM0MztcdFx0ICAgICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuJiM0MztcdGNvbnN0IHU4ICgqbG10X3J1KVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dW05VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUl07XG4mIzQzO1xuJiM0MztcdGNvbnN0IHU4ICgqbG10X3YwKVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV07XG4mIzQzO1x0Y29uc3QgdTggKCpsbXRfcnVfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHtcbkBAIC00Mzg5LDEyICYjNDM7NDM5MywxMyBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfbG10X3J1XzZnaHpfZGF0YSB7XG4gXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhIHtcbiBcdHN0cnVjdCBydHc4OV90eHB3cl9jb25mIGNvbmY7XG4tXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbiYjNDM7XHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXVxuJiM0MztcdCAgICBbTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSXTtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfcnVfZGF0YSB7XG4gXHRzdHJ1Y3QgcnR3ODlfdHhwd3JfY29uZiBjb25mO1xuLVx0dTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuJiM0MztcdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X3JmZV9kYXRhIHtcbkBAIC00NzkwLDYgJiM0Mzs0Nzk1LDcgQEAgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyB7XG4gXHRjb25zdCBzdHJ1Y3Qgd2lwaHlfd293bGFuX3N1cHBvcnQgKndvd2xhbl9zdHViO1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3h0YWxfaW5mbyAqeHRhbF9pbmZvO1xuIFx0dW5zaWduZWQgbG9uZyBkZWZhdWx0X3F1aXJrczsgLyogYml0bWFwIG9mIHJ0dzg5X3F1aXJrcyAqL1xuJiM0MztcdHUxNiB0eHRpbWVfbGltaXRfMmdoejtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV9jaGlwX3ZhcmlhbnQge1xuQEAgLTU0ODQsMTEgJiM0Mzs1NDkwLDQzIEBAIGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSB7XG4gXHRSVFc4OV9SRktfU1RBVEVfSDJDX0NNRF9FUlIgPSAweDQsXG4gfTtcbiBcbiYjNDM7ZW51bSBydHc4OV9yZmtfcmVwb3J0X3R5cGVzIHtcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX1BSRV9OVEZZLFxuJiM0MztcdFJUVzg5X1JGS19SRVBPUlRfVFNTSSxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX0lRSyxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX0RQSyxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX1RYR0FQSyxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX0RBQ0ssXG4mIzQzO1x0UlRXODlfUkZLX1JFUE9SVF9SWF9EQ0ssXG4mIzQzO1x0UlRXODlfUkZLX1JFUE9SVF9UWF9JUUssXG4mIzQzO1x0UlRXODlfUkZLX1JFUE9SVF9DSU0zayxcbiYjNDM7XG4mIzQzO1x0TlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVMsXG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUiAyXG4mIzQzOyNkZWZpbmUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SIDEwXG4mIzQzO1xuJiM0MztzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCB7XG4mIzQzO1x0dTMyIGNoW1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4mIzQzO1x0dTMyIGN2W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4mIzQzO1x0dTMyIGM1W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4mIzQzO1x0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHg7XG4mIzQzO1x0ZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHN0YXRlc1tOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFU107XG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvIHtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247XG4gXHRrdGltZV90IHN0YXJ0X3RpbWU7XG4gXHRlbnVtIHJ0dzg5X3Jma19yZXBvcnRfc3RhdGUgc3RhdGU7XG4gXHR1OCB2ZXJzaW9uO1xuJiM0MztcbiYjNDM7XHRpbnQgcmVjb3JkX2lkeDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkX3B0cjtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCByZWNvcmRzW1JUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUl07XG4mIzQzO1xuJiM0MztcdGludCByZWNvcmRfdHNzaV9pZHg7XG4mIzQzO1x0dTMyIHRzc2lfY29kZVtSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlJdW1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4gfTtcbiBcbiAjZGVmaW5lIFJUVzg5X0RBQ0tfUEFUSF9OUiAyXG5AQCAtNzU2OSw4ICYjNDM7NzYwNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9iYl9zZXRodyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFxuJiM0MztcdHJ0dzg5X2lvX3BhY2socnR3ZGV2KTtcbiYjNDM7XG4gXHRpZiAoY2hpcC1cdTAwM2VvcHMtXHUwMDNlYmJfc2V0aHcpXG4gXHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJiX3NldGh3KHJ0d2Rldik7XG4mIzQzO1xuJiM0MztcdHJ0dzg5X2lvX3VucGFjayhydHdkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9yZmtfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5AQCAtNzc4Nyw2ICYjNDM7NzgyOSwzMCBAQCBzdGF0aWMgaW5saW5lIHU4IHJ0dzg5X3JlZ2RfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZClcbiBcdHJldHVybiB0eHB3cl9yZWdkO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSB1OCBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZCxcbiYjNDM7XHRcdFx0XHRcdGVudW0gcnR3ODlfcmF0ZV9zZWN0aW9uIHJzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X3JlZ3VsYXRvcnlfaW5mbyAqcmVndWxhdG9yeSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZWd1bGF0b3J5O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFx1MDAyNnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZTtcbiYjNDM7XHR1OCByZWc2X3B3ciA9IHJlZ3VsYXRvcnktXHUwMDNlcmVnXzZnaHpfcG93ZXI7XG4mIzQzO1x0dTggcmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4mIzQzO1xuJiM0MztcdGlmICh1bmxpa2VseShycyBcdTAwM2U9IFJUVzg5X1JTX1RYX1NIQVBFX05VTSkpXG4mIzQzO1x0XHRycyA9IFJUVzg5X1JTX09GRE07XG4mIzQzO1xuJiM0MztcdGlmICghdHhfc2hhcGUtXHUwMDNlbG10KVxuJiM0MztcdFx0Z290byB2MDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJhbmQgIT0gUlRXODlfQkFORF82RylcbiYjNDM7XHRcdHJlZzZfcHdyID0gUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10KVtiYW5kXVtyc11bcmVnZF1bcmVnNl9wd3JdO1xuJiM0MztcbiYjNDM7djA6XG4mIzQzO1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10X3YwKVtiYW5kXVtyc11bcmVnZF07XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2N0cmxfYnRnX2J0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbixcbiBcdFx0XHRcdFx0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xuaW5kZXggOGY1YWY4NzNlMDlmNWUuLmM4MTM4YzQxMTZjMjE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2RlYnVnLmNcbkBAIC05Myw2ICYjNDM7OTMsNyBAQCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyB7XG4gXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGJlYWNvbl9pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYztcbiBcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19iYjtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGRpYWdfcmY7XG4gXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IG1vbml0b3Jfb3B0cztcbiB9O1xuIFxuQEAgLTUzOTYsNiAmIzQzOzUzOTcsMTE4IEBAIHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19iYl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0cmV0dXJuIHAgLSBidWY7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3NpemVfdFxuJiM0MztydHc4OV9kZWJ1Z19wcml2X2RpYWdfcmZfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG4mIzQzO1x0XHRcdCAgICAgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbiYjNDM7XHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICYjNDM7IGJ1ZnN6O1xuJiM0MztcdGludCBpLCBqO1xuJiM0MztcbiYjNDM7XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7UkZLIChuZXh0IGluZGV4OiAlZClcXG5cJiMzNDssIGluZm8tXHUwMDNlcmVjb3JkX2lkeCk7XG4mIzQzO1xuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDsgIFBIWS1YICAgID1cJiMzNDspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAlNGQgXCYjMzQ7LCByZWNvcmQtXHUwMDNlcGh5X2lkeCk7XG4mIzQzO1x0fVxuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlI7IGomIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICBTJWQtQ0ggICAgPVwmIzM0Oywgaik7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICUwNXhcJiMzNDssIHJlY29yZC1cdTAwM2VjaFtqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICBTJWQtQ1YgICAgPVwmIzM0Oywgaik7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICUwNXhcJiMzNDssIHJlY29yZC1cdTAwM2VjdltqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICBTJWQtQzUgICAgPVwmIzM0Oywgaik7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICUwNXhcJiMzNDssIHJlY29yZC1cdTAwM2VjNVtqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaiA9IDA7IGogXHUwMDNjIE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTOyBqJiM0MzsmIzQzOykge1xuJiM0MztcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAgJS04cyA9XCYjMzQ7LCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW2pdKTtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbiYjNDM7XG4mIzQzO1x0XHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDsgJTRkIFwmIzM0OywgcmVjb3JkLVx1MDAzZXN0YXRlc1tqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDtUU1NJLXRyYWNrIChuZXh0IGluZGV4OiAlZClcXG5cJiMzNDssIGluZm8tXHUwMDNlcmVjb3JkX3Rzc2lfaWR4KTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChqID0gMDsgaiBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqJiM0MzsmIzQzOykge1xuJiM0MztcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAgUyVkICAgICAgID1cJiMzNDssIGopO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAgICUwM3hcJiMzNDssIGluZm8tXHUwMDNldHNzaV9jb2RlW2ldW2pdKTtcbiYjNDM7XHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHAgLSBidWY7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ0dzg5X2RiZ19kaWFnX3JmX3NldF9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2VudGl0eV9tZ250ICptZ250ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWhhbC5lbnRpdHlfbWdudDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rO1xuJiM0MztcdHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbGlua19pZDtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShydHd2aWYsIFx1MDAyNm1nbnQtXHUwMDNlYWN0aXZlX2xpc3QsIG1nbnRfZW50cnkpXG4mIzQzO1x0XHRydHc4OV92aWZfZm9yX2VhY2hfbGluayhydHd2aWYsIHJ0d3ZpZl9saW5rLCBsaW5rX2lkKVxuJiM0MztcdFx0XHRydHc4OV9jaGlwX3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztlbnVtIHJ0dzg5X2RiZ19kaWFnX3JmX3R5cGUge1xuJiM0MztcdFJUVzg5X0RCR19ESUFHX1JGX1JTVkQgPSAwLFxuJiM0MztcdFJUVzg5X0RCR19ESUFHX1JGX1JGSyA9IDEsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgc3NpemVfdFxuJiM0MztydHc4OV9kZWJ1Z19wcml2X2RpYWdfcmZfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG4mIzQzO1x0XHRcdCAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4mIzQzO3tcbiYjNDM7XHR1OCB0eXBlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGtzdHJ0b3U4KGJ1ZiwgMCwgXHUwMDI2dHlwZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRpZiAocnR3ZGV2LVx1MDAzZXNjYW5uaW5nKVxuJiM0MztcdFx0cnR3ODlfaHdfc2Nhbl9hYm9ydChydHdkZXYsIHJ0d2Rldi1cdTAwM2VzY2FuX2luZm8uc2Nhbm5pbmdfdmlmKTtcbiYjNDM7XG4mIzQzO1x0cnR3ODlfbGVhdmVfcHNfbW9kZShydHdkZXYpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHR5cGUpIHtcbiYjNDM7XHRjYXNlIFJUVzg5X0RCR19ESUFHX1JGX1JGSzpcbiYjNDM7XHRcdHJ0dzg5X2RiZ19kaWFnX3JmX3NldF9yZmsocnR3ZGV2KTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gY291bnQ7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHNzaXplX3RcbiBydHc4OV9kZWJ1Z19wcml2X21vbml0b3Jfb3B0c19nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG5AQCAtNTUwOCw2ICYjNDM7NTYyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyBydHc4OV9kZWJ1Z2ZzX3RlbXBsID0ge1xuIFx0LmJlYWNvbl9pbmZvID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoYmVhY29uX2luZm8pLFxuIFx0LmRpYWdfbWFjID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19tYWMsIFJTSVpFXzE2SywgUkxPQ0spLFxuIFx0LmRpYWdfYmIgPSBydHc4OV9kZWJ1Z19wcml2X2dldChkaWFnX2JiLCBSU0laRV84SywgUkxPQ0spLFxuJiM0MztcdC5kaWFnX3JmID0gcnR3ODlfZGVidWdfcHJpdl9zZXRfYW5kX2dldChkaWFnX3JmLCBSV0xPQ0spLFxuIFx0Lm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLFxuIH07XG4gXG5AQCAtNTU2NSw2ICYjNDM7NTY3OSw3IEBAIHZvaWQgcnR3ODlfZGVidWdmc19hZGRfc2VjMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdG9wXG4gXHRydHc4OV9kZWJ1Z2ZzX2FkZF9yKGJlYWNvbl9pbmZvKTtcbiBcdHJ0dzg5X2RlYnVnZnNfYWRkX3IoZGlhZ19tYWMpO1xuIFx0cnR3ODlfZGVidWdmc19hZGRfcihkaWFnX2JiKTtcbiYjNDM7XHRydHc4OV9kZWJ1Z2ZzX2FkZF9ydyhkaWFnX3JmKTtcbiBcdHJ0dzg5X2RlYnVnZnNfYWRkX3J3KG1vbml0b3Jfb3B0cyk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuaW5kZXggZDZhNTk0Yjc1YWIyMDIuLjAwZmU0ODA4OTA3MWI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbkBAIC0xOTE0LDEzICYjNDM7MTkxNCwxNCBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19wcm9nX2NudF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcbiBzdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgKm1hYyA9IHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZW1hY19kZWY7XG4gXHR1MzIgdmFsMzI7XG4gXG4gXHR2YWwzMiA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfV0NQVV9GV19DVFJMKTtcbiBcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O1tFUlJdZndkbCAweDFFMCA9IDB4JXhcXG5cJiMzNDssIHZhbDMyKTtcbiBcbi1cdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CT09UX0RCRyk7XG4tXHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtbRVJSXWZ3ZGwgMHg4M0YwID0gMHgleFxcblwmIzM0OywgdmFsMzIpO1xuJiM0MztcdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgbWFjLVx1MDAzZWJvb3RfZGJnKTtcbiYjNDM7XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtbRVJSXWZ3ZGwgMHgleCA9IDB4JXhcXG5cJiMzNDssIG1hYy1cdTAwM2Vib290X2RiZywgdmFsMzIpO1xuIFxuIFx0cnR3ODlfZndfcHJvZ19jbnRfZHVtcChydHdkZXYpO1xuIH1cbkBAIC0xMTMyNSw2ICYjNDM7MTEzMjYsMTIgQEAgZndfdHhfc2hhcGVfbG10X2VudHJ5X3ZhbGlkKGNvbnN0IHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfZW50cnkgKmUsXG4gXHRpZiAoZS1cdTAwM2VyZWdkIFx1MDAzZT0gUlRXODlfUkVHRF9OVU0pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiYjNDM7XHQvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqL1xuJiM0MztcdHN0YXRpY19hc3NlcnQoUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVCA9PSAwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGUtXHUwMDNlcmVnNl9wd3IgXHUwMDNlPSBOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVIpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuQEAgLTExMzM5LDcgJiM0MzsxMTM0Niw3IEBAIHZvaWQgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXQoc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhICpkYXRhKVxuIFx0XHRpZiAoIWZ3X3R4X3NoYXBlX2xtdF9lbnRyeV92YWxpZChcdTAwMjZlbnRyeSwgY3Vyc29yLCBjb25mKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnR4X3NoYXBlX3JzXVtlbnRyeS5yZWdkXSA9IGVudHJ5LnY7XG4mIzQzO1x0XHRkYXRhLVx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkudHhfc2hhcGVfcnNdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuQEAgLTExMzU2LDYgJiM0MzsxMTM2MywxMiBAQCBmd190eF9zaGFwZV9sbXRfcnVfZW50cnlfdmFsaWQoY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSAqZSxcbiBcdGlmIChlLVx1MDAzZXJlZ2QgXHUwMDNlPSBSVFc4OV9SRUdEX05VTSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuJiM0MztcdC8qIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdvcmsgd2l0aCAyLzUgR0h6ICovXG4mIzQzO1x0c3RhdGljX2Fzc2VydChSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUID09IDApO1xuJiM0MztcbiYjNDM7XHRpZiAoZS1cdTAwM2VyZWc2X3B3ciBcdTAwM2U9IE5VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG5AQCAtMTEzNzAsNyAmIzQzOzExMzgzLDcgQEAgdm9pZCBydHc4OV9md19sb2FkX3R4X3NoYXBlX2xtdF9ydShzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X3J1X2RhdGEgKmRhdGEpXG4gXHRcdGlmICghZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5X3ZhbGlkKFx1MDAyNmVudHJ5LCBjdXJzb3IsIGNvbmYpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRkYXRhLVx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkucmVnZF0gPSBlbnRyeS52O1xuJiM0MztcdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLmU3NmNlYTBiOWQ0MzE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC01ODE0LDYgJiM0Mzs1ODE0LDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9lbnRyeSB7XG4gXHR1OCB0eF9zaGFwZV9ycztcbiBcdHU4IHJlZ2Q7XG4gXHR1OCB2O1xuJiM0MztcdHU4IHJlZzZfcHdyO1xuIH0gX19wYWNrZWQ7XG4gXG4gLyogbXVzdCBjb25zaWRlciBjb21wYXRpYmlsaXR5OyBkb24mIzM5O3QgaW5zZXJ0IG5ldyBpbiB0aGUgbWlkICovXG5AQCAtNTgyMSw2ICYjNDM7NTgyMiw3IEBAIHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfcnVfZW50cnkge1xuIFx0dTggYmFuZDtcbiBcdHU4IHJlZ2Q7XG4gXHR1OCB2O1xuJiM0MztcdHU4IHJlZzZfcHdyO1xuIH0gX19wYWNrZWQ7XG4gXG4gY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcbmluZGV4IDhjMzk1NTE3YmQyZmUxLi5lMjA0OTM0MWM0MTU0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcbkBAIC00MzA0LDEzICYjNDM7NDMwNCwxNCBAQCBpbnQgcnR3ODlfbWFjX2Rpc2FibGVfYmJfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcbiBcbi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYilcbiYjNDM7aW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIsXG4mIzQzO1x0XHRcdCAgIGJvb2wgYmJfcHJlaW5pdClcbiB7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cnR3ODlfbWFjX2N0cmxfaGNpX2RtYV90cngocnR3ZGV2LCB0cnVlKTtcbiBcbi1cdGlmIChpbmNsdWRlX2JiKSB7XG4mIzQzO1x0aWYgKGluY2x1ZGVfYmIgfHwgYmJfcHJlaW5pdCkge1xuIFx0XHQvKiBPbmx5IGNhbGwgQkIgcHJlaW5pdCBpbmNsdWRpbmcgY29uZmlndXJhdGlvbiBvZiBCQiBNQ1UgZm9yXG4gXHRcdCAqIHRoZSBjaGlwcyB3aGljaCBuZWVkIHRvIGRvd25sb2FkIEJCIE1DVSBmaXJtd2FyZS4gT3RoZXJ3aXNlLFxuIFx0XHQgKiBjYWxsaW5nIHByZWluaXQgbGF0ZXIgdG8gcHJldmVudCB0b3VjaGluZyByZWdpc3RlcnMgYWZmZWN0aW5nXG5AQCAtNDM2Myw3ICYjNDM7NDM2NCw3IEBAIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRib29sIGluY2x1ZGVfYmIgPSAhIWNoaXAtXHUwMDNlYmJtY3VfbnI7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGluY2x1ZGVfYmIpO1xuJiM0MztcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiLCBpbmNsdWRlX2JiKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZmFpbDtcbiBcbkBAIC03MDQzLDExICYjNDM7NzA0NCwyMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhX1xuIHtcbiAjZGVmaW5lIE1BQ19BWF9ERkxUX1RYX1RJTUUgNTI4MFxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VtYWNfZGVmO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHU4IG1hY19pZHggPSBydHdzdGFfbGluay1cdTAwM2VydHd2aWZfbGluay1cdTAwM2VtYWNfaWR4O1xuIFx0dTMyIG1heF90eF90aW1lID0gdHhfdGltZSA9PSAwID8gTUFDX0FYX0RGTFRfVFhfVElNRSA6IHR4X3RpbWU7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2VudGl0eV9jb25mIGNvbmY7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW47XG4gXHR1MzIgcmVnO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHopIHtcbiYjNDM7XHRcdHJ0dzg5X2VudGl0eV9nZXRfY29uZihydHdkZXYsIFx1MDAyNmNvbmYpO1xuJiM0MztcdFx0Y2hhbiA9IGNvbmYuY2hhbnNbbWFjX2lkeF07XG4mIzQzO1xuJiM0MztcdFx0aWYgKGNoYW4tXHUwMDNlYmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcpXG4mIzQzO1x0XHRcdG1heF90eF90aW1lID0gbWluX3QodTMyLCBtYXhfdHhfdGltZSxcbiYjNDM7XHRcdFx0XHRcdCAgICBjaGlwLVx1MDAzZXR4dGltZV9saW1pdF8yZ2h6KTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKHJ0d3N0YV9saW5rLVx1MDAzZWNjdGxfdHhfdGltZSkge1xuIFx0XHRydHdzdGFfbGluay1cdTAwM2VhbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgXHUwMDNlXHUwMDNlIDk7XG4gXHRcdHJldCA9IHJ0dzg5X2NoaXBfaDJjX3R4dGltZV9jbWFjX3RibChydHdkZXYsIHJ0d3N0YV9saW5rKTtcbkBAIC03MDU4LDkgJiM0Mzs3MDcxLDEzIEBAIF9fcnR3ODlfbWFjX3NldF90eF90aW1lKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3N0YV9saW5rICpydHdzdGFfXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFxuJiM0MztcdFx0aWYgKGNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbiYjNDM7XHRcdFx0bWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlPSA1O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRtYXhfdHhfdGltZSA9IG1heF90eF90aW1lICogMTAwMCBcdTAwM2VcdTAwM2UgMTU7XG4mIzQzO1xuIFx0XHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIG1hYy1cdTAwM2VhZ2dfbGltaXQuYWRkciwgbWFjX2lkeCk7XG4tXHRcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgbWFjLVx1MDAzZWFnZ19saW1pdC5tYXNrLFxuLVx0XHRcdFx0ICAgbWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlIDUpO1xuJiM0MztcdFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtXHUwMDNlYWdnX2xpbWl0Lm1hc2ssIG1heF90eF90aW1lKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXQ7XG5AQCAtNzQzOCw2ICYjNDM7NzQ1NSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2F4ID0ge1xuIFx0LmFnZ19sZW5faHQgPSBSX0FYX0FHR19MRU5fSFRfMCxcbiBcdC5wc19zdGF0dXMgPSBSX0FYX1BQV1JCSVRfU0VUVElORyxcbiBcdC5tdV9naWQgPSBcdTAwMjZydHc4OV9tYWNfbXVfZ2lkX2FkZHJfYXgsXG4mIzQzO1x0LmJvb3RfZGJnID0gUl9BWF9CT09UX0RCRyxcbiBcbiBcdC5tdWVkY2FfY3RybCA9IHtcbiBcdFx0LmFkZHIgPSBSX0FYX01VRURDQV9FTixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuaW5kZXggNTM5MDYxZmMxNWU4NWIuLjk0Njc4YTI2MmUxNjRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuQEAgLTEwNjcsNiAmIzQzOzEwNjcsNyBAQCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYge1xuIFx0dTMyIGFnZ19sZW5faHQ7XG4gXHR1MzIgcHNfc3RhdHVzO1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19tdV9naWRfYWRkciAqbXVfZ2lkO1xuJiM0MztcdHUzMiBib290X2RiZztcbiBcbiBcdHN0cnVjdCBydHc4OV9yZWdfZGVmIG11ZWRjYV9jdHJsO1xuIFx0c3RydWN0IHJ0dzg5X3JlZ19kZWYgYmZlZV9jdHJsO1xuQEAgLTEyOTgsNyAmIzQzOzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbFxuIFxuIGludCBydHc4OV9tYWNfcHdyX29uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiKTtcbiYjNDM7aW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIsXG4mIzQzO1x0XHRcdCAgIGJvb2wgYmJfcHJlaW5pdCk7XG4gaW50IHJ0dzg5X21hY19wcmVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gaW50IHJ0dzg5X21hY19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gaW50IHJ0dzg5X21hY19kbGVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfcXRhX21vZGUgbW9kZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuY1xuaW5kZXggZjI0YzExOWI5OWYxYmQuLjI0MjAwNmNlZmMzZTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuY1xuQEAgLTMyNDIsNiAmIzQzOzMyNDIsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9iZSA9IHtcbiBcdC5hZ2dfbGVuX2h0ID0gUl9CRV9BR0dfTEVOX0hUXzAsXG4gXHQucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsXG4gXHQubXVfZ2lkID0gXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLFxuJiM0MztcdC5ib290X2RiZyA9IFJfQkVfQk9PVF9EQkcsXG4gXG4gXHQubXVlZGNhX2N0cmwgPSB7XG4gXHRcdC5hZGRyID0gUl9CRV9NVUVEQ0FfRU4sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmNcbmluZGV4IDc1OWJlNGRhYjQyYjFjLi42ZGVlMzlmNTNkZjBlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmNcbkBAIC0zOTY4LDYgJiM0MzszOTY4LDIzIEBAIHZvaWQgKCogY29uc3QgcnR3ODlfcGh5X2MyaF9yZmtfbG9nX2hhbmRsZXJbXSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0W1JUVzg5X1BIWV9DMkhfUkZLX0xPR19GVU5DX0NJTTNLXSA9IHJ0dzg5X3BoeV9jMmhfcmZrX2xvZ19jaW0zayxcbiB9O1xuIFxuJiM0MzsjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcXFxuJiM0MztcdFtSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlXSA9ICN0eXBlXG4mIzQzO1xuJiM0Mztjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdID0ge1xuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChQUkVfTlRGWSksXG4mIzQzO1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFRTU0kpLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChJUUspLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEUEspLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChUWEdBUEspLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEQUNLKSxcbiYjNDM7XHROQU1FX1JUVzg5X1JGS19SRVBPUlQoUlhfRENLKSxcbiYjNDM7XHROQU1FX1JUVzg5X1JGS19SRVBPUlQoVFhfSVFLKSxcbiYjNDM7XHROQU1FX1JUVzg5X1JGS19SRVBPUlQoQ0lNM2spLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0dzg5X3Jma19yZXBvcnRfbmFtZXMpID09IE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTKTtcbiYjNDM7XG4gc3RhdGljXG4gdm9pZCBydHc4OV9waHlfcmZrX3JlcG9ydF9wcmVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG5AQCAtMzk3OSw4ICYjNDM7Mzk5Niw4IEBAIHZvaWQgcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gfVxuIFxuIHN0YXRpY1xuLWludCBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqcmZrX25hbWUsXG4tXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG1zKVxuJiM0MztpbnQgX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSxcbiYjNDM7XHRcdFx0XHQgIHVuc2lnbmVkIGludCBtcylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbiBcdHVuc2lnbmVkIGxvbmcgdGltZV9sZWZ0O1xuQEAgLTQwMTcsNiAmIzQzOzQwMzQsMjkgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljXG4mIzQzO2ludCBfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuJiM0MztcdFx0XHRcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF90eXBlcyByZmtfdHlwZSxcbiYjNDM7XHRcdFx0XHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCxcbiYjNDM7XHRcdFx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgbXMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBjaGFyICpyZmtfbmFtZSA9IHJ0dzg5X3Jma19yZXBvcnRfbmFtZXNbcmZrX3R5cGVdO1xuJiM0MztcdHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvICp3YWl0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXJma193YWl0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSB3YWl0LVx1MDAzZXJlY29yZF9wdHI7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCByZmtfbmFtZSwgbXMpO1xuJiM0MztcbiYjNDM7XHRpZiAocmVjb3JkKVxuJiM0MztcdFx0cmVjb3JkLVx1MDAzZXN0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LVx1MDAzZXN0YXRlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCB0eXBlLCBwaHlfaWR4LCBjaGFuLCBtcykgXFxcbiYjNDM7XHRfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlLCBwaHlfaWR4LCBjaGFuLCBtcylcbiYjNDM7XG4gc3RhdGljIHZvaWRcbiBydHc4OV9waHlfYzJoX3Jma19yZXBvcnRfc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqYzJoLCB1MzIgbGVuKVxuIHtcbkBAIC00MTIyLDcgJiM0Mzs0MTYyLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcHJlX250ZnlfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKFJUVzg5X0NIS19GV19GRUFUVVJFX0dST1VQKFdJVEhfUkZLX1BSRV9OT1RJRlksIFx1MDAyNnJ0d2Rldi1cdTAwM2VmdykpIHtcbiBcdFx0cnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChydHdkZXYpO1xuIFx0XHRydHc4OV9md19oMmNfcmZfcHJlX250ZnkocnR3ZGV2LCBwaHlfaWR4KTtcbi1cdFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O1BSRV9OVEZZXCYjMzQ7LCBtcyk7XG4mIzQzO1x0XHRyZXQgPSBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgUFJFX05URlksIHBoeV9pZHgsIE5VTEwsIG1zKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTQxNTIsNyAmIzQzOzQxOTIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O1RTU0lcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3Rzc2lfYW5kX3dhaXQpO1xuIFxuQEAgLTQxNjksNyAmIzQzOzQyMDksNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19pcWtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCYjMzQ7SVFLXCYjMzQ7LCBtcyk7XG4mIzQzO1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBJUUssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdCk7XG4gXG5AQCAtNDE4Niw3ICYjNDM7NDIyNiw3IEBAIGludCBydHc4OV9waHlfcmZrX2Rwa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtEUEtcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIERQSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfZHBrX2FuZF93YWl0KTtcbiBcbkBAIC00MjAzLDcgJiM0Mzs0MjQzLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O1RYR0FQS1wmIzM0OywgbXMpO1xuJiM0MztcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7XG4gfVxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190eGdhcGtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyMjAsNyAmIzQzOzQyNjAsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kYWNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O0RBQ0tcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIERBQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQpO1xuIFxuQEAgLTQyMzcsNyAmIzQzOzQyNzcsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19yeGRja19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtSWF9EQ0tcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFJYX0RDSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQpO1xuIFxuQEAgLTQyNTQsNyAmIzQzOzQyOTQsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtUWF9JUUtcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHhpcWtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyNzEsNyAmIzQzOzQzMTEsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19jaW0za19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtDSU0za1wmIzM0OywgbXMpO1xuJiM0MztcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgQ0lNM2ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxuaW5kZXggNTMyMjMyODkyODMxZjAuLjI1NTQxNmViYWY5MDA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxuQEAgLTExNjMsNiAmIzQzOzExNjMsOSBAQCB2b2lkIHJ0dzg5X3BoeV9yYXRlX3BhdHRlcm5fdmlmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBib29sIHJ0dzg5X3BoeV9jMmhfY2hrX2F0b21pYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGNsYXNzLCB1OCBmdW5jKTtcbiB2b2lkIHJ0dzg5X3BoeV9jMmhfaGFuZGxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKTtcbiYjNDM7XG4mIzQzO2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdO1xuJiM0MztcbiBpbnQgcnR3ODlfcGh5X3Jma19wcmVfbnRmeV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IG1zKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxuaW5kZXggMDg2ZWY3N2ViYjlmY2QuLmFmOTE4MTM2N2IyMjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxuQEAgLTg3MTgsNiAmIzQzOzg3MTgsNyBAQFxuICNkZWZpbmUgUlJfVkNPIDB4YjJcbiAjZGVmaW5lIFJSX1ZDT19WQUwgR0VOTUFTSygxOCwgMTQpXG4gI2RlZmluZSBSUl9WQ09fU0VMIEdFTk1BU0soOSwgOClcbiYjNDM7I2RlZmluZSBSUl9WQ09fU1RTIEdFTk1BU0soNywgMClcbiAjZGVmaW5lIFJSX1ZDSSAweGIzXG4gI2RlZmluZSBSUl9WQ0lfT04gQklUKDcpXG4gI2RlZmluZSBSUl9MUEYgMHhiN1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuY1xuaW5kZXggNjBmMzYyNTkzNjk2NmYuLjAzZTFkMWRmODZiMzI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcbkBAIC0xOTE4LDExICYjNDM7MTkxOCw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTFiX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuIFx0XHRcdFx0ICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuIFx0dTggYmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuLVx0dTggcmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4tXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07XG4tXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTtcbiYjNDM7XHR1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTtcbiYjNDM7XHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xuIFxuIFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcbiBcdFx0cnR3ODg1MWJfYmJfc2V0X3R4X3NoYXBlX2RmaXIocnR3ZGV2LCBjaGFuLCB0eF9zaGFwZV9jY2ssIHBoeV9pZHgpO1xuQEAgLTI3NzksNiAmIzQzOzI3NzcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTFiX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBcdTAwMjZydHc4ODUxYl94dGFsX2luZm8sXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUxYl9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xuaW5kZXggYTljMzA5YzI0NWMzMzQuLjNhNzMwYTgyNjk0OTgwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiX3RhYmxlLmNcbkBAIC0xNDg4Niw4ICYjNDM7MTQ4ODYsOCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTFiX2RmbHRfcGFybXMgPSB7XG4gXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWcsXG4gXHR9LFxuIFx0LnR4X3NoYXBlID0ge1xuLVx0XHQubG10ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LFxuLVx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuJiM0MztcdFx0LmxtdF92MCA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcbiYjNDM7XHRcdC5sbXRfcnVfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXG4gXHR9LFxuIH07XG4gXG5AQCAtMTQ5MDIsOCAmIzQzOzE0OTAyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MWJfcmZlX3Bhcm1zX3R5cGUyID0ge1xuIFx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhwd3JfbG10X3J1XzVnX3R5cGUyLFxuIFx0fSxcbiBcdC50eF9zaGFwZSA9IHtcbi1cdFx0LmxtdCA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcbi1cdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdF9ydSxcbiYjNDM7XHRcdC5sbXRfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXG4mIzQzO1x0XHQubG10X3J1X3YwID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuIFx0fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xuaW5kZXggMmMxZjE2NmU2ODdmMDYuLjY3NTY0ZTU4ZDEyMzM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcbkBAIC0yNTE2LDYgJiM0MzsyNTE2LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYV9jaGlwX2luZm8gPSB7XG4gI2VuZGlmXG4gXHQueHRhbF9pbmZvXHRcdD0gXHUwMDI2cnR3ODg1MmFfeHRhbF9pbmZvLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbiYjNDM7XHQudHh0aW1lX2xpbWl0XzJnaHpcdD0gMCxcbiB9O1xuIEVYUE9SVF9TWU1CT0wocnR3ODg1MmFfY2hpcF9pbmZvKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcbmluZGV4IDRlN2IwNjhhYWE3NWIxLi5iMGFjMjlkMWEwMWM3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jXG5AQCAtMTExMyw2ICYjNDM7MTExMyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYl9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jXG5pbmRleCBkZjVmYmFlNTBmZjU1MC4uYTYxYzY0ZmRmZjRkYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jXG5AQCAtMTMyMSwxMSAmIzQzOzEzMjEsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyYnhfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuIFx0XHRcdFx0ICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbiBcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xuLVx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4mIzQzO1x0dTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7XG4mIzQzO1x0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcbiBcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXG4gXHRcdHJ0dzg4NTJieF9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jXG5pbmRleCAwNzk0NWQwNmRjNTljOS4uMTMzMmQxYjkyMzVhZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xuQEAgLTIyOTIxLDcgJiM0MzsyMjkyMSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmJfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTJiX3R4cHdyX2xtdF9ydV81ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsXG4mIzQzO1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LFxuJiM0MztcdFx0LmxtdF9ydV92MCA9IFx1MDAyNnJ0dzg5Xzg4NTJiX3R4X3NoYXBlX2xtdF9ydSxcbiBcdH0sXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xuaW5kZXggN2ZjYzg3N2Y2ZWEwYzQuLjRiZWE4NWI0Mjc4YjhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xuQEAgLTk1MCw2ICYjNDM7OTUwLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYnRfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcbmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXG5AQCAtMjE5MywxMSAmIzQzOzIxOTMsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyY19zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbiBcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xuLVx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4mIzQzO1x0dTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7XG4mIzQzO1x0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcbiBcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXG4gXHRcdHJ0dzg4NTJjX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcbkBAIC0zMzE5LDYgJiM0MzszMzE3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyY19jaGlwX2luZm8gPSB7XG4gI2VuZGlmXG4gXHQueHRhbF9pbmZvXHRcdD0gTlVMTCxcbiBcdC5kZWZhdWx0X3F1aXJrc1x0XHQ9IDAsXG4mIzQzO1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJjX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXG5pbmRleCAyNGMzOTBiNmYzZDM0NC4uYjcyZmVlMzc3ZTljMGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuY1xuQEAgLTU3MTUzLDcgJiM0Mzs1NzE1Myw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmNfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTJjX3R4cHdyX2xtdF9ydV82ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXG4mIzQzO1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MmNfdHhfc2hhcGVfbG10LFxuJiM0MztcdFx0LmxtdF9ydV92MCA9IFx1MDAyNnJ0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSxcbiBcdH0sXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcbmluZGV4IGFkMzYxOGRmZDU3ZDAwLi4zZTg3MDg4MGI1OThlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXG5AQCAtMjUwMiwxNSAmIzQzOzI1MDIsMTAgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmFfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4gXHRcdFx0XHQgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gXHUwMDI2cmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlO1xuJiM0MztcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbiBcdHU4IHR4X3NoYXBlX2lkeDtcbi1cdHU4IGJhbmQsIHJlZ2Q7XG4tXG4tXHRiYW5kID0gY2hhbi1cdTAwM2ViYW5kX3R5cGU7XG4tXHRyZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcbi1cdHR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtXHUwMDNlbG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTtcbiBcbiYjNDM7XHR0eF9zaGFwZV9pZHggPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XG4gXHRpZiAodHhfc2hhcGVfaWR4ID09IDApXG4gXHRcdHJ0dzg5MjJhX2JiX3R4X3RyaWFuZ3VsYXIocnR3ZGV2LCBmYWxzZSwgcGh5X2lkeCk7XG4gXHRlbHNlXG5AQCAtMzMwMiw2ICYjNDM7MzI5Nyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmFfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4OTIyYV9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xuaW5kZXggODM4YzI2MjMxODk3ZDYuLmNjMTI3YTNlODZlZjg4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcbkBAIC0xMTM2LDggJiM0MzsxMTM2LDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHR1MzIgc3ViX2NhcnIgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhfU1VCX0JBTkRfVkFMVUUsIG1hY19pZHgpO1xuIFx0dTMyIGNoa19yYXRlID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX1RYUkFURV9DSEssIG1hY19pZHgpO1xuIFx0dTMyIHJmX21vZCA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9XTUFDX1JGTU9ELCBtYWNfaWR4KTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHR1OCB0eHNiMjAgPSAwLCB0eHNiNDAgPSAwLCB0eHNiODAgPSAwO1xuIFx0dTggcmZfbW9kX3ZhbCwgY2hrX3JhdGVfbWFzaywgc2lmcztcbiYjNDM7XHR1MTYgdHhfdGltZSA9IEFNUERVX01BWF9USU1FX1YxO1xuIFx0dTMyIHR4c2I7XG4gXHR1MzIgcmVnO1xuIFxuQEAgLTEyMTgsNiAmIzQzOzEyMjAsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X2NoYW5uZWxfbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcbiBcdHJlZyA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9NVUVEQ0FfRU4sIG1hY19pZHgpO1xuIFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBCX0JFX1NJRlNfTUFDVFhFTl9UQl9UMV9ET1QwNVVTX01BU0ssIHNpZnMpO1xuJiM0MztcbiYjNDM7XHRpZiAoY2hhbi1cdTAwM2ViYW5kX3R5cGUgPT0gUlRXODlfQkFORF8yRyBcdTAwMjZcdTAwMjYgY2hpcC1cdTAwM2V0eHRpbWVfbGltaXRfMmdoeilcbiYjNDM7XHRcdHR4X3RpbWUgPSBtaW5fdCh1MzIsIHR4X3RpbWUsIGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHogKiAxMDAwIFx1MDAzZVx1MDAzZSAxNSk7XG4mIzQzO1xuJiM0MztcdHJlZyA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9BTVBEVV9BR0dfTElNSVQsIG1hY19pZHgpO1xuJiM0MztcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgQl9CRV9BTVBEVV9NQVhfVElNRV9NQVNLLCB0eF90aW1lKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9zY29fYmFya2VyX3RocmVzaG9sZFsxNF0gPSB7XG5AQCAtMjczOSwxNiAmIzQzOzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSAqZCA9IHJ0d2Rldi1cdTAwM2VwaHlfaW5mby5iYl93cmFwX2RhdGE7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFx1MDAyNnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZTtcbiYjNDM7XHR1OCBiYW5kID0gY2hhbi1cdTAwM2ViYW5kX3R5cGU7XG4gXHR1OCB0eF9zaGFwZV9pZHg7XG4tXHR1OCBiYW5kLCByZWdkO1xuIFx0Y29uc3QgdTE2ICp0aDtcbiBcbi1cdGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dHhfc2hhcGVfaWR4ID0gKCp0eF9zaGFwZS1cdTAwM2VsbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xuLVxuJiM0MztcdHR4X3NoYXBlX2lkeCA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcdGlmICh0eF9zaGFwZV9pZHggPT0gMClcbiBcdFx0Z290byBkaXNhYmxlO1xuIFxuQEAgLTM0MzcsNiAmIzQzOzM0NDAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJkX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gQklUKFJUVzg5X1FVSVJLX1RIRVJNQUxfUFJPVF8xMjBDKSxcbiYjNDM7XHQudHh0aW1lX2xpbWl0XzJnaHpcdD0gNDYwOCxcbiB9O1xuIEVYUE9SVF9TWU1CT0wocnR3ODkyMmRfY2hpcF9pbmZvKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyIChSZWFsdGVrIDgwMi4xMWF4L2JlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGNvbXBsZXggZmlybXdhcmUgZW11bGF0aW9uICh3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyKSB0byBwYXNzIHRoZSBpbml0aWFsIHByb2JlIGFuZCByZWFjaCB0aGUgY29yZSBsb2dpYyAoTUFDL1BIWSBpbml0aWFsaXphdGlvbiwgUkYgY2FsaWJyYXRpb24sIGV0Yy4pLiBUaGVyZWZvcmUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzE5OGNhMzQxYWFjMGRjZmEwZWE1YTFiMjc5ZTNjMDFhOWRlMTNlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDEyOjI2OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwppbmRleCA2OGRhZDYwOTBmODdlMi4uOWI5NmI1N2JjMzljZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCkBAIC00ODYsNiAmIzQzOzQ4NiwzNyBAQCB2b2lkIHJ0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCV9fcnR3ODlfY29yZV9zZXRfY2hpcF90eHB3cihydHdkZXYsIGNvbmYuY2hhbnNbMV0sIFJUVzg5X1BIWV8xKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3JlY29yZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiYjNDM7CQkJCSAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaywKJiM0MzsJCQkJICBib29sIHN0YXJ0KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSAmYW1wO3J0d2Rldi0mZ3Q7cmZrX3dhaXQ7CiYjNDM7CXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaW5mby0mZ3Q7cmVjb3JkX2lkeF07CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiYjNDM7CXU4IHBhdGhfbnVtID0gbWluKGNoaXAtJmd0O3JmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpOwomIzQzOwlpbnQgcGF0aDsKJiM0MzsKJiM0MzsJaWYgKCFzdGFydCkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwlpbmZvLSZndDtyZWNvcmRfcHRyID0gcmVjb3JkOwomIzQzOwlyZWNvcmQtJmd0O3BoeV9pZHggPSBydHd2aWZfbGluay0mZ3Q7cGh5X2lkeDsKJiM0MzsKJiM0MzsJZm9yIChwYXRoID0gMDsgcGF0aCAmbHQ7IHBhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykgewomIzQzOwkJcmVjb3JkLSZndDtjaFtwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9DRkdDSCwKJiM0MzsJCQkJCQkgUlJfQ0ZHQ0hfQkFORDAgfCBSUl9DRkdDSF9DSCk7CiYjNDM7CQlyZWNvcmQtJmd0O2N2W3BhdGhdID0gcnR3ODlfcmVhZF9yZihydHdkZXYsIHBhdGgsIFJSX1ZDTywKJiM0MzsJCQkJCQkgUlJfVkNPX1NFTCB8IFJSX1ZDT19TVFMpOwomIzQzOwkJcmVjb3JkLSZndDtjNVtwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9TWU5GQiwgUkZSRUdfTUFTSyk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuOwomIzQzOwomIzQzO2VuZDoKJiM0MzsJaW5mby0mZ3Q7cmVjb3JkX2lkeCA9IChpbmZvLSZndDtyZWNvcmRfaWR4ICYjNDM7IDEpICUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOwomIzQzOwlpbmZvLSZndDtyZWNvcmRfcHRyID0gTlVMTDsKJiM0Mzt9CiYjNDM7CiB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspCiB7CkBAIC01MDMsOSAmIzQzOzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQlydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpOwogCX0KIAotCWlmIChjaGlwLSZndDtvcHMtJmd0O3Jma19jaGFubmVsKQomIzQzOwlpZiAoY2hpcC0mZ3Q7b3BzLSZndDtyZmtfY2hhbm5lbCkgewomIzQzOwkJcnR3ODlfY29yZV9yZmtfcmVjb3JkKHJ0d2RldiwgcnR3dmlmX2xpbmssIHRydWUpOwomIzQzOwogCQljaGlwLSZndDtvcHMtJmd0O3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspOwogCiYjNDM7CQlydHc4OV9jb3JlX3Jma19yZWNvcmQocnR3ZGV2LCBydHd2aWZfbGluaywgZmFsc2UpOwomIzQzOwl9CiYjNDM7CiAJaWYgKHByZWhkbF9saW5rKSB7CiAJCXJ0dzg5X2VudGl0eV9mb3JjZV9odyhydHdkZXYsIFJUVzg5X1BIWV9OVU0pOwogCQlydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpOwpAQCAtNTI2NSw2ICYjNDM7NTMwMSwzNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9lbnRlcl9scHNfdHJhY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCX0KIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3Rzc2lfcmVjb3JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiYjNDM7CXU4IHBhdGhfbnVtID0gbWluKGNoaXAtJmd0O3JmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpOwomIzQzOwlzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9ICZhbXA7cnR3ZGV2LSZndDtyZmtfd2FpdDsKJiM0MzsJaW50IGkgPSBpbmZvLSZndDtyZWNvcmRfdHNzaV9pZHg7CiYjNDM7CXUzMiBiYXNlOwomIzQzOwl1MzIgbWFzazsKJiM0MzsJaW50IHBhdGg7CiYjNDM7CiYjNDM7CWlmIChjaGlwLSZndDtjaGlwX2dlbiA9PSBSVFc4OV9DSElQX0FYKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpbmZvLSZndDtyZWNvcmRfdHNzaV9pZHggPSAoaW5mby0mZ3Q7cmVjb3JkX3Rzc2lfaWR4ICYjNDM7IDEpICUKJiM0MzsJCQkJUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOwomIzQzOwomIzQzOwlpZiAoY2hpcC0mZ3Q7Y2hpcF9pZCA9PSBSVEw4OTIyQSkgewomIzQzOwkJYmFzZSA9IDB4MmVlMTA7CiYjNDM7CQltYXNrID0gMHg3ZmMwMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWJhc2UgPSAweDJmOTE4OwomIzQzOwkJbWFzayA9IDB4MDAwMDAxZmY7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChwYXRoID0gMDsgcGF0aCAmbHQ7IHBhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykgewomIzQzOwkJdTMyIGFkZHIgPSBiYXNlICYjNDM7IDB4MTAwICogcGF0aDsKJiM0MzsKJiM0MzsJCWluZm8tJmd0O3Rzc2lfY29kZVtpXVtwYXRoXSA9IHJ0dzg5X3JlYWQzMl9tYXNrKHJ0d2RldiwgYWRkciwgbWFzayk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CiAJZW51bSBydHc4OV9lbnRpdHlfbW9kZSBtb2RlOwpAQCAtNTI3NCw2ICYjNDM7NTM0MSw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJcmV0dXJuOwogCiAJcnR3ODlfY2hpcF9yZmtfdHJhY2socnR3ZGV2KTsKJiM0MzsKJiM0MzsJcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQocnR3ZGV2KTsKIH0KIAogdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9wMnBfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LApAQCAtNzE4MCw5ICYjNDM7NzI0OSwxOSBAQCBpbnQgcnR3ODlfY29yZV9tbHNyX3N3aXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZiwKIHN0YXRpYyBpbnQgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgKm1hYyA9IHJ0d2Rldi0mZ3Q7Y2hpcC0mZ3Q7bWFjX2RlZjsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKJiM0MzsJYm9vbCBiYl9wcmVpbml0ID0gZmFsc2U7CiAJaW50IHJldDsKIAotCXJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBmYWxzZSk7CiYjNDM7CS8qCiYjNDM7CSAqIE5vcm1hbGx5IGluIHByb2JlIHN0YWdlLCB3ZSBkb24mIzM5O3QgbmVlZCB0byBkbyBCQiBwcmUtaW5pdGlhbGl6YXRpb24uCiYjNDM7CSAqIEhvd2V2ZXIsIFJUTDg5MjJEIGZpcm13YXJlIGNhbiBhY2Nlc3MgQkIgcmVnaXN0ZXJzIGF0IGZpcm13YXJlCiYjNDM7CSAqIGluaXRpYWwgc3RhdGUsIHNvIGluaXRpYWxpemUgaXQgdG8gYXZvaWQgQkIgSU8gc3R1Y2sgaW4gZmlybXdhcmUuCiYjNDM7CSAqLwomIzQzOwlpZiAoY2hpcC0mZ3Q7Y2hpcF9pZCA9PSBSVEw4OTIyRCkKJiM0MzsJCWJiX3ByZWluaXQgPSB0cnVlOwomIzQzOwomIzQzOwlyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgZmFsc2UsIGJiX3ByZWluaXQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgKaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjJlYWNiNWZlOTdmMjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaApAQCAtNDI5NCw4ICYjNDM7NDI5NCwxMiBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfcnVsZV82Z2h6IHsKIH07CiAKIHN0cnVjdCBydHc4OV90eF9zaGFwZSB7Ci0JY29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTsKLQljb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXTsKJiM0MzsJY29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXQomIzQzOwkJICAgICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdOwomIzQzOwljb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdOwomIzQzOwomIzQzOwljb25zdCB1OCAoKmxtdF92MClbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dOwomIzQzOwljb25zdCB1OCAoKmxtdF9ydV92MClbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXTsKIH07CiAKIHN0cnVjdCBydHc4OV9yZmVfcGFybXMgewpAQCAtNDM4OSwxMiAmIzQzOzQzOTMsMTMgQEAgc3RydWN0IHJ0dzg5X3R4cHdyX2xtdF9ydV82Z2h6X2RhdGEgewogCiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X2RhdGEgewogCXN0cnVjdCBydHc4OV90eHB3cl9jb25mIGNvbmY7Ci0JdTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV07CiYjNDM7CXU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dCiYjNDM7CSAgICBbTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSXTsKIH07CiAKIHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfcnVfZGF0YSB7CiAJc3RydWN0IHJ0dzg5X3R4cHdyX2NvbmYgY29uZjsKLQl1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07CiYjNDM7CXU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdOwogfTsKIAogc3RydWN0IHJ0dzg5X3JmZV9kYXRhIHsKQEAgLTQ3OTAsNiAmIzQzOzQ3OTUsNyBAQCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHsKIAljb25zdCBzdHJ1Y3Qgd2lwaHlfd293bGFuX3N1cHBvcnQgKndvd2xhbl9zdHViOwogCWNvbnN0IHN0cnVjdCBydHc4OV94dGFsX2luZm8gKnh0YWxfaW5mbzsKIAl1bnNpZ25lZCBsb25nIGRlZmF1bHRfcXVpcmtzOyAvKiBiaXRtYXAgb2YgcnR3ODlfcXVpcmtzICovCiYjNDM7CXUxNiB0eHRpbWVfbGltaXRfMmdoejsKIH07CiAKIHN0cnVjdCBydHc4OV9jaGlwX3ZhcmlhbnQgewpAQCAtNTQ4NCwxMSAmIzQzOzU0OTAsNDMgQEAgZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHsKIAlSVFc4OV9SRktfU1RBVEVfSDJDX0NNRF9FUlIgPSAweDQsCiB9OwogCiYjNDM7ZW51bSBydHc4OV9yZmtfcmVwb3J0X3R5cGVzIHsKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9QUkVfTlRGWSwKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9UU1NJLAomIzQzOwlSVFc4OV9SRktfUkVQT1JUX0lRSywKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9EUEssCiYjNDM7CVJUVzg5X1JGS19SRVBPUlRfVFhHQVBLLAomIzQzOwlSVFc4OV9SRktfUkVQT1JUX0RBQ0ssCiYjNDM7CVJUVzg5X1JGS19SRVBPUlRfUlhfRENLLAomIzQzOwlSVFc4OV9SRktfUkVQT1JUX1RYX0lRSywKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9DSU0zaywKJiM0MzsKJiM0MzsJTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVMsCiYjNDM7fTsKJiM0MzsKJiM0MzsjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUiAyCiYjNDM7I2RlZmluZSBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlIgMTAKJiM0MzsKJiM0MztzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCB7CiYjNDM7CXUzMiBjaFtSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdOwomIzQzOwl1MzIgY3ZbUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTsKJiM0MzsJdTMyIGM1W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07CiYjNDM7CWVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4OwomIzQzOwllbnVtIHJ0dzg5X3Jma19yZXBvcnRfc3RhdGUgc3RhdGVzW05VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTXTsKJiM0Mzt9OwomIzQzOwogc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gewogCXN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247CiAJa3RpbWVfdCBzdGFydF90aW1lOwogCWVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSBzdGF0ZTsKIAl1OCB2ZXJzaW9uOwomIzQzOwomIzQzOwlpbnQgcmVjb3JkX2lkeDsKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZF9wdHI7CiYjNDM7CXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkIHJlY29yZHNbUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SXTsKJiM0MzsKJiM0MzsJaW50IHJlY29yZF90c3NpX2lkeDsKJiM0MzsJdTMyIHRzc2lfY29kZVtSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlJdW1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07CiB9OwogCiAjZGVmaW5lIFJUVzg5X0RBQ0tfUEFUSF9OUiAyCkBAIC03NTY5LDggJiM0Mzs3NjA3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jaGlwX2JiX3NldGh3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LSZndDtjaGlwOwogCiYjNDM7CXJ0dzg5X2lvX3BhY2socnR3ZGV2KTsKJiM0MzsKIAlpZiAoY2hpcC0mZ3Q7b3BzLSZndDtiYl9zZXRodykKIAkJY2hpcC0mZ3Q7b3BzLSZndDtiYl9zZXRodyhydHdkZXYpOwomIzQzOwomIzQzOwlydHc4OV9pb191bnBhY2socnR3ZGV2KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2NoaXBfcmZrX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQpAQCAtNzc4Nyw2ICYjNDM7NzgyOSwzMCBAQCBzdGF0aWMgaW5saW5lIHU4IHJ0dzg5X3JlZ2RfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZCkKIAlyZXR1cm4gdHhwd3JfcmVnZDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdTggcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJhbmQsCiYjNDM7CQkJCQllbnVtIHJ0dzg5X3JhdGVfc2VjdGlvbiBycykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydHc4OV9yZWd1bGF0b3J5X2luZm8gKnJlZ3VsYXRvcnkgPSAmYW1wO3J0d2Rldi0mZ3Q7cmVndWxhdG9yeTsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LSZndDtyZmVfcGFybXM7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSAmYW1wO3JmZV9wYXJtcy0mZ3Q7dHhfc2hhcGU7CiYjNDM7CXU4IHJlZzZfcHdyID0gcmVndWxhdG9yeS0mZ3Q7cmVnXzZnaHpfcG93ZXI7CiYjNDM7CXU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkocnMgJmd0Oz0gUlRXODlfUlNfVFhfU0hBUEVfTlVNKSkKJiM0MzsJCXJzID0gUlRXODlfUlNfT0ZETTsKJiM0MzsKJiM0MzsJaWYgKCF0eF9zaGFwZS0mZ3Q7bG10KQomIzQzOwkJZ290byB2MDsKJiM0MzsKJiM0MzsJaWYgKGJhbmQgIT0gUlRXODlfQkFORF82RykKJiM0MzsJCXJlZzZfcHdyID0gUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVDsKJiM0MzsKJiM0MzsJcmV0dXJuICgqdHhfc2hhcGUtJmd0O2xtdClbYmFuZF1bcnNdW3JlZ2RdW3JlZzZfcHdyXTsKJiM0MzsKJiM0Mzt2MDoKJiM0MzsJcmV0dXJuICgqdHhfc2hhcGUtJmd0O2xtdF92MClbYmFuZF1bcnNdW3JlZ2RdOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jdHJsX2J0Z19idF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4sCiAJCQkJCWVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jCmluZGV4IDhmNWFmODczZTA5ZjVlLi5jODEzOGM0MTE2YzIxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuYwpAQCAtOTMsNiAmIzQzOzkzLDcgQEAgc3RydWN0IHJ0dzg5X2RlYnVnZnMgewogCXN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgYmVhY29uX2luZm87CiAJc3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYzsKIAlzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGRpYWdfYmI7CiYjNDM7CXN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19yZjsKIAlzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IG1vbml0b3Jfb3B0czsKIH07CiAKQEAgLTUzOTYsNiAmIzQzOzUzOTcsMTE4IEBAIHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19iYl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCXJldHVybiBwIC0gYnVmOwogfQogCiYjNDM7c3RhdGljIHNzaXplX3QKJiM0MztydHc4OV9kZWJ1Z19wcml2X2RpYWdfcmZfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKJiM0MzsJCQkgICAgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdiwKJiM0MzsJCQkgICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSAmYW1wO3J0d2Rldi0mZ3Q7cmZrX3dhaXQ7CiYjNDM7CWNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7CiYjNDM7CWludCBpLCBqOwomIzQzOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtSRksgKG5leHQgaW5kZXg6ICVkKVxuJiMzNDssIGluZm8tJmd0O3JlY29yZF9pZHgpOwomIzQzOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDsgIFBIWS1YICAgID0mIzM0Oyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkID0gJmFtcDtpbmZvLSZndDtyZWNvcmRzW2ldOwomIzQzOwomIzQzOwkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICU0ZCAmIzM0OywgcmVjb3JkLSZndDtwaHlfaWR4KTsKJiM0MzsJfQomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJZm9yIChqID0gMDsgaiAmbHQ7IFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUjsgaiYjNDM7JiM0MzspIHsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgUyVkLUNIICAgID0mIzM0Oywgaik7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaV07CiYjNDM7CiYjNDM7CQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICUwNXgmIzM0OywgcmVjb3JkLSZndDtjaFtqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgUyVkLUNWICAgID0mIzM0Oywgaik7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaV07CiYjNDM7CiYjNDM7CQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICUwNXgmIzM0OywgcmVjb3JkLSZndDtjdltqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgUyVkLUM1ICAgID0mIzM0Oywgaik7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaV07CiYjNDM7CiYjNDM7CQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICUwNXgmIzM0OywgcmVjb3JkLSZndDtjNVtqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJfQomIzQzOwomIzQzOwlmb3IgKGogPSAwOyBqICZsdDsgTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVM7IGomIzQzOyYjNDM7KSB7CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDsgICUtOHMgPSYjMzQ7LCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW2pdKTsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJc3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9ICZhbXA7aW5mby0mZ3Q7cmVjb3Jkc1tpXTsKJiM0MzsKJiM0MzsJCQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDsgJTRkICYjMzQ7LCByZWNvcmQtJmd0O3N0YXRlc1tqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJfQomIzQzOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtUU1NJLXRyYWNrIChuZXh0IGluZGV4OiAlZClcbiYjMzQ7LCBpbmZvLSZndDtyZWNvcmRfdHNzaV9pZHgpOwomIzQzOwomIzQzOwlmb3IgKGogPSAwOyBqICZsdDsgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqJiM0MzsmIzQzOykgewomIzQzOwkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICBTJWQgICAgICAgPSYjMzQ7LCBqKTsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgICUwM3gmIzM0OywgaW5mby0mZ3Q7dHNzaV9jb2RlW2ldW2pdKTsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0O1xuJiMzNDspOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBwIC0gYnVmOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydHc4OV9lbnRpdHlfbWdudCAqbWdudCA9ICZhbXA7cnR3ZGV2LSZndDtoYWwuZW50aXR5X21nbnQ7CiYjNDM7CXN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7CiYjNDM7CXN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjsKJiM0MzsJdW5zaWduZWQgaW50IGxpbmtfaWQ7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkocnR3dmlmLCAmYW1wO21nbnQtJmd0O2FjdGl2ZV9saXN0LCBtZ250X2VudHJ5KQomIzQzOwkJcnR3ODlfdmlmX2Zvcl9lYWNoX2xpbmsocnR3dmlmLCBydHd2aWZfbGluaywgbGlua19pZCkKJiM0MzsJCQlydHc4OV9jaGlwX3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspOwomIzQzO30KJiM0MzsKJiM0MztlbnVtIHJ0dzg5X2RiZ19kaWFnX3JmX3R5cGUgewomIzQzOwlSVFc4OV9EQkdfRElBR19SRl9SU1ZEID0gMCwKJiM0MzsJUlRXODlfREJHX0RJQUdfUkZfUkZLID0gMSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7cnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiYjNDM7CQkJICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsCiYjNDM7CQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKJiM0Mzt7CiYjNDM7CXU4IHR5cGU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGtzdHJ0b3U4KGJ1ZiwgMCwgJmFtcDt0eXBlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlpZiAocnR3ZGV2LSZndDtzY2FubmluZykKJiM0MzsJCXJ0dzg5X2h3X3NjYW5fYWJvcnQocnR3ZGV2LCBydHdkZXYtJmd0O3NjYW5faW5mby5zY2FubmluZ192aWYpOwomIzQzOwomIzQzOwlydHc4OV9sZWF2ZV9wc19tb2RlKHJ0d2Rldik7CiYjNDM7CiYjNDM7CXN3aXRjaCAodHlwZSkgewomIzQzOwljYXNlIFJUVzg5X0RCR19ESUFHX1JGX1JGSzoKJiM0MzsJCXJ0dzg5X2RiZ19kaWFnX3JmX3NldF9yZmsocnR3ZGV2KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBjb3VudDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3NpemVfdAogcnR3ODlfZGVidWdfcHJpdl9tb25pdG9yX29wdHNfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdiwKQEAgLTU1MDgsNiAmIzQzOzU2MjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RlYnVnZnMgcnR3ODlfZGVidWdmc190ZW1wbCA9IHsKIAkuYmVhY29uX2luZm8gPSBydHc4OV9kZWJ1Z19wcml2X2dldChiZWFjb25faW5mbyksCiAJLmRpYWdfbWFjID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19tYWMsIFJTSVpFXzE2SywgUkxPQ0spLAogCS5kaWFnX2JiID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19iYiwgUlNJWkVfOEssIFJMT0NLKSwKJiM0MzsJLmRpYWdfcmYgPSBydHc4OV9kZWJ1Z19wcml2X3NldF9hbmRfZ2V0KGRpYWdfcmYsIFJXTE9DSyksCiAJLm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLAogfTsKIApAQCAtNTU2NSw2ICYjNDM7NTY3OSw3IEBAIHZvaWQgcnR3ODlfZGVidWdmc19hZGRfc2VjMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdG9wCiAJcnR3ODlfZGVidWdmc19hZGRfcihiZWFjb25faW5mbyk7CiAJcnR3ODlfZGVidWdmc19hZGRfcihkaWFnX21hYyk7CiAJcnR3ODlfZGVidWdmc19hZGRfcihkaWFnX2JiKTsKJiM0MzsJcnR3ODlfZGVidWdmc19hZGRfcncoZGlhZ19yZik7CiAJcnR3ODlfZGVidWdmc19hZGRfcncobW9uaXRvcl9vcHRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4wMGZlNDgwODkwNzFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwpAQCAtMTkxNCwxMyAmIzQzOzE5MTQsMTQgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfcHJvZ19jbnRfZHVtcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAKIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2RsX2ZhaWxfZHVtcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LSZndDtjaGlwLSZndDttYWNfZGVmOwogCXUzMiB2YWwzMjsKIAogCXZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9XQ1BVX0ZXX0NUUkwpOwogCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1md2RsIDB4MUUwID0gMHgleFxuJiMzNDssIHZhbDMyKTsKIAotCXZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CT09UX0RCRyk7Ci0JcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWZ3ZGwgMHg4M0YwID0gMHgleFxuJiMzNDssIHZhbDMyKTsKJiM0MzsJdmFsMzIgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBtYWMtJmd0O2Jvb3RfZGJnKTsKJiM0MzsJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWZ3ZGwgMHgleCA9IDB4JXhcbiYjMzQ7LCBtYWMtJmd0O2Jvb3RfZGJnLCB2YWwzMik7CiAKIAlydHc4OV9md19wcm9nX2NudF9kdW1wKHJ0d2Rldik7CiB9CkBAIC0xMTMyNSw2ICYjNDM7MTEzMjYsMTIgQEAgZndfdHhfc2hhcGVfbG10X2VudHJ5X3ZhbGlkKGNvbnN0IHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfZW50cnkgKmUsCiAJaWYgKGUtJmd0O3JlZ2QgJmd0Oz0gUlRXODlfUkVHRF9OVU0pCiAJCXJldHVybiBmYWxzZTsKIAomIzQzOwkvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqLwomIzQzOwlzdGF0aWNfYXNzZXJ0KFJUVzg5X1JFR182R0haX1BPV0VSX0RGTFQgPT0gMCk7CiYjNDM7CiYjNDM7CWlmIChlLSZndDtyZWc2X3B3ciAmZ3Q7PSBOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVIpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMzM5LDcgJiM0MzsxMTM0Niw3IEBAIHZvaWQgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXQoc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhICpkYXRhKQogCQlpZiAoIWZ3X3R4X3NoYXBlX2xtdF9lbnRyeV92YWxpZCgmYW1wO2VudHJ5LCBjdXJzb3IsIGNvbmYpKQogCQkJY29udGludWU7CiAKLQkJZGF0YS0mZ3Q7dltlbnRyeS5iYW5kXVtlbnRyeS50eF9zaGFwZV9yc11bZW50cnkucmVnZF0gPSBlbnRyeS52OwomIzQzOwkJZGF0YS0mZ3Q7dltlbnRyeS5iYW5kXVtlbnRyeS50eF9zaGFwZV9yc11bZW50cnkucmVnZF1bZW50cnkucmVnNl9wd3JdID0gZW50cnkudjsKIAl9CiB9CiAKQEAgLTExMzU2LDYgJiM0MzsxMTM2MywxMiBAQCBmd190eF9zaGFwZV9sbXRfcnVfZW50cnlfdmFsaWQoY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSAqZSwKIAlpZiAoZS0mZ3Q7cmVnZCAmZ3Q7PSBSVFc4OV9SRUdEX05VTSkKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CS8qIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdvcmsgd2l0aCAyLzUgR0h6ICovCiYjNDM7CXN0YXRpY19hc3NlcnQoUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVCA9PSAwKTsKJiM0MzsKJiM0MzsJaWYgKGUtJmd0O3JlZzZfcHdyICZndDs9IE5VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKIAlyZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTEzNzAsNyAmIzQzOzExMzgzLDcgQEAgdm9pZCBydHc4OV9md19sb2FkX3R4X3NoYXBlX2xtdF9ydShzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X3J1X2RhdGEgKmRhdGEpCiAJCWlmICghZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5X3ZhbGlkKCZhbXA7ZW50cnksIGN1cnNvciwgY29uZikpCiAJCQljb250aW51ZTsKIAotCQlkYXRhLSZndDt2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdID0gZW50cnkudjsKJiM0MzsJCWRhdGEtJmd0O3ZbZW50cnkuYmFuZF1bZW50cnkucmVnZF1bZW50cnkucmVnNl9wd3JdID0gZW50cnkudjsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaAppbmRleCAyMDcyMWQ1MjA5YWEzYS4uZTc2Y2VhMGI5ZDQzMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKQEAgLTU4MTQsNiAmIzQzOzU4MTQsNyBAQCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5IHsKIAl1OCB0eF9zaGFwZV9yczsKIAl1OCByZWdkOwogCXU4IHY7CiYjNDM7CXU4IHJlZzZfcHdyOwogfSBfX3BhY2tlZDsKIAogLyogbXVzdCBjb25zaWRlciBjb21wYXRpYmlsaXR5OyBkb24mIzM5O3QgaW5zZXJ0IG5ldyBpbiB0aGUgbWlkICovCkBAIC01ODIxLDYgJiM0Mzs1ODIyLDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSB7CiAJdTggYmFuZDsKIAl1OCByZWdkOwogCXU4IHY7CiYjNDM7CXU4IHJlZzZfcHdyOwogfSBfX3BhY2tlZDsKIAogY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYwppbmRleCA4YzM5NTUxN2JkMmZlMS4uZTIwNDkzNDFjNDE1NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYwpAQCAtNDMwNCwxMyAmIzQzOzQzMDQsMTQgQEAgaW50IHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfbWFjX2Rpc2FibGVfYmJfcmYpOwogCi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYikKJiM0MztpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYiwKJiM0MzsJCQkgICBib29sIGJiX3ByZWluaXQpCiB7CiAJaW50IHJldDsKIAogCXJ0dzg5X21hY19jdHJsX2hjaV9kbWFfdHJ4KHJ0d2RldiwgdHJ1ZSk7CiAKLQlpZiAoaW5jbHVkZV9iYikgewomIzQzOwlpZiAoaW5jbHVkZV9iYiB8fCBiYl9wcmVpbml0KSB7CiAJCS8qIE9ubHkgY2FsbCBCQiBwcmVpbml0IGluY2x1ZGluZyBjb25maWd1cmF0aW9uIG9mIEJCIE1DVSBmb3IKIAkJICogdGhlIGNoaXBzIHdoaWNoIG5lZWQgdG8gZG93bmxvYWQgQkIgTUNVIGZpcm13YXJlLiBPdGhlcndpc2UsCiAJCSAqIGNhbGxpbmcgcHJlaW5pdCBsYXRlciB0byBwcmV2ZW50IHRvdWNoaW5nIHJlZ2lzdGVycyBhZmZlY3RpbmcKQEAgLTQzNjMsNyAmIzQzOzQzNjQsNyBAQCBpbnQgcnR3ODlfbWFjX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCWJvb2wgaW5jbHVkZV9iYiA9ICEhY2hpcC0mZ3Q7YmJtY3VfbnI7CiAJaW50IHJldDsKIAotCXJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiKTsKJiM0MzsJcmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGluY2x1ZGVfYmIsIGluY2x1ZGVfYmIpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIApAQCAtNzA0MywxMSAmIzQzOzcwNDQsMjMgQEAgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfc3RhX2xpbmsgKnJ0d3N0YV8KIHsKICNkZWZpbmUgTUFDX0FYX0RGTFRfVFhfVElNRSA1MjgwCiAJY29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtJmd0O2NoaXAtJmd0O21hY19kZWY7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiAJdTggbWFjX2lkeCA9IHJ0d3N0YV9saW5rLSZndDtydHd2aWZfbGluay0mZ3Q7bWFjX2lkeDsKIAl1MzIgbWF4X3R4X3RpbWUgPSB0eF90aW1lID09IDAgPyBNQUNfQVhfREZMVF9UWF9USU1FIDogdHhfdGltZTsKJiM0MzsJc3RydWN0IHJ0dzg5X2VudGl0eV9jb25mIGNvbmY7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuOwogCXUzMiByZWc7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJaWYgKGNoaXAtJmd0O3R4dGltZV9saW1pdF8yZ2h6KSB7CiYjNDM7CQlydHc4OV9lbnRpdHlfZ2V0X2NvbmYocnR3ZGV2LCAmYW1wO2NvbmYpOwomIzQzOwkJY2hhbiA9IGNvbmYuY2hhbnNbbWFjX2lkeF07CiYjNDM7CiYjNDM7CQlpZiAoY2hhbi0mZ3Q7YmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcpCiYjNDM7CQkJbWF4X3R4X3RpbWUgPSBtaW5fdCh1MzIsIG1heF90eF90aW1lLAomIzQzOwkJCQkJICAgIGNoaXAtJmd0O3R4dGltZV9saW1pdF8yZ2h6KTsKJiM0MzsJfQomIzQzOwogCWlmIChydHdzdGFfbGluay0mZ3Q7Y2N0bF90eF90aW1lKSB7CiAJCXJ0d3N0YV9saW5rLSZndDthbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgJmd0OyZndDsgOTsKIAkJcmV0ID0gcnR3ODlfY2hpcF9oMmNfdHh0aW1lX2NtYWNfdGJsKHJ0d2RldiwgcnR3c3RhX2xpbmspOwpAQCAtNzA1OCw5ICYjNDM7NzA3MSwxMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhXwogCQkJcmV0dXJuIHJldDsKIAkJfQogCiYjNDM7CQlpZiAoY2hpcC0mZ3Q7Y2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWCkKJiM0MzsJCQltYXhfdHhfdGltZSAmZ3Q7Jmd0Oz0gNTsKJiM0MzsJCWVsc2UKJiM0MzsJCQltYXhfdHhfdGltZSA9IG1heF90eF90aW1lICogMTAwMCAmZ3Q7Jmd0OyAxNTsKJiM0MzsKIAkJcmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBtYWMtJmd0O2FnZ19saW1pdC5hZGRyLCBtYWNfaWR4KTsKLQkJcnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtJmd0O2FnZ19saW1pdC5tYXNrLAotCQkJCSAgIG1heF90eF90aW1lICZndDsmZ3Q7IDUpOwomIzQzOwkJcnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtJmd0O2FnZ19saW1pdC5tYXNrLCBtYXhfdHhfdGltZSk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTc0MzgsNiAmIzQzOzc0NTUsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9heCA9IHsKIAkuYWdnX2xlbl9odCA9IFJfQVhfQUdHX0xFTl9IVF8wLAogCS5wc19zdGF0dXMgPSBSX0FYX1BQV1JCSVRfU0VUVElORywKIAkubXVfZ2lkID0gJmFtcDtydHc4OV9tYWNfbXVfZ2lkX2FkZHJfYXgsCiYjNDM7CS5ib290X2RiZyA9IFJfQVhfQk9PVF9EQkcsCiAKIAkubXVlZGNhX2N0cmwgPSB7CiAJCS5hZGRyID0gUl9BWF9NVUVEQ0FfRU4sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaAppbmRleCA1MzkwNjFmYzE1ZTg1Yi4uOTQ2NzhhMjYyZTE2NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaApAQCAtMTA2Nyw2ICYjNDM7MTA2Nyw3IEBAIHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiB7CiAJdTMyIGFnZ19sZW5faHQ7CiAJdTMyIHBzX3N0YXR1czsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX211X2dpZF9hZGRyICptdV9naWQ7CiYjNDM7CXUzMiBib290X2RiZzsKIAogCXN0cnVjdCBydHc4OV9yZWdfZGVmIG11ZWRjYV9jdHJsOwogCXN0cnVjdCBydHc4OV9yZWdfZGVmIGJmZWVfY3RybDsKQEAgLTEyOTgsNyAmIzQzOzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbAogCiBpbnQgcnR3ODlfbWFjX3B3cl9vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpOwogdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpOwotaW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIpOwomIzQzO2ludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLAomIzQzOwkJCSAgIGJvb2wgYmJfcHJlaW5pdCk7CiBpbnQgcnR3ODlfbWFjX3ByZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTsKIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpOwogaW50IHJ0dzg5X21hY19kbGVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfcXRhX21vZGUgbW9kZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jCmluZGV4IGYyNGMxMTliOTlmMWJkLi4yNDIwMDZjZWZjM2UxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jCkBAIC0zMjQyLDYgJiM0MzszMjQyLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYmUgPSB7CiAJLmFnZ19sZW5faHQgPSBSX0JFX0FHR19MRU5fSFRfMCwKIAkucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsCiAJLm11X2dpZCA9ICZhbXA7cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLAomIzQzOwkuYm9vdF9kYmcgPSBSX0JFX0JPT1RfREJHLAogCiAJLm11ZWRjYV9jdHJsID0gewogCQkuYWRkciA9IFJfQkVfTVVFRENBX0VOLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMKaW5kZXggNzU5YmU0ZGFiNDJiMWMuLjZkZWUzOWY1M2RmMGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMKQEAgLTM5NjgsNiAmIzQzOzM5NjgsMjMgQEAgdm9pZCAoKiBjb25zdCBydHc4OV9waHlfYzJoX3Jma19sb2dfaGFuZGxlcltdKShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJW1JUVzg5X1BIWV9DMkhfUkZLX0xPR19GVU5DX0NJTTNLXSA9IHJ0dzg5X3BoeV9jMmhfcmZrX2xvZ19jaW0zaywKIH07CiAKJiM0MzsjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcCiYjNDM7CVtSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlXSA9ICN0eXBlCiYjNDM7CiYjNDM7Y29uc3QgY2hhciAqIGNvbnN0IHJ0dzg5X3Jma19yZXBvcnRfbmFtZXNbXSA9IHsKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKFBSRV9OVEZZKSwKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKFRTU0kpLAomIzQzOwlOQU1FX1JUVzg5X1JGS19SRVBPUlQoSVFLKSwKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKERQSyksCiYjNDM7CU5BTUVfUlRXODlfUkZLX1JFUE9SVChUWEdBUEspLAomIzQzOwlOQU1FX1JUVzg5X1JGS19SRVBPUlQoREFDSyksCiYjNDM7CU5BTUVfUlRXODlfUkZLX1JFUE9SVChSWF9EQ0spLAomIzQzOwlOQU1FX1JUVzg5X1JGS19SRVBPUlQoVFhfSVFLKSwKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKENJTTNrKSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydHc4OV9yZmtfcmVwb3J0X25hbWVzKSA9PSBOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFUyk7CiYjNDM7CiBzdGF0aWMKIHZvaWQgcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CkBAIC0zOTc5LDggJiM0MzszOTk2LDggQEAgdm9pZCBydHc4OV9waHlfcmZrX3JlcG9ydF9wcmVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIH0KIAogc3RhdGljCi1pbnQgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLAotCQkJICAgICAgdW5zaWduZWQgaW50IG1zKQomIzQzO2ludCBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLAomIzQzOwkJCQkgIHVuc2lnbmVkIGludCBtcykKIHsKIAlzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9ICZhbXA7cnR3ZGV2LSZndDtyZmtfd2FpdDsKIAl1bnNpZ25lZCBsb25nIHRpbWVfbGVmdDsKQEAgLTQwMTcsNiAmIzQzOzQwMzQsMjkgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYwomIzQzO2ludCBfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAomIzQzOwkJCQllbnVtIHJ0dzg5X3Jma19yZXBvcnRfdHlwZXMgcmZrX3R5cGUsCiYjNDM7CQkJCWVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4LAomIzQzOwkJCQljb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbiwKJiM0MzsJCQkJdW5zaWduZWQgaW50IG1zKQomIzQzO3sKJiM0MzsJY29uc3QgY2hhciAqcmZrX25hbWUgPSBydHc4OV9yZmtfcmVwb3J0X25hbWVzW3Jma190eXBlXTsKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKndhaXQgPSAmYW1wO3J0d2Rldi0mZ3Q7cmZrX3dhaXQ7CiYjNDM7CXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSB3YWl0LSZndDtyZWNvcmRfcHRyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIHJma19uYW1lLCBtcyk7CiYjNDM7CiYjNDM7CWlmIChyZWNvcmQpCiYjNDM7CQlyZWNvcmQtJmd0O3N0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LSZndDtzdGF0ZTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgdHlwZSwgcGh5X2lkeCwgY2hhbiwgbXMpIFwKJiM0MzsJX19ydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgUlRXODlfUkZLX1JFUE9SVF8gIyMgdHlwZSwgcGh5X2lkeCwgY2hhbiwgbXMpCiYjNDM7CiBzdGF0aWMgdm9pZAogcnR3ODlfcGh5X2MyaF9yZmtfcmVwb3J0X3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKmMyaCwgdTMyIGxlbikKIHsKQEAgLTQxMjIsNyAmIzQzOzQxNjIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19wcmVfbnRmeV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJaWYgKFJUVzg5X0NIS19GV19GRUFUVVJFX0dST1VQKFdJVEhfUkZLX1BSRV9OT1RJRlksICZhbXA7cnR3ZGV2LSZndDtmdykpIHsKIAkJcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChydHdkZXYpOwogCQlydHc4OV9md19oMmNfcmZfcHJlX250ZnkocnR3ZGV2LCBwaHlfaWR4KTsKLQkJcmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7UFJFX05URlkmIzM0OywgbXMpOwomIzQzOwkJcmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFBSRV9OVEZZLCBwaHlfaWR4LCBOVUxMLCBtcyk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTQxNTIsNyAmIzQzOzQxOTIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCAmIzM0O1RTU0kmIzM0OywgbXMpOwomIzQzOwlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTsKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KTsKIApAQCAtNDE2OSw3ICYjNDM7NDIwOSw3IEBAIGludCBydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgJiMzNDtJUUsmIzM0OywgbXMpOwomIzQzOwlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIElRSywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdCk7CiAKQEAgLTQxODYsNyAmIzQzOzQyMjYsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kcGtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7RFBLJiMzNDssIG1zKTsKJiM0MzsJcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBEUEssIHBoeV9pZHgsIGNoYW4sIG1zKTsKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19kcGtfYW5kX3dhaXQpOwogCkBAIC00MjAzLDcgJiM0Mzs0MjQzLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCAmIzM0O1RYR0FQSyYjMzQ7LCBtcyk7CiYjNDM7CXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7CiB9CiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KTsKIApAQCAtNDIyMCw3ICYjNDM7NDI2MCw3IEBAIGludCBydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7REFDSyYjMzQ7LCBtcyk7CiYjNDM7CXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgREFDSywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQpOwogCkBAIC00MjM3LDcgJiM0Mzs0Mjc3LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7UlhfRENLJiMzNDssIG1zKTsKJiM0MzsJcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSWF9EQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTsKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19yeGRja19hbmRfd2FpdCk7CiAKQEAgLTQyNTQsNyAmIzQzOzQyOTQsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgJiMzNDtUWF9JUUsmIzM0OywgbXMpOwomIzQzOwlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3R4aXFrX2FuZF93YWl0KTsKIApAQCAtNDI3MSw3ICYjNDM7NDMxMSw3IEBAIGludCBydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCAmIzM0O0NJTTNrJiMzNDssIG1zKTsKJiM0MzsJcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBDSU0zaywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmgKaW5kZXggNTMyMjMyODkyODMxZjAuLjI1NTQxNmViYWY5MDA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmgKQEAgLTExNjMsNiAmIzQzOzExNjMsOSBAQCB2b2lkIHJ0dzg5X3BoeV9yYXRlX3BhdHRlcm5fdmlmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIGJvb2wgcnR3ODlfcGh5X2MyaF9jaGtfYXRvbWljKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggY2xhc3MsIHU4IGZ1bmMpOwogdm9pZCBydHc4OV9waHlfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKTsKJiM0MzsKJiM0MztleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHJ0dzg5X3Jma19yZXBvcnRfbmFtZXNbXTsKJiM0MzsKIGludCBydHc4OV9waHlfcmZrX3ByZV9udGZ5X2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsCiAJCQkJICAgIHVuc2lnbmVkIGludCBtcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaAppbmRleCAwODZlZjc3ZWJiOWZjZC4uYWY5MTgxMzY3YjIyNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaApAQCAtODcxOCw2ICYjNDM7ODcxOCw3IEBACiAjZGVmaW5lIFJSX1ZDTyAweGIyCiAjZGVmaW5lIFJSX1ZDT19WQUwgR0VOTUFTSygxOCwgMTQpCiAjZGVmaW5lIFJSX1ZDT19TRUwgR0VOTUFTSyg5LCA4KQomIzQzOyNkZWZpbmUgUlJfVkNPX1NUUyBHRU5NQVNLKDcsIDApCiAjZGVmaW5lIFJSX1ZDSSAweGIzCiAjZGVmaW5lIFJSX1ZDSV9PTiBCSVQoNykKICNkZWZpbmUgUlJfTFBGIDB4YjcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYwppbmRleCA2MGYzNjI1OTM2OTY2Zi4uMDNlMWQxZGY4NmIzMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMKQEAgLTE5MTgsMTEgJiM0MzsxOTE4LDkgQEAgc3RhdGljIHZvaWQgcnR3ODg1MWJfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLAogCQkJCSAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpCiB7Ci0JY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LSZndDtyZmVfcGFybXM7CiAJdTggYmFuZCA9IGNoYW4tJmd0O2JhbmRfdHlwZTsKLQl1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTsKLQl1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy0mZ3Q7dHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdOwotCXU4IHR4X3NoYXBlX29mZG0gPSAoKnJmZV9wYXJtcy0mZ3Q7dHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTsKJiM0MzsJdTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7CiYjNDM7CXU4IHR4X3NoYXBlX29mZG0gPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7CiAKIAlpZiAoYmFuZCA9PSBSVFc4OV9CQU5EXzJHKQogCQlydHc4ODUxYl9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7CkBAIC0yNzc5LDYgJiM0MzsyNzc3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9ICZhbXA7cnR3ODg1MWJfeHRhbF9pbmZvLAogCS5kZWZhdWx0X3F1aXJrcwkJPSAwLAomIzQzOwkudHh0aW1lX2xpbWl0XzJnaHoJPSAwLAogfTsKIEVYUE9SVF9TWU1CT0wocnR3ODg1MWJfY2hpcF9pbmZvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jCmluZGV4IGE5YzMwOWMyNDVjMzM0Li4zYTczMGE4MjY5NDk4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuYwpAQCAtMTQ4ODYsOCAmIzQzOzE0ODg2LDggQEAgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUxYl9kZmx0X3Bhcm1zID0gewogCQkubG10X3J1ID0gJmFtcDtydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWcsCiAJfSwKIAkudHhfc2hhcGUgPSB7Ci0JCS5sbXQgPSAmYW1wO3J0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCwKLQkJLmxtdF9ydSA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LAomIzQzOwkJLmxtdF92MCA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LAomIzQzOwkJLmxtdF9ydV92MCA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LAogCX0sCiB9OwogCkBAIC0xNDkwMiw4ICYjNDM7MTQ5MDIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUxYl9yZmVfcGFybXNfdHlwZTIgPSB7CiAJCS5sbXRfcnUgPSAmYW1wO3J0dzg5Xzg4NTFiX3R4cHdyX2xtdF9ydV81Z190eXBlMiwKIAl9LAogCS50eF9zaGFwZSA9IHsKLQkJLmxtdCA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LAotCQkubG10X3J1ID0gJmFtcDtydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsCiYjNDM7CQkubG10X3YwID0gJmFtcDtydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsCiYjNDM7CQkubG10X3J1X3YwID0gJmFtcDtydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYwppbmRleCAyYzFmMTY2ZTY4N2YwNi4uNjc1NjRlNThkMTIzMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMKQEAgLTI1MTYsNiAmIzQzOzI1MTYsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJhX2NoaXBfaW5mbyA9IHsKICNlbmRpZgogCS54dGFsX2luZm8JCT0gJmFtcDtydHc4ODUyYV94dGFsX2luZm8sCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4ODUyYV9jaGlwX2luZm8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMKaW5kZXggNGU3YjA2OGFhYTc1YjEuLmIwYWMyOWQxYTAxYzc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jCkBAIC0xMTEzLDYgJiM0MzsxMTEzLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYl9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4ODUyYl9jaGlwX2luZm8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYwppbmRleCBkZjVmYmFlNTBmZjU1MC4uYTYxYzY0ZmRmZjRkYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYwpAQCAtMTMyMSwxMSAmIzQzOzEzMjEsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyYnhfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbiwKIAkJCQkgICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCkKIHsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtJmd0O3JmZV9wYXJtczsKIAl1OCBiYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXU4IHR4X3NoYXBlX2NjayA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07Ci0JdTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdOwomIzQzOwl1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTsKJiM0MzsJdTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTsKIAogCWlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpCiAJCXJ0dzg4NTJieF9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMKaW5kZXggMDc5NDVkMDZkYzU5YzkuLjEzMzJkMWI5MjM1YWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jCkBAIC0yMjkyMSw3ICYjNDM7MjI5MjEsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTJiX2RmbHRfcGFybXMgPSB7CiAJCS5sbXRfcnUgPSAmYW1wO3J0dzg5Xzg4NTJiX3R4cHdyX2xtdF9ydV81ZywKIAl9LAogCS50eF9zaGFwZSA9IHsKLQkJLmxtdCA9ICZhbXA7cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LAotCQkubG10X3J1ID0gJmFtcDtydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsCiYjNDM7CQkubG10X3YwID0gJmFtcDtydHc4OV84ODUyYl90eF9zaGFwZV9sbXQsCiYjNDM7CQkubG10X3J1X3YwID0gJmFtcDtydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsCiAJfSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYwppbmRleCA3ZmNjODc3ZjZlYTBjNC4uNGJlYTg1YjQyNzhiOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYwpAQCAtOTUwLDYgJiM0Mzs5NTAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJidF9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jCmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYwpAQCAtMjE5MywxMSAmIzQzOzIxOTMsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyY19zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJCSAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sCiAJCQkJICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCkKIHsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtJmd0O3JmZV9wYXJtczsKIAl1OCBiYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXU4IHR4X3NoYXBlX2NjayA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07Ci0JdTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdOwomIzQzOwl1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTsKJiM0MzsJdTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTsKIAogCWlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpCiAJCXJ0dzg4NTJjX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTsKQEAgLTMzMTksNiAmIzQzOzMzMTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJjX2NoaXBfaW5mbyA9IHsKICNlbmRpZgogCS54dGFsX2luZm8JCT0gTlVMTCwKIAkuZGVmYXVsdF9xdWlya3MJCT0gMCwKJiM0MzsJLnR4dGltZV9saW1pdF8yZ2h6CT0gMCwKIH07CiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJjX2NoaXBfaW5mbyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYwppbmRleCAyNGMzOTBiNmYzZDM0NC4uYjcyZmVlMzc3ZTljMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmMKQEAgLTU3MTUzLDcgJiM0Mzs1NzE1Myw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmNfZGZsdF9wYXJtcyA9IHsKIAkJLmxtdF9ydSA9ICZhbXA7cnR3ODlfODg1MmNfdHhwd3JfbG10X3J1XzZnLAogCX0sCiAJLnR4X3NoYXBlID0gewotCQkubG10ID0gJmFtcDtydHc4OV84ODUyY190eF9zaGFwZV9sbXQsCi0JCS5sbXRfcnUgPSAmYW1wO3J0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSwKJiM0MzsJCS5sbXRfdjAgPSAmYW1wO3J0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdCwKJiM0MzsJCS5sbXRfcnVfdjAgPSAmYW1wO3J0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSwKIAl9LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYwppbmRleCBhZDM2MThkZmQ1N2QwMC4uM2U4NzA4ODBiNTk4ZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMKQEAgLTI1MDIsMTUgJiM0MzsyNTAyLDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJhX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCQkJICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbiwKIAkJCQkgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KQogewotCWNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi0mZ3Q7cmZlX3Bhcm1zOwotCWNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSAmYW1wO3JmZV9wYXJtcy0mZ3Q7dHhfc2hhcGU7CiYjNDM7CXU4IGJhbmQgPSBjaGFuLSZndDtiYW5kX3R5cGU7CiAJdTggdHhfc2hhcGVfaWR4OwotCXU4IGJhbmQsIHJlZ2Q7Ci0KLQliYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtJmd0O2xtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07CiAKJiM0MzsJdHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pOwogCWlmICh0eF9zaGFwZV9pZHggPT0gMCkKIAkJcnR3ODkyMmFfYmJfdHhfdHJpYW5ndWxhcihydHdkZXYsIGZhbHNlLCBwaHlfaWR4KTsKIAllbHNlCkBAIC0zMzAyLDYgJiM0MzszMjk3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyYV9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4OTIyYV9jaGlwX2luZm8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMKaW5kZXggODM4YzI2MjMxODk3ZDYuLmNjMTI3YTNlODZlZjg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jCkBAIC0xMTM2LDggJiM0MzsxMTM2LDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJdTMyIHN1Yl9jYXJyID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX1RYX1NVQl9CQU5EX1ZBTFVFLCBtYWNfaWR4KTsKIAl1MzIgY2hrX3JhdGUgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhSQVRFX0NISywgbWFjX2lkeCk7CiAJdTMyIHJmX21vZCA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9XTUFDX1JGTU9ELCBtYWNfaWR4KTsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKIAl1OCB0eHNiMjAgPSAwLCB0eHNiNDAgPSAwLCB0eHNiODAgPSAwOwogCXU4IHJmX21vZF92YWwsIGNoa19yYXRlX21hc2ssIHNpZnM7CiYjNDM7CXUxNiB0eF90aW1lID0gQU1QRFVfTUFYX1RJTUVfVjE7CiAJdTMyIHR4c2I7CiAJdTMyIHJlZzsKIApAQCAtMTIxOCw2ICYjNDM7MTIyMCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCiAJcmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX01VRURDQV9FTiwgbWFjX2lkeCk7CiAJcnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBCX0JFX1NJRlNfTUFDVFhFTl9UQl9UMV9ET1QwNVVTX01BU0ssIHNpZnMpOwomIzQzOwomIzQzOwlpZiAoY2hhbi0mZ3Q7YmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcgJmFtcDsmYW1wOyBjaGlwLSZndDt0eHRpbWVfbGltaXRfMmdoeikKJiM0MzsJCXR4X3RpbWUgPSBtaW5fdCh1MzIsIHR4X3RpbWUsIGNoaXAtJmd0O3R4dGltZV9saW1pdF8yZ2h6ICogMTAwMCAmZ3Q7Jmd0OyAxNSk7CiYjNDM7CiYjNDM7CXJlZyA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9BTVBEVV9BR0dfTElNSVQsIG1hY19pZHgpOwomIzQzOwlydHc4OV93cml0ZTMyX21hc2socnR3ZGV2LCByZWcsIEJfQkVfQU1QRFVfTUFYX1RJTUVfTUFTSywgdHhfdGltZSk7CiB9CiAKIHN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfc2NvX2Jhcmtlcl90aHJlc2hvbGRbMTRdID0gewpAQCAtMjczOSwxNiAmIzQzOzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KQogewogCWNvbnN0IHN0cnVjdCBydHc4OV9iYl93cmFwX2RhdGEgKmQgPSBydHdkZXYtJmd0O3BoeV9pbmZvLmJiX3dyYXBfZGF0YTsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtJmd0O3JmZV9wYXJtczsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gJmFtcDtyZmVfcGFybXMtJmd0O3R4X3NoYXBlOwomIzQzOwl1OCBiYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwogCXU4IHR4X3NoYXBlX2lkeDsKLQl1OCBiYW5kLCByZWdkOwogCWNvbnN0IHUxNiAqdGg7CiAKLQliYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtJmd0O2xtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07Ci0KJiM0MzsJdHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pOwogCWlmICh0eF9zaGFwZV9pZHggPT0gMCkKIAkJZ290byBkaXNhYmxlOwogCkBAIC0zNDM3LDYgJiM0MzszNDQwLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyZF9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IEJJVChSVFc4OV9RVUlSS19USEVSTUFMX1BST1RfMTIwQyksCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDQ2MDgsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4OTIyZF9jaGlwX2luZm8pOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDEyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjk1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTGF0ZXN0IHJ0dzg5IFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBydHc4OWAgd2lyZWxlc3MgZHJpdmVyLCBhbmQgaXQmIzM5O3MgZ290IHNvbWUgaW50ZXJlc3RpbmcgY2hhbmdlcy4gRmlyc3QsIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIFJGIENhbGlicmF0aW9uIChSRkspIHJlY29yZGluZyBhbmQgdHJhY2tpbmcuIFRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgYWx3YXlzIGhlbHBmdWwgdG8gaGF2ZSBtb3JlIGdyYW51bGFyIGRhdGEgb24gdGhlIFJGIGNhbGlicmF0aW9uIHByb2Nlc3MsIHNvIEkgY2FuIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kIGFuZCBtYWtlIHN1cmUgdGhpbmdzIGFyZSBvcGVyYXRpbmcgb3B0aW1hbGx5LiBTcGVjaWZpY2FsbHksIHRoZSBhZGRpdGlvbnMgaW4gYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgYW5kIGBydHc4OV9jb3JlX3Jma190c3NpX3JlY29yZGAgbG9vayBpbXBvcnRhbnQuCgpOZXh0LCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmb3IgdGhlIFJUTDg5MjJELiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBCQiBwcmUtaW5pdGlhbGl6YXRpb24uIEl0IGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBwZWN1bGlhcml0aWVzIG9mIHRoZSBoYXJkd2FyZS4KClRoZSBwYXRjaCBpcyBhbHNvIHVwZGF0aW5nIHRoZSBgdHhfc2hhcGVgIGxpbWl0cywgYWRkaW5nIHN1cHBvcnQgZm9yIGByZWc2X3B3cmAg4oCTIHdoaWNoIGlzIHByZXN1bWFibHkgNkdIeiBwb3dlciDigJMgYW5kIHVwZGF0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGBydHc4OV9nZXRfdHhfc2hhcGVfaWR4YCBmdW5jdGlvbi4gVGhpcyBpbmRpY2F0ZXMgdGhleSYjMzk7cmUgYnJvYWRlbmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCB0aGUgNkdIeiBiYW5kLiBUaGF0JiMzOTtzIGEgZ29vZCBkaXJlY3Rpb24uCgpUaGV5JiMzOTtyZSBhbHNvIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMgZm9yIFJGIGRpYWdub3N0aWNzLiBFeGNlbGxlbnQuIFRoYXQgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHRyb3VibGVzaG9vdCBhbnkgUkYtcmVsYXRlZCBpc3N1ZXMsIHdoaWNoIGlzIGFsd2F5cyB3ZWxjb21lLiBXZSBjYW4gb2Z0ZW4gZ2V0IHRvIHRoZSBib3R0b20gb2YgcHJvYmxlbXMgbW9yZSBxdWlja2x5IHdpdGggYmV0dGVyIGRpYWdub3N0aWMgdG9vbHMuCgpUaGVyZSYjMzk7cyBhbiB1cGRhdGUgdG8gYHJ0dzg5X2Z3X2RsX2ZhaWxfZHVtcGAgdG8gdXNlIGBtYWMtJmd0O2Jvb3RfZGJnYCwgd2hpY2ggaXMgcHJvYmFibHkgaW1wcm92aW5nIGRlYnVnZ2luZyBvZiBmaXJtd2FyZSBkb3dubG9hZCBmYWlsdXJlcy4gVGhhdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgc21hbGwgdHdlYWssIGJ1dCB3b3J0aCBub3RpbmcuCgpGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIHVwZGF0ZXMgdG8gYF9fcnR3ODlfbWFjX3NldF90eF90aW1lYCB0byBsaW1pdCBUWCB0aW1lIGZvciB0aGUgMkdIeiBiYW5kIGlmIGBjaGlwLSZndDt0eHRpbWVfbGltaXRfMmdoemAgaXMgc2V0LiBUaGlzIHNlZW1zIGxpa2UgYSBtZWNoYW5pc20gdG8gcHJvdmlkZSBjb250cm9sIG9uIDJHSHogcG93ZXIsIGxpa2VseSBmb3IgY29tcGxpYW5jZSByZWFzb25zLiBBbHNvLCBzaW1pbGFyIHRpbWUgbGltaXRpbmcgaGFzIGJlZW4gYXBwbGllZCB0byBgcnR3ODkyMmRfc2V0X2NoYW5uZWxfbWFjYC4gSW50ZXJlc3RpbmcgdGhhdCB0aGUgY29kZSBpcyBjaGFuZ2luZyBzbyBzdWJzdGFudGlhbGx5LgoKRmluYWxseSwgdGhleSYjMzk7dmUgYWRkZWQgYHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXRgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBmb3Igd2FpdGluZyBvbiBzcGVjaWZpYyBSRksgcmVwb3J0cy4gVGhpcyBsaWtlbHkgbWVhbnMgdGhleSYjMzk7cmUgYWRkaW5nIGEgYml0IG1vcmUgc3luY2hyb25pc2F0aW9uIGluIHRoZSByZXBvcnRpbmcgcGF0aC4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGRyaXZlciwgYHJ0dzg5YCwgaXMgYSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBzaG91bGQgY2hlY2sgaWYgaXQmIzM5O3MgYSBQQ0ksIFVTQiwgb3IgU0RJTyBkcml2ZXIgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYXR0YWNoZWQuIExldCBtZSBsb29rIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIG9yIGBNYWtlZmlsZWAgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIGJhc2ljIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY0OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIGl0IHNlZW1zIHRvIGhhbmRsZSBib3RoIFBDSSBhbmQgVVNCIGNvbm5lY3Rpb25zLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBoZXJlIGlzIHRoZSBVU0IgY29tcG9uZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhwbG9yZSBVU0IgZnV6emluZyB0ZWNobmlxdWVzLCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBvciB0aGUgbWV0aG9kcyB1c2VkIGluIHN5emthbGxlciwgd2hpY2ggSSBrbm93IHN1cHBvcnRzIFVTQiBmdXp6aW5nLgoKQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsJiMzNDsgd2hpY2ggaW5jbHVkZXMgdGhpbmdzIGxpa2UgUUVNVS4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIGN1cnZlYmFsbC4gSG93ZXZlciwgSSBrbm93IHN5emthbGxlciAqZG9lcyogaGF2ZSBVU0IgZnV6emluZyB2aWEgYGR1bW15X2hjZGAsIHNvIHBlcmhhcHMgdGhlIHByb21wdCYjMzk7cyBzdGF0ZW1lbnQgaXMgbm90IGFuIGFic29sdXRlIGNvbnN0cmFpbnQuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGBydHc4OWAgZHJpdmVyIGNhbiBiZSByZWFjaGVkIHRocm91Z2ggVVNCIGZ1enppbmcuIFNpbmNlIGBSVFc4OV9VU0JgIHN1cHBvcnQgZXhpc3RzLCB0aGUgYW5zd2VyIHNob3VsZCBiZSB5ZXMgaW4gcHJpbmNpcGxlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgaWYgdGhlIGBydHc4OWAgVVNCIGRyaXZlcnMgYXJlICphY3R1YWxseSogZnV6emVkLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSwgc3BlY2lmaWNhbGx5IHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jYCBvciBzaW1pbGFyLCB0byB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IGZ1enppbmcgY292ZXJhZ2UuIExldCYjMzk7cyBzZWUgaWYgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGlzIHRhcmdldGluZyB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfdXNiX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjE9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjYtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6Njc6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTFidV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjgxOm1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUyYXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYz03NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9ODE9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtODYtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6ODc6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTJjdV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgyOm1vZHVsZV91c2JfZHJpdmVyKHJ0d184OTIyYXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMTI6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5MjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKgoKT2theSwgc28gSSBzZWUgdGhlIG1lbnRpb24gb2YgVVNCIGRyaXZlcnMsIGFuZCBpbml0aWFsbHksIG15IGd1dCByZWFjdGlvbiBpcyAmIzM0O1llcywgdGhvc2UgYXJlIGNlcnRhaW5seSB0ZXN0YWJsZS4mIzM0OyBCdXQgaG9sZCBvbiwgdGhlIHByb21wdCBpcyBzcGVjaWZpY2FsbHkgdGFsa2luZyBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIFNvLCBkb2VzIHRoYXQgbWVhbiBJIG5lZWQgdG8gbWFyayBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgKmlmKiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGNvZGUgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCwgc2F5LCBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltPyBZZXMsIHRoYXQmIzM5O3MgdGhlIGxvZ2ljLgoKQnV0IG5vdyBJIGhhdmUgYSBjb3VudGVycG9pbnQgLSBVU0IgZHJpdmVycyAqYXJlKiBhY2Nlc3NpYmxlIHdpdGggVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkIGZ1enppbmchIFdlIGNhbiBjZXJ0YWlubHkgcmVhY2ggY29kZSB3aXRoaW4gdGhvc2UgZHJpdmVycy4gU28sIEkgbmVlZCB0byByZWZpbmUgbXkgdW5kZXJzdGFuZGluZy4gVGhlIHF1ZXN0aW9uIGlzbiYjMzk7dCBqdXN0ICYjMzQ7aXMgaXQgYSBVU0IgZHJpdmVyPyYjMzQ7LCBidXQgcmF0aGVyLCAmIzM0O2RvZXMgdGhlIHR5cGUgb2YgZnV6emluZyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhY3R1YWxseSAqZ2V0KiB0byB0aGUgcmVsZXZhbnQgd2lyZWxlc3MgZHJpdmVyIGxvZ2ljPyYjMzQ7LiBPZnRlbiwgVVNCIGZ1enppbmcgY2FuIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBvbiBhIGxvdyBsZXZlbCwgYnV0IHdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gbmVlZCBmaXJtd2FyZSB0byBiZSBsb2FkZWQgYmVmb3JlIHRoZXkgY2FuIGluaXRpYWxpemUgdGhlIE1BQy9QSFkgYW5kIHJlZ2lzdGVyIHRoZWlyIG5ldHdvcmsgaW50ZXJmYWNlLiBTbywgd2hhdCBJIG5lZWQgdG8gZG8gaXMgbG9vayBmb3IgYSBzcGVjaWZpYyBleGFtcGxlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIGZ1enppbmcgdGVjaG5pcXVlIHdpbGwgYWN0dWFsbHkgdGVzdCB0aGUgY29kZSBpbiBxdWVzdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGlmIGBydHc4OWAgcmVsaWVzIG9uIGZpcm13YXJlIHRvIG9wZXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz05NzY9cnR3ODlfZWFybHlfZndfZmVhdHVyZV9yZWNvZ25pemUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6OTkzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZpcm13YXJlLCBmd19uYW1lLCBkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk5NC1cdFx0aWYgKCFyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjA0MT1zdGF0aWMgaW50IHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA1Ni1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDU3Olx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNnJlcS1cdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBgcnR3ODlgIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFza2luZyBtZSB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBpbnRyb2R1Y2VzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzaW11bGF0ZWQgaGFyZHdhcmUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgdGhpcyBgcnR3ODlgIGRyaXZlci4uLiBpdCBzY3JlYW1zIGZpcm13YXJlIGRlcGVuZGVuY3ksIGRvZXNuJiMzOTt0IGl0PyBJZiB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IHRoZXJlLCBgcmVxdWVzdF9maXJtd2FyZWAgZmFpbHMsIGFuZCB0aGUgcHJvYmUganVzdCBkaWVzLiBTeXprYWxsZXIsIGluIGl0cyB0eXBpY2FsIHNldHVwLCB1c3VhbGx5IHdvbiYjMzk7dCBoYXZlIHByb3ByaWV0YXJ5IGZpcm13YXJlIHVubGVzcyBpdCYjMzk7cyBidW5kbGVkIGluIGBsaW51eC1maXJtd2FyZWAsIGFuZCBldmVuIHRoZW4sIGxvYWRpbmcgaXQgaXMganVzdCB0aGUgZmlyc3QgaHVyZGxlLiBUaGUgVVNCIGZ1enplciB3b3VsZCB0aGVuIG5lZWQgdG8gZmxhd2xlc3NseSBlbXVsYXRlIHRoZSAqZXhhY3QqIGZpcm13YXJlIHJlc3BvbnNlcyB0byBldmVuIGdldCBwYXN0IHRoYXQgaW5pdGlhbCBzdGFnZS4KCkkmIzM5O20gdGhpbmtpbmcsIGlzbiYjMzk7dCB0aGVyZSBhIG1hYzgwMjExIHNpbXVsYXRpb24gZm9yIHdpcmVsZXNzIGZ1enppbmcgd2l0aCBzeXprYWxsZXI/IE9oIHllYWgsIGBtYWM4MDIxMV9od3NpbWAhIEJ1dCB0aGF04oCZcyBzb2Z0d2FyZSwgbm90IHRvdWNoaW5nIHJlYWwgaGFyZHdhcmUgZHJpdmVycyBsaWtlIGBydHc4OWAuIFRob3NlIGhhcmR3YXJlIGRyaXZlcnMsIGxpa2UgYGF0aDEwa2AgYW5kIGBpd2x3aWZpYCwgYXJlIGdlbmVyYWxseSBub3QgcmVhY2hlZCBiZWNhdXNlIG9mIGVpdGhlciBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBzaG9ydGNvbWluZ3MsIG9yIHRoZSBmYWN0IHRoYXQgVVNCIGRyaXZlcnMgcHJvdmlkZSByYW5kb20gcmVzcG9uc2VzLiBBIGNvbXBsZXggYmVhc3QgbGlrZSBgcnR3ODlgIHdpbGwgbGlrZWx5IGRpZSBxdWlja2x5IHdoZW4gaXQgdHJpZXMgdG8gcmVhZCBzcGVjaWZpYyByZWdpc3RlcnMsIGxvYWQgZmlybXdhcmUsIGFuZCB3YWl0IGZvciBmaXJtd2FyZS1yZWFkeSBzaWduYWxzLiBJdOKAmWxsIG5ldmVyIHJlYWNoIHRoZSBqdWljeSBjb3JlIGxvZ2ljIGxpa2UgYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgb3IgYHJ0dzg5X21hY19zZXRfdHhfdGltZWAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcmUtcmVhZCB0aGUgcHJvbXB0IGNhcmVmdWxseS4gVGhlIGtleSBpcyAmIzM0O2NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC4mIzM0OyBJZiB0aGUgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgdW5yZWFjaGFibGUgY29kZSwgdGhlbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0IGlzIHRoZSBgcnR3ODlgIGNvcmUgbG9naWMgcmVhY2hhYmxlICphdCBhbGwqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2hlY2sgc3l6a2FsbGVyIGNvdmVyYWdlLCBidXQgbXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGNvbXBsZXggaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSBkZW1hbmRpbmcgZmlybXdhcmUgYW5kIHNwZWNpZmljIHJlZ2lzdGVyIGludGVyYWN0aW9ucywgdXN1YWxseSBkb24mIzM5O3QgZ2V0IG11Y2ggZnVydGhlciB0aGFuIHRoZSBwcm9iZSBmYWlsdXJlIGluIFVTQi9QQ0kgZnV6emluZy4KCkhtbSwgYW55IG90aGVyIGFuZ2xlcz8gSXMgdGhlcmUgc29tZSBiYWNrZG9vciwgbGlrZSBgbWFjODAyMTFgLCB0aGF0IGNvdWxkIGJlIHVzZWQ/IE5vLCBgcnR3ODlgIGlzIGNsZWFybHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIHRlc3QgbW9kZSBvciBzb21ldGhpbmcgdGhhdCB3b3VsZCBhbGxvdyBlYXNpZXIgYWNjZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3Rtb2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBTaW11bGF0aW9uIE9wdGlvbnMgZm9yIHJ0dzg5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgdGhpcyBgcnR3ODlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGEgc2ltdWxhdGVkIGVudmlyb25tZW50LiBUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdXN1YWxseSB0byBsb29rIGZvciBzb21lIGtpbmQgb2YgYGh3c2ltYCBvciwgaGVjaywgYW55dGhpbmcgdGhhdCByZXNlbWJsZXMgYSBoYXJkd2FyZSBzaW11bGF0b3IgdGFpbG9yZWQgZm9yIHRoZXNlIHJlYWx0ZWsgd2lyZWxlc3MgY2hpcHNldHMuIEl0JiMzOTtzIHRoZSBnby10byBmb3IgcmFwaWQgdGVzdGluZyBhbmQgcmVncmVzc2lvbi4gU28sIGZpcnN0IHRoaW5nLCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb3V0IHRoZXJlLiBBIHF1aWNrIHNjYW4gb2YgdGhlIHR5cGljYWwgbG9jYXRpb25zIC0gdGhlIGtlcm5lbCBzb3VyY2UsIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGFuZCBhbnkgcHVibGljIGRpc2N1c3Npb25zIC0gaXMgaW4gb3JkZXIuIE1heWJlIHNvbWV0aGluZyBuZXcgaGFzIGNyb3BwZWQgdXAsIG9yIG1heWJlIEkgbmVlZCB0byBhZGp1c3QgbXkgYXBwcm9hY2guIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBrZXl3b3JkcyBhbmQgdGhlbiBicm9hZGVuIG15IHNlYXJjaCBpZiBub3RoaW5nIGp1bXBzIG91dCBpbW1lZGlhdGVseS4gS25vd2luZyB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGUgY29tbW9uIG5hbWluZyBjb252ZW50aW9ucywgSSYjMzk7bSBleHBlY3RpbmcgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRpc2NvdmVyeS4uLiBvciBhIHJhYmJpdCBob2xlLiBMZXQmIzM5O3Mgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzE0OAoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAxMzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBydHc4OSBXaXJlbGVzcyBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNoYW5nZXMsIGRlZXAgaW4gdGhlIGBydHc4OWAgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSBmaWxlcyBsaWtlIGBjb3JlLmNgLCBgbWFjLmNgLCBgcGh5LmNgLCBldGMuIFRoaXMgaXMgcHJldHR5IGxvdy1sZXZlbCwgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gSSYjMzk7bSBzZWVpbmcgZnVuY3Rpb25zIGxpa2UgYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgdGhhdCBkaXJlY3RseSByZWFkIFJGIHJlZ2lzdGVycyB1c2luZyBjYWxscyBsaWtlIGBydHc4OV9yZWFkX3JmYC4gVGhhdCBpbXBsaWVzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeTsgdGhlIGRldmljZSBoYXMgdG8gYmUgcHJlc2VudCwgcG93ZXJlZCBvbiwgYW5kIHJlc3BvbmRpbmcuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBmdXp6aW5nIHRoaXMuIEluIGEgVVNCIGZ1enppbmcgc2NlbmFyaW8sIGBydHc4OV9yZWFkX3JmYCB3b3VsZCBldmVudHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgVVNCIGNvbnRyb2wgdHJhbnNmZXIuIFRoZSBmdXp6ZXIgY291bGQgdGhyb3cgcmFuZG9tIGRhdGEgYXQgaXQsIHN1cmUuIEJ1dCB0byBldmVuICpnZXQqIHRvIHRoYXQgcG9pbnQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLiBJdCBoYXMgdG8gZ28gdGhyb3VnaCBhIHdob2xlIHNlcXVlbmNlOiBwcm9iZSwgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSwgYW5kIHRoZSB1c2VyIG11c3QgYmUgY29uZmlndXJpbmcgYSBjaGFubmVsLCByaWdodD8gVGhlIHN1Y2Nlc3NmdWwgcHJvYmluZyByZXF1aXJlcyB0aGUgZHJpdmVyIHRvOgoKMS4gIFJlYWQgY2hpcCBJRCBhbmQgcmV2aXNpb24uCjIuICBMb2FkIGZpcm13YXJlLgozLiAgRG93bmxvYWQgZmlybXdhcmUgdG8gdGhlIGRldmljZS4KNC4gIFdhaXQgZm9yIHRoZSBmaXJtd2FyZSB0byBib290IGFuZCBzZW5kIGEgcmVhZHkgc2lnbmFsLgo1LiAgSW5pdGlhbGl6ZSBNQUMgYW5kIFBIWS4KNi4gIFJlZ2lzdGVyIHdpdGggbWFjODAyMTEuCgpJdCYjMzk7cyBqdXN0IG5vdCBwcmFjdGljYWxseSBmZWFzaWJsZSBmb3IgYSByYW5kb20gVVNCIGZ1enplciB0byBlbXVsYXRlIHRoYXQgcHJlY2lzZSBzZXF1ZW5jZSBvZiBmaXJtd2FyZSBkb3dubG9hZCBhbmQgYm9vdCByZXNwb25zZXMuIEl0JiMzOTtzIHRvbyBjb21wbGV4LiBUaGUgZHJpdmVyJiMzOTtzIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgaW4gdGhhdCBraW5kIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKSG1tLCB3YWl0IGEgc2VjLi4uIHdoYXQgYWJvdXQgUUVNVT8gRG9lcyBRRU1VIHN1cHBvcnQgdGhpcyBkcml2ZXI/IEkga25vdyBRRU1VIHN1cHBvcnRzIHNvbWUgbmV0d29yayBjYXJkcyBsaWtlIGUxMDAwLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldCwgYnV0IG5vdCBtb2Rlcm4gd2lyZWxlc3MgY2FyZHMgbGlrZSB0aGUgYHJ0dzg5YCwgd2hpY2ggaXMgODAyLjExYXgvV2ktRmkgNi4gU28sIFBDSSBmdXp6aW5nIGlzIG91dCB0b28uCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzd2VlcCBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGNvbmZpcm0gdGhpcy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCwgYHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWxgLCBgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmRgLCBgcnR3ODlfY29yZV9yZmtfdHJhY2tgLCBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCwgYHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXRgLCBgcnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldGAsIGBydHc4OV9md19kbF9mYWlsX2R1bXBgLCBgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXRgLCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAsIGBfX3J0dzg5X21hY19zZXRfdHhfdGltZWAsIGFuZCBgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdGAuCgpZZXAuIEFsbCB0aGVzZSBhcmUgY2xlYXJseSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZnVuY3Rpb25zLiBHaXZlbiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBhIGRldmljZSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBieSBRRU1VLCBhbmQgdGhhdCByZXF1aXJlcyB0aGlzIGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb24gdGhhdCBjYW4mIzM5O3QgYmUgZnV6emVkIHByYWN0aWNhbGx5IHRocm91Z2ggVVNCIGdhZGdldCwgaXQgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoZSAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IGNhdGVnb3J5LgoKTGV0JiMzOTtzIGp1c3QgZG91YmxlIGNoZWNrIHRoZSBmaWxlIHBhdGhzLi4uIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gYGNvcmUuY2AsIGBjb3JlLmhgLCBgZGVidWcuY2AsIGBmdy5jYCwgYGZ3LmhgLCBgbWFjLmNgLCBgbWFjLmhgLCBgbWFjX2JlLmNgLCBgcGh5LmNgLCBgcGh5LmhgLCBgcmVnLmhgLCBgcnR3ODg1MWIuY2AsIGBydHc4ODUxYl90YWJsZS5jYCwgYHJ0dzg4NTJhLmNgLCBgcnR3ODg1MmIuY2AsIGBydHc4ODUyYl9jb21tb24uY2AsIGBydHc4ODUyYl90YWJsZS5jYCwgYHJ0dzg4NTJidC5jYCwgYHJ0dzg4NTJjLmNgLCBgcnR3ODg1MmNfdGFibGUuY2AsIGBydHc4OTIyYS5jYCwgYW5kIGBydHc4OTIyZC5jYC4gVGhleSBhcmUgYWxsIHVuZGVyIGAvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gLgoKSXQmIzM5O3MgYWxsIHRoZSBgcnR3ODlgIGRyaXZlciwgc28gSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uIGlzIHRoYXQgaXQgaW52b2x2ZXMgbW9kaWZ5aW5nIGEgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODlgKSB0aGF0IHJlcXVpcmVzCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyIChSZWFsdGVrIDgwMi4xMWF4L2JlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGNvbXBsZXggZmlybXdhcmUgZW11bGF0aW9uICh3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyKSB0byBwYXNzIHRoZSBpbml0aWFsIHByb2JlIGFuZCByZWFjaCB0aGUgY29yZSBsb2dpYyAoTUFDL1BIWSBpbml0aWFsaXphdGlvbiwgUkYgY2FsaWJyYXRpb24sIGV0Yy4pLiBUaGVyZWZvcmUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIHJ0dzg5IHdpcmVsZXNzIGRyaXZlciAoUmVhbHRlayA4MDIuMTFheC9iZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBvciBjb21wbGV4IGZpcm13YXJlIGVtdWxhdGlvbiAod2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBRRU1VL3N5emthbGxlcikgdG8gcGFzcyB0aGUgaW5pdGlhbCBwcm9iZSBhbmQgcmVhY2ggdGhlIGNvcmUgbG9naWMgKE1BQy9QSFkgaW5pdGlhbGl6YXRpb24sIFJGIGNhbGlicmF0aW9uLCBldGMuKS4gVGhlcmVmb3JlLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNjo0My4wNjY3MjM0NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY4NDQ1NjA4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIHJ0dzg5IHdpcmVsZXNzIGRyaXZlciAoUmVhbHRlayA4MDIuMTFheC9iZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBvciBjb21wbGV4IGZpcm13YXJlIGVtdWxhdGlvbiAod2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBRRU1VL3N5emthbGxlcikgdG8gcGFzcyB0aGUgaW5pdGlhbCBwcm9iZSBhbmQgcmVhY2ggdGhlIGNvcmUgbG9naWMgKE1BQy9QSFkgaW5pdGlhbGl6YXRpb24sIFJGIGNhbGlicmF0aW9uLCBldGMuKS4gVGhlcmVmb3JlLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjQzLjA2NjcyOTAyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4NzQxOTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzE5OGNhMzQxYWFjMGRjZmEwZWE1YTFiMjc5ZTNjMDFhOWRlMTNlNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxMiAxMjoyNjo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuaW5kZXggNjhkYWQ2MDkwZjg3ZTIuLjliOTZiNTdiYzM5Y2Q2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNcXG5AQCAtNDg2LDYgKzQ4NiwzNyBAQCB2b2lkIHJ0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRfX3J0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3IocnR3ZGV2LCBjb25mLmNoYW5zWzFdLCBSVFc4OV9QSFlfMSk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3JlY29yZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4rXFx0XFx0XFx0XFx0ICBib29sIHN0YXJ0KVxcbit7XFxuK1xcdHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvICppbmZvID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlcmZrX3dhaXQ7XFxuK1xcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpbmZvLVxcdTAwM2VyZWNvcmRfaWR4XTtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cXHUwMDNlY2hpcDtcXG4rXFx0dTggcGF0aF9udW0gPSBtaW4oY2hpcC1cXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XFxuK1xcdGludCBwYXRoO1xcbitcXG4rXFx0aWYgKCFzdGFydClcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRpbmZvLVxcdTAwM2VyZWNvcmRfcHRyID0gcmVjb3JkO1xcbitcXHRyZWNvcmQtXFx1MDAzZXBoeV9pZHggPSBydHd2aWZfbGluay1cXHUwMDNlcGh5X2lkeDtcXG4rXFxuK1xcdGZvciAocGF0aCA9IDA7IHBhdGggXFx1MDAzYyBwYXRoX251bTsgcGF0aCsrKSB7XFxuK1xcdFxcdHJlY29yZC1cXHUwMDNlY2hbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfQ0ZHQ0gsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBSUl9DRkdDSF9CQU5EMCB8IFJSX0NGR0NIX0NIKTtcXG4rXFx0XFx0cmVjb3JkLVxcdTAwM2VjdltwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9WQ08sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBSUl9WQ09fU0VMIHwgUlJfVkNPX1NUUyk7XFxuK1xcdFxcdHJlY29yZC1cXHUwMDNlYzVbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfU1lORkIsIFJGUkVHX01BU0spO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm47XFxuK1xcbitlbmQ6XFxuK1xcdGluZm8tXFx1MDAzZXJlY29yZF9pZHggPSAoaW5mby1cXHUwMDNlcmVjb3JkX2lkeCArIDEpICUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SO1xcbitcXHRpbmZvLVxcdTAwM2VyZWNvcmRfcHRyID0gTlVMTDtcXG4rfVxcbitcXG4gdm9pZCBydHc4OV9jaGlwX3Jma19jaGFubmVsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXFxuIHtcXG5AQCAtNTAzLDkgKzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoY2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VyZmtfY2hhbm5lbClcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlcmZrX2NoYW5uZWwpIHtcXG4rXFx0XFx0cnR3ODlfY29yZV9yZmtfcmVjb3JkKHJ0d2RldiwgcnR3dmlmX2xpbmssIHRydWUpO1xcbitcXG4gXFx0XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VyZmtfY2hhbm5lbChydHdkZXYsIHJ0d3ZpZl9saW5rKTtcXG4gXFxuK1xcdFxcdHJ0dzg5X2NvcmVfcmZrX3JlY29yZChydHdkZXYsIHJ0d3ZpZl9saW5rLCBmYWxzZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwcmVoZGxfbGluaykge1xcbiBcXHRcXHRydHc4OV9lbnRpdHlfZm9yY2VfaHcocnR3ZGV2LCBSVFc4OV9QSFlfTlVNKTtcXG4gXFx0XFx0cnR3ODlfc2V0X2NoYW5uZWwocnR3ZGV2KTtcXG5AQCAtNTI2NSw2ICs1MzAxLDM3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2VudGVyX2xwc190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuK1xcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXFx1MDAzZXJmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpO1xcbitcXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXJma193YWl0O1xcbitcXHRpbnQgaSA9IGluZm8tXFx1MDAzZXJlY29yZF90c3NpX2lkeDtcXG4rXFx0dTMyIGJhc2U7XFxuK1xcdHUzMiBtYXNrO1xcbitcXHRpbnQgcGF0aDtcXG4rXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VjaGlwX2dlbiA9PSBSVFc4OV9DSElQX0FYKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpbmZvLVxcdTAwM2VyZWNvcmRfdHNzaV9pZHggPSAoaW5mby1cXHUwMDNlcmVjb3JkX3Rzc2lfaWR4ICsgMSkgJVxcbitcXHRcXHRcXHRcXHRSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7XFxuK1xcbitcXHRpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyQSkge1xcbitcXHRcXHRiYXNlID0gMHgyZWUxMDtcXG4rXFx0XFx0bWFzayA9IDB4N2ZjMDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGJhc2UgPSAweDJmOTE4O1xcbitcXHRcXHRtYXNrID0gMHgwMDAwMDFmZjtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcXHUwMDNjIHBhdGhfbnVtOyBwYXRoKyspIHtcXG4rXFx0XFx0dTMyIGFkZHIgPSBiYXNlICsgMHgxMDAgKiBwYXRoO1xcbitcXG4rXFx0XFx0aW5mby1cXHUwMDNldHNzaV9jb2RlW2ldW3BhdGhdID0gcnR3ODlfcmVhZDMyX21hc2socnR3ZGV2LCBhZGRyLCBtYXNrKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0ZW51bSBydHc4OV9lbnRpdHlfbW9kZSBtb2RlO1xcbkBAIC01Mjc0LDYgKzUzNDEsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdHJ0dzg5X2NoaXBfcmZrX3RyYWNrKHJ0d2Rldik7XFxuK1xcbitcXHRydHc4OV9jb3JlX3Jma190c3NpX3JlY29yZChydHdkZXYpO1xcbiB9XFxuIFxcbiB2b2lkIHJ0dzg5X2NvcmVfdXBkYXRlX3AycF9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuQEAgLTcxODAsOSArNzI0OSwxOSBAQCBpbnQgcnR3ODlfY29yZV9tbHNyX3N3aXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZixcXG4gc3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVxcdTAwM2VjaGlwLVxcdTAwM2VtYWNfZGVmO1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbitcXHRib29sIGJiX3ByZWluaXQgPSBmYWxzZTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBmYWxzZSk7XFxuK1xcdC8qXFxuK1xcdCAqIE5vcm1hbGx5IGluIHByb2JlIHN0YWdlLCB3ZSBkb24ndCBuZWVkIHRvIGRvIEJCIHByZS1pbml0aWFsaXphdGlvbi5cXG4rXFx0ICogSG93ZXZlciwgUlRMODkyMkQgZmlybXdhcmUgY2FuIGFjY2VzcyBCQiByZWdpc3RlcnMgYXQgZmlybXdhcmVcXG4rXFx0ICogaW5pdGlhbCBzdGF0ZSwgc28gaW5pdGlhbGl6ZSBpdCB0byBhdm9pZCBCQiBJTyBzdHVjayBpbiBmaXJtd2FyZS5cXG4rXFx0ICovXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VjaGlwX2lkID09IFJUTDg5MjJEKVxcbitcXHRcXHRiYl9wcmVpbml0ID0gdHJ1ZTtcXG4rXFxuK1xcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBmYWxzZSwgYmJfcHJlaW5pdCk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXFxuaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjJlYWNiNWZlOTdmMjA4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcXG5AQCAtNDI5NCw4ICs0Mjk0LDEyIEBAIHN0cnVjdCBydHc4OV90eHB3cl9ydWxlXzZnaHoge1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlIHtcXG4tXFx0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcXG4tXFx0Y29uc3QgdTggKCpsbXRfcnUpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XFxuK1xcdGNvbnN0IHU4ICgqbG10KVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV1cXG4rXFx0XFx0ICAgICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xcbitcXHRjb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xcbitcXG4rXFx0Y29uc3QgdTggKCpsbXRfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcXG4rXFx0Y29uc3QgdTggKCpsbXRfcnVfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XFxuIH07XFxuIFxcbiBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHtcXG5AQCAtNDM4OSwxMiArNDM5MywxMyBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfbG10X3J1XzZnaHpfZGF0YSB7XFxuIFxcbiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X2RhdGEge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfdHhwd3JfY29uZiBjb25mO1xcbi1cXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcXG4rXFx0dTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV1cXG4rXFx0ICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9ydV9kYXRhIHtcXG4gXFx0c3RydWN0IHJ0dzg5X3R4cHdyX2NvbmYgY29uZjtcXG4tXFx0dTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xcbitcXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV1bTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSXTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydHc4OV9yZmVfZGF0YSB7XFxuQEAgLTQ3OTAsNiArNDc5NSw3IEBAIHN0cnVjdCBydHc4OV9jaGlwX2luZm8ge1xcbiBcXHRjb25zdCBzdHJ1Y3Qgd2lwaHlfd293bGFuX3N1cHBvcnQgKndvd2xhbl9zdHViO1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfeHRhbF9pbmZvICp4dGFsX2luZm87XFxuIFxcdHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9xdWlya3M7IC8qIGJpdG1hcCBvZiBydHc4OV9xdWlya3MgKi9cXG4rXFx0dTE2IHR4dGltZV9saW1pdF8yZ2h6O1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X2NoaXBfdmFyaWFudCB7XFxuQEAgLTU0ODQsMTEgKzU0OTAsNDMgQEAgZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHtcXG4gXFx0UlRXODlfUkZLX1NUQVRFX0gyQ19DTURfRVJSID0gMHg0LFxcbiB9O1xcbiBcXG4rZW51bSBydHc4OV9yZmtfcmVwb3J0X3R5cGVzIHtcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9QUkVfTlRGWSxcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9UU1NJLFxcbitcXHRSVFc4OV9SRktfUkVQT1JUX0lRSyxcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9EUEssXFxuK1xcdFJUVzg5X1JGS19SRVBPUlRfVFhHQVBLLFxcbitcXHRSVFc4OV9SRktfUkVQT1JUX0RBQ0ssXFxuK1xcdFJUVzg5X1JGS19SRVBPUlRfUlhfRENLLFxcbitcXHRSVFc4OV9SRktfUkVQT1JUX1RYX0lRSyxcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9DSU0zayxcXG4rXFxuK1xcdE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTLFxcbit9O1xcbitcXG4rI2RlZmluZSBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIgMlxcbisjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUiAxMFxcbitcXG4rc3RydWN0IHJ0dzg5X3Jma19yZWNvcmQge1xcbitcXHR1MzIgY2hbUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTtcXG4rXFx0dTMyIGN2W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XFxuK1xcdHUzMiBjNVtSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdO1xcbitcXHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeDtcXG4rXFx0ZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHN0YXRlc1tOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFU107XFxuK307XFxuK1xcbiBzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyB7XFxuIFxcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247XFxuIFxcdGt0aW1lX3Qgc3RhcnRfdGltZTtcXG4gXFx0ZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHN0YXRlO1xcbiBcXHR1OCB2ZXJzaW9uO1xcbitcXG4rXFx0aW50IHJlY29yZF9pZHg7XFxuK1xcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmRfcHRyO1xcbitcXHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCByZWNvcmRzW1JUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUl07XFxuK1xcbitcXHRpbnQgcmVjb3JkX3Rzc2lfaWR4O1xcbitcXHR1MzIgdHNzaV9jb2RlW1JUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUl1bUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTtcXG4gfTtcXG4gXFxuICNkZWZpbmUgUlRXODlfREFDS19QQVRIX05SIDJcXG5AQCAtNzU2OSw4ICs3NjA3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jaGlwX2JiX3NldGh3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXG4rXFx0cnR3ODlfaW9fcGFjayhydHdkZXYpO1xcbitcXG4gXFx0aWYgKGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlYmJfc2V0aHcpXFxuIFxcdFxcdGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlYmJfc2V0aHcocnR3ZGV2KTtcXG4rXFxuK1xcdHJ0dzg5X2lvX3VucGFjayhydHdkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9yZmtfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuQEAgLTc3ODcsNiArNzgyOSwzMCBAQCBzdGF0aWMgaW5saW5lIHU4IHJ0dzg5X3JlZ2RfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZClcXG4gXFx0cmV0dXJuIHR4cHdyX3JlZ2Q7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgdTggcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJhbmQsXFxuK1xcdFxcdFxcdFxcdFxcdGVudW0gcnR3ODlfcmF0ZV9zZWN0aW9uIHJzKVxcbit7XFxuK1xcdHN0cnVjdCBydHc4OV9yZWd1bGF0b3J5X2luZm8gKnJlZ3VsYXRvcnkgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VyZWd1bGF0b3J5O1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXFx1MDAzZXJmZV9wYXJtcztcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFxcdTAwMjZyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlO1xcbitcXHR1OCByZWc2X3B3ciA9IHJlZ3VsYXRvcnktXFx1MDAzZXJlZ182Z2h6X3Bvd2VyO1xcbitcXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcXG4rXFxuK1xcdGlmICh1bmxpa2VseShycyBcXHUwMDNlPSBSVFc4OV9SU19UWF9TSEFQRV9OVU0pKVxcbitcXHRcXHRycyA9IFJUVzg5X1JTX09GRE07XFxuK1xcbitcXHRpZiAoIXR4X3NoYXBlLVxcdTAwM2VsbXQpXFxuK1xcdFxcdGdvdG8gdjA7XFxuK1xcbitcXHRpZiAoYmFuZCAhPSBSVFc4OV9CQU5EXzZHKVxcbitcXHRcXHRyZWc2X3B3ciA9IFJUVzg5X1JFR182R0haX1BPV0VSX0RGTFQ7XFxuK1xcbitcXHRyZXR1cm4gKCp0eF9zaGFwZS1cXHUwMDNlbG10KVtiYW5kXVtyc11bcmVnZF1bcmVnNl9wd3JdO1xcbitcXG4rdjA6XFxuK1xcdHJldHVybiAoKnR4X3NoYXBlLVxcdTAwM2VsbXRfdjApW2JhbmRdW3JzXVtyZWdkXTtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2N0cmxfYnRnX2J0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbixcXG4gXFx0XFx0XFx0XFx0XFx0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jXFxuaW5kZXggOGY1YWY4NzNlMDlmNWUuLmM4MTM4YzQxMTZjMjE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xcbkBAIC05Myw2ICs5Myw3IEBAIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBiZWFjb25faW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYztcXG4gXFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX2JiO1xcbitcXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGRpYWdfcmY7XFxuIFxcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgbW9uaXRvcl9vcHRzO1xcbiB9O1xcbiBcXG5AQCAtNTM5Niw2ICs1Mzk3LDExOCBAQCBydHc4OV9kZWJ1Z19wcml2X2RpYWdfYmJfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0cmV0dXJuIHAgLSBidWY7XFxuIH1cXG4gXFxuK3N0YXRpYyBzc2l6ZV90XFxuK3J0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdixcXG4rXFx0XFx0XFx0ICAgICBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4re1xcbitcXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXJma193YWl0O1xcbitcXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XFxuK1xcdGludCBpLCBqO1xcbitcXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlJGSyAobmV4dCBpbmRleDogJWQpXFxcXG5cXFwiLCBpbmZvLVxcdTAwM2VyZWNvcmRfaWR4KTtcXG4rXFxuK1xcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgIFBIWS1YICAgID1cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTRkIFxcXCIsIHJlY29yZC1cXHUwMDNlcGh5X2lkeCk7XFxuK1xcdH1cXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcbitcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqKyspIHtcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiAgUyVkLUNIICAgID1cXFwiLCBqKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTA1eFxcXCIsIHJlY29yZC1cXHUwMDNlY2hbal0pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCJcXFxcblxcXCIpO1xcbitcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiAgUyVkLUNWICAgID1cXFwiLCBqKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTA1eFxcXCIsIHJlY29yZC1cXHUwMDNlY3Zbal0pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCJcXFxcblxcXCIpO1xcbitcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiAgUyVkLUM1ICAgID1cXFwiLCBqKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTA1eFxcXCIsIHJlY29yZC1cXHUwMDNlYzVbal0pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHR9XFxuK1xcbitcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVM7IGorKykge1xcbitcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiICAlLThzID1cXFwiLCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW2pdKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTRkIFxcXCIsIHJlY29yZC1cXHUwMDNlc3RhdGVzW2pdKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0fVxcbitcXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlRTU0ktdHJhY2sgKG5leHQgaW5kZXg6ICVkKVxcXFxuXFxcIiwgaW5mby1cXHUwMDNlcmVjb3JkX3Rzc2lfaWR4KTtcXG4rXFxuK1xcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlI7IGorKykge1xcbitcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiICBTJWQgICAgICAgPVxcXCIsIGopO1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpKyspXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgICAlMDN4XFxcIiwgaW5mby1cXHUwMDNldHNzaV9jb2RlW2ldW2pdKTtcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBwIC0gYnVmO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4re1xcbitcXHRzdHJ1Y3QgcnR3ODlfZW50aXR5X21nbnQgKm1nbnQgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VoYWwuZW50aXR5X21nbnQ7XFxuK1xcdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7XFxuK1xcdHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjtcXG4rXFx0dW5zaWduZWQgaW50IGxpbmtfaWQ7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJ0d3ZpZiwgXFx1MDAyNm1nbnQtXFx1MDAzZWFjdGl2ZV9saXN0LCBtZ250X2VudHJ5KVxcbitcXHRcXHRydHc4OV92aWZfZm9yX2VhY2hfbGluayhydHd2aWYsIHJ0d3ZpZl9saW5rLCBsaW5rX2lkKVxcbitcXHRcXHRcXHRydHc4OV9jaGlwX3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbit9XFxuK1xcbitlbnVtIHJ0dzg5X2RiZ19kaWFnX3JmX3R5cGUge1xcbitcXHRSVFc4OV9EQkdfRElBR19SRl9SU1ZEID0gMCxcXG4rXFx0UlRXODlfREJHX0RJQUdfUkZfUkZLID0gMSxcXG4rfTtcXG4rXFxuK3N0YXRpYyBzc2l6ZV90XFxuK3J0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9zZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdixcXG4rXFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4re1xcbitcXHR1OCB0eXBlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0ga3N0cnRvdTgoYnVmLCAwLCBcXHUwMDI2dHlwZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0aWYgKHJ0d2Rldi1cXHUwMDNlc2Nhbm5pbmcpXFxuK1xcdFxcdHJ0dzg5X2h3X3NjYW5fYWJvcnQocnR3ZGV2LCBydHdkZXYtXFx1MDAzZXNjYW5faW5mby5zY2FubmluZ192aWYpO1xcbitcXG4rXFx0cnR3ODlfbGVhdmVfcHNfbW9kZShydHdkZXYpO1xcbitcXG4rXFx0c3dpdGNoICh0eXBlKSB7XFxuK1xcdGNhc2UgUlRXODlfREJHX0RJQUdfUkZfUkZLOlxcbitcXHRcXHRydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHJ0d2Rldik7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBjb3VudDtcXG4rfVxcbitcXG4gc3RhdGljIHNzaXplX3RcXG4gcnR3ODlfZGVidWdfcHJpdl9tb25pdG9yX29wdHNfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXFxuQEAgLTU1MDgsNiArNTYyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyBydHc4OV9kZWJ1Z2ZzX3RlbXBsID0ge1xcbiBcXHQuYmVhY29uX2luZm8gPSBydHc4OV9kZWJ1Z19wcml2X2dldChiZWFjb25faW5mbyksXFxuIFxcdC5kaWFnX21hYyA9IHJ0dzg5X2RlYnVnX3ByaXZfZ2V0KGRpYWdfbWFjLCBSU0laRV8xNkssIFJMT0NLKSxcXG4gXFx0LmRpYWdfYmIgPSBydHc4OV9kZWJ1Z19wcml2X2dldChkaWFnX2JiLCBSU0laRV84SywgUkxPQ0spLFxcbitcXHQuZGlhZ19yZiA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQoZGlhZ19yZiwgUldMT0NLKSxcXG4gXFx0Lm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLFxcbiB9O1xcbiBcXG5AQCAtNTU2NSw2ICs1Njc5LDcgQEAgdm9pZCBydHc4OV9kZWJ1Z2ZzX2FkZF9zZWMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BcXG4gXFx0cnR3ODlfZGVidWdmc19hZGRfcihiZWFjb25faW5mbyk7XFxuIFxcdHJ0dzg5X2RlYnVnZnNfYWRkX3IoZGlhZ19tYWMpO1xcbiBcXHRydHc4OV9kZWJ1Z2ZzX2FkZF9yKGRpYWdfYmIpO1xcbitcXHRydHc4OV9kZWJ1Z2ZzX2FkZF9ydyhkaWFnX3JmKTtcXG4gXFx0cnR3ODlfZGVidWdmc19hZGRfcncobW9uaXRvcl9vcHRzKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXFxuaW5kZXggZDZhNTk0Yjc1YWIyMDIuLjAwZmU0ODA4OTA3MWI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbkBAIC0xOTE0LDEzICsxOTE0LDE0IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X3Byb2dfY250X2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXG4gc3RhdGljIHZvaWQgcnR3ODlfZndfZGxfZmFpbF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgKm1hYyA9IHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlbWFjX2RlZjtcXG4gXFx0dTMyIHZhbDMyO1xcbiBcXG4gXFx0dmFsMzIgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBSX0FYX1dDUFVfRldfQ1RSTCk7XFxuIFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3ZGwgMHgxRTAgPSAweCV4XFxcXG5cXFwiLCB2YWwzMik7XFxuIFxcbi1cXHR2YWwzMiA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfQk9PVF9EQkcpO1xcbi1cXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiW0VSUl1md2RsIDB4ODNGMCA9IDB4JXhcXFxcblxcXCIsIHZhbDMyKTtcXG4rXFx0dmFsMzIgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBtYWMtXFx1MDAzZWJvb3RfZGJnKTtcXG4rXFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcIltFUlJdZndkbCAweCV4ID0gMHgleFxcXFxuXFxcIiwgbWFjLVxcdTAwM2Vib290X2RiZywgdmFsMzIpO1xcbiBcXG4gXFx0cnR3ODlfZndfcHJvZ19jbnRfZHVtcChydHdkZXYpO1xcbiB9XFxuQEAgLTExMzI1LDYgKzExMzI2LDEyIEBAIGZ3X3R4X3NoYXBlX2xtdF9lbnRyeV92YWxpZChjb25zdCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5ICplLFxcbiBcXHRpZiAoZS1cXHUwMDNlcmVnZCBcXHUwMDNlPSBSVFc4OV9SRUdEX05VTSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4rXFx0LyogZW5zdXJlIGNvbXBhdGliaWxpdHkgd29yayB3aXRoIDIvNSBHSHogKi9cXG4rXFx0c3RhdGljX2Fzc2VydChSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUID09IDApO1xcbitcXG4rXFx0aWYgKGUtXFx1MDAzZXJlZzZfcHdyIFxcdTAwM2U9IE5VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUilcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuQEAgLTExMzM5LDcgKzExMzQ2LDcgQEAgdm9pZCBydHc4OV9md19sb2FkX3R4X3NoYXBlX2xtdChzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X2RhdGEgKmRhdGEpXFxuIFxcdFxcdGlmICghZndfdHhfc2hhcGVfbG10X2VudHJ5X3ZhbGlkKFxcdTAwMjZlbnRyeSwgY3Vyc29yLCBjb25mKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHRkYXRhLVxcdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnR4X3NoYXBlX3JzXVtlbnRyeS5yZWdkXSA9IGVudHJ5LnY7XFxuK1xcdFxcdGRhdGEtXFx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkudHhfc2hhcGVfcnNdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMTEzNTYsNiArMTEzNjMsMTIgQEAgZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5X3ZhbGlkKGNvbnN0IHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfcnVfZW50cnkgKmUsXFxuIFxcdGlmIChlLVxcdTAwM2VyZWdkIFxcdTAwM2U9IFJUVzg5X1JFR0RfTlVNKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbitcXHQvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqL1xcbitcXHRzdGF0aWNfYXNzZXJ0KFJUVzg5X1JFR182R0haX1BPV0VSX0RGTFQgPT0gMCk7XFxuK1xcbitcXHRpZiAoZS1cXHUwMDNlcmVnNl9wd3IgXFx1MDAzZT0gTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5AQCAtMTEzNzAsNyArMTEzODMsNyBAQCB2b2lkIHJ0dzg5X2Z3X2xvYWRfdHhfc2hhcGVfbG10X3J1KHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfcnVfZGF0YSAqZGF0YSlcXG4gXFx0XFx0aWYgKCFmd190eF9zaGFwZV9sbXRfcnVfZW50cnlfdmFsaWQoXFx1MDAyNmVudHJ5LCBjdXJzb3IsIGNvbmYpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGRhdGEtXFx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkucmVnZF0gPSBlbnRyeS52O1xcbitcXHRcXHRkYXRhLVxcdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLmU3NmNlYTBiOWQ0MzE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxcbkBAIC01ODE0LDYgKzU4MTQsNyBAQCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5IHtcXG4gXFx0dTggdHhfc2hhcGVfcnM7XFxuIFxcdHU4IHJlZ2Q7XFxuIFxcdHU4IHY7XFxuK1xcdHU4IHJlZzZfcHdyO1xcbiB9IF9fcGFja2VkO1xcbiBcXG4gLyogbXVzdCBjb25zaWRlciBjb21wYXRpYmlsaXR5OyBkb24ndCBpbnNlcnQgbmV3IGluIHRoZSBtaWQgKi9cXG5AQCAtNTgyMSw2ICs1ODIyLDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSB7XFxuIFxcdHU4IGJhbmQ7XFxuIFxcdHU4IHJlZ2Q7XFxuIFxcdHU4IHY7XFxuK1xcdHU4IHJlZzZfcHdyO1xcbiB9IF9fcGFja2VkO1xcbiBcXG4gY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXFxuaW5kZXggOGMzOTU1MTdiZDJmZTEuLmUyMDQ5MzQxYzQxNTQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXFxuQEAgLTQzMDQsMTMgKzQzMDQsMTQgQEAgaW50IHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcXG4gXFxuLWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiKVxcbitpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcXG4rXFx0XFx0XFx0ICAgYm9vbCBiYl9wcmVpbml0KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRydHc4OV9tYWNfY3RybF9oY2lfZG1hX3RyeChydHdkZXYsIHRydWUpO1xcbiBcXG4tXFx0aWYgKGluY2x1ZGVfYmIpIHtcXG4rXFx0aWYgKGluY2x1ZGVfYmIgfHwgYmJfcHJlaW5pdCkge1xcbiBcXHRcXHQvKiBPbmx5IGNhbGwgQkIgcHJlaW5pdCBpbmNsdWRpbmcgY29uZmlndXJhdGlvbiBvZiBCQiBNQ1UgZm9yXFxuIFxcdFxcdCAqIHRoZSBjaGlwcyB3aGljaCBuZWVkIHRvIGRvd25sb2FkIEJCIE1DVSBmaXJtd2FyZS4gT3RoZXJ3aXNlLFxcbiBcXHRcXHQgKiBjYWxsaW5nIHByZWluaXQgbGF0ZXIgdG8gcHJldmVudCB0b3VjaGluZyByZWdpc3RlcnMgYWZmZWN0aW5nXFxuQEAgLTQzNjMsNyArNDM2NCw3IEBAIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdGJvb2wgaW5jbHVkZV9iYiA9ICEhY2hpcC1cXHUwMDNlYmJtY3VfbnI7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgaW5jbHVkZV9iYik7XFxuK1xcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiLCBpbmNsdWRlX2JiKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBmYWlsO1xcbiBcXG5AQCAtNzA0MywxMSArNzA0NCwyMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhX1xcbiB7XFxuICNkZWZpbmUgTUFDX0FYX0RGTFRfVFhfVElNRSA1MjgwXFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVxcdTAwM2VjaGlwLVxcdTAwM2VtYWNfZGVmO1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXHR1OCBtYWNfaWR4ID0gcnR3c3RhX2xpbmstXFx1MDAzZXJ0d3ZpZl9saW5rLVxcdTAwM2VtYWNfaWR4O1xcbiBcXHR1MzIgbWF4X3R4X3RpbWUgPSB0eF90aW1lID09IDAgPyBNQUNfQVhfREZMVF9UWF9USU1FIDogdHhfdGltZTtcXG4rXFx0c3RydWN0IHJ0dzg5X2VudGl0eV9jb25mIGNvbmY7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuO1xcbiBcXHR1MzIgcmVnO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuK1xcdGlmIChjaGlwLVxcdTAwM2V0eHRpbWVfbGltaXRfMmdoeikge1xcbitcXHRcXHRydHc4OV9lbnRpdHlfZ2V0X2NvbmYocnR3ZGV2LCBcXHUwMDI2Y29uZik7XFxuK1xcdFxcdGNoYW4gPSBjb25mLmNoYW5zW21hY19pZHhdO1xcbitcXG4rXFx0XFx0aWYgKGNoYW4tXFx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHKVxcbitcXHRcXHRcXHRtYXhfdHhfdGltZSA9IG1pbl90KHUzMiwgbWF4X3R4X3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBjaGlwLVxcdTAwM2V0eHRpbWVfbGltaXRfMmdoeik7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChydHdzdGFfbGluay1cXHUwMDNlY2N0bF90eF90aW1lKSB7XFxuIFxcdFxcdHJ0d3N0YV9saW5rLVxcdTAwM2VhbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgXFx1MDAzZVxcdTAwM2UgOTtcXG4gXFx0XFx0cmV0ID0gcnR3ODlfY2hpcF9oMmNfdHh0aW1lX2NtYWNfdGJsKHJ0d2RldiwgcnR3c3RhX2xpbmspO1xcbkBAIC03MDU4LDkgKzcwNzEsMTMgQEAgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfc3RhX2xpbmsgKnJ0d3N0YV9cXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0aWYgKGNoaXAtXFx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXFxuK1xcdFxcdFxcdG1heF90eF90aW1lIFxcdTAwM2VcXHUwMDNlPSA1O1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG1heF90eF90aW1lID0gbWF4X3R4X3RpbWUgKiAxMDAwIFxcdTAwM2VcXHUwMDNlIDE1O1xcbitcXG4gXFx0XFx0cmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBtYWMtXFx1MDAzZWFnZ19saW1pdC5hZGRyLCBtYWNfaWR4KTtcXG4tXFx0XFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtXFx1MDAzZWFnZ19saW1pdC5tYXNrLFxcbi1cXHRcXHRcXHRcXHQgICBtYXhfdHhfdGltZSBcXHUwMDNlXFx1MDAzZSA1KTtcXG4rXFx0XFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtXFx1MDAzZWFnZ19saW1pdC5tYXNrLCBtYXhfdHhfdGltZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTc0MzgsNiArNzQ1NSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2F4ID0ge1xcbiBcXHQuYWdnX2xlbl9odCA9IFJfQVhfQUdHX0xFTl9IVF8wLFxcbiBcXHQucHNfc3RhdHVzID0gUl9BWF9QUFdSQklUX1NFVFRJTkcsXFxuIFxcdC5tdV9naWQgPSBcXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2F4LFxcbitcXHQuYm9vdF9kYmcgPSBSX0FYX0JPT1RfREJHLFxcbiBcXG4gXFx0Lm11ZWRjYV9jdHJsID0ge1xcbiBcXHRcXHQuYWRkciA9IFJfQVhfTVVFRENBX0VOLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxcbmluZGV4IDUzOTA2MWZjMTVlODViLi45NDY3OGEyNjJlMTY0ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxcbkBAIC0xMDY3LDYgKzEwNjcsNyBAQCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYge1xcbiBcXHR1MzIgYWdnX2xlbl9odDtcXG4gXFx0dTMyIHBzX3N0YXR1cztcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19tdV9naWRfYWRkciAqbXVfZ2lkO1xcbitcXHR1MzIgYm9vdF9kYmc7XFxuIFxcbiBcXHRzdHJ1Y3QgcnR3ODlfcmVnX2RlZiBtdWVkY2FfY3RybDtcXG4gXFx0c3RydWN0IHJ0dzg5X3JlZ19kZWYgYmZlZV9jdHJsO1xcbkBAIC0xMjk4LDcgKzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbFxcbiBcXG4gaW50IHJ0dzg5X21hY19wd3Jfb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG4gdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYik7XFxuK2ludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxcbitcXHRcXHRcXHQgICBib29sIGJiX3ByZWluaXQpO1xcbiBpbnQgcnR3ODlfbWFjX3ByZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG4gaW50IHJ0dzg5X21hY19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuIGludCBydHc4OV9tYWNfZGxlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X3F0YV9tb2RlIG1vZGUsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jXFxuaW5kZXggZjI0YzExOWI5OWYxYmQuLjI0MjAwNmNlZmMzZTFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jXFxuQEAgLTMyNDIsNiArMzI0Miw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2JlID0ge1xcbiBcXHQuYWdnX2xlbl9odCA9IFJfQkVfQUdHX0xFTl9IVF8wLFxcbiBcXHQucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsXFxuIFxcdC5tdV9naWQgPSBcXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLFxcbitcXHQuYm9vdF9kYmcgPSBSX0JFX0JPT1RfREJHLFxcbiBcXG4gXFx0Lm11ZWRjYV9jdHJsID0ge1xcbiBcXHRcXHQuYWRkciA9IFJfQkVfTVVFRENBX0VOLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xcbmluZGV4IDc1OWJlNGRhYjQyYjFjLi42ZGVlMzlmNTNkZjBlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xcbkBAIC0zOTY4LDYgKzM5NjgsMjMgQEAgdm9pZCAoKiBjb25zdCBydHc4OV9waHlfYzJoX3Jma19sb2dfaGFuZGxlcltdKShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFtSVFc4OV9QSFlfQzJIX1JGS19MT0dfRlVOQ19DSU0zS10gPSBydHc4OV9waHlfYzJoX3Jma19sb2dfY2ltM2ssXFxuIH07XFxuIFxcbisjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcXFxcXFxuK1xcdFtSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlXSA9ICN0eXBlXFxuK1xcbitjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdID0ge1xcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoUFJFX05URlkpLFxcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoVFNTSSksXFxuK1xcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChJUUspLFxcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoRFBLKSxcXG4rXFx0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFRYR0FQSyksXFxuK1xcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEQUNLKSxcXG4rXFx0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFJYX0RDSyksXFxuK1xcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChUWF9JUUspLFxcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoQ0lNM2spLFxcbit9O1xcbitcXG4rc3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0dzg5X3Jma19yZXBvcnRfbmFtZXMpID09IE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTKTtcXG4rXFxuIHN0YXRpY1xcbiB2b2lkIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiB7XFxuQEAgLTM5NzksOCArMzk5Niw4IEBAIHZvaWQgcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIH1cXG4gXFxuIHN0YXRpY1xcbi1pbnQgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLFxcbi1cXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbXMpXFxuK2ludCBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLFxcbitcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBtcylcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXJma193YWl0O1xcbiBcXHR1bnNpZ25lZCBsb25nIHRpbWVfbGVmdDtcXG5AQCAtNDAxNyw2ICs0MDM0LDI5IEBAIGludCBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqcmZrX25hbWUsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWNcXG4raW50IF9fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuK1xcdFxcdFxcdFxcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF90eXBlcyByZmtfdHlwZSxcXG4rXFx0XFx0XFx0XFx0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsXFxuK1xcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbitcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbXMpXFxuK3tcXG4rXFx0Y29uc3QgY2hhciAqcmZrX25hbWUgPSBydHc4OV9yZmtfcmVwb3J0X25hbWVzW3Jma190eXBlXTtcXG4rXFx0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKndhaXQgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VyZmtfd2FpdDtcXG4rXFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IHdhaXQtXFx1MDAzZXJlY29yZF9wdHI7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIHJma19uYW1lLCBtcyk7XFxuK1xcbitcXHRpZiAocmVjb3JkKVxcbitcXHRcXHRyZWNvcmQtXFx1MDAzZXN0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LVxcdTAwM2VzdGF0ZTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKyNkZWZpbmUgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIHR5cGUsIHBoeV9pZHgsIGNoYW4sIG1zKSBcXFxcXFxuK1xcdF9fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFJUVzg5X1JGS19SRVBPUlRfICMjIHR5cGUsIHBoeV9pZHgsIGNoYW4sIG1zKVxcbitcXG4gc3RhdGljIHZvaWRcXG4gcnR3ODlfcGh5X2MyaF9yZmtfcmVwb3J0X3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKmMyaCwgdTMyIGxlbilcXG4ge1xcbkBAIC00MTIyLDcgKzQxNjIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19wcmVfbnRmeV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChSVFc4OV9DSEtfRldfRkVBVFVSRV9HUk9VUChXSVRIX1JGS19QUkVfTk9USUZZLCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VmdykpIHtcXG4gXFx0XFx0cnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChydHdkZXYpO1xcbiBcXHRcXHRydHc4OV9md19oMmNfcmZfcHJlX250ZnkocnR3ZGV2LCBwaHlfaWR4KTtcXG4tXFx0XFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJQUkVfTlRGWVxcXCIsIG1zKTtcXG4rXFx0XFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFBSRV9OVEZZLCBwaHlfaWR4LCBOVUxMLCBtcyk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtNDE1Miw3ICs0MTkyLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHNzaV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJUU1NJXFxcIiwgbXMpO1xcbitcXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHNzaV9hbmRfd2FpdCk7XFxuIFxcbkBAIC00MTY5LDcgKzQyMDksNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19pcWtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcXFwiSVFLXFxcIiwgbXMpO1xcbitcXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIElRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19pcWtfYW5kX3dhaXQpO1xcbiBcXG5AQCAtNDE4Niw3ICs0MjI2LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfZHBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXFxcIkRQS1xcXCIsIG1zKTtcXG4rXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBEUEssIHBoeV9pZHgsIGNoYW4sIG1zKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfZHBrX2FuZF93YWl0KTtcXG4gXFxuQEAgLTQyMDMsNyArNDI0Myw3IEBAIGludCBydHc4OV9waHlfcmZrX3R4Z2Fwa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJUWEdBUEtcXFwiLCBtcyk7XFxuK1xcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3R4Z2Fwa19hbmRfd2FpdCk7XFxuIFxcbkBAIC00MjIwLDcgKzQyNjAsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kYWNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXFxcIkRBQ0tcXFwiLCBtcyk7XFxuK1xcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgREFDSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19kYWNrX2FuZF93YWl0KTtcXG4gXFxuQEAgLTQyMzcsNyArNDI3Nyw3IEBAIGludCBydHc4OV9waHlfcmZrX3J4ZGNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXFxcIlJYX0RDS1xcXCIsIG1zKTtcXG4rXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSWF9EQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQpO1xcbiBcXG5AQCAtNDI1NCw3ICs0Mjk0LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhpcWtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcXFwiVFhfSVFLXFxcIiwgbXMpO1xcbitcXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdCk7XFxuIFxcbkBAIC00MjcxLDcgKzQzMTEsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19jaW0za19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJDSU0za1xcXCIsIG1zKTtcXG4rXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBDSU0zaywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19jaW0za19hbmRfd2FpdCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxcbmluZGV4IDUzMjIzMjg5MjgzMWYwLi4yNTU0MTZlYmFmOTAwOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxcbkBAIC0xMTYzLDYgKzExNjMsOSBAQCB2b2lkIHJ0dzg5X3BoeV9yYXRlX3BhdHRlcm5fdmlmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gYm9vbCBydHc4OV9waHlfYzJoX2Noa19hdG9taWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjbGFzcywgdTggZnVuYyk7XFxuIHZvaWQgcnR3ODlfcGh5X2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKTtcXG4rXFxuK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdO1xcbitcXG4gaW50IHJ0dzg5X3BoeV9yZmtfcHJlX250ZnlfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsXFxuIFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbXMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxcbmluZGV4IDA4NmVmNzdlYmI5ZmNkLi5hZjkxODEzNjdiMjI1ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxcbkBAIC04NzE4LDYgKzg3MTgsNyBAQFxcbiAjZGVmaW5lIFJSX1ZDTyAweGIyXFxuICNkZWZpbmUgUlJfVkNPX1ZBTCBHRU5NQVNLKDE4LCAxNClcXG4gI2RlZmluZSBSUl9WQ09fU0VMIEdFTk1BU0soOSwgOClcXG4rI2RlZmluZSBSUl9WQ09fU1RTIEdFTk1BU0soNywgMClcXG4gI2RlZmluZSBSUl9WQ0kgMHhiM1xcbiAjZGVmaW5lIFJSX1ZDSV9PTiBCSVQoNylcXG4gI2RlZmluZSBSUl9MUEYgMHhiN1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcXG5pbmRleCA2MGYzNjI1OTM2OTY2Zi4uMDNlMWQxZGY4NmIzMjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXFxuQEAgLTE5MTgsMTEgKzE5MTgsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUxYl9zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbiBcXHRcXHRcXHRcXHQgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxcbiB7XFxuLVxcdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cXHUwMDNlcmZlX3Bhcm1zO1xcbiBcXHR1OCBiYW5kID0gY2hhbi1cXHUwMDNlYmFuZF90eXBlO1xcbi1cXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcXG4tXFx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfQ0NLXVtyZWdkXTtcXG4tXFx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVxcdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xcbitcXHR1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTtcXG4rXFx0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcXG4gXFxuIFxcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXFxuIFxcdFxcdHJ0dzg4NTFiX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcXG5AQCAtMjc3OSw2ICsyNzc3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7XFxuICNlbmRpZlxcbiBcXHQueHRhbF9pbmZvXFx0XFx0PSBcXHUwMDI2cnR3ODg1MWJfeHRhbF9pbmZvLFxcbiBcXHQuZGVmYXVsdF9xdWlya3NcXHRcXHQ9IDAsXFxuK1xcdC50eHRpbWVfbGltaXRfMmdoelxcdD0gMCxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTChydHc4ODUxYl9jaGlwX2luZm8pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jXFxuaW5kZXggYTljMzA5YzI0NWMzMzQuLjNhNzMwYTgyNjk0OTgwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xcbkBAIC0xNDg4Niw4ICsxNDg4Niw4IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MWJfZGZsdF9wYXJtcyA9IHtcXG4gXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWcsXFxuIFxcdH0sXFxuIFxcdC50eF9zaGFwZSA9IHtcXG4tXFx0XFx0LmxtdCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXFxuLVxcdFxcdC5sbXRfcnUgPSBcXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxcbitcXHRcXHQubG10X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcXG4rXFx0XFx0LmxtdF9ydV92MCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbkBAIC0xNDkwMiw4ICsxNDkwMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTFiX3JmZV9wYXJtc190eXBlMiA9IHtcXG4gXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWdfdHlwZTIsXFxuIFxcdH0sXFxuIFxcdC50eF9zaGFwZSA9IHtcXG4tXFx0XFx0LmxtdCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXFxuLVxcdFxcdC5sbXRfcnUgPSBcXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxcbitcXHRcXHQubG10X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcXG4rXFx0XFx0LmxtdF9ydV92MCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcXG5pbmRleCAyYzFmMTY2ZTY4N2YwNi4uNjc1NjRlNThkMTIzMzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXFxuQEAgLTI1MTYsNiArMjUxNiw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmFfY2hpcF9pbmZvID0ge1xcbiAjZW5kaWZcXG4gXFx0Lnh0YWxfaW5mb1xcdFxcdD0gXFx1MDAyNnJ0dzg4NTJhX3h0YWxfaW5mbyxcXG4gXFx0LmRlZmF1bHRfcXVpcmtzXFx0XFx0PSAwLFxcbitcXHQudHh0aW1lX2xpbWl0XzJnaHpcXHQ9IDAsXFxuIH07XFxuIEVYUE9SVF9TWU1CT0wocnR3ODg1MmFfY2hpcF9pbmZvKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xcbmluZGV4IDRlN2IwNjhhYWE3NWIxLi5iMGFjMjlkMWEwMWM3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcXG5AQCAtMTExMyw2ICsxMTEzLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYl9jaGlwX2luZm8gPSB7XFxuICNlbmRpZlxcbiBcXHQueHRhbF9pbmZvXFx0XFx0PSBOVUxMLFxcbiBcXHQuZGVmYXVsdF9xdWlya3NcXHRcXHQ9IDAsXFxuK1xcdC50eHRpbWVfbGltaXRfMmdoelxcdD0gMCxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYl9jaGlwX2luZm8pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcXG5pbmRleCBkZjVmYmFlNTBmZjU1MC4uYTYxYzY0ZmRmZjRkYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcXG5AQCAtMTMyMSwxMSArMTMyMSw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTJieF9zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4gXFx0XFx0XFx0XFx0ICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVxcdTAwM2VyZmVfcGFybXM7XFxuIFxcdHU4IGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuLVxcdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xcbi1cXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xcbi1cXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XFxuK1xcdHU4IHR4X3NoYXBlX2NjayA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19DQ0spO1xcbitcXHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcXG4gXFx0XFx0cnR3ODg1MmJ4X2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jXFxuaW5kZXggMDc5NDVkMDZkYzU5YzkuLjEzMzJkMWI5MjM1YWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xcbkBAIC0yMjkyMSw3ICsyMjkyMSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmJfZGZsdF9wYXJtcyA9IHtcXG4gXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUyYl90eHB3cl9sbXRfcnVfNWcsXFxuIFxcdH0sXFxuIFxcdC50eF9zaGFwZSA9IHtcXG4tXFx0XFx0LmxtdCA9IFxcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXQsXFxuLVxcdFxcdC5sbXRfcnUgPSBcXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10X3J1LFxcbitcXHRcXHQubG10X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTJiX3R4X3NoYXBlX2xtdCxcXG4rXFx0XFx0LmxtdF9ydV92MCA9IFxcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsXFxuIFxcdH0sXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXFxuaW5kZXggN2ZjYzg3N2Y2ZWEwYzQuLjRiZWE4NWI0Mjc4YjhjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXFxuQEAgLTk1MCw2ICs5NTAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJidF9jaGlwX2luZm8gPSB7XFxuICNlbmRpZlxcbiBcXHQueHRhbF9pbmZvXFx0XFx0PSBOVUxMLFxcbiBcXHQuZGVmYXVsdF9xdWlya3NcXHRcXHQ9IDAsXFxuK1xcdC50eHRpbWVfbGltaXRfMmdoelxcdD0gMCxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xcbmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcXG5AQCAtMjE5MywxMSArMjE5Myw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTJjX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVxcdTAwM2VyZmVfcGFybXM7XFxuIFxcdHU4IGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuLVxcdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xcbi1cXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xcbi1cXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XFxuK1xcdHU4IHR4X3NoYXBlX2NjayA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19DQ0spO1xcbitcXHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcXG4gXFx0XFx0cnR3ODg1MmNfYmJfc2V0X3R4X3NoYXBlX2RmaXIocnR3ZGV2LCBjaGFuLCB0eF9zaGFwZV9jY2ssIHBoeV9pZHgpO1xcbkBAIC0zMzE5LDYgKzMzMTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJjX2NoaXBfaW5mbyA9IHtcXG4gI2VuZGlmXFxuIFxcdC54dGFsX2luZm9cXHRcXHQ9IE5VTEwsXFxuIFxcdC5kZWZhdWx0X3F1aXJrc1xcdFxcdD0gMCxcXG4rXFx0LnR4dGltZV9saW1pdF8yZ2h6XFx0PSAwLFxcbiB9O1xcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJjX2NoaXBfaW5mbyk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmNcXG5pbmRleCAyNGMzOTBiNmYzZDM0NC4uYjcyZmVlMzc3ZTljMGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXFxuQEAgLTU3MTUzLDcgKzU3MTUzLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUyY19kZmx0X3Bhcm1zID0ge1xcbiBcXHRcXHQubG10X3J1ID0gXFx1MDAyNnJ0dzg5Xzg4NTJjX3R4cHdyX2xtdF9ydV82ZyxcXG4gXFx0fSxcXG4gXFx0LnR4X3NoYXBlID0ge1xcbi1cXHRcXHQubG10ID0gXFx1MDAyNnJ0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdCxcXG4tXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXFxuK1xcdFxcdC5sbXRfdjAgPSBcXHUwMDI2cnR3ODlfODg1MmNfdHhfc2hhcGVfbG10LFxcbitcXHRcXHQubG10X3J1X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSxcXG4gXFx0fSxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXFxuaW5kZXggYWQzNjE4ZGZkNTdkMDAuLjNlODcwODgwYjU5OGU4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xcbkBAIC0yNTAyLDE1ICsyNTAyLDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJhX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVxcdTAwM2VyZmVfcGFybXM7XFxuLVxcdGNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSBcXHUwMDI2cmZlX3Bhcm1zLVxcdTAwM2V0eF9zaGFwZTtcXG4rXFx0dTggYmFuZCA9IGNoYW4tXFx1MDAzZWJhbmRfdHlwZTtcXG4gXFx0dTggdHhfc2hhcGVfaWR4O1xcbi1cXHR1OCBiYW5kLCByZWdkO1xcbi1cXG4tXFx0YmFuZCA9IGNoYW4tXFx1MDAzZWJhbmRfdHlwZTtcXG4tXFx0cmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XFxuLVxcdHR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtXFx1MDAzZWxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XFxuIFxcbitcXHR0eF9zaGFwZV9pZHggPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XFxuIFxcdGlmICh0eF9zaGFwZV9pZHggPT0gMClcXG4gXFx0XFx0cnR3ODkyMmFfYmJfdHhfdHJpYW5ndWxhcihydHdkZXYsIGZhbHNlLCBwaHlfaWR4KTtcXG4gXFx0ZWxzZVxcbkBAIC0zMzAyLDYgKzMyOTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJhX2NoaXBfaW5mbyA9IHtcXG4gI2VuZGlmXFxuIFxcdC54dGFsX2luZm9cXHRcXHQ9IE5VTEwsXFxuIFxcdC5kZWZhdWx0X3F1aXJrc1xcdFxcdD0gMCxcXG4rXFx0LnR4dGltZV9saW1pdF8yZ2h6XFx0PSAwLFxcbiB9O1xcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5MjJhX2NoaXBfaW5mbyk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcXG5pbmRleCA4MzhjMjYyMzE4OTdkNi4uY2MxMjdhM2U4NmVmODggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXFxuQEAgLTExMzYsOCArMTEzNiwxMCBAQCBzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHR1MzIgc3ViX2NhcnIgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhfU1VCX0JBTkRfVkFMVUUsIG1hY19pZHgpO1xcbiBcXHR1MzIgY2hrX3JhdGUgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhSQVRFX0NISywgbWFjX2lkeCk7XFxuIFxcdHUzMiByZl9tb2QgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfV01BQ19SRk1PRCwgbWFjX2lkeCk7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuIFxcdHU4IHR4c2IyMCA9IDAsIHR4c2I0MCA9IDAsIHR4c2I4MCA9IDA7XFxuIFxcdHU4IHJmX21vZF92YWwsIGNoa19yYXRlX21hc2ssIHNpZnM7XFxuK1xcdHUxNiB0eF90aW1lID0gQU1QRFVfTUFYX1RJTUVfVjE7XFxuIFxcdHUzMiB0eHNiO1xcbiBcXHR1MzIgcmVnO1xcbiBcXG5AQCAtMTIxOCw2ICsxMjIwLDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcbiBcXHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfTVVFRENBX0VOLCBtYWNfaWR4KTtcXG4gXFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBCX0JFX1NJRlNfTUFDVFhFTl9UQl9UMV9ET1QwNVVTX01BU0ssIHNpZnMpO1xcbitcXG4rXFx0aWYgKGNoYW4tXFx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHIFxcdTAwMjZcXHUwMDI2IGNoaXAtXFx1MDAzZXR4dGltZV9saW1pdF8yZ2h6KVxcbitcXHRcXHR0eF90aW1lID0gbWluX3QodTMyLCB0eF90aW1lLCBjaGlwLVxcdTAwM2V0eHRpbWVfbGltaXRfMmdoeiAqIDEwMDAgXFx1MDAzZVxcdTAwM2UgMTUpO1xcbitcXG4rXFx0cmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX0FNUERVX0FHR19MSU1JVCwgbWFjX2lkeCk7XFxuK1xcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgQl9CRV9BTVBEVV9NQVhfVElNRV9NQVNLLCB0eF90aW1lKTtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9zY29fYmFya2VyX3RocmVzaG9sZFsxNF0gPSB7XFxuQEAgLTI3MzksMTYgKzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0ICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhICpkID0gcnR3ZGV2LVxcdTAwM2VwaHlfaW5mby5iYl93cmFwX2RhdGE7XFxuLVxcdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cXHUwMDNlcmZlX3Bhcm1zO1xcbi1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gXFx1MDAyNnJmZV9wYXJtcy1cXHUwMDNldHhfc2hhcGU7XFxuK1xcdHU4IGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuIFxcdHU4IHR4X3NoYXBlX2lkeDtcXG4tXFx0dTggYmFuZCwgcmVnZDtcXG4gXFx0Y29uc3QgdTE2ICp0aDtcXG4gXFxuLVxcdGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuLVxcdHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xcbi1cXHR0eF9zaGFwZV9pZHggPSAoKnR4X3NoYXBlLVxcdTAwM2VsbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xcbi1cXG4rXFx0dHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xcbiBcXHRpZiAodHhfc2hhcGVfaWR4ID09IDApXFxuIFxcdFxcdGdvdG8gZGlzYWJsZTtcXG4gXFxuQEAgLTM0MzcsNiArMzQ0MCw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmRfY2hpcF9pbmZvID0ge1xcbiAjZW5kaWZcXG4gXFx0Lnh0YWxfaW5mb1xcdFxcdD0gTlVMTCxcXG4gXFx0LmRlZmF1bHRfcXVpcmtzXFx0XFx0PSBCSVQoUlRXODlfUVVJUktfVEhFUk1BTF9QUk9UXzEyMEMpLFxcbitcXHQudHh0aW1lX2xpbWl0XzJnaHpcXHQ9IDQ2MDgsXFxuIH07XFxuIEVYUE9SVF9TWU1CT0wocnR3ODkyMmRfY2hpcF9pbmZvKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjQzLjY0NjE4Njc4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMDQ5ODUzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBydHc4OSB3aXJlbGVzcyBkcml2ZXIgKFJlYWx0ZWsgODAyLjExYXgvYmUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBmaXJtd2FyZSBlbXVsYXRpb24gKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIpIHRvIHBhc3MgdGhlIGluaXRpYWwgcHJvYmUgYW5kIHJlYWNoIHRoZSBjb3JlIGxvZ2ljIChNQUMvUEhZIGluaXRpYWxpemF0aW9uLCBSRiBjYWxpYnJhdGlvbiwgZXRjLikuIFRoZXJlZm9yZSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxOThjYTM0MWFhYzBkY2ZhMGVhNWExYjI3OWUzYzAxYTlkZTEzZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAxMjoyNjo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNcbmluZGV4IDY4ZGFkNjA5MGY4N2UyLi45Yjk2YjU3YmMzOWNkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTQ4Niw2ICs0ODYsMzcgQEAgdm9pZCBydHc4OV9jb3JlX3NldF9jaGlwX3R4cHdyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9fcnR3ODlfY29yZV9zZXRfY2hpcF90eHB3cihydHdkZXYsIGNvbmYuY2hhbnNbMV0sIFJUVzg5X1BIWV8xKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfcmVjb3JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbitcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbitcdFx0XHRcdCAgYm9vbCBzdGFydClcbit7XG4rXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbitcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaW5mby1cdTAwM2VyZWNvcmRfaWR4XTtcbitcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbitcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XG4rXHRpbnQgcGF0aDtcbitcbitcdGlmICghc3RhcnQpXG4rXHRcdGdvdG8gZW5kO1xuK1xuK1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gcmVjb3JkO1xuK1x0cmVjb3JkLVx1MDAzZXBoeV9pZHggPSBydHd2aWZfbGluay1cdTAwM2VwaHlfaWR4O1xuK1xuK1x0Zm9yIChwYXRoID0gMDsgcGF0aCBcdTAwM2MgcGF0aF9udW07IHBhdGgrKykge1xuK1x0XHRyZWNvcmQtXHUwMDNlY2hbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfQ0ZHQ0gsXG4rXHRcdFx0XHRcdFx0IFJSX0NGR0NIX0JBTkQwIHwgUlJfQ0ZHQ0hfQ0gpO1xuK1x0XHRyZWNvcmQtXHUwMDNlY3ZbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfVkNPLFxuK1x0XHRcdFx0XHRcdCBSUl9WQ09fU0VMIHwgUlJfVkNPX1NUUyk7XG4rXHRcdHJlY29yZC1cdTAwM2VjNVtwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9TWU5GQiwgUkZSRUdfTUFTSyk7XG4rXHR9XG4rXG4rXHRyZXR1cm47XG4rXG4rZW5kOlxuK1x0aW5mby1cdTAwM2VyZWNvcmRfaWR4ID0gKGluZm8tXHUwMDNlcmVjb3JkX2lkeCArIDEpICUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SO1xuK1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gTlVMTDtcbit9XG4rXG4gdm9pZCBydHc4OV9jaGlwX3Jma19jaGFubmVsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHQgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcbiB7XG5AQCAtNTAzLDkgKzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpO1xuIFx0fVxuIFxuLVx0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZXJma19jaGFubmVsKVxuK1x0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZXJma19jaGFubmVsKSB7XG4rXHRcdHJ0dzg5X2NvcmVfcmZrX3JlY29yZChydHdkZXYsIHJ0d3ZpZl9saW5rLCB0cnVlKTtcbitcbiBcdFx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlcmZrX2NoYW5uZWwocnR3ZGV2LCBydHd2aWZfbGluayk7XG4gXG4rXHRcdHJ0dzg5X2NvcmVfcmZrX3JlY29yZChydHdkZXYsIHJ0d3ZpZl9saW5rLCBmYWxzZSk7XG4rXHR9XG4rXG4gXHRpZiAocHJlaGRsX2xpbmspIHtcbiBcdFx0cnR3ODlfZW50aXR5X2ZvcmNlX2h3KHJ0d2RldiwgUlRXODlfUEhZX05VTSk7XG4gXHRcdHJ0dzg5X3NldF9jaGFubmVsKHJ0d2Rldik7XG5AQCAtNTI2NSw2ICs1MzAxLDM3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2VudGVyX2xwc190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3Rzc2lfcmVjb3JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4rXHR1OCBwYXRoX251bSA9IG1pbihjaGlwLVx1MDAzZXJmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpO1xuK1x0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlcmZrX3dhaXQ7XG4rXHRpbnQgaSA9IGluZm8tXHUwMDNlcmVjb3JkX3Rzc2lfaWR4O1xuK1x0dTMyIGJhc2U7XG4rXHR1MzIgbWFzaztcbitcdGludCBwYXRoO1xuK1xuK1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggPSAoaW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggKyAxKSAlXG4rXHRcdFx0XHRSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7XG4rXG4rXHRpZiAoY2hpcC1cdTAwM2VjaGlwX2lkID09IFJUTDg5MjJBKSB7XG4rXHRcdGJhc2UgPSAweDJlZTEwO1xuK1x0XHRtYXNrID0gMHg3ZmMwMDtcbitcdH0gZWxzZSB7XG4rXHRcdGJhc2UgPSAweDJmOTE4O1xuK1x0XHRtYXNrID0gMHgwMDAwMDFmZjtcbitcdH1cbitcbitcdGZvciAocGF0aCA9IDA7IHBhdGggXHUwMDNjIHBhdGhfbnVtOyBwYXRoKyspIHtcbitcdFx0dTMyIGFkZHIgPSBiYXNlICsgMHgxMDAgKiBwYXRoO1xuK1xuK1x0XHRpbmZvLVx1MDAzZXRzc2lfY29kZVtpXVtwYXRoXSA9IHJ0dzg5X3JlYWQzMl9tYXNrKHJ0d2RldiwgYWRkciwgbWFzayk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRlbnVtIHJ0dzg5X2VudGl0eV9tb2RlIG1vZGU7XG5AQCAtNTI3NCw2ICs1MzQxLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfdHJhY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRyZXR1cm47XG4gXG4gXHRydHc4OV9jaGlwX3Jma190cmFjayhydHdkZXYpO1xuK1xuK1x0cnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQocnR3ZGV2KTtcbiB9XG4gXG4gdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9wMnBfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuQEAgLTcxODAsOSArNzI0OSwxOSBAQCBpbnQgcnR3ODlfY29yZV9tbHNyX3N3aXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZixcbiBzdGF0aWMgaW50IHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VtYWNfZGVmO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuK1x0Ym9vbCBiYl9wcmVpbml0ID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlKTtcbitcdC8qXG4rXHQgKiBOb3JtYWxseSBpbiBwcm9iZSBzdGFnZSwgd2UgZG9uJ3QgbmVlZCB0byBkbyBCQiBwcmUtaW5pdGlhbGl6YXRpb24uXG4rXHQgKiBIb3dldmVyLCBSVEw4OTIyRCBmaXJtd2FyZSBjYW4gYWNjZXNzIEJCIHJlZ2lzdGVycyBhdCBmaXJtd2FyZVxuK1x0ICogaW5pdGlhbCBzdGF0ZSwgc28gaW5pdGlhbGl6ZSBpdCB0byBhdm9pZCBCQiBJTyBzdHVjayBpbiBmaXJtd2FyZS5cbitcdCAqL1xuK1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyRClcbitcdFx0YmJfcHJlaW5pdCA9IHRydWU7XG4rXG4rXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgZmFsc2UsIGJiX3ByZWluaXQpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXG5pbmRleCA1NTQ3ODg4ZDdlNjdhNC4uMmVhY2I1ZmU5N2YyMDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcbkBAIC00Mjk0LDggKzQyOTQsMTIgQEAgc3RydWN0IHJ0dzg5X3R4cHdyX3J1bGVfNmdoeiB7XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUge1xuLVx0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbi1cdGNvbnN0IHU4ICgqbG10X3J1KVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuK1x0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXVxuK1x0XHQgICAgICAgW05VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUl07XG4rXHRjb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuK1xuK1x0Y29uc3QgdTggKCpsbXRfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbitcdGNvbnN0IHU4ICgqbG10X3J1X3YwKVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyB7XG5AQCAtNDM4OSwxMiArNDM5MywxMyBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfbG10X3J1XzZnaHpfZGF0YSB7XG4gXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhIHtcbiBcdHN0cnVjdCBydHc4OV90eHB3cl9jb25mIGNvbmY7XG4tXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbitcdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dXG4rXHQgICAgW05VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUl07XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X3J1X2RhdGEge1xuIFx0c3RydWN0IHJ0dzg5X3R4cHdyX2NvbmYgY29uZjtcbi1cdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbitcdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X3JmZV9kYXRhIHtcbkBAIC00NzkwLDYgKzQ3OTUsNyBAQCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHtcbiBcdGNvbnN0IHN0cnVjdCB3aXBoeV93b3dsYW5fc3VwcG9ydCAqd293bGFuX3N0dWI7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfeHRhbF9pbmZvICp4dGFsX2luZm87XG4gXHR1bnNpZ25lZCBsb25nIGRlZmF1bHRfcXVpcmtzOyAvKiBiaXRtYXAgb2YgcnR3ODlfcXVpcmtzICovXG4rXHR1MTYgdHh0aW1lX2xpbWl0XzJnaHo7XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfY2hpcF92YXJpYW50IHtcbkBAIC01NDg0LDExICs1NDkwLDQzIEBAIGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSB7XG4gXHRSVFc4OV9SRktfU1RBVEVfSDJDX0NNRF9FUlIgPSAweDQsXG4gfTtcbiBcbitlbnVtIHJ0dzg5X3Jma19yZXBvcnRfdHlwZXMge1xuK1x0UlRXODlfUkZLX1JFUE9SVF9QUkVfTlRGWSxcbitcdFJUVzg5X1JGS19SRVBPUlRfVFNTSSxcbitcdFJUVzg5X1JGS19SRVBPUlRfSVFLLFxuK1x0UlRXODlfUkZLX1JFUE9SVF9EUEssXG4rXHRSVFc4OV9SRktfUkVQT1JUX1RYR0FQSyxcbitcdFJUVzg5X1JGS19SRVBPUlRfREFDSyxcbitcdFJUVzg5X1JGS19SRVBPUlRfUlhfRENLLFxuK1x0UlRXODlfUkZLX1JFUE9SVF9UWF9JUUssXG4rXHRSVFc4OV9SRktfUkVQT1JUX0NJTTNrLFxuK1xuK1x0TlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVMsXG4rfTtcbitcbisjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUiAyXG4rI2RlZmluZSBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlIgMTBcbitcbitzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCB7XG4rXHR1MzIgY2hbUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTtcbitcdHUzMiBjdltSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdO1xuK1x0dTMyIGM1W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4rXHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeDtcbitcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSBzdGF0ZXNbTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVNdO1xuK307XG4rXG4gc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8ge1xuIFx0c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjtcbiBcdGt0aW1lX3Qgc3RhcnRfdGltZTtcbiBcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSBzdGF0ZTtcbiBcdHU4IHZlcnNpb247XG4rXG4rXHRpbnQgcmVjb3JkX2lkeDtcbitcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmRfcHRyO1xuK1x0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgcmVjb3Jkc1tSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlJdO1xuK1xuK1x0aW50IHJlY29yZF90c3NpX2lkeDtcbitcdHUzMiB0c3NpX2NvZGVbUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SXVtSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdO1xuIH07XG4gXG4gI2RlZmluZSBSVFc4OV9EQUNLX1BBVEhfTlIgMlxuQEAgLTc1NjksOCArNzYwNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9iYl9zZXRodyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFxuK1x0cnR3ODlfaW9fcGFjayhydHdkZXYpO1xuK1xuIFx0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJiX3NldGh3KVxuIFx0XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2ViYl9zZXRodyhydHdkZXYpO1xuK1xuK1x0cnR3ODlfaW9fdW5wYWNrKHJ0d2Rldik7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jaGlwX3Jma19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbkBAIC03Nzg3LDYgKzc4MjksMzAgQEAgc3RhdGljIGlubGluZSB1OCBydHc4OV9yZWdkX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJhbmQpXG4gXHRyZXR1cm4gdHhwd3JfcmVnZDtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB1OCBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZCxcbitcdFx0XHRcdFx0ZW51bSBydHc4OV9yYXRlX3NlY3Rpb24gcnMpXG4re1xuK1x0c3RydWN0IHJ0dzg5X3JlZ3VsYXRvcnlfaW5mbyAqcmVndWxhdG9yeSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZWd1bGF0b3J5O1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbitcdGNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSBcdTAwMjZyZmVfcGFybXMtXHUwMDNldHhfc2hhcGU7XG4rXHR1OCByZWc2X3B3ciA9IHJlZ3VsYXRvcnktXHUwMDNlcmVnXzZnaHpfcG93ZXI7XG4rXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcbitcbitcdGlmICh1bmxpa2VseShycyBcdTAwM2U9IFJUVzg5X1JTX1RYX1NIQVBFX05VTSkpXG4rXHRcdHJzID0gUlRXODlfUlNfT0ZETTtcbitcbitcdGlmICghdHhfc2hhcGUtXHUwMDNlbG10KVxuK1x0XHRnb3RvIHYwO1xuK1xuK1x0aWYgKGJhbmQgIT0gUlRXODlfQkFORF82RylcbitcdFx0cmVnNl9wd3IgPSBSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUO1xuK1xuK1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10KVtiYW5kXVtyc11bcmVnZF1bcmVnNl9wd3JdO1xuK1xuK3YwOlxuK1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10X3YwKVtiYW5kXVtyc11bcmVnZF07XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jdHJsX2J0Z19idF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4sXG4gXHRcdFx0XHRcdGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2RlYnVnLmNcbmluZGV4IDhmNWFmODczZTA5ZjVlLi5jODEzOGM0MTE2YzIxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jXG5AQCAtOTMsNiArOTMsNyBAQCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyB7XG4gXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGJlYWNvbl9pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYztcbiBcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19iYjtcbitcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19yZjtcbiBcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgbW9uaXRvcl9vcHRzO1xuIH07XG4gXG5AQCAtNTM5Niw2ICs1Mzk3LDExOCBAQCBydHc4OV9kZWJ1Z19wcml2X2RpYWdfYmJfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdHJldHVybiBwIC0gYnVmO1xuIH1cbiBcbitzdGF0aWMgc3NpemVfdFxuK3J0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuK1x0XHRcdCAgICAgc3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiAqZGVidWdmc19wcml2LFxuK1x0XHRcdCAgICAgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4re1xuK1x0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlcmZrX3dhaXQ7XG4rXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XG4rXHRpbnQgaSwgajtcbitcbitcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiUkZLIChuZXh0IGluZGV4OiAlZClcXG5cIiwgaW5mby1cdTAwM2VyZWNvcmRfaWR4KTtcbitcbitcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICBQSFktWCAgICA9XCIpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpKyspIHtcbitcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbitcbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgJTRkIFwiLCByZWNvcmQtXHUwMDNlcGh5X2lkeCk7XG4rXHR9XG4rXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIlxcblwiKTtcbitcbitcdGZvciAoaiA9IDA7IGogXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUjsgaisrKSB7XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICBTJWQtQ0ggICAgPVwiLCBqKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpKyspIHtcbitcdFx0XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkID0gXHUwMDI2aW5mby1cdTAwM2VyZWNvcmRzW2ldO1xuK1xuK1x0XHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICUwNXhcIiwgcmVjb3JkLVx1MDAzZWNoW2pdKTtcbitcdFx0fVxuK1x0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIlxcblwiKTtcbitcbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgIFMlZC1DViAgICA9XCIsIGopO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkrKykge1xuK1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4rXG4rXHRcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgJTA1eFwiLCByZWNvcmQtXHUwMDNlY3Zbal0pO1xuK1x0XHR9XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiXFxuXCIpO1xuK1xuK1x0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAgUyVkLUM1ICAgID1cIiwgaik7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XG4rXHRcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbitcbitcdFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAlMDV4XCIsIHJlY29yZC1cdTAwM2VjNVtqXSk7XG4rXHRcdH1cbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCJcXG5cIik7XG4rXHR9XG4rXG4rXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFUzsgaisrKSB7XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICAlLThzID1cIiwgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tqXSk7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XG4rXHRcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbitcbitcdFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAlNGQgXCIsIHJlY29yZC1cdTAwM2VzdGF0ZXNbal0pO1xuK1x0XHR9XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiXFxuXCIpO1xuK1x0fVxuK1xuK1x0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCJUU1NJLXRyYWNrIChuZXh0IGluZGV4OiAlZClcXG5cIiwgaW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHgpO1xuK1xuK1x0Zm9yIChqID0gMDsgaiBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqKyspIHtcbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgIFMlZCAgICAgICA9XCIsIGopO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkrKylcbitcdFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAgICUwM3hcIiwgaW5mby1cdTAwM2V0c3NpX2NvZGVbaV1bal0pO1xuK1x0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIlxcblwiKTtcbitcdH1cbitcbitcdHJldHVybiBwIC0gYnVmO1xuK31cbitcbitzdGF0aWMgdm9pZCBydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbit7XG4rXHRzdHJ1Y3QgcnR3ODlfZW50aXR5X21nbnQgKm1nbnQgPSBcdTAwMjZydHdkZXYtXHUwMDNlaGFsLmVudGl0eV9tZ250O1xuK1x0c3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaztcbitcdHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjtcbitcdHVuc2lnbmVkIGludCBsaW5rX2lkO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShydHd2aWYsIFx1MDAyNm1nbnQtXHUwMDNlYWN0aXZlX2xpc3QsIG1nbnRfZW50cnkpXG4rXHRcdHJ0dzg5X3ZpZl9mb3JfZWFjaF9saW5rKHJ0d3ZpZiwgcnR3dmlmX2xpbmssIGxpbmtfaWQpXG4rXHRcdFx0cnR3ODlfY2hpcF9yZmtfY2hhbm5lbChydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbit9XG4rXG4rZW51bSBydHc4OV9kYmdfZGlhZ19yZl90eXBlIHtcbitcdFJUVzg5X0RCR19ESUFHX1JGX1JTVkQgPSAwLFxuK1x0UlRXODlfREJHX0RJQUdfUkZfUkZLID0gMSxcbit9O1xuK1xuK3N0YXRpYyBzc2l6ZV90XG4rcnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG4rXHRcdFx0ICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbit7XG4rXHR1OCB0eXBlO1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IGtzdHJ0b3U4KGJ1ZiwgMCwgXHUwMDI2dHlwZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGlmIChydHdkZXYtXHUwMDNlc2Nhbm5pbmcpXG4rXHRcdHJ0dzg5X2h3X3NjYW5fYWJvcnQocnR3ZGV2LCBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnNjYW5uaW5nX3ZpZik7XG4rXG4rXHRydHc4OV9sZWF2ZV9wc19tb2RlKHJ0d2Rldik7XG4rXG4rXHRzd2l0Y2ggKHR5cGUpIHtcbitcdGNhc2UgUlRXODlfREJHX0RJQUdfUkZfUkZLOlxuK1x0XHRydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHJ0d2Rldik7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0cmV0dXJuIGNvdW50O1xuK31cbitcbiBzdGF0aWMgc3NpemVfdFxuIHJ0dzg5X2RlYnVnX3ByaXZfbW9uaXRvcl9vcHRzX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdixcbkBAIC01NTA4LDYgKzU2MjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RlYnVnZnMgcnR3ODlfZGVidWdmc190ZW1wbCA9IHtcbiBcdC5iZWFjb25faW5mbyA9IHJ0dzg5X2RlYnVnX3ByaXZfZ2V0KGJlYWNvbl9pbmZvKSxcbiBcdC5kaWFnX21hYyA9IHJ0dzg5X2RlYnVnX3ByaXZfZ2V0KGRpYWdfbWFjLCBSU0laRV8xNkssIFJMT0NLKSxcbiBcdC5kaWFnX2JiID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19iYiwgUlNJWkVfOEssIFJMT0NLKSxcbitcdC5kaWFnX3JmID0gcnR3ODlfZGVidWdfcHJpdl9zZXRfYW5kX2dldChkaWFnX3JmLCBSV0xPQ0spLFxuIFx0Lm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLFxuIH07XG4gXG5AQCAtNTU2NSw2ICs1Njc5LDcgQEAgdm9pZCBydHc4OV9kZWJ1Z2ZzX2FkZF9zZWMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BcbiBcdHJ0dzg5X2RlYnVnZnNfYWRkX3IoYmVhY29uX2luZm8pO1xuIFx0cnR3ODlfZGVidWdmc19hZGRfcihkaWFnX21hYyk7XG4gXHRydHc4OV9kZWJ1Z2ZzX2FkZF9yKGRpYWdfYmIpO1xuK1x0cnR3ODlfZGVidWdmc19hZGRfcncoZGlhZ19yZik7XG4gXHRydHc4OV9kZWJ1Z2ZzX2FkZF9ydyhtb25pdG9yX29wdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4wMGZlNDgwODkwNzFiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTkxNCwxMyArMTkxNCwxNCBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19wcm9nX2NudF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcbiBzdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbitcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlbWFjX2RlZjtcbiBcdHUzMiB2YWwzMjtcbiBcbiBcdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9XQ1BVX0ZXX0NUUkwpO1xuIFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3ZGwgMHgxRTAgPSAweCV4XFxuXCIsIHZhbDMyKTtcbiBcbi1cdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CT09UX0RCRyk7XG4tXHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdZndkbCAweDgzRjAgPSAweCV4XFxuXCIsIHZhbDMyKTtcbitcdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgbWFjLVx1MDAzZWJvb3RfZGJnKTtcbitcdHJ0dzg5X2VycihydHdkZXYsIFwiW0VSUl1md2RsIDB4JXggPSAweCV4XFxuXCIsIG1hYy1cdTAwM2Vib290X2RiZywgdmFsMzIpO1xuIFxuIFx0cnR3ODlfZndfcHJvZ19jbnRfZHVtcChydHdkZXYpO1xuIH1cbkBAIC0xMTMyNSw2ICsxMTMyNiwxMiBAQCBmd190eF9zaGFwZV9sbXRfZW50cnlfdmFsaWQoY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9lbnRyeSAqZSxcbiBcdGlmIChlLVx1MDAzZXJlZ2QgXHUwMDNlPSBSVFc4OV9SRUdEX05VTSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuK1x0LyogZW5zdXJlIGNvbXBhdGliaWxpdHkgd29yayB3aXRoIDIvNSBHSHogKi9cbitcdHN0YXRpY19hc3NlcnQoUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVCA9PSAwKTtcbitcbitcdGlmIChlLVx1MDAzZXJlZzZfcHdyIFx1MDAzZT0gTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG5AQCAtMTEzMzksNyArMTEzNDYsNyBAQCB2b2lkIHJ0dzg5X2Z3X2xvYWRfdHhfc2hhcGVfbG10KHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfZGF0YSAqZGF0YSlcbiBcdFx0aWYgKCFmd190eF9zaGFwZV9sbXRfZW50cnlfdmFsaWQoXHUwMDI2ZW50cnksIGN1cnNvciwgY29uZikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdGRhdGEtXHUwMDNldltlbnRyeS5iYW5kXVtlbnRyeS50eF9zaGFwZV9yc11bZW50cnkucmVnZF0gPSBlbnRyeS52O1xuK1x0XHRkYXRhLVx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkudHhfc2hhcGVfcnNdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuQEAgLTExMzU2LDYgKzExMzYzLDEyIEBAIGZ3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeV92YWxpZChjb25zdCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5ICplLFxuIFx0aWYgKGUtXHUwMDNlcmVnZCBcdTAwM2U9IFJUVzg5X1JFR0RfTlVNKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4rXHQvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqL1xuK1x0c3RhdGljX2Fzc2VydChSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUID09IDApO1xuK1xuK1x0aWYgKGUtXHUwMDNlcmVnNl9wd3IgXHUwMDNlPSBOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVIpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbkBAIC0xMTM3MCw3ICsxMTM4Myw3IEBAIHZvaWQgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXRfcnUoc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9ydV9kYXRhICpkYXRhKVxuIFx0XHRpZiAoIWZ3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeV92YWxpZChcdTAwMjZlbnRyeSwgY3Vyc29yLCBjb25mKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdID0gZW50cnkudjtcbitcdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLmU3NmNlYTBiOWQ0MzE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC01ODE0LDYgKzU4MTQsNyBAQCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5IHtcbiBcdHU4IHR4X3NoYXBlX3JzO1xuIFx0dTggcmVnZDtcbiBcdHU4IHY7XG4rXHR1OCByZWc2X3B3cjtcbiB9IF9fcGFja2VkO1xuIFxuIC8qIG11c3QgY29uc2lkZXIgY29tcGF0aWJpbGl0eTsgZG9uJ3QgaW5zZXJ0IG5ldyBpbiB0aGUgbWlkICovXG5AQCAtNTgyMSw2ICs1ODIyLDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSB7XG4gXHR1OCBiYW5kO1xuIFx0dTggcmVnZDtcbiBcdHU4IHY7XG4rXHR1OCByZWc2X3B3cjtcbiB9IF9fcGFja2VkO1xuIFxuIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXG5pbmRleCA4YzM5NTUxN2JkMmZlMS4uZTIwNDkzNDFjNDE1NDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXG5AQCAtNDMwNCwxMyArNDMwNCwxNCBAQCBpbnQgcnR3ODlfbWFjX2Rpc2FibGVfYmJfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcbiBcbi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYilcbitpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcbitcdFx0XHQgICBib29sIGJiX3ByZWluaXQpXG4ge1xuIFx0aW50IHJldDtcbiBcbiBcdHJ0dzg5X21hY19jdHJsX2hjaV9kbWFfdHJ4KHJ0d2RldiwgdHJ1ZSk7XG4gXG4tXHRpZiAoaW5jbHVkZV9iYikge1xuK1x0aWYgKGluY2x1ZGVfYmIgfHwgYmJfcHJlaW5pdCkge1xuIFx0XHQvKiBPbmx5IGNhbGwgQkIgcHJlaW5pdCBpbmNsdWRpbmcgY29uZmlndXJhdGlvbiBvZiBCQiBNQ1UgZm9yXG4gXHRcdCAqIHRoZSBjaGlwcyB3aGljaCBuZWVkIHRvIGRvd25sb2FkIEJCIE1DVSBmaXJtd2FyZS4gT3RoZXJ3aXNlLFxuIFx0XHQgKiBjYWxsaW5nIHByZWluaXQgbGF0ZXIgdG8gcHJldmVudCB0b3VjaGluZyByZWdpc3RlcnMgYWZmZWN0aW5nXG5AQCAtNDM2Myw3ICs0MzY0LDcgQEAgaW50IHJ0dzg5X21hY19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdGJvb2wgaW5jbHVkZV9iYiA9ICEhY2hpcC1cdTAwM2ViYm1jdV9ucjtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgaW5jbHVkZV9iYik7XG4rXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgaW5jbHVkZV9iYiwgaW5jbHVkZV9iYik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGZhaWw7XG4gXG5AQCAtNzA0MywxMSArNzA0NCwyMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhX1xuIHtcbiAjZGVmaW5lIE1BQ19BWF9ERkxUX1RYX1RJTUUgNTI4MFxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VtYWNfZGVmO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0dTggbWFjX2lkeCA9IHJ0d3N0YV9saW5rLVx1MDAzZXJ0d3ZpZl9saW5rLVx1MDAzZW1hY19pZHg7XG4gXHR1MzIgbWF4X3R4X3RpbWUgPSB0eF90aW1lID09IDAgPyBNQUNfQVhfREZMVF9UWF9USU1FIDogdHhfdGltZTtcbitcdHN0cnVjdCBydHc4OV9lbnRpdHlfY29uZiBjb25mO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW47XG4gXHR1MzIgcmVnO1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHRpZiAoY2hpcC1cdTAwM2V0eHRpbWVfbGltaXRfMmdoeikge1xuK1x0XHRydHc4OV9lbnRpdHlfZ2V0X2NvbmYocnR3ZGV2LCBcdTAwMjZjb25mKTtcbitcdFx0Y2hhbiA9IGNvbmYuY2hhbnNbbWFjX2lkeF07XG4rXG4rXHRcdGlmIChjaGFuLVx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHKVxuK1x0XHRcdG1heF90eF90aW1lID0gbWluX3QodTMyLCBtYXhfdHhfdGltZSxcbitcdFx0XHRcdFx0ICAgIGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHopO1xuK1x0fVxuK1xuIFx0aWYgKHJ0d3N0YV9saW5rLVx1MDAzZWNjdGxfdHhfdGltZSkge1xuIFx0XHRydHdzdGFfbGluay1cdTAwM2VhbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgXHUwMDNlXHUwMDNlIDk7XG4gXHRcdHJldCA9IHJ0dzg5X2NoaXBfaDJjX3R4dGltZV9jbWFjX3RibChydHdkZXYsIHJ0d3N0YV9saW5rKTtcbkBAIC03MDU4LDkgKzcwNzEsMTMgQEAgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfc3RhX2xpbmsgKnJ0d3N0YV9cbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4rXHRcdGlmIChjaGlwLVx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXG4rXHRcdFx0bWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlPSA1O1xuK1x0XHRlbHNlXG4rXHRcdFx0bWF4X3R4X3RpbWUgPSBtYXhfdHhfdGltZSAqIDEwMDAgXHUwMDNlXHUwMDNlIDE1O1xuK1xuIFx0XHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIG1hYy1cdTAwM2VhZ2dfbGltaXQuYWRkciwgbWFjX2lkeCk7XG4tXHRcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgbWFjLVx1MDAzZWFnZ19saW1pdC5tYXNrLFxuLVx0XHRcdFx0ICAgbWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlIDUpO1xuK1x0XHRydHc4OV93cml0ZTMyX21hc2socnR3ZGV2LCByZWcsIG1hYy1cdTAwM2VhZ2dfbGltaXQubWFzaywgbWF4X3R4X3RpbWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC03NDM4LDYgKzc0NTUsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9heCA9IHtcbiBcdC5hZ2dfbGVuX2h0ID0gUl9BWF9BR0dfTEVOX0hUXzAsXG4gXHQucHNfc3RhdHVzID0gUl9BWF9QUFdSQklUX1NFVFRJTkcsXG4gXHQubXVfZ2lkID0gXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2F4LFxuK1x0LmJvb3RfZGJnID0gUl9BWF9CT09UX0RCRyxcbiBcbiBcdC5tdWVkY2FfY3RybCA9IHtcbiBcdFx0LmFkZHIgPSBSX0FYX01VRURDQV9FTixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuaW5kZXggNTM5MDYxZmMxNWU4NWIuLjk0Njc4YTI2MmUxNjRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuQEAgLTEwNjcsNiArMTA2Nyw3IEBAIHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiB7XG4gXHR1MzIgYWdnX2xlbl9odDtcbiBcdHUzMiBwc19zdGF0dXM7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX211X2dpZF9hZGRyICptdV9naWQ7XG4rXHR1MzIgYm9vdF9kYmc7XG4gXG4gXHRzdHJ1Y3QgcnR3ODlfcmVnX2RlZiBtdWVkY2FfY3RybDtcbiBcdHN0cnVjdCBydHc4OV9yZWdfZGVmIGJmZWVfY3RybDtcbkBAIC0xMjk4LDcgKzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbFxuIFxuIGludCBydHc4OV9tYWNfcHdyX29uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiKTtcbitpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcbitcdFx0XHQgICBib29sIGJiX3ByZWluaXQpO1xuIGludCBydHc4OV9tYWNfcHJlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuIGludCBydHc4OV9tYWNfZGxlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X3F0YV9tb2RlIG1vZGUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcbmluZGV4IGYyNGMxMTliOTlmMWJkLi4yNDIwMDZjZWZjM2UxYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcbkBAIC0zMjQyLDYgKzMyNDIsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9iZSA9IHtcbiBcdC5hZ2dfbGVuX2h0ID0gUl9CRV9BR0dfTEVOX0hUXzAsXG4gXHQucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsXG4gXHQubXVfZ2lkID0gXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLFxuK1x0LmJvb3RfZGJnID0gUl9CRV9CT09UX0RCRyxcbiBcbiBcdC5tdWVkY2FfY3RybCA9IHtcbiBcdFx0LmFkZHIgPSBSX0JFX01VRURDQV9FTixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xuaW5kZXggNzU5YmU0ZGFiNDJiMWMuLjZkZWUzOWY1M2RmMGU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xuQEAgLTM5NjgsNiArMzk2OCwyMyBAQCB2b2lkICgqIGNvbnN0IHJ0dzg5X3BoeV9jMmhfcmZrX2xvZ19oYW5kbGVyW10pKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFtSVFc4OV9QSFlfQzJIX1JGS19MT0dfRlVOQ19DSU0zS10gPSBydHc4OV9waHlfYzJoX3Jma19sb2dfY2ltM2ssXG4gfTtcbiBcbisjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcXFxuK1x0W1JUVzg5X1JGS19SRVBPUlRfICMjIHR5cGVdID0gI3R5cGVcbitcbitjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdID0ge1xuK1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFBSRV9OVEZZKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChUU1NJKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChJUUspLFxuK1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKERQSyksXG4rXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoVFhHQVBLKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEQUNLKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChSWF9EQ0spLFxuK1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFRYX0lRSyksXG4rXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoQ0lNM2spLFxuK307XG4rXG4rc3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0dzg5X3Jma19yZXBvcnRfbmFtZXMpID09IE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTKTtcbitcbiBzdGF0aWNcbiB2b2lkIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbkBAIC0zOTc5LDggKzM5OTYsOCBAQCB2b2lkIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIH1cbiBcbiBzdGF0aWNcbi1pbnQgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLFxuLVx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBtcylcbitpbnQgX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSxcbitcdFx0XHRcdCAgdW5zaWduZWQgaW50IG1zKVxuIHtcbiBcdHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvICp3YWl0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXJma193YWl0O1xuIFx0dW5zaWduZWQgbG9uZyB0aW1lX2xlZnQ7XG5AQCAtNDAxNyw2ICs0MDM0LDI5IEBAIGludCBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqcmZrX25hbWUsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljXG4raW50IF9fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4rXHRcdFx0XHRlbnVtIHJ0dzg5X3Jma19yZXBvcnRfdHlwZXMgcmZrX3R5cGUsXG4rXHRcdFx0XHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCxcbitcdFx0XHRcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuK1x0XHRcdFx0dW5zaWduZWQgaW50IG1zKVxuK3tcbitcdGNvbnN0IGNoYXIgKnJma19uYW1lID0gcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tyZmtfdHlwZV07XG4rXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbitcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSB3YWl0LVx1MDAzZXJlY29yZF9wdHI7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCByZmtfbmFtZSwgbXMpO1xuK1xuK1x0aWYgKHJlY29yZClcbitcdFx0cmVjb3JkLVx1MDAzZXN0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LVx1MDAzZXN0YXRlO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rI2RlZmluZSBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgdHlwZSwgcGh5X2lkeCwgY2hhbiwgbXMpIFxcXG4rXHRfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlLCBwaHlfaWR4LCBjaGFuLCBtcylcbitcbiBzdGF0aWMgdm9pZFxuIHJ0dzg5X3BoeV9jMmhfcmZrX3JlcG9ydF9zdGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpjMmgsIHUzMiBsZW4pXG4ge1xuQEAgLTQxMjIsNyArNDE2Miw3IEBAIGludCBydHc4OV9waHlfcmZrX3ByZV9udGZ5X2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChSVFc4OV9DSEtfRldfRkVBVFVSRV9HUk9VUChXSVRIX1JGS19QUkVfTk9USUZZLCBcdTAwMjZydHdkZXYtXHUwMDNlZncpKSB7XG4gXHRcdHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAocnR3ZGV2KTtcbiBcdFx0cnR3ODlfZndfaDJjX3JmX3ByZV9udGZ5KHJ0d2RldiwgcGh5X2lkeCk7XG4tXHRcdHJldCA9IHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcIlBSRV9OVEZZXCIsIG1zKTtcbitcdFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFBSRV9OVEZZLCBwaHlfaWR4LCBOVUxMLCBtcyk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC00MTUyLDcgKzQxOTIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwiVFNTSVwiLCBtcyk7XG4rXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3Rzc2lfYW5kX3dhaXQpO1xuIFxuQEAgLTQxNjksNyArNDIwOSw3IEBAIGludCBydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcIklRS1wiLCBtcyk7XG4rXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIElRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfaXFrX2FuZF93YWl0KTtcbiBcbkBAIC00MTg2LDcgKzQyMjYsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kcGtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCJEUEtcIiwgbXMpO1xuK1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBEUEssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2Rwa19hbmRfd2FpdCk7XG4gXG5AQCAtNDIwMyw3ICs0MjQzLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwiVFhHQVBLXCIsIG1zKTtcbitcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7XG4gfVxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190eGdhcGtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyMjAsNyArNDI2MCw3IEBAIGludCBydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCJEQUNLXCIsIG1zKTtcbitcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgREFDSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfZGFja19hbmRfd2FpdCk7XG4gXG5AQCAtNDIzNyw3ICs0Mjc3LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCJSWF9EQ0tcIiwgbXMpO1xuK1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSWF9EQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3J4ZGNrX2FuZF93YWl0KTtcbiBcbkBAIC00MjU0LDcgKzQyOTQsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcIlRYX0lRS1wiLCBtcyk7XG4rXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHhpcWtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyNzEsNyArNDMxMSw3IEBAIGludCBydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwiQ0lNM2tcIiwgbXMpO1xuK1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBDSU0zaywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfY2ltM2tfYW5kX3dhaXQpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXG5pbmRleCA1MzIyMzI4OTI4MzFmMC4uMjU1NDE2ZWJhZjkwMDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXG5AQCAtMTE2Myw2ICsxMTYzLDkgQEAgdm9pZCBydHc4OV9waHlfcmF0ZV9wYXR0ZXJuX3ZpZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gYm9vbCBydHc4OV9waHlfYzJoX2Noa19hdG9taWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjbGFzcywgdTggZnVuYyk7XG4gdm9pZCBydHc4OV9waHlfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICB1MzIgbGVuLCB1OCBjbGFzcywgdTggZnVuYyk7XG4rXG4rZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW107XG4rXG4gaW50IHJ0dzg5X3BoeV9yZmtfcHJlX250ZnlfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4LFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBtcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmhcbmluZGV4IDA4NmVmNzdlYmI5ZmNkLi5hZjkxODEzNjdiMjI1ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmhcbkBAIC04NzE4LDYgKzg3MTgsNyBAQFxuICNkZWZpbmUgUlJfVkNPIDB4YjJcbiAjZGVmaW5lIFJSX1ZDT19WQUwgR0VOTUFTSygxOCwgMTQpXG4gI2RlZmluZSBSUl9WQ09fU0VMIEdFTk1BU0soOSwgOClcbisjZGVmaW5lIFJSX1ZDT19TVFMgR0VOTUFTSyg3LCAwKVxuICNkZWZpbmUgUlJfVkNJIDB4YjNcbiAjZGVmaW5lIFJSX1ZDSV9PTiBCSVQoNylcbiAjZGVmaW5lIFJSX0xQRiAweGI3XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXG5pbmRleCA2MGYzNjI1OTM2OTY2Zi4uMDNlMWQxZGY4NmIzMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuY1xuQEAgLTE5MTgsMTEgKzE5MTgsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUxYl9zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbiBcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xuLVx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4rXHR1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTtcbitcdHU4IHR4X3NoYXBlX29mZG0gPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XG4gXG4gXHRpZiAoYmFuZCA9PSBSVFc4OV9CQU5EXzJHKVxuIFx0XHRydHc4ODUxYl9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7XG5AQCAtMjc3OSw2ICsyNzc3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7XG4gI2VuZGlmXG4gXHQueHRhbF9pbmZvXHRcdD0gXHUwMDI2cnR3ODg1MWJfeHRhbF9pbmZvLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUxYl9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xuaW5kZXggYTljMzA5YzI0NWMzMzQuLjNhNzMwYTgyNjk0OTgwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiX3RhYmxlLmNcbkBAIC0xNDg4Niw4ICsxNDg4Niw4IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MWJfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4cHdyX2xtdF9ydV81ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXG4rXHRcdC5sbXRfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXG4rXHRcdC5sbXRfcnVfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXG4gXHR9LFxuIH07XG4gXG5AQCAtMTQ5MDIsOCArMTQ5MDIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUxYl9yZmVfcGFybXNfdHlwZTIgPSB7XG4gXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWdfdHlwZTIsXG4gXHR9LFxuIFx0LnR4X3NoYXBlID0ge1xuLVx0XHQubG10ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LFxuLVx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuK1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LFxuK1x0XHQubG10X3J1X3YwID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuIFx0fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xuaW5kZXggMmMxZjE2NmU2ODdmMDYuLjY3NTY0ZTU4ZDEyMzM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcbkBAIC0yNTE2LDYgKzI1MTYsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJhX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBcdTAwMjZydHc4ODUyYV94dGFsX2luZm8sXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuK1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJhX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jXG5pbmRleCA0ZTdiMDY4YWFhNzViMS4uYjBhYzI5ZDFhMDFjNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xuQEAgLTExMTMsNiArMTExMyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuK1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJiX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcbmluZGV4IGRmNWZiYWU1MGZmNTUwLi5hNjFjNjRmZGZmNGRjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcbkBAIC0xMzIxLDExICsxMzIxLDkgQEAgc3RhdGljIHZvaWQgcnR3ODg1MmJ4X3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiBcdFx0XHRcdCAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4gXHR1OCBiYW5kID0gY2hhbi1cdTAwM2ViYW5kX3R5cGU7XG4tXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcbi1cdHU4IHR4X3NoYXBlX2NjayA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfQ0NLXVtyZWdkXTtcbi1cdHU4IHR4X3NoYXBlX29mZG0gPSAoKnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xuK1x0dTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7XG4rXHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xuIFxuIFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcbiBcdFx0cnR3ODg1MmJ4X2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmNcbmluZGV4IDA3OTQ1ZDA2ZGM1OWM5Li4xMzMyZDFiOTIzNWFlZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jXG5AQCAtMjI5MjEsNyArMjI5MjEsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTJiX2RmbHRfcGFybXMgPSB7XG4gXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyYl90eHB3cl9sbXRfcnVfNWcsXG4gXHR9LFxuIFx0LnR4X3NoYXBlID0ge1xuLVx0XHQubG10ID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LFxuLVx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10X3J1LFxuK1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LFxuK1x0XHQubG10X3J1X3YwID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10X3J1LFxuIFx0fSxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5pbmRleCA3ZmNjODc3ZjZlYTBjNC4uNGJlYTg1YjQyNzhiOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5AQCAtOTUwLDYgKzk1MCw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJ0X2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcbmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXG5AQCAtMjE5MywxMSArMjE5Myw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTJjX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuIFx0XHRcdFx0ICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuIFx0dTggYmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuLVx0dTggcmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4tXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07XG4tXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTtcbitcdHU4IHR4X3NoYXBlX2NjayA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19DQ0spO1xuK1x0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcbiBcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXG4gXHRcdHJ0dzg4NTJjX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcbkBAIC0zMzE5LDYgKzMzMTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJjX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyY19jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuY1xuaW5kZXggMjRjMzkwYjZmM2QzNDQuLmI3MmZlZTM3N2U5YzBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmNcbkBAIC01NzE1Myw3ICs1NzE1Myw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmNfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTJjX3R4cHdyX2xtdF9ydV82ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXG4rXHRcdC5sbXRfdjAgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXQsXG4rXHRcdC5sbXRfcnVfdjAgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXG4gXHR9LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXG5pbmRleCBhZDM2MThkZmQ1N2QwMC4uM2U4NzA4ODBiNTk4ZTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xuQEAgLTI1MDIsMTUgKzI1MDIsMTAgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmFfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4gXHRcdFx0XHQgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gXHUwMDI2cmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlO1xuK1x0dTggYmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuIFx0dTggdHhfc2hhcGVfaWR4O1xuLVx0dTggYmFuZCwgcmVnZDtcbi1cbi1cdGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dHhfc2hhcGVfaWR4ID0gKCp0eF9zaGFwZS1cdTAwM2VsbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xuIFxuK1x0dHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xuIFx0aWYgKHR4X3NoYXBlX2lkeCA9PSAwKVxuIFx0XHRydHc4OTIyYV9iYl90eF90cmlhbmd1bGFyKHJ0d2RldiwgZmFsc2UsIHBoeV9pZHgpO1xuIFx0ZWxzZVxuQEAgLTMzMDIsNiArMzI5Nyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmFfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuK1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5MjJhX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXG5pbmRleCA4MzhjMjYyMzE4OTdkNi4uY2MxMjdhM2U4NmVmODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xuQEAgLTExMzYsOCArMTEzNiwxMCBAQCBzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0dTMyIHN1Yl9jYXJyID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX1RYX1NVQl9CQU5EX1ZBTFVFLCBtYWNfaWR4KTtcbiBcdHUzMiBjaGtfcmF0ZSA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9UWFJBVEVfQ0hLLCBtYWNfaWR4KTtcbiBcdHUzMiByZl9tb2QgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfV01BQ19SRk1PRCwgbWFjX2lkeCk7XG4rXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHR1OCB0eHNiMjAgPSAwLCB0eHNiNDAgPSAwLCB0eHNiODAgPSAwO1xuIFx0dTggcmZfbW9kX3ZhbCwgY2hrX3JhdGVfbWFzaywgc2lmcztcbitcdHUxNiB0eF90aW1lID0gQU1QRFVfTUFYX1RJTUVfVjE7XG4gXHR1MzIgdHhzYjtcbiBcdHUzMiByZWc7XG4gXG5AQCAtMTIxOCw2ICsxMjIwLDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXG4gXHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfTVVFRENBX0VOLCBtYWNfaWR4KTtcbiBcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgQl9CRV9TSUZTX01BQ1RYRU5fVEJfVDFfRE9UMDVVU19NQVNLLCBzaWZzKTtcbitcbitcdGlmIChjaGFuLVx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNiBjaGlwLVx1MDAzZXR4dGltZV9saW1pdF8yZ2h6KVxuK1x0XHR0eF90aW1lID0gbWluX3QodTMyLCB0eF90aW1lLCBjaGlwLVx1MDAzZXR4dGltZV9saW1pdF8yZ2h6ICogMTAwMCBcdTAwM2VcdTAwM2UgMTUpO1xuK1xuK1x0cmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX0FNUERVX0FHR19MSU1JVCwgbWFjX2lkeCk7XG4rXHRydHc4OV93cml0ZTMyX21hc2socnR3ZGV2LCByZWcsIEJfQkVfQU1QRFVfTUFYX1RJTUVfTUFTSywgdHhfdGltZSk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfc2NvX2Jhcmtlcl90aHJlc2hvbGRbMTRdID0ge1xuQEAgLTI3MzksMTYgKzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSAqZCA9IHJ0d2Rldi1cdTAwM2VwaHlfaW5mby5iYl93cmFwX2RhdGE7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFx1MDAyNnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZTtcbitcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbiBcdHU4IHR4X3NoYXBlX2lkeDtcbi1cdHU4IGJhbmQsIHJlZ2Q7XG4gXHRjb25zdCB1MTYgKnRoO1xuIFxuLVx0YmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuLVx0cmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4tXHR0eF9zaGFwZV9pZHggPSAoKnR4X3NoYXBlLVx1MDAzZWxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4tXG4rXHR0eF9zaGFwZV9pZHggPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XG4gXHRpZiAodHhfc2hhcGVfaWR4ID09IDApXG4gXHRcdGdvdG8gZGlzYWJsZTtcbiBcbkBAIC0zNDM3LDYgKzM0NDAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJkX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gQklUKFJUVzg5X1FVSVJLX1RIRVJNQUxfUFJPVF8xMjBDKSxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSA0NjA4LFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4OTIyZF9jaGlwX2luZm8pO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMTI6MjY6NDMuNjQ2MTg4NDg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg3NjIzMjkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExhdGVzdCBydHc4OSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYHJ0dzg5YCB3aXJlbGVzcyBkcml2ZXIsIGFuZCBpdCdzIGdvdCBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMuIEZpcnN0LCBpdCBzZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIFJGIENhbGlicmF0aW9uIChSRkspIHJlY29yZGluZyBhbmQgdHJhY2tpbmcuIFRoYXQncyBnb29kOyBpdCdzIGFsd2F5cyBoZWxwZnVsIHRvIGhhdmUgbW9yZSBncmFudWxhciBkYXRhIG9uIHRoZSBSRiBjYWxpYnJhdGlvbiBwcm9jZXNzLCBzbyBJIGNhbiBzZWUgd2hhdCdzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kIGFuZCBtYWtlIHN1cmUgdGhpbmdzIGFyZSBvcGVyYXRpbmcgb3B0aW1hbGx5LiBTcGVjaWZpY2FsbHksIHRoZSBhZGRpdGlvbnMgaW4gYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgYW5kIGBydHc4OV9jb3JlX3Jma190c3NpX3JlY29yZGAgbG9vayBpbXBvcnRhbnQuXG5cbk5leHQsIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgZm9yIHRoZSBSVEw4OTIyRC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBCQiBwcmUtaW5pdGlhbGl6YXRpb24uIEl0IGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBwZWN1bGlhcml0aWVzIG9mIHRoZSBoYXJkd2FyZS5cblxuVGhlIHBhdGNoIGlzIGFsc28gdXBkYXRpbmcgdGhlIGB0eF9zaGFwZWAgbGltaXRzLCBhZGRpbmcgc3VwcG9ydCBmb3IgYHJlZzZfcHdyYCDigJMgd2hpY2ggaXMgcHJlc3VtYWJseSA2R0h6IHBvd2VyIOKAkyBhbmQgdXBkYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYHJ0dzg5X2dldF90eF9zaGFwZV9pZHhgIGZ1bmN0aW9uLiBUaGlzIGluZGljYXRlcyB0aGV5J3JlIGJyb2FkZW5pbmcgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgdGhlIDZHSHogYmFuZC4gVGhhdCdzIGEgZ29vZCBkaXJlY3Rpb24uXG5cblRoZXkncmUgYWxzbyBhZGRpbmcgZGVidWdmcyBlbnRyaWVzIGZvciBSRiBkaWFnbm9zdGljcy4gRXhjZWxsZW50LiBUaGF0IHNob3VsZCBtYWtlIGl0IGVhc2llciB0byB0cm91Ymxlc2hvb3QgYW55IFJGLXJlbGF0ZWQgaXNzdWVzLCB3aGljaCBpcyBhbHdheXMgd2VsY29tZS4gV2UgY2FuIG9mdGVuIGdldCB0byB0aGUgYm90dG9tIG9mIHByb2JsZW1zIG1vcmUgcXVpY2tseSB3aXRoIGJldHRlciBkaWFnbm9zdGljIHRvb2xzLlxuXG5UaGVyZSdzIGFuIHVwZGF0ZSB0byBgcnR3ODlfZndfZGxfZmFpbF9kdW1wYCB0byB1c2UgYG1hYy1cdTAwM2Vib290X2RiZ2AsIHdoaWNoIGlzIHByb2JhYmx5IGltcHJvdmluZyBkZWJ1Z2dpbmcgb2YgZmlybXdhcmUgZG93bmxvYWQgZmFpbHVyZXMuIFRoYXQncyBwcm9iYWJseSBqdXN0IGEgc21hbGwgdHdlYWssIGJ1dCB3b3J0aCBub3RpbmcuXG5cbkZ1cnRoZXJtb3JlLCB0aGVyZSBhcmUgdXBkYXRlcyB0byBgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWVgIHRvIGxpbWl0IFRYIHRpbWUgZm9yIHRoZSAyR0h6IGJhbmQgaWYgYGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHpgIGlzIHNldC4gVGhpcyBzZWVtcyBsaWtlIGEgbWVjaGFuaXNtIHRvIHByb3ZpZGUgY29udHJvbCBvbiAyR0h6IHBvd2VyLCBsaWtlbHkgZm9yIGNvbXBsaWFuY2UgcmVhc29ucy4gQWxzbywgc2ltaWxhciB0aW1lIGxpbWl0aW5nIGhhcyBiZWVuIGFwcGxpZWQgdG8gYHJ0dzg5MjJkX3NldF9jaGFubmVsX21hY2AuIEludGVyZXN0aW5nIHRoYXQgdGhlIGNvZGUgaXMgY2hhbmdpbmcgc28gc3Vic3RhbnRpYWxseS5cblxuRmluYWxseSwgdGhleSd2ZSBhZGRlZCBgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdGAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGZvciB3YWl0aW5nIG9uIHNwZWNpZmljIFJGSyByZXBvcnRzLiBUaGlzIGxpa2VseSBtZWFucyB0aGV5J3JlIGFkZGluZyBhIGJpdCBtb3JlIHN5bmNocm9uaXNhdGlvbiBpbiB0aGUgcmVwb3J0aW5nIHBhdGguXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGRyaXZlciwgYHJ0dzg5YCwgaXMgYSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBzaG91bGQgY2hlY2sgaWYgaXQncyBhIFBDSSwgVVNCLCBvciBTRElPIGRyaXZlciB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGF0dGFjaGVkLiBMZXQgbWUgbG9vayBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCBvciBgTWFrZWZpbGVgIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkLiBUaGF0J2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgYmFzaWMgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDI5NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjUxLjUyMjQyMzM0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc0OTA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNjo1MS41NzgxODgwMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU2MzU4MDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIGl0IHNlZW1zIHRvIGhhbmRsZSBib3RoIFBDSSBhbmQgVVNCIGNvbm5lY3Rpb25zLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBoZXJlIGlzIHRoZSBVU0IgY29tcG9uZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhwbG9yZSBVU0IgZnV6emluZyB0ZWNobmlxdWVzLCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBvciB0aGUgbWV0aG9kcyB1c2VkIGluIHN5emthbGxlciwgd2hpY2ggSSBrbm93IHN1cHBvcnRzIFVTQiBmdXp6aW5nLlxuXG5CdXQgaG9sZCBvbiwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgXCJpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyxcIiB3aGljaCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBRRU1VLiBUaGF0J3MgYSBiaXQgb2YgYSBjdXJ2ZWJhbGwuIEhvd2V2ZXIsIEkga25vdyBzeXprYWxsZXIgKmRvZXMqIGhhdmUgVVNCIGZ1enppbmcgdmlhIGBkdW1teV9oY2RgLCBzbyBwZXJoYXBzIHRoZSBwcm9tcHQncyBzdGF0ZW1lbnQgaXMgbm90IGFuIGFic29sdXRlIGNvbnN0cmFpbnQuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB0aGUgYHJ0dzg5YCBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgdGhyb3VnaCBVU0IgZnV6emluZy4gU2luY2UgYFJUVzg5X1VTQmAgc3VwcG9ydCBleGlzdHMsIHRoZSBhbnN3ZXIgc2hvdWxkIGJlIHllcyBpbiBwcmluY2lwbGUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBkZWZpbml0aXZlbHkgZGV0ZXJtaW5lIGlmIHRoZSBgcnR3ODlgIFVTQiBkcml2ZXJzIGFyZSAqYWN0dWFsbHkqIGZ1enplZC4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY2Agb3Igc2ltaWxhciwgdG8gdW5kZXJzdGFuZCB0aGUgY3VycmVudCBmdXp6aW5nIGNvdmVyYWdlLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgaXMgdGFyZ2V0aW5nIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY0OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNjo1Ni4yMzQ1NDg5NThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MzU4MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3VzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYz02MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTFidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MWJ1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODE6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTJhdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODAtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjgxOm1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUyYnVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYz04MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTg2LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzo4Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmN1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODI6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg5MjJhdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtODMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjU2LjI5MjQ5MDgwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNDgzMTAyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGUgbWVudGlvbiBvZiBVU0IgZHJpdmVycywgYW5kIGluaXRpYWxseSwgbXkgZ3V0IHJlYWN0aW9uIGlzIFwiWWVzLCB0aG9zZSBhcmUgY2VydGFpbmx5IHRlc3RhYmxlLlwiIEJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0IGlzIHNwZWNpZmljYWxseSB0YWxraW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gU28sIGRvZXMgdGhhdCBtZWFuIEkgbmVlZCB0byBtYXJrIHNvbWV0aGluZyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCAqaWYqIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLCBldmVuIHdpdGgsIHNheSwgVVNCIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbT8gWWVzLCB0aGF0J3MgdGhlIGxvZ2ljLlxuXG5CdXQgbm93IEkgaGF2ZSBhIGNvdW50ZXJwb2ludCAtIFVTQiBkcml2ZXJzICphcmUqIGFjY2Vzc2libGUgd2l0aCBVU0IgZ2FkZ2V0IGFuZCBkdW1teV9oY2QgZnV6emluZyEgV2UgY2FuIGNlcnRhaW5seSByZWFjaCBjb2RlIHdpdGhpbiB0aG9zZSBkcml2ZXJzLiBTbywgSSBuZWVkIHRvIHJlZmluZSBteSB1bmRlcnN0YW5kaW5nLiBUaGUgcXVlc3Rpb24gaXNuJ3QganVzdCBcImlzIGl0IGEgVVNCIGRyaXZlcj9cIiwgYnV0IHJhdGhlciwgXCJkb2VzIHRoZSB0eXBlIG9mIGZ1enppbmcgd2UncmUgdGFsa2luZyBhYm91dCBhY3R1YWxseSAqZ2V0KiB0byB0aGUgcmVsZXZhbnQgd2lyZWxlc3MgZHJpdmVyIGxvZ2ljP1wiLiBPZnRlbiwgVVNCIGZ1enppbmcgY2FuIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBvbiBhIGxvdyBsZXZlbCwgYnV0IHdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gbmVlZCBmaXJtd2FyZSB0byBiZSBsb2FkZWQgYmVmb3JlIHRoZXkgY2FuIGluaXRpYWxpemUgdGhlIE1BQy9QSFkgYW5kIHJlZ2lzdGVyIHRoZWlyIG5ldHdvcmsgaW50ZXJmYWNlLiBTbywgd2hhdCBJIG5lZWQgdG8gZG8gaXMgbG9vayBmb3IgYSBzcGVjaWZpYyBleGFtcGxlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIGZ1enppbmcgdGVjaG5pcXVlIHdpbGwgYWN0dWFsbHkgdGVzdCB0aGUgY29kZSBpbiBxdWVzdGlvbi4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgaWYgYHJ0dzg5YCByZWxpZXMgb24gZmlybXdhcmUgdG8gb3BlcmF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMTI6Mjc6MDEuMzQwODAyOTk1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzA1OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTk3Nj1ydHc4OV9lYXJseV9md19mZWF0dXJlX3JlY29nbml6ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo5OTM6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZmlybXdhcmUsIGZ3X25hbWUsIGRldmljZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk5NC1cXHRcXHRpZiAoIXJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNDE9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA1Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNTc6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDU4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNzowMS4zOTc1MTQzN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDc5NjAwMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYHJ0dzg5YCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFza2luZyBtZSB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBpbnRyb2R1Y2VzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzaW11bGF0ZWQgaGFyZHdhcmUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgdGhpcyBgcnR3ODlgIGRyaXZlci4uLiBpdCBzY3JlYW1zIGZpcm13YXJlIGRlcGVuZGVuY3ksIGRvZXNuJ3QgaXQ/IElmIHRoZSBmaXJtd2FyZSBpc24ndCB0aGVyZSwgYHJlcXVlc3RfZmlybXdhcmVgIGZhaWxzLCBhbmQgdGhlIHByb2JlIGp1c3QgZGllcy4gU3l6a2FsbGVyLCBpbiBpdHMgdHlwaWNhbCBzZXR1cCwgdXN1YWxseSB3b24ndCBoYXZlIHByb3ByaWV0YXJ5IGZpcm13YXJlIHVubGVzcyBpdCdzIGJ1bmRsZWQgaW4gYGxpbnV4LWZpcm13YXJlYCwgYW5kIGV2ZW4gdGhlbiwgbG9hZGluZyBpdCBpcyBqdXN0IHRoZSBmaXJzdCBodXJkbGUuIFRoZSBVU0IgZnV6emVyIHdvdWxkIHRoZW4gbmVlZCB0byBmbGF3bGVzc2x5IGVtdWxhdGUgdGhlICpleGFjdCogZmlybXdhcmUgcmVzcG9uc2VzIHRvIGV2ZW4gZ2V0IHBhc3QgdGhhdCBpbml0aWFsIHN0YWdlLlxuXG5JJ20gdGhpbmtpbmcsIGlzbid0IHRoZXJlIGEgbWFjODAyMTEgc2ltdWxhdGlvbiBmb3Igd2lyZWxlc3MgZnV6emluZyB3aXRoIHN5emthbGxlcj8gT2ggeWVhaCwgYG1hYzgwMjExX2h3c2ltYCEgQnV0IHRoYXTigJlzIHNvZnR3YXJlLCBub3QgdG91Y2hpbmcgcmVhbCBoYXJkd2FyZSBkcml2ZXJzIGxpa2UgYHJ0dzg5YC4gVGhvc2UgaGFyZHdhcmUgZHJpdmVycywgbGlrZSBgYXRoMTBrYCBhbmQgYGl3bHdpZmlgLCBhcmUgZ2VuZXJhbGx5IG5vdCByZWFjaGVkIGJlY2F1c2Ugb2YgZWl0aGVyIFBDSSBkZXZpY2UgZW11bGF0aW9uIHNob3J0Y29taW5ncywgb3IgdGhlIGZhY3QgdGhhdCBVU0IgZHJpdmVycyBwcm92aWRlIHJhbmRvbSByZXNwb25zZXMuIEEgY29tcGxleCBiZWFzdCBsaWtlIGBydHc4OWAgd2lsbCBsaWtlbHkgZGllIHF1aWNrbHkgd2hlbiBpdCB0cmllcyB0byByZWFkIHNwZWNpZmljIHJlZ2lzdGVycywgbG9hZCBmaXJtd2FyZSwgYW5kIHdhaXQgZm9yIGZpcm13YXJlLXJlYWR5IHNpZ25hbHMuIEl04oCZbGwgbmV2ZXIgcmVhY2ggdGhlIGp1aWN5IGNvcmUgbG9naWMgbGlrZSBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCBvciBgcnR3ODlfbWFjX3NldF90eF90aW1lYC5cblxuQWxyaWdodCwgbGV0J3MgcmUtcmVhZCB0aGUgcHJvbXB0IGNhcmVmdWxseS4gVGhlIGtleSBpcyBcImNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC5cIiBJZiB0aGUgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgdW5yZWFjaGFibGUgY29kZSwgdGhlbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0IGlzIHRoZSBgcnR3ODlgIGNvcmUgbG9naWMgcmVhY2hhYmxlICphdCBhbGwqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBjYW4ndCBkaXJlY3RseSBjaGVjayBzeXprYWxsZXIgY292ZXJhZ2UsIGJ1dCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgY29tcGxleCBoYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIGRlbWFuZGluZyBmaXJtd2FyZSBhbmQgc3BlY2lmaWMgcmVnaXN0ZXIgaW50ZXJhY3Rpb25zLCB1c3VhbGx5IGRvbid0IGdldCBtdWNoIGZ1cnRoZXIgdGhhbiB0aGUgcHJvYmUgZmFpbHVyZSBpbiBVU0IvUENJIGZ1enppbmcuXG5cbkhtbSwgYW55IG90aGVyIGFuZ2xlcz8gSXMgdGhlcmUgc29tZSBiYWNrZG9vciwgbGlrZSBgbWFjODAyMTFgLCB0aGF0IGNvdWxkIGJlIHVzZWQ/IE5vLCBgcnR3ODlgIGlzIGNsZWFybHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIHRlc3QgbW9kZSBvciBzb21ldGhpbmcgdGhhdCB3b3VsZCBhbGxvdyBlYXNpZXIgYWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc4OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNzoxMC40NDU0NzczMDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjIzNDk1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0bW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMTI6Mjc6MTAuNTA0MTEwMTMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjYzNjU4NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFNpbXVsYXRpb24gT3B0aW9ucyBmb3IgcnR3ODkqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgdGhpcyBgcnR3ODlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGEgc2ltdWxhdGVkIGVudmlyb25tZW50LiBUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdXN1YWxseSB0byBsb29rIGZvciBzb21lIGtpbmQgb2YgYGh3c2ltYCBvciwgaGVjaywgYW55dGhpbmcgdGhhdCByZXNlbWJsZXMgYSBoYXJkd2FyZSBzaW11bGF0b3IgdGFpbG9yZWQgZm9yIHRoZXNlIHJlYWx0ZWsgd2lyZWxlc3MgY2hpcHNldHMuIEl0J3MgdGhlIGdvLXRvIGZvciByYXBpZCB0ZXN0aW5nIGFuZCByZWdyZXNzaW9uLiBTbywgZmlyc3QgdGhpbmcsIGxldCdzIHNlZSB3aGF0J3Mgb3V0IHRoZXJlLiBBIHF1aWNrIHNjYW4gb2YgdGhlIHR5cGljYWwgbG9jYXRpb25zIC0gdGhlIGtlcm5lbCBzb3VyY2UsIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGFuZCBhbnkgcHVibGljIGRpc2N1c3Npb25zIC0gaXMgaW4gb3JkZXIuIE1heWJlIHNvbWV0aGluZyBuZXcgaGFzIGNyb3BwZWQgdXAsIG9yIG1heWJlIEkgbmVlZCB0byBhZGp1c3QgbXkgYXBwcm9hY2guIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGtleXdvcmRzIGFuZCB0aGVuIGJyb2FkZW4gbXkgc2VhcmNoIGlmIG5vdGhpbmcganVtcHMgb3V0IGltbWVkaWF0ZWx5LiBLbm93aW5nIHRoZSBrZXJuZWwgdHJlZSwgYW5kIHRoZSBjb21tb24gbmFtaW5nIGNvbnZlbnRpb25zLCBJJ20gZXhwZWN0aW5nIGEgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCBkaXNjb3ZlcnkuLi4gb3IgYSByYWJiaXQgaG9sZS4gTGV0J3Mgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjg0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI3OjE0LjI3MDQ3ODI1NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxMjk5MzQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNzoxNC4zMjk2MTQzNzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc0MjE1MzEzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIHJ0dzg5IFdpcmVsZXNzIERyaXZlciBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNoYW5nZXMsIGRlZXAgaW4gdGhlIGBydHc4OWAgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSBmaWxlcyBsaWtlIGBjb3JlLmNgLCBgbWFjLmNgLCBgcGh5LmNgLCBldGMuIFRoaXMgaXMgcHJldHR5IGxvdy1sZXZlbCwgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gSSdtIHNlZWluZyBmdW5jdGlvbnMgbGlrZSBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCB0aGF0IGRpcmVjdGx5IHJlYWQgUkYgcmVnaXN0ZXJzIHVzaW5nIGNhbGxzIGxpa2UgYHJ0dzg5X3JlYWRfcmZgLiBUaGF0IGltcGxpZXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmN5OyB0aGUgZGV2aWNlIGhhcyB0byBiZSBwcmVzZW50LCBwb3dlcmVkIG9uLCBhbmQgcmVzcG9uZGluZy5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCBmdXp6aW5nIHRoaXMuIEluIGEgVVNCIGZ1enppbmcgc2NlbmFyaW8sIGBydHc4OV9yZWFkX3JmYCB3b3VsZCBldmVudHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgVVNCIGNvbnRyb2wgdHJhbnNmZXIuIFRoZSBmdXp6ZXIgY291bGQgdGhyb3cgcmFuZG9tIGRhdGEgYXQgaXQsIHN1cmUuIEJ1dCB0byBldmVuICpnZXQqIHRvIHRoYXQgcG9pbnQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLiBJdCBoYXMgdG8gZ28gdGhyb3VnaCBhIHdob2xlIHNlcXVlbmNlOiBwcm9iZSwgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSwgYW5kIHRoZSB1c2VyIG11c3QgYmUgY29uZmlndXJpbmcgYSBjaGFubmVsLCByaWdodD8gVGhlIHN1Y2Nlc3NmdWwgcHJvYmluZyByZXF1aXJlcyB0aGUgZHJpdmVyIHRvOlxuXG4xLiAgUmVhZCBjaGlwIElEIGFuZCByZXZpc2lvbi5cbjIuICBMb2FkIGZpcm13YXJlLlxuMy4gIERvd25sb2FkIGZpcm13YXJlIHRvIHRoZSBkZXZpY2UuXG40LiAgV2FpdCBmb3IgdGhlIGZpcm13YXJlIHRvIGJvb3QgYW5kIHNlbmQgYSByZWFkeSBzaWduYWwuXG41LiAgSW5pdGlhbGl6ZSBNQUMgYW5kIFBIWS5cbjYuICBSZWdpc3RlciB3aXRoIG1hYzgwMjExLlxuXG5JdCdzIGp1c3Qgbm90IHByYWN0aWNhbGx5IGZlYXNpYmxlIGZvciBhIHJhbmRvbSBVU0IgZnV6emVyIHRvIGVtdWxhdGUgdGhhdCBwcmVjaXNlIHNlcXVlbmNlIG9mIGZpcm13YXJlIGRvd25sb2FkIGFuZCBib290IHJlc3BvbnNlcy4gSXQncyB0b28gY29tcGxleC4gVGhlIGRyaXZlcidzIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgaW4gdGhhdCBraW5kIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5IbW0sIHdhaXQgYSBzZWMuLi4gd2hhdCBhYm91dCBRRU1VPyBEb2VzIFFFTVUgc3VwcG9ydCB0aGlzIGRyaXZlcj8gSSBrbm93IFFFTVUgc3VwcG9ydHMgc29tZSBuZXR3b3JrIGNhcmRzIGxpa2UgZTEwMDAsIHJ0bDgxMzksIGFuZCB2aXJ0aW8tbmV0LCBidXQgbm90IG1vZGVybiB3aXJlbGVzcyBjYXJkcyBsaWtlIHRoZSBgcnR3ODlgLCB3aGljaCBpcyA4MDIuMTFheC9XaS1GaSA2LiBTbywgUENJIGZ1enppbmcgaXMgb3V0IHRvby5cblxuTGV0J3MgZG8gYSBxdWljayBzd2VlcCBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGNvbmZpcm0gdGhpcy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCwgYHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWxgLCBgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmRgLCBgcnR3ODlfY29yZV9yZmtfdHJhY2tgLCBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCwgYHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXRgLCBgcnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldGAsIGBydHc4OV9md19kbF9mYWlsX2R1bXBgLCBgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXRgLCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAsIGBfX3J0dzg5X21hY19zZXRfdHhfdGltZWAsIGFuZCBgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdGAuXG5cblllcC4gQWxsIHRoZXNlIGFyZSBjbGVhcmx5IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmdW5jdGlvbnMuIEdpdmVuIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIGEgZGV2aWNlIHRoYXQncyBub3QgZW11bGF0ZWQgYnkgUUVNVSwgYW5kIHRoYXQgcmVxdWlyZXMgdGhpcyBjb21wbGV4IGZpcm13YXJlIGludGVyYWN0aW9uIHRoYXQgY2FuJ3QgYmUgZnV6emVkIHByYWN0aWNhbGx5IHRocm91Z2ggVVNCIGdhZGdldCwgaXQgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoZSBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIGNhdGVnb3J5LlxuXG5MZXQncyBqdXN0IGRvdWJsZSBjaGVjayB0aGUgZmlsZSBwYXRocy4uLiBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gYGNvcmUuY2AsIGBjb3JlLmhgLCBgZGVidWcuY2AsIGBmdy5jYCwgYGZ3LmhgLCBgbWFjLmNgLCBgbWFjLmhgLCBgbWFjX2JlLmNgLCBgcGh5LmNgLCBgcGh5LmhgLCBgcmVnLmhgLCBgcnR3ODg1MWIuY2AsIGBydHc4ODUxYl90YWJsZS5jYCwgYHJ0dzg4NTJhLmNgLCBgcnR3ODg1MmIuY2AsIGBydHc4ODUyYl9jb21tb24uY2AsIGBydHc4ODUyYl90YWJsZS5jYCwgYHJ0dzg4NTJidC5jYCwgYHJ0dzg4NTJjLmNgLCBgcnR3ODg1MmNfdGFibGUuY2AsIGBydHc4OTIyYS5jYCwgYW5kIGBydHc4OTIyZC5jYC4gVGhleSBhcmUgYWxsIHVuZGVyIGAvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gLlxuXG5JdCdzIGFsbCB0aGUgYHJ0dzg5YCBkcml2ZXIsIHNvIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uIGlzIHRoYXQgaXQgaW52b2x2ZXMgbW9kaWZ5aW5nIGEgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODlgKSB0aGF0IHJlcXVpcmVzXG5cbiIsIklucHV0VG9rZW5zIjoyNzE0OCwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI3OjMxLjc1MTE0ODI3NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBydHc4OSB3aXJlbGVzcyBkcml2ZXIgKFJlYWx0ZWsgODAyLjExYXgvYmUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBmaXJtd2FyZSBlbXVsYXRpb24gKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIpIHRvIHBhc3MgdGhlIGluaXRpYWwgcHJvYmUgYW5kIHJlYWNoIHRoZSBjb3JlIGxvZ2ljIChNQUMvUEhZIGluaXRpYWxpemF0aW9uLCBSRiBjYWxpYnJhdGlvbiwgZXRjLikuIFRoZXJlZm9yZSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyIChSZWFsdGVrIDgwMi4xMWF4L2JlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGNvbXBsZXggZmlybXdhcmUgZW11bGF0aW9uICh3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyKSB0byBwYXNzIHRoZSBpbml0aWFsIHByb2JlIGFuZCByZWFjaCB0aGUgY29yZSBsb2dpYyAoTUFDL1BIWSBpbml0aWFsaXphdGlvbiwgUkYgY2FsaWJyYXRpb24sIGV0Yy4pLiBUaGVyZWZvcmUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2jvfn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 12:06:24 +0000 UTC FinishedAt: 2026-07-12 12:27:33 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDEyOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBydHc4OSB3aXJlbGVzcyBkcml2ZXIgKFJlYWx0ZWsgODAyLjExYXgvYmUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBmaXJtd2FyZSBlbXVsYXRpb24gKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIpIHRvIHBhc3MgdGhlIGluaXRpYWwgcHJvYmUgYW5kIHJlYWNoIHRoZSBjb3JlIGxvZ2ljIChNQUMvUEhZIGluaXRpYWxpemF0aW9uLCBSRiBjYWxpYnJhdGlvbiwgZXRjLikuIFRoZXJlZm9yZSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDEyOjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzE5OGNhMzQxYWFjMGRjZmEwZWE1YTFiMjc5ZTNjMDFhOWRlMTNlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDEyOjI2OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNcbmluZGV4IDY4ZGFkNjA5MGY4N2UyLi45Yjk2YjU3YmMzOWNkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTQ4Niw2ICYjNDM7NDg2LDM3IEBAIHZvaWQgcnR3ODlfY29yZV9zZXRfY2hpcF90eHB3cihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRfX3J0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3IocnR3ZGV2LCBjb25mLmNoYW5zWzFdLCBSVFc4OV9QSFlfMSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma19yZWNvcmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbiYjNDM7XHRcdFx0XHQgIGJvb2wgc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkID0gXHUwMDI2aW5mby1cdTAwM2VyZWNvcmRzW2luZm8tXHUwMDNlcmVjb3JkX2lkeF07XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuJiM0MztcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XG4mIzQzO1x0aW50IHBhdGg7XG4mIzQzO1xuJiM0MztcdGlmICghc3RhcnQpXG4mIzQzO1x0XHRnb3RvIGVuZDtcbiYjNDM7XG4mIzQzO1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gcmVjb3JkO1xuJiM0MztcdHJlY29yZC1cdTAwM2VwaHlfaWR4ID0gcnR3dmlmX2xpbmstXHUwMDNlcGh5X2lkeDtcbiYjNDM7XG4mIzQzO1x0Zm9yIChwYXRoID0gMDsgcGF0aCBcdTAwM2MgcGF0aF9udW07IHBhdGgmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRyZWNvcmQtXHUwMDNlY2hbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfQ0ZHQ0gsXG4mIzQzO1x0XHRcdFx0XHRcdCBSUl9DRkdDSF9CQU5EMCB8IFJSX0NGR0NIX0NIKTtcbiYjNDM7XHRcdHJlY29yZC1cdTAwM2VjdltwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9WQ08sXG4mIzQzO1x0XHRcdFx0XHRcdCBSUl9WQ09fU0VMIHwgUlJfVkNPX1NUUyk7XG4mIzQzO1x0XHRyZWNvcmQtXHUwMDNlYzVbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfU1lORkIsIFJGUkVHX01BU0spO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuO1xuJiM0MztcbiYjNDM7ZW5kOlxuJiM0MztcdGluZm8tXHUwMDNlcmVjb3JkX2lkeCA9IChpbmZvLVx1MDAzZXJlY29yZF9pZHggJiM0MzsgMSkgJSBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7XG4mIzQzO1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxuIHtcbkBAIC01MDMsOSAmIzQzOzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpO1xuIFx0fVxuIFxuLVx0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZXJma19jaGFubmVsKVxuJiM0MztcdGlmIChjaGlwLVx1MDAzZW9wcy1cdTAwM2VyZmtfY2hhbm5lbCkge1xuJiM0MztcdFx0cnR3ODlfY29yZV9yZmtfcmVjb3JkKHJ0d2RldiwgcnR3dmlmX2xpbmssIHRydWUpO1xuJiM0MztcbiBcdFx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlcmZrX2NoYW5uZWwocnR3ZGV2LCBydHd2aWZfbGluayk7XG4gXG4mIzQzO1x0XHRydHc4OV9jb3JlX3Jma19yZWNvcmQocnR3ZGV2LCBydHd2aWZfbGluaywgZmFsc2UpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAocHJlaGRsX2xpbmspIHtcbiBcdFx0cnR3ODlfZW50aXR5X2ZvcmNlX2h3KHJ0d2RldiwgUlRXODlfUEhZX05VTSk7XG4gXHRcdHJ0dzg5X3NldF9jaGFubmVsKHJ0d2Rldik7XG5AQCAtNTI2NSw2ICYjNDM7NTMwMSwzNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9lbnRlcl9scHNfdHJhY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuJiM0MztcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlcmZrX3dhaXQ7XG4mIzQzO1x0aW50IGkgPSBpbmZvLVx1MDAzZXJlY29yZF90c3NpX2lkeDtcbiYjNDM7XHR1MzIgYmFzZTtcbiYjNDM7XHR1MzIgbWFzaztcbiYjNDM7XHRpbnQgcGF0aDtcbiYjNDM7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggPSAoaW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggJiM0MzsgMSkgJVxuJiM0MztcdFx0XHRcdFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjtcbiYjNDM7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyQSkge1xuJiM0MztcdFx0YmFzZSA9IDB4MmVlMTA7XG4mIzQzO1x0XHRtYXNrID0gMHg3ZmMwMDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0YmFzZSA9IDB4MmY5MTg7XG4mIzQzO1x0XHRtYXNrID0gMHgwMDAwMDFmZjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAocGF0aCA9IDA7IHBhdGggXHUwMDNjIHBhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dTMyIGFkZHIgPSBiYXNlICYjNDM7IDB4MTAwICogcGF0aDtcbiYjNDM7XG4mIzQzO1x0XHRpbmZvLVx1MDAzZXRzc2lfY29kZVtpXVtwYXRoXSA9IHJ0dzg5X3JlYWQzMl9tYXNrKHJ0d2RldiwgYWRkciwgbWFzayk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRlbnVtIHJ0dzg5X2VudGl0eV9tb2RlIG1vZGU7XG5AQCAtNTI3NCw2ICYjNDM7NTM0MSw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cnR3ODlfY2hpcF9yZmtfdHJhY2socnR3ZGV2KTtcbiYjNDM7XG4mIzQzO1x0cnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQocnR3ZGV2KTtcbiB9XG4gXG4gdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9wMnBfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuQEAgLTcxODAsOSAmIzQzOzcyNDksMTkgQEAgaW50IHJ0dzg5X2NvcmVfbWxzcl9zd2l0Y2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYsXG4gc3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlbWFjX2RlZjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4mIzQzO1x0Ym9vbCBiYl9wcmVpbml0ID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlKTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE5vcm1hbGx5IGluIHByb2JlIHN0YWdlLCB3ZSBkb24mIzM5O3QgbmVlZCB0byBkbyBCQiBwcmUtaW5pdGlhbGl6YXRpb24uXG4mIzQzO1x0ICogSG93ZXZlciwgUlRMODkyMkQgZmlybXdhcmUgY2FuIGFjY2VzcyBCQiByZWdpc3RlcnMgYXQgZmlybXdhcmVcbiYjNDM7XHQgKiBpbml0aWFsIHN0YXRlLCBzbyBpbml0aWFsaXplIGl0IHRvIGF2b2lkIEJCIElPIHN0dWNrIGluIGZpcm13YXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWNoaXBfaWQgPT0gUlRMODkyMkQpXG4mIzQzO1x0XHRiYl9wcmVpbml0ID0gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlLCBiYl9wcmVpbml0KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaFxuaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjJlYWNiNWZlOTdmMjA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXG5AQCAtNDI5NCw4ICYjNDM7NDI5NCwxMiBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfcnVsZV82Z2h6IHtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV90eF9zaGFwZSB7XG4tXHRjb25zdCB1OCAoKmxtdClbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuLVx0Y29uc3QgdTggKCpsbXRfcnUpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XG4mIzQzO1x0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXVxuJiM0MztcdFx0ICAgICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuJiM0MztcdGNvbnN0IHU4ICgqbG10X3J1KVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dW05VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUl07XG4mIzQzO1xuJiM0MztcdGNvbnN0IHU4ICgqbG10X3YwKVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV07XG4mIzQzO1x0Y29uc3QgdTggKCpsbXRfcnVfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHtcbkBAIC00Mzg5LDEyICYjNDM7NDM5MywxMyBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfbG10X3J1XzZnaHpfZGF0YSB7XG4gXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhIHtcbiBcdHN0cnVjdCBydHc4OV90eHB3cl9jb25mIGNvbmY7XG4tXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbiYjNDM7XHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXVxuJiM0MztcdCAgICBbTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSXTtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfcnVfZGF0YSB7XG4gXHRzdHJ1Y3QgcnR3ODlfdHhwd3JfY29uZiBjb25mO1xuLVx0dTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuJiM0MztcdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X3JmZV9kYXRhIHtcbkBAIC00NzkwLDYgJiM0Mzs0Nzk1LDcgQEAgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyB7XG4gXHRjb25zdCBzdHJ1Y3Qgd2lwaHlfd293bGFuX3N1cHBvcnQgKndvd2xhbl9zdHViO1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3h0YWxfaW5mbyAqeHRhbF9pbmZvO1xuIFx0dW5zaWduZWQgbG9uZyBkZWZhdWx0X3F1aXJrczsgLyogYml0bWFwIG9mIHJ0dzg5X3F1aXJrcyAqL1xuJiM0MztcdHUxNiB0eHRpbWVfbGltaXRfMmdoejtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV9jaGlwX3ZhcmlhbnQge1xuQEAgLTU0ODQsMTEgJiM0Mzs1NDkwLDQzIEBAIGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSB7XG4gXHRSVFc4OV9SRktfU1RBVEVfSDJDX0NNRF9FUlIgPSAweDQsXG4gfTtcbiBcbiYjNDM7ZW51bSBydHc4OV9yZmtfcmVwb3J0X3R5cGVzIHtcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX1BSRV9OVEZZLFxuJiM0MztcdFJUVzg5X1JGS19SRVBPUlRfVFNTSSxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX0lRSyxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX0RQSyxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX1RYR0FQSyxcbiYjNDM7XHRSVFc4OV9SRktfUkVQT1JUX0RBQ0ssXG4mIzQzO1x0UlRXODlfUkZLX1JFUE9SVF9SWF9EQ0ssXG4mIzQzO1x0UlRXODlfUkZLX1JFUE9SVF9UWF9JUUssXG4mIzQzO1x0UlRXODlfUkZLX1JFUE9SVF9DSU0zayxcbiYjNDM7XG4mIzQzO1x0TlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVMsXG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUiAyXG4mIzQzOyNkZWZpbmUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SIDEwXG4mIzQzO1xuJiM0MztzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCB7XG4mIzQzO1x0dTMyIGNoW1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4mIzQzO1x0dTMyIGN2W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4mIzQzO1x0dTMyIGM1W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4mIzQzO1x0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHg7XG4mIzQzO1x0ZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHN0YXRlc1tOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFU107XG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvIHtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247XG4gXHRrdGltZV90IHN0YXJ0X3RpbWU7XG4gXHRlbnVtIHJ0dzg5X3Jma19yZXBvcnRfc3RhdGUgc3RhdGU7XG4gXHR1OCB2ZXJzaW9uO1xuJiM0MztcbiYjNDM7XHRpbnQgcmVjb3JkX2lkeDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkX3B0cjtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCByZWNvcmRzW1JUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUl07XG4mIzQzO1xuJiM0MztcdGludCByZWNvcmRfdHNzaV9pZHg7XG4mIzQzO1x0dTMyIHRzc2lfY29kZVtSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlJdW1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4gfTtcbiBcbiAjZGVmaW5lIFJUVzg5X0RBQ0tfUEFUSF9OUiAyXG5AQCAtNzU2OSw4ICYjNDM7NzYwNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9iYl9zZXRodyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFxuJiM0MztcdHJ0dzg5X2lvX3BhY2socnR3ZGV2KTtcbiYjNDM7XG4gXHRpZiAoY2hpcC1cdTAwM2VvcHMtXHUwMDNlYmJfc2V0aHcpXG4gXHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJiX3NldGh3KHJ0d2Rldik7XG4mIzQzO1xuJiM0MztcdHJ0dzg5X2lvX3VucGFjayhydHdkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9yZmtfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5AQCAtNzc4Nyw2ICYjNDM7NzgyOSwzMCBAQCBzdGF0aWMgaW5saW5lIHU4IHJ0dzg5X3JlZ2RfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZClcbiBcdHJldHVybiB0eHB3cl9yZWdkO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSB1OCBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZCxcbiYjNDM7XHRcdFx0XHRcdGVudW0gcnR3ODlfcmF0ZV9zZWN0aW9uIHJzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X3JlZ3VsYXRvcnlfaW5mbyAqcmVndWxhdG9yeSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZWd1bGF0b3J5O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFx1MDAyNnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZTtcbiYjNDM7XHR1OCByZWc2X3B3ciA9IHJlZ3VsYXRvcnktXHUwMDNlcmVnXzZnaHpfcG93ZXI7XG4mIzQzO1x0dTggcmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4mIzQzO1xuJiM0MztcdGlmICh1bmxpa2VseShycyBcdTAwM2U9IFJUVzg5X1JTX1RYX1NIQVBFX05VTSkpXG4mIzQzO1x0XHRycyA9IFJUVzg5X1JTX09GRE07XG4mIzQzO1xuJiM0MztcdGlmICghdHhfc2hhcGUtXHUwMDNlbG10KVxuJiM0MztcdFx0Z290byB2MDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJhbmQgIT0gUlRXODlfQkFORF82RylcbiYjNDM7XHRcdHJlZzZfcHdyID0gUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10KVtiYW5kXVtyc11bcmVnZF1bcmVnNl9wd3JdO1xuJiM0MztcbiYjNDM7djA6XG4mIzQzO1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10X3YwKVtiYW5kXVtyc11bcmVnZF07XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2N0cmxfYnRnX2J0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbixcbiBcdFx0XHRcdFx0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xuaW5kZXggOGY1YWY4NzNlMDlmNWUuLmM4MTM4YzQxMTZjMjE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2RlYnVnLmNcbkBAIC05Myw2ICYjNDM7OTMsNyBAQCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyB7XG4gXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGJlYWNvbl9pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYztcbiBcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19iYjtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGRpYWdfcmY7XG4gXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IG1vbml0b3Jfb3B0cztcbiB9O1xuIFxuQEAgLTUzOTYsNiAmIzQzOzUzOTcsMTE4IEBAIHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19iYl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0cmV0dXJuIHAgLSBidWY7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3NpemVfdFxuJiM0MztydHc4OV9kZWJ1Z19wcml2X2RpYWdfcmZfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG4mIzQzO1x0XHRcdCAgICAgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbiYjNDM7XHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICYjNDM7IGJ1ZnN6O1xuJiM0MztcdGludCBpLCBqO1xuJiM0MztcbiYjNDM7XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7UkZLIChuZXh0IGluZGV4OiAlZClcXG5cJiMzNDssIGluZm8tXHUwMDNlcmVjb3JkX2lkeCk7XG4mIzQzO1xuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDsgIFBIWS1YICAgID1cJiMzNDspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAlNGQgXCYjMzQ7LCByZWNvcmQtXHUwMDNlcGh5X2lkeCk7XG4mIzQzO1x0fVxuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlI7IGomIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICBTJWQtQ0ggICAgPVwmIzM0Oywgaik7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICUwNXhcJiMzNDssIHJlY29yZC1cdTAwM2VjaFtqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICBTJWQtQ1YgICAgPVwmIzM0Oywgaik7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICUwNXhcJiMzNDssIHJlY29yZC1cdTAwM2VjdltqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICBTJWQtQzUgICAgPVwmIzM0Oywgaik7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4mIzQzO1xuJiM0MztcdFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7ICUwNXhcJiMzNDssIHJlY29yZC1cdTAwM2VjNVtqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaiA9IDA7IGogXHUwMDNjIE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTOyBqJiM0MzsmIzQzOykge1xuJiM0MztcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAgJS04cyA9XCYjMzQ7LCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW2pdKTtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbiYjNDM7XG4mIzQzO1x0XHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDsgJTRkIFwmIzM0OywgcmVjb3JkLVx1MDAzZXN0YXRlc1tqXSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDtUU1NJLXRyYWNrIChuZXh0IGluZGV4OiAlZClcXG5cJiMzNDssIGluZm8tXHUwMDNlcmVjb3JkX3Rzc2lfaWR4KTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChqID0gMDsgaiBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqJiM0MzsmIzQzOykge1xuJiM0MztcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAgUyVkICAgICAgID1cJiMzNDssIGopO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OyAgICUwM3hcJiMzNDssIGluZm8tXHUwMDNldHNzaV9jb2RlW2ldW2pdKTtcbiYjNDM7XHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcJiMzNDtcXG5cJiMzNDspO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHAgLSBidWY7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ0dzg5X2RiZ19kaWFnX3JmX3NldF9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2VudGl0eV9tZ250ICptZ250ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWhhbC5lbnRpdHlfbWdudDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rO1xuJiM0MztcdHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbGlua19pZDtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShydHd2aWYsIFx1MDAyNm1nbnQtXHUwMDNlYWN0aXZlX2xpc3QsIG1nbnRfZW50cnkpXG4mIzQzO1x0XHRydHc4OV92aWZfZm9yX2VhY2hfbGluayhydHd2aWYsIHJ0d3ZpZl9saW5rLCBsaW5rX2lkKVxuJiM0MztcdFx0XHRydHc4OV9jaGlwX3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztlbnVtIHJ0dzg5X2RiZ19kaWFnX3JmX3R5cGUge1xuJiM0MztcdFJUVzg5X0RCR19ESUFHX1JGX1JTVkQgPSAwLFxuJiM0MztcdFJUVzg5X0RCR19ESUFHX1JGX1JGSyA9IDEsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgc3NpemVfdFxuJiM0MztydHc4OV9kZWJ1Z19wcml2X2RpYWdfcmZfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG4mIzQzO1x0XHRcdCAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4mIzQzO3tcbiYjNDM7XHR1OCB0eXBlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGtzdHJ0b3U4KGJ1ZiwgMCwgXHUwMDI2dHlwZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRpZiAocnR3ZGV2LVx1MDAzZXNjYW5uaW5nKVxuJiM0MztcdFx0cnR3ODlfaHdfc2Nhbl9hYm9ydChydHdkZXYsIHJ0d2Rldi1cdTAwM2VzY2FuX2luZm8uc2Nhbm5pbmdfdmlmKTtcbiYjNDM7XG4mIzQzO1x0cnR3ODlfbGVhdmVfcHNfbW9kZShydHdkZXYpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHR5cGUpIHtcbiYjNDM7XHRjYXNlIFJUVzg5X0RCR19ESUFHX1JGX1JGSzpcbiYjNDM7XHRcdHJ0dzg5X2RiZ19kaWFnX3JmX3NldF9yZmsocnR3ZGV2KTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gY291bnQ7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHNzaXplX3RcbiBydHc4OV9kZWJ1Z19wcml2X21vbml0b3Jfb3B0c19nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG5AQCAtNTUwOCw2ICYjNDM7NTYyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyBydHc4OV9kZWJ1Z2ZzX3RlbXBsID0ge1xuIFx0LmJlYWNvbl9pbmZvID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoYmVhY29uX2luZm8pLFxuIFx0LmRpYWdfbWFjID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19tYWMsIFJTSVpFXzE2SywgUkxPQ0spLFxuIFx0LmRpYWdfYmIgPSBydHc4OV9kZWJ1Z19wcml2X2dldChkaWFnX2JiLCBSU0laRV84SywgUkxPQ0spLFxuJiM0MztcdC5kaWFnX3JmID0gcnR3ODlfZGVidWdfcHJpdl9zZXRfYW5kX2dldChkaWFnX3JmLCBSV0xPQ0spLFxuIFx0Lm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLFxuIH07XG4gXG5AQCAtNTU2NSw2ICYjNDM7NTY3OSw3IEBAIHZvaWQgcnR3ODlfZGVidWdmc19hZGRfc2VjMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdG9wXG4gXHRydHc4OV9kZWJ1Z2ZzX2FkZF9yKGJlYWNvbl9pbmZvKTtcbiBcdHJ0dzg5X2RlYnVnZnNfYWRkX3IoZGlhZ19tYWMpO1xuIFx0cnR3ODlfZGVidWdmc19hZGRfcihkaWFnX2JiKTtcbiYjNDM7XHRydHc4OV9kZWJ1Z2ZzX2FkZF9ydyhkaWFnX3JmKTtcbiBcdHJ0dzg5X2RlYnVnZnNfYWRkX3J3KG1vbml0b3Jfb3B0cyk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuaW5kZXggZDZhNTk0Yjc1YWIyMDIuLjAwZmU0ODA4OTA3MWI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbkBAIC0xOTE0LDEzICYjNDM7MTkxNCwxNCBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19wcm9nX2NudF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcbiBzdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgKm1hYyA9IHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZW1hY19kZWY7XG4gXHR1MzIgdmFsMzI7XG4gXG4gXHR2YWwzMiA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfV0NQVV9GV19DVFJMKTtcbiBcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O1tFUlJdZndkbCAweDFFMCA9IDB4JXhcXG5cJiMzNDssIHZhbDMyKTtcbiBcbi1cdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CT09UX0RCRyk7XG4tXHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtbRVJSXWZ3ZGwgMHg4M0YwID0gMHgleFxcblwmIzM0OywgdmFsMzIpO1xuJiM0MztcdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgbWFjLVx1MDAzZWJvb3RfZGJnKTtcbiYjNDM7XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtbRVJSXWZ3ZGwgMHgleCA9IDB4JXhcXG5cJiMzNDssIG1hYy1cdTAwM2Vib290X2RiZywgdmFsMzIpO1xuIFxuIFx0cnR3ODlfZndfcHJvZ19jbnRfZHVtcChydHdkZXYpO1xuIH1cbkBAIC0xMTMyNSw2ICYjNDM7MTEzMjYsMTIgQEAgZndfdHhfc2hhcGVfbG10X2VudHJ5X3ZhbGlkKGNvbnN0IHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfZW50cnkgKmUsXG4gXHRpZiAoZS1cdTAwM2VyZWdkIFx1MDAzZT0gUlRXODlfUkVHRF9OVU0pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiYjNDM7XHQvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqL1xuJiM0MztcdHN0YXRpY19hc3NlcnQoUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVCA9PSAwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGUtXHUwMDNlcmVnNl9wd3IgXHUwMDNlPSBOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVIpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuQEAgLTExMzM5LDcgJiM0MzsxMTM0Niw3IEBAIHZvaWQgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXQoc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhICpkYXRhKVxuIFx0XHRpZiAoIWZ3X3R4X3NoYXBlX2xtdF9lbnRyeV92YWxpZChcdTAwMjZlbnRyeSwgY3Vyc29yLCBjb25mKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnR4X3NoYXBlX3JzXVtlbnRyeS5yZWdkXSA9IGVudHJ5LnY7XG4mIzQzO1x0XHRkYXRhLVx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkudHhfc2hhcGVfcnNdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuQEAgLTExMzU2LDYgJiM0MzsxMTM2MywxMiBAQCBmd190eF9zaGFwZV9sbXRfcnVfZW50cnlfdmFsaWQoY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSAqZSxcbiBcdGlmIChlLVx1MDAzZXJlZ2QgXHUwMDNlPSBSVFc4OV9SRUdEX05VTSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuJiM0MztcdC8qIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdvcmsgd2l0aCAyLzUgR0h6ICovXG4mIzQzO1x0c3RhdGljX2Fzc2VydChSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUID09IDApO1xuJiM0MztcbiYjNDM7XHRpZiAoZS1cdTAwM2VyZWc2X3B3ciBcdTAwM2U9IE5VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG5AQCAtMTEzNzAsNyAmIzQzOzExMzgzLDcgQEAgdm9pZCBydHc4OV9md19sb2FkX3R4X3NoYXBlX2xtdF9ydShzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X3J1X2RhdGEgKmRhdGEpXG4gXHRcdGlmICghZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5X3ZhbGlkKFx1MDAyNmVudHJ5LCBjdXJzb3IsIGNvbmYpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRkYXRhLVx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkucmVnZF0gPSBlbnRyeS52O1xuJiM0MztcdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLmU3NmNlYTBiOWQ0MzE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC01ODE0LDYgJiM0Mzs1ODE0LDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9lbnRyeSB7XG4gXHR1OCB0eF9zaGFwZV9ycztcbiBcdHU4IHJlZ2Q7XG4gXHR1OCB2O1xuJiM0MztcdHU4IHJlZzZfcHdyO1xuIH0gX19wYWNrZWQ7XG4gXG4gLyogbXVzdCBjb25zaWRlciBjb21wYXRpYmlsaXR5OyBkb24mIzM5O3QgaW5zZXJ0IG5ldyBpbiB0aGUgbWlkICovXG5AQCAtNTgyMSw2ICYjNDM7NTgyMiw3IEBAIHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfcnVfZW50cnkge1xuIFx0dTggYmFuZDtcbiBcdHU4IHJlZ2Q7XG4gXHR1OCB2O1xuJiM0MztcdHU4IHJlZzZfcHdyO1xuIH0gX19wYWNrZWQ7XG4gXG4gY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcbmluZGV4IDhjMzk1NTE3YmQyZmUxLi5lMjA0OTM0MWM0MTU0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcbkBAIC00MzA0LDEzICYjNDM7NDMwNCwxNCBAQCBpbnQgcnR3ODlfbWFjX2Rpc2FibGVfYmJfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcbiBcbi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYilcbiYjNDM7aW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIsXG4mIzQzO1x0XHRcdCAgIGJvb2wgYmJfcHJlaW5pdClcbiB7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cnR3ODlfbWFjX2N0cmxfaGNpX2RtYV90cngocnR3ZGV2LCB0cnVlKTtcbiBcbi1cdGlmIChpbmNsdWRlX2JiKSB7XG4mIzQzO1x0aWYgKGluY2x1ZGVfYmIgfHwgYmJfcHJlaW5pdCkge1xuIFx0XHQvKiBPbmx5IGNhbGwgQkIgcHJlaW5pdCBpbmNsdWRpbmcgY29uZmlndXJhdGlvbiBvZiBCQiBNQ1UgZm9yXG4gXHRcdCAqIHRoZSBjaGlwcyB3aGljaCBuZWVkIHRvIGRvd25sb2FkIEJCIE1DVSBmaXJtd2FyZS4gT3RoZXJ3aXNlLFxuIFx0XHQgKiBjYWxsaW5nIHByZWluaXQgbGF0ZXIgdG8gcHJldmVudCB0b3VjaGluZyByZWdpc3RlcnMgYWZmZWN0aW5nXG5AQCAtNDM2Myw3ICYjNDM7NDM2NCw3IEBAIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRib29sIGluY2x1ZGVfYmIgPSAhIWNoaXAtXHUwMDNlYmJtY3VfbnI7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGluY2x1ZGVfYmIpO1xuJiM0MztcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiLCBpbmNsdWRlX2JiKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZmFpbDtcbiBcbkBAIC03MDQzLDExICYjNDM7NzA0NCwyMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhX1xuIHtcbiAjZGVmaW5lIE1BQ19BWF9ERkxUX1RYX1RJTUUgNTI4MFxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VtYWNfZGVmO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHU4IG1hY19pZHggPSBydHdzdGFfbGluay1cdTAwM2VydHd2aWZfbGluay1cdTAwM2VtYWNfaWR4O1xuIFx0dTMyIG1heF90eF90aW1lID0gdHhfdGltZSA9PSAwID8gTUFDX0FYX0RGTFRfVFhfVElNRSA6IHR4X3RpbWU7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2VudGl0eV9jb25mIGNvbmY7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW47XG4gXHR1MzIgcmVnO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHopIHtcbiYjNDM7XHRcdHJ0dzg5X2VudGl0eV9nZXRfY29uZihydHdkZXYsIFx1MDAyNmNvbmYpO1xuJiM0MztcdFx0Y2hhbiA9IGNvbmYuY2hhbnNbbWFjX2lkeF07XG4mIzQzO1xuJiM0MztcdFx0aWYgKGNoYW4tXHUwMDNlYmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcpXG4mIzQzO1x0XHRcdG1heF90eF90aW1lID0gbWluX3QodTMyLCBtYXhfdHhfdGltZSxcbiYjNDM7XHRcdFx0XHRcdCAgICBjaGlwLVx1MDAzZXR4dGltZV9saW1pdF8yZ2h6KTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKHJ0d3N0YV9saW5rLVx1MDAzZWNjdGxfdHhfdGltZSkge1xuIFx0XHRydHdzdGFfbGluay1cdTAwM2VhbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgXHUwMDNlXHUwMDNlIDk7XG4gXHRcdHJldCA9IHJ0dzg5X2NoaXBfaDJjX3R4dGltZV9jbWFjX3RibChydHdkZXYsIHJ0d3N0YV9saW5rKTtcbkBAIC03MDU4LDkgJiM0Mzs3MDcxLDEzIEBAIF9fcnR3ODlfbWFjX3NldF90eF90aW1lKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3N0YV9saW5rICpydHdzdGFfXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFxuJiM0MztcdFx0aWYgKGNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbiYjNDM7XHRcdFx0bWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlPSA1O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRtYXhfdHhfdGltZSA9IG1heF90eF90aW1lICogMTAwMCBcdTAwM2VcdTAwM2UgMTU7XG4mIzQzO1xuIFx0XHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIG1hYy1cdTAwM2VhZ2dfbGltaXQuYWRkciwgbWFjX2lkeCk7XG4tXHRcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgbWFjLVx1MDAzZWFnZ19saW1pdC5tYXNrLFxuLVx0XHRcdFx0ICAgbWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlIDUpO1xuJiM0MztcdFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtXHUwMDNlYWdnX2xpbWl0Lm1hc2ssIG1heF90eF90aW1lKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXQ7XG5AQCAtNzQzOCw2ICYjNDM7NzQ1NSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2F4ID0ge1xuIFx0LmFnZ19sZW5faHQgPSBSX0FYX0FHR19MRU5fSFRfMCxcbiBcdC5wc19zdGF0dXMgPSBSX0FYX1BQV1JCSVRfU0VUVElORyxcbiBcdC5tdV9naWQgPSBcdTAwMjZydHc4OV9tYWNfbXVfZ2lkX2FkZHJfYXgsXG4mIzQzO1x0LmJvb3RfZGJnID0gUl9BWF9CT09UX0RCRyxcbiBcbiBcdC5tdWVkY2FfY3RybCA9IHtcbiBcdFx0LmFkZHIgPSBSX0FYX01VRURDQV9FTixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuaW5kZXggNTM5MDYxZmMxNWU4NWIuLjk0Njc4YTI2MmUxNjRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuQEAgLTEwNjcsNiAmIzQzOzEwNjcsNyBAQCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYge1xuIFx0dTMyIGFnZ19sZW5faHQ7XG4gXHR1MzIgcHNfc3RhdHVzO1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19tdV9naWRfYWRkciAqbXVfZ2lkO1xuJiM0MztcdHUzMiBib290X2RiZztcbiBcbiBcdHN0cnVjdCBydHc4OV9yZWdfZGVmIG11ZWRjYV9jdHJsO1xuIFx0c3RydWN0IHJ0dzg5X3JlZ19kZWYgYmZlZV9jdHJsO1xuQEAgLTEyOTgsNyAmIzQzOzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbFxuIFxuIGludCBydHc4OV9tYWNfcHdyX29uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiKTtcbiYjNDM7aW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIsXG4mIzQzO1x0XHRcdCAgIGJvb2wgYmJfcHJlaW5pdCk7XG4gaW50IHJ0dzg5X21hY19wcmVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gaW50IHJ0dzg5X21hY19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gaW50IHJ0dzg5X21hY19kbGVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfcXRhX21vZGUgbW9kZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuY1xuaW5kZXggZjI0YzExOWI5OWYxYmQuLjI0MjAwNmNlZmMzZTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuY1xuQEAgLTMyNDIsNiAmIzQzOzMyNDIsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9iZSA9IHtcbiBcdC5hZ2dfbGVuX2h0ID0gUl9CRV9BR0dfTEVOX0hUXzAsXG4gXHQucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsXG4gXHQubXVfZ2lkID0gXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLFxuJiM0MztcdC5ib290X2RiZyA9IFJfQkVfQk9PVF9EQkcsXG4gXG4gXHQubXVlZGNhX2N0cmwgPSB7XG4gXHRcdC5hZGRyID0gUl9CRV9NVUVEQ0FfRU4sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmNcbmluZGV4IDc1OWJlNGRhYjQyYjFjLi42ZGVlMzlmNTNkZjBlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmNcbkBAIC0zOTY4LDYgJiM0MzszOTY4LDIzIEBAIHZvaWQgKCogY29uc3QgcnR3ODlfcGh5X2MyaF9yZmtfbG9nX2hhbmRsZXJbXSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0W1JUVzg5X1BIWV9DMkhfUkZLX0xPR19GVU5DX0NJTTNLXSA9IHJ0dzg5X3BoeV9jMmhfcmZrX2xvZ19jaW0zayxcbiB9O1xuIFxuJiM0MzsjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcXFxuJiM0MztcdFtSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlXSA9ICN0eXBlXG4mIzQzO1xuJiM0Mztjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdID0ge1xuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChQUkVfTlRGWSksXG4mIzQzO1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFRTU0kpLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChJUUspLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEUEspLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChUWEdBUEspLFxuJiM0MztcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEQUNLKSxcbiYjNDM7XHROQU1FX1JUVzg5X1JGS19SRVBPUlQoUlhfRENLKSxcbiYjNDM7XHROQU1FX1JUVzg5X1JGS19SRVBPUlQoVFhfSVFLKSxcbiYjNDM7XHROQU1FX1JUVzg5X1JGS19SRVBPUlQoQ0lNM2spLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0dzg5X3Jma19yZXBvcnRfbmFtZXMpID09IE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTKTtcbiYjNDM7XG4gc3RhdGljXG4gdm9pZCBydHc4OV9waHlfcmZrX3JlcG9ydF9wcmVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG5AQCAtMzk3OSw4ICYjNDM7Mzk5Niw4IEBAIHZvaWQgcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gfVxuIFxuIHN0YXRpY1xuLWludCBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqcmZrX25hbWUsXG4tXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG1zKVxuJiM0MztpbnQgX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSxcbiYjNDM7XHRcdFx0XHQgIHVuc2lnbmVkIGludCBtcylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbiBcdHVuc2lnbmVkIGxvbmcgdGltZV9sZWZ0O1xuQEAgLTQwMTcsNiAmIzQzOzQwMzQsMjkgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljXG4mIzQzO2ludCBfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuJiM0MztcdFx0XHRcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF90eXBlcyByZmtfdHlwZSxcbiYjNDM7XHRcdFx0XHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCxcbiYjNDM7XHRcdFx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgbXMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBjaGFyICpyZmtfbmFtZSA9IHJ0dzg5X3Jma19yZXBvcnRfbmFtZXNbcmZrX3R5cGVdO1xuJiM0MztcdHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvICp3YWl0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXJma193YWl0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSB3YWl0LVx1MDAzZXJlY29yZF9wdHI7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCByZmtfbmFtZSwgbXMpO1xuJiM0MztcbiYjNDM7XHRpZiAocmVjb3JkKVxuJiM0MztcdFx0cmVjb3JkLVx1MDAzZXN0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LVx1MDAzZXN0YXRlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCB0eXBlLCBwaHlfaWR4LCBjaGFuLCBtcykgXFxcbiYjNDM7XHRfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlLCBwaHlfaWR4LCBjaGFuLCBtcylcbiYjNDM7XG4gc3RhdGljIHZvaWRcbiBydHc4OV9waHlfYzJoX3Jma19yZXBvcnRfc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqYzJoLCB1MzIgbGVuKVxuIHtcbkBAIC00MTIyLDcgJiM0Mzs0MTYyLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcHJlX250ZnlfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKFJUVzg5X0NIS19GV19GRUFUVVJFX0dST1VQKFdJVEhfUkZLX1BSRV9OT1RJRlksIFx1MDAyNnJ0d2Rldi1cdTAwM2VmdykpIHtcbiBcdFx0cnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChydHdkZXYpO1xuIFx0XHRydHc4OV9md19oMmNfcmZfcHJlX250ZnkocnR3ZGV2LCBwaHlfaWR4KTtcbi1cdFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O1BSRV9OVEZZXCYjMzQ7LCBtcyk7XG4mIzQzO1x0XHRyZXQgPSBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgUFJFX05URlksIHBoeV9pZHgsIE5VTEwsIG1zKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTQxNTIsNyAmIzQzOzQxOTIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O1RTU0lcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3Rzc2lfYW5kX3dhaXQpO1xuIFxuQEAgLTQxNjksNyAmIzQzOzQyMDksNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19pcWtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCYjMzQ7SVFLXCYjMzQ7LCBtcyk7XG4mIzQzO1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBJUUssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdCk7XG4gXG5AQCAtNDE4Niw3ICYjNDM7NDIyNiw3IEBAIGludCBydHc4OV9waHlfcmZrX2Rwa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtEUEtcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIERQSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfZHBrX2FuZF93YWl0KTtcbiBcbkBAIC00MjAzLDcgJiM0Mzs0MjQzLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O1RYR0FQS1wmIzM0OywgbXMpO1xuJiM0MztcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7XG4gfVxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190eGdhcGtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyMjAsNyAmIzQzOzQyNjAsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kYWNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwmIzM0O0RBQ0tcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIERBQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQpO1xuIFxuQEAgLTQyMzcsNyAmIzQzOzQyNzcsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19yeGRja19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtSWF9EQ0tcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFJYX0RDSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQpO1xuIFxuQEAgLTQyNTQsNyAmIzQzOzQyOTQsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtUWF9JUUtcJiMzNDssIG1zKTtcbiYjNDM7XHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHhpcWtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyNzEsNyAmIzQzOzQzMTEsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19jaW0za19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcJiMzNDtDSU0za1wmIzM0OywgbXMpO1xuJiM0MztcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgQ0lNM2ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxuaW5kZXggNTMyMjMyODkyODMxZjAuLjI1NTQxNmViYWY5MDA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxuQEAgLTExNjMsNiAmIzQzOzExNjMsOSBAQCB2b2lkIHJ0dzg5X3BoeV9yYXRlX3BhdHRlcm5fdmlmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBib29sIHJ0dzg5X3BoeV9jMmhfY2hrX2F0b21pYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGNsYXNzLCB1OCBmdW5jKTtcbiB2b2lkIHJ0dzg5X3BoeV9jMmhfaGFuZGxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKTtcbiYjNDM7XG4mIzQzO2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdO1xuJiM0MztcbiBpbnQgcnR3ODlfcGh5X3Jma19wcmVfbnRmeV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IG1zKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxuaW5kZXggMDg2ZWY3N2ViYjlmY2QuLmFmOTE4MTM2N2IyMjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxuQEAgLTg3MTgsNiAmIzQzOzg3MTgsNyBAQFxuICNkZWZpbmUgUlJfVkNPIDB4YjJcbiAjZGVmaW5lIFJSX1ZDT19WQUwgR0VOTUFTSygxOCwgMTQpXG4gI2RlZmluZSBSUl9WQ09fU0VMIEdFTk1BU0soOSwgOClcbiYjNDM7I2RlZmluZSBSUl9WQ09fU1RTIEdFTk1BU0soNywgMClcbiAjZGVmaW5lIFJSX1ZDSSAweGIzXG4gI2RlZmluZSBSUl9WQ0lfT04gQklUKDcpXG4gI2RlZmluZSBSUl9MUEYgMHhiN1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuY1xuaW5kZXggNjBmMzYyNTkzNjk2NmYuLjAzZTFkMWRmODZiMzI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcbkBAIC0xOTE4LDExICYjNDM7MTkxOCw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTFiX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuIFx0XHRcdFx0ICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuIFx0dTggYmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuLVx0dTggcmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4tXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07XG4tXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTtcbiYjNDM7XHR1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTtcbiYjNDM7XHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xuIFxuIFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcbiBcdFx0cnR3ODg1MWJfYmJfc2V0X3R4X3NoYXBlX2RmaXIocnR3ZGV2LCBjaGFuLCB0eF9zaGFwZV9jY2ssIHBoeV9pZHgpO1xuQEAgLTI3NzksNiAmIzQzOzI3NzcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTFiX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBcdTAwMjZydHc4ODUxYl94dGFsX2luZm8sXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUxYl9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xuaW5kZXggYTljMzA5YzI0NWMzMzQuLjNhNzMwYTgyNjk0OTgwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiX3RhYmxlLmNcbkBAIC0xNDg4Niw4ICYjNDM7MTQ4ODYsOCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTFiX2RmbHRfcGFybXMgPSB7XG4gXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWcsXG4gXHR9LFxuIFx0LnR4X3NoYXBlID0ge1xuLVx0XHQubG10ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LFxuLVx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuJiM0MztcdFx0LmxtdF92MCA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcbiYjNDM7XHRcdC5sbXRfcnVfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXG4gXHR9LFxuIH07XG4gXG5AQCAtMTQ5MDIsOCAmIzQzOzE0OTAyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MWJfcmZlX3Bhcm1zX3R5cGUyID0ge1xuIFx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhwd3JfbG10X3J1XzVnX3R5cGUyLFxuIFx0fSxcbiBcdC50eF9zaGFwZSA9IHtcbi1cdFx0LmxtdCA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcbi1cdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdF9ydSxcbiYjNDM7XHRcdC5sbXRfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXG4mIzQzO1x0XHQubG10X3J1X3YwID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuIFx0fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xuaW5kZXggMmMxZjE2NmU2ODdmMDYuLjY3NTY0ZTU4ZDEyMzM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcbkBAIC0yNTE2LDYgJiM0MzsyNTE2LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYV9jaGlwX2luZm8gPSB7XG4gI2VuZGlmXG4gXHQueHRhbF9pbmZvXHRcdD0gXHUwMDI2cnR3ODg1MmFfeHRhbF9pbmZvLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbiYjNDM7XHQudHh0aW1lX2xpbWl0XzJnaHpcdD0gMCxcbiB9O1xuIEVYUE9SVF9TWU1CT0wocnR3ODg1MmFfY2hpcF9pbmZvKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcbmluZGV4IDRlN2IwNjhhYWE3NWIxLi5iMGFjMjlkMWEwMWM3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jXG5AQCAtMTExMyw2ICYjNDM7MTExMyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYl9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jXG5pbmRleCBkZjVmYmFlNTBmZjU1MC4uYTYxYzY0ZmRmZjRkYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jXG5AQCAtMTMyMSwxMSAmIzQzOzEzMjEsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyYnhfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuIFx0XHRcdFx0ICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbiBcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xuLVx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4mIzQzO1x0dTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7XG4mIzQzO1x0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcbiBcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXG4gXHRcdHJ0dzg4NTJieF9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jXG5pbmRleCAwNzk0NWQwNmRjNTljOS4uMTMzMmQxYjkyMzVhZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xuQEAgLTIyOTIxLDcgJiM0MzsyMjkyMSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmJfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTJiX3R4cHdyX2xtdF9ydV81ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsXG4mIzQzO1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LFxuJiM0MztcdFx0LmxtdF9ydV92MCA9IFx1MDAyNnJ0dzg5Xzg4NTJiX3R4X3NoYXBlX2xtdF9ydSxcbiBcdH0sXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xuaW5kZXggN2ZjYzg3N2Y2ZWEwYzQuLjRiZWE4NWI0Mjc4YjhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xuQEAgLTk1MCw2ICYjNDM7OTUwLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYnRfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcbmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXG5AQCAtMjE5MywxMSAmIzQzOzIxOTMsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyY19zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbiBcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xuLVx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4mIzQzO1x0dTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7XG4mIzQzO1x0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcbiBcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXG4gXHRcdHJ0dzg4NTJjX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcbkBAIC0zMzE5LDYgJiM0MzszMzE3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyY19jaGlwX2luZm8gPSB7XG4gI2VuZGlmXG4gXHQueHRhbF9pbmZvXHRcdD0gTlVMTCxcbiBcdC5kZWZhdWx0X3F1aXJrc1x0XHQ9IDAsXG4mIzQzO1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJjX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXG5pbmRleCAyNGMzOTBiNmYzZDM0NC4uYjcyZmVlMzc3ZTljMGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuY1xuQEAgLTU3MTUzLDcgJiM0Mzs1NzE1Myw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmNfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTJjX3R4cHdyX2xtdF9ydV82ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXG4mIzQzO1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MmNfdHhfc2hhcGVfbG10LFxuJiM0MztcdFx0LmxtdF9ydV92MCA9IFx1MDAyNnJ0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSxcbiBcdH0sXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcbmluZGV4IGFkMzYxOGRmZDU3ZDAwLi4zZTg3MDg4MGI1OThlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXG5AQCAtMjUwMiwxNSAmIzQzOzI1MDIsMTAgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmFfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4gXHRcdFx0XHQgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gXHUwMDI2cmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlO1xuJiM0MztcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbiBcdHU4IHR4X3NoYXBlX2lkeDtcbi1cdHU4IGJhbmQsIHJlZ2Q7XG4tXG4tXHRiYW5kID0gY2hhbi1cdTAwM2ViYW5kX3R5cGU7XG4tXHRyZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcbi1cdHR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtXHUwMDNlbG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTtcbiBcbiYjNDM7XHR0eF9zaGFwZV9pZHggPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XG4gXHRpZiAodHhfc2hhcGVfaWR4ID09IDApXG4gXHRcdHJ0dzg5MjJhX2JiX3R4X3RyaWFuZ3VsYXIocnR3ZGV2LCBmYWxzZSwgcGh5X2lkeCk7XG4gXHRlbHNlXG5AQCAtMzMwMiw2ICYjNDM7MzI5Nyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmFfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuJiM0MztcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4OTIyYV9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xuaW5kZXggODM4YzI2MjMxODk3ZDYuLmNjMTI3YTNlODZlZjg4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcbkBAIC0xMTM2LDggJiM0MzsxMTM2LDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHR1MzIgc3ViX2NhcnIgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhfU1VCX0JBTkRfVkFMVUUsIG1hY19pZHgpO1xuIFx0dTMyIGNoa19yYXRlID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX1RYUkFURV9DSEssIG1hY19pZHgpO1xuIFx0dTMyIHJmX21vZCA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9XTUFDX1JGTU9ELCBtYWNfaWR4KTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHR1OCB0eHNiMjAgPSAwLCB0eHNiNDAgPSAwLCB0eHNiODAgPSAwO1xuIFx0dTggcmZfbW9kX3ZhbCwgY2hrX3JhdGVfbWFzaywgc2lmcztcbiYjNDM7XHR1MTYgdHhfdGltZSA9IEFNUERVX01BWF9USU1FX1YxO1xuIFx0dTMyIHR4c2I7XG4gXHR1MzIgcmVnO1xuIFxuQEAgLTEyMTgsNiAmIzQzOzEyMjAsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X2NoYW5uZWxfbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcbiBcdHJlZyA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9NVUVEQ0FfRU4sIG1hY19pZHgpO1xuIFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBCX0JFX1NJRlNfTUFDVFhFTl9UQl9UMV9ET1QwNVVTX01BU0ssIHNpZnMpO1xuJiM0MztcbiYjNDM7XHRpZiAoY2hhbi1cdTAwM2ViYW5kX3R5cGUgPT0gUlRXODlfQkFORF8yRyBcdTAwMjZcdTAwMjYgY2hpcC1cdTAwM2V0eHRpbWVfbGltaXRfMmdoeilcbiYjNDM7XHRcdHR4X3RpbWUgPSBtaW5fdCh1MzIsIHR4X3RpbWUsIGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHogKiAxMDAwIFx1MDAzZVx1MDAzZSAxNSk7XG4mIzQzO1xuJiM0MztcdHJlZyA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9BTVBEVV9BR0dfTElNSVQsIG1hY19pZHgpO1xuJiM0MztcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgQl9CRV9BTVBEVV9NQVhfVElNRV9NQVNLLCB0eF90aW1lKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9zY29fYmFya2VyX3RocmVzaG9sZFsxNF0gPSB7XG5AQCAtMjczOSwxNiAmIzQzOzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSAqZCA9IHJ0d2Rldi1cdTAwM2VwaHlfaW5mby5iYl93cmFwX2RhdGE7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFx1MDAyNnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZTtcbiYjNDM7XHR1OCBiYW5kID0gY2hhbi1cdTAwM2ViYW5kX3R5cGU7XG4gXHR1OCB0eF9zaGFwZV9pZHg7XG4tXHR1OCBiYW5kLCByZWdkO1xuIFx0Y29uc3QgdTE2ICp0aDtcbiBcbi1cdGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dHhfc2hhcGVfaWR4ID0gKCp0eF9zaGFwZS1cdTAwM2VsbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xuLVxuJiM0MztcdHR4X3NoYXBlX2lkeCA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcdGlmICh0eF9zaGFwZV9pZHggPT0gMClcbiBcdFx0Z290byBkaXNhYmxlO1xuIFxuQEAgLTM0MzcsNiAmIzQzOzM0NDAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJkX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gQklUKFJUVzg5X1FVSVJLX1RIRVJNQUxfUFJPVF8xMjBDKSxcbiYjNDM7XHQudHh0aW1lX2xpbWl0XzJnaHpcdD0gNDYwOCxcbiB9O1xuIEVYUE9SVF9TWU1CT0wocnR3ODkyMmRfY2hpcF9pbmZvKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyIChSZWFsdGVrIDgwMi4xMWF4L2JlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGNvbXBsZXggZmlybXdhcmUgZW11bGF0aW9uICh3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyKSB0byBwYXNzIHRoZSBpbml0aWFsIHByb2JlIGFuZCByZWFjaCB0aGUgY29yZSBsb2dpYyAoTUFDL1BIWSBpbml0aWFsaXphdGlvbiwgUkYgY2FsaWJyYXRpb24sIGV0Yy4pLiBUaGVyZWZvcmUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzE5OGNhMzQxYWFjMGRjZmEwZWE1YTFiMjc5ZTNjMDFhOWRlMTNlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDEyOjI2OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwppbmRleCA2OGRhZDYwOTBmODdlMi4uOWI5NmI1N2JjMzljZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCkBAIC00ODYsNiAmIzQzOzQ4NiwzNyBAQCB2b2lkIHJ0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCV9fcnR3ODlfY29yZV9zZXRfY2hpcF90eHB3cihydHdkZXYsIGNvbmYuY2hhbnNbMV0sIFJUVzg5X1BIWV8xKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3JlY29yZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiYjNDM7CQkJCSAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaywKJiM0MzsJCQkJICBib29sIHN0YXJ0KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSAmYW1wO3J0d2Rldi0mZ3Q7cmZrX3dhaXQ7CiYjNDM7CXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaW5mby0mZ3Q7cmVjb3JkX2lkeF07CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiYjNDM7CXU4IHBhdGhfbnVtID0gbWluKGNoaXAtJmd0O3JmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpOwomIzQzOwlpbnQgcGF0aDsKJiM0MzsKJiM0MzsJaWYgKCFzdGFydCkKJiM0MzsJCWdvdG8gZW5kOwomIzQzOwomIzQzOwlpbmZvLSZndDtyZWNvcmRfcHRyID0gcmVjb3JkOwomIzQzOwlyZWNvcmQtJmd0O3BoeV9pZHggPSBydHd2aWZfbGluay0mZ3Q7cGh5X2lkeDsKJiM0MzsKJiM0MzsJZm9yIChwYXRoID0gMDsgcGF0aCAmbHQ7IHBhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykgewomIzQzOwkJcmVjb3JkLSZndDtjaFtwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9DRkdDSCwKJiM0MzsJCQkJCQkgUlJfQ0ZHQ0hfQkFORDAgfCBSUl9DRkdDSF9DSCk7CiYjNDM7CQlyZWNvcmQtJmd0O2N2W3BhdGhdID0gcnR3ODlfcmVhZF9yZihydHdkZXYsIHBhdGgsIFJSX1ZDTywKJiM0MzsJCQkJCQkgUlJfVkNPX1NFTCB8IFJSX1ZDT19TVFMpOwomIzQzOwkJcmVjb3JkLSZndDtjNVtwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9TWU5GQiwgUkZSRUdfTUFTSyk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuOwomIzQzOwomIzQzO2VuZDoKJiM0MzsJaW5mby0mZ3Q7cmVjb3JkX2lkeCA9IChpbmZvLSZndDtyZWNvcmRfaWR4ICYjNDM7IDEpICUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOwomIzQzOwlpbmZvLSZndDtyZWNvcmRfcHRyID0gTlVMTDsKJiM0Mzt9CiYjNDM7CiB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspCiB7CkBAIC01MDMsOSAmIzQzOzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQlydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpOwogCX0KIAotCWlmIChjaGlwLSZndDtvcHMtJmd0O3Jma19jaGFubmVsKQomIzQzOwlpZiAoY2hpcC0mZ3Q7b3BzLSZndDtyZmtfY2hhbm5lbCkgewomIzQzOwkJcnR3ODlfY29yZV9yZmtfcmVjb3JkKHJ0d2RldiwgcnR3dmlmX2xpbmssIHRydWUpOwomIzQzOwogCQljaGlwLSZndDtvcHMtJmd0O3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspOwogCiYjNDM7CQlydHc4OV9jb3JlX3Jma19yZWNvcmQocnR3ZGV2LCBydHd2aWZfbGluaywgZmFsc2UpOwomIzQzOwl9CiYjNDM7CiAJaWYgKHByZWhkbF9saW5rKSB7CiAJCXJ0dzg5X2VudGl0eV9mb3JjZV9odyhydHdkZXYsIFJUVzg5X1BIWV9OVU0pOwogCQlydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpOwpAQCAtNTI2NSw2ICYjNDM7NTMwMSwzNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9lbnRlcl9scHNfdHJhY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCX0KIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3Rzc2lfcmVjb3JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiYjNDM7CXU4IHBhdGhfbnVtID0gbWluKGNoaXAtJmd0O3JmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpOwomIzQzOwlzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9ICZhbXA7cnR3ZGV2LSZndDtyZmtfd2FpdDsKJiM0MzsJaW50IGkgPSBpbmZvLSZndDtyZWNvcmRfdHNzaV9pZHg7CiYjNDM7CXUzMiBiYXNlOwomIzQzOwl1MzIgbWFzazsKJiM0MzsJaW50IHBhdGg7CiYjNDM7CiYjNDM7CWlmIChjaGlwLSZndDtjaGlwX2dlbiA9PSBSVFc4OV9DSElQX0FYKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpbmZvLSZndDtyZWNvcmRfdHNzaV9pZHggPSAoaW5mby0mZ3Q7cmVjb3JkX3Rzc2lfaWR4ICYjNDM7IDEpICUKJiM0MzsJCQkJUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOwomIzQzOwomIzQzOwlpZiAoY2hpcC0mZ3Q7Y2hpcF9pZCA9PSBSVEw4OTIyQSkgewomIzQzOwkJYmFzZSA9IDB4MmVlMTA7CiYjNDM7CQltYXNrID0gMHg3ZmMwMDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWJhc2UgPSAweDJmOTE4OwomIzQzOwkJbWFzayA9IDB4MDAwMDAxZmY7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChwYXRoID0gMDsgcGF0aCAmbHQ7IHBhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykgewomIzQzOwkJdTMyIGFkZHIgPSBiYXNlICYjNDM7IDB4MTAwICogcGF0aDsKJiM0MzsKJiM0MzsJCWluZm8tJmd0O3Rzc2lfY29kZVtpXVtwYXRoXSA9IHJ0dzg5X3JlYWQzMl9tYXNrKHJ0d2RldiwgYWRkciwgbWFzayk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CiAJZW51bSBydHc4OV9lbnRpdHlfbW9kZSBtb2RlOwpAQCAtNTI3NCw2ICYjNDM7NTM0MSw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJcmV0dXJuOwogCiAJcnR3ODlfY2hpcF9yZmtfdHJhY2socnR3ZGV2KTsKJiM0MzsKJiM0MzsJcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQocnR3ZGV2KTsKIH0KIAogdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9wMnBfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LApAQCAtNzE4MCw5ICYjNDM7NzI0OSwxOSBAQCBpbnQgcnR3ODlfY29yZV9tbHNyX3N3aXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZiwKIHN0YXRpYyBpbnQgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgKm1hYyA9IHJ0d2Rldi0mZ3Q7Y2hpcC0mZ3Q7bWFjX2RlZjsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKJiM0MzsJYm9vbCBiYl9wcmVpbml0ID0gZmFsc2U7CiAJaW50IHJldDsKIAotCXJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBmYWxzZSk7CiYjNDM7CS8qCiYjNDM7CSAqIE5vcm1hbGx5IGluIHByb2JlIHN0YWdlLCB3ZSBkb24mIzM5O3QgbmVlZCB0byBkbyBCQiBwcmUtaW5pdGlhbGl6YXRpb24uCiYjNDM7CSAqIEhvd2V2ZXIsIFJUTDg5MjJEIGZpcm13YXJlIGNhbiBhY2Nlc3MgQkIgcmVnaXN0ZXJzIGF0IGZpcm13YXJlCiYjNDM7CSAqIGluaXRpYWwgc3RhdGUsIHNvIGluaXRpYWxpemUgaXQgdG8gYXZvaWQgQkIgSU8gc3R1Y2sgaW4gZmlybXdhcmUuCiYjNDM7CSAqLwomIzQzOwlpZiAoY2hpcC0mZ3Q7Y2hpcF9pZCA9PSBSVEw4OTIyRCkKJiM0MzsJCWJiX3ByZWluaXQgPSB0cnVlOwomIzQzOwomIzQzOwlyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgZmFsc2UsIGJiX3ByZWluaXQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgKaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjJlYWNiNWZlOTdmMjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaApAQCAtNDI5NCw4ICYjNDM7NDI5NCwxMiBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfcnVsZV82Z2h6IHsKIH07CiAKIHN0cnVjdCBydHc4OV90eF9zaGFwZSB7Ci0JY29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTsKLQljb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXTsKJiM0MzsJY29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXQomIzQzOwkJICAgICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdOwomIzQzOwljb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdOwomIzQzOwomIzQzOwljb25zdCB1OCAoKmxtdF92MClbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dOwomIzQzOwljb25zdCB1OCAoKmxtdF9ydV92MClbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXTsKIH07CiAKIHN0cnVjdCBydHc4OV9yZmVfcGFybXMgewpAQCAtNDM4OSwxMiAmIzQzOzQzOTMsMTMgQEAgc3RydWN0IHJ0dzg5X3R4cHdyX2xtdF9ydV82Z2h6X2RhdGEgewogCiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X2RhdGEgewogCXN0cnVjdCBydHc4OV90eHB3cl9jb25mIGNvbmY7Ci0JdTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV07CiYjNDM7CXU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dCiYjNDM7CSAgICBbTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSXTsKIH07CiAKIHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfcnVfZGF0YSB7CiAJc3RydWN0IHJ0dzg5X3R4cHdyX2NvbmYgY29uZjsKLQl1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07CiYjNDM7CXU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdOwogfTsKIAogc3RydWN0IHJ0dzg5X3JmZV9kYXRhIHsKQEAgLTQ3OTAsNiAmIzQzOzQ3OTUsNyBAQCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHsKIAljb25zdCBzdHJ1Y3Qgd2lwaHlfd293bGFuX3N1cHBvcnQgKndvd2xhbl9zdHViOwogCWNvbnN0IHN0cnVjdCBydHc4OV94dGFsX2luZm8gKnh0YWxfaW5mbzsKIAl1bnNpZ25lZCBsb25nIGRlZmF1bHRfcXVpcmtzOyAvKiBiaXRtYXAgb2YgcnR3ODlfcXVpcmtzICovCiYjNDM7CXUxNiB0eHRpbWVfbGltaXRfMmdoejsKIH07CiAKIHN0cnVjdCBydHc4OV9jaGlwX3ZhcmlhbnQgewpAQCAtNTQ4NCwxMSAmIzQzOzU0OTAsNDMgQEAgZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHsKIAlSVFc4OV9SRktfU1RBVEVfSDJDX0NNRF9FUlIgPSAweDQsCiB9OwogCiYjNDM7ZW51bSBydHc4OV9yZmtfcmVwb3J0X3R5cGVzIHsKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9QUkVfTlRGWSwKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9UU1NJLAomIzQzOwlSVFc4OV9SRktfUkVQT1JUX0lRSywKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9EUEssCiYjNDM7CVJUVzg5X1JGS19SRVBPUlRfVFhHQVBLLAomIzQzOwlSVFc4OV9SRktfUkVQT1JUX0RBQ0ssCiYjNDM7CVJUVzg5X1JGS19SRVBPUlRfUlhfRENLLAomIzQzOwlSVFc4OV9SRktfUkVQT1JUX1RYX0lRSywKJiM0MzsJUlRXODlfUkZLX1JFUE9SVF9DSU0zaywKJiM0MzsKJiM0MzsJTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVMsCiYjNDM7fTsKJiM0MzsKJiM0MzsjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUiAyCiYjNDM7I2RlZmluZSBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlIgMTAKJiM0MzsKJiM0MztzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCB7CiYjNDM7CXUzMiBjaFtSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdOwomIzQzOwl1MzIgY3ZbUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTsKJiM0MzsJdTMyIGM1W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07CiYjNDM7CWVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4OwomIzQzOwllbnVtIHJ0dzg5X3Jma19yZXBvcnRfc3RhdGUgc3RhdGVzW05VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTXTsKJiM0Mzt9OwomIzQzOwogc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gewogCXN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247CiAJa3RpbWVfdCBzdGFydF90aW1lOwogCWVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSBzdGF0ZTsKIAl1OCB2ZXJzaW9uOwomIzQzOwomIzQzOwlpbnQgcmVjb3JkX2lkeDsKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZF9wdHI7CiYjNDM7CXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkIHJlY29yZHNbUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SXTsKJiM0MzsKJiM0MzsJaW50IHJlY29yZF90c3NpX2lkeDsKJiM0MzsJdTMyIHRzc2lfY29kZVtSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlJdW1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07CiB9OwogCiAjZGVmaW5lIFJUVzg5X0RBQ0tfUEFUSF9OUiAyCkBAIC03NTY5LDggJiM0Mzs3NjA3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jaGlwX2JiX3NldGh3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LSZndDtjaGlwOwogCiYjNDM7CXJ0dzg5X2lvX3BhY2socnR3ZGV2KTsKJiM0MzsKIAlpZiAoY2hpcC0mZ3Q7b3BzLSZndDtiYl9zZXRodykKIAkJY2hpcC0mZ3Q7b3BzLSZndDtiYl9zZXRodyhydHdkZXYpOwomIzQzOwomIzQzOwlydHc4OV9pb191bnBhY2socnR3ZGV2KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2NoaXBfcmZrX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQpAQCAtNzc4Nyw2ICYjNDM7NzgyOSwzMCBAQCBzdGF0aWMgaW5saW5lIHU4IHJ0dzg5X3JlZ2RfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZCkKIAlyZXR1cm4gdHhwd3JfcmVnZDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdTggcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJhbmQsCiYjNDM7CQkJCQllbnVtIHJ0dzg5X3JhdGVfc2VjdGlvbiBycykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydHc4OV9yZWd1bGF0b3J5X2luZm8gKnJlZ3VsYXRvcnkgPSAmYW1wO3J0d2Rldi0mZ3Q7cmVndWxhdG9yeTsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LSZndDtyZmVfcGFybXM7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSAmYW1wO3JmZV9wYXJtcy0mZ3Q7dHhfc2hhcGU7CiYjNDM7CXU4IHJlZzZfcHdyID0gcmVndWxhdG9yeS0mZ3Q7cmVnXzZnaHpfcG93ZXI7CiYjNDM7CXU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkocnMgJmd0Oz0gUlRXODlfUlNfVFhfU0hBUEVfTlVNKSkKJiM0MzsJCXJzID0gUlRXODlfUlNfT0ZETTsKJiM0MzsKJiM0MzsJaWYgKCF0eF9zaGFwZS0mZ3Q7bG10KQomIzQzOwkJZ290byB2MDsKJiM0MzsKJiM0MzsJaWYgKGJhbmQgIT0gUlRXODlfQkFORF82RykKJiM0MzsJCXJlZzZfcHdyID0gUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVDsKJiM0MzsKJiM0MzsJcmV0dXJuICgqdHhfc2hhcGUtJmd0O2xtdClbYmFuZF1bcnNdW3JlZ2RdW3JlZzZfcHdyXTsKJiM0MzsKJiM0Mzt2MDoKJiM0MzsJcmV0dXJuICgqdHhfc2hhcGUtJmd0O2xtdF92MClbYmFuZF1bcnNdW3JlZ2RdOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jdHJsX2J0Z19idF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4sCiAJCQkJCWVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jCmluZGV4IDhmNWFmODczZTA5ZjVlLi5jODEzOGM0MTE2YzIxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuYwpAQCAtOTMsNiAmIzQzOzkzLDcgQEAgc3RydWN0IHJ0dzg5X2RlYnVnZnMgewogCXN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgYmVhY29uX2luZm87CiAJc3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYzsKIAlzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGRpYWdfYmI7CiYjNDM7CXN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19yZjsKIAlzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IG1vbml0b3Jfb3B0czsKIH07CiAKQEAgLTUzOTYsNiAmIzQzOzUzOTcsMTE4IEBAIHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19iYl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCXJldHVybiBwIC0gYnVmOwogfQogCiYjNDM7c3RhdGljIHNzaXplX3QKJiM0MztydHc4OV9kZWJ1Z19wcml2X2RpYWdfcmZfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKJiM0MzsJCQkgICAgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdiwKJiM0MzsJCQkgICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSAmYW1wO3J0d2Rldi0mZ3Q7cmZrX3dhaXQ7CiYjNDM7CWNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7CiYjNDM7CWludCBpLCBqOwomIzQzOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtSRksgKG5leHQgaW5kZXg6ICVkKVxuJiMzNDssIGluZm8tJmd0O3JlY29yZF9pZHgpOwomIzQzOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDsgIFBIWS1YICAgID0mIzM0Oyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkID0gJmFtcDtpbmZvLSZndDtyZWNvcmRzW2ldOwomIzQzOwomIzQzOwkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICU0ZCAmIzM0OywgcmVjb3JkLSZndDtwaHlfaWR4KTsKJiM0MzsJfQomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJZm9yIChqID0gMDsgaiAmbHQ7IFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUjsgaiYjNDM7JiM0MzspIHsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgUyVkLUNIICAgID0mIzM0Oywgaik7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaV07CiYjNDM7CiYjNDM7CQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICUwNXgmIzM0OywgcmVjb3JkLSZndDtjaFtqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgUyVkLUNWICAgID0mIzM0Oywgaik7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaV07CiYjNDM7CiYjNDM7CQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICUwNXgmIzM0OywgcmVjb3JkLSZndDtjdltqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgUyVkLUM1ICAgID0mIzM0Oywgaik7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSAmYW1wO2luZm8tJmd0O3JlY29yZHNbaV07CiYjNDM7CiYjNDM7CQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICUwNXgmIzM0OywgcmVjb3JkLSZndDtjNVtqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJfQomIzQzOwomIzQzOwlmb3IgKGogPSAwOyBqICZsdDsgTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVM7IGomIzQzOyYjNDM7KSB7CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDsgICUtOHMgPSYjMzQ7LCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW2pdKTsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJc3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9ICZhbXA7aW5mby0mZ3Q7cmVjb3Jkc1tpXTsKJiM0MzsKJiM0MzsJCQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDsgJTRkICYjMzQ7LCByZWNvcmQtJmd0O3N0YXRlc1tqXSk7CiYjNDM7CQl9CiYjNDM7CQlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtcbiYjMzQ7KTsKJiM0MzsJfQomIzQzOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgJiMzNDtUU1NJLXRyYWNrIChuZXh0IGluZGV4OiAlZClcbiYjMzQ7LCBpbmZvLSZndDtyZWNvcmRfdHNzaV9pZHgpOwomIzQzOwomIzQzOwlmb3IgKGogPSAwOyBqICZsdDsgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqJiM0MzsmIzQzOykgewomIzQzOwkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7ICBTJWQgICAgICAgPSYjMzQ7LCBqKTsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OyAgICUwM3gmIzM0OywgaW5mby0mZ3Q7dHNzaV9jb2RlW2ldW2pdKTsKJiM0MzsJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0O1xuJiMzNDspOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBwIC0gYnVmOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydHc4OV9lbnRpdHlfbWdudCAqbWdudCA9ICZhbXA7cnR3ZGV2LSZndDtoYWwuZW50aXR5X21nbnQ7CiYjNDM7CXN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7CiYjNDM7CXN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjsKJiM0MzsJdW5zaWduZWQgaW50IGxpbmtfaWQ7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkocnR3dmlmLCAmYW1wO21nbnQtJmd0O2FjdGl2ZV9saXN0LCBtZ250X2VudHJ5KQomIzQzOwkJcnR3ODlfdmlmX2Zvcl9lYWNoX2xpbmsocnR3dmlmLCBydHd2aWZfbGluaywgbGlua19pZCkKJiM0MzsJCQlydHc4OV9jaGlwX3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspOwomIzQzO30KJiM0MzsKJiM0MztlbnVtIHJ0dzg5X2RiZ19kaWFnX3JmX3R5cGUgewomIzQzOwlSVFc4OV9EQkdfRElBR19SRl9SU1ZEID0gMCwKJiM0MzsJUlRXODlfREJHX0RJQUdfUkZfUkZLID0gMSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7cnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiYjNDM7CQkJICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsCiYjNDM7CQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKJiM0Mzt7CiYjNDM7CXU4IHR5cGU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGtzdHJ0b3U4KGJ1ZiwgMCwgJmFtcDt0eXBlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlpZiAocnR3ZGV2LSZndDtzY2FubmluZykKJiM0MzsJCXJ0dzg5X2h3X3NjYW5fYWJvcnQocnR3ZGV2LCBydHdkZXYtJmd0O3NjYW5faW5mby5zY2FubmluZ192aWYpOwomIzQzOwomIzQzOwlydHc4OV9sZWF2ZV9wc19tb2RlKHJ0d2Rldik7CiYjNDM7CiYjNDM7CXN3aXRjaCAodHlwZSkgewomIzQzOwljYXNlIFJUVzg5X0RCR19ESUFHX1JGX1JGSzoKJiM0MzsJCXJ0dzg5X2RiZ19kaWFnX3JmX3NldF9yZmsocnR3ZGV2KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBjb3VudDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3NpemVfdAogcnR3ODlfZGVidWdfcHJpdl9tb25pdG9yX29wdHNfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdiwKQEAgLTU1MDgsNiAmIzQzOzU2MjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RlYnVnZnMgcnR3ODlfZGVidWdmc190ZW1wbCA9IHsKIAkuYmVhY29uX2luZm8gPSBydHc4OV9kZWJ1Z19wcml2X2dldChiZWFjb25faW5mbyksCiAJLmRpYWdfbWFjID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19tYWMsIFJTSVpFXzE2SywgUkxPQ0spLAogCS5kaWFnX2JiID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19iYiwgUlNJWkVfOEssIFJMT0NLKSwKJiM0MzsJLmRpYWdfcmYgPSBydHc4OV9kZWJ1Z19wcml2X3NldF9hbmRfZ2V0KGRpYWdfcmYsIFJXTE9DSyksCiAJLm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLAogfTsKIApAQCAtNTU2NSw2ICYjNDM7NTY3OSw3IEBAIHZvaWQgcnR3ODlfZGVidWdmc19hZGRfc2VjMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdG9wCiAJcnR3ODlfZGVidWdmc19hZGRfcihiZWFjb25faW5mbyk7CiAJcnR3ODlfZGVidWdmc19hZGRfcihkaWFnX21hYyk7CiAJcnR3ODlfZGVidWdmc19hZGRfcihkaWFnX2JiKTsKJiM0MzsJcnR3ODlfZGVidWdmc19hZGRfcncoZGlhZ19yZik7CiAJcnR3ODlfZGVidWdmc19hZGRfcncobW9uaXRvcl9vcHRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4wMGZlNDgwODkwNzFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwpAQCAtMTkxNCwxMyAmIzQzOzE5MTQsMTQgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfcHJvZ19jbnRfZHVtcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAKIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2RsX2ZhaWxfZHVtcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LSZndDtjaGlwLSZndDttYWNfZGVmOwogCXUzMiB2YWwzMjsKIAogCXZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9XQ1BVX0ZXX0NUUkwpOwogCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1md2RsIDB4MUUwID0gMHgleFxuJiMzNDssIHZhbDMyKTsKIAotCXZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CT09UX0RCRyk7Ci0JcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWZ3ZGwgMHg4M0YwID0gMHgleFxuJiMzNDssIHZhbDMyKTsKJiM0MzsJdmFsMzIgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBtYWMtJmd0O2Jvb3RfZGJnKTsKJiM0MzsJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWZ3ZGwgMHgleCA9IDB4JXhcbiYjMzQ7LCBtYWMtJmd0O2Jvb3RfZGJnLCB2YWwzMik7CiAKIAlydHc4OV9md19wcm9nX2NudF9kdW1wKHJ0d2Rldik7CiB9CkBAIC0xMTMyNSw2ICYjNDM7MTEzMjYsMTIgQEAgZndfdHhfc2hhcGVfbG10X2VudHJ5X3ZhbGlkKGNvbnN0IHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfZW50cnkgKmUsCiAJaWYgKGUtJmd0O3JlZ2QgJmd0Oz0gUlRXODlfUkVHRF9OVU0pCiAJCXJldHVybiBmYWxzZTsKIAomIzQzOwkvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqLwomIzQzOwlzdGF0aWNfYXNzZXJ0KFJUVzg5X1JFR182R0haX1BPV0VSX0RGTFQgPT0gMCk7CiYjNDM7CiYjNDM7CWlmIChlLSZndDtyZWc2X3B3ciAmZ3Q7PSBOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVIpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMzM5LDcgJiM0MzsxMTM0Niw3IEBAIHZvaWQgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXQoc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhICpkYXRhKQogCQlpZiAoIWZ3X3R4X3NoYXBlX2xtdF9lbnRyeV92YWxpZCgmYW1wO2VudHJ5LCBjdXJzb3IsIGNvbmYpKQogCQkJY29udGludWU7CiAKLQkJZGF0YS0mZ3Q7dltlbnRyeS5iYW5kXVtlbnRyeS50eF9zaGFwZV9yc11bZW50cnkucmVnZF0gPSBlbnRyeS52OwomIzQzOwkJZGF0YS0mZ3Q7dltlbnRyeS5iYW5kXVtlbnRyeS50eF9zaGFwZV9yc11bZW50cnkucmVnZF1bZW50cnkucmVnNl9wd3JdID0gZW50cnkudjsKIAl9CiB9CiAKQEAgLTExMzU2LDYgJiM0MzsxMTM2MywxMiBAQCBmd190eF9zaGFwZV9sbXRfcnVfZW50cnlfdmFsaWQoY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSAqZSwKIAlpZiAoZS0mZ3Q7cmVnZCAmZ3Q7PSBSVFc4OV9SRUdEX05VTSkKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CS8qIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdvcmsgd2l0aCAyLzUgR0h6ICovCiYjNDM7CXN0YXRpY19hc3NlcnQoUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVCA9PSAwKTsKJiM0MzsKJiM0MzsJaWYgKGUtJmd0O3JlZzZfcHdyICZndDs9IE5VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKIAlyZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTEzNzAsNyAmIzQzOzExMzgzLDcgQEAgdm9pZCBydHc4OV9md19sb2FkX3R4X3NoYXBlX2xtdF9ydShzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X3J1X2RhdGEgKmRhdGEpCiAJCWlmICghZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5X3ZhbGlkKCZhbXA7ZW50cnksIGN1cnNvciwgY29uZikpCiAJCQljb250aW51ZTsKIAotCQlkYXRhLSZndDt2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdID0gZW50cnkudjsKJiM0MzsJCWRhdGEtJmd0O3ZbZW50cnkuYmFuZF1bZW50cnkucmVnZF1bZW50cnkucmVnNl9wd3JdID0gZW50cnkudjsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaAppbmRleCAyMDcyMWQ1MjA5YWEzYS4uZTc2Y2VhMGI5ZDQzMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKQEAgLTU4MTQsNiAmIzQzOzU4MTQsNyBAQCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5IHsKIAl1OCB0eF9zaGFwZV9yczsKIAl1OCByZWdkOwogCXU4IHY7CiYjNDM7CXU4IHJlZzZfcHdyOwogfSBfX3BhY2tlZDsKIAogLyogbXVzdCBjb25zaWRlciBjb21wYXRpYmlsaXR5OyBkb24mIzM5O3QgaW5zZXJ0IG5ldyBpbiB0aGUgbWlkICovCkBAIC01ODIxLDYgJiM0Mzs1ODIyLDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSB7CiAJdTggYmFuZDsKIAl1OCByZWdkOwogCXU4IHY7CiYjNDM7CXU4IHJlZzZfcHdyOwogfSBfX3BhY2tlZDsKIAogY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYwppbmRleCA4YzM5NTUxN2JkMmZlMS4uZTIwNDkzNDFjNDE1NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYwpAQCAtNDMwNCwxMyAmIzQzOzQzMDQsMTQgQEAgaW50IHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfbWFjX2Rpc2FibGVfYmJfcmYpOwogCi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYikKJiM0MztpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYiwKJiM0MzsJCQkgICBib29sIGJiX3ByZWluaXQpCiB7CiAJaW50IHJldDsKIAogCXJ0dzg5X21hY19jdHJsX2hjaV9kbWFfdHJ4KHJ0d2RldiwgdHJ1ZSk7CiAKLQlpZiAoaW5jbHVkZV9iYikgewomIzQzOwlpZiAoaW5jbHVkZV9iYiB8fCBiYl9wcmVpbml0KSB7CiAJCS8qIE9ubHkgY2FsbCBCQiBwcmVpbml0IGluY2x1ZGluZyBjb25maWd1cmF0aW9uIG9mIEJCIE1DVSBmb3IKIAkJICogdGhlIGNoaXBzIHdoaWNoIG5lZWQgdG8gZG93bmxvYWQgQkIgTUNVIGZpcm13YXJlLiBPdGhlcndpc2UsCiAJCSAqIGNhbGxpbmcgcHJlaW5pdCBsYXRlciB0byBwcmV2ZW50IHRvdWNoaW5nIHJlZ2lzdGVycyBhZmZlY3RpbmcKQEAgLTQzNjMsNyAmIzQzOzQzNjQsNyBAQCBpbnQgcnR3ODlfbWFjX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCWJvb2wgaW5jbHVkZV9iYiA9ICEhY2hpcC0mZ3Q7YmJtY3VfbnI7CiAJaW50IHJldDsKIAotCXJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiKTsKJiM0MzsJcmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGluY2x1ZGVfYmIsIGluY2x1ZGVfYmIpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIApAQCAtNzA0MywxMSAmIzQzOzcwNDQsMjMgQEAgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfc3RhX2xpbmsgKnJ0d3N0YV8KIHsKICNkZWZpbmUgTUFDX0FYX0RGTFRfVFhfVElNRSA1MjgwCiAJY29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtJmd0O2NoaXAtJmd0O21hY19kZWY7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiAJdTggbWFjX2lkeCA9IHJ0d3N0YV9saW5rLSZndDtydHd2aWZfbGluay0mZ3Q7bWFjX2lkeDsKIAl1MzIgbWF4X3R4X3RpbWUgPSB0eF90aW1lID09IDAgPyBNQUNfQVhfREZMVF9UWF9USU1FIDogdHhfdGltZTsKJiM0MzsJc3RydWN0IHJ0dzg5X2VudGl0eV9jb25mIGNvbmY7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuOwogCXUzMiByZWc7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJaWYgKGNoaXAtJmd0O3R4dGltZV9saW1pdF8yZ2h6KSB7CiYjNDM7CQlydHc4OV9lbnRpdHlfZ2V0X2NvbmYocnR3ZGV2LCAmYW1wO2NvbmYpOwomIzQzOwkJY2hhbiA9IGNvbmYuY2hhbnNbbWFjX2lkeF07CiYjNDM7CiYjNDM7CQlpZiAoY2hhbi0mZ3Q7YmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcpCiYjNDM7CQkJbWF4X3R4X3RpbWUgPSBtaW5fdCh1MzIsIG1heF90eF90aW1lLAomIzQzOwkJCQkJICAgIGNoaXAtJmd0O3R4dGltZV9saW1pdF8yZ2h6KTsKJiM0MzsJfQomIzQzOwogCWlmIChydHdzdGFfbGluay0mZ3Q7Y2N0bF90eF90aW1lKSB7CiAJCXJ0d3N0YV9saW5rLSZndDthbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgJmd0OyZndDsgOTsKIAkJcmV0ID0gcnR3ODlfY2hpcF9oMmNfdHh0aW1lX2NtYWNfdGJsKHJ0d2RldiwgcnR3c3RhX2xpbmspOwpAQCAtNzA1OCw5ICYjNDM7NzA3MSwxMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhXwogCQkJcmV0dXJuIHJldDsKIAkJfQogCiYjNDM7CQlpZiAoY2hpcC0mZ3Q7Y2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWCkKJiM0MzsJCQltYXhfdHhfdGltZSAmZ3Q7Jmd0Oz0gNTsKJiM0MzsJCWVsc2UKJiM0MzsJCQltYXhfdHhfdGltZSA9IG1heF90eF90aW1lICogMTAwMCAmZ3Q7Jmd0OyAxNTsKJiM0MzsKIAkJcmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBtYWMtJmd0O2FnZ19saW1pdC5hZGRyLCBtYWNfaWR4KTsKLQkJcnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtJmd0O2FnZ19saW1pdC5tYXNrLAotCQkJCSAgIG1heF90eF90aW1lICZndDsmZ3Q7IDUpOwomIzQzOwkJcnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtJmd0O2FnZ19saW1pdC5tYXNrLCBtYXhfdHhfdGltZSk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTc0MzgsNiAmIzQzOzc0NTUsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9heCA9IHsKIAkuYWdnX2xlbl9odCA9IFJfQVhfQUdHX0xFTl9IVF8wLAogCS5wc19zdGF0dXMgPSBSX0FYX1BQV1JCSVRfU0VUVElORywKIAkubXVfZ2lkID0gJmFtcDtydHc4OV9tYWNfbXVfZ2lkX2FkZHJfYXgsCiYjNDM7CS5ib290X2RiZyA9IFJfQVhfQk9PVF9EQkcsCiAKIAkubXVlZGNhX2N0cmwgPSB7CiAJCS5hZGRyID0gUl9BWF9NVUVEQ0FfRU4sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaAppbmRleCA1MzkwNjFmYzE1ZTg1Yi4uOTQ2NzhhMjYyZTE2NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaApAQCAtMTA2Nyw2ICYjNDM7MTA2Nyw3IEBAIHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiB7CiAJdTMyIGFnZ19sZW5faHQ7CiAJdTMyIHBzX3N0YXR1czsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX211X2dpZF9hZGRyICptdV9naWQ7CiYjNDM7CXUzMiBib290X2RiZzsKIAogCXN0cnVjdCBydHc4OV9yZWdfZGVmIG11ZWRjYV9jdHJsOwogCXN0cnVjdCBydHc4OV9yZWdfZGVmIGJmZWVfY3RybDsKQEAgLTEyOTgsNyAmIzQzOzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbAogCiBpbnQgcnR3ODlfbWFjX3B3cl9vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpOwogdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpOwotaW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIpOwomIzQzO2ludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLAomIzQzOwkJCSAgIGJvb2wgYmJfcHJlaW5pdCk7CiBpbnQgcnR3ODlfbWFjX3ByZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTsKIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpOwogaW50IHJ0dzg5X21hY19kbGVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfcXRhX21vZGUgbW9kZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jCmluZGV4IGYyNGMxMTliOTlmMWJkLi4yNDIwMDZjZWZjM2UxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jCkBAIC0zMjQyLDYgJiM0MzszMjQyLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYmUgPSB7CiAJLmFnZ19sZW5faHQgPSBSX0JFX0FHR19MRU5fSFRfMCwKIAkucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsCiAJLm11X2dpZCA9ICZhbXA7cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLAomIzQzOwkuYm9vdF9kYmcgPSBSX0JFX0JPT1RfREJHLAogCiAJLm11ZWRjYV9jdHJsID0gewogCQkuYWRkciA9IFJfQkVfTVVFRENBX0VOLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMKaW5kZXggNzU5YmU0ZGFiNDJiMWMuLjZkZWUzOWY1M2RmMGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMKQEAgLTM5NjgsNiAmIzQzOzM5NjgsMjMgQEAgdm9pZCAoKiBjb25zdCBydHc4OV9waHlfYzJoX3Jma19sb2dfaGFuZGxlcltdKShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJW1JUVzg5X1BIWV9DMkhfUkZLX0xPR19GVU5DX0NJTTNLXSA9IHJ0dzg5X3BoeV9jMmhfcmZrX2xvZ19jaW0zaywKIH07CiAKJiM0MzsjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcCiYjNDM7CVtSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlXSA9ICN0eXBlCiYjNDM7CiYjNDM7Y29uc3QgY2hhciAqIGNvbnN0IHJ0dzg5X3Jma19yZXBvcnRfbmFtZXNbXSA9IHsKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKFBSRV9OVEZZKSwKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKFRTU0kpLAomIzQzOwlOQU1FX1JUVzg5X1JGS19SRVBPUlQoSVFLKSwKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKERQSyksCiYjNDM7CU5BTUVfUlRXODlfUkZLX1JFUE9SVChUWEdBUEspLAomIzQzOwlOQU1FX1JUVzg5X1JGS19SRVBPUlQoREFDSyksCiYjNDM7CU5BTUVfUlRXODlfUkZLX1JFUE9SVChSWF9EQ0spLAomIzQzOwlOQU1FX1JUVzg5X1JGS19SRVBPUlQoVFhfSVFLKSwKJiM0MzsJTkFNRV9SVFc4OV9SRktfUkVQT1JUKENJTTNrKSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydHc4OV9yZmtfcmVwb3J0X25hbWVzKSA9PSBOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFUyk7CiYjNDM7CiBzdGF0aWMKIHZvaWQgcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CkBAIC0zOTc5LDggJiM0MzszOTk2LDggQEAgdm9pZCBydHc4OV9waHlfcmZrX3JlcG9ydF9wcmVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIH0KIAogc3RhdGljCi1pbnQgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLAotCQkJICAgICAgdW5zaWduZWQgaW50IG1zKQomIzQzO2ludCBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLAomIzQzOwkJCQkgIHVuc2lnbmVkIGludCBtcykKIHsKIAlzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9ICZhbXA7cnR3ZGV2LSZndDtyZmtfd2FpdDsKIAl1bnNpZ25lZCBsb25nIHRpbWVfbGVmdDsKQEAgLTQwMTcsNiAmIzQzOzQwMzQsMjkgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYwomIzQzO2ludCBfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAomIzQzOwkJCQllbnVtIHJ0dzg5X3Jma19yZXBvcnRfdHlwZXMgcmZrX3R5cGUsCiYjNDM7CQkJCWVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4LAomIzQzOwkJCQljb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbiwKJiM0MzsJCQkJdW5zaWduZWQgaW50IG1zKQomIzQzO3sKJiM0MzsJY29uc3QgY2hhciAqcmZrX25hbWUgPSBydHc4OV9yZmtfcmVwb3J0X25hbWVzW3Jma190eXBlXTsKJiM0MzsJc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKndhaXQgPSAmYW1wO3J0d2Rldi0mZ3Q7cmZrX3dhaXQ7CiYjNDM7CXN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSB3YWl0LSZndDtyZWNvcmRfcHRyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIHJma19uYW1lLCBtcyk7CiYjNDM7CiYjNDM7CWlmIChyZWNvcmQpCiYjNDM7CQlyZWNvcmQtJmd0O3N0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LSZndDtzdGF0ZTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgdHlwZSwgcGh5X2lkeCwgY2hhbiwgbXMpIFwKJiM0MzsJX19ydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgUlRXODlfUkZLX1JFUE9SVF8gIyMgdHlwZSwgcGh5X2lkeCwgY2hhbiwgbXMpCiYjNDM7CiBzdGF0aWMgdm9pZAogcnR3ODlfcGh5X2MyaF9yZmtfcmVwb3J0X3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKmMyaCwgdTMyIGxlbikKIHsKQEAgLTQxMjIsNyAmIzQzOzQxNjIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19wcmVfbnRmeV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJaWYgKFJUVzg5X0NIS19GV19GRUFUVVJFX0dST1VQKFdJVEhfUkZLX1BSRV9OT1RJRlksICZhbXA7cnR3ZGV2LSZndDtmdykpIHsKIAkJcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChydHdkZXYpOwogCQlydHc4OV9md19oMmNfcmZfcHJlX250ZnkocnR3ZGV2LCBwaHlfaWR4KTsKLQkJcmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7UFJFX05URlkmIzM0OywgbXMpOwomIzQzOwkJcmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFBSRV9OVEZZLCBwaHlfaWR4LCBOVUxMLCBtcyk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTQxNTIsNyAmIzQzOzQxOTIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCAmIzM0O1RTU0kmIzM0OywgbXMpOwomIzQzOwlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTsKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KTsKIApAQCAtNDE2OSw3ICYjNDM7NDIwOSw3IEBAIGludCBydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgJiMzNDtJUUsmIzM0OywgbXMpOwomIzQzOwlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIElRSywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdCk7CiAKQEAgLTQxODYsNyAmIzQzOzQyMjYsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kcGtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7RFBLJiMzNDssIG1zKTsKJiM0MzsJcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBEUEssIHBoeV9pZHgsIGNoYW4sIG1zKTsKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19kcGtfYW5kX3dhaXQpOwogCkBAIC00MjAzLDcgJiM0Mzs0MjQzLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCAmIzM0O1RYR0FQSyYjMzQ7LCBtcyk7CiYjNDM7CXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7CiB9CiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KTsKIApAQCAtNDIyMCw3ICYjNDM7NDI2MCw3IEBAIGludCBydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7REFDSyYjMzQ7LCBtcyk7CiYjNDM7CXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgREFDSywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQpOwogCkBAIC00MjM3LDcgJiM0Mzs0Mjc3LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsICYjMzQ7UlhfRENLJiMzNDssIG1zKTsKJiM0MzsJcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSWF9EQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTsKIH0KIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19yeGRja19hbmRfd2FpdCk7CiAKQEAgLTQyNTQsNyAmIzQzOzQyOTQsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgJiMzNDtUWF9JUUsmIzM0OywgbXMpOwomIzQzOwlyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3R4aXFrX2FuZF93YWl0KTsKIApAQCAtNDI3MSw3ICYjNDM7NDMxMSw3IEBAIGludCBydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCAmIzM0O0NJTTNrJiMzNDssIG1zKTsKJiM0MzsJcmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBDSU0zaywgcGh5X2lkeCwgY2hhbiwgbXMpOwogfQogRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmgKaW5kZXggNTMyMjMyODkyODMxZjAuLjI1NTQxNmViYWY5MDA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmgKQEAgLTExNjMsNiAmIzQzOzExNjMsOSBAQCB2b2lkIHJ0dzg5X3BoeV9yYXRlX3BhdHRlcm5fdmlmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIGJvb2wgcnR3ODlfcGh5X2MyaF9jaGtfYXRvbWljKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggY2xhc3MsIHU4IGZ1bmMpOwogdm9pZCBydHc4OV9waHlfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKTsKJiM0MzsKJiM0MztleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHJ0dzg5X3Jma19yZXBvcnRfbmFtZXNbXTsKJiM0MzsKIGludCBydHc4OV9waHlfcmZrX3ByZV9udGZ5X2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsCiAJCQkJICAgIHVuc2lnbmVkIGludCBtcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaAppbmRleCAwODZlZjc3ZWJiOWZjZC4uYWY5MTgxMzY3YjIyNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaApAQCAtODcxOCw2ICYjNDM7ODcxOCw3IEBACiAjZGVmaW5lIFJSX1ZDTyAweGIyCiAjZGVmaW5lIFJSX1ZDT19WQUwgR0VOTUFTSygxOCwgMTQpCiAjZGVmaW5lIFJSX1ZDT19TRUwgR0VOTUFTSyg5LCA4KQomIzQzOyNkZWZpbmUgUlJfVkNPX1NUUyBHRU5NQVNLKDcsIDApCiAjZGVmaW5lIFJSX1ZDSSAweGIzCiAjZGVmaW5lIFJSX1ZDSV9PTiBCSVQoNykKICNkZWZpbmUgUlJfTFBGIDB4YjcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYwppbmRleCA2MGYzNjI1OTM2OTY2Zi4uMDNlMWQxZGY4NmIzMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMKQEAgLTE5MTgsMTEgJiM0MzsxOTE4LDkgQEAgc3RhdGljIHZvaWQgcnR3ODg1MWJfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLAogCQkJCSAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpCiB7Ci0JY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LSZndDtyZmVfcGFybXM7CiAJdTggYmFuZCA9IGNoYW4tJmd0O2JhbmRfdHlwZTsKLQl1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTsKLQl1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy0mZ3Q7dHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdOwotCXU4IHR4X3NoYXBlX29mZG0gPSAoKnJmZV9wYXJtcy0mZ3Q7dHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTsKJiM0MzsJdTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7CiYjNDM7CXU4IHR4X3NoYXBlX29mZG0gPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7CiAKIAlpZiAoYmFuZCA9PSBSVFc4OV9CQU5EXzJHKQogCQlydHc4ODUxYl9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7CkBAIC0yNzc5LDYgJiM0MzsyNzc3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9ICZhbXA7cnR3ODg1MWJfeHRhbF9pbmZvLAogCS5kZWZhdWx0X3F1aXJrcwkJPSAwLAomIzQzOwkudHh0aW1lX2xpbWl0XzJnaHoJPSAwLAogfTsKIEVYUE9SVF9TWU1CT0wocnR3ODg1MWJfY2hpcF9pbmZvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jCmluZGV4IGE5YzMwOWMyNDVjMzM0Li4zYTczMGE4MjY5NDk4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuYwpAQCAtMTQ4ODYsOCAmIzQzOzE0ODg2LDggQEAgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUxYl9kZmx0X3Bhcm1zID0gewogCQkubG10X3J1ID0gJmFtcDtydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWcsCiAJfSwKIAkudHhfc2hhcGUgPSB7Ci0JCS5sbXQgPSAmYW1wO3J0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCwKLQkJLmxtdF9ydSA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LAomIzQzOwkJLmxtdF92MCA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LAomIzQzOwkJLmxtdF9ydV92MCA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LAogCX0sCiB9OwogCkBAIC0xNDkwMiw4ICYjNDM7MTQ5MDIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUxYl9yZmVfcGFybXNfdHlwZTIgPSB7CiAJCS5sbXRfcnUgPSAmYW1wO3J0dzg5Xzg4NTFiX3R4cHdyX2xtdF9ydV81Z190eXBlMiwKIAl9LAogCS50eF9zaGFwZSA9IHsKLQkJLmxtdCA9ICZhbXA7cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LAotCQkubG10X3J1ID0gJmFtcDtydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsCiYjNDM7CQkubG10X3YwID0gJmFtcDtydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsCiYjNDM7CQkubG10X3J1X3YwID0gJmFtcDtydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYwppbmRleCAyYzFmMTY2ZTY4N2YwNi4uNjc1NjRlNThkMTIzMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMKQEAgLTI1MTYsNiAmIzQzOzI1MTYsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJhX2NoaXBfaW5mbyA9IHsKICNlbmRpZgogCS54dGFsX2luZm8JCT0gJmFtcDtydHc4ODUyYV94dGFsX2luZm8sCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4ODUyYV9jaGlwX2luZm8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMKaW5kZXggNGU3YjA2OGFhYTc1YjEuLmIwYWMyOWQxYTAxYzc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jCkBAIC0xMTEzLDYgJiM0MzsxMTEzLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYl9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4ODUyYl9jaGlwX2luZm8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYwppbmRleCBkZjVmYmFlNTBmZjU1MC4uYTYxYzY0ZmRmZjRkYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYwpAQCAtMTMyMSwxMSAmIzQzOzEzMjEsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyYnhfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbiwKIAkJCQkgICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCkKIHsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtJmd0O3JmZV9wYXJtczsKIAl1OCBiYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXU4IHR4X3NoYXBlX2NjayA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07Ci0JdTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdOwomIzQzOwl1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTsKJiM0MzsJdTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTsKIAogCWlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpCiAJCXJ0dzg4NTJieF9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMKaW5kZXggMDc5NDVkMDZkYzU5YzkuLjEzMzJkMWI5MjM1YWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jCkBAIC0yMjkyMSw3ICYjNDM7MjI5MjEsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTJiX2RmbHRfcGFybXMgPSB7CiAJCS5sbXRfcnUgPSAmYW1wO3J0dzg5Xzg4NTJiX3R4cHdyX2xtdF9ydV81ZywKIAl9LAogCS50eF9zaGFwZSA9IHsKLQkJLmxtdCA9ICZhbXA7cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LAotCQkubG10X3J1ID0gJmFtcDtydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsCiYjNDM7CQkubG10X3YwID0gJmFtcDtydHc4OV84ODUyYl90eF9zaGFwZV9sbXQsCiYjNDM7CQkubG10X3J1X3YwID0gJmFtcDtydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsCiAJfSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYwppbmRleCA3ZmNjODc3ZjZlYTBjNC4uNGJlYTg1YjQyNzhiOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYwpAQCAtOTUwLDYgJiM0Mzs5NTAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJidF9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jCmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYwpAQCAtMjE5MywxMSAmIzQzOzIxOTMsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUyY19zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJCSAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sCiAJCQkJICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCkKIHsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtJmd0O3JmZV9wYXJtczsKIAl1OCBiYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXU4IHR4X3NoYXBlX2NjayA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07Ci0JdTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLSZndDt0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdOwomIzQzOwl1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTsKJiM0MzsJdTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTsKIAogCWlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpCiAJCXJ0dzg4NTJjX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTsKQEAgLTMzMTksNiAmIzQzOzMzMTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJjX2NoaXBfaW5mbyA9IHsKICNlbmRpZgogCS54dGFsX2luZm8JCT0gTlVMTCwKIAkuZGVmYXVsdF9xdWlya3MJCT0gMCwKJiM0MzsJLnR4dGltZV9saW1pdF8yZ2h6CT0gMCwKIH07CiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJjX2NoaXBfaW5mbyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYwppbmRleCAyNGMzOTBiNmYzZDM0NC4uYjcyZmVlMzc3ZTljMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmMKQEAgLTU3MTUzLDcgJiM0Mzs1NzE1Myw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmNfZGZsdF9wYXJtcyA9IHsKIAkJLmxtdF9ydSA9ICZhbXA7cnR3ODlfODg1MmNfdHhwd3JfbG10X3J1XzZnLAogCX0sCiAJLnR4X3NoYXBlID0gewotCQkubG10ID0gJmFtcDtydHc4OV84ODUyY190eF9zaGFwZV9sbXQsCi0JCS5sbXRfcnUgPSAmYW1wO3J0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSwKJiM0MzsJCS5sbXRfdjAgPSAmYW1wO3J0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdCwKJiM0MzsJCS5sbXRfcnVfdjAgPSAmYW1wO3J0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSwKIAl9LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYwppbmRleCBhZDM2MThkZmQ1N2QwMC4uM2U4NzA4ODBiNTk4ZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMKQEAgLTI1MDIsMTUgJiM0MzsyNTAyLDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJhX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCQkJICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbiwKIAkJCQkgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KQogewotCWNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi0mZ3Q7cmZlX3Bhcm1zOwotCWNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSAmYW1wO3JmZV9wYXJtcy0mZ3Q7dHhfc2hhcGU7CiYjNDM7CXU4IGJhbmQgPSBjaGFuLSZndDtiYW5kX3R5cGU7CiAJdTggdHhfc2hhcGVfaWR4OwotCXU4IGJhbmQsIHJlZ2Q7Ci0KLQliYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtJmd0O2xtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07CiAKJiM0MzsJdHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pOwogCWlmICh0eF9zaGFwZV9pZHggPT0gMCkKIAkJcnR3ODkyMmFfYmJfdHhfdHJpYW5ndWxhcihydHdkZXYsIGZhbHNlLCBwaHlfaWR4KTsKIAllbHNlCkBAIC0zMzAyLDYgJiM0MzszMjk3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyYV9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IDAsCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDAsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4OTIyYV9jaGlwX2luZm8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMKaW5kZXggODM4YzI2MjMxODk3ZDYuLmNjMTI3YTNlODZlZjg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jCkBAIC0xMTM2LDggJiM0MzsxMTM2LDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJdTMyIHN1Yl9jYXJyID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX1RYX1NVQl9CQU5EX1ZBTFVFLCBtYWNfaWR4KTsKIAl1MzIgY2hrX3JhdGUgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhSQVRFX0NISywgbWFjX2lkeCk7CiAJdTMyIHJmX21vZCA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9XTUFDX1JGTU9ELCBtYWNfaWR4KTsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKIAl1OCB0eHNiMjAgPSAwLCB0eHNiNDAgPSAwLCB0eHNiODAgPSAwOwogCXU4IHJmX21vZF92YWwsIGNoa19yYXRlX21hc2ssIHNpZnM7CiYjNDM7CXUxNiB0eF90aW1lID0gQU1QRFVfTUFYX1RJTUVfVjE7CiAJdTMyIHR4c2I7CiAJdTMyIHJlZzsKIApAQCAtMTIxOCw2ICYjNDM7MTIyMCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCiAJcmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX01VRURDQV9FTiwgbWFjX2lkeCk7CiAJcnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBCX0JFX1NJRlNfTUFDVFhFTl9UQl9UMV9ET1QwNVVTX01BU0ssIHNpZnMpOwomIzQzOwomIzQzOwlpZiAoY2hhbi0mZ3Q7YmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcgJmFtcDsmYW1wOyBjaGlwLSZndDt0eHRpbWVfbGltaXRfMmdoeikKJiM0MzsJCXR4X3RpbWUgPSBtaW5fdCh1MzIsIHR4X3RpbWUsIGNoaXAtJmd0O3R4dGltZV9saW1pdF8yZ2h6ICogMTAwMCAmZ3Q7Jmd0OyAxNSk7CiYjNDM7CiYjNDM7CXJlZyA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9BTVBEVV9BR0dfTElNSVQsIG1hY19pZHgpOwomIzQzOwlydHc4OV93cml0ZTMyX21hc2socnR3ZGV2LCByZWcsIEJfQkVfQU1QRFVfTUFYX1RJTUVfTUFTSywgdHhfdGltZSk7CiB9CiAKIHN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfc2NvX2Jhcmtlcl90aHJlc2hvbGRbMTRdID0gewpAQCAtMjczOSwxNiAmIzQzOzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQkgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KQogewogCWNvbnN0IHN0cnVjdCBydHc4OV9iYl93cmFwX2RhdGEgKmQgPSBydHdkZXYtJmd0O3BoeV9pbmZvLmJiX3dyYXBfZGF0YTsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtJmd0O3JmZV9wYXJtczsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gJmFtcDtyZmVfcGFybXMtJmd0O3R4X3NoYXBlOwomIzQzOwl1OCBiYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwogCXU4IHR4X3NoYXBlX2lkeDsKLQl1OCBiYW5kLCByZWdkOwogCWNvbnN0IHUxNiAqdGg7CiAKLQliYW5kID0gY2hhbi0mZ3Q7YmFuZF90eXBlOwotCXJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpOwotCXR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtJmd0O2xtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07Ci0KJiM0MzsJdHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pOwogCWlmICh0eF9zaGFwZV9pZHggPT0gMCkKIAkJZ290byBkaXNhYmxlOwogCkBAIC0zNDM3LDYgJiM0MzszNDQwLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyZF9jaGlwX2luZm8gPSB7CiAjZW5kaWYKIAkueHRhbF9pbmZvCQk9IE5VTEwsCiAJLmRlZmF1bHRfcXVpcmtzCQk9IEJJVChSVFc4OV9RVUlSS19USEVSTUFMX1BST1RfMTIwQyksCiYjNDM7CS50eHRpbWVfbGltaXRfMmdoegk9IDQ2MDgsCiB9OwogRVhQT1JUX1NZTUJPTChydHc4OTIyZF9jaGlwX2luZm8pOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDEyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjk1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTGF0ZXN0IHJ0dzg5IFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBydHc4OWAgd2lyZWxlc3MgZHJpdmVyLCBhbmQgaXQmIzM5O3MgZ290IHNvbWUgaW50ZXJlc3RpbmcgY2hhbmdlcy4gRmlyc3QsIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIFJGIENhbGlicmF0aW9uIChSRkspIHJlY29yZGluZyBhbmQgdHJhY2tpbmcuIFRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgYWx3YXlzIGhlbHBmdWwgdG8gaGF2ZSBtb3JlIGdyYW51bGFyIGRhdGEgb24gdGhlIFJGIGNhbGlicmF0aW9uIHByb2Nlc3MsIHNvIEkgY2FuIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kIGFuZCBtYWtlIHN1cmUgdGhpbmdzIGFyZSBvcGVyYXRpbmcgb3B0aW1hbGx5LiBTcGVjaWZpY2FsbHksIHRoZSBhZGRpdGlvbnMgaW4gYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgYW5kIGBydHc4OV9jb3JlX3Jma190c3NpX3JlY29yZGAgbG9vayBpbXBvcnRhbnQuCgpOZXh0LCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmb3IgdGhlIFJUTDg5MjJELiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBCQiBwcmUtaW5pdGlhbGl6YXRpb24uIEl0IGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBwZWN1bGlhcml0aWVzIG9mIHRoZSBoYXJkd2FyZS4KClRoZSBwYXRjaCBpcyBhbHNvIHVwZGF0aW5nIHRoZSBgdHhfc2hhcGVgIGxpbWl0cywgYWRkaW5nIHN1cHBvcnQgZm9yIGByZWc2X3B3cmAg4oCTIHdoaWNoIGlzIHByZXN1bWFibHkgNkdIeiBwb3dlciDigJMgYW5kIHVwZGF0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGBydHc4OV9nZXRfdHhfc2hhcGVfaWR4YCBmdW5jdGlvbi4gVGhpcyBpbmRpY2F0ZXMgdGhleSYjMzk7cmUgYnJvYWRlbmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCB0aGUgNkdIeiBiYW5kLiBUaGF0JiMzOTtzIGEgZ29vZCBkaXJlY3Rpb24uCgpUaGV5JiMzOTtyZSBhbHNvIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMgZm9yIFJGIGRpYWdub3N0aWNzLiBFeGNlbGxlbnQuIFRoYXQgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHRyb3VibGVzaG9vdCBhbnkgUkYtcmVsYXRlZCBpc3N1ZXMsIHdoaWNoIGlzIGFsd2F5cyB3ZWxjb21lLiBXZSBjYW4gb2Z0ZW4gZ2V0IHRvIHRoZSBib3R0b20gb2YgcHJvYmxlbXMgbW9yZSBxdWlja2x5IHdpdGggYmV0dGVyIGRpYWdub3N0aWMgdG9vbHMuCgpUaGVyZSYjMzk7cyBhbiB1cGRhdGUgdG8gYHJ0dzg5X2Z3X2RsX2ZhaWxfZHVtcGAgdG8gdXNlIGBtYWMtJmd0O2Jvb3RfZGJnYCwgd2hpY2ggaXMgcHJvYmFibHkgaW1wcm92aW5nIGRlYnVnZ2luZyBvZiBmaXJtd2FyZSBkb3dubG9hZCBmYWlsdXJlcy4gVGhhdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgc21hbGwgdHdlYWssIGJ1dCB3b3J0aCBub3RpbmcuCgpGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIHVwZGF0ZXMgdG8gYF9fcnR3ODlfbWFjX3NldF90eF90aW1lYCB0byBsaW1pdCBUWCB0aW1lIGZvciB0aGUgMkdIeiBiYW5kIGlmIGBjaGlwLSZndDt0eHRpbWVfbGltaXRfMmdoemAgaXMgc2V0LiBUaGlzIHNlZW1zIGxpa2UgYSBtZWNoYW5pc20gdG8gcHJvdmlkZSBjb250cm9sIG9uIDJHSHogcG93ZXIsIGxpa2VseSBmb3IgY29tcGxpYW5jZSByZWFzb25zLiBBbHNvLCBzaW1pbGFyIHRpbWUgbGltaXRpbmcgaGFzIGJlZW4gYXBwbGllZCB0byBgcnR3ODkyMmRfc2V0X2NoYW5uZWxfbWFjYC4gSW50ZXJlc3RpbmcgdGhhdCB0aGUgY29kZSBpcyBjaGFuZ2luZyBzbyBzdWJzdGFudGlhbGx5LgoKRmluYWxseSwgdGhleSYjMzk7dmUgYWRkZWQgYHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXRgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBmb3Igd2FpdGluZyBvbiBzcGVjaWZpYyBSRksgcmVwb3J0cy4gVGhpcyBsaWtlbHkgbWVhbnMgdGhleSYjMzk7cmUgYWRkaW5nIGEgYml0IG1vcmUgc3luY2hyb25pc2F0aW9uIGluIHRoZSByZXBvcnRpbmcgcGF0aC4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGRyaXZlciwgYHJ0dzg5YCwgaXMgYSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBzaG91bGQgY2hlY2sgaWYgaXQmIzM5O3MgYSBQQ0ksIFVTQiwgb3IgU0RJTyBkcml2ZXIgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYXR0YWNoZWQuIExldCBtZSBsb29rIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIG9yIGBNYWtlZmlsZWAgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIGJhc2ljIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY0OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIGl0IHNlZW1zIHRvIGhhbmRsZSBib3RoIFBDSSBhbmQgVVNCIGNvbm5lY3Rpb25zLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBoZXJlIGlzIHRoZSBVU0IgY29tcG9uZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhwbG9yZSBVU0IgZnV6emluZyB0ZWNobmlxdWVzLCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBvciB0aGUgbWV0aG9kcyB1c2VkIGluIHN5emthbGxlciwgd2hpY2ggSSBrbm93IHN1cHBvcnRzIFVTQiBmdXp6aW5nLgoKQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsJiMzNDsgd2hpY2ggaW5jbHVkZXMgdGhpbmdzIGxpa2UgUUVNVS4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIGN1cnZlYmFsbC4gSG93ZXZlciwgSSBrbm93IHN5emthbGxlciAqZG9lcyogaGF2ZSBVU0IgZnV6emluZyB2aWEgYGR1bW15X2hjZGAsIHNvIHBlcmhhcHMgdGhlIHByb21wdCYjMzk7cyBzdGF0ZW1lbnQgaXMgbm90IGFuIGFic29sdXRlIGNvbnN0cmFpbnQuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGBydHc4OWAgZHJpdmVyIGNhbiBiZSByZWFjaGVkIHRocm91Z2ggVVNCIGZ1enppbmcuIFNpbmNlIGBSVFc4OV9VU0JgIHN1cHBvcnQgZXhpc3RzLCB0aGUgYW5zd2VyIHNob3VsZCBiZSB5ZXMgaW4gcHJpbmNpcGxlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgaWYgdGhlIGBydHc4OWAgVVNCIGRyaXZlcnMgYXJlICphY3R1YWxseSogZnV6emVkLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSwgc3BlY2lmaWNhbGx5IHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jYCBvciBzaW1pbGFyLCB0byB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IGZ1enppbmcgY292ZXJhZ2UuIExldCYjMzk7cyBzZWUgaWYgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGlzIHRhcmdldGluZyB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfdXNiX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjE9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjYtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6Njc6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTFidV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjgxOm1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUyYXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYz03NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9ODE9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtODYtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6ODc6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTJjdV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgyOm1vZHVsZV91c2JfZHJpdmVyKHJ0d184OTIyYXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMTI6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5MjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKgoKT2theSwgc28gSSBzZWUgdGhlIG1lbnRpb24gb2YgVVNCIGRyaXZlcnMsIGFuZCBpbml0aWFsbHksIG15IGd1dCByZWFjdGlvbiBpcyAmIzM0O1llcywgdGhvc2UgYXJlIGNlcnRhaW5seSB0ZXN0YWJsZS4mIzM0OyBCdXQgaG9sZCBvbiwgdGhlIHByb21wdCBpcyBzcGVjaWZpY2FsbHkgdGFsa2luZyBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIFNvLCBkb2VzIHRoYXQgbWVhbiBJIG5lZWQgdG8gbWFyayBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgKmlmKiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGNvZGUgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCwgc2F5LCBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltPyBZZXMsIHRoYXQmIzM5O3MgdGhlIGxvZ2ljLgoKQnV0IG5vdyBJIGhhdmUgYSBjb3VudGVycG9pbnQgLSBVU0IgZHJpdmVycyAqYXJlKiBhY2Nlc3NpYmxlIHdpdGggVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkIGZ1enppbmchIFdlIGNhbiBjZXJ0YWlubHkgcmVhY2ggY29kZSB3aXRoaW4gdGhvc2UgZHJpdmVycy4gU28sIEkgbmVlZCB0byByZWZpbmUgbXkgdW5kZXJzdGFuZGluZy4gVGhlIHF1ZXN0aW9uIGlzbiYjMzk7dCBqdXN0ICYjMzQ7aXMgaXQgYSBVU0IgZHJpdmVyPyYjMzQ7LCBidXQgcmF0aGVyLCAmIzM0O2RvZXMgdGhlIHR5cGUgb2YgZnV6emluZyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhY3R1YWxseSAqZ2V0KiB0byB0aGUgcmVsZXZhbnQgd2lyZWxlc3MgZHJpdmVyIGxvZ2ljPyYjMzQ7LiBPZnRlbiwgVVNCIGZ1enppbmcgY2FuIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBvbiBhIGxvdyBsZXZlbCwgYnV0IHdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gbmVlZCBmaXJtd2FyZSB0byBiZSBsb2FkZWQgYmVmb3JlIHRoZXkgY2FuIGluaXRpYWxpemUgdGhlIE1BQy9QSFkgYW5kIHJlZ2lzdGVyIHRoZWlyIG5ldHdvcmsgaW50ZXJmYWNlLiBTbywgd2hhdCBJIG5lZWQgdG8gZG8gaXMgbG9vayBmb3IgYSBzcGVjaWZpYyBleGFtcGxlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIGZ1enppbmcgdGVjaG5pcXVlIHdpbGwgYWN0dWFsbHkgdGVzdCB0aGUgY29kZSBpbiBxdWVzdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGlmIGBydHc4OWAgcmVsaWVzIG9uIGZpcm13YXJlIHRvIG9wZXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz05NzY9cnR3ODlfZWFybHlfZndfZmVhdHVyZV9yZWNvZ25pemUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6OTkzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZpcm13YXJlLCBmd19uYW1lLCBkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk5NC1cdFx0aWYgKCFyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjA0MT1zdGF0aWMgaW50IHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA1Ni1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDU3Olx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNnJlcS1cdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDUwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBgcnR3ODlgIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFza2luZyBtZSB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBpbnRyb2R1Y2VzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzaW11bGF0ZWQgaGFyZHdhcmUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgdGhpcyBgcnR3ODlgIGRyaXZlci4uLiBpdCBzY3JlYW1zIGZpcm13YXJlIGRlcGVuZGVuY3ksIGRvZXNuJiMzOTt0IGl0PyBJZiB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IHRoZXJlLCBgcmVxdWVzdF9maXJtd2FyZWAgZmFpbHMsIGFuZCB0aGUgcHJvYmUganVzdCBkaWVzLiBTeXprYWxsZXIsIGluIGl0cyB0eXBpY2FsIHNldHVwLCB1c3VhbGx5IHdvbiYjMzk7dCBoYXZlIHByb3ByaWV0YXJ5IGZpcm13YXJlIHVubGVzcyBpdCYjMzk7cyBidW5kbGVkIGluIGBsaW51eC1maXJtd2FyZWAsIGFuZCBldmVuIHRoZW4sIGxvYWRpbmcgaXQgaXMganVzdCB0aGUgZmlyc3QgaHVyZGxlLiBUaGUgVVNCIGZ1enplciB3b3VsZCB0aGVuIG5lZWQgdG8gZmxhd2xlc3NseSBlbXVsYXRlIHRoZSAqZXhhY3QqIGZpcm13YXJlIHJlc3BvbnNlcyB0byBldmVuIGdldCBwYXN0IHRoYXQgaW5pdGlhbCBzdGFnZS4KCkkmIzM5O20gdGhpbmtpbmcsIGlzbiYjMzk7dCB0aGVyZSBhIG1hYzgwMjExIHNpbXVsYXRpb24gZm9yIHdpcmVsZXNzIGZ1enppbmcgd2l0aCBzeXprYWxsZXI/IE9oIHllYWgsIGBtYWM4MDIxMV9od3NpbWAhIEJ1dCB0aGF04oCZcyBzb2Z0d2FyZSwgbm90IHRvdWNoaW5nIHJlYWwgaGFyZHdhcmUgZHJpdmVycyBsaWtlIGBydHc4OWAuIFRob3NlIGhhcmR3YXJlIGRyaXZlcnMsIGxpa2UgYGF0aDEwa2AgYW5kIGBpd2x3aWZpYCwgYXJlIGdlbmVyYWxseSBub3QgcmVhY2hlZCBiZWNhdXNlIG9mIGVpdGhlciBQQ0kgZGV2aWNlIGVtdWxhdGlvbiBzaG9ydGNvbWluZ3MsIG9yIHRoZSBmYWN0IHRoYXQgVVNCIGRyaXZlcnMgcHJvdmlkZSByYW5kb20gcmVzcG9uc2VzLiBBIGNvbXBsZXggYmVhc3QgbGlrZSBgcnR3ODlgIHdpbGwgbGlrZWx5IGRpZSBxdWlja2x5IHdoZW4gaXQgdHJpZXMgdG8gcmVhZCBzcGVjaWZpYyByZWdpc3RlcnMsIGxvYWQgZmlybXdhcmUsIGFuZCB3YWl0IGZvciBmaXJtd2FyZS1yZWFkeSBzaWduYWxzLiBJdOKAmWxsIG5ldmVyIHJlYWNoIHRoZSBqdWljeSBjb3JlIGxvZ2ljIGxpa2UgYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgb3IgYHJ0dzg5X21hY19zZXRfdHhfdGltZWAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcmUtcmVhZCB0aGUgcHJvbXB0IGNhcmVmdWxseS4gVGhlIGtleSBpcyAmIzM0O2NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC4mIzM0OyBJZiB0aGUgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgdW5yZWFjaGFibGUgY29kZSwgdGhlbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0IGlzIHRoZSBgcnR3ODlgIGNvcmUgbG9naWMgcmVhY2hhYmxlICphdCBhbGwqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2hlY2sgc3l6a2FsbGVyIGNvdmVyYWdlLCBidXQgbXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGNvbXBsZXggaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSBkZW1hbmRpbmcgZmlybXdhcmUgYW5kIHNwZWNpZmljIHJlZ2lzdGVyIGludGVyYWN0aW9ucywgdXN1YWxseSBkb24mIzM5O3QgZ2V0IG11Y2ggZnVydGhlciB0aGFuIHRoZSBwcm9iZSBmYWlsdXJlIGluIFVTQi9QQ0kgZnV6emluZy4KCkhtbSwgYW55IG90aGVyIGFuZ2xlcz8gSXMgdGhlcmUgc29tZSBiYWNrZG9vciwgbGlrZSBgbWFjODAyMTFgLCB0aGF0IGNvdWxkIGJlIHVzZWQ/IE5vLCBgcnR3ODlgIGlzIGNsZWFybHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIHRlc3QgbW9kZSBvciBzb21ldGhpbmcgdGhhdCB3b3VsZCBhbGxvdyBlYXNpZXIgYWNjZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3Rtb2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBTaW11bGF0aW9uIE9wdGlvbnMgZm9yIHJ0dzg5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgdGhpcyBgcnR3ODlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGEgc2ltdWxhdGVkIGVudmlyb25tZW50LiBUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdXN1YWxseSB0byBsb29rIGZvciBzb21lIGtpbmQgb2YgYGh3c2ltYCBvciwgaGVjaywgYW55dGhpbmcgdGhhdCByZXNlbWJsZXMgYSBoYXJkd2FyZSBzaW11bGF0b3IgdGFpbG9yZWQgZm9yIHRoZXNlIHJlYWx0ZWsgd2lyZWxlc3MgY2hpcHNldHMuIEl0JiMzOTtzIHRoZSBnby10byBmb3IgcmFwaWQgdGVzdGluZyBhbmQgcmVncmVzc2lvbi4gU28sIGZpcnN0IHRoaW5nLCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb3V0IHRoZXJlLiBBIHF1aWNrIHNjYW4gb2YgdGhlIHR5cGljYWwgbG9jYXRpb25zIC0gdGhlIGtlcm5lbCBzb3VyY2UsIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGFuZCBhbnkgcHVibGljIGRpc2N1c3Npb25zIC0gaXMgaW4gb3JkZXIuIE1heWJlIHNvbWV0aGluZyBuZXcgaGFzIGNyb3BwZWQgdXAsIG9yIG1heWJlIEkgbmVlZCB0byBhZGp1c3QgbXkgYXBwcm9hY2guIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBrZXl3b3JkcyBhbmQgdGhlbiBicm9hZGVuIG15IHNlYXJjaCBpZiBub3RoaW5nIGp1bXBzIG91dCBpbW1lZGlhdGVseS4gS25vd2luZyB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGUgY29tbW9uIG5hbWluZyBjb252ZW50aW9ucywgSSYjMzk7bSBleHBlY3RpbmcgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRpc2NvdmVyeS4uLiBvciBhIHJhYmJpdCBob2xlLiBMZXQmIzM5O3Mgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAxMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzE0OAoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAxMzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBydHc4OSBXaXJlbGVzcyBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNoYW5nZXMsIGRlZXAgaW4gdGhlIGBydHc4OWAgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSBmaWxlcyBsaWtlIGBjb3JlLmNgLCBgbWFjLmNgLCBgcGh5LmNgLCBldGMuIFRoaXMgaXMgcHJldHR5IGxvdy1sZXZlbCwgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gSSYjMzk7bSBzZWVpbmcgZnVuY3Rpb25zIGxpa2UgYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgdGhhdCBkaXJlY3RseSByZWFkIFJGIHJlZ2lzdGVycyB1c2luZyBjYWxscyBsaWtlIGBydHc4OV9yZWFkX3JmYC4gVGhhdCBpbXBsaWVzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeTsgdGhlIGRldmljZSBoYXMgdG8gYmUgcHJlc2VudCwgcG93ZXJlZCBvbiwgYW5kIHJlc3BvbmRpbmcuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBmdXp6aW5nIHRoaXMuIEluIGEgVVNCIGZ1enppbmcgc2NlbmFyaW8sIGBydHc4OV9yZWFkX3JmYCB3b3VsZCBldmVudHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgVVNCIGNvbnRyb2wgdHJhbnNmZXIuIFRoZSBmdXp6ZXIgY291bGQgdGhyb3cgcmFuZG9tIGRhdGEgYXQgaXQsIHN1cmUuIEJ1dCB0byBldmVuICpnZXQqIHRvIHRoYXQgcG9pbnQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLiBJdCBoYXMgdG8gZ28gdGhyb3VnaCBhIHdob2xlIHNlcXVlbmNlOiBwcm9iZSwgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSwgYW5kIHRoZSB1c2VyIG11c3QgYmUgY29uZmlndXJpbmcgYSBjaGFubmVsLCByaWdodD8gVGhlIHN1Y2Nlc3NmdWwgcHJvYmluZyByZXF1aXJlcyB0aGUgZHJpdmVyIHRvOgoKMS4gIFJlYWQgY2hpcCBJRCBhbmQgcmV2aXNpb24uCjIuICBMb2FkIGZpcm13YXJlLgozLiAgRG93bmxvYWQgZmlybXdhcmUgdG8gdGhlIGRldmljZS4KNC4gIFdhaXQgZm9yIHRoZSBmaXJtd2FyZSB0byBib290IGFuZCBzZW5kIGEgcmVhZHkgc2lnbmFsLgo1LiAgSW5pdGlhbGl6ZSBNQUMgYW5kIFBIWS4KNi4gIFJlZ2lzdGVyIHdpdGggbWFjODAyMTEuCgpJdCYjMzk7cyBqdXN0IG5vdCBwcmFjdGljYWxseSBmZWFzaWJsZSBmb3IgYSByYW5kb20gVVNCIGZ1enplciB0byBlbXVsYXRlIHRoYXQgcHJlY2lzZSBzZXF1ZW5jZSBvZiBmaXJtd2FyZSBkb3dubG9hZCBhbmQgYm9vdCByZXNwb25zZXMuIEl0JiMzOTtzIHRvbyBjb21wbGV4LiBUaGUgZHJpdmVyJiMzOTtzIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgaW4gdGhhdCBraW5kIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKSG1tLCB3YWl0IGEgc2VjLi4uIHdoYXQgYWJvdXQgUUVNVT8gRG9lcyBRRU1VIHN1cHBvcnQgdGhpcyBkcml2ZXI/IEkga25vdyBRRU1VIHN1cHBvcnRzIHNvbWUgbmV0d29yayBjYXJkcyBsaWtlIGUxMDAwLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldCwgYnV0IG5vdCBtb2Rlcm4gd2lyZWxlc3MgY2FyZHMgbGlrZSB0aGUgYHJ0dzg5YCwgd2hpY2ggaXMgODAyLjExYXgvV2ktRmkgNi4gU28sIFBDSSBmdXp6aW5nIGlzIG91dCB0b28uCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzd2VlcCBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGNvbmZpcm0gdGhpcy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCwgYHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWxgLCBgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmRgLCBgcnR3ODlfY29yZV9yZmtfdHJhY2tgLCBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCwgYHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXRgLCBgcnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldGAsIGBydHc4OV9md19kbF9mYWlsX2R1bXBgLCBgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXRgLCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAsIGBfX3J0dzg5X21hY19zZXRfdHhfdGltZWAsIGFuZCBgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdGAuCgpZZXAuIEFsbCB0aGVzZSBhcmUgY2xlYXJseSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZnVuY3Rpb25zLiBHaXZlbiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBhIGRldmljZSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBieSBRRU1VLCBhbmQgdGhhdCByZXF1aXJlcyB0aGlzIGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb24gdGhhdCBjYW4mIzM5O3QgYmUgZnV6emVkIHByYWN0aWNhbGx5IHRocm91Z2ggVVNCIGdhZGdldCwgaXQgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoZSAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IGNhdGVnb3J5LgoKTGV0JiMzOTtzIGp1c3QgZG91YmxlIGNoZWNrIHRoZSBmaWxlIHBhdGhzLi4uIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gYGNvcmUuY2AsIGBjb3JlLmhgLCBgZGVidWcuY2AsIGBmdy5jYCwgYGZ3LmhgLCBgbWFjLmNgLCBgbWFjLmhgLCBgbWFjX2JlLmNgLCBgcGh5LmNgLCBgcGh5LmhgLCBgcmVnLmhgLCBgcnR3ODg1MWIuY2AsIGBydHc4ODUxYl90YWJsZS5jYCwgYHJ0dzg4NTJhLmNgLCBgcnR3ODg1MmIuY2AsIGBydHc4ODUyYl9jb21tb24uY2AsIGBydHc4ODUyYl90YWJsZS5jYCwgYHJ0dzg4NTJidC5jYCwgYHJ0dzg4NTJjLmNgLCBgcnR3ODg1MmNfdGFibGUuY2AsIGBydHc4OTIyYS5jYCwgYW5kIGBydHc4OTIyZC5jYC4gVGhleSBhcmUgYWxsIHVuZGVyIGAvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gLgoKSXQmIzM5O3MgYWxsIHRoZSBgcnR3ODlgIGRyaXZlciwgc28gSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uIGlzIHRoYXQgaXQgaW52b2x2ZXMgbW9kaWZ5aW5nIGEgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODlgKSB0aGF0IHJlcXVpcmVzCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMTI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyIChSZWFsdGVrIDgwMi4xMWF4L2JlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGNvbXBsZXggZmlybXdhcmUgZW11bGF0aW9uICh3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyKSB0byBwYXNzIHRoZSBpbml0aWFsIHByb2JlIGFuZCByZWFjaCB0aGUgY29yZSBsb2dpYyAoTUFDL1BIWSBpbml0aWFsaXphdGlvbiwgUkYgY2FsaWJyYXRpb24sIGV0Yy4pLiBUaGVyZWZvcmUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIHJ0dzg5IHdpcmVsZXNzIGRyaXZlciAoUmVhbHRlayA4MDIuMTFheC9iZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBvciBjb21wbGV4IGZpcm13YXJlIGVtdWxhdGlvbiAod2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBRRU1VL3N5emthbGxlcikgdG8gcGFzcyB0aGUgaW5pdGlhbCBwcm9iZSBhbmQgcmVhY2ggdGhlIGNvcmUgbG9naWMgKE1BQy9QSFkgaW5pdGlhbGl6YXRpb24sIFJGIGNhbGlicmF0aW9uLCBldGMuKS4gVGhlcmVmb3JlLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNjo0My4wNjY3MjM0NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY4NDQ1NjA4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIHJ0dzg5IHdpcmVsZXNzIGRyaXZlciAoUmVhbHRlayA4MDIuMTFheC9iZSkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBvciBjb21wbGV4IGZpcm13YXJlIGVtdWxhdGlvbiAod2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBRRU1VL3N5emthbGxlcikgdG8gcGFzcyB0aGUgaW5pdGlhbCBwcm9iZSBhbmQgcmVhY2ggdGhlIGNvcmUgbG9naWMgKE1BQy9QSFkgaW5pdGlhbGl6YXRpb24sIFJGIGNhbGlicmF0aW9uLCBldGMuKS4gVGhlcmVmb3JlLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjQzLjA2NjcyOTAyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4NzQxOTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzE5OGNhMzQxYWFjMGRjZmEwZWE1YTFiMjc5ZTNjMDFhOWRlMTNlNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxMiAxMjoyNjo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuaW5kZXggNjhkYWQ2MDkwZjg3ZTIuLjliOTZiNTdiYzM5Y2Q2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNcXG5AQCAtNDg2LDYgKzQ4NiwzNyBAQCB2b2lkIHJ0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRfX3J0dzg5X2NvcmVfc2V0X2NoaXBfdHhwd3IocnR3ZGV2LCBjb25mLmNoYW5zWzFdLCBSVFc4OV9QSFlfMSk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3JlY29yZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4rXFx0XFx0XFx0XFx0ICBib29sIHN0YXJ0KVxcbit7XFxuK1xcdHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvICppbmZvID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlcmZrX3dhaXQ7XFxuK1xcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpbmZvLVxcdTAwM2VyZWNvcmRfaWR4XTtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cXHUwMDNlY2hpcDtcXG4rXFx0dTggcGF0aF9udW0gPSBtaW4oY2hpcC1cXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XFxuK1xcdGludCBwYXRoO1xcbitcXG4rXFx0aWYgKCFzdGFydClcXG4rXFx0XFx0Z290byBlbmQ7XFxuK1xcbitcXHRpbmZvLVxcdTAwM2VyZWNvcmRfcHRyID0gcmVjb3JkO1xcbitcXHRyZWNvcmQtXFx1MDAzZXBoeV9pZHggPSBydHd2aWZfbGluay1cXHUwMDNlcGh5X2lkeDtcXG4rXFxuK1xcdGZvciAocGF0aCA9IDA7IHBhdGggXFx1MDAzYyBwYXRoX251bTsgcGF0aCsrKSB7XFxuK1xcdFxcdHJlY29yZC1cXHUwMDNlY2hbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfQ0ZHQ0gsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBSUl9DRkdDSF9CQU5EMCB8IFJSX0NGR0NIX0NIKTtcXG4rXFx0XFx0cmVjb3JkLVxcdTAwM2VjdltwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9WQ08sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBSUl9WQ09fU0VMIHwgUlJfVkNPX1NUUyk7XFxuK1xcdFxcdHJlY29yZC1cXHUwMDNlYzVbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfU1lORkIsIFJGUkVHX01BU0spO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm47XFxuK1xcbitlbmQ6XFxuK1xcdGluZm8tXFx1MDAzZXJlY29yZF9pZHggPSAoaW5mby1cXHUwMDNlcmVjb3JkX2lkeCArIDEpICUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SO1xcbitcXHRpbmZvLVxcdTAwM2VyZWNvcmRfcHRyID0gTlVMTDtcXG4rfVxcbitcXG4gdm9pZCBydHc4OV9jaGlwX3Jma19jaGFubmVsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXFxuIHtcXG5AQCAtNTAzLDkgKzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoY2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VyZmtfY2hhbm5lbClcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlcmZrX2NoYW5uZWwpIHtcXG4rXFx0XFx0cnR3ODlfY29yZV9yZmtfcmVjb3JkKHJ0d2RldiwgcnR3dmlmX2xpbmssIHRydWUpO1xcbitcXG4gXFx0XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VyZmtfY2hhbm5lbChydHdkZXYsIHJ0d3ZpZl9saW5rKTtcXG4gXFxuK1xcdFxcdHJ0dzg5X2NvcmVfcmZrX3JlY29yZChydHdkZXYsIHJ0d3ZpZl9saW5rLCBmYWxzZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwcmVoZGxfbGluaykge1xcbiBcXHRcXHRydHc4OV9lbnRpdHlfZm9yY2VfaHcocnR3ZGV2LCBSVFc4OV9QSFlfTlVNKTtcXG4gXFx0XFx0cnR3ODlfc2V0X2NoYW5uZWwocnR3ZGV2KTtcXG5AQCAtNTI2NSw2ICs1MzAxLDM3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2VudGVyX2xwc190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuK1xcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXFx1MDAzZXJmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpO1xcbitcXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXJma193YWl0O1xcbitcXHRpbnQgaSA9IGluZm8tXFx1MDAzZXJlY29yZF90c3NpX2lkeDtcXG4rXFx0dTMyIGJhc2U7XFxuK1xcdHUzMiBtYXNrO1xcbitcXHRpbnQgcGF0aDtcXG4rXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VjaGlwX2dlbiA9PSBSVFc4OV9DSElQX0FYKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpbmZvLVxcdTAwM2VyZWNvcmRfdHNzaV9pZHggPSAoaW5mby1cXHUwMDNlcmVjb3JkX3Rzc2lfaWR4ICsgMSkgJVxcbitcXHRcXHRcXHRcXHRSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7XFxuK1xcbitcXHRpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyQSkge1xcbitcXHRcXHRiYXNlID0gMHgyZWUxMDtcXG4rXFx0XFx0bWFzayA9IDB4N2ZjMDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGJhc2UgPSAweDJmOTE4O1xcbitcXHRcXHRtYXNrID0gMHgwMDAwMDFmZjtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcXHUwMDNjIHBhdGhfbnVtOyBwYXRoKyspIHtcXG4rXFx0XFx0dTMyIGFkZHIgPSBiYXNlICsgMHgxMDAgKiBwYXRoO1xcbitcXG4rXFx0XFx0aW5mby1cXHUwMDNldHNzaV9jb2RlW2ldW3BhdGhdID0gcnR3ODlfcmVhZDMyX21hc2socnR3ZGV2LCBhZGRyLCBtYXNrKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0ZW51bSBydHc4OV9lbnRpdHlfbW9kZSBtb2RlO1xcbkBAIC01Mjc0LDYgKzUzNDEsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3Jma190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdHJ0dzg5X2NoaXBfcmZrX3RyYWNrKHJ0d2Rldik7XFxuK1xcbitcXHRydHc4OV9jb3JlX3Jma190c3NpX3JlY29yZChydHdkZXYpO1xcbiB9XFxuIFxcbiB2b2lkIHJ0dzg5X2NvcmVfdXBkYXRlX3AycF9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuQEAgLTcxODAsOSArNzI0OSwxOSBAQCBpbnQgcnR3ODlfY29yZV9tbHNyX3N3aXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZixcXG4gc3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVxcdTAwM2VjaGlwLVxcdTAwM2VtYWNfZGVmO1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbitcXHRib29sIGJiX3ByZWluaXQgPSBmYWxzZTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBmYWxzZSk7XFxuK1xcdC8qXFxuK1xcdCAqIE5vcm1hbGx5IGluIHByb2JlIHN0YWdlLCB3ZSBkb24ndCBuZWVkIHRvIGRvIEJCIHByZS1pbml0aWFsaXphdGlvbi5cXG4rXFx0ICogSG93ZXZlciwgUlRMODkyMkQgZmlybXdhcmUgY2FuIGFjY2VzcyBCQiByZWdpc3RlcnMgYXQgZmlybXdhcmVcXG4rXFx0ICogaW5pdGlhbCBzdGF0ZSwgc28gaW5pdGlhbGl6ZSBpdCB0byBhdm9pZCBCQiBJTyBzdHVjayBpbiBmaXJtd2FyZS5cXG4rXFx0ICovXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VjaGlwX2lkID09IFJUTDg5MjJEKVxcbitcXHRcXHRiYl9wcmVpbml0ID0gdHJ1ZTtcXG4rXFxuK1xcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBmYWxzZSwgYmJfcHJlaW5pdCk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXFxuaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjJlYWNiNWZlOTdmMjA4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcXG5AQCAtNDI5NCw4ICs0Mjk0LDEyIEBAIHN0cnVjdCBydHc4OV90eHB3cl9ydWxlXzZnaHoge1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlIHtcXG4tXFx0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcXG4tXFx0Y29uc3QgdTggKCpsbXRfcnUpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XFxuK1xcdGNvbnN0IHU4ICgqbG10KVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV1cXG4rXFx0XFx0ICAgICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xcbitcXHRjb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xcbitcXG4rXFx0Y29uc3QgdTggKCpsbXRfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcXG4rXFx0Y29uc3QgdTggKCpsbXRfcnVfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV07XFxuIH07XFxuIFxcbiBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHtcXG5AQCAtNDM4OSwxMiArNDM5MywxMyBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfbG10X3J1XzZnaHpfZGF0YSB7XFxuIFxcbiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X2RhdGEge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfdHhwd3JfY29uZiBjb25mO1xcbi1cXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcXG4rXFx0dTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUlNfVFhfU0hBUEVfTlVNXVtSVFc4OV9SRUdEX05VTV1cXG4rXFx0ICAgIFtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9ydV9kYXRhIHtcXG4gXFx0c3RydWN0IHJ0dzg5X3R4cHdyX2NvbmYgY29uZjtcXG4tXFx0dTggdltSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xcbitcXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SRUdEX05VTV1bTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSXTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydHc4OV9yZmVfZGF0YSB7XFxuQEAgLTQ3OTAsNiArNDc5NSw3IEBAIHN0cnVjdCBydHc4OV9jaGlwX2luZm8ge1xcbiBcXHRjb25zdCBzdHJ1Y3Qgd2lwaHlfd293bGFuX3N1cHBvcnQgKndvd2xhbl9zdHViO1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfeHRhbF9pbmZvICp4dGFsX2luZm87XFxuIFxcdHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9xdWlya3M7IC8qIGJpdG1hcCBvZiBydHc4OV9xdWlya3MgKi9cXG4rXFx0dTE2IHR4dGltZV9saW1pdF8yZ2h6O1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X2NoaXBfdmFyaWFudCB7XFxuQEAgLTU0ODQsMTEgKzU0OTAsNDMgQEAgZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHtcXG4gXFx0UlRXODlfUkZLX1NUQVRFX0gyQ19DTURfRVJSID0gMHg0LFxcbiB9O1xcbiBcXG4rZW51bSBydHc4OV9yZmtfcmVwb3J0X3R5cGVzIHtcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9QUkVfTlRGWSxcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9UU1NJLFxcbitcXHRSVFc4OV9SRktfUkVQT1JUX0lRSyxcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9EUEssXFxuK1xcdFJUVzg5X1JGS19SRVBPUlRfVFhHQVBLLFxcbitcXHRSVFc4OV9SRktfUkVQT1JUX0RBQ0ssXFxuK1xcdFJUVzg5X1JGS19SRVBPUlRfUlhfRENLLFxcbitcXHRSVFc4OV9SRktfUkVQT1JUX1RYX0lRSyxcXG4rXFx0UlRXODlfUkZLX1JFUE9SVF9DSU0zayxcXG4rXFxuK1xcdE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTLFxcbit9O1xcbitcXG4rI2RlZmluZSBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIgMlxcbisjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUiAxMFxcbitcXG4rc3RydWN0IHJ0dzg5X3Jma19yZWNvcmQge1xcbitcXHR1MzIgY2hbUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTtcXG4rXFx0dTMyIGN2W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XFxuK1xcdHUzMiBjNVtSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdO1xcbitcXHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeDtcXG4rXFx0ZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHN0YXRlc1tOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFU107XFxuK307XFxuK1xcbiBzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyB7XFxuIFxcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247XFxuIFxcdGt0aW1lX3Qgc3RhcnRfdGltZTtcXG4gXFx0ZW51bSBydHc4OV9yZmtfcmVwb3J0X3N0YXRlIHN0YXRlO1xcbiBcXHR1OCB2ZXJzaW9uO1xcbitcXG4rXFx0aW50IHJlY29yZF9pZHg7XFxuK1xcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmRfcHRyO1xcbitcXHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCByZWNvcmRzW1JUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUl07XFxuK1xcbitcXHRpbnQgcmVjb3JkX3Rzc2lfaWR4O1xcbitcXHR1MzIgdHNzaV9jb2RlW1JUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUl1bUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTtcXG4gfTtcXG4gXFxuICNkZWZpbmUgUlRXODlfREFDS19QQVRIX05SIDJcXG5AQCAtNzU2OSw4ICs3NjA3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jaGlwX2JiX3NldGh3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXG4rXFx0cnR3ODlfaW9fcGFjayhydHdkZXYpO1xcbitcXG4gXFx0aWYgKGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlYmJfc2V0aHcpXFxuIFxcdFxcdGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlYmJfc2V0aHcocnR3ZGV2KTtcXG4rXFxuK1xcdHJ0dzg5X2lvX3VucGFjayhydHdkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9yZmtfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuQEAgLTc3ODcsNiArNzgyOSwzMCBAQCBzdGF0aWMgaW5saW5lIHU4IHJ0dzg5X3JlZ2RfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZClcXG4gXFx0cmV0dXJuIHR4cHdyX3JlZ2Q7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgdTggcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJhbmQsXFxuK1xcdFxcdFxcdFxcdFxcdGVudW0gcnR3ODlfcmF0ZV9zZWN0aW9uIHJzKVxcbit7XFxuK1xcdHN0cnVjdCBydHc4OV9yZWd1bGF0b3J5X2luZm8gKnJlZ3VsYXRvcnkgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VyZWd1bGF0b3J5O1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXFx1MDAzZXJmZV9wYXJtcztcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFxcdTAwMjZyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlO1xcbitcXHR1OCByZWc2X3B3ciA9IHJlZ3VsYXRvcnktXFx1MDAzZXJlZ182Z2h6X3Bvd2VyO1xcbitcXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcXG4rXFxuK1xcdGlmICh1bmxpa2VseShycyBcXHUwMDNlPSBSVFc4OV9SU19UWF9TSEFQRV9OVU0pKVxcbitcXHRcXHRycyA9IFJUVzg5X1JTX09GRE07XFxuK1xcbitcXHRpZiAoIXR4X3NoYXBlLVxcdTAwM2VsbXQpXFxuK1xcdFxcdGdvdG8gdjA7XFxuK1xcbitcXHRpZiAoYmFuZCAhPSBSVFc4OV9CQU5EXzZHKVxcbitcXHRcXHRyZWc2X3B3ciA9IFJUVzg5X1JFR182R0haX1BPV0VSX0RGTFQ7XFxuK1xcbitcXHRyZXR1cm4gKCp0eF9zaGFwZS1cXHUwMDNlbG10KVtiYW5kXVtyc11bcmVnZF1bcmVnNl9wd3JdO1xcbitcXG4rdjA6XFxuK1xcdHJldHVybiAoKnR4X3NoYXBlLVxcdTAwM2VsbXRfdjApW2JhbmRdW3JzXVtyZWdkXTtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2N0cmxfYnRnX2J0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbixcXG4gXFx0XFx0XFx0XFx0XFx0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jXFxuaW5kZXggOGY1YWY4NzNlMDlmNWUuLmM4MTM4YzQxMTZjMjE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xcbkBAIC05Myw2ICs5Myw3IEBAIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBiZWFjb25faW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYztcXG4gXFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX2JiO1xcbitcXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGRpYWdfcmY7XFxuIFxcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgbW9uaXRvcl9vcHRzO1xcbiB9O1xcbiBcXG5AQCAtNTM5Niw2ICs1Mzk3LDExOCBAQCBydHc4OV9kZWJ1Z19wcml2X2RpYWdfYmJfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0cmV0dXJuIHAgLSBidWY7XFxuIH1cXG4gXFxuK3N0YXRpYyBzc2l6ZV90XFxuK3J0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdixcXG4rXFx0XFx0XFx0ICAgICBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4re1xcbitcXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXJma193YWl0O1xcbitcXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XFxuK1xcdGludCBpLCBqO1xcbitcXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlJGSyAobmV4dCBpbmRleDogJWQpXFxcXG5cXFwiLCBpbmZvLVxcdTAwM2VyZWNvcmRfaWR4KTtcXG4rXFxuK1xcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgIFBIWS1YICAgID1cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTRkIFxcXCIsIHJlY29yZC1cXHUwMDNlcGh5X2lkeCk7XFxuK1xcdH1cXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcbitcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqKyspIHtcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiAgUyVkLUNIICAgID1cXFwiLCBqKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTA1eFxcXCIsIHJlY29yZC1cXHUwMDNlY2hbal0pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCJcXFxcblxcXCIpO1xcbitcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiAgUyVkLUNWICAgID1cXFwiLCBqKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTA1eFxcXCIsIHJlY29yZC1cXHUwMDNlY3Zbal0pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCJcXFxcblxcXCIpO1xcbitcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiAgUyVkLUM1ICAgID1cXFwiLCBqKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTA1eFxcXCIsIHJlY29yZC1cXHUwMDNlYzVbal0pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCJcXFxcblxcXCIpO1xcbitcXHR9XFxuK1xcbitcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVM7IGorKykge1xcbitcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiICAlLThzID1cXFwiLCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW2pdKTtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcXHUwMDI2aW5mby1cXHUwMDNlcmVjb3Jkc1tpXTtcXG4rXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgJTRkIFxcXCIsIHJlY29yZC1cXHUwMDNlc3RhdGVzW2pdKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0fVxcbitcXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlRTU0ktdHJhY2sgKG5leHQgaW5kZXg6ICVkKVxcXFxuXFxcIiwgaW5mby1cXHUwMDNlcmVjb3JkX3Rzc2lfaWR4KTtcXG4rXFxuK1xcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlI7IGorKykge1xcbitcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiICBTJWQgICAgICAgPVxcXCIsIGopO1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpKyspXFxuK1xcdFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFxcXCIgICAlMDN4XFxcIiwgaW5mby1cXHUwMDNldHNzaV9jb2RlW2ldW2pdKTtcXG4rXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIlxcXFxuXFxcIik7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBwIC0gYnVmO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4re1xcbitcXHRzdHJ1Y3QgcnR3ODlfZW50aXR5X21nbnQgKm1nbnQgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VoYWwuZW50aXR5X21nbnQ7XFxuK1xcdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7XFxuK1xcdHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjtcXG4rXFx0dW5zaWduZWQgaW50IGxpbmtfaWQ7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJ0d3ZpZiwgXFx1MDAyNm1nbnQtXFx1MDAzZWFjdGl2ZV9saXN0LCBtZ250X2VudHJ5KVxcbitcXHRcXHRydHc4OV92aWZfZm9yX2VhY2hfbGluayhydHd2aWYsIHJ0d3ZpZl9saW5rLCBsaW5rX2lkKVxcbitcXHRcXHRcXHRydHc4OV9jaGlwX3Jma19jaGFubmVsKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbit9XFxuK1xcbitlbnVtIHJ0dzg5X2RiZ19kaWFnX3JmX3R5cGUge1xcbitcXHRSVFc4OV9EQkdfRElBR19SRl9SU1ZEID0gMCxcXG4rXFx0UlRXODlfREJHX0RJQUdfUkZfUkZLID0gMSxcXG4rfTtcXG4rXFxuK3N0YXRpYyBzc2l6ZV90XFxuK3J0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9zZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdixcXG4rXFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4re1xcbitcXHR1OCB0eXBlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0ga3N0cnRvdTgoYnVmLCAwLCBcXHUwMDI2dHlwZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0aWYgKHJ0d2Rldi1cXHUwMDNlc2Nhbm5pbmcpXFxuK1xcdFxcdHJ0dzg5X2h3X3NjYW5fYWJvcnQocnR3ZGV2LCBydHdkZXYtXFx1MDAzZXNjYW5faW5mby5zY2FubmluZ192aWYpO1xcbitcXG4rXFx0cnR3ODlfbGVhdmVfcHNfbW9kZShydHdkZXYpO1xcbitcXG4rXFx0c3dpdGNoICh0eXBlKSB7XFxuK1xcdGNhc2UgUlRXODlfREJHX0RJQUdfUkZfUkZLOlxcbitcXHRcXHRydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHJ0d2Rldik7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBjb3VudDtcXG4rfVxcbitcXG4gc3RhdGljIHNzaXplX3RcXG4gcnR3ODlfZGVidWdfcHJpdl9tb25pdG9yX29wdHNfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXFxuQEAgLTU1MDgsNiArNTYyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyBydHc4OV9kZWJ1Z2ZzX3RlbXBsID0ge1xcbiBcXHQuYmVhY29uX2luZm8gPSBydHc4OV9kZWJ1Z19wcml2X2dldChiZWFjb25faW5mbyksXFxuIFxcdC5kaWFnX21hYyA9IHJ0dzg5X2RlYnVnX3ByaXZfZ2V0KGRpYWdfbWFjLCBSU0laRV8xNkssIFJMT0NLKSxcXG4gXFx0LmRpYWdfYmIgPSBydHc4OV9kZWJ1Z19wcml2X2dldChkaWFnX2JiLCBSU0laRV84SywgUkxPQ0spLFxcbitcXHQuZGlhZ19yZiA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQoZGlhZ19yZiwgUldMT0NLKSxcXG4gXFx0Lm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLFxcbiB9O1xcbiBcXG5AQCAtNTU2NSw2ICs1Njc5LDcgQEAgdm9pZCBydHc4OV9kZWJ1Z2ZzX2FkZF9zZWMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BcXG4gXFx0cnR3ODlfZGVidWdmc19hZGRfcihiZWFjb25faW5mbyk7XFxuIFxcdHJ0dzg5X2RlYnVnZnNfYWRkX3IoZGlhZ19tYWMpO1xcbiBcXHRydHc4OV9kZWJ1Z2ZzX2FkZF9yKGRpYWdfYmIpO1xcbitcXHRydHc4OV9kZWJ1Z2ZzX2FkZF9ydyhkaWFnX3JmKTtcXG4gXFx0cnR3ODlfZGVidWdmc19hZGRfcncobW9uaXRvcl9vcHRzKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXFxuaW5kZXggZDZhNTk0Yjc1YWIyMDIuLjAwZmU0ODA4OTA3MWI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbkBAIC0xOTE0LDEzICsxOTE0LDE0IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X3Byb2dfY250X2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXG4gc3RhdGljIHZvaWQgcnR3ODlfZndfZGxfZmFpbF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgKm1hYyA9IHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlbWFjX2RlZjtcXG4gXFx0dTMyIHZhbDMyO1xcbiBcXG4gXFx0dmFsMzIgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBSX0FYX1dDUFVfRldfQ1RSTCk7XFxuIFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3ZGwgMHgxRTAgPSAweCV4XFxcXG5cXFwiLCB2YWwzMik7XFxuIFxcbi1cXHR2YWwzMiA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfQk9PVF9EQkcpO1xcbi1cXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiW0VSUl1md2RsIDB4ODNGMCA9IDB4JXhcXFxcblxcXCIsIHZhbDMyKTtcXG4rXFx0dmFsMzIgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBtYWMtXFx1MDAzZWJvb3RfZGJnKTtcXG4rXFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcIltFUlJdZndkbCAweCV4ID0gMHgleFxcXFxuXFxcIiwgbWFjLVxcdTAwM2Vib290X2RiZywgdmFsMzIpO1xcbiBcXG4gXFx0cnR3ODlfZndfcHJvZ19jbnRfZHVtcChydHdkZXYpO1xcbiB9XFxuQEAgLTExMzI1LDYgKzExMzI2LDEyIEBAIGZ3X3R4X3NoYXBlX2xtdF9lbnRyeV92YWxpZChjb25zdCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5ICplLFxcbiBcXHRpZiAoZS1cXHUwMDNlcmVnZCBcXHUwMDNlPSBSVFc4OV9SRUdEX05VTSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4rXFx0LyogZW5zdXJlIGNvbXBhdGliaWxpdHkgd29yayB3aXRoIDIvNSBHSHogKi9cXG4rXFx0c3RhdGljX2Fzc2VydChSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUID09IDApO1xcbitcXG4rXFx0aWYgKGUtXFx1MDAzZXJlZzZfcHdyIFxcdTAwM2U9IE5VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUilcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuQEAgLTExMzM5LDcgKzExMzQ2LDcgQEAgdm9pZCBydHc4OV9md19sb2FkX3R4X3NoYXBlX2xtdChzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X2RhdGEgKmRhdGEpXFxuIFxcdFxcdGlmICghZndfdHhfc2hhcGVfbG10X2VudHJ5X3ZhbGlkKFxcdTAwMjZlbnRyeSwgY3Vyc29yLCBjb25mKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHRkYXRhLVxcdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnR4X3NoYXBlX3JzXVtlbnRyeS5yZWdkXSA9IGVudHJ5LnY7XFxuK1xcdFxcdGRhdGEtXFx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkudHhfc2hhcGVfcnNdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMTEzNTYsNiArMTEzNjMsMTIgQEAgZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5X3ZhbGlkKGNvbnN0IHN0cnVjdCBydHc4OV9md190eF9zaGFwZV9sbXRfcnVfZW50cnkgKmUsXFxuIFxcdGlmIChlLVxcdTAwM2VyZWdkIFxcdTAwM2U9IFJUVzg5X1JFR0RfTlVNKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbitcXHQvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqL1xcbitcXHRzdGF0aWNfYXNzZXJ0KFJUVzg5X1JFR182R0haX1BPV0VSX0RGTFQgPT0gMCk7XFxuK1xcbitcXHRpZiAoZS1cXHUwMDNlcmVnNl9wd3IgXFx1MDAzZT0gTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5AQCAtMTEzNzAsNyArMTEzODMsNyBAQCB2b2lkIHJ0dzg5X2Z3X2xvYWRfdHhfc2hhcGVfbG10X3J1KHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfcnVfZGF0YSAqZGF0YSlcXG4gXFx0XFx0aWYgKCFmd190eF9zaGFwZV9sbXRfcnVfZW50cnlfdmFsaWQoXFx1MDAyNmVudHJ5LCBjdXJzb3IsIGNvbmYpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGRhdGEtXFx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkucmVnZF0gPSBlbnRyeS52O1xcbitcXHRcXHRkYXRhLVxcdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLmU3NmNlYTBiOWQ0MzE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxcbkBAIC01ODE0LDYgKzU4MTQsNyBAQCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5IHtcXG4gXFx0dTggdHhfc2hhcGVfcnM7XFxuIFxcdHU4IHJlZ2Q7XFxuIFxcdHU4IHY7XFxuK1xcdHU4IHJlZzZfcHdyO1xcbiB9IF9fcGFja2VkO1xcbiBcXG4gLyogbXVzdCBjb25zaWRlciBjb21wYXRpYmlsaXR5OyBkb24ndCBpbnNlcnQgbmV3IGluIHRoZSBtaWQgKi9cXG5AQCAtNTgyMSw2ICs1ODIyLDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSB7XFxuIFxcdHU4IGJhbmQ7XFxuIFxcdHU4IHJlZ2Q7XFxuIFxcdHU4IHY7XFxuK1xcdHU4IHJlZzZfcHdyO1xcbiB9IF9fcGFja2VkO1xcbiBcXG4gY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXFxuaW5kZXggOGMzOTU1MTdiZDJmZTEuLmUyMDQ5MzQxYzQxNTQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXFxuQEAgLTQzMDQsMTMgKzQzMDQsMTQgQEAgaW50IHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcXG4gXFxuLWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiKVxcbitpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcXG4rXFx0XFx0XFx0ICAgYm9vbCBiYl9wcmVpbml0KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRydHc4OV9tYWNfY3RybF9oY2lfZG1hX3RyeChydHdkZXYsIHRydWUpO1xcbiBcXG4tXFx0aWYgKGluY2x1ZGVfYmIpIHtcXG4rXFx0aWYgKGluY2x1ZGVfYmIgfHwgYmJfcHJlaW5pdCkge1xcbiBcXHRcXHQvKiBPbmx5IGNhbGwgQkIgcHJlaW5pdCBpbmNsdWRpbmcgY29uZmlndXJhdGlvbiBvZiBCQiBNQ1UgZm9yXFxuIFxcdFxcdCAqIHRoZSBjaGlwcyB3aGljaCBuZWVkIHRvIGRvd25sb2FkIEJCIE1DVSBmaXJtd2FyZS4gT3RoZXJ3aXNlLFxcbiBcXHRcXHQgKiBjYWxsaW5nIHByZWluaXQgbGF0ZXIgdG8gcHJldmVudCB0b3VjaGluZyByZWdpc3RlcnMgYWZmZWN0aW5nXFxuQEAgLTQzNjMsNyArNDM2NCw3IEBAIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdGJvb2wgaW5jbHVkZV9iYiA9ICEhY2hpcC1cXHUwMDNlYmJtY3VfbnI7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgaW5jbHVkZV9iYik7XFxuK1xcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiLCBpbmNsdWRlX2JiKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBmYWlsO1xcbiBcXG5AQCAtNzA0MywxMSArNzA0NCwyMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhX1xcbiB7XFxuICNkZWZpbmUgTUFDX0FYX0RGTFRfVFhfVElNRSA1MjgwXFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVxcdTAwM2VjaGlwLVxcdTAwM2VtYWNfZGVmO1xcbitcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXHR1OCBtYWNfaWR4ID0gcnR3c3RhX2xpbmstXFx1MDAzZXJ0d3ZpZl9saW5rLVxcdTAwM2VtYWNfaWR4O1xcbiBcXHR1MzIgbWF4X3R4X3RpbWUgPSB0eF90aW1lID09IDAgPyBNQUNfQVhfREZMVF9UWF9USU1FIDogdHhfdGltZTtcXG4rXFx0c3RydWN0IHJ0dzg5X2VudGl0eV9jb25mIGNvbmY7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuO1xcbiBcXHR1MzIgcmVnO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuK1xcdGlmIChjaGlwLVxcdTAwM2V0eHRpbWVfbGltaXRfMmdoeikge1xcbitcXHRcXHRydHc4OV9lbnRpdHlfZ2V0X2NvbmYocnR3ZGV2LCBcXHUwMDI2Y29uZik7XFxuK1xcdFxcdGNoYW4gPSBjb25mLmNoYW5zW21hY19pZHhdO1xcbitcXG4rXFx0XFx0aWYgKGNoYW4tXFx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHKVxcbitcXHRcXHRcXHRtYXhfdHhfdGltZSA9IG1pbl90KHUzMiwgbWF4X3R4X3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBjaGlwLVxcdTAwM2V0eHRpbWVfbGltaXRfMmdoeik7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChydHdzdGFfbGluay1cXHUwMDNlY2N0bF90eF90aW1lKSB7XFxuIFxcdFxcdHJ0d3N0YV9saW5rLVxcdTAwM2VhbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgXFx1MDAzZVxcdTAwM2UgOTtcXG4gXFx0XFx0cmV0ID0gcnR3ODlfY2hpcF9oMmNfdHh0aW1lX2NtYWNfdGJsKHJ0d2RldiwgcnR3c3RhX2xpbmspO1xcbkBAIC03MDU4LDkgKzcwNzEsMTMgQEAgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfc3RhX2xpbmsgKnJ0d3N0YV9cXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0aWYgKGNoaXAtXFx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXFxuK1xcdFxcdFxcdG1heF90eF90aW1lIFxcdTAwM2VcXHUwMDNlPSA1O1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG1heF90eF90aW1lID0gbWF4X3R4X3RpbWUgKiAxMDAwIFxcdTAwM2VcXHUwMDNlIDE1O1xcbitcXG4gXFx0XFx0cmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBtYWMtXFx1MDAzZWFnZ19saW1pdC5hZGRyLCBtYWNfaWR4KTtcXG4tXFx0XFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtXFx1MDAzZWFnZ19saW1pdC5tYXNrLFxcbi1cXHRcXHRcXHRcXHQgICBtYXhfdHhfdGltZSBcXHUwMDNlXFx1MDAzZSA1KTtcXG4rXFx0XFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBtYWMtXFx1MDAzZWFnZ19saW1pdC5tYXNrLCBtYXhfdHhfdGltZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTc0MzgsNiArNzQ1NSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2F4ID0ge1xcbiBcXHQuYWdnX2xlbl9odCA9IFJfQVhfQUdHX0xFTl9IVF8wLFxcbiBcXHQucHNfc3RhdHVzID0gUl9BWF9QUFdSQklUX1NFVFRJTkcsXFxuIFxcdC5tdV9naWQgPSBcXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2F4LFxcbitcXHQuYm9vdF9kYmcgPSBSX0FYX0JPT1RfREJHLFxcbiBcXG4gXFx0Lm11ZWRjYV9jdHJsID0ge1xcbiBcXHRcXHQuYWRkciA9IFJfQVhfTVVFRENBX0VOLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxcbmluZGV4IDUzOTA2MWZjMTVlODViLi45NDY3OGEyNjJlMTY0ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxcbkBAIC0xMDY3LDYgKzEwNjcsNyBAQCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYge1xcbiBcXHR1MzIgYWdnX2xlbl9odDtcXG4gXFx0dTMyIHBzX3N0YXR1cztcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19tdV9naWRfYWRkciAqbXVfZ2lkO1xcbitcXHR1MzIgYm9vdF9kYmc7XFxuIFxcbiBcXHRzdHJ1Y3QgcnR3ODlfcmVnX2RlZiBtdWVkY2FfY3RybDtcXG4gXFx0c3RydWN0IHJ0dzg5X3JlZ19kZWYgYmZlZV9jdHJsO1xcbkBAIC0xMjk4LDcgKzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbFxcbiBcXG4gaW50IHJ0dzg5X21hY19wd3Jfb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG4gdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYik7XFxuK2ludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxcbitcXHRcXHRcXHQgICBib29sIGJiX3ByZWluaXQpO1xcbiBpbnQgcnR3ODlfbWFjX3ByZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG4gaW50IHJ0dzg5X21hY19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuIGludCBydHc4OV9tYWNfZGxlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X3F0YV9tb2RlIG1vZGUsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jXFxuaW5kZXggZjI0YzExOWI5OWYxYmQuLjI0MjAwNmNlZmMzZTFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jXFxuQEAgLTMyNDIsNiArMzI0Miw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2JlID0ge1xcbiBcXHQuYWdnX2xlbl9odCA9IFJfQkVfQUdHX0xFTl9IVF8wLFxcbiBcXHQucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsXFxuIFxcdC5tdV9naWQgPSBcXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLFxcbitcXHQuYm9vdF9kYmcgPSBSX0JFX0JPT1RfREJHLFxcbiBcXG4gXFx0Lm11ZWRjYV9jdHJsID0ge1xcbiBcXHRcXHQuYWRkciA9IFJfQkVfTVVFRENBX0VOLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xcbmluZGV4IDc1OWJlNGRhYjQyYjFjLi42ZGVlMzlmNTNkZjBlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xcbkBAIC0zOTY4LDYgKzM5NjgsMjMgQEAgdm9pZCAoKiBjb25zdCBydHc4OV9waHlfYzJoX3Jma19sb2dfaGFuZGxlcltdKShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFtSVFc4OV9QSFlfQzJIX1JGS19MT0dfRlVOQ19DSU0zS10gPSBydHc4OV9waHlfYzJoX3Jma19sb2dfY2ltM2ssXFxuIH07XFxuIFxcbisjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcXFxcXFxuK1xcdFtSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlXSA9ICN0eXBlXFxuK1xcbitjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdID0ge1xcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoUFJFX05URlkpLFxcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoVFNTSSksXFxuK1xcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChJUUspLFxcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoRFBLKSxcXG4rXFx0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFRYR0FQSyksXFxuK1xcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEQUNLKSxcXG4rXFx0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFJYX0RDSyksXFxuK1xcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChUWF9JUUspLFxcbitcXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoQ0lNM2spLFxcbit9O1xcbitcXG4rc3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0dzg5X3Jma19yZXBvcnRfbmFtZXMpID09IE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTKTtcXG4rXFxuIHN0YXRpY1xcbiB2b2lkIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiB7XFxuQEAgLTM5NzksOCArMzk5Niw4IEBAIHZvaWQgcnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIH1cXG4gXFxuIHN0YXRpY1xcbi1pbnQgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLFxcbi1cXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbXMpXFxuK2ludCBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLFxcbitcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBtcylcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXJma193YWl0O1xcbiBcXHR1bnNpZ25lZCBsb25nIHRpbWVfbGVmdDtcXG5AQCAtNDAxNyw2ICs0MDM0LDI5IEBAIGludCBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqcmZrX25hbWUsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWNcXG4raW50IF9fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuK1xcdFxcdFxcdFxcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF90eXBlcyByZmtfdHlwZSxcXG4rXFx0XFx0XFx0XFx0ZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsXFxuK1xcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbitcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbXMpXFxuK3tcXG4rXFx0Y29uc3QgY2hhciAqcmZrX25hbWUgPSBydHc4OV9yZmtfcmVwb3J0X25hbWVzW3Jma190eXBlXTtcXG4rXFx0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKndhaXQgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VyZmtfd2FpdDtcXG4rXFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IHdhaXQtXFx1MDAzZXJlY29yZF9wdHI7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBfX19fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIHJma19uYW1lLCBtcyk7XFxuK1xcbitcXHRpZiAocmVjb3JkKVxcbitcXHRcXHRyZWNvcmQtXFx1MDAzZXN0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LVxcdTAwM2VzdGF0ZTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKyNkZWZpbmUgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIHR5cGUsIHBoeV9pZHgsIGNoYW4sIG1zKSBcXFxcXFxuK1xcdF9fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFJUVzg5X1JGS19SRVBPUlRfICMjIHR5cGUsIHBoeV9pZHgsIGNoYW4sIG1zKVxcbitcXG4gc3RhdGljIHZvaWRcXG4gcnR3ODlfcGh5X2MyaF9yZmtfcmVwb3J0X3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKmMyaCwgdTMyIGxlbilcXG4ge1xcbkBAIC00MTIyLDcgKzQxNjIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19wcmVfbnRmeV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChSVFc4OV9DSEtfRldfRkVBVFVSRV9HUk9VUChXSVRIX1JGS19QUkVfTk9USUZZLCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VmdykpIHtcXG4gXFx0XFx0cnR3ODlfcGh5X3Jma19yZXBvcnRfcHJlcChydHdkZXYpO1xcbiBcXHRcXHRydHc4OV9md19oMmNfcmZfcHJlX250ZnkocnR3ZGV2LCBwaHlfaWR4KTtcXG4tXFx0XFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJQUkVfTlRGWVxcXCIsIG1zKTtcXG4rXFx0XFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFBSRV9OVEZZLCBwaHlfaWR4LCBOVUxMLCBtcyk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtNDE1Miw3ICs0MTkyLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHNzaV9hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJUU1NJXFxcIiwgbXMpO1xcbitcXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHNzaV9hbmRfd2FpdCk7XFxuIFxcbkBAIC00MTY5LDcgKzQyMDksNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19pcWtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcXFwiSVFLXFxcIiwgbXMpO1xcbitcXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIElRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19pcWtfYW5kX3dhaXQpO1xcbiBcXG5AQCAtNDE4Niw3ICs0MjI2LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfZHBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXFxcIkRQS1xcXCIsIG1zKTtcXG4rXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBEUEssIHBoeV9pZHgsIGNoYW4sIG1zKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfZHBrX2FuZF93YWl0KTtcXG4gXFxuQEAgLTQyMDMsNyArNDI0Myw3IEBAIGludCBydHc4OV9waHlfcmZrX3R4Z2Fwa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJUWEdBUEtcXFwiLCBtcyk7XFxuK1xcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3R4Z2Fwa19hbmRfd2FpdCk7XFxuIFxcbkBAIC00MjIwLDcgKzQyNjAsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kYWNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXFxcIkRBQ0tcXFwiLCBtcyk7XFxuK1xcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgREFDSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19kYWNrX2FuZF93YWl0KTtcXG4gXFxuQEAgLTQyMzcsNyArNDI3Nyw3IEBAIGludCBydHc4OV9waHlfcmZrX3J4ZGNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXFxcIlJYX0RDS1xcXCIsIG1zKTtcXG4rXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSWF9EQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQpO1xcbiBcXG5AQCAtNDI1NCw3ICs0Mjk0LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhpcWtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcXFwiVFhfSVFLXFxcIiwgbXMpO1xcbitcXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdCk7XFxuIFxcbkBAIC00MjcxLDcgKzQzMTEsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19jaW0za19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFxcXCJDSU0za1xcXCIsIG1zKTtcXG4rXFx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBDSU0zaywgcGh5X2lkeCwgY2hhbiwgbXMpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma19jaW0za19hbmRfd2FpdCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxcbmluZGV4IDUzMjIzMjg5MjgzMWYwLi4yNTU0MTZlYmFmOTAwOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuaFxcbkBAIC0xMTYzLDYgKzExNjMsOSBAQCB2b2lkIHJ0dzg5X3BoeV9yYXRlX3BhdHRlcm5fdmlmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gYm9vbCBydHc4OV9waHlfYzJoX2Noa19hdG9taWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjbGFzcywgdTggZnVuYyk7XFxuIHZvaWQgcnR3ODlfcGh5X2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKTtcXG4rXFxuK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdO1xcbitcXG4gaW50IHJ0dzg5X3BoeV9yZmtfcHJlX250ZnlfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgsXFxuIFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbXMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxcbmluZGV4IDA4NmVmNzdlYmI5ZmNkLi5hZjkxODEzNjdiMjI1ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaFxcbkBAIC04NzE4LDYgKzg3MTgsNyBAQFxcbiAjZGVmaW5lIFJSX1ZDTyAweGIyXFxuICNkZWZpbmUgUlJfVkNPX1ZBTCBHRU5NQVNLKDE4LCAxNClcXG4gI2RlZmluZSBSUl9WQ09fU0VMIEdFTk1BU0soOSwgOClcXG4rI2RlZmluZSBSUl9WQ09fU1RTIEdFTk1BU0soNywgMClcXG4gI2RlZmluZSBSUl9WQ0kgMHhiM1xcbiAjZGVmaW5lIFJSX1ZDSV9PTiBCSVQoNylcXG4gI2RlZmluZSBSUl9MUEYgMHhiN1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcXG5pbmRleCA2MGYzNjI1OTM2OTY2Zi4uMDNlMWQxZGY4NmIzMjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXFxuQEAgLTE5MTgsMTEgKzE5MTgsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUxYl9zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbiBcXHRcXHRcXHRcXHQgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxcbiB7XFxuLVxcdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cXHUwMDNlcmZlX3Bhcm1zO1xcbiBcXHR1OCBiYW5kID0gY2hhbi1cXHUwMDNlYmFuZF90eXBlO1xcbi1cXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcXG4tXFx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfQ0NLXVtyZWdkXTtcXG4tXFx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVxcdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xcbitcXHR1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTtcXG4rXFx0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcXG4gXFxuIFxcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXFxuIFxcdFxcdHJ0dzg4NTFiX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcXG5AQCAtMjc3OSw2ICsyNzc3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7XFxuICNlbmRpZlxcbiBcXHQueHRhbF9pbmZvXFx0XFx0PSBcXHUwMDI2cnR3ODg1MWJfeHRhbF9pbmZvLFxcbiBcXHQuZGVmYXVsdF9xdWlya3NcXHRcXHQ9IDAsXFxuK1xcdC50eHRpbWVfbGltaXRfMmdoelxcdD0gMCxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTChydHc4ODUxYl9jaGlwX2luZm8pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jXFxuaW5kZXggYTljMzA5YzI0NWMzMzQuLjNhNzMwYTgyNjk0OTgwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xcbkBAIC0xNDg4Niw4ICsxNDg4Niw4IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MWJfZGZsdF9wYXJtcyA9IHtcXG4gXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWcsXFxuIFxcdH0sXFxuIFxcdC50eF9zaGFwZSA9IHtcXG4tXFx0XFx0LmxtdCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXFxuLVxcdFxcdC5sbXRfcnUgPSBcXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxcbitcXHRcXHQubG10X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcXG4rXFx0XFx0LmxtdF9ydV92MCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbkBAIC0xNDkwMiw4ICsxNDkwMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTFiX3JmZV9wYXJtc190eXBlMiA9IHtcXG4gXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWdfdHlwZTIsXFxuIFxcdH0sXFxuIFxcdC50eF9zaGFwZSA9IHtcXG4tXFx0XFx0LmxtdCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXFxuLVxcdFxcdC5sbXRfcnUgPSBcXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxcbitcXHRcXHQubG10X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTFiX3R4X3NoYXBlX2xtdCxcXG4rXFx0XFx0LmxtdF9ydV92MCA9IFxcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXFxuIFxcdH0sXFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcXG5pbmRleCAyYzFmMTY2ZTY4N2YwNi4uNjc1NjRlNThkMTIzMzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXFxuQEAgLTI1MTYsNiArMjUxNiw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmFfY2hpcF9pbmZvID0ge1xcbiAjZW5kaWZcXG4gXFx0Lnh0YWxfaW5mb1xcdFxcdD0gXFx1MDAyNnJ0dzg4NTJhX3h0YWxfaW5mbyxcXG4gXFx0LmRlZmF1bHRfcXVpcmtzXFx0XFx0PSAwLFxcbitcXHQudHh0aW1lX2xpbWl0XzJnaHpcXHQ9IDAsXFxuIH07XFxuIEVYUE9SVF9TWU1CT0wocnR3ODg1MmFfY2hpcF9pbmZvKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xcbmluZGV4IDRlN2IwNjhhYWE3NWIxLi5iMGFjMjlkMWEwMWM3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcXG5AQCAtMTExMyw2ICsxMTEzLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYl9jaGlwX2luZm8gPSB7XFxuICNlbmRpZlxcbiBcXHQueHRhbF9pbmZvXFx0XFx0PSBOVUxMLFxcbiBcXHQuZGVmYXVsdF9xdWlya3NcXHRcXHQ9IDAsXFxuK1xcdC50eHRpbWVfbGltaXRfMmdoelxcdD0gMCxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYl9jaGlwX2luZm8pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcXG5pbmRleCBkZjVmYmFlNTBmZjU1MC4uYTYxYzY0ZmRmZjRkYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcXG5AQCAtMTMyMSwxMSArMTMyMSw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTJieF9zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4gXFx0XFx0XFx0XFx0ICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVxcdTAwM2VyZmVfcGFybXM7XFxuIFxcdHU4IGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuLVxcdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xcbi1cXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xcbi1cXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XFxuK1xcdHU4IHR4X3NoYXBlX2NjayA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19DQ0spO1xcbitcXHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcXG4gXFx0XFx0cnR3ODg1MmJ4X2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jXFxuaW5kZXggMDc5NDVkMDZkYzU5YzkuLjEzMzJkMWI5MjM1YWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xcbkBAIC0yMjkyMSw3ICsyMjkyMSw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmJfZGZsdF9wYXJtcyA9IHtcXG4gXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUyYl90eHB3cl9sbXRfcnVfNWcsXFxuIFxcdH0sXFxuIFxcdC50eF9zaGFwZSA9IHtcXG4tXFx0XFx0LmxtdCA9IFxcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXQsXFxuLVxcdFxcdC5sbXRfcnUgPSBcXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10X3J1LFxcbitcXHRcXHQubG10X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTJiX3R4X3NoYXBlX2xtdCxcXG4rXFx0XFx0LmxtdF9ydV92MCA9IFxcdTAwMjZydHc4OV84ODUyYl90eF9zaGFwZV9sbXRfcnUsXFxuIFxcdH0sXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXFxuaW5kZXggN2ZjYzg3N2Y2ZWEwYzQuLjRiZWE4NWI0Mjc4YjhjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXFxuQEAgLTk1MCw2ICs5NTAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJidF9jaGlwX2luZm8gPSB7XFxuICNlbmRpZlxcbiBcXHQueHRhbF9pbmZvXFx0XFx0PSBOVUxMLFxcbiBcXHQuZGVmYXVsdF9xdWlya3NcXHRcXHQ9IDAsXFxuK1xcdC50eHRpbWVfbGltaXRfMmdoelxcdD0gMCxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xcbmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcXG5AQCAtMjE5MywxMSArMjE5Myw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTJjX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVxcdTAwM2VyZmVfcGFybXM7XFxuIFxcdHU4IGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuLVxcdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xcbi1cXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xcbi1cXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXFx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XFxuK1xcdHU4IHR4X3NoYXBlX2NjayA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19DQ0spO1xcbitcXHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcXG4gXFx0XFx0cnR3ODg1MmNfYmJfc2V0X3R4X3NoYXBlX2RmaXIocnR3ZGV2LCBjaGFuLCB0eF9zaGFwZV9jY2ssIHBoeV9pZHgpO1xcbkBAIC0zMzE5LDYgKzMzMTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJjX2NoaXBfaW5mbyA9IHtcXG4gI2VuZGlmXFxuIFxcdC54dGFsX2luZm9cXHRcXHQ9IE5VTEwsXFxuIFxcdC5kZWZhdWx0X3F1aXJrc1xcdFxcdD0gMCxcXG4rXFx0LnR4dGltZV9saW1pdF8yZ2h6XFx0PSAwLFxcbiB9O1xcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJjX2NoaXBfaW5mbyk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmNcXG5pbmRleCAyNGMzOTBiNmYzZDM0NC4uYjcyZmVlMzc3ZTljMGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXFxuQEAgLTU3MTUzLDcgKzU3MTUzLDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUyY19kZmx0X3Bhcm1zID0ge1xcbiBcXHRcXHQubG10X3J1ID0gXFx1MDAyNnJ0dzg5Xzg4NTJjX3R4cHdyX2xtdF9ydV82ZyxcXG4gXFx0fSxcXG4gXFx0LnR4X3NoYXBlID0ge1xcbi1cXHRcXHQubG10ID0gXFx1MDAyNnJ0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdCxcXG4tXFx0XFx0LmxtdF9ydSA9IFxcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXFxuK1xcdFxcdC5sbXRfdjAgPSBcXHUwMDI2cnR3ODlfODg1MmNfdHhfc2hhcGVfbG10LFxcbitcXHRcXHQubG10X3J1X3YwID0gXFx1MDAyNnJ0dzg5Xzg4NTJjX3R4X3NoYXBlX2xtdF9ydSxcXG4gXFx0fSxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXFxuaW5kZXggYWQzNjE4ZGZkNTdkMDAuLjNlODcwODgwYjU5OGU4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xcbkBAIC0yNTAyLDE1ICsyNTAyLDEwIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJhX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVxcdTAwM2VyZmVfcGFybXM7XFxuLVxcdGNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSBcXHUwMDI2cmZlX3Bhcm1zLVxcdTAwM2V0eF9zaGFwZTtcXG4rXFx0dTggYmFuZCA9IGNoYW4tXFx1MDAzZWJhbmRfdHlwZTtcXG4gXFx0dTggdHhfc2hhcGVfaWR4O1xcbi1cXHR1OCBiYW5kLCByZWdkO1xcbi1cXG4tXFx0YmFuZCA9IGNoYW4tXFx1MDAzZWJhbmRfdHlwZTtcXG4tXFx0cmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XFxuLVxcdHR4X3NoYXBlX2lkeCA9ICgqdHhfc2hhcGUtXFx1MDAzZWxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XFxuIFxcbitcXHR0eF9zaGFwZV9pZHggPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XFxuIFxcdGlmICh0eF9zaGFwZV9pZHggPT0gMClcXG4gXFx0XFx0cnR3ODkyMmFfYmJfdHhfdHJpYW5ndWxhcihydHdkZXYsIGZhbHNlLCBwaHlfaWR4KTtcXG4gXFx0ZWxzZVxcbkBAIC0zMzAyLDYgKzMyOTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJhX2NoaXBfaW5mbyA9IHtcXG4gI2VuZGlmXFxuIFxcdC54dGFsX2luZm9cXHRcXHQ9IE5VTEwsXFxuIFxcdC5kZWZhdWx0X3F1aXJrc1xcdFxcdD0gMCxcXG4rXFx0LnR4dGltZV9saW1pdF8yZ2h6XFx0PSAwLFxcbiB9O1xcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5MjJhX2NoaXBfaW5mbyk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcXG5pbmRleCA4MzhjMjYyMzE4OTdkNi4uY2MxMjdhM2U4NmVmODggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXFxuQEAgLTExMzYsOCArMTEzNiwxMCBAQCBzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHR1MzIgc3ViX2NhcnIgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhfU1VCX0JBTkRfVkFMVUUsIG1hY19pZHgpO1xcbiBcXHR1MzIgY2hrX3JhdGUgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfVFhSQVRFX0NISywgbWFjX2lkeCk7XFxuIFxcdHUzMiByZl9tb2QgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfV01BQ19SRk1PRCwgbWFjX2lkeCk7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuIFxcdHU4IHR4c2IyMCA9IDAsIHR4c2I0MCA9IDAsIHR4c2I4MCA9IDA7XFxuIFxcdHU4IHJmX21vZF92YWwsIGNoa19yYXRlX21hc2ssIHNpZnM7XFxuK1xcdHUxNiB0eF90aW1lID0gQU1QRFVfTUFYX1RJTUVfVjE7XFxuIFxcdHUzMiB0eHNiO1xcbiBcXHR1MzIgcmVnO1xcbiBcXG5AQCAtMTIxOCw2ICsxMjIwLDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcbiBcXHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfTVVFRENBX0VOLCBtYWNfaWR4KTtcXG4gXFx0cnR3ODlfd3JpdGUzMl9tYXNrKHJ0d2RldiwgcmVnLCBCX0JFX1NJRlNfTUFDVFhFTl9UQl9UMV9ET1QwNVVTX01BU0ssIHNpZnMpO1xcbitcXG4rXFx0aWYgKGNoYW4tXFx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHIFxcdTAwMjZcXHUwMDI2IGNoaXAtXFx1MDAzZXR4dGltZV9saW1pdF8yZ2h6KVxcbitcXHRcXHR0eF90aW1lID0gbWluX3QodTMyLCB0eF90aW1lLCBjaGlwLVxcdTAwM2V0eHRpbWVfbGltaXRfMmdoeiAqIDEwMDAgXFx1MDAzZVxcdTAwM2UgMTUpO1xcbitcXG4rXFx0cmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX0FNUERVX0FHR19MSU1JVCwgbWFjX2lkeCk7XFxuK1xcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgQl9CRV9BTVBEVV9NQVhfVElNRV9NQVNLLCB0eF90aW1lKTtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9zY29fYmFya2VyX3RocmVzaG9sZFsxNF0gPSB7XFxuQEAgLTI3MzksMTYgKzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0ICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhICpkID0gcnR3ZGV2LVxcdTAwM2VwaHlfaW5mby5iYl93cmFwX2RhdGE7XFxuLVxcdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cXHUwMDNlcmZlX3Bhcm1zO1xcbi1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gXFx1MDAyNnJmZV9wYXJtcy1cXHUwMDNldHhfc2hhcGU7XFxuK1xcdHU4IGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuIFxcdHU4IHR4X3NoYXBlX2lkeDtcXG4tXFx0dTggYmFuZCwgcmVnZDtcXG4gXFx0Y29uc3QgdTE2ICp0aDtcXG4gXFxuLVxcdGJhbmQgPSBjaGFuLVxcdTAwM2ViYW5kX3R5cGU7XFxuLVxcdHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xcbi1cXHR0eF9zaGFwZV9pZHggPSAoKnR4X3NoYXBlLVxcdTAwM2VsbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xcbi1cXG4rXFx0dHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xcbiBcXHRpZiAodHhfc2hhcGVfaWR4ID09IDApXFxuIFxcdFxcdGdvdG8gZGlzYWJsZTtcXG4gXFxuQEAgLTM0MzcsNiArMzQ0MCw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmRfY2hpcF9pbmZvID0ge1xcbiAjZW5kaWZcXG4gXFx0Lnh0YWxfaW5mb1xcdFxcdD0gTlVMTCxcXG4gXFx0LmRlZmF1bHRfcXVpcmtzXFx0XFx0PSBCSVQoUlRXODlfUVVJUktfVEhFUk1BTF9QUk9UXzEyMEMpLFxcbitcXHQudHh0aW1lX2xpbWl0XzJnaHpcXHQ9IDQ2MDgsXFxuIH07XFxuIEVYUE9SVF9TWU1CT0wocnR3ODkyMmRfY2hpcF9pbmZvKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjQzLjY0NjE4Njc4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMDQ5ODUzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBydHc4OSB3aXJlbGVzcyBkcml2ZXIgKFJlYWx0ZWsgODAyLjExYXgvYmUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBmaXJtd2FyZSBlbXVsYXRpb24gKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIpIHRvIHBhc3MgdGhlIGluaXRpYWwgcHJvYmUgYW5kIHJlYWNoIHRoZSBjb3JlIGxvZ2ljIChNQUMvUEhZIGluaXRpYWxpemF0aW9uLCBSRiBjYWxpYnJhdGlvbiwgZXRjLikuIFRoZXJlZm9yZSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxOThjYTM0MWFhYzBkY2ZhMGVhNWExYjI3OWUzYzAxYTlkZTEzZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAxMjoyNjo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNcbmluZGV4IDY4ZGFkNjA5MGY4N2UyLi45Yjk2YjU3YmMzOWNkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTQ4Niw2ICs0ODYsMzcgQEAgdm9pZCBydHc4OV9jb3JlX3NldF9jaGlwX3R4cHdyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9fcnR3ODlfY29yZV9zZXRfY2hpcF90eHB3cihydHdkZXYsIGNvbmYuY2hhbnNbMV0sIFJUVzg5X1BIWV8xKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfcmVjb3JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbitcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbitcdFx0XHRcdCAgYm9vbCBzdGFydClcbit7XG4rXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqaW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbitcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaW5mby1cdTAwM2VyZWNvcmRfaWR4XTtcbitcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbitcdHU4IHBhdGhfbnVtID0gbWluKGNoaXAtXHUwMDNlcmZfcGF0aF9udW0sIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUik7XG4rXHRpbnQgcGF0aDtcbitcbitcdGlmICghc3RhcnQpXG4rXHRcdGdvdG8gZW5kO1xuK1xuK1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gcmVjb3JkO1xuK1x0cmVjb3JkLVx1MDAzZXBoeV9pZHggPSBydHd2aWZfbGluay1cdTAwM2VwaHlfaWR4O1xuK1xuK1x0Zm9yIChwYXRoID0gMDsgcGF0aCBcdTAwM2MgcGF0aF9udW07IHBhdGgrKykge1xuK1x0XHRyZWNvcmQtXHUwMDNlY2hbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfQ0ZHQ0gsXG4rXHRcdFx0XHRcdFx0IFJSX0NGR0NIX0JBTkQwIHwgUlJfQ0ZHQ0hfQ0gpO1xuK1x0XHRyZWNvcmQtXHUwMDNlY3ZbcGF0aF0gPSBydHc4OV9yZWFkX3JmKHJ0d2RldiwgcGF0aCwgUlJfVkNPLFxuK1x0XHRcdFx0XHRcdCBSUl9WQ09fU0VMIHwgUlJfVkNPX1NUUyk7XG4rXHRcdHJlY29yZC1cdTAwM2VjNVtwYXRoXSA9IHJ0dzg5X3JlYWRfcmYocnR3ZGV2LCBwYXRoLCBSUl9TWU5GQiwgUkZSRUdfTUFTSyk7XG4rXHR9XG4rXG4rXHRyZXR1cm47XG4rXG4rZW5kOlxuK1x0aW5mby1cdTAwM2VyZWNvcmRfaWR4ID0gKGluZm8tXHUwMDNlcmVjb3JkX2lkeCArIDEpICUgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SO1xuK1x0aW5mby1cdTAwM2VyZWNvcmRfcHRyID0gTlVMTDtcbit9XG4rXG4gdm9pZCBydHc4OV9jaGlwX3Jma19jaGFubmVsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHQgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcbiB7XG5AQCAtNTAzLDkgKzUzNCwxNCBAQCB2b2lkIHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRydHc4OV9zZXRfY2hhbm5lbChydHdkZXYpO1xuIFx0fVxuIFxuLVx0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZXJma19jaGFubmVsKVxuK1x0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZXJma19jaGFubmVsKSB7XG4rXHRcdHJ0dzg5X2NvcmVfcmZrX3JlY29yZChydHdkZXYsIHJ0d3ZpZl9saW5rLCB0cnVlKTtcbitcbiBcdFx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlcmZrX2NoYW5uZWwocnR3ZGV2LCBydHd2aWZfbGluayk7XG4gXG4rXHRcdHJ0dzg5X2NvcmVfcmZrX3JlY29yZChydHdkZXYsIHJ0d3ZpZl9saW5rLCBmYWxzZSk7XG4rXHR9XG4rXG4gXHRpZiAocHJlaGRsX2xpbmspIHtcbiBcdFx0cnR3ODlfZW50aXR5X2ZvcmNlX2h3KHJ0d2RldiwgUlRXODlfUEhZX05VTSk7XG4gXHRcdHJ0dzg5X3NldF9jaGFubmVsKHJ0d2Rldik7XG5AQCAtNTI2NSw2ICs1MzAxLDM3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2VudGVyX2xwc190cmFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3Rzc2lfcmVjb3JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4rXHR1OCBwYXRoX251bSA9IG1pbihjaGlwLVx1MDAzZXJmX3BhdGhfbnVtLCBSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlIpO1xuK1x0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlcmZrX3dhaXQ7XG4rXHRpbnQgaSA9IGluZm8tXHUwMDNlcmVjb3JkX3Rzc2lfaWR4O1xuK1x0dTMyIGJhc2U7XG4rXHR1MzIgbWFzaztcbitcdGludCBwYXRoO1xuK1xuK1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggPSAoaW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHggKyAxKSAlXG4rXHRcdFx0XHRSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7XG4rXG4rXHRpZiAoY2hpcC1cdTAwM2VjaGlwX2lkID09IFJUTDg5MjJBKSB7XG4rXHRcdGJhc2UgPSAweDJlZTEwO1xuK1x0XHRtYXNrID0gMHg3ZmMwMDtcbitcdH0gZWxzZSB7XG4rXHRcdGJhc2UgPSAweDJmOTE4O1xuK1x0XHRtYXNrID0gMHgwMDAwMDFmZjtcbitcdH1cbitcbitcdGZvciAocGF0aCA9IDA7IHBhdGggXHUwMDNjIHBhdGhfbnVtOyBwYXRoKyspIHtcbitcdFx0dTMyIGFkZHIgPSBiYXNlICsgMHgxMDAgKiBwYXRoO1xuK1xuK1x0XHRpbmZvLVx1MDAzZXRzc2lfY29kZVtpXVtwYXRoXSA9IHJ0dzg5X3JlYWQzMl9tYXNrKHJ0d2RldiwgYWRkciwgbWFzayk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcmZrX3RyYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRlbnVtIHJ0dzg5X2VudGl0eV9tb2RlIG1vZGU7XG5AQCAtNTI3NCw2ICs1MzQxLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9yZmtfdHJhY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRyZXR1cm47XG4gXG4gXHRydHc4OV9jaGlwX3Jma190cmFjayhydHdkZXYpO1xuK1xuK1x0cnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmQocnR3ZGV2KTtcbiB9XG4gXG4gdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9wMnBfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuQEAgLTcxODAsOSArNzI0OSwxOSBAQCBpbnQgcnR3ODlfY29yZV9tbHNyX3N3aXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZixcbiBzdGF0aWMgaW50IHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VtYWNfZGVmO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuK1x0Ym9vbCBiYl9wcmVpbml0ID0gZmFsc2U7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlKTtcbitcdC8qXG4rXHQgKiBOb3JtYWxseSBpbiBwcm9iZSBzdGFnZSwgd2UgZG9uJ3QgbmVlZCB0byBkbyBCQiBwcmUtaW5pdGlhbGl6YXRpb24uXG4rXHQgKiBIb3dldmVyLCBSVEw4OTIyRCBmaXJtd2FyZSBjYW4gYWNjZXNzIEJCIHJlZ2lzdGVycyBhdCBmaXJtd2FyZVxuK1x0ICogaW5pdGlhbCBzdGF0ZSwgc28gaW5pdGlhbGl6ZSBpdCB0byBhdm9pZCBCQiBJTyBzdHVjayBpbiBmaXJtd2FyZS5cbitcdCAqL1xuK1x0aWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyRClcbitcdFx0YmJfcHJlaW5pdCA9IHRydWU7XG4rXG4rXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgZmFsc2UsIGJiX3ByZWluaXQpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXG5pbmRleCA1NTQ3ODg4ZDdlNjdhNC4uMmVhY2I1ZmU5N2YyMDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcbkBAIC00Mjk0LDggKzQyOTQsMTIgQEAgc3RydWN0IHJ0dzg5X3R4cHdyX3J1bGVfNmdoeiB7XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUge1xuLVx0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbi1cdGNvbnN0IHU4ICgqbG10X3J1KVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuK1x0Y29uc3QgdTggKCpsbXQpW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXVxuK1x0XHQgICAgICAgW05VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUl07XG4rXHRjb25zdCB1OCAoKmxtdF9ydSlbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuK1xuK1x0Y29uc3QgdTggKCpsbXRfdjApW1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbitcdGNvbnN0IHU4ICgqbG10X3J1X3YwKVtSVFc4OV9CQU5EX05VTV1bUlRXODlfUkVHRF9OVU1dO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyB7XG5AQCAtNDM4OSwxMiArNDM5MywxMyBAQCBzdHJ1Y3QgcnR3ODlfdHhwd3JfbG10X3J1XzZnaHpfZGF0YSB7XG4gXG4gc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9kYXRhIHtcbiBcdHN0cnVjdCBydHc4OV90eHB3cl9jb25mIGNvbmY7XG4tXHR1OCB2W1JUVzg5X0JBTkRfTlVNXVtSVFc4OV9SU19UWF9TSEFQRV9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbitcdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JTX1RYX1NIQVBFX05VTV1bUlRXODlfUkVHRF9OVU1dXG4rXHQgICAgW05VTV9PRl9SVFc4OV9SRUdfNkdIWl9QT1dFUl07XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGVfbG10X3J1X2RhdGEge1xuIFx0c3RydWN0IHJ0dzg5X3R4cHdyX2NvbmYgY29uZjtcbi1cdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXTtcbitcdHU4IHZbUlRXODlfQkFORF9OVU1dW1JUVzg5X1JFR0RfTlVNXVtOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVJdO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X3JmZV9kYXRhIHtcbkBAIC00NzkwLDYgKzQ3OTUsNyBAQCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHtcbiBcdGNvbnN0IHN0cnVjdCB3aXBoeV93b3dsYW5fc3VwcG9ydCAqd293bGFuX3N0dWI7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfeHRhbF9pbmZvICp4dGFsX2luZm87XG4gXHR1bnNpZ25lZCBsb25nIGRlZmF1bHRfcXVpcmtzOyAvKiBiaXRtYXAgb2YgcnR3ODlfcXVpcmtzICovXG4rXHR1MTYgdHh0aW1lX2xpbWl0XzJnaHo7XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfY2hpcF92YXJpYW50IHtcbkBAIC01NDg0LDExICs1NDkwLDQzIEBAIGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSB7XG4gXHRSVFc4OV9SRktfU1RBVEVfSDJDX0NNRF9FUlIgPSAweDQsXG4gfTtcbiBcbitlbnVtIHJ0dzg5X3Jma19yZXBvcnRfdHlwZXMge1xuK1x0UlRXODlfUkZLX1JFUE9SVF9QUkVfTlRGWSxcbitcdFJUVzg5X1JGS19SRVBPUlRfVFNTSSxcbitcdFJUVzg5X1JGS19SRVBPUlRfSVFLLFxuK1x0UlRXODlfUkZLX1JFUE9SVF9EUEssXG4rXHRSVFc4OV9SRktfUkVQT1JUX1RYR0FQSyxcbitcdFJUVzg5X1JGS19SRVBPUlRfREFDSyxcbitcdFJUVzg5X1JGS19SRVBPUlRfUlhfRENLLFxuK1x0UlRXODlfUkZLX1JFUE9SVF9UWF9JUUssXG4rXHRSVFc4OV9SRktfUkVQT1JUX0NJTTNrLFxuK1xuK1x0TlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVMsXG4rfTtcbitcbisjZGVmaW5lIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUiAyXG4rI2RlZmluZSBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlIgMTBcbitcbitzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCB7XG4rXHR1MzIgY2hbUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SXTtcbitcdHUzMiBjdltSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdO1xuK1x0dTMyIGM1W1JUVzg5X1JGS19SRUNPUkRfUEFUSF9OUl07XG4rXHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeDtcbitcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSBzdGF0ZXNbTlVNX09GX1JUVzg5X1JGS19SRVBPUlRfVFlQRVNdO1xuK307XG4rXG4gc3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8ge1xuIFx0c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjtcbiBcdGt0aW1lX3Qgc3RhcnRfdGltZTtcbiBcdGVudW0gcnR3ODlfcmZrX3JlcG9ydF9zdGF0ZSBzdGF0ZTtcbiBcdHU4IHZlcnNpb247XG4rXG4rXHRpbnQgcmVjb3JkX2lkeDtcbitcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmRfcHRyO1xuK1x0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgcmVjb3Jkc1tSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlJdO1xuK1xuK1x0aW50IHJlY29yZF90c3NpX2lkeDtcbitcdHUzMiB0c3NpX2NvZGVbUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SXVtSVFc4OV9SRktfUkVDT1JEX1BBVEhfTlJdO1xuIH07XG4gXG4gI2RlZmluZSBSVFc4OV9EQUNLX1BBVEhfTlIgMlxuQEAgLTc1NjksOCArNzYwNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfY2hpcF9iYl9zZXRodyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFxuK1x0cnR3ODlfaW9fcGFjayhydHdkZXYpO1xuK1xuIFx0aWYgKGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJiX3NldGh3KVxuIFx0XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2ViYl9zZXRodyhydHdkZXYpO1xuK1xuK1x0cnR3ODlfaW9fdW5wYWNrKHJ0d2Rldik7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jaGlwX3Jma19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbkBAIC03Nzg3LDYgKzc4MjksMzAgQEAgc3RhdGljIGlubGluZSB1OCBydHc4OV9yZWdkX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJhbmQpXG4gXHRyZXR1cm4gdHhwd3JfcmVnZDtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB1OCBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmFuZCxcbitcdFx0XHRcdFx0ZW51bSBydHc4OV9yYXRlX3NlY3Rpb24gcnMpXG4re1xuK1x0c3RydWN0IHJ0dzg5X3JlZ3VsYXRvcnlfaW5mbyAqcmVndWxhdG9yeSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZWd1bGF0b3J5O1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbitcdGNvbnN0IHN0cnVjdCBydHc4OV90eF9zaGFwZSAqdHhfc2hhcGUgPSBcdTAwMjZyZmVfcGFybXMtXHUwMDNldHhfc2hhcGU7XG4rXHR1OCByZWc2X3B3ciA9IHJlZ3VsYXRvcnktXHUwMDNlcmVnXzZnaHpfcG93ZXI7XG4rXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcbitcbitcdGlmICh1bmxpa2VseShycyBcdTAwM2U9IFJUVzg5X1JTX1RYX1NIQVBFX05VTSkpXG4rXHRcdHJzID0gUlRXODlfUlNfT0ZETTtcbitcbitcdGlmICghdHhfc2hhcGUtXHUwMDNlbG10KVxuK1x0XHRnb3RvIHYwO1xuK1xuK1x0aWYgKGJhbmQgIT0gUlRXODlfQkFORF82RylcbitcdFx0cmVnNl9wd3IgPSBSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUO1xuK1xuK1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10KVtiYW5kXVtyc11bcmVnZF1bcmVnNl9wd3JdO1xuK1xuK3YwOlxuK1x0cmV0dXJuICgqdHhfc2hhcGUtXHUwMDNlbG10X3YwKVtiYW5kXVtyc11bcmVnZF07XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9jdHJsX2J0Z19idF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4sXG4gXHRcdFx0XHRcdGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2RlYnVnLmNcbmluZGV4IDhmNWFmODczZTA5ZjVlLi5jODEzOGM0MTE2YzIxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9kZWJ1Zy5jXG5AQCAtOTMsNiArOTMsNyBAQCBzdHJ1Y3QgcnR3ODlfZGVidWdmcyB7XG4gXHRzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2IGJlYWNvbl9pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiBkaWFnX21hYztcbiBcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19iYjtcbitcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgZGlhZ19yZjtcbiBcdHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgbW9uaXRvcl9vcHRzO1xuIH07XG4gXG5AQCAtNTM5Niw2ICs1Mzk3LDExOCBAQCBydHc4OV9kZWJ1Z19wcml2X2RpYWdfYmJfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdHJldHVybiBwIC0gYnVmO1xuIH1cbiBcbitzdGF0aWMgc3NpemVfdFxuK3J0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuK1x0XHRcdCAgICAgc3RydWN0IHJ0dzg5X2RlYnVnZnNfcHJpdiAqZGVidWdmc19wcml2LFxuK1x0XHRcdCAgICAgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4re1xuK1x0c3RydWN0IHJ0dzg5X3Jma193YWl0X2luZm8gKmluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlcmZrX3dhaXQ7XG4rXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XG4rXHRpbnQgaSwgajtcbitcbitcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiUkZLIChuZXh0IGluZGV4OiAlZClcXG5cIiwgaW5mby1cdTAwM2VyZWNvcmRfaWR4KTtcbitcbitcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICBQSFktWCAgICA9XCIpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpKyspIHtcbitcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbitcbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgJTRkIFwiLCByZWNvcmQtXHUwMDNlcGh5X2lkeCk7XG4rXHR9XG4rXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIlxcblwiKTtcbitcbitcdGZvciAoaiA9IDA7IGogXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfUEFUSF9OUjsgaisrKSB7XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICBTJWQtQ0ggICAgPVwiLCBqKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9ISVNUT1JZX05SOyBpKyspIHtcbitcdFx0XHRzdHJ1Y3QgcnR3ODlfcmZrX3JlY29yZCAqcmVjb3JkID0gXHUwMDI2aW5mby1cdTAwM2VyZWNvcmRzW2ldO1xuK1xuK1x0XHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICUwNXhcIiwgcmVjb3JkLVx1MDAzZWNoW2pdKTtcbitcdFx0fVxuK1x0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIlxcblwiKTtcbitcbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgIFMlZC1DViAgICA9XCIsIGopO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkrKykge1xuK1x0XHRcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSBcdTAwMjZpbmZvLVx1MDAzZXJlY29yZHNbaV07XG4rXG4rXHRcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgJTA1eFwiLCByZWNvcmQtXHUwMDNlY3Zbal0pO1xuK1x0XHR9XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiXFxuXCIpO1xuK1xuK1x0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAgUyVkLUM1ICAgID1cIiwgaik7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XG4rXHRcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbitcbitcdFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAlMDV4XCIsIHJlY29yZC1cdTAwM2VjNVtqXSk7XG4rXHRcdH1cbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCJcXG5cIik7XG4rXHR9XG4rXG4rXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBOVU1fT0ZfUlRXODlfUkZLX1JFUE9SVF9UWVBFUzsgaisrKSB7XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiICAlLThzID1cIiwgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tqXSk7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1JGS19SRUNPUkRfSElTVE9SWV9OUjsgaSsrKSB7XG4rXHRcdFx0c3RydWN0IHJ0dzg5X3Jma19yZWNvcmQgKnJlY29yZCA9IFx1MDAyNmluZm8tXHUwMDNlcmVjb3Jkc1tpXTtcbitcbitcdFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAlNGQgXCIsIHJlY29yZC1cdTAwM2VzdGF0ZXNbal0pO1xuK1x0XHR9XG4rXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwiXFxuXCIpO1xuK1x0fVxuK1xuK1x0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCJUU1NJLXRyYWNrIChuZXh0IGluZGV4OiAlZClcXG5cIiwgaW5mby1cdTAwM2VyZWNvcmRfdHNzaV9pZHgpO1xuK1xuK1x0Zm9yIChqID0gMDsgaiBcdTAwM2MgUlRXODlfUkZLX1JFQ09SRF9QQVRIX05SOyBqKyspIHtcbitcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIgIFMlZCAgICAgICA9XCIsIGopO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9SRktfUkVDT1JEX0hJU1RPUllfTlI7IGkrKylcbitcdFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiAgICUwM3hcIiwgaW5mby1cdTAwM2V0c3NpX2NvZGVbaV1bal0pO1xuK1x0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIlxcblwiKTtcbitcdH1cbitcbitcdHJldHVybiBwIC0gYnVmO1xuK31cbitcbitzdGF0aWMgdm9pZCBydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbit7XG4rXHRzdHJ1Y3QgcnR3ODlfZW50aXR5X21nbnQgKm1nbnQgPSBcdTAwMjZydHdkZXYtXHUwMDNlaGFsLmVudGl0eV9tZ250O1xuK1x0c3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaztcbitcdHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZjtcbitcdHVuc2lnbmVkIGludCBsaW5rX2lkO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShydHd2aWYsIFx1MDAyNm1nbnQtXHUwMDNlYWN0aXZlX2xpc3QsIG1nbnRfZW50cnkpXG4rXHRcdHJ0dzg5X3ZpZl9mb3JfZWFjaF9saW5rKHJ0d3ZpZiwgcnR3dmlmX2xpbmssIGxpbmtfaWQpXG4rXHRcdFx0cnR3ODlfY2hpcF9yZmtfY2hhbm5lbChydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbit9XG4rXG4rZW51bSBydHc4OV9kYmdfZGlhZ19yZl90eXBlIHtcbitcdFJUVzg5X0RCR19ESUFHX1JGX1JTVkQgPSAwLFxuK1x0UlRXODlfREJHX0RJQUdfUkZfUkZLID0gMSxcbit9O1xuK1xuK3N0YXRpYyBzc2l6ZV90XG4rcnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfZGVidWdmc19wcml2ICpkZWJ1Z2ZzX3ByaXYsXG4rXHRcdFx0ICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbit7XG4rXHR1OCB0eXBlO1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IGtzdHJ0b3U4KGJ1ZiwgMCwgXHUwMDI2dHlwZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGlmIChydHdkZXYtXHUwMDNlc2Nhbm5pbmcpXG4rXHRcdHJ0dzg5X2h3X3NjYW5fYWJvcnQocnR3ZGV2LCBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnNjYW5uaW5nX3ZpZik7XG4rXG4rXHRydHc4OV9sZWF2ZV9wc19tb2RlKHJ0d2Rldik7XG4rXG4rXHRzd2l0Y2ggKHR5cGUpIHtcbitcdGNhc2UgUlRXODlfREJHX0RJQUdfUkZfUkZLOlxuK1x0XHRydHc4OV9kYmdfZGlhZ19yZl9zZXRfcmZrKHJ0d2Rldik7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0cmV0dXJuIGNvdW50O1xuK31cbitcbiBzdGF0aWMgc3NpemVfdFxuIHJ0dzg5X2RlYnVnX3ByaXZfbW9uaXRvcl9vcHRzX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgIHN0cnVjdCBydHc4OV9kZWJ1Z2ZzX3ByaXYgKmRlYnVnZnNfcHJpdixcbkBAIC01NTA4LDYgKzU2MjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RlYnVnZnMgcnR3ODlfZGVidWdmc190ZW1wbCA9IHtcbiBcdC5iZWFjb25faW5mbyA9IHJ0dzg5X2RlYnVnX3ByaXZfZ2V0KGJlYWNvbl9pbmZvKSxcbiBcdC5kaWFnX21hYyA9IHJ0dzg5X2RlYnVnX3ByaXZfZ2V0KGRpYWdfbWFjLCBSU0laRV8xNkssIFJMT0NLKSxcbiBcdC5kaWFnX2JiID0gcnR3ODlfZGVidWdfcHJpdl9nZXQoZGlhZ19iYiwgUlNJWkVfOEssIFJMT0NLKSxcbitcdC5kaWFnX3JmID0gcnR3ODlfZGVidWdfcHJpdl9zZXRfYW5kX2dldChkaWFnX3JmLCBSV0xPQ0spLFxuIFx0Lm1vbml0b3Jfb3B0cyA9IHJ0dzg5X2RlYnVnX3ByaXZfc2V0X2FuZF9nZXQobW9uaXRvcl9vcHRzLCBSV0xPQ0spLFxuIH07XG4gXG5AQCAtNTU2NSw2ICs1Njc5LDcgQEAgdm9pZCBydHc4OV9kZWJ1Z2ZzX2FkZF9zZWMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BcbiBcdHJ0dzg5X2RlYnVnZnNfYWRkX3IoYmVhY29uX2luZm8pO1xuIFx0cnR3ODlfZGVidWdmc19hZGRfcihkaWFnX21hYyk7XG4gXHRydHc4OV9kZWJ1Z2ZzX2FkZF9yKGRpYWdfYmIpO1xuK1x0cnR3ODlfZGVidWdmc19hZGRfcncoZGlhZ19yZik7XG4gXHRydHc4OV9kZWJ1Z2ZzX2FkZF9ydyhtb25pdG9yX29wdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4wMGZlNDgwODkwNzFiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTkxNCwxMyArMTkxNCwxNCBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19wcm9nX2NudF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcbiBzdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbitcdGNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiAqbWFjID0gcnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlbWFjX2RlZjtcbiBcdHUzMiB2YWwzMjtcbiBcbiBcdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9XQ1BVX0ZXX0NUUkwpO1xuIFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3ZGwgMHgxRTAgPSAweCV4XFxuXCIsIHZhbDMyKTtcbiBcbi1cdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CT09UX0RCRyk7XG4tXHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdZndkbCAweDgzRjAgPSAweCV4XFxuXCIsIHZhbDMyKTtcbitcdHZhbDMyID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgbWFjLVx1MDAzZWJvb3RfZGJnKTtcbitcdHJ0dzg5X2VycihydHdkZXYsIFwiW0VSUl1md2RsIDB4JXggPSAweCV4XFxuXCIsIG1hYy1cdTAwM2Vib290X2RiZywgdmFsMzIpO1xuIFxuIFx0cnR3ODlfZndfcHJvZ19jbnRfZHVtcChydHdkZXYpO1xuIH1cbkBAIC0xMTMyNSw2ICsxMTMyNiwxMiBAQCBmd190eF9zaGFwZV9sbXRfZW50cnlfdmFsaWQoY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9lbnRyeSAqZSxcbiBcdGlmIChlLVx1MDAzZXJlZ2QgXHUwMDNlPSBSVFc4OV9SRUdEX05VTSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuK1x0LyogZW5zdXJlIGNvbXBhdGliaWxpdHkgd29yayB3aXRoIDIvNSBHSHogKi9cbitcdHN0YXRpY19hc3NlcnQoUlRXODlfUkVHXzZHSFpfUE9XRVJfREZMVCA9PSAwKTtcbitcbitcdGlmIChlLVx1MDAzZXJlZzZfcHdyIFx1MDAzZT0gTlVNX09GX1JUVzg5X1JFR182R0haX1BPV0VSKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG5AQCAtMTEzMzksNyArMTEzNDYsNyBAQCB2b2lkIHJ0dzg5X2Z3X2xvYWRfdHhfc2hhcGVfbG10KHN0cnVjdCBydHc4OV90eF9zaGFwZV9sbXRfZGF0YSAqZGF0YSlcbiBcdFx0aWYgKCFmd190eF9zaGFwZV9sbXRfZW50cnlfdmFsaWQoXHUwMDI2ZW50cnksIGN1cnNvciwgY29uZikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdGRhdGEtXHUwMDNldltlbnRyeS5iYW5kXVtlbnRyeS50eF9zaGFwZV9yc11bZW50cnkucmVnZF0gPSBlbnRyeS52O1xuK1x0XHRkYXRhLVx1MDAzZXZbZW50cnkuYmFuZF1bZW50cnkudHhfc2hhcGVfcnNdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuQEAgLTExMzU2LDYgKzExMzYzLDEyIEBAIGZ3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeV92YWxpZChjb25zdCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X3J1X2VudHJ5ICplLFxuIFx0aWYgKGUtXHUwMDNlcmVnZCBcdTAwM2U9IFJUVzg5X1JFR0RfTlVNKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4rXHQvKiBlbnN1cmUgY29tcGF0aWJpbGl0eSB3b3JrIHdpdGggMi81IEdIeiAqL1xuK1x0c3RhdGljX2Fzc2VydChSVFc4OV9SRUdfNkdIWl9QT1dFUl9ERkxUID09IDApO1xuK1xuK1x0aWYgKGUtXHUwMDNlcmVnNl9wd3IgXHUwMDNlPSBOVU1fT0ZfUlRXODlfUkVHXzZHSFpfUE9XRVIpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbkBAIC0xMTM3MCw3ICsxMTM4Myw3IEBAIHZvaWQgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXRfcnUoc3RydWN0IHJ0dzg5X3R4X3NoYXBlX2xtdF9ydV9kYXRhICpkYXRhKVxuIFx0XHRpZiAoIWZ3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeV92YWxpZChcdTAwMjZlbnRyeSwgY3Vyc29yLCBjb25mKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdID0gZW50cnkudjtcbitcdFx0ZGF0YS1cdTAwM2V2W2VudHJ5LmJhbmRdW2VudHJ5LnJlZ2RdW2VudHJ5LnJlZzZfcHdyXSA9IGVudHJ5LnY7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLmU3NmNlYTBiOWQ0MzE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC01ODE0LDYgKzU4MTQsNyBAQCBzdHJ1Y3QgcnR3ODlfZndfdHhfc2hhcGVfbG10X2VudHJ5IHtcbiBcdHU4IHR4X3NoYXBlX3JzO1xuIFx0dTggcmVnZDtcbiBcdHU4IHY7XG4rXHR1OCByZWc2X3B3cjtcbiB9IF9fcGFja2VkO1xuIFxuIC8qIG11c3QgY29uc2lkZXIgY29tcGF0aWJpbGl0eTsgZG9uJ3QgaW5zZXJ0IG5ldyBpbiB0aGUgbWlkICovXG5AQCAtNTgyMSw2ICs1ODIyLDcgQEAgc3RydWN0IHJ0dzg5X2Z3X3R4X3NoYXBlX2xtdF9ydV9lbnRyeSB7XG4gXHR1OCBiYW5kO1xuIFx0dTggcmVnZDtcbiBcdHU4IHY7XG4rXHR1OCByZWc2X3B3cjtcbiB9IF9fcGFja2VkO1xuIFxuIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXG5pbmRleCA4YzM5NTUxN2JkMmZlMS4uZTIwNDkzNDFjNDE1NDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jXG5AQCAtNDMwNCwxMyArNDMwNCwxNCBAQCBpbnQgcnR3ODlfbWFjX2Rpc2FibGVfYmJfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcbiBcbi1pbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYilcbitpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcbitcdFx0XHQgICBib29sIGJiX3ByZWluaXQpXG4ge1xuIFx0aW50IHJldDtcbiBcbiBcdHJ0dzg5X21hY19jdHJsX2hjaV9kbWFfdHJ4KHJ0d2RldiwgdHJ1ZSk7XG4gXG4tXHRpZiAoaW5jbHVkZV9iYikge1xuK1x0aWYgKGluY2x1ZGVfYmIgfHwgYmJfcHJlaW5pdCkge1xuIFx0XHQvKiBPbmx5IGNhbGwgQkIgcHJlaW5pdCBpbmNsdWRpbmcgY29uZmlndXJhdGlvbiBvZiBCQiBNQ1UgZm9yXG4gXHRcdCAqIHRoZSBjaGlwcyB3aGljaCBuZWVkIHRvIGRvd25sb2FkIEJCIE1DVSBmaXJtd2FyZS4gT3RoZXJ3aXNlLFxuIFx0XHQgKiBjYWxsaW5nIHByZWluaXQgbGF0ZXIgdG8gcHJldmVudCB0b3VjaGluZyByZWdpc3RlcnMgYWZmZWN0aW5nXG5AQCAtNDM2Myw3ICs0MzY0LDcgQEAgaW50IHJ0dzg5X21hY19pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdGJvb2wgaW5jbHVkZV9iYiA9ICEhY2hpcC1cdTAwM2ViYm1jdV9ucjtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgaW5jbHVkZV9iYik7XG4rXHRyZXQgPSBydHc4OV9tYWNfcGFydGlhbF9pbml0KHJ0d2RldiwgaW5jbHVkZV9iYiwgaW5jbHVkZV9iYik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGZhaWw7XG4gXG5AQCAtNzA0MywxMSArNzA0NCwyMyBAQCBfX3J0dzg5X21hY19zZXRfdHhfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9zdGFfbGluayAqcnR3c3RhX1xuIHtcbiAjZGVmaW5lIE1BQ19BWF9ERkxUX1RYX1RJTUUgNTI4MFxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmICptYWMgPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VtYWNfZGVmO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0dTggbWFjX2lkeCA9IHJ0d3N0YV9saW5rLVx1MDAzZXJ0d3ZpZl9saW5rLVx1MDAzZW1hY19pZHg7XG4gXHR1MzIgbWF4X3R4X3RpbWUgPSB0eF90aW1lID09IDAgPyBNQUNfQVhfREZMVF9UWF9USU1FIDogdHhfdGltZTtcbitcdHN0cnVjdCBydHc4OV9lbnRpdHlfY29uZiBjb25mO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW47XG4gXHR1MzIgcmVnO1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHRpZiAoY2hpcC1cdTAwM2V0eHRpbWVfbGltaXRfMmdoeikge1xuK1x0XHRydHc4OV9lbnRpdHlfZ2V0X2NvbmYocnR3ZGV2LCBcdTAwMjZjb25mKTtcbitcdFx0Y2hhbiA9IGNvbmYuY2hhbnNbbWFjX2lkeF07XG4rXG4rXHRcdGlmIChjaGFuLVx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHKVxuK1x0XHRcdG1heF90eF90aW1lID0gbWluX3QodTMyLCBtYXhfdHhfdGltZSxcbitcdFx0XHRcdFx0ICAgIGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHopO1xuK1x0fVxuK1xuIFx0aWYgKHJ0d3N0YV9saW5rLVx1MDAzZWNjdGxfdHhfdGltZSkge1xuIFx0XHRydHdzdGFfbGluay1cdTAwM2VhbXBkdV9tYXhfdGltZSA9IChtYXhfdHhfdGltZSAtIDUxMikgXHUwMDNlXHUwMDNlIDk7XG4gXHRcdHJldCA9IHJ0dzg5X2NoaXBfaDJjX3R4dGltZV9jbWFjX3RibChydHdkZXYsIHJ0d3N0YV9saW5rKTtcbkBAIC03MDU4LDkgKzcwNzEsMTMgQEAgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfc3RhX2xpbmsgKnJ0d3N0YV9cbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXG4rXHRcdGlmIChjaGlwLVx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXG4rXHRcdFx0bWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlPSA1O1xuK1x0XHRlbHNlXG4rXHRcdFx0bWF4X3R4X3RpbWUgPSBtYXhfdHhfdGltZSAqIDEwMDAgXHUwMDNlXHUwMDNlIDE1O1xuK1xuIFx0XHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIG1hYy1cdTAwM2VhZ2dfbGltaXQuYWRkciwgbWFjX2lkeCk7XG4tXHRcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgbWFjLVx1MDAzZWFnZ19saW1pdC5tYXNrLFxuLVx0XHRcdFx0ICAgbWF4X3R4X3RpbWUgXHUwMDNlXHUwMDNlIDUpO1xuK1x0XHRydHc4OV93cml0ZTMyX21hc2socnR3ZGV2LCByZWcsIG1hYy1cdTAwM2VhZ2dfbGltaXQubWFzaywgbWF4X3R4X3RpbWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC03NDM4LDYgKzc0NTUsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9heCA9IHtcbiBcdC5hZ2dfbGVuX2h0ID0gUl9BWF9BR0dfTEVOX0hUXzAsXG4gXHQucHNfc3RhdHVzID0gUl9BWF9QUFdSQklUX1NFVFRJTkcsXG4gXHQubXVfZ2lkID0gXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2F4LFxuK1x0LmJvb3RfZGJnID0gUl9BWF9CT09UX0RCRyxcbiBcbiBcdC5tdWVkY2FfY3RybCA9IHtcbiBcdFx0LmFkZHIgPSBSX0FYX01VRURDQV9FTixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuaW5kZXggNTM5MDYxZmMxNWU4NWIuLjk0Njc4YTI2MmUxNjRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaFxuQEAgLTEwNjcsNiArMTA2Nyw3IEBAIHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiB7XG4gXHR1MzIgYWdnX2xlbl9odDtcbiBcdHUzMiBwc19zdGF0dXM7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX211X2dpZF9hZGRyICptdV9naWQ7XG4rXHR1MzIgYm9vdF9kYmc7XG4gXG4gXHRzdHJ1Y3QgcnR3ODlfcmVnX2RlZiBtdWVkY2FfY3RybDtcbiBcdHN0cnVjdCBydHc4OV9yZWdfZGVmIGJmZWVfY3RybDtcbkBAIC0xMjk4LDcgKzEyOTksOCBAQCBydHc4OV93cml0ZTMyX3BvcnRfc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbFxuIFxuIGludCBydHc4OV9tYWNfcHdyX29uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4gdm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiKTtcbitpbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcbitcdFx0XHQgICBib29sIGJiX3ByZWluaXQpO1xuIGludCBydHc4OV9tYWNfcHJlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuIGludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuIGludCBydHc4OV9tYWNfZGxlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X3F0YV9tb2RlIG1vZGUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcbmluZGV4IGYyNGMxMTliOTlmMWJkLi4yNDIwMDZjZWZjM2UxYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmNcbkBAIC0zMjQyLDYgKzMyNDIsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfbWFjX2dlbl9kZWYgcnR3ODlfbWFjX2dlbl9iZSA9IHtcbiBcdC5hZ2dfbGVuX2h0ID0gUl9CRV9BR0dfTEVOX0hUXzAsXG4gXHQucHNfc3RhdHVzID0gUl9CRV9XTVRYX1BPV0VSX0JFX0JJVF9DVEwsXG4gXHQubXVfZ2lkID0gXHUwMDI2cnR3ODlfbWFjX211X2dpZF9hZGRyX2JlLFxuK1x0LmJvb3RfZGJnID0gUl9CRV9CT09UX0RCRyxcbiBcbiBcdC5tdWVkY2FfY3RybCA9IHtcbiBcdFx0LmFkZHIgPSBSX0JFX01VRURDQV9FTixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xuaW5kZXggNzU5YmU0ZGFiNDJiMWMuLjZkZWUzOWY1M2RmMGU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuY1xuQEAgLTM5NjgsNiArMzk2OCwyMyBAQCB2b2lkICgqIGNvbnN0IHJ0dzg5X3BoeV9jMmhfcmZrX2xvZ19oYW5kbGVyW10pKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFtSVFc4OV9QSFlfQzJIX1JGS19MT0dfRlVOQ19DSU0zS10gPSBydHc4OV9waHlfYzJoX3Jma19sb2dfY2ltM2ssXG4gfTtcbiBcbisjZGVmaW5lIE5BTUVfUlRXODlfUkZLX1JFUE9SVCh0eXBlKSBcXFxuK1x0W1JUVzg5X1JGS19SRVBPUlRfICMjIHR5cGVdID0gI3R5cGVcbitcbitjb25zdCBjaGFyICogY29uc3QgcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tdID0ge1xuK1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFBSRV9OVEZZKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChUU1NJKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChJUUspLFxuK1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKERQSyksXG4rXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoVFhHQVBLKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChEQUNLKSxcbitcdE5BTUVfUlRXODlfUkZLX1JFUE9SVChSWF9EQ0spLFxuK1x0TkFNRV9SVFc4OV9SRktfUkVQT1JUKFRYX0lRSyksXG4rXHROQU1FX1JUVzg5X1JGS19SRVBPUlQoQ0lNM2spLFxuK307XG4rXG4rc3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0dzg5X3Jma19yZXBvcnRfbmFtZXMpID09IE5VTV9PRl9SVFc4OV9SRktfUkVQT1JUX1RZUEVTKTtcbitcbiBzdGF0aWNcbiB2b2lkIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbkBAIC0zOTc5LDggKzM5OTYsOCBAQCB2b2lkIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIH1cbiBcbiBzdGF0aWNcbi1pbnQgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKnJma19uYW1lLFxuLVx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBtcylcbitpbnQgX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBjaGFyICpyZmtfbmFtZSxcbitcdFx0XHRcdCAgdW5zaWduZWQgaW50IG1zKVxuIHtcbiBcdHN0cnVjdCBydHc4OV9yZmtfd2FpdF9pbmZvICp3YWl0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXJma193YWl0O1xuIFx0dW5zaWduZWQgbG9uZyB0aW1lX2xlZnQ7XG5AQCAtNDAxNyw2ICs0MDM0LDI5IEBAIGludCBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqcmZrX25hbWUsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljXG4raW50IF9fcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4rXHRcdFx0XHRlbnVtIHJ0dzg5X3Jma19yZXBvcnRfdHlwZXMgcmZrX3R5cGUsXG4rXHRcdFx0XHRlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeCxcbitcdFx0XHRcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuK1x0XHRcdFx0dW5zaWduZWQgaW50IG1zKVxuK3tcbitcdGNvbnN0IGNoYXIgKnJma19uYW1lID0gcnR3ODlfcmZrX3JlcG9ydF9uYW1lc1tyZmtfdHlwZV07XG4rXHRzdHJ1Y3QgcnR3ODlfcmZrX3dhaXRfaW5mbyAqd2FpdCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VyZmtfd2FpdDtcbitcdHN0cnVjdCBydHc4OV9yZmtfcmVjb3JkICpyZWNvcmQgPSB3YWl0LVx1MDAzZXJlY29yZF9wdHI7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gX19fX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCByZmtfbmFtZSwgbXMpO1xuK1xuK1x0aWYgKHJlY29yZClcbitcdFx0cmVjb3JkLVx1MDAzZXN0YXRlc1tyZmtfdHlwZV0gPSB3YWl0LVx1MDAzZXN0YXRlO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rI2RlZmluZSBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgdHlwZSwgcGh5X2lkeCwgY2hhbiwgbXMpIFxcXG4rXHRfX3J0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSVFc4OV9SRktfUkVQT1JUXyAjIyB0eXBlLCBwaHlfaWR4LCBjaGFuLCBtcylcbitcbiBzdGF0aWMgdm9pZFxuIHJ0dzg5X3BoeV9jMmhfcmZrX3JlcG9ydF9zdGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpjMmgsIHUzMiBsZW4pXG4ge1xuQEAgLTQxMjIsNyArNDE2Miw3IEBAIGludCBydHc4OV9waHlfcmZrX3ByZV9udGZ5X2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChSVFc4OV9DSEtfRldfRkVBVFVSRV9HUk9VUChXSVRIX1JGS19QUkVfTk9USUZZLCBcdTAwMjZydHdkZXYtXHUwMDNlZncpKSB7XG4gXHRcdHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3ByZXAocnR3ZGV2KTtcbiBcdFx0cnR3ODlfZndfaDJjX3JmX3ByZV9udGZ5KHJ0d2RldiwgcGh5X2lkeCk7XG4tXHRcdHJldCA9IHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcIlBSRV9OVEZZXCIsIG1zKTtcbitcdFx0cmV0ID0gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFBSRV9OVEZZLCBwaHlfaWR4LCBOVUxMLCBtcyk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC00MTUyLDcgKzQxOTIsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190c3NpX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwiVFNTSVwiLCBtcyk7XG4rXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRTU0ksIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3Rzc2lfYW5kX3dhaXQpO1xuIFxuQEAgLTQxNjksNyArNDIwOSw3IEBAIGludCBydHc4OV9waHlfcmZrX2lxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcIklRS1wiLCBtcyk7XG4rXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIElRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfaXFrX2FuZF93YWl0KTtcbiBcbkBAIC00MTg2LDcgKzQyMjYsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma19kcGtfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCJEUEtcIiwgbXMpO1xuK1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBEUEssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX2Rwa19hbmRfd2FpdCk7XG4gXG5AQCAtNDIwMyw3ICs0MjQzLDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfdHhnYXBrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwiVFhHQVBLXCIsIG1zKTtcbitcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgVFhHQVBLLCBwaHlfaWR4LCBjaGFuLCBtcyk7XG4gfVxuIEVYUE9SVF9TWU1CT0wocnR3ODlfcGh5X3Jma190eGdhcGtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyMjAsNyArNDI2MCw3IEBAIGludCBydHc4OV9waHlfcmZrX2RhY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCJEQUNLXCIsIG1zKTtcbitcdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgREFDSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfZGFja19hbmRfd2FpdCk7XG4gXG5AQCAtNDIzNyw3ICs0Mjc3LDcgQEAgaW50IHJ0dzg5X3BoeV9yZmtfcnhkY2tfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHJldHVybiBydHc4OV9waHlfcmZrX3JlcG9ydF93YWl0KHJ0d2RldiwgXCJSWF9EQ0tcIiwgbXMpO1xuK1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBSWF9EQ0ssIHBoeV9pZHgsIGNoYW4sIG1zKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChydHc4OV9waHlfcmZrX3J4ZGNrX2FuZF93YWl0KTtcbiBcbkBAIC00MjU0LDcgKzQyOTQsNyBAQCBpbnQgcnR3ODlfcGh5X3Jma190eGlxa19hbmRfd2FpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBcIlRYX0lRS1wiLCBtcyk7XG4rXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFRYX0lRSywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfdHhpcWtfYW5kX3dhaXQpO1xuIFxuQEAgLTQyNzEsNyArNDMxMSw3IEBAIGludCBydHc4OV9waHlfcmZrX2NpbTNrX2FuZF93YWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXR1cm4gcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdChydHdkZXYsIFwiQ0lNM2tcIiwgbXMpO1xuK1x0cmV0dXJuIHJ0dzg5X3BoeV9yZmtfcmVwb3J0X3dhaXQocnR3ZGV2LCBDSU0zaywgcGh5X2lkeCwgY2hhbiwgbXMpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0dzg5X3BoeV9yZmtfY2ltM2tfYW5kX3dhaXQpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXG5pbmRleCA1MzIyMzI4OTI4MzFmMC4uMjU1NDE2ZWJhZjkwMDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5oXG5AQCAtMTE2Myw2ICsxMTYzLDkgQEAgdm9pZCBydHc4OV9waHlfcmF0ZV9wYXR0ZXJuX3ZpZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gYm9vbCBydHc4OV9waHlfYzJoX2Noa19hdG9taWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjbGFzcywgdTggZnVuYyk7XG4gdm9pZCBydHc4OV9waHlfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICB1MzIgbGVuLCB1OCBjbGFzcywgdTggZnVuYyk7XG4rXG4rZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBydHc4OV9yZmtfcmVwb3J0X25hbWVzW107XG4rXG4gaW50IHJ0dzg5X3BoeV9yZmtfcHJlX250ZnlfYW5kX3dhaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4LFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBtcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmhcbmluZGV4IDA4NmVmNzdlYmI5ZmNkLi5hZjkxODEzNjdiMjI1ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmhcbkBAIC04NzE4LDYgKzg3MTgsNyBAQFxuICNkZWZpbmUgUlJfVkNPIDB4YjJcbiAjZGVmaW5lIFJSX1ZDT19WQUwgR0VOTUFTSygxOCwgMTQpXG4gI2RlZmluZSBSUl9WQ09fU0VMIEdFTk1BU0soOSwgOClcbisjZGVmaW5lIFJSX1ZDT19TVFMgR0VOTUFTSyg3LCAwKVxuICNkZWZpbmUgUlJfVkNJIDB4YjNcbiAjZGVmaW5lIFJSX1ZDSV9PTiBCSVQoNylcbiAjZGVmaW5lIFJSX0xQRiAweGI3XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXG5pbmRleCA2MGYzNjI1OTM2OTY2Zi4uMDNlMWQxZGY4NmIzMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuY1xuQEAgLTE5MTgsMTEgKzE5MTgsOSBAQCBzdGF0aWMgdm9pZCBydHc4ODUxYl9zZXRfdHhfc2hhcGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyAqcmZlX3Bhcm1zID0gcnR3ZGV2LVx1MDAzZXJmZV9wYXJtcztcbiBcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHU4IHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dTggdHhfc2hhcGVfY2NrID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19DQ0tdW3JlZ2RdO1xuLVx0dTggdHhfc2hhcGVfb2ZkbSA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4rXHR1OCB0eF9zaGFwZV9jY2sgPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfQ0NLKTtcbitcdHU4IHR4X3NoYXBlX29mZG0gPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XG4gXG4gXHRpZiAoYmFuZCA9PSBSVFc4OV9CQU5EXzJHKVxuIFx0XHRydHc4ODUxYl9iYl9zZXRfdHhfc2hhcGVfZGZpcihydHdkZXYsIGNoYW4sIHR4X3NoYXBlX2NjaywgcGh5X2lkeCk7XG5AQCAtMjc3OSw2ICsyNzc3LDcgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7XG4gI2VuZGlmXG4gXHQueHRhbF9pbmZvXHRcdD0gXHUwMDI2cnR3ODg1MWJfeHRhbF9pbmZvLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUxYl9jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJfdGFibGUuY1xuaW5kZXggYTljMzA5YzI0NWMzMzQuLjNhNzMwYTgyNjk0OTgwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYl90YWJsZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiX3RhYmxlLmNcbkBAIC0xNDg4Niw4ICsxNDg4Niw4IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MWJfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTFiX3R4cHdyX2xtdF9ydV81ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXG4rXHRcdC5sbXRfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXQsXG4rXHRcdC5sbXRfcnVfdjAgPSBcdTAwMjZydHc4OV84ODUxYl90eF9zaGFwZV9sbXRfcnUsXG4gXHR9LFxuIH07XG4gXG5AQCAtMTQ5MDIsOCArMTQ5MDIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3JmZV9wYXJtcyBydHc4OV84ODUxYl9yZmVfcGFybXNfdHlwZTIgPSB7XG4gXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUxYl90eHB3cl9sbXRfcnVfNWdfdHlwZTIsXG4gXHR9LFxuIFx0LnR4X3NoYXBlID0ge1xuLVx0XHQubG10ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LFxuLVx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuK1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10LFxuK1x0XHQubG10X3J1X3YwID0gXHUwMDI2cnR3ODlfODg1MWJfdHhfc2hhcGVfbG10X3J1LFxuIFx0fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xuaW5kZXggMmMxZjE2NmU2ODdmMDYuLjY3NTY0ZTU4ZDEyMzM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcbkBAIC0yNTE2LDYgKzI1MTYsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJhX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBcdTAwMjZydHc4ODUyYV94dGFsX2luZm8sXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuK1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJhX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jXG5pbmRleCA0ZTdiMDY4YWFhNzViMS4uYjBhYzI5ZDFhMDFjNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xuQEAgLTExMTMsNiArMTExMyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuK1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg4NTJiX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcbmluZGV4IGRmNWZiYWU1MGZmNTUwLi5hNjFjNjRmZGZmNGRjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfY29tbW9uLmNcbkBAIC0xMzIxLDExICsxMzIxLDkgQEAgc3RhdGljIHZvaWQgcnR3ODg1MmJ4X3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbiBcdFx0XHRcdCAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4gXHR1OCBiYW5kID0gY2hhbi1cdTAwM2ViYW5kX3R5cGU7XG4tXHR1OCByZWdkID0gcnR3ODlfcmVnZF9nZXQocnR3ZGV2LCBiYW5kKTtcbi1cdHU4IHR4X3NoYXBlX2NjayA9ICgqcmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlLmxtdClbYmFuZF1bUlRXODlfUlNfQ0NLXVtyZWdkXTtcbi1cdHU4IHR4X3NoYXBlX29mZG0gPSAoKnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xuK1x0dTggdHhfc2hhcGVfY2NrID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX0NDSyk7XG4rXHR1OCB0eF9zaGFwZV9vZmRtID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xuIFxuIFx0aWYgKGJhbmQgPT0gUlRXODlfQkFORF8yRylcbiBcdFx0cnR3ODg1MmJ4X2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiX3RhYmxlLmNcbmluZGV4IDA3OTQ1ZDA2ZGM1OWM5Li4xMzMyZDFiOTIzNWFlZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJfdGFibGUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYl90YWJsZS5jXG5AQCAtMjI5MjEsNyArMjI5MjEsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zIHJ0dzg5Xzg4NTJiX2RmbHRfcGFybXMgPSB7XG4gXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyYl90eHB3cl9sbXRfcnVfNWcsXG4gXHR9LFxuIFx0LnR4X3NoYXBlID0ge1xuLVx0XHQubG10ID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LFxuLVx0XHQubG10X3J1ID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10X3J1LFxuK1x0XHQubG10X3YwID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10LFxuK1x0XHQubG10X3J1X3YwID0gXHUwMDI2cnR3ODlfODg1MmJfdHhfc2hhcGVfbG10X3J1LFxuIFx0fSxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5pbmRleCA3ZmNjODc3ZjZlYTBjNC4uNGJlYTg1YjQyNzhiOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5AQCAtOTUwLDYgKzk1MCw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJ0X2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyYnRfY2hpcF9pbmZvKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcbmluZGV4IDgwODIxODg1YjA4ZTA2Li5jM2RlMGE5MzI2YjNjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXG5AQCAtMjE5MywxMSArMjE5Myw5IEBAIHN0YXRpYyB2b2lkIHJ0dzg4NTJjX3NldF90eF9zaGFwZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuIFx0XHRcdFx0ICBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuIFx0dTggYmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuLVx0dTggcmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4tXHR1OCB0eF9zaGFwZV9jY2sgPSAoKnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZS5sbXQpW2JhbmRdW1JUVzg5X1JTX0NDS11bcmVnZF07XG4tXHR1OCB0eF9zaGFwZV9vZmRtID0gKCpyZmVfcGFybXMtXHUwMDNldHhfc2hhcGUubG10KVtiYW5kXVtSVFc4OV9SU19PRkRNXVtyZWdkXTtcbitcdHU4IHR4X3NoYXBlX2NjayA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19DQ0spO1xuK1x0dTggdHhfc2hhcGVfb2ZkbSA9IHJ0dzg5X2dldF90eF9zaGFwZV9pZHgocnR3ZGV2LCBiYW5kLCBSVFc4OV9SU19PRkRNKTtcbiBcbiBcdGlmIChiYW5kID09IFJUVzg5X0JBTkRfMkcpXG4gXHRcdHJ0dzg4NTJjX2JiX3NldF90eF9zaGFwZV9kZmlyKHJ0d2RldiwgY2hhbiwgdHhfc2hhcGVfY2NrLCBwaHlfaWR4KTtcbkBAIC0zMzE5LDYgKzMzMTcsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJjX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gMCxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSAwLFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4ODUyY19jaGlwX2luZm8pO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmNfdGFibGUuY1xuaW5kZXggMjRjMzkwYjZmM2QzNDQuLmI3MmZlZTM3N2U5YzBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY190YWJsZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjX3RhYmxlLmNcbkBAIC01NzE1Myw3ICs1NzE1Myw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgcnR3ODlfODg1MmNfZGZsdF9wYXJtcyA9IHtcbiBcdFx0LmxtdF9ydSA9IFx1MDAyNnJ0dzg5Xzg4NTJjX3R4cHdyX2xtdF9ydV82ZyxcbiBcdH0sXG4gXHQudHhfc2hhcGUgPSB7XG4tXHRcdC5sbXQgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXQsXG4tXHRcdC5sbXRfcnUgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXG4rXHRcdC5sbXRfdjAgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXQsXG4rXHRcdC5sbXRfcnVfdjAgPSBcdTAwMjZydHc4OV84ODUyY190eF9zaGFwZV9sbXRfcnUsXG4gXHR9LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXG5pbmRleCBhZDM2MThkZmQ1N2QwMC4uM2U4NzA4ODBiNTk4ZTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xuQEAgLTI1MDIsMTUgKzI1MDIsMTAgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmFfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4gXHRcdFx0XHQgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBydHc4OV9yZmVfcGFybXMgKnJmZV9wYXJtcyA9IHJ0d2Rldi1cdTAwM2VyZmVfcGFybXM7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdHhfc2hhcGUgKnR4X3NoYXBlID0gXHUwMDI2cmZlX3Bhcm1zLVx1MDAzZXR4X3NoYXBlO1xuK1x0dTggYmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuIFx0dTggdHhfc2hhcGVfaWR4O1xuLVx0dTggYmFuZCwgcmVnZDtcbi1cbi1cdGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbi1cdHJlZ2QgPSBydHc4OV9yZWdkX2dldChydHdkZXYsIGJhbmQpO1xuLVx0dHhfc2hhcGVfaWR4ID0gKCp0eF9zaGFwZS1cdTAwM2VsbXQpW2JhbmRdW1JUVzg5X1JTX09GRE1dW3JlZ2RdO1xuIFxuK1x0dHhfc2hhcGVfaWR4ID0gcnR3ODlfZ2V0X3R4X3NoYXBlX2lkeChydHdkZXYsIGJhbmQsIFJUVzg5X1JTX09GRE0pO1xuIFx0aWYgKHR4X3NoYXBlX2lkeCA9PSAwKVxuIFx0XHRydHc4OTIyYV9iYl90eF90cmlhbmd1bGFyKHJ0d2RldiwgZmFsc2UsIHBoeV9pZHgpO1xuIFx0ZWxzZVxuQEAgLTMzMDIsNiArMzI5Nyw3IEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmFfY2hpcF9pbmZvID0ge1xuICNlbmRpZlxuIFx0Lnh0YWxfaW5mb1x0XHQ9IE5VTEwsXG4gXHQuZGVmYXVsdF9xdWlya3NcdFx0PSAwLFxuK1x0LnR4dGltZV9saW1pdF8yZ2h6XHQ9IDAsXG4gfTtcbiBFWFBPUlRfU1lNQk9MKHJ0dzg5MjJhX2NoaXBfaW5mbyk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXG5pbmRleCA4MzhjMjYyMzE4OTdkNi4uY2MxMjdhM2U4NmVmODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xuQEAgLTExMzYsOCArMTEzNiwxMCBAQCBzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0dTMyIHN1Yl9jYXJyID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX1RYX1NVQl9CQU5EX1ZBTFVFLCBtYWNfaWR4KTtcbiBcdHUzMiBjaGtfcmF0ZSA9IHJ0dzg5X21hY19yZWdfYnlfaWR4KHJ0d2RldiwgUl9CRV9UWFJBVEVfQ0hLLCBtYWNfaWR4KTtcbiBcdHUzMiByZl9tb2QgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfV01BQ19SRk1PRCwgbWFjX2lkeCk7XG4rXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHR1OCB0eHNiMjAgPSAwLCB0eHNiNDAgPSAwLCB0eHNiODAgPSAwO1xuIFx0dTggcmZfbW9kX3ZhbCwgY2hrX3JhdGVfbWFzaywgc2lmcztcbitcdHUxNiB0eF90aW1lID0gQU1QRFVfTUFYX1RJTUVfVjE7XG4gXHR1MzIgdHhzYjtcbiBcdHUzMiByZWc7XG4gXG5AQCAtMTIxOCw2ICsxMjIwLDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jaGFubmVsX21hYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXG4gXHRyZWcgPSBydHc4OV9tYWNfcmVnX2J5X2lkeChydHdkZXYsIFJfQkVfTVVFRENBX0VOLCBtYWNfaWR4KTtcbiBcdHJ0dzg5X3dyaXRlMzJfbWFzayhydHdkZXYsIHJlZywgQl9CRV9TSUZTX01BQ1RYRU5fVEJfVDFfRE9UMDVVU19NQVNLLCBzaWZzKTtcbitcbitcdGlmIChjaGFuLVx1MDAzZWJhbmRfdHlwZSA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNiBjaGlwLVx1MDAzZXR4dGltZV9saW1pdF8yZ2h6KVxuK1x0XHR0eF90aW1lID0gbWluX3QodTMyLCB0eF90aW1lLCBjaGlwLVx1MDAzZXR4dGltZV9saW1pdF8yZ2h6ICogMTAwMCBcdTAwM2VcdTAwM2UgMTUpO1xuK1xuK1x0cmVnID0gcnR3ODlfbWFjX3JlZ19ieV9pZHgocnR3ZGV2LCBSX0JFX0FNUERVX0FHR19MSU1JVCwgbWFjX2lkeCk7XG4rXHRydHc4OV93cml0ZTMyX21hc2socnR3ZGV2LCByZWcsIEJfQkVfQU1QRFVfTUFYX1RJTUVfTUFTSywgdHhfdGltZSk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfc2NvX2Jhcmtlcl90aHJlc2hvbGRbMTRdID0ge1xuQEAgLTI3MzksMTYgKzI3NDcsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3R4X3NoYXBlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSAqZCA9IHJ0d2Rldi1cdTAwM2VwaHlfaW5mby5iYl93cmFwX2RhdGE7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcmZlX3Bhcm1zICpyZmVfcGFybXMgPSBydHdkZXYtXHUwMDNlcmZlX3Bhcm1zO1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X3R4X3NoYXBlICp0eF9zaGFwZSA9IFx1MDAyNnJmZV9wYXJtcy1cdTAwM2V0eF9zaGFwZTtcbitcdHU4IGJhbmQgPSBjaGFuLVx1MDAzZWJhbmRfdHlwZTtcbiBcdHU4IHR4X3NoYXBlX2lkeDtcbi1cdHU4IGJhbmQsIHJlZ2Q7XG4gXHRjb25zdCB1MTYgKnRoO1xuIFxuLVx0YmFuZCA9IGNoYW4tXHUwMDNlYmFuZF90eXBlO1xuLVx0cmVnZCA9IHJ0dzg5X3JlZ2RfZ2V0KHJ0d2RldiwgYmFuZCk7XG4tXHR0eF9zaGFwZV9pZHggPSAoKnR4X3NoYXBlLVx1MDAzZWxtdClbYmFuZF1bUlRXODlfUlNfT0ZETV1bcmVnZF07XG4tXG4rXHR0eF9zaGFwZV9pZHggPSBydHc4OV9nZXRfdHhfc2hhcGVfaWR4KHJ0d2RldiwgYmFuZCwgUlRXODlfUlNfT0ZETSk7XG4gXHRpZiAodHhfc2hhcGVfaWR4ID09IDApXG4gXHRcdGdvdG8gZGlzYWJsZTtcbiBcbkBAIC0zNDM3LDYgKzM0NDAsNyBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJkX2NoaXBfaW5mbyA9IHtcbiAjZW5kaWZcbiBcdC54dGFsX2luZm9cdFx0PSBOVUxMLFxuIFx0LmRlZmF1bHRfcXVpcmtzXHRcdD0gQklUKFJUVzg5X1FVSVJLX1RIRVJNQUxfUFJPVF8xMjBDKSxcbitcdC50eHRpbWVfbGltaXRfMmdoelx0PSA0NjA4LFxuIH07XG4gRVhQT1JUX1NZTUJPTChydHc4OTIyZF9jaGlwX2luZm8pO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMTI6MjY6NDMuNjQ2MTg4NDg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg3NjIzMjkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExhdGVzdCBydHc4OSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYHJ0dzg5YCB3aXJlbGVzcyBkcml2ZXIsIGFuZCBpdCdzIGdvdCBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMuIEZpcnN0LCBpdCBzZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIFJGIENhbGlicmF0aW9uIChSRkspIHJlY29yZGluZyBhbmQgdHJhY2tpbmcuIFRoYXQncyBnb29kOyBpdCdzIGFsd2F5cyBoZWxwZnVsIHRvIGhhdmUgbW9yZSBncmFudWxhciBkYXRhIG9uIHRoZSBSRiBjYWxpYnJhdGlvbiBwcm9jZXNzLCBzbyBJIGNhbiBzZWUgd2hhdCdzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kIGFuZCBtYWtlIHN1cmUgdGhpbmdzIGFyZSBvcGVyYXRpbmcgb3B0aW1hbGx5LiBTcGVjaWZpY2FsbHksIHRoZSBhZGRpdGlvbnMgaW4gYHJ0dzg5X2NvcmVfcmZrX3JlY29yZGAgYW5kIGBydHc4OV9jb3JlX3Jma190c3NpX3JlY29yZGAgbG9vayBpbXBvcnRhbnQuXG5cbk5leHQsIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgZm9yIHRoZSBSVEw4OTIyRC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBCQiBwcmUtaW5pdGlhbGl6YXRpb24uIEl0IGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBwZWN1bGlhcml0aWVzIG9mIHRoZSBoYXJkd2FyZS5cblxuVGhlIHBhdGNoIGlzIGFsc28gdXBkYXRpbmcgdGhlIGB0eF9zaGFwZWAgbGltaXRzLCBhZGRpbmcgc3VwcG9ydCBmb3IgYHJlZzZfcHdyYCDigJMgd2hpY2ggaXMgcHJlc3VtYWJseSA2R0h6IHBvd2VyIOKAkyBhbmQgdXBkYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYHJ0dzg5X2dldF90eF9zaGFwZV9pZHhgIGZ1bmN0aW9uLiBUaGlzIGluZGljYXRlcyB0aGV5J3JlIGJyb2FkZW5pbmcgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgdGhlIDZHSHogYmFuZC4gVGhhdCdzIGEgZ29vZCBkaXJlY3Rpb24uXG5cblRoZXkncmUgYWxzbyBhZGRpbmcgZGVidWdmcyBlbnRyaWVzIGZvciBSRiBkaWFnbm9zdGljcy4gRXhjZWxsZW50LiBUaGF0IHNob3VsZCBtYWtlIGl0IGVhc2llciB0byB0cm91Ymxlc2hvb3QgYW55IFJGLXJlbGF0ZWQgaXNzdWVzLCB3aGljaCBpcyBhbHdheXMgd2VsY29tZS4gV2UgY2FuIG9mdGVuIGdldCB0byB0aGUgYm90dG9tIG9mIHByb2JsZW1zIG1vcmUgcXVpY2tseSB3aXRoIGJldHRlciBkaWFnbm9zdGljIHRvb2xzLlxuXG5UaGVyZSdzIGFuIHVwZGF0ZSB0byBgcnR3ODlfZndfZGxfZmFpbF9kdW1wYCB0byB1c2UgYG1hYy1cdTAwM2Vib290X2RiZ2AsIHdoaWNoIGlzIHByb2JhYmx5IGltcHJvdmluZyBkZWJ1Z2dpbmcgb2YgZmlybXdhcmUgZG93bmxvYWQgZmFpbHVyZXMuIFRoYXQncyBwcm9iYWJseSBqdXN0IGEgc21hbGwgdHdlYWssIGJ1dCB3b3J0aCBub3RpbmcuXG5cbkZ1cnRoZXJtb3JlLCB0aGVyZSBhcmUgdXBkYXRlcyB0byBgX19ydHc4OV9tYWNfc2V0X3R4X3RpbWVgIHRvIGxpbWl0IFRYIHRpbWUgZm9yIHRoZSAyR0h6IGJhbmQgaWYgYGNoaXAtXHUwMDNldHh0aW1lX2xpbWl0XzJnaHpgIGlzIHNldC4gVGhpcyBzZWVtcyBsaWtlIGEgbWVjaGFuaXNtIHRvIHByb3ZpZGUgY29udHJvbCBvbiAyR0h6IHBvd2VyLCBsaWtlbHkgZm9yIGNvbXBsaWFuY2UgcmVhc29ucy4gQWxzbywgc2ltaWxhciB0aW1lIGxpbWl0aW5nIGhhcyBiZWVuIGFwcGxpZWQgdG8gYHJ0dzg5MjJkX3NldF9jaGFubmVsX21hY2AuIEludGVyZXN0aW5nIHRoYXQgdGhlIGNvZGUgaXMgY2hhbmdpbmcgc28gc3Vic3RhbnRpYWxseS5cblxuRmluYWxseSwgdGhleSd2ZSBhZGRlZCBgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdGAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGZvciB3YWl0aW5nIG9uIHNwZWNpZmljIFJGSyByZXBvcnRzLiBUaGlzIGxpa2VseSBtZWFucyB0aGV5J3JlIGFkZGluZyBhIGJpdCBtb3JlIHN5bmNocm9uaXNhdGlvbiBpbiB0aGUgcmVwb3J0aW5nIHBhdGguXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGRyaXZlciwgYHJ0dzg5YCwgaXMgYSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBzaG91bGQgY2hlY2sgaWYgaXQncyBhIFBDSSwgVVNCLCBvciBTRElPIGRyaXZlciB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGF0dGFjaGVkLiBMZXQgbWUgbG9vayBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCBvciBgTWFrZWZpbGVgIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkLiBUaGF0J2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgYmFzaWMgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDI5NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjUxLjUyMjQyMzM0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc0OTA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNjo1MS41NzgxODgwMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU2MzU4MDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIGl0IHNlZW1zIHRvIGhhbmRsZSBib3RoIFBDSSBhbmQgVVNCIGNvbm5lY3Rpb25zLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBoZXJlIGlzIHRoZSBVU0IgY29tcG9uZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhwbG9yZSBVU0IgZnV6emluZyB0ZWNobmlxdWVzLCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBvciB0aGUgbWV0aG9kcyB1c2VkIGluIHN5emthbGxlciwgd2hpY2ggSSBrbm93IHN1cHBvcnRzIFVTQiBmdXp6aW5nLlxuXG5CdXQgaG9sZCBvbiwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgXCJpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyxcIiB3aGljaCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBRRU1VLiBUaGF0J3MgYSBiaXQgb2YgYSBjdXJ2ZWJhbGwuIEhvd2V2ZXIsIEkga25vdyBzeXprYWxsZXIgKmRvZXMqIGhhdmUgVVNCIGZ1enppbmcgdmlhIGBkdW1teV9oY2RgLCBzbyBwZXJoYXBzIHRoZSBwcm9tcHQncyBzdGF0ZW1lbnQgaXMgbm90IGFuIGFic29sdXRlIGNvbnN0cmFpbnQuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB0aGUgYHJ0dzg5YCBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgdGhyb3VnaCBVU0IgZnV6emluZy4gU2luY2UgYFJUVzg5X1VTQmAgc3VwcG9ydCBleGlzdHMsIHRoZSBhbnN3ZXIgc2hvdWxkIGJlIHllcyBpbiBwcmluY2lwbGUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBkZWZpbml0aXZlbHkgZGV0ZXJtaW5lIGlmIHRoZSBgcnR3ODlgIFVTQiBkcml2ZXJzIGFyZSAqYWN0dWFsbHkqIGZ1enplZC4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY2Agb3Igc2ltaWxhciwgdG8gdW5kZXJzdGFuZCB0aGUgY3VycmVudCBmdXp6aW5nIGNvdmVyYWdlLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgaXMgdGFyZ2V0aW5nIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY0OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNjo1Ni4yMzQ1NDg5NThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MzU4MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3VzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYz02MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTFidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MWJ1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODE6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTJhdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODAtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjgxOm1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUyYnVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYz04MT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTg2LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzo4Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmN1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODI6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg5MjJhdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtODMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI2OjU2LjI5MjQ5MDgwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNDgzMTAyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIEFwcGxpY2FiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGUgbWVudGlvbiBvZiBVU0IgZHJpdmVycywgYW5kIGluaXRpYWxseSwgbXkgZ3V0IHJlYWN0aW9uIGlzIFwiWWVzLCB0aG9zZSBhcmUgY2VydGFpbmx5IHRlc3RhYmxlLlwiIEJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0IGlzIHNwZWNpZmljYWxseSB0YWxraW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gU28sIGRvZXMgdGhhdCBtZWFuIEkgbmVlZCB0byBtYXJrIHNvbWV0aGluZyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCAqaWYqIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLCBldmVuIHdpdGgsIHNheSwgVVNCIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbT8gWWVzLCB0aGF0J3MgdGhlIGxvZ2ljLlxuXG5CdXQgbm93IEkgaGF2ZSBhIGNvdW50ZXJwb2ludCAtIFVTQiBkcml2ZXJzICphcmUqIGFjY2Vzc2libGUgd2l0aCBVU0IgZ2FkZ2V0IGFuZCBkdW1teV9oY2QgZnV6emluZyEgV2UgY2FuIGNlcnRhaW5seSByZWFjaCBjb2RlIHdpdGhpbiB0aG9zZSBkcml2ZXJzLiBTbywgSSBuZWVkIHRvIHJlZmluZSBteSB1bmRlcnN0YW5kaW5nLiBUaGUgcXVlc3Rpb24gaXNuJ3QganVzdCBcImlzIGl0IGEgVVNCIGRyaXZlcj9cIiwgYnV0IHJhdGhlciwgXCJkb2VzIHRoZSB0eXBlIG9mIGZ1enppbmcgd2UncmUgdGFsa2luZyBhYm91dCBhY3R1YWxseSAqZ2V0KiB0byB0aGUgcmVsZXZhbnQgd2lyZWxlc3MgZHJpdmVyIGxvZ2ljP1wiLiBPZnRlbiwgVVNCIGZ1enppbmcgY2FuIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBvbiBhIGxvdyBsZXZlbCwgYnV0IHdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gbmVlZCBmaXJtd2FyZSB0byBiZSBsb2FkZWQgYmVmb3JlIHRoZXkgY2FuIGluaXRpYWxpemUgdGhlIE1BQy9QSFkgYW5kIHJlZ2lzdGVyIHRoZWlyIG5ldHdvcmsgaW50ZXJmYWNlLiBTbywgd2hhdCBJIG5lZWQgdG8gZG8gaXMgbG9vayBmb3IgYSBzcGVjaWZpYyBleGFtcGxlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIGZ1enppbmcgdGVjaG5pcXVlIHdpbGwgYWN0dWFsbHkgdGVzdCB0aGUgY29kZSBpbiBxdWVzdGlvbi4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgaWYgYHJ0dzg5YCByZWxpZXMgb24gZmlybXdhcmUgdG8gb3BlcmF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMTI6Mjc6MDEuMzQwODAyOTk1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzA1OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTk3Nj1ydHc4OV9lYXJseV9md19mZWF0dXJlX3JlY29nbml6ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo5OTM6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZmlybXdhcmUsIGZ3X25hbWUsIGRldmljZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk5NC1cXHRcXHRpZiAoIXJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNDE9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA1Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNTc6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDU4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNzowMS4zOTc1MTQzN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDc5NjAwMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYHJ0dzg5YCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFza2luZyBtZSB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBpbnRyb2R1Y2VzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzaW11bGF0ZWQgaGFyZHdhcmUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgdGhpcyBgcnR3ODlgIGRyaXZlci4uLiBpdCBzY3JlYW1zIGZpcm13YXJlIGRlcGVuZGVuY3ksIGRvZXNuJ3QgaXQ/IElmIHRoZSBmaXJtd2FyZSBpc24ndCB0aGVyZSwgYHJlcXVlc3RfZmlybXdhcmVgIGZhaWxzLCBhbmQgdGhlIHByb2JlIGp1c3QgZGllcy4gU3l6a2FsbGVyLCBpbiBpdHMgdHlwaWNhbCBzZXR1cCwgdXN1YWxseSB3b24ndCBoYXZlIHByb3ByaWV0YXJ5IGZpcm13YXJlIHVubGVzcyBpdCdzIGJ1bmRsZWQgaW4gYGxpbnV4LWZpcm13YXJlYCwgYW5kIGV2ZW4gdGhlbiwgbG9hZGluZyBpdCBpcyBqdXN0IHRoZSBmaXJzdCBodXJkbGUuIFRoZSBVU0IgZnV6emVyIHdvdWxkIHRoZW4gbmVlZCB0byBmbGF3bGVzc2x5IGVtdWxhdGUgdGhlICpleGFjdCogZmlybXdhcmUgcmVzcG9uc2VzIHRvIGV2ZW4gZ2V0IHBhc3QgdGhhdCBpbml0aWFsIHN0YWdlLlxuXG5JJ20gdGhpbmtpbmcsIGlzbid0IHRoZXJlIGEgbWFjODAyMTEgc2ltdWxhdGlvbiBmb3Igd2lyZWxlc3MgZnV6emluZyB3aXRoIHN5emthbGxlcj8gT2ggeWVhaCwgYG1hYzgwMjExX2h3c2ltYCEgQnV0IHRoYXTigJlzIHNvZnR3YXJlLCBub3QgdG91Y2hpbmcgcmVhbCBoYXJkd2FyZSBkcml2ZXJzIGxpa2UgYHJ0dzg5YC4gVGhvc2UgaGFyZHdhcmUgZHJpdmVycywgbGlrZSBgYXRoMTBrYCBhbmQgYGl3bHdpZmlgLCBhcmUgZ2VuZXJhbGx5IG5vdCByZWFjaGVkIGJlY2F1c2Ugb2YgZWl0aGVyIFBDSSBkZXZpY2UgZW11bGF0aW9uIHNob3J0Y29taW5ncywgb3IgdGhlIGZhY3QgdGhhdCBVU0IgZHJpdmVycyBwcm92aWRlIHJhbmRvbSByZXNwb25zZXMuIEEgY29tcGxleCBiZWFzdCBsaWtlIGBydHc4OWAgd2lsbCBsaWtlbHkgZGllIHF1aWNrbHkgd2hlbiBpdCB0cmllcyB0byByZWFkIHNwZWNpZmljIHJlZ2lzdGVycywgbG9hZCBmaXJtd2FyZSwgYW5kIHdhaXQgZm9yIGZpcm13YXJlLXJlYWR5IHNpZ25hbHMuIEl04oCZbGwgbmV2ZXIgcmVhY2ggdGhlIGp1aWN5IGNvcmUgbG9naWMgbGlrZSBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCBvciBgcnR3ODlfbWFjX3NldF90eF90aW1lYC5cblxuQWxyaWdodCwgbGV0J3MgcmUtcmVhZCB0aGUgcHJvbXB0IGNhcmVmdWxseS4gVGhlIGtleSBpcyBcImNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC5cIiBJZiB0aGUgcGF0Y2ggKm9ubHkqIGludHJvZHVjZXMgdW5yZWFjaGFibGUgY29kZSwgdGhlbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0IGlzIHRoZSBgcnR3ODlgIGNvcmUgbG9naWMgcmVhY2hhYmxlICphdCBhbGwqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBjYW4ndCBkaXJlY3RseSBjaGVjayBzeXprYWxsZXIgY292ZXJhZ2UsIGJ1dCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgY29tcGxleCBoYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIGRlbWFuZGluZyBmaXJtd2FyZSBhbmQgc3BlY2lmaWMgcmVnaXN0ZXIgaW50ZXJhY3Rpb25zLCB1c3VhbGx5IGRvbid0IGdldCBtdWNoIGZ1cnRoZXIgdGhhbiB0aGUgcHJvYmUgZmFpbHVyZSBpbiBVU0IvUENJIGZ1enppbmcuXG5cbkhtbSwgYW55IG90aGVyIGFuZ2xlcz8gSXMgdGhlcmUgc29tZSBiYWNrZG9vciwgbGlrZSBgbWFjODAyMTFgLCB0aGF0IGNvdWxkIGJlIHVzZWQ/IE5vLCBgcnR3ODlgIGlzIGNsZWFybHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIHRlc3QgbW9kZSBvciBzb21ldGhpbmcgdGhhdCB3b3VsZCBhbGxvdyBlYXNpZXIgYWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc4OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNzoxMC40NDU0NzczMDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjIzNDk1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0bW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMTI6Mjc6MTAuNTA0MTEwMTMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjYzNjU4NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFNpbXVsYXRpb24gT3B0aW9ucyBmb3IgcnR3ODkqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgdGhpcyBgcnR3ODlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGEgc2ltdWxhdGVkIGVudmlyb25tZW50LiBUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdXN1YWxseSB0byBsb29rIGZvciBzb21lIGtpbmQgb2YgYGh3c2ltYCBvciwgaGVjaywgYW55dGhpbmcgdGhhdCByZXNlbWJsZXMgYSBoYXJkd2FyZSBzaW11bGF0b3IgdGFpbG9yZWQgZm9yIHRoZXNlIHJlYWx0ZWsgd2lyZWxlc3MgY2hpcHNldHMuIEl0J3MgdGhlIGdvLXRvIGZvciByYXBpZCB0ZXN0aW5nIGFuZCByZWdyZXNzaW9uLiBTbywgZmlyc3QgdGhpbmcsIGxldCdzIHNlZSB3aGF0J3Mgb3V0IHRoZXJlLiBBIHF1aWNrIHNjYW4gb2YgdGhlIHR5cGljYWwgbG9jYXRpb25zIC0gdGhlIGtlcm5lbCBzb3VyY2UsIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGFuZCBhbnkgcHVibGljIGRpc2N1c3Npb25zIC0gaXMgaW4gb3JkZXIuIE1heWJlIHNvbWV0aGluZyBuZXcgaGFzIGNyb3BwZWQgdXAsIG9yIG1heWJlIEkgbmVlZCB0byBhZGp1c3QgbXkgYXBwcm9hY2guIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGtleXdvcmRzIGFuZCB0aGVuIGJyb2FkZW4gbXkgc2VhcmNoIGlmIG5vdGhpbmcganVtcHMgb3V0IGltbWVkaWF0ZWx5LiBLbm93aW5nIHRoZSBrZXJuZWwgdHJlZSwgYW5kIHRoZSBjb21tb24gbmFtaW5nIGNvbnZlbnRpb25zLCBJJ20gZXhwZWN0aW5nIGEgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCBkaXNjb3ZlcnkuLi4gb3IgYSByYWJiaXQgaG9sZS4gTGV0J3Mgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjg0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI3OjE0LjI3MDQ3ODI1NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxMjk5MzQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQxMjoyNzoxNC4zMjk2MTQzNzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc0MjE1MzEzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIHJ0dzg5IFdpcmVsZXNzIERyaXZlciBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNoYW5nZXMsIGRlZXAgaW4gdGhlIGBydHc4OWAgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSBmaWxlcyBsaWtlIGBjb3JlLmNgLCBgbWFjLmNgLCBgcGh5LmNgLCBldGMuIFRoaXMgaXMgcHJldHR5IGxvdy1sZXZlbCwgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gSSdtIHNlZWluZyBmdW5jdGlvbnMgbGlrZSBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCB0aGF0IGRpcmVjdGx5IHJlYWQgUkYgcmVnaXN0ZXJzIHVzaW5nIGNhbGxzIGxpa2UgYHJ0dzg5X3JlYWRfcmZgLiBUaGF0IGltcGxpZXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmN5OyB0aGUgZGV2aWNlIGhhcyB0byBiZSBwcmVzZW50LCBwb3dlcmVkIG9uLCBhbmQgcmVzcG9uZGluZy5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCBmdXp6aW5nIHRoaXMuIEluIGEgVVNCIGZ1enppbmcgc2NlbmFyaW8sIGBydHc4OV9yZWFkX3JmYCB3b3VsZCBldmVudHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgVVNCIGNvbnRyb2wgdHJhbnNmZXIuIFRoZSBmdXp6ZXIgY291bGQgdGhyb3cgcmFuZG9tIGRhdGEgYXQgaXQsIHN1cmUuIEJ1dCB0byBldmVuICpnZXQqIHRvIHRoYXQgcG9pbnQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLiBJdCBoYXMgdG8gZ28gdGhyb3VnaCBhIHdob2xlIHNlcXVlbmNlOiBwcm9iZSwgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSwgYW5kIHRoZSB1c2VyIG11c3QgYmUgY29uZmlndXJpbmcgYSBjaGFubmVsLCByaWdodD8gVGhlIHN1Y2Nlc3NmdWwgcHJvYmluZyByZXF1aXJlcyB0aGUgZHJpdmVyIHRvOlxuXG4xLiAgUmVhZCBjaGlwIElEIGFuZCByZXZpc2lvbi5cbjIuICBMb2FkIGZpcm13YXJlLlxuMy4gIERvd25sb2FkIGZpcm13YXJlIHRvIHRoZSBkZXZpY2UuXG40LiAgV2FpdCBmb3IgdGhlIGZpcm13YXJlIHRvIGJvb3QgYW5kIHNlbmQgYSByZWFkeSBzaWduYWwuXG41LiAgSW5pdGlhbGl6ZSBNQUMgYW5kIFBIWS5cbjYuICBSZWdpc3RlciB3aXRoIG1hYzgwMjExLlxuXG5JdCdzIGp1c3Qgbm90IHByYWN0aWNhbGx5IGZlYXNpYmxlIGZvciBhIHJhbmRvbSBVU0IgZnV6emVyIHRvIGVtdWxhdGUgdGhhdCBwcmVjaXNlIHNlcXVlbmNlIG9mIGZpcm13YXJlIGRvd25sb2FkIGFuZCBib290IHJlc3BvbnNlcy4gSXQncyB0b28gY29tcGxleC4gVGhlIGRyaXZlcidzIGNvcmUgbG9naWMgaXMgdW5yZWFjaGFibGUgaW4gdGhhdCBraW5kIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5IbW0sIHdhaXQgYSBzZWMuLi4gd2hhdCBhYm91dCBRRU1VPyBEb2VzIFFFTVUgc3VwcG9ydCB0aGlzIGRyaXZlcj8gSSBrbm93IFFFTVUgc3VwcG9ydHMgc29tZSBuZXR3b3JrIGNhcmRzIGxpa2UgZTEwMDAsIHJ0bDgxMzksIGFuZCB2aXJ0aW8tbmV0LCBidXQgbm90IG1vZGVybiB3aXJlbGVzcyBjYXJkcyBsaWtlIHRoZSBgcnR3ODlgLCB3aGljaCBpcyA4MDIuMTFheC9XaS1GaSA2LiBTbywgUENJIGZ1enppbmcgaXMgb3V0IHRvby5cblxuTGV0J3MgZG8gYSBxdWljayBzd2VlcCBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGNvbmZpcm0gdGhpcy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlc2UgZnVuY3Rpb25zOiBgcnR3ODlfY29yZV9yZmtfcmVjb3JkYCwgYHJ0dzg5X2NoaXBfcmZrX2NoYW5uZWxgLCBgcnR3ODlfY29yZV9yZmtfdHNzaV9yZWNvcmRgLCBgcnR3ODlfY29yZV9yZmtfdHJhY2tgLCBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCwgYHJ0dzg5X2RlYnVnX3ByaXZfZGlhZ19yZl9nZXRgLCBgcnR3ODlfZGVidWdfcHJpdl9kaWFnX3JmX3NldGAsIGBydHc4OV9md19kbF9mYWlsX2R1bXBgLCBgcnR3ODlfZndfbG9hZF90eF9zaGFwZV9sbXRgLCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAsIGBfX3J0dzg5X21hY19zZXRfdHhfdGltZWAsIGFuZCBgcnR3ODlfcGh5X3Jma19yZXBvcnRfd2FpdGAuXG5cblllcC4gQWxsIHRoZXNlIGFyZSBjbGVhcmx5IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmdW5jdGlvbnMuIEdpdmVuIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIGEgZGV2aWNlIHRoYXQncyBub3QgZW11bGF0ZWQgYnkgUUVNVSwgYW5kIHRoYXQgcmVxdWlyZXMgdGhpcyBjb21wbGV4IGZpcm13YXJlIGludGVyYWN0aW9uIHRoYXQgY2FuJ3QgYmUgZnV6emVkIHByYWN0aWNhbGx5IHRocm91Z2ggVVNCIGdhZGdldCwgaXQgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoZSBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIGNhdGVnb3J5LlxuXG5MZXQncyBqdXN0IGRvdWJsZSBjaGVjayB0aGUgZmlsZSBwYXRocy4uLiBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gYGNvcmUuY2AsIGBjb3JlLmhgLCBgZGVidWcuY2AsIGBmdy5jYCwgYGZ3LmhgLCBgbWFjLmNgLCBgbWFjLmhgLCBgbWFjX2JlLmNgLCBgcGh5LmNgLCBgcGh5LmhgLCBgcmVnLmhgLCBgcnR3ODg1MWIuY2AsIGBydHc4ODUxYl90YWJsZS5jYCwgYHJ0dzg4NTJhLmNgLCBgcnR3ODg1MmIuY2AsIGBydHc4ODUyYl9jb21tb24uY2AsIGBydHc4ODUyYl90YWJsZS5jYCwgYHJ0dzg4NTJidC5jYCwgYHJ0dzg4NTJjLmNgLCBgcnR3ODg1MmNfdGFibGUuY2AsIGBydHc4OTIyYS5jYCwgYW5kIGBydHc4OTIyZC5jYC4gVGhleSBhcmUgYWxsIHVuZGVyIGAvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gLlxuXG5JdCdzIGFsbCB0aGUgYHJ0dzg5YCBkcml2ZXIsIHNvIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uIGlzIHRoYXQgaXQgaW52b2x2ZXMgbW9kaWZ5aW5nIGEgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODlgKSB0aGF0IHJlcXVpcmVzXG5cbiIsIklucHV0VG9rZW5zIjoyNzE0OCwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDEyOjI3OjMxLjc1MTE0ODI3NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBydHc4OSB3aXJlbGVzcyBkcml2ZXIgKFJlYWx0ZWsgODAyLjExYXgvYmUpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBmaXJtd2FyZSBlbXVsYXRpb24gKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gUUVNVS9zeXprYWxsZXIpIHRvIHBhc3MgdGhlIGluaXRpYWwgcHJvYmUgYW5kIHJlYWNoIHRoZSBjb3JlIGxvZ2ljIChNQUMvUEhZIGluaXRpYWxpemF0aW9uLCBSRiBjYWxpYnJhdGlvbiwgZXRjLikuIFRoZXJlZm9yZSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyIChSZWFsdGVrIDgwMi4xMWF4L2JlKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGNvbXBsZXggZmlybXdhcmUgZW11bGF0aW9uICh3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIFFFTVUvc3l6a2FsbGVyKSB0byBwYXNzIHRoZSBpbml0aWFsIHByb2JlIGFuZCByZWFjaCB0aGUgY29yZSBsb2dpYyAoTUFDL1BIWSBpbml0aWFsaXphdGlvbiwgUkYgY2FsaWJyYXRpb24sIGV0Yy4pLiBUaGVyZWZvcmUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2jvfn[1] Phase: Running StartedAt: 2026-07-12 12:27:42 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2jvfn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-12 12:27:42 +0000 UTC FinishedAt: 2026-07-12 12:27:47 +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,}