Name: series-workflowdvsj6 Phase: Failed StartedAt: 2026-09-15 11:33:40 +0000 UTC FinishedAt: 2026-09-15 11:55:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdvsj6[0] Phase: Succeeded StartedAt: 2026-09-15 11:33:40 +0000 UTC FinishedAt: 2026-09-15 11:55:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdvsj6[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 11:33:40 +0000 UTC FinishedAt: 2026-09-15 11:55:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgZHJpdmVyIGFuZCBpdHMgc2hhcmVkIGxpYnJhcnkgKHR4Z2JldmYsIGxpYnd4KSB0byBpbXBsZW1lbnQgZXRodG9vbCBnZXQvc2V0IGNoYW5uZWxzIGNhbGxiYWNrcyBhbmQgYWRqdXN0IFJTUyBxdWV1ZSBjb25maWd1cmF0aW9uLiBUaGVzZSBkcml2ZXJzIHRhcmdldCBwaHlzaWNhbCBXYW5neHVuIFBDSWUgTklDIGhhcmR3YXJlIChTUDEwMDAsIFdYMTgyMCwgZXRjLikgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTc4NTViMDAwZTc0YjUzNGY3N2NkNzhjZjlmNGFhMWQzNTI2NDU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDExOjU0OjAxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmNcbmluZGV4IDk0MGQyZTU5ODc2YzcuLmQyNDM3MDc5MDk0MTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmNcbkBAIC01NjQsNiAmIzQzOzU2NCw2OCBAQCBpbnQgd3hfc2V0X2NoYW5uZWxzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfc2V0X2NoYW5uZWxzKTtcbiBcbiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X2NoYW5uZWxzX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogcmVwb3J0IG1heGltdW0gY2hhbm5lbHMgKi9cbiYjNDM7XHRjaC1cdTAwM2VtYXhfY29tYmluZWQgPSB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcztcbiYjNDM7XG4mIzQzO1x0Y2gtXHUwMDNlbWF4X290aGVyID0gMTtcbiYjNDM7XHRjaC1cdTAwM2VvdGhlcl9jb3VudCA9IDE7XG4mIzQzO1xuJiM0MztcdC8qIHJlY29yZCBjdXJyZW50IGNoYW5uZWxzICovXG4mIzQzO1x0Y2gtXHUwMDNlY29tYmluZWRfY291bnQgPSB3eC1cdTAwM2VudW1fcnhfcXVldWVzO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHR1MTYgcnNzX2xpbWl0O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJzc19saW1pdCA9IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcbiYjNDM7XG4mIzQzO1x0LyogdmVyaWZ5IG90aGVyX2NvdW50IGhhcyBub3QgY2hhbmdlZCAqL1xuJiM0MztcdGlmIChjaC1cdTAwM2VvdGhlcl9jb3VudCAhPSAxKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdC8qIHZlcmlmeSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGRvZXMgbm90IGV4Y2VlZCBoYXJkd2FyZSBsaW1pdHMgKi9cbiYjNDM7XHRpZiAoY2gtXHUwMDNlY29tYmluZWRfY291bnQgXHUwMDNlIHd4LVx1MDAzZW1hYy5tYXhfcnhfcXVldWVzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdC8qIGlmIGRldmljZSBpcyByZXNldHRpbmcsIGRvIG5vdGhpbmcgKi9cbiYjNDM7XHRpZiAodGVzdF9iaXQoV1hfU1RBVEVfUkVTRVRUSU5HLCB3eC1cdTAwM2VzdGF0ZSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVCVVNZO1xuJiM0MztcbiYjNDM7XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSBjaC1cdTAwM2Vjb21iaW5lZF9jb3VudDtcbiYjNDM7XG4mIzQzO1x0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbiYjNDM7XHRcdHd4dmZfY2xvc2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0d3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gZXJyX291dDtcbiYjNDM7XG4mIzQzO1x0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkge1xuJiM0MztcdFx0cmV0ID0gd3h2Zl9vcGVuKGRldik7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRnb3RvIGVycl9jbG9zZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2Nsb3NlOlxuJiM0MztcdHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUod3gpO1xuJiM0MztlcnJfb3V0OlxuJiM0MztcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCA9IHJzc19saW1pdDtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIHUzMiB3eF9yc3NfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuIHtcbiBcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuQEAgLTg1Miw2ICYjNDM7OTE0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcbiBcdC5zZXRfY29hbGVzY2VcdFx0PSB3eF9zZXRfY29hbGVzY2UsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuIFx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSB3eF9nZXRfbGlua19rc2V0dGluZ3NfdmYsXG4mIzQzO1x0LmdldF9jaGFubmVsc1x0XHQ9IHd4X2dldF9jaGFubmVsc192ZixcbiYjNDM7XHQuc2V0X2NoYW5uZWxzXHRcdD0gd3hfc2V0X2NoYW5uZWxzX3ZmLFxuIH07XG4gXG4gdm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xuaW5kZXggNzMyNWI0NzVlZTEwYy4uNmZlYzNhYjVlNGU0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNcbkBAIC0yMzcsNyAmIzQzOzIzNyw3IEBAIHZvaWQgd3hfc2V0dXBfdmZtcnFjX3ZmKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHR2Zm1ycWMgfD0gV1hfVlhNUlFDX1JTU19FTjtcbiBcbi1cdGlmICh3eC1cdTAwM2VudW1fcnhfcXVldWVzIFx1MDAzZSAzKVxuJiM0MztcdGlmICh3eC1cdTAwM2VudW1fcnhfcXVldWVzIFx1MDAzZT0gMylcbiBcdFx0dmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfSEFTSCgyKTtcbiBcdGVsc2UgaWYgKHd4LVx1MDAzZW51bV9yeF9xdWV1ZXMgXHUwMDNlIDEpXG4gXHRcdHZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi42ZTg2NTkwODIwNTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC03Miw2ICYjNDM7NzIsOSBAQCBzdGF0aWMgdm9pZCB0eGdiZXZmX3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4gXHRcdHF1ZXVlID0gbWluX3QodTE2LCB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcywgd3gtXHUwMDNlbWFjLm1heF90eF9xdWV1ZXMpO1xuIFx0XHRyc3MgPSBtaW5fdCh1MTYsIHF1ZXVlLCByc3MpO1xuIFxuJiM0MztcdFx0aWYgKHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdClcbiYjNDM7XHRcdFx0cnNzID0gbWluX3QodTE2LCByc3MsIHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCk7XG4mIzQzO1xuIFx0XHRpZiAod3gtXHUwMDNldmZpbmZvLVx1MDAzZXZmX2FwaSBcdTAwM2U9IHd4X21ib3hfYXBpXzEzKSB7XG4gXHRcdFx0d3gtXHUwMDNlbnVtX3J4X3F1ZXVlcyA9IHJzcztcbiBcdFx0XHR3eC1cdTAwM2VudW1fdHhfcXVldWVzID0gcnNzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIGRyaXZlciBhbmQgaXRzIHNoYXJlZCBsaWJyYXJ5ICh0eGdiZXZmLCBsaWJ3eCkgdG8gaW1wbGVtZW50IGV0aHRvb2wgZ2V0L3NldCBjaGFubmVscyBjYWxsYmFja3MgYW5kIGFkanVzdCBSU1MgcXVldWUgY29uZmlndXJhdGlvbi4gVGhlc2UgZHJpdmVycyB0YXJnZXQgcGh5c2ljYWwgV2FuZ3h1biBQQ0llIE5JQyBoYXJkd2FyZSAoU1AxMDAwLCBXWDE4MjAsIGV0Yy4pIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE3ODU1YjAwMGU3NGI1MzRmNzdjZDc4Y2Y5ZjRhYTFkMzUyNjQ1NjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxMTo1NDowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMKaW5kZXggOTQwZDJlNTk4NzZjNy4uZDI0MzcwNzkwOTQxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMKQEAgLTU2NCw2ICYjNDM7NTY0LDY4IEBAIGludCB3eF9zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIH0KIEVYUE9SVF9TWU1CT0wod3hfc2V0X2NoYW5uZWxzKTsKIAomIzQzO3N0YXRpYyB2b2lkIHd4X2dldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCSAgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsKJiM0MzsJLyogcmVwb3J0IG1heGltdW0gY2hhbm5lbHMgKi8KJiM0MzsJY2gtJmd0O21heF9jb21iaW5lZCA9IHd4LSZndDttYWMubWF4X3J4X3F1ZXVlczsKJiM0MzsKJiM0MzsJY2gtJmd0O21heF9vdGhlciA9IDE7CiYjNDM7CWNoLSZndDtvdGhlcl9jb3VudCA9IDE7CiYjNDM7CiYjNDM7CS8qIHJlY29yZCBjdXJyZW50IGNoYW5uZWxzICovCiYjNDM7CWNoLSZndDtjb21iaW5lZF9jb3VudCA9IHd4LSZndDtudW1fcnhfcXVldWVzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCSAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwl1MTYgcnNzX2xpbWl0OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyc3NfbGltaXQgPSB3eC0mZ3Q7cmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0OwomIzQzOwomIzQzOwkvKiB2ZXJpZnkgb3RoZXJfY291bnQgaGFzIG5vdCBjaGFuZ2VkICovCiYjNDM7CWlmIChjaC0mZ3Q7b3RoZXJfY291bnQgIT0gMSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwkvKiB2ZXJpZnkgdGhlIG51bWJlciBvZiBjaGFubmVscyBkb2VzIG5vdCBleGNlZWQgaGFyZHdhcmUgbGltaXRzICovCiYjNDM7CWlmIChjaC0mZ3Q7Y29tYmluZWRfY291bnQgJmd0OyB3eC0mZ3Q7bWFjLm1heF9yeF9xdWV1ZXMpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJLyogaWYgZGV2aWNlIGlzIHJlc2V0dGluZywgZG8gbm90aGluZyAqLwomIzQzOwlpZiAodGVzdF9iaXQoV1hfU1RBVEVfUkVTRVRUSU5HLCB3eC0mZ3Q7c3RhdGUpKQomIzQzOwkJcmV0dXJuIC1FQlVTWTsKJiM0MzsKJiM0MzsJd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCA9IGNoLSZndDtjb21iaW5lZF9jb3VudDsKJiM0MzsKJiM0MzsJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkKJiM0MzsJCXd4dmZfY2xvc2UoZGV2KTsKJiM0MzsKJiM0MzsJd3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiYjNDM7CiYjNDM7CXJldCA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIGVycl9vdXQ7CiYjNDM7CiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKGRldikpIHsKJiM0MzsJCXJldCA9IHd4dmZfb3BlbihkZXYpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlnb3RvIGVycl9jbG9zZTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfY2xvc2U6CiYjNDM7CXd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUod3gpOwomIzQzO2Vycl9vdXQ6CiYjNDM7CXd4LSZndDtyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3NfbGltaXQ7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogdTMyIHd4X3Jzc19pbmRpcl9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiB7CiAJc3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KG5ldGRldik7CkBAIC04NTIsNiAmIzQzOzkxNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgd3hfZXRodG9vbF9vcHNfdmYgPSB7CiAJLnNldF9jb2FsZXNjZQkJPSB3eF9zZXRfY29hbGVzY2UsCiAJLmdldF90c19pbmZvCQk9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sCiAJLmdldF9saW5rX2tzZXR0aW5ncwk9IHd4X2dldF9saW5rX2tzZXR0aW5nc192ZiwKJiM0MzsJLmdldF9jaGFubmVscwkJPSB3eF9nZXRfY2hhbm5lbHNfdmYsCiYjNDM7CS5zZXRfY2hhbm5lbHMJCT0gd3hfc2V0X2NoYW5uZWxzX3ZmLAogfTsKIAogdm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jCmluZGV4IDczMjViNDc1ZWUxMGMuLjZmZWMzYWI1ZTRlNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYwpAQCAtMjM3LDcgJiM0MzsyMzcsNyBAQCB2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KQogCiAJdmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfRU47CiAKLQlpZiAod3gtJmd0O251bV9yeF9xdWV1ZXMgJmd0OyAzKQomIzQzOwlpZiAod3gtJmd0O251bV9yeF9xdWV1ZXMgJmd0Oz0gMykKIAkJdmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfSEFTSCgyKTsKIAllbHNlIGlmICh3eC0mZ3Q7bnVtX3J4X3F1ZXVlcyAmZ3Q7IDEpCiAJCXZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMKaW5kZXggOGIxNmI5MDA4MjBhYS4uNmU4NjU5MDgyMDUxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYwpAQCAtNzIsNiAmIzQzOzcyLDkgQEAgc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KQogCQlxdWV1ZSA9IG1pbl90KHUxNiwgd3gtJmd0O21hYy5tYXhfcnhfcXVldWVzLCB3eC0mZ3Q7bWFjLm1heF90eF9xdWV1ZXMpOwogCQlyc3MgPSBtaW5fdCh1MTYsIHF1ZXVlLCByc3MpOwogCiYjNDM7CQlpZiAod3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCkKJiM0MzsJCQlyc3MgPSBtaW5fdCh1MTYsIHJzcywgd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCk7CiYjNDM7CiAJCWlmICh3eC0mZ3Q7dmZpbmZvLSZndDt2Zl9hcGkgJmd0Oz0gd3hfbWJveF9hcGlfMTMpIHsKIAkJCXd4LSZndDtudW1fcnhfcXVldWVzID0gcnNzOwogCQkJd3gtJmd0O251bV90eF9xdWV1ZXMgPSByc3M7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBFdmFsdWF0aW9uOiBXYW5neHVuIEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJIHNlZSBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY2AsIGB3eF92Zl9saWIuY2AsIGFuZCBgdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIEhtbSwgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXJzLiBSaWdodCwgYHR4Z2JldmZgIGlzIHRoZWlyIDEwR2JFIFBDSSBFeHByZXNzIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLCBhbmQgYGxpYnd4YCBpcyB0aGVpciBjb21tb24gbGlicmFyeS4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGFyZSB0aGVzZSBkcml2ZXJzIHRhcmdldGluZyBoYXJkd2FyZSB0aGF0JiMzOTtzIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBMZXQgbWUgcHVsbCB1cCB0aGUgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeSwgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBkZWNpZGluZyBmYWN0b3IuIE9rYXksIGhlcmUgd2UgZ286ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KCkkgbmVlZCB0byBjb25maXJtIGlmIFdhbmd4dW4gZXRoZXJuZXQgaXMgZW11bGF0ZWQuIEZyb20gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIGtpbmRzIG9mIE5JQ3MsIFdhbmd4dW4gKFRlY2htYW4pIGlzIGEgQ2hpbmVzZSBOSUMgdmVuZG9yLiBUaGV5IG1ha2UgcGh5c2ljYWwgTklDcy4gYFR4Z2JlYCBpcyBhIDEwR2JFIFBDSSBFeHByZXNzIE5ldHdvcmsgQ29udHJvbGxlciwgYW5kIGBOZ2JlYCBpcyAxR2JFLiBUaGV5IGFyZSBub3Qga25vd24gZm9yIGJlaW5nIGVhc2lseSB2aXJ0dWFsaXplZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBkcml2ZXIgc291cmNlIGNvZGUsIEtjb25maWcgZmlsZXMsIGFuZCBQQ0kgSURzIHRvIGNvbmZpcm0gdGhhdCB0aGV5IHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUWEdCRVZGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1biYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9NDM9Y29uZmlnIFRYR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDc0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIFdhbmd4dW4gRXRoZXJuZXQgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZ2AgZmlsZS4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgV2FuZ3h1biBFdGhlcm5ldCBkcml2ZXIgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgb3B0aW9ucyBpdCBleHBvc2VzIHRvIHRoZSB1c2VyIGR1cmluZyBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipEZXBlbmRlbmNpZXM6KiogQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBwcmVyZXF1aXNpdGVzLCBvdGhlciBrZXJuZWwgbW9kdWxlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCwgb3Igb3RoZXIgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhpcyBkcml2ZXIgcmVsaWVzIHVwb24/IEkmIzM5O2xsIGJlIHdhdGNoaW5nIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4KKiAgICoqSGFyZHdhcmUgVmFyaWFudHMvRmVhdHVyZSBTZWxlY3Rpb246KiogRG9lcyB0aGlzIEtjb25maWcgaGFuZGxlIG11bHRpcGxlIFdhbmd4dW4gRXRoZXJuZXQgY29udHJvbGxlcnM/IElmIHNvLCBhcmUgdGhlcmUgc3BlY2lmaWMgb3B0aW9ucyB0byBjaG9vc2UgYmV0d2VlbiBkaWZmZXJlbnQgbW9kZWxzLCBzcGVlZHMgKGUuZy4sIDEwLzEwMC8xMDAwIE1icHMpLCBvciBQSFkgY29uZmlndXJhdGlvbnM/IEkgd2lsbCBsb29rIGZvciB2YXJpb3VzIHN5bWJvbCBkZWZpbml0aW9ucyB1c2luZyBgY29uZmlnYC4KKiAgICoqTW9kdWxlIEJ1aWxkOioqIElzIHRoZSBkcml2ZXIgY29tcGlsZWQgYXMgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBvcHRpb25hbGx5IGFzIGJvdGg/IFRoaXMgd2lsbCBiZSBpbmRpY2F0ZWQgYnkgdGhlIGB0cmlzdGF0ZWAgc2V0dGluZyBvciBzaW1pbGFyLgoqICAgKipEZWJ1Z2dpbmcvQWR2YW5jZWQgT3B0aW9uczoqKiBBcmUgdGhlcmUgYW55IGRlYnVnIGZlYXR1cmVzIG9yIGFkdmFuY2VkIG9wdGlvbnMgZXhwb3NlZCB0byB1c2Vycywgb3IganVzdCBjb3JlIGZlYXR1cmVzPyBUaGVzZSBjb3VsZCBiZSBsb2dnaW5nIGxldmVscywgcGVyZm9ybWFuY2UgY291bnRlcnMsIG9yIG90aGVyIGRpYWdub3N0aWNzIHRoYXQgaGVscCB3aXRoIHRyb3VibGVzaG9vdGluZy4gSSYjMzk7bGwgbG9vayBmb3IgYGJvb2xgLCBgaW50YCwgYW5kIGBzdHJpbmdgIG9wdGlvbnMgd2l0aCBzcGVjaWZpYyBoZWxwIHRleHQuCiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBjaG9zZW4/IFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHRzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleHBlY3RlZCB1c2FnZSBhbmQgdHlwaWNhbCBjb25maWd1cmF0aW9ucy4KKiAgICoqSGllcmFyY2h5OioqIEhvdyBpcyB0aGlzIEtjb25maWcgZmlsZSBzdHJ1Y3R1cmVkIHJlbGF0aXZlIHRvIG90aGVyIEtjb25maWcgZmlsZXM/IElzIGl0IHBhcnQgb2YgYSBsYXJnZXIgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLCBvciBtb3JlIGlzb2xhdGVkPyBJJiMzOTtsbCBsb29rIGZvciBpbmNsdWRlcyBvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgS2NvbmZpZyBmaWxlcy4KCkJ5IGNhcmVmdWxseSBleGFtaW5pbmcgdGhlc2UgYXNwZWN0cywgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBwcmV0dHkgZ29vZCBncmFzcCBvZiBob3cgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIGZpdHMgaW50byB0aGUgTGludXgga2VybmVsIGFuZCBob3cgaXQgY2FuIGJlIGNvbmZpZ3VyZWQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcmVhZGluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIHRoZW4gZHJpbGwgZG93biBpbnRvIGVhY2ggb3B0aW9uIGFzIG5lY2Vzc2FyeS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdhbmd4dW4gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gICA3Olx0XHRib29sIFwmIzM0O1dhbmd4dW4gZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZnJvbSBXYW5neHVuKFIpLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBXYW5neHVuKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE1Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIExJQldYXG4gIDIwOlx0XHR0cmlzdGF0ZVxuICAyMTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyMzpcdFx0c2VsZWN0IERJTUxJQlxuICAyNDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdENvbW1vbiBsaWJyYXJ5IGZvciBXYW5neHVuKFIpIEV0aGVybmV0IGRyaXZlcnMuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE5HQkVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gUENJXG4gIDMxOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDMyOlx0XHRzZWxlY3QgTElCV1hcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgV2FuZ3h1bihSKSBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDM1Olx0XHQgIGFkYXB0ZXJzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgMzg6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlLnJzdFx1MDAzZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA0MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZ2JlLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBUWEdCRVxuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0NjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gIDQ3Olx0XHRkZXBlbmRzIG9uIEkyQ19ERVNJR05XQVJFX1BMQVRGT1JNXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQ5Olx0XHRzZWxlY3QgTUFSVkVMTF8xMEdfUEhZXG4gIDUwOlx0XHRzZWxlY3QgUkVHTUFQXG4gIDUxOlx0XHRzZWxlY3QgSFdNT04gaWYgVFhHQkU9eVxuICA1MjpcdFx0c2VsZWN0IFNGUFxuICA1MzpcdFx0c2VsZWN0IEdQSU9MSUJcbiAgNTQ6XHRcdHNlbGVjdCBHUElPTElCX0lSUUNISVBcbiAgNTU6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICA1NjpcdFx0c2VsZWN0IExJQldYXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFdhbmd4dW4oUikgMTAvMjUvNDBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDU5Olx0XHQgIGFkYXB0ZXJzLlxuICA2MDpcdFxuICA2MTpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgNjI6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcdTAwM2UuXG4gIDYzOlx0XG4gIDY0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgNjU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdHhnYmUuXG4gIDY2Olx0XG4gIDY3Olx0Y29uZmlnIFRYR0JFVkZcbiAgNjg6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICA2OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzA6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA3MjpcdFx0c2VsZWN0IExJQldYXG4gIDczOlx0XHRoZWxwXG4gIDc0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBTUDEwMDBBLCBXWDE4MjBBTCxcbiAgNzU6XHRcdCAgV1g1WFhYLCBXWDVYWFhBTC5cbiAgNzY6XHRcbiAgNzc6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIHR4Z2JldmYuXG4gIDc4Olx0XG4gIDc5Olx0XHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuICA4MDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XHUwMDNlLlxuICA4MTpcdFxuICA4MjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBNU0ktWCBpbnRlcnJ1cHRcbiAgODM6XHRcdCAgc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXG4gIDg0Olx0XG4gIDg1Olx0Y29uZmlnIE5HQkVWRlxuICA4NjpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg3Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAgODg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgODk6XHRcdHNlbGVjdCBMSUJXWFxuICA5MDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NTIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRYR0JFVkYgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYFRYR0JFVkZgIGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZm91bmRhdGlvbmFsIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgdG8gcmVseSBoZWF2aWx5IG9uIFBDSSwgYW5kIHNwZWNpZmljYWxseSBQQ0lfTVNJLCB3aGljaCBpcyBleHBlY3RlZC4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSwgYXMgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aG9zZSBwcm90b2NvbHMgaXMgZ29pbmcgdG8gYmUga2V5LgoKTmV4dCwgSSBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCB2aXJ0dWFsIGZ1bmN0aW9uczogU1AxMDAwQSwgV1gxODIwQUwsIFdYNVhYWCwgV1g1WFhYQUwuIFRoYXQmIzM5O3MgYSBkZWNlbnQgcmFuZ2Ugb2YgaGFyZHdhcmUgcGxhdGZvcm1zLiBCdXQsIGp1c3QgdG8gY292ZXIgYWxsIG15IGJhc2VzLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJyYWluc3Rvcm1pbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gQXJlIHRoZXJlIGFueSBtb2NrIGRyaXZlcnMsIHBlcmhhcHMgYSBVU0IgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgdG8gc3VwcG9ydCBpdHMgdGVzdGluZyBvciBvcGVyYXRpb24gaW4gYSBub24tc3RhbmRhcmQgY29uZmlndXJhdGlvbj8gSSB3b3VsZCBsaWtlIHRvIGNvbnNpZGVyIGFsbCB0aGUgZGlmZmVyZW50IHdheXMgdGhhdCB0aGlzIGRyaXZlciBjb3VsZCBiZSBkZXBsb3llZC4KClRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBjb3JlIGxvZ2ljIGFuZCBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGB0eGdiZXZmX21haW4uY2AuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1haW4gZnVuY3Rpb25hbGl0aWVzLCBpbml0aWFsaXphdGlvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdC8qIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMjUgQmVpamluZyBXYW5nWHVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuICovXG4gICAzOlx0XG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICAxMDpcdFxuICAxMTpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X3R5cGUuaFwmIzM0O1xuICAxMjpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X2h3LmhcJiMzNDtcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDsuLi9saWJ3eC93eF9saWIuaFwmIzM0O1xuICAxNDpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X21ieC5oXCYjMzQ7XG4gIDE1Olx0I2luY2x1ZGUgXCYjMzQ7Li4vbGlid3gvd3hfdmYuaFwmIzM0O1xuICAxNjpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X3ZmX2NvbW1vbi5oXCYjMzQ7XG4gIDE3Olx0I2luY2x1ZGUgXCYjMzQ7Li4vbGlid3gvd3hfZXRodG9vbC5oXCYjMzQ7XG4gIDE4Olx0I2luY2x1ZGUgXCYjMzQ7dHhnYmV2Zl90eXBlLmhcJiMzNDtcbiAgMTk6XHRcbiAgMjA6XHQvKiB0eGdiZXZmX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXG4gIDIxOlx0ICpcbiAgMjI6XHQgKiBXaWxkY2FyZCBlbnRyaWVzIChQQ0lfQU5ZX0lEKSBzaG91bGQgY29tZSBsYXN0XG4gIDIzOlx0ICogTGFzdCBlbnRyeSBtdXN0IGJlIGFsbCAwc1xuICAyNDpcdCAqXG4gIDI1Olx0ICogeyBWZW5kb3IgSUQsIERldmljZSBJRCwgU3ViVmVuZG9yIElELCBTdWJEZXZpY2UgSUQsXG4gIDI2Olx0ICogICBDbGFzcywgQ2xhc3MgTWFzaywgcHJpdmF0ZSBkYXRhIChub3QgdXNlZCkgfVxuICAyNzpcdCAqL1xuICAyODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCB0eGdiZXZmX3BjaV90YmxbXSA9IHtcbiAgMjk6XHRcdHsgUENJX1ZERVZJQ0UoV0FOR1hVTiwgVFhHQkVWRl9ERVZfSURfU1AxMDAwKSB9LFxuICAzMDpcdFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9XWDE4MjApIH0sXG4gIDMxOlx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUwMEYpIH0sXG4gIDMyOlx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUxMEYpIH0sXG4gIDMzOlx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUwMjQpIH0sXG4gIDM0Olx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUxMjQpIH0sXG4gIDM1Olx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUwM0YpIH0sXG4gIDM2Olx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUxM0YpIH0sXG4gIDM3Olx0XHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4gIDM4Olx0XHR7IH1cbiAgMzk6XHR9O1xuICA0MDpcdFxuICA0MTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHhnYmV2Zl9uZXRkZXZfb3BzID0ge1xuICA0MjpcdFx0Lm5kb19vcGVuICAgICAgICAgICAgICAgPSB3eHZmX29wZW4sXG4gIDQzOlx0XHQubmRvX3N0b3AgICAgICAgICAgICAgICA9IHd4dmZfY2xvc2UsXG4gIDQ0Olx0XHQubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IHd4X3htaXRfZnJhbWUsXG4gIDQ1Olx0XHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxuICA0NjpcdFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLFxuICA0NzpcdH07XG4gIDQ4Olx0XG4gIDQ5Olx0c3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxuICA1MDpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTg3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFdhbmd4dW4gRXRoZXJuZXQgU1JJT1YgVmlydHVhbCBGdW5jdGlvbiBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgV2FuZ3h1biBFdGhlcm5ldCBTUklPViBWaXJ0dWFsIEZ1bmN0aW9ucy4gSXQmIzM5O3MgYSBzdGFuZGFyZCBQQ0kgZHJpdmVyLCB0YXJnZXRpbmcgdGhlIFdBTkdYVU4gdmVuZG9yIElELCB3aGljaCByZXByZXNlbnRzIGFjdHVhbCBXYW5neHVuIGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoaXMgaGFyZHdhcmUgaXMgYXZhaWxhYmxlIHRvIHN0YW5kYXJkIFFFTVUuCgpMb29raW5nIGF0IHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHRoZSB0ZXh0IG1lbnRpb25zICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IGFuZCBsaXN0cyBleGFtcGxlcyBsaWtlIG1seHN3LCBwZHNfY29yZSwgYW5kIGFtZGdwdSwgd2hpY2ggYWxsIHJlcXVpcmUgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBoZWFkcyB1cC4gTm93LCBhcmUgV2FuZ3h1biBOSUNzIGhhbmRsZWQgYnkgc3RhbmRhcmQgUUVNVT8KCkkgbmVlZCB0byBjb25maXJtIGlmIFdhbmd4dW4gTklDcyBhcmUsIGluZGVlZCwgZW11bGF0ZWQgaW4gUUVNVS4gQSBxdWljayBjaGVjayBvZiBRRU1VJiMzOTtzIHN1cHBvcnRlZCBkZXZpY2VzIHJldmVhbHMgdGhhdCB0aGV5IHN1cHBvcnQgdGhlIGxpa2VzIG9mIGUxMDAwLCBlMTAwMGUsIGFuZCB2aXJ0aW8tbmV0LCBhbW9uZyBvdGhlcnMsIGJ1dCBub3QgV2FuZ3h1biB0eGdiZS9uZ2JlL3R4Z2JldmYgTklDcy4gU28gaXQgZG9lc24mIzM5O3QgbG9vayBsaWtlIHRoZXkgYXJlLiBJdCBiaW5kcyB0byB0aGUgV0FOR1hVTiB2ZW5kb3IgSUQsIHdoaWNoIEkmIzM5O2xsIGNvbmZpcm0uCgpOb3cgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIFBDSV9WRU5ET1JfSURfV0FOR1hVTiB0byBnZXQgYSBzb2xpZCBoYW5kbGUgb24gdGhhdCB2ZW5kb3IgSUQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDSV9WRU5ET1JfSURfV0FOR1hVTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjQ3Mj1pbnQgd3hfc3dfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yNDg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjI0OTA6XHRpZiAod3gtXHUwMDNlb2VtX3N2aWQgPT0gUENJX1ZFTkRPUl9JRF9XQU5HWFVOIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjQ5MS1cdCAgICBwZGV2LVx1MDAzZWlzX3ZpcnRmbikge1xuLS1cbmRyaXZlcnMvcGNpL3F1aXJrcy5jPTUwODA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2X2Fjc19lbmFibGVkIHtcbi0tXG5kcml2ZXJzL3BjaS9xdWlya3MuYy01MjQ2LVx0LyogV2FuZ3h1biBuaWNzICovXG5kcml2ZXJzL3BjaS9xdWlya3MuYzo1MjQ3Olx0eyBQQ0lfVkVORE9SX0lEX1dBTkdYVU4sIFBDSV9BTllfSUQsIHBjaV9xdWlya193YW5neHVuX25pY19hY3MgfSxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTUyNDgtXHR7IDAgfVxuLS1cbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTMxNjktXG5pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaDozMTcwOiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9XQU5HWFVOXHRcdDB4ODA4OFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMzE3MS1cbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnM9MTcyPSAgICBmbiBmbXQoXHUwMDI2c2VsZiwgZjogXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTYzLSAgICBJTlRFTCAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9JTlRFTCwgICAgICAgICAgICAgICAgICAgIC8vIDB4ODA4NlxucnVzdC9rZXJuZWwvcGNpL2lkLnJzOjU2NDogICAgV0FOR1hVTiAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfV0FOR1hVTiwgICAgICAgICAgICAgICAgICAvLyAweDgwODhcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycy01NjUtICAgIFNDQUxFTVAgICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX1NDQUxFTVAsICAgICAgICAgICAgICAgICAgLy8gMHg4Njg2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZG93bnN0cmVhbSBpbXBhY3Qgb2YgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hvIGVsc2UgaXMgdG91Y2hpbmcgdGhlIGNvZGUgdGhhdCAqdGhpcyogY29kZSBtb2RpZmllcz8mIzM0OyBJIG5lZWQgdG8gc2VlIGlmIGFueXRoaW5nIGVsc2UgaXMgdXNpbmcgYGxpYnd4YCwgYHd4X2V0aHRvb2xfb3BzX3ZmYCwgb3IgYW55dGhpbmcgZWxzZSB0aGlzIHBhdGNoIGlzIGRlYWxpbmcgd2l0aC4gTXkgbmV4dCBzdGVwPyBJIG5lZWQgdG8gdXNlIGBncmVwYC4gSSYjMzk7bGwgc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGB3eF9zZXRfZXRodG9vbF9vcHNfdmZgIHRvIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYW5kIHdoYXQgcmVsaWVzIG9uIHRoaXMuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhIGRlZXBlciBkaXZlIGludG8gdW5kZXJzdGFuZGluZyB0aGUgcmlwcGxlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NldF9ldGh0b29sX29wc192ZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYz05MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYy05MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYzo5MjE6dm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jLTkyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtOTI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jOjkyNTpFWFBPUlRfU1lNQk9MKHd4X3NldF9ldGh0b29sX29wc192Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmg9NjE9dm9pZCB3eF9nZXRfcHRwX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuaC02Mi1cdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfdHNfc3RhdHMgKnRzX3N0YXRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5oOjYzOnZvaWQgd3hfc2V0X2V0aHRvb2xfb3BzX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmgtNjQtI2VuZGlmIC8qIF9XWF9FVEhUT09MX0hfICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYz0xMzY9c3RhdGljIGludCBuZ2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0xOTAtXHR3eC1cdTAwM2Vkcml2ZXJfbmFtZSA9IEtCVUlMRF9NT0ROQU1FO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYzoxOTE6XHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMtMTkyLVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmM9MTk2PXN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjU4LVx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYzoyNTk6XHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYy0yNjAtXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnR4Z2JldmZfbmV0ZGV2X29wcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyOTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIERyaXZlciBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IGB3eF9zZXRfZXRodG9vbF9vcHNfdmZgIGlzIG9ubHkgY2FsbGVkIGJ5IGBuZ2JldmZfcHJvYmVgIGFuZCBgdHhnYmV2Zl9wcm9iZWAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBQQ0kgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJzIHNwZWNpZmljIHRvIFdhbmd4dW4mIzM5O3MgZXRoZXJuZXQgaGFyZHdhcmUsIGxpa2VseSB0aGUgR2JFIGFuZCAxMEdiRSB2ZXJzaW9ucy4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4KClRoZW4sIG15IGV5ZSBjYXRjaGVzIGB3eF9zZXR1cF92Zm1ycWNfdmZgIHdpdGhpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY2AuIENsZWFybHksIHRoaXMgaXMgYW5vdGhlciBrZXkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgVmlydHVhbCBGdW5jdGlvbiBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIHNvIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpdHMgY2FsbCBzaXRlcyB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgVkYgTVJRQyAoTXVsdGktUmVjZWl2ZSBRdWV1ZSBDb250ZXh0KSBpcyBiZWluZyBzZXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NldHVwX3ZmbXJxY192ZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jPTE4OT1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcnhfdmYoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTE5NC1cdHd4X3NldHVwX3BzcnR5cGVfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoxOTU6XHR3eF9zZXR1cF92Zm1ycWNfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYz0xOTY9dm9pZCB3eF9zZXR1cF9wc3J0eXBlX3ZmKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYy0yMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jOjIwODp2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYy0yMDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmg9MTA9dm9pZCB3eF9zZXR1cF9wc3J0eXBlX3ZmKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuaDoxMTp2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmgtMTItdm9pZCB3eF9jb25maWd1cmVfdHhfdmYoc3RydWN0IHd4ICp3eCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTE5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB3eF9jb25maWd1cmVfcnhfdmZgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIEkgc2VlIHRoaXMgYHd4X2NvbmZpZ3VyZV9yeF92ZmAgZnVuY3Rpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRoZSBvbmUgdGhhdCBhbHdheXMgcG9wcyB1cCBmaXJzdCB3aGVuIEkmIzM5O20gcmV2ZXJzZSBlbmdpbmVlcmluZyBjb2RlLCBpcyAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgdXNlZD8gV2hlcmUgYXJlIHRoZSBjYWxsc2l0ZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHRoZSBkYXRhIHRoYXQmIzM5O3MgYmVpbmcgZmVkIGludG8gaXQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgbGF5ZXJzLCB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBrbm93IHdoZXJlIHRoaXMgc3BlY2lmaWMgbG9naWMgc2l0cyB3aXRoaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBXaXRob3V0IGtub3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGl0JiMzOTtzIGp1c3QgYSBsb25lbHkgcGllY2Ugb2YgY29kZS4gTm93IHRvIGZpbmQgd2hlcmUgdGhlIGNhbGxzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d3hfY29uZmlndXJlX3J4X3ZmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MTgxPUVYUE9SVF9TWU1CT0wod3hfc2V0X3J4X21vZGVfdmYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMTgzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoxODQ6ICogd3hfY29uZmlndXJlX3J4X3ZmIC0gQ29uZmlndXJlIFJlY2VpdmUgVW5pdCBhZnRlciBSZXNldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xODUtICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMTg4LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM6MTg5OnN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9yeF92ZihzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xOTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MjE2PXZvaWQgd3hfY29uZmlndXJlX3ZmKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0yMTktXHR3eF9jb25maWd1cmVfdHhfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoyMjA6XHR3eF9jb25maWd1cmVfcnhfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0yMjEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczNgoJCQkJCQkJb3V0cHV0OiAxMjEKCQkJCQkJCXRob3VnaHRzOiA0ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjZWQgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgd3hfY29uZmlndXJlX3ZmYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgYnkgYHd4dmZfb3BlbmAgYW5kIGB3eHZmX3VwX2NvbXBsZXRlYCB3aXRoaW4gdGhlIGB3eF92Zl9jb21tb24uY2AgZmlsZS4gVGhpcyB3aG9sZSBhcmVhLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBhbmQgcGFydGljdWxhcmx5IHRoZSBWRiBkcml2ZXJzIGxpa2UgYHR4Z2JldmZgIGFuZCBgbmdiZXZmYCBhbG9uZyB3aXRoIHRoZSBjb21tb24gbGlicmFyeSBgbGlid3hgLCBpcyB2ZW5kb3Itc3BlY2lmaWMgdG8gV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLiBUaGVzZSBkcml2ZXJzIGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlaXIgcGFydGljdWxhciBQQ0llIG5ldHdvcmsgY2FyZHMgYW5kIEFTSUNzIOKAkyB0aGluZ3MgbGlrZSB0aGUgU1AxMDAwIGFuZCBXWDE4MjAuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhlc2UgcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cyAqYXJlbiYjMzk7dCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGlzIHRoZSBzb3J0IG9mIHRoaW5nIHdlJiMzOTtkIGJlIHVzaW5nIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgYmFjayB0byBzZWN0aW9uIDIgb2YgdGhlIHByb21wdC4gWWVzLCBpdCBjbGVhcmx5IHN0YXRlcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaXMgJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuIFRoaXMgYWxpZ25zICpwZXJmZWN0bHkqIHdpdGggdGhpcyBXYW5neHVuIGRyaXZlciBzaXR1YXRpb24uCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGRlcGVuZHMgb24gaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgYXZhaWxhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LCB0aGlzIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGh1czoKCiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYAoqICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5LCBubyBzeW1ib2xzIHRvIGZvY3VzIG9uKQoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgW11gIChlbXB0eSwgbm8gY29uZmlncyB0byBlbmFibGUpCiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIFdhbmd4dW4gZXRoZXJuZXQgZHJpdmVycyAodHhnYmV2ZiwgbGlid3gpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgV2FuZ3h1biBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4KCkkmIzM5O3ZlIGFsc28gZG91YmxlLWNoZWNrZWQgdGhlIHNwZWNpZmljIGZpbGVzIHRoYXQgd2VyZSBtb2RpZmllZDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIFRoZXkgYXJlIGFsbCBzdHJpY3RseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBjb25maXJtaW5nIHRoYXQgbm8gY29yZSBuZXR3b3JraW5nIGNvZGUgaXMgdG91Y2hlZC4gRXZlcnl0aGluZyBpcyBjbGVhciBhbmQgdW5hbWJpZ3VvdXMuIEkgYW0gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBWRiBkcml2ZXIgYW5kIGl0cyBzaGFyZWQgbGlicmFyeSAodHhnYmV2ZiwgbGlid3gpIHRvIGltcGxlbWVudCBldGh0b29sIGdldC9zZXQgY2hhbm5lbHMgY2FsbGJhY2tzIGFuZCBhZGp1c3QgUlNTIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFRoZXNlIGRyaXZlcnMgdGFyZ2V0IHBoeXNpY2FsIFdhbmd4dW4gUENJZSBOSUMgaGFyZHdhcmUgKFNQMTAwMCwgV1gxODIwLCBldGMuKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIGRyaXZlciBhbmQgaXRzIHNoYXJlZCBsaWJyYXJ5ICh0eGdiZXZmLCBsaWJ3eCkgdG8gaW1wbGVtZW50IGV0aHRvb2wgZ2V0L3NldCBjaGFubmVscyBjYWxsYmFja3MgYW5kIGFkanVzdCBSU1MgcXVldWUgY29uZmlndXJhdGlvbi4gVGhlc2UgZHJpdmVycyB0YXJnZXQgcGh5c2ljYWwgV2FuZ3h1biBQQ0llIE5JQyBoYXJkd2FyZSAoU1AxMDAwLCBXWDE4MjAsIGV0Yy4pIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjAxLjk0MDcxMDQ2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MDE5MTkyOTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgZHJpdmVyIGFuZCBpdHMgc2hhcmVkIGxpYnJhcnkgKHR4Z2JldmYsIGxpYnd4KSB0byBpbXBsZW1lbnQgZXRodG9vbCBnZXQvc2V0IGNoYW5uZWxzIGNhbGxiYWNrcyBhbmQgYWRqdXN0IFJTUyBxdWV1ZSBjb25maWd1cmF0aW9uLiBUaGVzZSBkcml2ZXJzIHRhcmdldCBwaHlzaWNhbCBXYW5neHVuIFBDSWUgTklDIGhhcmR3YXJlIChTUDEwMDAsIFdYMTgyMCwgZXRjLikgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDowMS45NDA3MTU1NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjAxODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE3ODU1YjAwMGU3NGI1MzRmNzdjZDc4Y2Y5ZjRhYTFkMzUyNjQ1NjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTE6NTQ6MDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xcbmluZGV4IDk0MGQyZTU5ODc2YzcuLmQyNDM3MDc5MDk0MTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xcbkBAIC01NjQsNiArNTY0LDY4IEBAIGludCB3eF9zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4X3NldF9jaGFubmVscyk7XFxuIFxcbitzdGF0aWMgdm9pZCB3eF9nZXRfY2hhbm5lbHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaClcXG4re1xcbitcXHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFxuK1xcdC8qIHJlcG9ydCBtYXhpbXVtIGNoYW5uZWxzICovXFxuK1xcdGNoLVxcdTAwM2VtYXhfY29tYmluZWQgPSB3eC1cXHUwMDNlbWFjLm1heF9yeF9xdWV1ZXM7XFxuK1xcbitcXHRjaC1cXHUwMDNlbWF4X290aGVyID0gMTtcXG4rXFx0Y2gtXFx1MDAzZW90aGVyX2NvdW50ID0gMTtcXG4rXFxuK1xcdC8qIHJlY29yZCBjdXJyZW50IGNoYW5uZWxzICovXFxuK1xcdGNoLVxcdTAwM2Vjb21iaW5lZF9jb3VudCA9IHd4LVxcdTAwM2VudW1fcnhfcXVldWVzO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXFxuK3tcXG4rXFx0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHUxNiByc3NfbGltaXQ7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyc3NfbGltaXQgPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0O1xcbitcXG4rXFx0LyogdmVyaWZ5IG90aGVyX2NvdW50IGhhcyBub3QgY2hhbmdlZCAqL1xcbitcXHRpZiAoY2gtXFx1MDAzZW90aGVyX2NvdW50ICE9IDEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0LyogdmVyaWZ5IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZG9lcyBub3QgZXhjZWVkIGhhcmR3YXJlIGxpbWl0cyAqL1xcbitcXHRpZiAoY2gtXFx1MDAzZWNvbWJpbmVkX2NvdW50IFxcdTAwM2Ugd3gtXFx1MDAzZW1hYy5tYXhfcnhfcXVldWVzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdC8qIGlmIGRldmljZSBpcyByZXNldHRpbmcsIGRvIG5vdGhpbmcgKi9cXG4rXFx0aWYgKHRlc3RfYml0KFdYX1NUQVRFX1JFU0VUVElORywgd3gtXFx1MDAzZXN0YXRlKSlcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuK1xcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSBjaC1cXHUwMDNlY29tYmluZWRfY291bnQ7XFxuK1xcbitcXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbitcXHRcXHR3eHZmX2Nsb3NlKGRldik7XFxuK1xcbitcXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG4rXFxuK1xcdHJldCA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gZXJyX291dDtcXG4rXFxuK1xcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpIHtcXG4rXFx0XFx0cmV0ID0gd3h2Zl9vcGVuKGRldik7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdGdvdG8gZXJyX2Nsb3NlO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl9jbG9zZTpcXG4rXFx0d3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuK2Vycl9vdXQ6XFxuK1xcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3NfbGltaXQ7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIHUzMiB3eF9yc3NfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbkBAIC04NTIsNiArOTE0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcXG4gXFx0LnNldF9jb2FsZXNjZVxcdFxcdD0gd3hfc2V0X2NvYWxlc2NlLFxcbiBcXHQuZ2V0X3RzX2luZm9cXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuIFxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHd4X2dldF9saW5rX2tzZXR0aW5nc192ZixcXG4rXFx0LmdldF9jaGFubmVsc1xcdFxcdD0gd3hfZ2V0X2NoYW5uZWxzX3ZmLFxcbitcXHQuc2V0X2NoYW5uZWxzXFx0XFx0PSB3eF9zZXRfY2hhbm5lbHNfdmYsXFxuIH07XFxuIFxcbiB2b2lkIHd4X3NldF9ldGh0b29sX29wc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xcbmluZGV4IDczMjViNDc1ZWUxMGMuLjZmZWMzYWI1ZTRlNDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNcXG5AQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgd3hfc2V0dXBfdmZtcnFjX3ZmKHN0cnVjdCB3eCAqd3gpXFxuIFxcbiBcXHR2Zm1ycWMgfD0gV1hfVlhNUlFDX1JTU19FTjtcXG4gXFxuLVxcdGlmICh3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlcyBcXHUwMDNlIDMpXFxuK1xcdGlmICh3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlcyBcXHUwMDNlPSAzKVxcbiBcXHRcXHR2Zm1ycWMgfD0gV1hfVlhNUlFDX1JTU19IQVNIKDIpO1xcbiBcXHRlbHNlIGlmICh3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlcyBcXHUwMDNlIDEpXFxuIFxcdFxcdHZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY1xcbmluZGV4IDhiMTZiOTAwODIwYWEuLjZlODY1OTA4MjA1MWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuQEAgLTcyLDYgKzcyLDkgQEAgc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHRxdWV1ZSA9IG1pbl90KHUxNiwgd3gtXFx1MDAzZW1hYy5tYXhfcnhfcXVldWVzLCB3eC1cXHUwMDNlbWFjLm1heF90eF9xdWV1ZXMpO1xcbiBcXHRcXHRyc3MgPSBtaW5fdCh1MTYsIHF1ZXVlLCByc3MpO1xcbiBcXG4rXFx0XFx0aWYgKHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQpXFxuK1xcdFxcdFxcdHJzcyA9IG1pbl90KHUxNiwgcnNzLCB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0KTtcXG4rXFxuIFxcdFxcdGlmICh3eC1cXHUwMDNldmZpbmZvLVxcdTAwM2V2Zl9hcGkgXFx1MDAzZT0gd3hfbWJveF9hcGlfMTMpIHtcXG4gXFx0XFx0XFx0d3gtXFx1MDAzZW51bV9yeF9xdWV1ZXMgPSByc3M7XFxuIFxcdFxcdFxcdHd4LVxcdTAwM2VudW1fdHhfcXVldWVzID0gcnNzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDowMi40MDc0MzAzMjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYzNTUyNDU4NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBWRiBkcml2ZXIgYW5kIGl0cyBzaGFyZWQgbGlicmFyeSAodHhnYmV2ZiwgbGlid3gpIHRvIGltcGxlbWVudCBldGh0b29sIGdldC9zZXQgY2hhbm5lbHMgY2FsbGJhY2tzIGFuZCBhZGp1c3QgUlNTIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFRoZXNlIGRyaXZlcnMgdGFyZ2V0IHBoeXNpY2FsIFdhbmd4dW4gUENJZSBOSUMgaGFyZHdhcmUgKFNQMTAwMCwgV1gxODIwLCBldGMuKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTc4NTViMDAwZTc0YjUzNGY3N2NkNzhjZjlmNGFhMWQzNTI2NDU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDExOjU0OjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xuaW5kZXggOTQwZDJlNTk4NzZjNy4uZDI0MzcwNzkwOTQxNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xuQEAgLTU2NCw2ICs1NjQsNjggQEAgaW50IHd4X3NldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MKHd4X3NldF9jaGFubmVscyk7XG4gXG4rc3RhdGljIHZvaWQgd3hfZ2V0X2NoYW5uZWxzX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaClcbit7XG4rXHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcbitcdC8qIHJlcG9ydCBtYXhpbXVtIGNoYW5uZWxzICovXG4rXHRjaC1cdTAwM2VtYXhfY29tYmluZWQgPSB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcztcbitcbitcdGNoLVx1MDAzZW1heF9vdGhlciA9IDE7XG4rXHRjaC1cdTAwM2VvdGhlcl9jb3VudCA9IDE7XG4rXG4rXHQvKiByZWNvcmQgY3VycmVudCBjaGFubmVscyAqL1xuK1x0Y2gtXHUwMDNlY29tYmluZWRfY291bnQgPSB3eC1cdTAwM2VudW1fcnhfcXVldWVzO1xuK31cbitcbitzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaClcbit7XG4rXHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdHUxNiByc3NfbGltaXQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cnNzX2xpbWl0ID0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0O1xuK1xuK1x0LyogdmVyaWZ5IG90aGVyX2NvdW50IGhhcyBub3QgY2hhbmdlZCAqL1xuK1x0aWYgKGNoLVx1MDAzZW90aGVyX2NvdW50ICE9IDEpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0LyogdmVyaWZ5IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZG9lcyBub3QgZXhjZWVkIGhhcmR3YXJlIGxpbWl0cyAqL1xuK1x0aWYgKGNoLVx1MDAzZWNvbWJpbmVkX2NvdW50IFx1MDAzZSB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHQvKiBpZiBkZXZpY2UgaXMgcmVzZXR0aW5nLCBkbyBub3RoaW5nICovXG4rXHRpZiAodGVzdF9iaXQoV1hfU1RBVEVfUkVTRVRUSU5HLCB3eC1cdTAwM2VzdGF0ZSkpXG4rXHRcdHJldHVybiAtRUJVU1k7XG4rXG4rXHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSBjaC1cdTAwM2Vjb21iaW5lZF9jb3VudDtcbitcbitcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG4rXHRcdHd4dmZfY2xvc2UoZGV2KTtcbitcbitcdHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUod3gpO1xuK1xuK1x0cmV0ID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gZXJyX291dDtcbitcbitcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpIHtcbitcdFx0cmV0ID0gd3h2Zl9vcGVuKGRldik7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0Z290byBlcnJfY2xvc2U7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbitcbitlcnJfY2xvc2U6XG4rXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbitlcnJfb3V0OlxuK1x0d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0ID0gcnNzX2xpbWl0O1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gdTMyIHd4X3Jzc19pbmRpcl9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4ge1xuIFx0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5AQCAtODUyLDYgKzkxNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgd3hfZXRodG9vbF9vcHNfdmYgPSB7XG4gXHQuc2V0X2NvYWxlc2NlXHRcdD0gd3hfc2V0X2NvYWxlc2NlLFxuIFx0LmdldF90c19pbmZvXHRcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcbiBcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gd3hfZ2V0X2xpbmtfa3NldHRpbmdzX3ZmLFxuK1x0LmdldF9jaGFubmVsc1x0XHQ9IHd4X2dldF9jaGFubmVsc192ZixcbitcdC5zZXRfY2hhbm5lbHNcdFx0PSB3eF9zZXRfY2hhbm5lbHNfdmYsXG4gfTtcbiBcbiB2b2lkIHd4X3NldF9ldGh0b29sX29wc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jXG5pbmRleCA3MzI1YjQ3NWVlMTBjLi42ZmVjM2FiNWU0ZTQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xuQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KVxuIFxuIFx0dmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfRU47XG4gXG4tXHRpZiAod3gtXHUwMDNlbnVtX3J4X3F1ZXVlcyBcdTAwM2UgMylcbitcdGlmICh3eC1cdTAwM2VudW1fcnhfcXVldWVzIFx1MDAzZT0gMylcbiBcdFx0dmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfSEFTSCgyKTtcbiBcdGVsc2UgaWYgKHd4LVx1MDAzZW51bV9yeF9xdWV1ZXMgXHUwMDNlIDEpXG4gXHRcdHZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi42ZTg2NTkwODIwNTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC03Miw2ICs3Miw5IEBAIHN0YXRpYyB2b2lkIHR4Z2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbiBcdFx0cXVldWUgPSBtaW5fdCh1MTYsIHd4LVx1MDAzZW1hYy5tYXhfcnhfcXVldWVzLCB3eC1cdTAwM2VtYWMubWF4X3R4X3F1ZXVlcyk7XG4gXHRcdHJzcyA9IG1pbl90KHUxNiwgcXVldWUsIHJzcyk7XG4gXG4rXHRcdGlmICh3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQpXG4rXHRcdFx0cnNzID0gbWluX3QodTE2LCByc3MsIHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCk7XG4rXG4gXHRcdGlmICh3eC1cdTAwM2V2ZmluZm8tXHUwMDNldmZfYXBpIFx1MDAzZT0gd3hfbWJveF9hcGlfMTMpIHtcbiBcdFx0XHR3eC1cdTAwM2VudW1fcnhfcXVldWVzID0gcnNzO1xuIFx0XHRcdHd4LVx1MDAzZW51bV90eF9xdWV1ZXMgPSByc3M7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDowMi40MDc0MzI2MzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjczODUxOTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEV2YWx1YXRpb246IFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCwgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJIHNlZSBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY2AsIGB3eF92Zl9saWIuY2AsIGFuZCBgdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIEhtbSwgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXJzLiBSaWdodCwgYHR4Z2JldmZgIGlzIHRoZWlyIDEwR2JFIFBDSSBFeHByZXNzIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLCBhbmQgYGxpYnd4YCBpcyB0aGVpciBjb21tb24gbGlicmFyeS5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgYXJlIHRoZXNlIGRyaXZlcnMgdGFyZ2V0aW5nIGhhcmR3YXJlIHRoYXQncyBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gTGV0IG1lIHB1bGwgdXAgdGhlIGNvcmUgdHJpYWdlIHBoaWxvc29waHksIGJlY2F1c2UgdGhhdCdzIHRoZSBkZWNpZGluZyBmYWN0b3IuIE9rYXksIGhlcmUgd2UgZ286IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgV2FuZ3h1biBldGhlcm5ldCBpcyBlbXVsYXRlZC4gRnJvbSBteSBleHBlcmllbmNlIHdpdGggdGhlc2Uga2luZHMgb2YgTklDcywgV2FuZ3h1biAoVGVjaG1hbikgaXMgYSBDaGluZXNlIE5JQyB2ZW5kb3IuIFRoZXkgbWFrZSBwaHlzaWNhbCBOSUNzLiBgVHhnYmVgIGlzIGEgMTBHYkUgUENJIEV4cHJlc3MgTmV0d29yayBDb250cm9sbGVyLCBhbmQgYE5nYmVgIGlzIDFHYkUuIFRoZXkgYXJlIG5vdCBrbm93biBmb3IgYmVpbmcgZWFzaWx5IHZpcnR1YWxpemVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhpcyBieSBjaGVja2luZyB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlLCBLY29uZmlnIGZpbGVzLCBhbmQgUENJIElEcyB0byBjb25maXJtIHRoYXQgdGhleSByZXF1aXJlIGFjdHVhbCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjI1LjE0NTk1NTU4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM1MjYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVFhHQkVWRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz00Mz1jb25maWcgVFhHQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6Njc6Y29uZmlnIFRYR0JFVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6MjUuMjA2MzEyNTY0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzg5MzAwMzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBLY29uZmlnIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIFdhbmd4dW4gRXRoZXJuZXQgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdgIGZpbGUuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBjb250cm9sbGVkIGFuZCB3aGF0IG9wdGlvbnMgaXQgZXhwb3NlcyB0byB0aGUgdXNlciBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkRlcGVuZGVuY2llczoqKiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIHByZXJlcXVpc2l0ZXMsIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkLCBvciBvdGhlciBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCB0aGlzIGRyaXZlciByZWxpZXMgdXBvbj8gSSdsbCBiZSB3YXRjaGluZyBmb3IgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMuXG4qICAgKipIYXJkd2FyZSBWYXJpYW50cy9GZWF0dXJlIFNlbGVjdGlvbjoqKiBEb2VzIHRoaXMgS2NvbmZpZyBoYW5kbGUgbXVsdGlwbGUgV2FuZ3h1biBFdGhlcm5ldCBjb250cm9sbGVycz8gSWYgc28sIGFyZSB0aGVyZSBzcGVjaWZpYyBvcHRpb25zIHRvIGNob29zZSBiZXR3ZWVuIGRpZmZlcmVudCBtb2RlbHMsIHNwZWVkcyAoZS5nLiwgMTAvMTAwLzEwMDAgTWJwcyksIG9yIFBIWSBjb25maWd1cmF0aW9ucz8gSSB3aWxsIGxvb2sgZm9yIHZhcmlvdXMgc3ltYm9sIGRlZmluaXRpb25zIHVzaW5nIGBjb25maWdgLlxuKiAgICoqTW9kdWxlIEJ1aWxkOioqIElzIHRoZSBkcml2ZXIgY29tcGlsZWQgYXMgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBvcHRpb25hbGx5IGFzIGJvdGg/IFRoaXMgd2lsbCBiZSBpbmRpY2F0ZWQgYnkgdGhlIGB0cmlzdGF0ZWAgc2V0dGluZyBvciBzaW1pbGFyLlxuKiAgICoqRGVidWdnaW5nL0FkdmFuY2VkIE9wdGlvbnM6KiogQXJlIHRoZXJlIGFueSBkZWJ1ZyBmZWF0dXJlcyBvciBhZHZhbmNlZCBvcHRpb25zIGV4cG9zZWQgdG8gdXNlcnMsIG9yIGp1c3QgY29yZSBmZWF0dXJlcz8gVGhlc2UgY291bGQgYmUgbG9nZ2luZyBsZXZlbHMsIHBlcmZvcm1hbmNlIGNvdW50ZXJzLCBvciBvdGhlciBkaWFnbm9zdGljcyB0aGF0IGhlbHAgd2l0aCB0cm91Ymxlc2hvb3RpbmcuIEknbGwgbG9vayBmb3IgYGJvb2xgLCBgaW50YCwgYW5kIGBzdHJpbmdgIG9wdGlvbnMgd2l0aCBzcGVjaWZpYyBoZWxwIHRleHQuXG4qICAgKipEZWZhdWx0IFZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgY2hvc2VuPyBVbmRlcnN0YW5kaW5nIHRoZSBkZWZhdWx0cyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZXhwZWN0ZWQgdXNhZ2UgYW5kIHR5cGljYWwgY29uZmlndXJhdGlvbnMuXG4qICAgKipIaWVyYXJjaHk6KiogSG93IGlzIHRoaXMgS2NvbmZpZyBmaWxlIHN0cnVjdHVyZWQgcmVsYXRpdmUgdG8gb3RoZXIgS2NvbmZpZyBmaWxlcz8gSXMgaXQgcGFydCBvZiBhIGxhcmdlciBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyYXRpb24sIG9yIG1vcmUgaXNvbGF0ZWQ/IEknbGwgbG9vayBmb3IgaW5jbHVkZXMgb3IgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgZmlsZXMuXG5cbkJ5IGNhcmVmdWxseSBleGFtaW5pbmcgdGhlc2UgYXNwZWN0cywgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBwcmV0dHkgZ29vZCBncmFzcCBvZiBob3cgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIGZpdHMgaW50byB0aGUgTGludXgga2VybmVsIGFuZCBob3cgaXQgY2FuIGJlIGNvbmZpZ3VyZWQuIEknbSBnb2luZyB0byBzdGFydCBieSByZWFkaW5nIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgdGhlbiBkcmlsbCBkb3duIGludG8gZWFjaCBvcHRpb24gYXMgbmVjZXNzYXJ5LiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNzQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDoyOS4wOTkzMTc3MzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogOTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2FuZ3h1biBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBORVRfVkVORE9SX1dBTkdYVU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldhbmd4dW4gZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGZyb20gV2FuZ3h1bihSKSwgc2F5IFkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEzOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTQ6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IFdhbmd4dW4oUikgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9XQU5HWFVOXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBMSUJXWFxcbiAgMjA6XFx0XFx0dHJpc3RhdGVcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDIyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDIzOlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDI0OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHRDb21tb24gbGlicmFyeSBmb3IgV2FuZ3h1bihSKSBFdGhlcm5ldCBkcml2ZXJzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTkdCRVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuICAzMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMzI6XFx0XFx0c2VsZWN0IExJQldYXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFdhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGZhbWlseSBvZlxcbiAgMzU6XFx0XFx0ICBhZGFwdGVycy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDM4OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZS5yc3RcXHUwMDNlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcXG4gIDQxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbmdiZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIFRYR0JFXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XFxcIlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBJMkNfREVTSUdOV0FSRV9QTEFURk9STVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNDk6XFx0XFx0c2VsZWN0IE1BUlZFTExfMTBHX1BIWVxcbiAgNTA6XFx0XFx0c2VsZWN0IFJFR01BUFxcbiAgNTE6XFx0XFx0c2VsZWN0IEhXTU9OIGlmIFRYR0JFPXlcXG4gIDUyOlxcdFxcdHNlbGVjdCBTRlBcXG4gIDUzOlxcdFxcdHNlbGVjdCBHUElPTElCXFxuICA1NDpcXHRcXHRzZWxlY3QgR1BJT0xJQl9JUlFDSElQXFxuICA1NTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDU2OlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgNTc6XFx0XFx0aGVscFxcbiAgNTg6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBXYW5neHVuKFIpIDEwLzI1LzQwR2JFIFBDSSBFeHByZXNzIGZhbWlseSBvZlxcbiAgNTk6XFx0XFx0ICBhZGFwdGVycy5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDYyOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vdHhnYmUucnN0XFx1MDAzZS5cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA2NTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHR4Z2JlLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRjb25maWcgVFhHQkVWRlxcbiAgNjg6XFx0XFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDY5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDcyOlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgNzM6XFx0XFx0aGVscFxcbiAgNzQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGZ1bmN0aW9ucyBmb3IgU1AxMDAwQSwgV1gxODIwQUwsXFxuICA3NTpcXHRcXHQgIFdYNVhYWCwgV1g1WFhYQUwuXFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIHR4Z2JldmYuXFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuICA4MDpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XFx1MDAzZS5cXG4gIDgxOlxcdFxcbiAgODI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBNU0ktWCBpbnRlcnJ1cHRcXG4gIDgzOlxcdFxcdCAgc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXFxuICA4NDpcXHRcXG4gIDg1OlxcdGNvbmZpZyBOR0JFVkZcXG4gIDg2OlxcdFxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIEdiRSBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICA4NzpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgOTA6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDoyOS4wOTkzOTE5ODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNjMwMzI0ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVFhHQkVWRiBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYFRYR0JFVkZgIGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZm91bmRhdGlvbmFsIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgdG8gcmVseSBoZWF2aWx5IG9uIFBDSSwgYW5kIHNwZWNpZmljYWxseSBQQ0lfTVNJLCB3aGljaCBpcyBleHBlY3RlZC4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSwgYXMgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aG9zZSBwcm90b2NvbHMgaXMgZ29pbmcgdG8gYmUga2V5LlxuXG5OZXh0LCBJIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZpcnR1YWwgZnVuY3Rpb25zOiBTUDEwMDBBLCBXWDE4MjBBTCwgV1g1WFhYLCBXWDVYWFhBTC4gVGhhdCdzIGEgZGVjZW50IHJhbmdlIG9mIGhhcmR3YXJlIHBsYXRmb3Jtcy4gQnV0LCBqdXN0IHRvIGNvdmVyIGFsbCBteSBiYXNlcywgSSdtIGdvaW5nIHRvIHN0YXJ0IGJyYWluc3Rvcm1pbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gQXJlIHRoZXJlIGFueSBtb2NrIGRyaXZlcnMsIHBlcmhhcHMgYSBVU0IgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgdG8gc3VwcG9ydCBpdHMgdGVzdGluZyBvciBvcGVyYXRpb24gaW4gYSBub24tc3RhbmRhcmQgY29uZmlndXJhdGlvbj8gSSB3b3VsZCBsaWtlIHRvIGNvbnNpZGVyIGFsbCB0aGUgZGlmZmVyZW50IHdheXMgdGhhdCB0aGlzIGRyaXZlciBjb3VsZCBiZSBkZXBsb3llZC5cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIGNvcmUgbG9naWMgYW5kIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBJJ2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgdHhnYmV2Zl9tYWluLmNgLiBUaGF0J3MgdXN1YWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1haW4gZnVuY3Rpb25hbGl0aWVzLCBpbml0aWFsaXphdGlvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjMxLjcyOTcxODY3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LyogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAyNSBCZWlqaW5nIFdhbmdYdW4gVGVjaG5vbG9neSBDby4sIEx0ZC4gKi9cXG4gICAzOlxcdFxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gIDEwOlxcdFxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X3R5cGUuaFxcXCJcXG4gIDEyOlxcdCNpbmNsdWRlIFxcXCIuLi9saWJ3eC93eF9ody5oXFxcIlxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X2xpYi5oXFxcIlxcbiAgMTQ6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X21ieC5oXFxcIlxcbiAgMTU6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X3ZmLmhcXFwiXFxuICAxNjpcXHQjaW5jbHVkZSBcXFwiLi4vbGlid3gvd3hfdmZfY29tbW9uLmhcXFwiXFxuICAxNzpcXHQjaW5jbHVkZSBcXFwiLi4vbGlid3gvd3hfZXRodG9vbC5oXFxcIlxcbiAgMTg6XFx0I2luY2x1ZGUgXFxcInR4Z2JldmZfdHlwZS5oXFxcIlxcbiAgMTk6XFx0XFxuICAyMDpcXHQvKiB0eGdiZXZmX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXFxuICAyMTpcXHQgKlxcbiAgMjI6XFx0ICogV2lsZGNhcmQgZW50cmllcyAoUENJX0FOWV9JRCkgc2hvdWxkIGNvbWUgbGFzdFxcbiAgMjM6XFx0ICogTGFzdCBlbnRyeSBtdXN0IGJlIGFsbCAwc1xcbiAgMjQ6XFx0ICpcXG4gIDI1OlxcdCAqIHsgVmVuZG9yIElELCBEZXZpY2UgSUQsIFN1YlZlbmRvciBJRCwgU3ViRGV2aWNlIElELFxcbiAgMjY6XFx0ICogICBDbGFzcywgQ2xhc3MgTWFzaywgcHJpdmF0ZSBkYXRhIChub3QgdXNlZCkgfVxcbiAgMjc6XFx0ICovXFxuICAyODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdHhnYmV2Zl9wY2lfdGJsW10gPSB7XFxuICAyOTpcXHRcXHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX1NQMTAwMCkgfSxcXG4gIDMwOlxcdFxcdHsgUENJX1ZERVZJQ0UoV0FOR1hVTiwgVFhHQkVWRl9ERVZfSURfV1gxODIwKSB9LFxcbiAgMzE6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MDBGKSB9LFxcbiAgMzI6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MTBGKSB9LFxcbiAgMzM6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MDI0KSB9LFxcbiAgMzQ6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MTI0KSB9LFxcbiAgMzU6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MDNGKSB9LFxcbiAgMzY6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MTNGKSB9LFxcbiAgMzc6XFx0XFx0LyogcmVxdWlyZWQgbGFzdCBlbnRyeSAqL1xcbiAgMzg6XFx0XFx0eyB9XFxuICAzOTpcXHR9O1xcbiAgNDA6XFx0XFxuICA0MTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHR4Z2JldmZfbmV0ZGV2X29wcyA9IHtcXG4gIDQyOlxcdFxcdC5uZG9fb3BlbiAgICAgICAgICAgICAgID0gd3h2Zl9vcGVuLFxcbiAgNDM6XFx0XFx0Lm5kb19zdG9wICAgICAgICAgICAgICAgPSB3eHZmX2Nsb3NlLFxcbiAgNDQ6XFx0XFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLFxcbiAgNDU6XFx0XFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcXG4gIDQ2OlxcdFxcdC5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gd3hfc2V0X21hY192ZixcXG4gIDQ3OlxcdH07XFxuICA0ODpcXHRcXG4gIDQ5OlxcdHN0YXRpYyB2b2lkIHR4Z2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4gIDUwOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6MzEuNzI5ODU1MzcyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTE3ODU0NjU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXYW5neHVuIEV0aGVybmV0IFNSSU9WIFZpcnR1YWwgRnVuY3Rpb24gRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgV2FuZ3h1biBFdGhlcm5ldCBTUklPViBWaXJ0dWFsIEZ1bmN0aW9ucy4gSXQncyBhIHN0YW5kYXJkIFBDSSBkcml2ZXIsIHRhcmdldGluZyB0aGUgV0FOR1hVTiB2ZW5kb3IgSUQsIHdoaWNoIHJlcHJlc2VudHMgYWN0dWFsIFdhbmd4dW4gaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBoYXJkd2FyZSBpcyBhdmFpbGFibGUgdG8gc3RhbmRhcmQgUUVNVS5cblxuTG9va2luZyBhdCB0aGUgaW5zdHJ1Y3Rpb25zLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLCB0aGUgdGV4dCBtZW50aW9ucyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBhbmQgbGlzdHMgZXhhbXBsZXMgbGlrZSBtbHhzdywgcGRzX2NvcmUsIGFuZCBhbWRncHUsIHdoaWNoIGFsbCByZXF1aXJlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyB0aGF0IGFyZW4ndCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBnb29kIGhlYWRzIHVwLiBOb3csIGFyZSBXYW5neHVuIE5JQ3MgaGFuZGxlZCBieSBzdGFuZGFyZCBRRU1VP1xuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBXYW5neHVuIE5JQ3MgYXJlLCBpbmRlZWQsIGVtdWxhdGVkIGluIFFFTVUuIEEgcXVpY2sgY2hlY2sgb2YgUUVNVSdzIHN1cHBvcnRlZCBkZXZpY2VzIHJldmVhbHMgdGhhdCB0aGV5IHN1cHBvcnQgdGhlIGxpa2VzIG9mIGUxMDAwLCBlMTAwMGUsIGFuZCB2aXJ0aW8tbmV0LCBhbW9uZyBvdGhlcnMsIGJ1dCBub3QgV2FuZ3h1biB0eGdiZS9uZ2JlL3R4Z2JldmYgTklDcy4gU28gaXQgZG9lc24ndCBsb29rIGxpa2UgdGhleSBhcmUuIEl0IGJpbmRzIHRvIHRoZSBXQU5HWFVOIHZlbmRvciBJRCwgd2hpY2ggSSdsbCBjb25maXJtLlxuXG5Ob3cgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIFBDSV9WRU5ET1JfSURfV0FOR1hVTiB0byBnZXQgYSBzb2xpZCBoYW5kbGUgb24gdGhhdCB2ZW5kb3IgSUQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxODcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDo0MC45MDg0MDQ2ODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTMxMDc0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX1ZFTkRPUl9JRF9XQU5HWFVOXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yNDcyPWludCB3eF9zd19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjQ4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjQ5MDpcXHRpZiAod3gtXFx1MDAzZW9lbV9zdmlkID09IFBDSV9WRU5ET1JfSURfV0FOR1hVTiB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yNDkxLVxcdCAgICBwZGV2LVxcdTAwM2Vpc192aXJ0Zm4pIHtcXG4tLVxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jPTUwODA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2X2Fjc19lbmFibGVkIHtcXG4tLVxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTUyNDYtXFx0LyogV2FuZ3h1biBuaWNzICovXFxuZHJpdmVycy9wY2kvcXVpcmtzLmM6NTI0NzpcXHR7IFBDSV9WRU5ET1JfSURfV0FOR1hVTiwgUENJX0FOWV9JRCwgcGNpX3F1aXJrX3dhbmd4dW5fbmljX2FjcyB9LFxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTUyNDgtXFx0eyAwIH1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTMxNjktXFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmg6MzE3MDojZGVmaW5lIFBDSV9WRU5ET1JfSURfV0FOR1hVTlxcdFxcdDB4ODA4OFxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTMxNzEtXFxuLS1cXG5ydXN0L2tlcm5lbC9wY2kvaWQucnM9MTcyPSAgICBmbiBmbXQoXFx1MDAyNnNlbGYsIGY6IFxcdTAwMjZtdXQgZm10OjpGb3JtYXR0ZXJcXHUwMDNjJ19cXHUwMDNlKSAtXFx1MDAzZSBmbXQ6OlJlc3VsdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTYzLSAgICBJTlRFTCAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9JTlRFTCwgICAgICAgICAgICAgICAgICAgIC8vIDB4ODA4NlxcbnJ1c3Qva2VybmVsL3BjaS9pZC5yczo1NjQ6ICAgIFdBTkdYVU4gICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX1dBTkdYVU4sICAgICAgICAgICAgICAgICAgLy8gMHg4MDg4XFxucnVzdC9rZXJuZWwvcGNpL2lkLnJzLTU2NS0gICAgU0NBTEVNUCAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfU0NBTEVNUCwgICAgICAgICAgICAgICAgICAvLyAweDg2ODZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6NDIuNzIxNTIxOTk2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU0MDI4Mjc5MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZG93bnN0cmVhbSBpbXBhY3Qgb2YgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hvIGVsc2UgaXMgdG91Y2hpbmcgdGhlIGNvZGUgdGhhdCAqdGhpcyogY29kZSBtb2RpZmllcz9cIiBJIG5lZWQgdG8gc2VlIGlmIGFueXRoaW5nIGVsc2UgaXMgdXNpbmcgYGxpYnd4YCwgYHd4X2V0aHRvb2xfb3BzX3ZmYCwgb3IgYW55dGhpbmcgZWxzZSB0aGlzIHBhdGNoIGlzIGRlYWxpbmcgd2l0aC4gTXkgbmV4dCBzdGVwPyBJIG5lZWQgdG8gdXNlIGBncmVwYC4gSSdsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgYHd4X3NldF9ldGh0b29sX29wc192ZmAgdG8gc2VlIHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGFuZCB3aGF0IHJlbGllcyBvbiB0aGlzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZSBpbnRvIHVuZGVyc3RhbmRpbmcgdGhlIHJpcHBsZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzAzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6NDguMTI0MzUyNTA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU1MDY3MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInd4X3NldF9ldGh0b29sX29wc192ZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYz05MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jLTkyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYzo5MjE6dm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYy05MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtOTI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYzo5MjU6RVhQT1JUX1NZTUJPTCh3eF9zZXRfZXRodG9vbF9vcHNfdmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmg9NjE9dm9pZCB3eF9nZXRfcHRwX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmgtNjItXFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfdHNfc3RhdHMgKnRzX3N0YXRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuaDo2Mzp2b2lkIHd4X3NldF9ldGh0b29sX29wc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuaC02NC0jZW5kaWYgLyogX1dYX0VUSFRPT0xfSF8gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM9MTM2PXN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0xOTAtXFx0d3gtXFx1MDAzZWRyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYzoxOTE6XFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0xOTItXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNm5nYmV2Zl9uZXRkZXZfb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jPTE5Nj1zdGF0aWMgaW50IHR4Z2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjU4LVxcdHd4LVxcdTAwM2Vkcml2ZXJfbmFtZSA9IEtCVUlMRF9NT0ROQU1FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYzoyNTk6XFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jLTI2MC1cXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2dHhnYmV2Zl9uZXRkZXZfb3BzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDo0OS43Nzk0MjU4NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTI0NTU4NTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgRHJpdmVyIENhbGxzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IGB3eF9zZXRfZXRodG9vbF9vcHNfdmZgIGlzIG9ubHkgY2FsbGVkIGJ5IGBuZ2JldmZfcHJvYmVgIGFuZCBgdHhnYmV2Zl9wcm9iZWAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIFBDSSBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlcnMgc3BlY2lmaWMgdG8gV2FuZ3h1bidzIGV0aGVybmV0IGhhcmR3YXJlLCBsaWtlbHkgdGhlIEdiRSBhbmQgMTBHYkUgdmVyc2lvbnMuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cblRoZW4sIG15IGV5ZSBjYXRjaGVzIGB3eF9zZXR1cF92Zm1ycWNfdmZgIHdpdGhpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY2AuIENsZWFybHksIHRoaXMgaXMgYW5vdGhlciBrZXkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgVmlydHVhbCBGdW5jdGlvbiBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIHNvIEknbSBnb2luZyB0byBsb29rIGF0IGl0cyBjYWxsIHNpdGVzIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFZGIE1SUUMgKE11bHRpLVJlY2VpdmUgUXVldWUgQ29udGV4dCkgaXMgYmVpbmcgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI5NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDo1NS4wMjUwMTQ0NjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzYyMzc3NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3hfc2V0dXBfdmZtcnFjX3ZmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MTg5PXN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9yeF92ZihzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xOTQtXFx0d3hfc2V0dXBfcHNydHlwZV92Zih3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoxOTU6XFx0d3hfc2V0dXBfdmZtcnFjX3ZmKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmM9MTk2PXZvaWQgd3hfc2V0dXBfcHNydHlwZV92ZihzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYy0yMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYzoyMDg6dm9pZCB3eF9zZXR1cF92Zm1ycWNfdmYoc3RydWN0IHd4ICp3eClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jLTIwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5oPTEwPXZvaWQgd3hfc2V0dXBfcHNydHlwZV92ZihzdHJ1Y3Qgd3ggKnd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5oOjExOnZvaWQgd3hfc2V0dXBfdmZtcnFjX3ZmKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmgtMTItdm9pZCB3eF9jb25maWd1cmVfdHhfdmYoc3RydWN0IHd4ICp3eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjU2LjYwMTI1OTAzOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyODM3NjExNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgd3hfY29uZmlndXJlX3J4X3ZmYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgSSBzZWUgdGhpcyBgd3hfY29uZmlndXJlX3J4X3ZmYCBmdW5jdGlvbi4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhlIG9uZSB0aGF0IGFsd2F5cyBwb3BzIHVwIGZpcnN0IHdoZW4gSSdtIHJldmVyc2UgZW5naW5lZXJpbmcgY29kZSwgaXMgKndoZXJlKiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGJlaW5nIHVzZWQ/IFdoZXJlIGFyZSB0aGUgY2FsbHNpdGVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCB0aGUgZGF0YSB0aGF0J3MgYmVpbmcgZmVkIGludG8gaXQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgbGF5ZXJzLCB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBrbm93IHdoZXJlIHRoaXMgc3BlY2lmaWMgbG9naWMgc2l0cyB3aXRoaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBXaXRob3V0IGtub3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGl0J3MganVzdCBhIGxvbmVseSBwaWVjZSBvZiBjb2RlLiBOb3cgdG8gZmluZCB3aGVyZSB0aGUgY2FsbHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTExOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjU5LjQzODg3Mzk0NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwMzI2OTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3eF9jb25maWd1cmVfcnhfdmZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYz0xODE9RVhQT1JUX1NZTUJPTCh3eF9zZXRfcnhfbW9kZV92Zik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTE4My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jOjE4NDogKiB3eF9jb25maWd1cmVfcnhfdmYgLSBDb25maWd1cmUgUmVjZWl2ZSBVbml0IGFmdGVyIFJlc2V0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xODUtICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xODgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM6MTg5OnN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9yeF92ZihzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MjE2PXZvaWQgd3hfY29uZmlndXJlX3ZmKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTIxOS1cXHR3eF9jb25maWd1cmVfdHhfdmYod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM6MjIwOlxcdHd4X2NvbmZpZ3VyZV9yeF92Zih3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0yMjEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NTowMS4xNDIxNTI4OTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDgxNzcwMzkwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBXYW5neHVuIEV0aGVybmV0IERyaXZlciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjZWQgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgd3hfY29uZmlndXJlX3ZmYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgYnkgYHd4dmZfb3BlbmAgYW5kIGB3eHZmX3VwX2NvbXBsZXRlYCB3aXRoaW4gdGhlIGB3eF92Zl9jb21tb24uY2AgZmlsZS4gVGhpcyB3aG9sZSBhcmVhLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBhbmQgcGFydGljdWxhcmx5IHRoZSBWRiBkcml2ZXJzIGxpa2UgYHR4Z2JldmZgIGFuZCBgbmdiZXZmYCBhbG9uZyB3aXRoIHRoZSBjb21tb24gbGlicmFyeSBgbGlid3hgLCBpcyB2ZW5kb3Itc3BlY2lmaWMgdG8gV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLiBUaGVzZSBkcml2ZXJzIGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlaXIgcGFydGljdWxhciBQQ0llIG5ldHdvcmsgY2FyZHMgYW5kIEFTSUNzIOKAkyB0aGluZ3MgbGlrZSB0aGUgU1AxMDAwIGFuZCBXWDE4MjAuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhlc2UgcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cyAqYXJlbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2ggaXMgdGhlIHNvcnQgb2YgdGhpbmcgd2UnZCBiZSB1c2luZyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBiYWNrIHRvIHNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBZZXMsIGl0IGNsZWFybHkgc3RhdGVzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpcyBcIlZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBhbGlnbnMgKnBlcmZlY3RseSogd2l0aCB0aGlzIFdhbmd4dW4gZHJpdmVyIHNpdHVhdGlvbi5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgY29kZSBkZXBlbmRzIG9uIGhhcmR3YXJlIHRoYXQncyBub3QgYXZhaWxhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LCB0aGlzIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGh1czpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5LCBubyBzeW1ib2xzIHRvIGZvY3VzIG9uKVxuKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHksIG5vIGNvbmZpZ3MgdG8gZW5hYmxlKVxuKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggbW9kaWZpZXMgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXJzICh0eGdiZXZmLCBsaWJ3eCkgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBXYW5neHVuIEFTSUMvUENJZSBuZXR3b3JrIGFkYXB0ZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlxuXG5JJ3ZlIGFsc28gZG91YmxlLWNoZWNrZWQgdGhlIHNwZWNpZmljIGZpbGVzIHRoYXQgd2VyZSBtb2RpZmllZDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIFRoZXkgYXJlIGFsbCBzdHJpY3RseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBjb25maXJtaW5nIHRoYXQgbm8gY29yZSBuZXR3b3JraW5nIGNvZGUgaXMgdG91Y2hlZC4gRXZlcnl0aGluZyBpcyBjbGVhciBhbmQgdW5hbWJpZ3VvdXMuIEkgYW0gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MzYsIk91dHB1dFRva2VucyI6MTIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU1OjA1Ljk1OTg2MDM1MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIGRyaXZlciBhbmQgaXRzIHNoYXJlZCBsaWJyYXJ5ICh0eGdiZXZmLCBsaWJ3eCkgdG8gaW1wbGVtZW50IGV0aHRvb2wgZ2V0L3NldCBjaGFubmVscyBjYWxsYmFja3MgYW5kIGFkanVzdCBSU1MgcXVldWUgY29uZmlndXJhdGlvbi4gVGhlc2UgZHJpdmVycyB0YXJnZXQgcGh5c2ljYWwgV2FuZ3h1biBQQ0llIE5JQyBoYXJkd2FyZSAoU1AxMDAwLCBXWDE4MjAsIGV0Yy4pIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgZHJpdmVyIGFuZCBpdHMgc2hhcmVkIGxpYnJhcnkgKHR4Z2JldmYsIGxpYnd4KSB0byBpbXBsZW1lbnQgZXRodG9vbCBnZXQvc2V0IGNoYW5uZWxzIGNhbGxiYWNrcyBhbmQgYWRqdXN0IFJTUyBxdWV1ZSBjb25maWd1cmF0aW9uLiBUaGVzZSBkcml2ZXJzIHRhcmdldCBwaHlzaWNhbCBXYW5neHVuIFBDSWUgTklDIGhhcmR3YXJlIChTUDEwMDAsIFdYMTgyMCwgZXRjLikgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NTowNS45NTk4OTEwMTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdvsj6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 11:33:40 +0000 UTC FinishedAt: 2026-09-15 11:55:07 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgZHJpdmVyIGFuZCBpdHMgc2hhcmVkIGxpYnJhcnkgKHR4Z2JldmYsIGxpYnd4KSB0byBpbXBsZW1lbnQgZXRodG9vbCBnZXQvc2V0IGNoYW5uZWxzIGNhbGxiYWNrcyBhbmQgYWRqdXN0IFJTUyBxdWV1ZSBjb25maWd1cmF0aW9uLiBUaGVzZSBkcml2ZXJzIHRhcmdldCBwaHlzaWNhbCBXYW5neHVuIFBDSWUgTklDIGhhcmR3YXJlIChTUDEwMDAsIFdYMTgyMCwgZXRjLikgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTc4NTViMDAwZTc0YjUzNGY3N2NkNzhjZjlmNGFhMWQzNTI2NDU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDExOjU0OjAxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmNcbmluZGV4IDk0MGQyZTU5ODc2YzcuLmQyNDM3MDc5MDk0MTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmNcbkBAIC01NjQsNiAmIzQzOzU2NCw2OCBAQCBpbnQgd3hfc2V0X2NoYW5uZWxzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfc2V0X2NoYW5uZWxzKTtcbiBcbiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X2NoYW5uZWxzX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogcmVwb3J0IG1heGltdW0gY2hhbm5lbHMgKi9cbiYjNDM7XHRjaC1cdTAwM2VtYXhfY29tYmluZWQgPSB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcztcbiYjNDM7XG4mIzQzO1x0Y2gtXHUwMDNlbWF4X290aGVyID0gMTtcbiYjNDM7XHRjaC1cdTAwM2VvdGhlcl9jb3VudCA9IDE7XG4mIzQzO1xuJiM0MztcdC8qIHJlY29yZCBjdXJyZW50IGNoYW5uZWxzICovXG4mIzQzO1x0Y2gtXHUwMDNlY29tYmluZWRfY291bnQgPSB3eC1cdTAwM2VudW1fcnhfcXVldWVzO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHR1MTYgcnNzX2xpbWl0O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJzc19saW1pdCA9IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcbiYjNDM7XG4mIzQzO1x0LyogdmVyaWZ5IG90aGVyX2NvdW50IGhhcyBub3QgY2hhbmdlZCAqL1xuJiM0MztcdGlmIChjaC1cdTAwM2VvdGhlcl9jb3VudCAhPSAxKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdC8qIHZlcmlmeSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGRvZXMgbm90IGV4Y2VlZCBoYXJkd2FyZSBsaW1pdHMgKi9cbiYjNDM7XHRpZiAoY2gtXHUwMDNlY29tYmluZWRfY291bnQgXHUwMDNlIHd4LVx1MDAzZW1hYy5tYXhfcnhfcXVldWVzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdC8qIGlmIGRldmljZSBpcyByZXNldHRpbmcsIGRvIG5vdGhpbmcgKi9cbiYjNDM7XHRpZiAodGVzdF9iaXQoV1hfU1RBVEVfUkVTRVRUSU5HLCB3eC1cdTAwM2VzdGF0ZSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVCVVNZO1xuJiM0MztcbiYjNDM7XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSBjaC1cdTAwM2Vjb21iaW5lZF9jb3VudDtcbiYjNDM7XG4mIzQzO1x0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbiYjNDM7XHRcdHd4dmZfY2xvc2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0d3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gZXJyX291dDtcbiYjNDM7XG4mIzQzO1x0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkge1xuJiM0MztcdFx0cmV0ID0gd3h2Zl9vcGVuKGRldik7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRnb3RvIGVycl9jbG9zZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2Nsb3NlOlxuJiM0MztcdHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUod3gpO1xuJiM0MztlcnJfb3V0OlxuJiM0MztcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCA9IHJzc19saW1pdDtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIHUzMiB3eF9yc3NfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuIHtcbiBcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuQEAgLTg1Miw2ICYjNDM7OTE0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcbiBcdC5zZXRfY29hbGVzY2VcdFx0PSB3eF9zZXRfY29hbGVzY2UsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuIFx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSB3eF9nZXRfbGlua19rc2V0dGluZ3NfdmYsXG4mIzQzO1x0LmdldF9jaGFubmVsc1x0XHQ9IHd4X2dldF9jaGFubmVsc192ZixcbiYjNDM7XHQuc2V0X2NoYW5uZWxzXHRcdD0gd3hfc2V0X2NoYW5uZWxzX3ZmLFxuIH07XG4gXG4gdm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xuaW5kZXggNzMyNWI0NzVlZTEwYy4uNmZlYzNhYjVlNGU0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNcbkBAIC0yMzcsNyAmIzQzOzIzNyw3IEBAIHZvaWQgd3hfc2V0dXBfdmZtcnFjX3ZmKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHR2Zm1ycWMgfD0gV1hfVlhNUlFDX1JTU19FTjtcbiBcbi1cdGlmICh3eC1cdTAwM2VudW1fcnhfcXVldWVzIFx1MDAzZSAzKVxuJiM0MztcdGlmICh3eC1cdTAwM2VudW1fcnhfcXVldWVzIFx1MDAzZT0gMylcbiBcdFx0dmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfSEFTSCgyKTtcbiBcdGVsc2UgaWYgKHd4LVx1MDAzZW51bV9yeF9xdWV1ZXMgXHUwMDNlIDEpXG4gXHRcdHZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi42ZTg2NTkwODIwNTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC03Miw2ICYjNDM7NzIsOSBAQCBzdGF0aWMgdm9pZCB0eGdiZXZmX3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4gXHRcdHF1ZXVlID0gbWluX3QodTE2LCB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcywgd3gtXHUwMDNlbWFjLm1heF90eF9xdWV1ZXMpO1xuIFx0XHRyc3MgPSBtaW5fdCh1MTYsIHF1ZXVlLCByc3MpO1xuIFxuJiM0MztcdFx0aWYgKHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdClcbiYjNDM7XHRcdFx0cnNzID0gbWluX3QodTE2LCByc3MsIHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCk7XG4mIzQzO1xuIFx0XHRpZiAod3gtXHUwMDNldmZpbmZvLVx1MDAzZXZmX2FwaSBcdTAwM2U9IHd4X21ib3hfYXBpXzEzKSB7XG4gXHRcdFx0d3gtXHUwMDNlbnVtX3J4X3F1ZXVlcyA9IHJzcztcbiBcdFx0XHR3eC1cdTAwM2VudW1fdHhfcXVldWVzID0gcnNzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIGRyaXZlciBhbmQgaXRzIHNoYXJlZCBsaWJyYXJ5ICh0eGdiZXZmLCBsaWJ3eCkgdG8gaW1wbGVtZW50IGV0aHRvb2wgZ2V0L3NldCBjaGFubmVscyBjYWxsYmFja3MgYW5kIGFkanVzdCBSU1MgcXVldWUgY29uZmlndXJhdGlvbi4gVGhlc2UgZHJpdmVycyB0YXJnZXQgcGh5c2ljYWwgV2FuZ3h1biBQQ0llIE5JQyBoYXJkd2FyZSAoU1AxMDAwLCBXWDE4MjAsIGV0Yy4pIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE3ODU1YjAwMGU3NGI1MzRmNzdjZDc4Y2Y5ZjRhYTFkMzUyNjQ1NjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxMTo1NDowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMKaW5kZXggOTQwZDJlNTk4NzZjNy4uZDI0MzcwNzkwOTQxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMKQEAgLTU2NCw2ICYjNDM7NTY0LDY4IEBAIGludCB3eF9zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIH0KIEVYUE9SVF9TWU1CT0wod3hfc2V0X2NoYW5uZWxzKTsKIAomIzQzO3N0YXRpYyB2b2lkIHd4X2dldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCSAgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsKJiM0MzsJLyogcmVwb3J0IG1heGltdW0gY2hhbm5lbHMgKi8KJiM0MzsJY2gtJmd0O21heF9jb21iaW5lZCA9IHd4LSZndDttYWMubWF4X3J4X3F1ZXVlczsKJiM0MzsKJiM0MzsJY2gtJmd0O21heF9vdGhlciA9IDE7CiYjNDM7CWNoLSZndDtvdGhlcl9jb3VudCA9IDE7CiYjNDM7CiYjNDM7CS8qIHJlY29yZCBjdXJyZW50IGNoYW5uZWxzICovCiYjNDM7CWNoLSZndDtjb21iaW5lZF9jb3VudCA9IHd4LSZndDtudW1fcnhfcXVldWVzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCSAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwl1MTYgcnNzX2xpbWl0OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyc3NfbGltaXQgPSB3eC0mZ3Q7cmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0OwomIzQzOwomIzQzOwkvKiB2ZXJpZnkgb3RoZXJfY291bnQgaGFzIG5vdCBjaGFuZ2VkICovCiYjNDM7CWlmIChjaC0mZ3Q7b3RoZXJfY291bnQgIT0gMSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwkvKiB2ZXJpZnkgdGhlIG51bWJlciBvZiBjaGFubmVscyBkb2VzIG5vdCBleGNlZWQgaGFyZHdhcmUgbGltaXRzICovCiYjNDM7CWlmIChjaC0mZ3Q7Y29tYmluZWRfY291bnQgJmd0OyB3eC0mZ3Q7bWFjLm1heF9yeF9xdWV1ZXMpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJLyogaWYgZGV2aWNlIGlzIHJlc2V0dGluZywgZG8gbm90aGluZyAqLwomIzQzOwlpZiAodGVzdF9iaXQoV1hfU1RBVEVfUkVTRVRUSU5HLCB3eC0mZ3Q7c3RhdGUpKQomIzQzOwkJcmV0dXJuIC1FQlVTWTsKJiM0MzsKJiM0MzsJd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCA9IGNoLSZndDtjb21iaW5lZF9jb3VudDsKJiM0MzsKJiM0MzsJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkKJiM0MzsJCXd4dmZfY2xvc2UoZGV2KTsKJiM0MzsKJiM0MzsJd3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiYjNDM7CiYjNDM7CXJldCA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIGVycl9vdXQ7CiYjNDM7CiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKGRldikpIHsKJiM0MzsJCXJldCA9IHd4dmZfb3BlbihkZXYpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlnb3RvIGVycl9jbG9zZTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfY2xvc2U6CiYjNDM7CXd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUod3gpOwomIzQzO2Vycl9vdXQ6CiYjNDM7CXd4LSZndDtyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3NfbGltaXQ7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogdTMyIHd4X3Jzc19pbmRpcl9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiB7CiAJc3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KG5ldGRldik7CkBAIC04NTIsNiAmIzQzOzkxNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgd3hfZXRodG9vbF9vcHNfdmYgPSB7CiAJLnNldF9jb2FsZXNjZQkJPSB3eF9zZXRfY29hbGVzY2UsCiAJLmdldF90c19pbmZvCQk9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sCiAJLmdldF9saW5rX2tzZXR0aW5ncwk9IHd4X2dldF9saW5rX2tzZXR0aW5nc192ZiwKJiM0MzsJLmdldF9jaGFubmVscwkJPSB3eF9nZXRfY2hhbm5lbHNfdmYsCiYjNDM7CS5zZXRfY2hhbm5lbHMJCT0gd3hfc2V0X2NoYW5uZWxzX3ZmLAogfTsKIAogdm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jCmluZGV4IDczMjViNDc1ZWUxMGMuLjZmZWMzYWI1ZTRlNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYwpAQCAtMjM3LDcgJiM0MzsyMzcsNyBAQCB2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KQogCiAJdmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfRU47CiAKLQlpZiAod3gtJmd0O251bV9yeF9xdWV1ZXMgJmd0OyAzKQomIzQzOwlpZiAod3gtJmd0O251bV9yeF9xdWV1ZXMgJmd0Oz0gMykKIAkJdmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfSEFTSCgyKTsKIAllbHNlIGlmICh3eC0mZ3Q7bnVtX3J4X3F1ZXVlcyAmZ3Q7IDEpCiAJCXZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMKaW5kZXggOGIxNmI5MDA4MjBhYS4uNmU4NjU5MDgyMDUxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYwpAQCAtNzIsNiAmIzQzOzcyLDkgQEAgc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KQogCQlxdWV1ZSA9IG1pbl90KHUxNiwgd3gtJmd0O21hYy5tYXhfcnhfcXVldWVzLCB3eC0mZ3Q7bWFjLm1heF90eF9xdWV1ZXMpOwogCQlyc3MgPSBtaW5fdCh1MTYsIHF1ZXVlLCByc3MpOwogCiYjNDM7CQlpZiAod3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCkKJiM0MzsJCQlyc3MgPSBtaW5fdCh1MTYsIHJzcywgd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCk7CiYjNDM7CiAJCWlmICh3eC0mZ3Q7dmZpbmZvLSZndDt2Zl9hcGkgJmd0Oz0gd3hfbWJveF9hcGlfMTMpIHsKIAkJCXd4LSZndDtudW1fcnhfcXVldWVzID0gcnNzOwogCQkJd3gtJmd0O251bV90eF9xdWV1ZXMgPSByc3M7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBFdmFsdWF0aW9uOiBXYW5neHVuIEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJIHNlZSBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY2AsIGB3eF92Zl9saWIuY2AsIGFuZCBgdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIEhtbSwgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXJzLiBSaWdodCwgYHR4Z2JldmZgIGlzIHRoZWlyIDEwR2JFIFBDSSBFeHByZXNzIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLCBhbmQgYGxpYnd4YCBpcyB0aGVpciBjb21tb24gbGlicmFyeS4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGFyZSB0aGVzZSBkcml2ZXJzIHRhcmdldGluZyBoYXJkd2FyZSB0aGF0JiMzOTtzIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBMZXQgbWUgcHVsbCB1cCB0aGUgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeSwgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBkZWNpZGluZyBmYWN0b3IuIE9rYXksIGhlcmUgd2UgZ286ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KCkkgbmVlZCB0byBjb25maXJtIGlmIFdhbmd4dW4gZXRoZXJuZXQgaXMgZW11bGF0ZWQuIEZyb20gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIGtpbmRzIG9mIE5JQ3MsIFdhbmd4dW4gKFRlY2htYW4pIGlzIGEgQ2hpbmVzZSBOSUMgdmVuZG9yLiBUaGV5IG1ha2UgcGh5c2ljYWwgTklDcy4gYFR4Z2JlYCBpcyBhIDEwR2JFIFBDSSBFeHByZXNzIE5ldHdvcmsgQ29udHJvbGxlciwgYW5kIGBOZ2JlYCBpcyAxR2JFLiBUaGV5IGFyZSBub3Qga25vd24gZm9yIGJlaW5nIGVhc2lseSB2aXJ0dWFsaXplZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBkcml2ZXIgc291cmNlIGNvZGUsIEtjb25maWcgZmlsZXMsIGFuZCBQQ0kgSURzIHRvIGNvbmZpcm0gdGhhdCB0aGV5IHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUWEdCRVZGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1biYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9NDM9Y29uZmlnIFRYR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDc0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIFdhbmd4dW4gRXRoZXJuZXQgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZ2AgZmlsZS4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgV2FuZ3h1biBFdGhlcm5ldCBkcml2ZXIgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgb3B0aW9ucyBpdCBleHBvc2VzIHRvIHRoZSB1c2VyIGR1cmluZyBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipEZXBlbmRlbmNpZXM6KiogQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBwcmVyZXF1aXNpdGVzLCBvdGhlciBrZXJuZWwgbW9kdWxlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCwgb3Igb3RoZXIgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhpcyBkcml2ZXIgcmVsaWVzIHVwb24/IEkmIzM5O2xsIGJlIHdhdGNoaW5nIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4KKiAgICoqSGFyZHdhcmUgVmFyaWFudHMvRmVhdHVyZSBTZWxlY3Rpb246KiogRG9lcyB0aGlzIEtjb25maWcgaGFuZGxlIG11bHRpcGxlIFdhbmd4dW4gRXRoZXJuZXQgY29udHJvbGxlcnM/IElmIHNvLCBhcmUgdGhlcmUgc3BlY2lmaWMgb3B0aW9ucyB0byBjaG9vc2UgYmV0d2VlbiBkaWZmZXJlbnQgbW9kZWxzLCBzcGVlZHMgKGUuZy4sIDEwLzEwMC8xMDAwIE1icHMpLCBvciBQSFkgY29uZmlndXJhdGlvbnM/IEkgd2lsbCBsb29rIGZvciB2YXJpb3VzIHN5bWJvbCBkZWZpbml0aW9ucyB1c2luZyBgY29uZmlnYC4KKiAgICoqTW9kdWxlIEJ1aWxkOioqIElzIHRoZSBkcml2ZXIgY29tcGlsZWQgYXMgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBvcHRpb25hbGx5IGFzIGJvdGg/IFRoaXMgd2lsbCBiZSBpbmRpY2F0ZWQgYnkgdGhlIGB0cmlzdGF0ZWAgc2V0dGluZyBvciBzaW1pbGFyLgoqICAgKipEZWJ1Z2dpbmcvQWR2YW5jZWQgT3B0aW9uczoqKiBBcmUgdGhlcmUgYW55IGRlYnVnIGZlYXR1cmVzIG9yIGFkdmFuY2VkIG9wdGlvbnMgZXhwb3NlZCB0byB1c2Vycywgb3IganVzdCBjb3JlIGZlYXR1cmVzPyBUaGVzZSBjb3VsZCBiZSBsb2dnaW5nIGxldmVscywgcGVyZm9ybWFuY2UgY291bnRlcnMsIG9yIG90aGVyIGRpYWdub3N0aWNzIHRoYXQgaGVscCB3aXRoIHRyb3VibGVzaG9vdGluZy4gSSYjMzk7bGwgbG9vayBmb3IgYGJvb2xgLCBgaW50YCwgYW5kIGBzdHJpbmdgIG9wdGlvbnMgd2l0aCBzcGVjaWZpYyBoZWxwIHRleHQuCiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBjaG9zZW4/IFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHRzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleHBlY3RlZCB1c2FnZSBhbmQgdHlwaWNhbCBjb25maWd1cmF0aW9ucy4KKiAgICoqSGllcmFyY2h5OioqIEhvdyBpcyB0aGlzIEtjb25maWcgZmlsZSBzdHJ1Y3R1cmVkIHJlbGF0aXZlIHRvIG90aGVyIEtjb25maWcgZmlsZXM/IElzIGl0IHBhcnQgb2YgYSBsYXJnZXIgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLCBvciBtb3JlIGlzb2xhdGVkPyBJJiMzOTtsbCBsb29rIGZvciBpbmNsdWRlcyBvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgS2NvbmZpZyBmaWxlcy4KCkJ5IGNhcmVmdWxseSBleGFtaW5pbmcgdGhlc2UgYXNwZWN0cywgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBwcmV0dHkgZ29vZCBncmFzcCBvZiBob3cgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIGZpdHMgaW50byB0aGUgTGludXgga2VybmVsIGFuZCBob3cgaXQgY2FuIGJlIGNvbmZpZ3VyZWQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcmVhZGluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIHRoZW4gZHJpbGwgZG93biBpbnRvIGVhY2ggb3B0aW9uIGFzIG5lY2Vzc2FyeS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdhbmd4dW4gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gICA3Olx0XHRib29sIFwmIzM0O1dhbmd4dW4gZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZnJvbSBXYW5neHVuKFIpLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBXYW5neHVuKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE1Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIExJQldYXG4gIDIwOlx0XHR0cmlzdGF0ZVxuICAyMTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyMzpcdFx0c2VsZWN0IERJTUxJQlxuICAyNDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdENvbW1vbiBsaWJyYXJ5IGZvciBXYW5neHVuKFIpIEV0aGVybmV0IGRyaXZlcnMuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE5HQkVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gUENJXG4gIDMxOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDMyOlx0XHRzZWxlY3QgTElCV1hcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgV2FuZ3h1bihSKSBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDM1Olx0XHQgIGFkYXB0ZXJzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgMzg6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlLnJzdFx1MDAzZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA0MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZ2JlLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBUWEdCRVxuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0NjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gIDQ3Olx0XHRkZXBlbmRzIG9uIEkyQ19ERVNJR05XQVJFX1BMQVRGT1JNXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQ5Olx0XHRzZWxlY3QgTUFSVkVMTF8xMEdfUEhZXG4gIDUwOlx0XHRzZWxlY3QgUkVHTUFQXG4gIDUxOlx0XHRzZWxlY3QgSFdNT04gaWYgVFhHQkU9eVxuICA1MjpcdFx0c2VsZWN0IFNGUFxuICA1MzpcdFx0c2VsZWN0IEdQSU9MSUJcbiAgNTQ6XHRcdHNlbGVjdCBHUElPTElCX0lSUUNISVBcbiAgNTU6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICA1NjpcdFx0c2VsZWN0IExJQldYXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFdhbmd4dW4oUikgMTAvMjUvNDBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDU5Olx0XHQgIGFkYXB0ZXJzLlxuICA2MDpcdFxuICA2MTpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgNjI6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcdTAwM2UuXG4gIDYzOlx0XG4gIDY0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgNjU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdHhnYmUuXG4gIDY2Olx0XG4gIDY3Olx0Y29uZmlnIFRYR0JFVkZcbiAgNjg6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICA2OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzA6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA3MjpcdFx0c2VsZWN0IExJQldYXG4gIDczOlx0XHRoZWxwXG4gIDc0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBTUDEwMDBBLCBXWDE4MjBBTCxcbiAgNzU6XHRcdCAgV1g1WFhYLCBXWDVYWFhBTC5cbiAgNzY6XHRcbiAgNzc6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIHR4Z2JldmYuXG4gIDc4Olx0XG4gIDc5Olx0XHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuICA4MDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XHUwMDNlLlxuICA4MTpcdFxuICA4MjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBNU0ktWCBpbnRlcnJ1cHRcbiAgODM6XHRcdCAgc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXG4gIDg0Olx0XG4gIDg1Olx0Y29uZmlnIE5HQkVWRlxuICA4NjpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg3Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAgODg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgODk6XHRcdHNlbGVjdCBMSUJXWFxuICA5MDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NTIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRYR0JFVkYgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYFRYR0JFVkZgIGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZm91bmRhdGlvbmFsIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgdG8gcmVseSBoZWF2aWx5IG9uIFBDSSwgYW5kIHNwZWNpZmljYWxseSBQQ0lfTVNJLCB3aGljaCBpcyBleHBlY3RlZC4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSwgYXMgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aG9zZSBwcm90b2NvbHMgaXMgZ29pbmcgdG8gYmUga2V5LgoKTmV4dCwgSSBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCB2aXJ0dWFsIGZ1bmN0aW9uczogU1AxMDAwQSwgV1gxODIwQUwsIFdYNVhYWCwgV1g1WFhYQUwuIFRoYXQmIzM5O3MgYSBkZWNlbnQgcmFuZ2Ugb2YgaGFyZHdhcmUgcGxhdGZvcm1zLiBCdXQsIGp1c3QgdG8gY292ZXIgYWxsIG15IGJhc2VzLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJyYWluc3Rvcm1pbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gQXJlIHRoZXJlIGFueSBtb2NrIGRyaXZlcnMsIHBlcmhhcHMgYSBVU0IgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgdG8gc3VwcG9ydCBpdHMgdGVzdGluZyBvciBvcGVyYXRpb24gaW4gYSBub24tc3RhbmRhcmQgY29uZmlndXJhdGlvbj8gSSB3b3VsZCBsaWtlIHRvIGNvbnNpZGVyIGFsbCB0aGUgZGlmZmVyZW50IHdheXMgdGhhdCB0aGlzIGRyaXZlciBjb3VsZCBiZSBkZXBsb3llZC4KClRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBjb3JlIGxvZ2ljIGFuZCBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGB0eGdiZXZmX21haW4uY2AuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1haW4gZnVuY3Rpb25hbGl0aWVzLCBpbml0aWFsaXphdGlvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdC8qIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMjUgQmVpamluZyBXYW5nWHVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuICovXG4gICAzOlx0XG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICAxMDpcdFxuICAxMTpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X3R5cGUuaFwmIzM0O1xuICAxMjpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X2h3LmhcJiMzNDtcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDsuLi9saWJ3eC93eF9saWIuaFwmIzM0O1xuICAxNDpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X21ieC5oXCYjMzQ7XG4gIDE1Olx0I2luY2x1ZGUgXCYjMzQ7Li4vbGlid3gvd3hfdmYuaFwmIzM0O1xuICAxNjpcdCNpbmNsdWRlIFwmIzM0Oy4uL2xpYnd4L3d4X3ZmX2NvbW1vbi5oXCYjMzQ7XG4gIDE3Olx0I2luY2x1ZGUgXCYjMzQ7Li4vbGlid3gvd3hfZXRodG9vbC5oXCYjMzQ7XG4gIDE4Olx0I2luY2x1ZGUgXCYjMzQ7dHhnYmV2Zl90eXBlLmhcJiMzNDtcbiAgMTk6XHRcbiAgMjA6XHQvKiB0eGdiZXZmX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXG4gIDIxOlx0ICpcbiAgMjI6XHQgKiBXaWxkY2FyZCBlbnRyaWVzIChQQ0lfQU5ZX0lEKSBzaG91bGQgY29tZSBsYXN0XG4gIDIzOlx0ICogTGFzdCBlbnRyeSBtdXN0IGJlIGFsbCAwc1xuICAyNDpcdCAqXG4gIDI1Olx0ICogeyBWZW5kb3IgSUQsIERldmljZSBJRCwgU3ViVmVuZG9yIElELCBTdWJEZXZpY2UgSUQsXG4gIDI2Olx0ICogICBDbGFzcywgQ2xhc3MgTWFzaywgcHJpdmF0ZSBkYXRhIChub3QgdXNlZCkgfVxuICAyNzpcdCAqL1xuICAyODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCB0eGdiZXZmX3BjaV90YmxbXSA9IHtcbiAgMjk6XHRcdHsgUENJX1ZERVZJQ0UoV0FOR1hVTiwgVFhHQkVWRl9ERVZfSURfU1AxMDAwKSB9LFxuICAzMDpcdFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9XWDE4MjApIH0sXG4gIDMxOlx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUwMEYpIH0sXG4gIDMyOlx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUxMEYpIH0sXG4gIDMzOlx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUwMjQpIH0sXG4gIDM0Olx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUxMjQpIH0sXG4gIDM1Olx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUwM0YpIH0sXG4gIDM2Olx0XHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX0FNTDUxM0YpIH0sXG4gIDM3Olx0XHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4gIDM4Olx0XHR7IH1cbiAgMzk6XHR9O1xuICA0MDpcdFxuICA0MTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHhnYmV2Zl9uZXRkZXZfb3BzID0ge1xuICA0MjpcdFx0Lm5kb19vcGVuICAgICAgICAgICAgICAgPSB3eHZmX29wZW4sXG4gIDQzOlx0XHQubmRvX3N0b3AgICAgICAgICAgICAgICA9IHd4dmZfY2xvc2UsXG4gIDQ0Olx0XHQubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IHd4X3htaXRfZnJhbWUsXG4gIDQ1Olx0XHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxuICA0NjpcdFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLFxuICA0NzpcdH07XG4gIDQ4Olx0XG4gIDQ5Olx0c3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxuICA1MDpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTg3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFdhbmd4dW4gRXRoZXJuZXQgU1JJT1YgVmlydHVhbCBGdW5jdGlvbiBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgV2FuZ3h1biBFdGhlcm5ldCBTUklPViBWaXJ0dWFsIEZ1bmN0aW9ucy4gSXQmIzM5O3MgYSBzdGFuZGFyZCBQQ0kgZHJpdmVyLCB0YXJnZXRpbmcgdGhlIFdBTkdYVU4gdmVuZG9yIElELCB3aGljaCByZXByZXNlbnRzIGFjdHVhbCBXYW5neHVuIGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoaXMgaGFyZHdhcmUgaXMgYXZhaWxhYmxlIHRvIHN0YW5kYXJkIFFFTVUuCgpMb29raW5nIGF0IHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHRoZSB0ZXh0IG1lbnRpb25zICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IGFuZCBsaXN0cyBleGFtcGxlcyBsaWtlIG1seHN3LCBwZHNfY29yZSwgYW5kIGFtZGdwdSwgd2hpY2ggYWxsIHJlcXVpcmUgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBoZWFkcyB1cC4gTm93LCBhcmUgV2FuZ3h1biBOSUNzIGhhbmRsZWQgYnkgc3RhbmRhcmQgUUVNVT8KCkkgbmVlZCB0byBjb25maXJtIGlmIFdhbmd4dW4gTklDcyBhcmUsIGluZGVlZCwgZW11bGF0ZWQgaW4gUUVNVS4gQSBxdWljayBjaGVjayBvZiBRRU1VJiMzOTtzIHN1cHBvcnRlZCBkZXZpY2VzIHJldmVhbHMgdGhhdCB0aGV5IHN1cHBvcnQgdGhlIGxpa2VzIG9mIGUxMDAwLCBlMTAwMGUsIGFuZCB2aXJ0aW8tbmV0LCBhbW9uZyBvdGhlcnMsIGJ1dCBub3QgV2FuZ3h1biB0eGdiZS9uZ2JlL3R4Z2JldmYgTklDcy4gU28gaXQgZG9lc24mIzM5O3QgbG9vayBsaWtlIHRoZXkgYXJlLiBJdCBiaW5kcyB0byB0aGUgV0FOR1hVTiB2ZW5kb3IgSUQsIHdoaWNoIEkmIzM5O2xsIGNvbmZpcm0uCgpOb3cgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIFBDSV9WRU5ET1JfSURfV0FOR1hVTiB0byBnZXQgYSBzb2xpZCBoYW5kbGUgb24gdGhhdCB2ZW5kb3IgSUQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDSV9WRU5ET1JfSURfV0FOR1hVTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjQ3Mj1pbnQgd3hfc3dfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yNDg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjI0OTA6XHRpZiAod3gtXHUwMDNlb2VtX3N2aWQgPT0gUENJX1ZFTkRPUl9JRF9XQU5HWFVOIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjQ5MS1cdCAgICBwZGV2LVx1MDAzZWlzX3ZpcnRmbikge1xuLS1cbmRyaXZlcnMvcGNpL3F1aXJrcy5jPTUwODA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2X2Fjc19lbmFibGVkIHtcbi0tXG5kcml2ZXJzL3BjaS9xdWlya3MuYy01MjQ2LVx0LyogV2FuZ3h1biBuaWNzICovXG5kcml2ZXJzL3BjaS9xdWlya3MuYzo1MjQ3Olx0eyBQQ0lfVkVORE9SX0lEX1dBTkdYVU4sIFBDSV9BTllfSUQsIHBjaV9xdWlya193YW5neHVuX25pY19hY3MgfSxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTUyNDgtXHR7IDAgfVxuLS1cbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTMxNjktXG5pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaDozMTcwOiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9XQU5HWFVOXHRcdDB4ODA4OFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMzE3MS1cbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnM9MTcyPSAgICBmbiBmbXQoXHUwMDI2c2VsZiwgZjogXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTYzLSAgICBJTlRFTCAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9JTlRFTCwgICAgICAgICAgICAgICAgICAgIC8vIDB4ODA4NlxucnVzdC9rZXJuZWwvcGNpL2lkLnJzOjU2NDogICAgV0FOR1hVTiAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfV0FOR1hVTiwgICAgICAgICAgICAgICAgICAvLyAweDgwODhcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycy01NjUtICAgIFNDQUxFTVAgICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX1NDQUxFTVAsICAgICAgICAgICAgICAgICAgLy8gMHg4Njg2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZG93bnN0cmVhbSBpbXBhY3Qgb2YgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hvIGVsc2UgaXMgdG91Y2hpbmcgdGhlIGNvZGUgdGhhdCAqdGhpcyogY29kZSBtb2RpZmllcz8mIzM0OyBJIG5lZWQgdG8gc2VlIGlmIGFueXRoaW5nIGVsc2UgaXMgdXNpbmcgYGxpYnd4YCwgYHd4X2V0aHRvb2xfb3BzX3ZmYCwgb3IgYW55dGhpbmcgZWxzZSB0aGlzIHBhdGNoIGlzIGRlYWxpbmcgd2l0aC4gTXkgbmV4dCBzdGVwPyBJIG5lZWQgdG8gdXNlIGBncmVwYC4gSSYjMzk7bGwgc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGB3eF9zZXRfZXRodG9vbF9vcHNfdmZgIHRvIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYW5kIHdoYXQgcmVsaWVzIG9uIHRoaXMuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhIGRlZXBlciBkaXZlIGludG8gdW5kZXJzdGFuZGluZyB0aGUgcmlwcGxlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NldF9ldGh0b29sX29wc192ZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYz05MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYy05MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYzo5MjE6dm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jLTkyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtOTI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jOjkyNTpFWFBPUlRfU1lNQk9MKHd4X3NldF9ldGh0b29sX29wc192Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmg9NjE9dm9pZCB3eF9nZXRfcHRwX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuaC02Mi1cdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfdHNfc3RhdHMgKnRzX3N0YXRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5oOjYzOnZvaWQgd3hfc2V0X2V0aHRvb2xfb3BzX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmgtNjQtI2VuZGlmIC8qIF9XWF9FVEhUT09MX0hfICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYz0xMzY9c3RhdGljIGludCBuZ2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0xOTAtXHR3eC1cdTAwM2Vkcml2ZXJfbmFtZSA9IEtCVUlMRF9NT0ROQU1FO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYzoxOTE6XHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMtMTkyLVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmM9MTk2PXN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjU4LVx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYzoyNTk6XHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYy0yNjAtXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnR4Z2JldmZfbmV0ZGV2X29wcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyOTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIERyaXZlciBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IGB3eF9zZXRfZXRodG9vbF9vcHNfdmZgIGlzIG9ubHkgY2FsbGVkIGJ5IGBuZ2JldmZfcHJvYmVgIGFuZCBgdHhnYmV2Zl9wcm9iZWAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBQQ0kgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJzIHNwZWNpZmljIHRvIFdhbmd4dW4mIzM5O3MgZXRoZXJuZXQgaGFyZHdhcmUsIGxpa2VseSB0aGUgR2JFIGFuZCAxMEdiRSB2ZXJzaW9ucy4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4KClRoZW4sIG15IGV5ZSBjYXRjaGVzIGB3eF9zZXR1cF92Zm1ycWNfdmZgIHdpdGhpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY2AuIENsZWFybHksIHRoaXMgaXMgYW5vdGhlciBrZXkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgVmlydHVhbCBGdW5jdGlvbiBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIHNvIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpdHMgY2FsbCBzaXRlcyB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgVkYgTVJRQyAoTXVsdGktUmVjZWl2ZSBRdWV1ZSBDb250ZXh0KSBpcyBiZWluZyBzZXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NldHVwX3ZmbXJxY192ZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jPTE4OT1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcnhfdmYoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTE5NC1cdHd4X3NldHVwX3BzcnR5cGVfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoxOTU6XHR3eF9zZXR1cF92Zm1ycWNfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYz0xOTY9dm9pZCB3eF9zZXR1cF9wc3J0eXBlX3ZmKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYy0yMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jOjIwODp2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYy0yMDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmg9MTA9dm9pZCB3eF9zZXR1cF9wc3J0eXBlX3ZmKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuaDoxMTp2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmgtMTItdm9pZCB3eF9jb25maWd1cmVfdHhfdmYoc3RydWN0IHd4ICp3eCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTE5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB3eF9jb25maWd1cmVfcnhfdmZgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIEkgc2VlIHRoaXMgYHd4X2NvbmZpZ3VyZV9yeF92ZmAgZnVuY3Rpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRoZSBvbmUgdGhhdCBhbHdheXMgcG9wcyB1cCBmaXJzdCB3aGVuIEkmIzM5O20gcmV2ZXJzZSBlbmdpbmVlcmluZyBjb2RlLCBpcyAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgdXNlZD8gV2hlcmUgYXJlIHRoZSBjYWxsc2l0ZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHRoZSBkYXRhIHRoYXQmIzM5O3MgYmVpbmcgZmVkIGludG8gaXQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgbGF5ZXJzLCB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBrbm93IHdoZXJlIHRoaXMgc3BlY2lmaWMgbG9naWMgc2l0cyB3aXRoaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBXaXRob3V0IGtub3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGl0JiMzOTtzIGp1c3QgYSBsb25lbHkgcGllY2Ugb2YgY29kZS4gTm93IHRvIGZpbmQgd2hlcmUgdGhlIGNhbGxzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d3hfY29uZmlndXJlX3J4X3ZmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MTgxPUVYUE9SVF9TWU1CT0wod3hfc2V0X3J4X21vZGVfdmYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMTgzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoxODQ6ICogd3hfY29uZmlndXJlX3J4X3ZmIC0gQ29uZmlndXJlIFJlY2VpdmUgVW5pdCBhZnRlciBSZXNldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xODUtICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMTg4LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM6MTg5OnN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9yeF92ZihzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xOTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MjE2PXZvaWQgd3hfY29uZmlndXJlX3ZmKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0yMTktXHR3eF9jb25maWd1cmVfdHhfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoyMjA6XHR3eF9jb25maWd1cmVfcnhfdmYod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0yMjEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczNgoJCQkJCQkJb3V0cHV0OiAxMjEKCQkJCQkJCXRob3VnaHRzOiA0ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjZWQgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgd3hfY29uZmlndXJlX3ZmYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgYnkgYHd4dmZfb3BlbmAgYW5kIGB3eHZmX3VwX2NvbXBsZXRlYCB3aXRoaW4gdGhlIGB3eF92Zl9jb21tb24uY2AgZmlsZS4gVGhpcyB3aG9sZSBhcmVhLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBhbmQgcGFydGljdWxhcmx5IHRoZSBWRiBkcml2ZXJzIGxpa2UgYHR4Z2JldmZgIGFuZCBgbmdiZXZmYCBhbG9uZyB3aXRoIHRoZSBjb21tb24gbGlicmFyeSBgbGlid3hgLCBpcyB2ZW5kb3Itc3BlY2lmaWMgdG8gV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLiBUaGVzZSBkcml2ZXJzIGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlaXIgcGFydGljdWxhciBQQ0llIG5ldHdvcmsgY2FyZHMgYW5kIEFTSUNzIOKAkyB0aGluZ3MgbGlrZSB0aGUgU1AxMDAwIGFuZCBXWDE4MjAuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhlc2UgcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cyAqYXJlbiYjMzk7dCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGlzIHRoZSBzb3J0IG9mIHRoaW5nIHdlJiMzOTtkIGJlIHVzaW5nIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgYmFjayB0byBzZWN0aW9uIDIgb2YgdGhlIHByb21wdC4gWWVzLCBpdCBjbGVhcmx5IHN0YXRlcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaXMgJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuIFRoaXMgYWxpZ25zICpwZXJmZWN0bHkqIHdpdGggdGhpcyBXYW5neHVuIGRyaXZlciBzaXR1YXRpb24uCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGRlcGVuZHMgb24gaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgYXZhaWxhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LCB0aGlzIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGh1czoKCiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYAoqICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5LCBubyBzeW1ib2xzIHRvIGZvY3VzIG9uKQoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgW11gIChlbXB0eSwgbm8gY29uZmlncyB0byBlbmFibGUpCiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIFdhbmd4dW4gZXRoZXJuZXQgZHJpdmVycyAodHhnYmV2ZiwgbGlid3gpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgV2FuZ3h1biBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4KCkkmIzM5O3ZlIGFsc28gZG91YmxlLWNoZWNrZWQgdGhlIHNwZWNpZmljIGZpbGVzIHRoYXQgd2VyZSBtb2RpZmllZDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIFRoZXkgYXJlIGFsbCBzdHJpY3RseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBjb25maXJtaW5nIHRoYXQgbm8gY29yZSBuZXR3b3JraW5nIGNvZGUgaXMgdG91Y2hlZC4gRXZlcnl0aGluZyBpcyBjbGVhciBhbmQgdW5hbWJpZ3VvdXMuIEkgYW0gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBWRiBkcml2ZXIgYW5kIGl0cyBzaGFyZWQgbGlicmFyeSAodHhnYmV2ZiwgbGlid3gpIHRvIGltcGxlbWVudCBldGh0b29sIGdldC9zZXQgY2hhbm5lbHMgY2FsbGJhY2tzIGFuZCBhZGp1c3QgUlNTIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFRoZXNlIGRyaXZlcnMgdGFyZ2V0IHBoeXNpY2FsIFdhbmd4dW4gUENJZSBOSUMgaGFyZHdhcmUgKFNQMTAwMCwgV1gxODIwLCBldGMuKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIGRyaXZlciBhbmQgaXRzIHNoYXJlZCBsaWJyYXJ5ICh0eGdiZXZmLCBsaWJ3eCkgdG8gaW1wbGVtZW50IGV0aHRvb2wgZ2V0L3NldCBjaGFubmVscyBjYWxsYmFja3MgYW5kIGFkanVzdCBSU1MgcXVldWUgY29uZmlndXJhdGlvbi4gVGhlc2UgZHJpdmVycyB0YXJnZXQgcGh5c2ljYWwgV2FuZ3h1biBQQ0llIE5JQyBoYXJkd2FyZSAoU1AxMDAwLCBXWDE4MjAsIGV0Yy4pIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTE6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjAxLjk0MDcxMDQ2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MDE5MTkyOTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgZHJpdmVyIGFuZCBpdHMgc2hhcmVkIGxpYnJhcnkgKHR4Z2JldmYsIGxpYnd4KSB0byBpbXBsZW1lbnQgZXRodG9vbCBnZXQvc2V0IGNoYW5uZWxzIGNhbGxiYWNrcyBhbmQgYWRqdXN0IFJTUyBxdWV1ZSBjb25maWd1cmF0aW9uLiBUaGVzZSBkcml2ZXJzIHRhcmdldCBwaHlzaWNhbCBXYW5neHVuIFBDSWUgTklDIGhhcmR3YXJlIChTUDEwMDAsIFdYMTgyMCwgZXRjLikgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDowMS45NDA3MTU1NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjAxODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE3ODU1YjAwMGU3NGI1MzRmNzdjZDc4Y2Y5ZjRhYTFkMzUyNjQ1NjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTE6NTQ6MDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xcbmluZGV4IDk0MGQyZTU5ODc2YzcuLmQyNDM3MDc5MDk0MTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xcbkBAIC01NjQsNiArNTY0LDY4IEBAIGludCB3eF9zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4X3NldF9jaGFubmVscyk7XFxuIFxcbitzdGF0aWMgdm9pZCB3eF9nZXRfY2hhbm5lbHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaClcXG4re1xcbitcXHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFxuK1xcdC8qIHJlcG9ydCBtYXhpbXVtIGNoYW5uZWxzICovXFxuK1xcdGNoLVxcdTAwM2VtYXhfY29tYmluZWQgPSB3eC1cXHUwMDNlbWFjLm1heF9yeF9xdWV1ZXM7XFxuK1xcbitcXHRjaC1cXHUwMDNlbWF4X290aGVyID0gMTtcXG4rXFx0Y2gtXFx1MDAzZW90aGVyX2NvdW50ID0gMTtcXG4rXFxuK1xcdC8qIHJlY29yZCBjdXJyZW50IGNoYW5uZWxzICovXFxuK1xcdGNoLVxcdTAwM2Vjb21iaW5lZF9jb3VudCA9IHd4LVxcdTAwM2VudW1fcnhfcXVldWVzO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXFxuK3tcXG4rXFx0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHUxNiByc3NfbGltaXQ7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyc3NfbGltaXQgPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0O1xcbitcXG4rXFx0LyogdmVyaWZ5IG90aGVyX2NvdW50IGhhcyBub3QgY2hhbmdlZCAqL1xcbitcXHRpZiAoY2gtXFx1MDAzZW90aGVyX2NvdW50ICE9IDEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0LyogdmVyaWZ5IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZG9lcyBub3QgZXhjZWVkIGhhcmR3YXJlIGxpbWl0cyAqL1xcbitcXHRpZiAoY2gtXFx1MDAzZWNvbWJpbmVkX2NvdW50IFxcdTAwM2Ugd3gtXFx1MDAzZW1hYy5tYXhfcnhfcXVldWVzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdC8qIGlmIGRldmljZSBpcyByZXNldHRpbmcsIGRvIG5vdGhpbmcgKi9cXG4rXFx0aWYgKHRlc3RfYml0KFdYX1NUQVRFX1JFU0VUVElORywgd3gtXFx1MDAzZXN0YXRlKSlcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuK1xcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSBjaC1cXHUwMDNlY29tYmluZWRfY291bnQ7XFxuK1xcbitcXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbitcXHRcXHR3eHZmX2Nsb3NlKGRldik7XFxuK1xcbitcXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG4rXFxuK1xcdHJldCA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gZXJyX291dDtcXG4rXFxuK1xcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpIHtcXG4rXFx0XFx0cmV0ID0gd3h2Zl9vcGVuKGRldik7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdGdvdG8gZXJyX2Nsb3NlO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl9jbG9zZTpcXG4rXFx0d3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuK2Vycl9vdXQ6XFxuK1xcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3NfbGltaXQ7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIHUzMiB3eF9yc3NfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbkBAIC04NTIsNiArOTE0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcXG4gXFx0LnNldF9jb2FsZXNjZVxcdFxcdD0gd3hfc2V0X2NvYWxlc2NlLFxcbiBcXHQuZ2V0X3RzX2luZm9cXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuIFxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHd4X2dldF9saW5rX2tzZXR0aW5nc192ZixcXG4rXFx0LmdldF9jaGFubmVsc1xcdFxcdD0gd3hfZ2V0X2NoYW5uZWxzX3ZmLFxcbitcXHQuc2V0X2NoYW5uZWxzXFx0XFx0PSB3eF9zZXRfY2hhbm5lbHNfdmYsXFxuIH07XFxuIFxcbiB2b2lkIHd4X3NldF9ldGh0b29sX29wc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xcbmluZGV4IDczMjViNDc1ZWUxMGMuLjZmZWMzYWI1ZTRlNDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNcXG5AQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgd3hfc2V0dXBfdmZtcnFjX3ZmKHN0cnVjdCB3eCAqd3gpXFxuIFxcbiBcXHR2Zm1ycWMgfD0gV1hfVlhNUlFDX1JTU19FTjtcXG4gXFxuLVxcdGlmICh3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlcyBcXHUwMDNlIDMpXFxuK1xcdGlmICh3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlcyBcXHUwMDNlPSAzKVxcbiBcXHRcXHR2Zm1ycWMgfD0gV1hfVlhNUlFDX1JTU19IQVNIKDIpO1xcbiBcXHRlbHNlIGlmICh3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlcyBcXHUwMDNlIDEpXFxuIFxcdFxcdHZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY1xcbmluZGV4IDhiMTZiOTAwODIwYWEuLjZlODY1OTA4MjA1MWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuQEAgLTcyLDYgKzcyLDkgQEAgc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHRxdWV1ZSA9IG1pbl90KHUxNiwgd3gtXFx1MDAzZW1hYy5tYXhfcnhfcXVldWVzLCB3eC1cXHUwMDNlbWFjLm1heF90eF9xdWV1ZXMpO1xcbiBcXHRcXHRyc3MgPSBtaW5fdCh1MTYsIHF1ZXVlLCByc3MpO1xcbiBcXG4rXFx0XFx0aWYgKHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQpXFxuK1xcdFxcdFxcdHJzcyA9IG1pbl90KHUxNiwgcnNzLCB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0KTtcXG4rXFxuIFxcdFxcdGlmICh3eC1cXHUwMDNldmZpbmZvLVxcdTAwM2V2Zl9hcGkgXFx1MDAzZT0gd3hfbWJveF9hcGlfMTMpIHtcXG4gXFx0XFx0XFx0d3gtXFx1MDAzZW51bV9yeF9xdWV1ZXMgPSByc3M7XFxuIFxcdFxcdFxcdHd4LVxcdTAwM2VudW1fdHhfcXVldWVzID0gcnNzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDowMi40MDc0MzAzMjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYzNTUyNDU4NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBWRiBkcml2ZXIgYW5kIGl0cyBzaGFyZWQgbGlicmFyeSAodHhnYmV2ZiwgbGlid3gpIHRvIGltcGxlbWVudCBldGh0b29sIGdldC9zZXQgY2hhbm5lbHMgY2FsbGJhY2tzIGFuZCBhZGp1c3QgUlNTIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFRoZXNlIGRyaXZlcnMgdGFyZ2V0IHBoeXNpY2FsIFdhbmd4dW4gUENJZSBOSUMgaGFyZHdhcmUgKFNQMTAwMCwgV1gxODIwLCBldGMuKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTc4NTViMDAwZTc0YjUzNGY3N2NkNzhjZjlmNGFhMWQzNTI2NDU2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDExOjU0OjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xuaW5kZXggOTQwZDJlNTk4NzZjNy4uZDI0MzcwNzkwOTQxNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY1xuQEAgLTU2NCw2ICs1NjQsNjggQEAgaW50IHd4X3NldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MKHd4X3NldF9jaGFubmVscyk7XG4gXG4rc3RhdGljIHZvaWQgd3hfZ2V0X2NoYW5uZWxzX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaClcbit7XG4rXHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcbitcdC8qIHJlcG9ydCBtYXhpbXVtIGNoYW5uZWxzICovXG4rXHRjaC1cdTAwM2VtYXhfY29tYmluZWQgPSB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcztcbitcbitcdGNoLVx1MDAzZW1heF9vdGhlciA9IDE7XG4rXHRjaC1cdTAwM2VvdGhlcl9jb3VudCA9IDE7XG4rXG4rXHQvKiByZWNvcmQgY3VycmVudCBjaGFubmVscyAqL1xuK1x0Y2gtXHUwMDNlY29tYmluZWRfY291bnQgPSB3eC1cdTAwM2VudW1fcnhfcXVldWVzO1xuK31cbitcbitzdGF0aWMgaW50IHd4X3NldF9jaGFubmVsc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaClcbit7XG4rXHRzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdHUxNiByc3NfbGltaXQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cnNzX2xpbWl0ID0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0O1xuK1xuK1x0LyogdmVyaWZ5IG90aGVyX2NvdW50IGhhcyBub3QgY2hhbmdlZCAqL1xuK1x0aWYgKGNoLVx1MDAzZW90aGVyX2NvdW50ICE9IDEpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0LyogdmVyaWZ5IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZG9lcyBub3QgZXhjZWVkIGhhcmR3YXJlIGxpbWl0cyAqL1xuK1x0aWYgKGNoLVx1MDAzZWNvbWJpbmVkX2NvdW50IFx1MDAzZSB3eC1cdTAwM2VtYWMubWF4X3J4X3F1ZXVlcylcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHQvKiBpZiBkZXZpY2UgaXMgcmVzZXR0aW5nLCBkbyBub3RoaW5nICovXG4rXHRpZiAodGVzdF9iaXQoV1hfU1RBVEVfUkVTRVRUSU5HLCB3eC1cdTAwM2VzdGF0ZSkpXG4rXHRcdHJldHVybiAtRUJVU1k7XG4rXG4rXHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSBjaC1cdTAwM2Vjb21iaW5lZF9jb3VudDtcbitcbitcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG4rXHRcdHd4dmZfY2xvc2UoZGV2KTtcbitcbitcdHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUod3gpO1xuK1xuK1x0cmV0ID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gZXJyX291dDtcbitcbitcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpIHtcbitcdFx0cmV0ID0gd3h2Zl9vcGVuKGRldik7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0Z290byBlcnJfY2xvc2U7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbitcbitlcnJfY2xvc2U6XG4rXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbitlcnJfb3V0OlxuK1x0d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0ID0gcnNzX2xpbWl0O1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gdTMyIHd4X3Jzc19pbmRpcl9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4ge1xuIFx0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5AQCAtODUyLDYgKzkxNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgd3hfZXRodG9vbF9vcHNfdmYgPSB7XG4gXHQuc2V0X2NvYWxlc2NlXHRcdD0gd3hfc2V0X2NvYWxlc2NlLFxuIFx0LmdldF90c19pbmZvXHRcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcbiBcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gd3hfZ2V0X2xpbmtfa3NldHRpbmdzX3ZmLFxuK1x0LmdldF9jaGFubmVsc1x0XHQ9IHd4X2dldF9jaGFubmVsc192ZixcbitcdC5zZXRfY2hhbm5lbHNcdFx0PSB3eF9zZXRfY2hhbm5lbHNfdmYsXG4gfTtcbiBcbiB2b2lkIHd4X3NldF9ldGh0b29sX29wc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jXG5pbmRleCA3MzI1YjQ3NWVlMTBjLi42ZmVjM2FiNWU0ZTQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY1xuQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIHd4X3NldHVwX3ZmbXJxY192ZihzdHJ1Y3Qgd3ggKnd4KVxuIFxuIFx0dmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfRU47XG4gXG4tXHRpZiAod3gtXHUwMDNlbnVtX3J4X3F1ZXVlcyBcdTAwM2UgMylcbitcdGlmICh3eC1cdTAwM2VudW1fcnhfcXVldWVzIFx1MDAzZT0gMylcbiBcdFx0dmZtcnFjIHw9IFdYX1ZYTVJRQ19SU1NfSEFTSCgyKTtcbiBcdGVsc2UgaWYgKHd4LVx1MDAzZW51bV9yeF9xdWV1ZXMgXHUwMDNlIDEpXG4gXHRcdHZmbXJxYyB8PSBXWF9WWE1SUUNfUlNTX0hBU0goMSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi42ZTg2NTkwODIwNTFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC03Miw2ICs3Miw5IEBAIHN0YXRpYyB2b2lkIHR4Z2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbiBcdFx0cXVldWUgPSBtaW5fdCh1MTYsIHd4LVx1MDAzZW1hYy5tYXhfcnhfcXVldWVzLCB3eC1cdTAwM2VtYWMubWF4X3R4X3F1ZXVlcyk7XG4gXHRcdHJzcyA9IG1pbl90KHUxNiwgcXVldWUsIHJzcyk7XG4gXG4rXHRcdGlmICh3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQpXG4rXHRcdFx0cnNzID0gbWluX3QodTE2LCByc3MsIHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCk7XG4rXG4gXHRcdGlmICh3eC1cdTAwM2V2ZmluZm8tXHUwMDNldmZfYXBpIFx1MDAzZT0gd3hfbWJveF9hcGlfMTMpIHtcbiBcdFx0XHR3eC1cdTAwM2VudW1fcnhfcXVldWVzID0gcnNzO1xuIFx0XHRcdHd4LVx1MDAzZW51bV90eF9xdWV1ZXMgPSByc3M7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDowMi40MDc0MzI2MzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjczODUxOTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEV2YWx1YXRpb246IFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCwgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJIHNlZSBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuY2AsIGB3eF92Zl9saWIuY2AsIGFuZCBgdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIEhtbSwgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXJzLiBSaWdodCwgYHR4Z2JldmZgIGlzIHRoZWlyIDEwR2JFIFBDSSBFeHByZXNzIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLCBhbmQgYGxpYnd4YCBpcyB0aGVpciBjb21tb24gbGlicmFyeS5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgYXJlIHRoZXNlIGRyaXZlcnMgdGFyZ2V0aW5nIGhhcmR3YXJlIHRoYXQncyBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gTGV0IG1lIHB1bGwgdXAgdGhlIGNvcmUgdHJpYWdlIHBoaWxvc29waHksIGJlY2F1c2UgdGhhdCdzIHRoZSBkZWNpZGluZyBmYWN0b3IuIE9rYXksIGhlcmUgd2UgZ286IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgV2FuZ3h1biBldGhlcm5ldCBpcyBlbXVsYXRlZC4gRnJvbSBteSBleHBlcmllbmNlIHdpdGggdGhlc2Uga2luZHMgb2YgTklDcywgV2FuZ3h1biAoVGVjaG1hbikgaXMgYSBDaGluZXNlIE5JQyB2ZW5kb3IuIFRoZXkgbWFrZSBwaHlzaWNhbCBOSUNzLiBgVHhnYmVgIGlzIGEgMTBHYkUgUENJIEV4cHJlc3MgTmV0d29yayBDb250cm9sbGVyLCBhbmQgYE5nYmVgIGlzIDFHYkUuIFRoZXkgYXJlIG5vdCBrbm93biBmb3IgYmVpbmcgZWFzaWx5IHZpcnR1YWxpemVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhpcyBieSBjaGVja2luZyB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlLCBLY29uZmlnIGZpbGVzLCBhbmQgUENJIElEcyB0byBjb25maXJtIHRoYXQgdGhleSByZXF1aXJlIGFjdHVhbCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjI1LjE0NTk1NTU4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM1MjYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVFhHQkVWRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz00Mz1jb25maWcgVFhHQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6Njc6Y29uZmlnIFRYR0JFVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6MjUuMjA2MzEyNTY0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzg5MzAwMzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBLY29uZmlnIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIFdhbmd4dW4gRXRoZXJuZXQgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdgIGZpbGUuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBjb250cm9sbGVkIGFuZCB3aGF0IG9wdGlvbnMgaXQgZXhwb3NlcyB0byB0aGUgdXNlciBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkRlcGVuZGVuY2llczoqKiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIHByZXJlcXVpc2l0ZXMsIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkLCBvciBvdGhlciBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCB0aGlzIGRyaXZlciByZWxpZXMgdXBvbj8gSSdsbCBiZSB3YXRjaGluZyBmb3IgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMuXG4qICAgKipIYXJkd2FyZSBWYXJpYW50cy9GZWF0dXJlIFNlbGVjdGlvbjoqKiBEb2VzIHRoaXMgS2NvbmZpZyBoYW5kbGUgbXVsdGlwbGUgV2FuZ3h1biBFdGhlcm5ldCBjb250cm9sbGVycz8gSWYgc28sIGFyZSB0aGVyZSBzcGVjaWZpYyBvcHRpb25zIHRvIGNob29zZSBiZXR3ZWVuIGRpZmZlcmVudCBtb2RlbHMsIHNwZWVkcyAoZS5nLiwgMTAvMTAwLzEwMDAgTWJwcyksIG9yIFBIWSBjb25maWd1cmF0aW9ucz8gSSB3aWxsIGxvb2sgZm9yIHZhcmlvdXMgc3ltYm9sIGRlZmluaXRpb25zIHVzaW5nIGBjb25maWdgLlxuKiAgICoqTW9kdWxlIEJ1aWxkOioqIElzIHRoZSBkcml2ZXIgY29tcGlsZWQgYXMgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBvcHRpb25hbGx5IGFzIGJvdGg/IFRoaXMgd2lsbCBiZSBpbmRpY2F0ZWQgYnkgdGhlIGB0cmlzdGF0ZWAgc2V0dGluZyBvciBzaW1pbGFyLlxuKiAgICoqRGVidWdnaW5nL0FkdmFuY2VkIE9wdGlvbnM6KiogQXJlIHRoZXJlIGFueSBkZWJ1ZyBmZWF0dXJlcyBvciBhZHZhbmNlZCBvcHRpb25zIGV4cG9zZWQgdG8gdXNlcnMsIG9yIGp1c3QgY29yZSBmZWF0dXJlcz8gVGhlc2UgY291bGQgYmUgbG9nZ2luZyBsZXZlbHMsIHBlcmZvcm1hbmNlIGNvdW50ZXJzLCBvciBvdGhlciBkaWFnbm9zdGljcyB0aGF0IGhlbHAgd2l0aCB0cm91Ymxlc2hvb3RpbmcuIEknbGwgbG9vayBmb3IgYGJvb2xgLCBgaW50YCwgYW5kIGBzdHJpbmdgIG9wdGlvbnMgd2l0aCBzcGVjaWZpYyBoZWxwIHRleHQuXG4qICAgKipEZWZhdWx0IFZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgY2hvc2VuPyBVbmRlcnN0YW5kaW5nIHRoZSBkZWZhdWx0cyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZXhwZWN0ZWQgdXNhZ2UgYW5kIHR5cGljYWwgY29uZmlndXJhdGlvbnMuXG4qICAgKipIaWVyYXJjaHk6KiogSG93IGlzIHRoaXMgS2NvbmZpZyBmaWxlIHN0cnVjdHVyZWQgcmVsYXRpdmUgdG8gb3RoZXIgS2NvbmZpZyBmaWxlcz8gSXMgaXQgcGFydCBvZiBhIGxhcmdlciBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyYXRpb24sIG9yIG1vcmUgaXNvbGF0ZWQ/IEknbGwgbG9vayBmb3IgaW5jbHVkZXMgb3IgZGVwZW5kZW5jaWVzIG9uIG90aGVyIEtjb25maWcgZmlsZXMuXG5cbkJ5IGNhcmVmdWxseSBleGFtaW5pbmcgdGhlc2UgYXNwZWN0cywgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBwcmV0dHkgZ29vZCBncmFzcCBvZiBob3cgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIGZpdHMgaW50byB0aGUgTGludXgga2VybmVsIGFuZCBob3cgaXQgY2FuIGJlIGNvbmZpZ3VyZWQuIEknbSBnb2luZyB0byBzdGFydCBieSByZWFkaW5nIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgdGhlbiBkcmlsbCBkb3duIGludG8gZWFjaCBvcHRpb24gYXMgbmVjZXNzYXJ5LiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNzQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDoyOS4wOTkzMTc3MzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogOTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2FuZ3h1biBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBORVRfVkVORE9SX1dBTkdYVU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldhbmd4dW4gZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGZyb20gV2FuZ3h1bihSKSwgc2F5IFkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEzOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTQ6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IFdhbmd4dW4oUikgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9XQU5HWFVOXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBMSUJXWFxcbiAgMjA6XFx0XFx0dHJpc3RhdGVcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDIyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDIzOlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDI0OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHRDb21tb24gbGlicmFyeSBmb3IgV2FuZ3h1bihSKSBFdGhlcm5ldCBkcml2ZXJzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTkdCRVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuICAzMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMzI6XFx0XFx0c2VsZWN0IExJQldYXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFdhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGZhbWlseSBvZlxcbiAgMzU6XFx0XFx0ICBhZGFwdGVycy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDM4OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZS5yc3RcXHUwMDNlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcXG4gIDQxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbmdiZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIFRYR0JFXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XFxcIlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBJMkNfREVTSUdOV0FSRV9QTEFURk9STVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNDk6XFx0XFx0c2VsZWN0IE1BUlZFTExfMTBHX1BIWVxcbiAgNTA6XFx0XFx0c2VsZWN0IFJFR01BUFxcbiAgNTE6XFx0XFx0c2VsZWN0IEhXTU9OIGlmIFRYR0JFPXlcXG4gIDUyOlxcdFxcdHNlbGVjdCBTRlBcXG4gIDUzOlxcdFxcdHNlbGVjdCBHUElPTElCXFxuICA1NDpcXHRcXHRzZWxlY3QgR1BJT0xJQl9JUlFDSElQXFxuICA1NTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDU2OlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgNTc6XFx0XFx0aGVscFxcbiAgNTg6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBXYW5neHVuKFIpIDEwLzI1LzQwR2JFIFBDSSBFeHByZXNzIGZhbWlseSBvZlxcbiAgNTk6XFx0XFx0ICBhZGFwdGVycy5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDYyOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vdHhnYmUucnN0XFx1MDAzZS5cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA2NTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHR4Z2JlLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRjb25maWcgVFhHQkVWRlxcbiAgNjg6XFx0XFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDY5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDcyOlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgNzM6XFx0XFx0aGVscFxcbiAgNzQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGZ1bmN0aW9ucyBmb3IgU1AxMDAwQSwgV1gxODIwQUwsXFxuICA3NTpcXHRcXHQgIFdYNVhYWCwgV1g1WFhYQUwuXFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIHR4Z2JldmYuXFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuICA4MDpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XFx1MDAzZS5cXG4gIDgxOlxcdFxcbiAgODI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBNU0ktWCBpbnRlcnJ1cHRcXG4gIDgzOlxcdFxcdCAgc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXFxuICA4NDpcXHRcXG4gIDg1OlxcdGNvbmZpZyBOR0JFVkZcXG4gIDg2OlxcdFxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIEdiRSBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICA4NzpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgOTA6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDoyOS4wOTkzOTE5ODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNjMwMzI0ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVFhHQkVWRiBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYFRYR0JFVkZgIGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZm91bmRhdGlvbmFsIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgdG8gcmVseSBoZWF2aWx5IG9uIFBDSSwgYW5kIHNwZWNpZmljYWxseSBQQ0lfTVNJLCB3aGljaCBpcyBleHBlY3RlZC4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSwgYXMgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aG9zZSBwcm90b2NvbHMgaXMgZ29pbmcgdG8gYmUga2V5LlxuXG5OZXh0LCBJIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZpcnR1YWwgZnVuY3Rpb25zOiBTUDEwMDBBLCBXWDE4MjBBTCwgV1g1WFhYLCBXWDVYWFhBTC4gVGhhdCdzIGEgZGVjZW50IHJhbmdlIG9mIGhhcmR3YXJlIHBsYXRmb3Jtcy4gQnV0LCBqdXN0IHRvIGNvdmVyIGFsbCBteSBiYXNlcywgSSdtIGdvaW5nIHRvIHN0YXJ0IGJyYWluc3Rvcm1pbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGVudmlyb25tZW50cy4gQXJlIHRoZXJlIGFueSBtb2NrIGRyaXZlcnMsIHBlcmhhcHMgYSBVU0IgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgdG8gc3VwcG9ydCBpdHMgdGVzdGluZyBvciBvcGVyYXRpb24gaW4gYSBub24tc3RhbmRhcmQgY29uZmlndXJhdGlvbj8gSSB3b3VsZCBsaWtlIHRvIGNvbnNpZGVyIGFsbCB0aGUgZGlmZmVyZW50IHdheXMgdGhhdCB0aGlzIGRyaXZlciBjb3VsZCBiZSBkZXBsb3llZC5cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIGNvcmUgbG9naWMgYW5kIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBJJ2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgdHhnYmV2Zl9tYWluLmNgLiBUaGF0J3MgdXN1YWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1haW4gZnVuY3Rpb25hbGl0aWVzLCBpbml0aWFsaXphdGlvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjMxLjcyOTcxODY3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LyogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAyNSBCZWlqaW5nIFdhbmdYdW4gVGVjaG5vbG9neSBDby4sIEx0ZC4gKi9cXG4gICAzOlxcdFxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gIDEwOlxcdFxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X3R5cGUuaFxcXCJcXG4gIDEyOlxcdCNpbmNsdWRlIFxcXCIuLi9saWJ3eC93eF9ody5oXFxcIlxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X2xpYi5oXFxcIlxcbiAgMTQ6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X21ieC5oXFxcIlxcbiAgMTU6XFx0I2luY2x1ZGUgXFxcIi4uL2xpYnd4L3d4X3ZmLmhcXFwiXFxuICAxNjpcXHQjaW5jbHVkZSBcXFwiLi4vbGlid3gvd3hfdmZfY29tbW9uLmhcXFwiXFxuICAxNzpcXHQjaW5jbHVkZSBcXFwiLi4vbGlid3gvd3hfZXRodG9vbC5oXFxcIlxcbiAgMTg6XFx0I2luY2x1ZGUgXFxcInR4Z2JldmZfdHlwZS5oXFxcIlxcbiAgMTk6XFx0XFxuICAyMDpcXHQvKiB0eGdiZXZmX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXFxuICAyMTpcXHQgKlxcbiAgMjI6XFx0ICogV2lsZGNhcmQgZW50cmllcyAoUENJX0FOWV9JRCkgc2hvdWxkIGNvbWUgbGFzdFxcbiAgMjM6XFx0ICogTGFzdCBlbnRyeSBtdXN0IGJlIGFsbCAwc1xcbiAgMjQ6XFx0ICpcXG4gIDI1OlxcdCAqIHsgVmVuZG9yIElELCBEZXZpY2UgSUQsIFN1YlZlbmRvciBJRCwgU3ViRGV2aWNlIElELFxcbiAgMjY6XFx0ICogICBDbGFzcywgQ2xhc3MgTWFzaywgcHJpdmF0ZSBkYXRhIChub3QgdXNlZCkgfVxcbiAgMjc6XFx0ICovXFxuICAyODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdHhnYmV2Zl9wY2lfdGJsW10gPSB7XFxuICAyOTpcXHRcXHR7IFBDSV9WREVWSUNFKFdBTkdYVU4sIFRYR0JFVkZfREVWX0lEX1NQMTAwMCkgfSxcXG4gIDMwOlxcdFxcdHsgUENJX1ZERVZJQ0UoV0FOR1hVTiwgVFhHQkVWRl9ERVZfSURfV1gxODIwKSB9LFxcbiAgMzE6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MDBGKSB9LFxcbiAgMzI6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MTBGKSB9LFxcbiAgMzM6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MDI0KSB9LFxcbiAgMzQ6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MTI0KSB9LFxcbiAgMzU6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MDNGKSB9LFxcbiAgMzY6XFx0XFx0eyBQQ0lfVkRFVklDRShXQU5HWFVOLCBUWEdCRVZGX0RFVl9JRF9BTUw1MTNGKSB9LFxcbiAgMzc6XFx0XFx0LyogcmVxdWlyZWQgbGFzdCBlbnRyeSAqL1xcbiAgMzg6XFx0XFx0eyB9XFxuICAzOTpcXHR9O1xcbiAgNDA6XFx0XFxuICA0MTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHR4Z2JldmZfbmV0ZGV2X29wcyA9IHtcXG4gIDQyOlxcdFxcdC5uZG9fb3BlbiAgICAgICAgICAgICAgID0gd3h2Zl9vcGVuLFxcbiAgNDM6XFx0XFx0Lm5kb19zdG9wICAgICAgICAgICAgICAgPSB3eHZmX2Nsb3NlLFxcbiAgNDQ6XFx0XFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLFxcbiAgNDU6XFx0XFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcXG4gIDQ2OlxcdFxcdC5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gd3hfc2V0X21hY192ZixcXG4gIDQ3OlxcdH07XFxuICA0ODpcXHRcXG4gIDQ5OlxcdHN0YXRpYyB2b2lkIHR4Z2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4gIDUwOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6MzEuNzI5ODU1MzcyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTE3ODU0NjU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXYW5neHVuIEV0aGVybmV0IFNSSU9WIFZpcnR1YWwgRnVuY3Rpb24gRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgV2FuZ3h1biBFdGhlcm5ldCBTUklPViBWaXJ0dWFsIEZ1bmN0aW9ucy4gSXQncyBhIHN0YW5kYXJkIFBDSSBkcml2ZXIsIHRhcmdldGluZyB0aGUgV0FOR1hVTiB2ZW5kb3IgSUQsIHdoaWNoIHJlcHJlc2VudHMgYWN0dWFsIFdhbmd4dW4gaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBoYXJkd2FyZSBpcyBhdmFpbGFibGUgdG8gc3RhbmRhcmQgUUVNVS5cblxuTG9va2luZyBhdCB0aGUgaW5zdHJ1Y3Rpb25zLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLCB0aGUgdGV4dCBtZW50aW9ucyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBhbmQgbGlzdHMgZXhhbXBsZXMgbGlrZSBtbHhzdywgcGRzX2NvcmUsIGFuZCBhbWRncHUsIHdoaWNoIGFsbCByZXF1aXJlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyB0aGF0IGFyZW4ndCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBnb29kIGhlYWRzIHVwLiBOb3csIGFyZSBXYW5neHVuIE5JQ3MgaGFuZGxlZCBieSBzdGFuZGFyZCBRRU1VP1xuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBXYW5neHVuIE5JQ3MgYXJlLCBpbmRlZWQsIGVtdWxhdGVkIGluIFFFTVUuIEEgcXVpY2sgY2hlY2sgb2YgUUVNVSdzIHN1cHBvcnRlZCBkZXZpY2VzIHJldmVhbHMgdGhhdCB0aGV5IHN1cHBvcnQgdGhlIGxpa2VzIG9mIGUxMDAwLCBlMTAwMGUsIGFuZCB2aXJ0aW8tbmV0LCBhbW9uZyBvdGhlcnMsIGJ1dCBub3QgV2FuZ3h1biB0eGdiZS9uZ2JlL3R4Z2JldmYgTklDcy4gU28gaXQgZG9lc24ndCBsb29rIGxpa2UgdGhleSBhcmUuIEl0IGJpbmRzIHRvIHRoZSBXQU5HWFVOIHZlbmRvciBJRCwgd2hpY2ggSSdsbCBjb25maXJtLlxuXG5Ob3cgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIFBDSV9WRU5ET1JfSURfV0FOR1hVTiB0byBnZXQgYSBzb2xpZCBoYW5kbGUgb24gdGhhdCB2ZW5kb3IgSUQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxODcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDo0MC45MDg0MDQ2ODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTMxMDc0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX1ZFTkRPUl9JRF9XQU5HWFVOXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yNDcyPWludCB3eF9zd19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjQ4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjQ5MDpcXHRpZiAod3gtXFx1MDAzZW9lbV9zdmlkID09IFBDSV9WRU5ET1JfSURfV0FOR1hVTiB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yNDkxLVxcdCAgICBwZGV2LVxcdTAwM2Vpc192aXJ0Zm4pIHtcXG4tLVxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jPTUwODA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2X2Fjc19lbmFibGVkIHtcXG4tLVxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTUyNDYtXFx0LyogV2FuZ3h1biBuaWNzICovXFxuZHJpdmVycy9wY2kvcXVpcmtzLmM6NTI0NzpcXHR7IFBDSV9WRU5ET1JfSURfV0FOR1hVTiwgUENJX0FOWV9JRCwgcGNpX3F1aXJrX3dhbmd4dW5fbmljX2FjcyB9LFxcbmRyaXZlcnMvcGNpL3F1aXJrcy5jLTUyNDgtXFx0eyAwIH1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTMxNjktXFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmg6MzE3MDojZGVmaW5lIFBDSV9WRU5ET1JfSURfV0FOR1hVTlxcdFxcdDB4ODA4OFxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTMxNzEtXFxuLS1cXG5ydXN0L2tlcm5lbC9wY2kvaWQucnM9MTcyPSAgICBmbiBmbXQoXFx1MDAyNnNlbGYsIGY6IFxcdTAwMjZtdXQgZm10OjpGb3JtYXR0ZXJcXHUwMDNjJ19cXHUwMDNlKSAtXFx1MDAzZSBmbXQ6OlJlc3VsdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTYzLSAgICBJTlRFTCAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9JTlRFTCwgICAgICAgICAgICAgICAgICAgIC8vIDB4ODA4NlxcbnJ1c3Qva2VybmVsL3BjaS9pZC5yczo1NjQ6ICAgIFdBTkdYVU4gICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX1dBTkdYVU4sICAgICAgICAgICAgICAgICAgLy8gMHg4MDg4XFxucnVzdC9rZXJuZWwvcGNpL2lkLnJzLTU2NS0gICAgU0NBTEVNUCAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfU0NBTEVNUCwgICAgICAgICAgICAgICAgICAvLyAweDg2ODZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6NDIuNzIxNTIxOTk2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU0MDI4Mjc5MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZG93bnN0cmVhbSBpbXBhY3Qgb2YgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hvIGVsc2UgaXMgdG91Y2hpbmcgdGhlIGNvZGUgdGhhdCAqdGhpcyogY29kZSBtb2RpZmllcz9cIiBJIG5lZWQgdG8gc2VlIGlmIGFueXRoaW5nIGVsc2UgaXMgdXNpbmcgYGxpYnd4YCwgYHd4X2V0aHRvb2xfb3BzX3ZmYCwgb3IgYW55dGhpbmcgZWxzZSB0aGlzIHBhdGNoIGlzIGRlYWxpbmcgd2l0aC4gTXkgbmV4dCBzdGVwPyBJIG5lZWQgdG8gdXNlIGBncmVwYC4gSSdsbCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgYHd4X3NldF9ldGh0b29sX29wc192ZmAgdG8gc2VlIHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGFuZCB3aGF0IHJlbGllcyBvbiB0aGlzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZSBpbnRvIHVuZGVyc3RhbmRpbmcgdGhlIHJpcHBsZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzAzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTE6NTQ6NDguMTI0MzUyNTA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU1MDY3MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInd4X3NldF9ldGh0b29sX29wc192ZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYz05MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3eF9ldGh0b29sX29wc192ZiA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jLTkyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYzo5MjE6dm9pZCB3eF9zZXRfZXRodG9vbF9vcHNfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYy05MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtOTI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuYzo5MjU6RVhQT1JUX1NZTUJPTCh3eF9zZXRfZXRodG9vbF9vcHNfdmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmg9NjE9dm9pZCB3eF9nZXRfcHRwX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmgtNjItXFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfdHNfc3RhdHMgKnRzX3N0YXRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuaDo2Mzp2b2lkIHd4X3NldF9ldGh0b29sX29wc192ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2V0aHRvb2wuaC02NC0jZW5kaWYgLyogX1dYX0VUSFRPT0xfSF8gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM9MTM2PXN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0xOTAtXFx0d3gtXFx1MDAzZWRyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYzoxOTE6XFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0xOTItXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNm5nYmV2Zl9uZXRkZXZfb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jPTE5Nj1zdGF0aWMgaW50IHR4Z2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjU4LVxcdHd4LVxcdTAwM2Vkcml2ZXJfbmFtZSA9IEtCVUlMRF9NT0ROQU1FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYzoyNTk6XFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jLTI2MC1cXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2dHhnYmV2Zl9uZXRkZXZfb3BzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDo0OS43Nzk0MjU4NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTI0NTU4NTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgRHJpdmVyIENhbGxzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IGB3eF9zZXRfZXRodG9vbF9vcHNfdmZgIGlzIG9ubHkgY2FsbGVkIGJ5IGBuZ2JldmZfcHJvYmVgIGFuZCBgdHhnYmV2Zl9wcm9iZWAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIFBDSSBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlcnMgc3BlY2lmaWMgdG8gV2FuZ3h1bidzIGV0aGVybmV0IGhhcmR3YXJlLCBsaWtlbHkgdGhlIEdiRSBhbmQgMTBHYkUgdmVyc2lvbnMuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cblRoZW4sIG15IGV5ZSBjYXRjaGVzIGB3eF9zZXR1cF92Zm1ycWNfdmZgIHdpdGhpbiB0aGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuY2AuIENsZWFybHksIHRoaXMgaXMgYW5vdGhlciBrZXkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgVmlydHVhbCBGdW5jdGlvbiBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIHNvIEknbSBnb2luZyB0byBsb29rIGF0IGl0cyBjYWxsIHNpdGVzIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFZGIE1SUUMgKE11bHRpLVJlY2VpdmUgUXVldWUgQ29udGV4dCkgaXMgYmVpbmcgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI5NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NDo1NS4wMjUwMTQ0NjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzYyMzc3NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3hfc2V0dXBfdmZtcnFjX3ZmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MTg5PXN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9yeF92ZihzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xOTQtXFx0d3hfc2V0dXBfcHNydHlwZV92Zih3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzoxOTU6XFx0d3hfc2V0dXBfdmZtcnFjX3ZmKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmM9MTk2PXZvaWQgd3hfc2V0dXBfcHNydHlwZV92ZihzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYy0yMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9saWIuYzoyMDg6dm9pZCB3eF9zZXR1cF92Zm1ycWNfdmYoc3RydWN0IHd4ICp3eClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5jLTIwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5oPTEwPXZvaWQgd3hfc2V0dXBfcHNydHlwZV92ZihzdHJ1Y3Qgd3ggKnd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2xpYi5oOjExOnZvaWQgd3hfc2V0dXBfdmZtcnFjX3ZmKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmgtMTItdm9pZCB3eF9jb25maWd1cmVfdHhfdmYoc3RydWN0IHd4ICp3eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjU2LjYwMTI1OTAzOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyODM3NjExNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgd3hfY29uZmlndXJlX3J4X3ZmYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgSSBzZWUgdGhpcyBgd3hfY29uZmlndXJlX3J4X3ZmYCBmdW5jdGlvbi4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhlIG9uZSB0aGF0IGFsd2F5cyBwb3BzIHVwIGZpcnN0IHdoZW4gSSdtIHJldmVyc2UgZW5naW5lZXJpbmcgY29kZSwgaXMgKndoZXJlKiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGJlaW5nIHVzZWQ/IFdoZXJlIGFyZSB0aGUgY2FsbHNpdGVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCB0aGUgZGF0YSB0aGF0J3MgYmVpbmcgZmVkIGludG8gaXQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgbGF5ZXJzLCB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBrbm93IHdoZXJlIHRoaXMgc3BlY2lmaWMgbG9naWMgc2l0cyB3aXRoaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBXaXRob3V0IGtub3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGl0J3MganVzdCBhIGxvbmVseSBwaWVjZSBvZiBjb2RlLiBOb3cgdG8gZmluZCB3aGVyZSB0aGUgY2FsbHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTExOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU0OjU5LjQzODg3Mzk0NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwMzI2OTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3eF9jb25maWd1cmVfcnhfdmZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYz0xODE9RVhQT1JUX1NZTUJPTCh3eF9zZXRfcnhfbW9kZV92Zik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTE4My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jOjE4NDogKiB3eF9jb25maWd1cmVfcnhfdmYgLSBDb25maWd1cmUgUmVjZWl2ZSBVbml0IGFmdGVyIFJlc2V0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xODUtICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0xODgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM6MTg5OnN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9yeF92ZihzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM9MjE2PXZvaWQgd3hfY29uZmlndXJlX3ZmKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTIxOS1cXHR3eF9jb25maWd1cmVfdHhfdmYod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmM6MjIwOlxcdHd4X2NvbmZpZ3VyZV9yeF92Zih3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYy0yMjEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NTowMS4xNDIxNTI4OTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDgxNzcwMzkwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBXYW5neHVuIEV0aGVybmV0IERyaXZlciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjZWQgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgd3hfY29uZmlndXJlX3ZmYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgYnkgYHd4dmZfb3BlbmAgYW5kIGB3eHZmX3VwX2NvbXBsZXRlYCB3aXRoaW4gdGhlIGB3eF92Zl9jb21tb24uY2AgZmlsZS4gVGhpcyB3aG9sZSBhcmVhLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBhbmQgcGFydGljdWxhcmx5IHRoZSBWRiBkcml2ZXJzIGxpa2UgYHR4Z2JldmZgIGFuZCBgbmdiZXZmYCBhbG9uZyB3aXRoIHRoZSBjb21tb24gbGlicmFyeSBgbGlid3hgLCBpcyB2ZW5kb3Itc3BlY2lmaWMgdG8gV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLiBUaGVzZSBkcml2ZXJzIGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlaXIgcGFydGljdWxhciBQQ0llIG5ldHdvcmsgY2FyZHMgYW5kIEFTSUNzIOKAkyB0aGluZ3MgbGlrZSB0aGUgU1AxMDAwIGFuZCBXWDE4MjAuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhlc2UgcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cyAqYXJlbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2ggaXMgdGhlIHNvcnQgb2YgdGhpbmcgd2UnZCBiZSB1c2luZyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBiYWNrIHRvIHNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBZZXMsIGl0IGNsZWFybHkgc3RhdGVzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpcyBcIlZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBhbGlnbnMgKnBlcmZlY3RseSogd2l0aCB0aGlzIFdhbmd4dW4gZHJpdmVyIHNpdHVhdGlvbi5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgY29kZSBkZXBlbmRzIG9uIGhhcmR3YXJlIHRoYXQncyBub3QgYXZhaWxhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LCB0aGlzIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGh1czpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5LCBubyBzeW1ib2xzIHRvIGZvY3VzIG9uKVxuKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHksIG5vIGNvbmZpZ3MgdG8gZW5hYmxlKVxuKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggbW9kaWZpZXMgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXJzICh0eGdiZXZmLCBsaWJ3eCkgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBXYW5neHVuIEFTSUMvUENJZSBuZXR3b3JrIGFkYXB0ZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlxuXG5JJ3ZlIGFsc28gZG91YmxlLWNoZWNrZWQgdGhlIHNwZWNpZmljIGZpbGVzIHRoYXQgd2VyZSBtb2RpZmllZDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfbGliLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY2AuIFRoZXkgYXJlIGFsbCBzdHJpY3RseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2AgZGlyZWN0b3J5LCBjb25maXJtaW5nIHRoYXQgbm8gY29yZSBuZXR3b3JraW5nIGNvZGUgaXMgdG91Y2hlZC4gRXZlcnl0aGluZyBpcyBjbGVhciBhbmQgdW5hbWJpZ3VvdXMuIEkgYW0gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MzYsIk91dHB1dFRva2VucyI6MTIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDExOjU1OjA1Ljk1OTg2MDM1MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IFZGIGRyaXZlciBhbmQgaXRzIHNoYXJlZCBsaWJyYXJ5ICh0eGdiZXZmLCBsaWJ3eCkgdG8gaW1wbGVtZW50IGV0aHRvb2wgZ2V0L3NldCBjaGFubmVscyBjYWxsYmFja3MgYW5kIGFkanVzdCBSU1MgcXVldWUgY29uZmlndXJhdGlvbi4gVGhlc2UgZHJpdmVycyB0YXJnZXQgcGh5c2ljYWwgV2FuZ3h1biBQQ0llIE5JQyBoYXJkd2FyZSAoU1AxMDAwLCBXWDE4MjAsIGV0Yy4pIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgVkYgZHJpdmVyIGFuZCBpdHMgc2hhcmVkIGxpYnJhcnkgKHR4Z2JldmYsIGxpYnd4KSB0byBpbXBsZW1lbnQgZXRodG9vbCBnZXQvc2V0IGNoYW5uZWxzIGNhbGxiYWNrcyBhbmQgYWRqdXN0IFJTUyBxdWV1ZSBjb25maWd1cmF0aW9uLiBUaGVzZSBkcml2ZXJzIHRhcmdldCBwaHlzaWNhbCBXYW5neHVuIFBDSWUgTklDIGhhcmR3YXJlIChTUDEwMDAsIFdYMTgyMCwgZXRjLikgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMTo1NTowNS45NTk4OTEwMTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdvsj6[1] Phase: Running StartedAt: 2026-09-15 11:55:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdvsj6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 11:55:17 +0000 UTC FinishedAt: 2026-09-15 11:55:22 +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,}