Name: series-workflow4npc4 Phase: Failed StartedAt: 2026-09-04 11:42:19 +0000 UTC FinishedAt: 2026-09-04 11:45:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4npc4[0] Phase: Succeeded StartedAt: 2026-09-04 11:42:19 +0000 UTC FinishedAt: 2026-09-04 11:45:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4npc4[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 11:42:19 +0000 UTC FinishedAt: 2026-09-04 11:45:32 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTJiNzFhMmMwM2RmZTczODNlOGI3NWY0MjA4OGFlYjhhM2IwYzI1NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTE6NDQ6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5pbmRleCAwNGRhZmVjMDIxYjRmLi45MzE0YmNiODVjMjIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbkBAIC00OTQsNyAmIzQzOzQ5NCw3IEBAIHN0cnVjdCBzdG1tYWNfb3BzIHtcbiAjZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgc2V0X2FycF9vZmZsb2FkLCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuLVx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBtYWMsIGZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcywgX19hcmdzKVxuJiM0MztcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIG1hYywgZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLCBfX2FyZ3MpXG4gXG4gLyogUFRQIGFuZCBIVyBUaW1lciBoZWxwZXJzICovXG4gc3RydWN0IHN0bW1hY19od3RpbWVzdGFtcCB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuaW5kZXggMTRjYWJlNzZlNTNlYy4uYzk5ZDliN2UyNmRjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuQEAgLTEyMzcsNiAmIzQzOzEyMzcsMzAgQEAgc3RhdGljIGludCB0Y19xdWVyeV9jYXBzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NldF9uZGV2X3RjcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTggbnRjLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IG5ldGRldl90Y190eHEgKnRjX3RvX3R4cSlcbiYjNDM7e1xuJiM0MztcdGludCBpLCBlcnI7XG4mIzQzO1xuJiM0MztcdG5ldGRldl9yZXNldF90YyhuZGV2KTtcbiYjNDM7XHRpZiAoIW50YylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudGMpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudGM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1MTYgY291bnQsIG9mZnNldDtcbiYjNDM7XG4mIzQzO1x0XHRjb3VudCA9IHRjX3RvX3R4cVtpXS5jb3VudDtcbiYjNDM7XHRcdG9mZnNldCA9IHRjX3RvX3R4cVtpXS5vZmZzZXQ7XG4mIzQzO1x0XHRuZXRkZXZfc2V0X3RjX3F1ZXVlKG5kZXYsIGksIGNvdW50LCBvZmZzZXQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG5AQCAtMTI1MCw0NSAmIzQzOzEyNzQsNjEgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBzdGF0aWMgaW50IHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgICAgc3RydWN0IHRjX21xcHJpb19xb3B0X29mZmxvYWQgKm1xcHJpbylcbiB7XG4mIzQzO1x0dW5zaWduZWQgaW50IG5kZXZfbnVtX3R4X3F1ZXVlcywgbnVtX3R4X3F1ZXVlcyA9IDA7XG4mIzQzO1x0c3RydWN0IG5ldGRldl90Y190eHEgbmRldl90Y190b190eHFbVENfTUFYX1FVRVVFXTtcbiYjNDM7XHRzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSB0Y190b190eHFbVENfTUFYX1FVRVVFXSA9IHt9O1xuIFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbXFwcmlvLVx1MDAzZWV4dGFjaztcbiBcdHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCA9IFx1MDAyNm1xcHJpby1cdTAwM2Vxb3B0O1xuLVx0dTMyIG9mZnNldCwgY291bnQsIG51bV9zdGFja190eF9xdWV1ZXMgPSAwO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwcml2LVx1MDAzZWRldjtcbi1cdHUzMiBudW1fdGMgPSBxb3B0LVx1MDAzZW51bV90Yztcbi1cdGludCBlcnI7XG4mIzQzO1x0dTggbmRldl9wcmlvX3RjX21hcFtUQ19CSVRNQVNLICYjNDM7IDFdO1xuJiM0MztcdGludCBpLCBlcnIsIG5kZXZfbnRjO1xuIFxuLVx0aWYgKCFudW1fdGMpIHtcbiYjNDM7XHRpZiAoIXFvcHQtXHUwMDNlbnVtX3RjKSB7XG4gXHRcdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudW1fdGMpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGZvciAodTMyIHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMmIzQzOyYjNDM7KSB7XG4tXHRcdG9mZnNldCA9IHFvcHQtXHUwMDNlb2Zmc2V0W3RjXTtcbi1cdFx0Y291bnQgPSBxb3B0LVx1MDAzZWNvdW50W3RjXTtcbi1cdFx0bnVtX3N0YWNrX3R4X3F1ZXVlcyAmIzQzOz0gY291bnQ7XG4mIzQzO1x0aWYgKHFvcHQtXHUwMDNlbnVtX3RjIFx1MDAzZSBBUlJBWV9TSVpFKHRjX3RvX3R4cSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdFx0ZXJyID0gbmV0ZGV2X3NldF90Y19xdWV1ZShuZGV2LCB0YywgY291bnQsIG9mZnNldCk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBlcnJfcmVzZXRfdGM7XG4mIzQzO1x0Lyogc2F2ZSBjdXJyZW50IHRjIHZhbHVlcyBmb3IgcmVzZXQgKi9cbiYjNDM7XHRuZGV2X250YyA9IG5ldGRldl9nZXRfbnVtX3RjKG5kZXYpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobmRldi1cdTAwM2V0Y190b190eHEpOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdG5kZXZfdGNfdG9fdHhxW2ldLmNvbWJpbmVkID1cbiYjNDM7XHRcdFx0UkVBRF9PTkNFKG5kZXYtXHUwMDNldGNfdG9fdHhxW2ldLmNvbWJpbmVkKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG5kZXZfcHJpb190Y19tYXApOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdG5kZXZfcHJpb190Y19tYXBbaV0gPSBSRUFEX09OQ0UobmRldi1cdTAwM2VwcmlvX3RjX21hcFtpXSk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHFvcHQtXHUwMDNlbnVtX3RjOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dGNfdG9fdHhxW2ldID0gKHN0cnVjdCBuZXRkZXZfdGNfdHhxKSB7XG4mIzQzO1x0XHRcdC5jb3VudCA9IHFvcHQtXHUwMDNlY291bnRbaV0sXG4mIzQzO1x0XHRcdC5vZmZzZXQgPSBxb3B0LVx1MDAzZW9mZnNldFtpXSxcbiYjNDM7XHRcdH07XG4mIzQzO1x0XHRudW1fdHhfcXVldWVzICYjNDM7PSBxb3B0LVx1MDAzZWNvdW50W2ldO1xuIFx0fVxuIFxuLVx0ZXJyID0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBudW1fc3RhY2tfdHhfcXVldWVzKTtcbiYjNDM7XHRlcnIgPSBzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIHFvcHQtXHUwMDNlbnVtX3RjLCB0Y190b190eHEpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xuJiM0MztcbiYjNDM7XHRuZGV2X251bV90eF9xdWV1ZXMgPSBuZGV2LVx1MDAzZXJlYWxfbnVtX3R4X3F1ZXVlcztcbiYjNDM7XHRlcnIgPSBuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKG5kZXYsIG51bV90eF9xdWV1ZXMpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfcmVzZXRfdGM7XG4mIzQzO1x0XHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xuIFxuIFx0ZXJyID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBuZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIG1xcHJpby1cdTAwM2VwcmVlbXB0aWJsZV90Y3MpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfcmVzZXRfdGM7XG4mIzQzO1x0XHRnb3RvIGVycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfcmVzZXRfdGM6XG4tXHRzdG1tYWNfcmVzZXRfdGNfbXFwcmlvKG5kZXYsIGV4dGFjayk7XG4mIzQzO2Vycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM6XG4mIzQzO1x0bmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBuZGV2X251bV90eF9xdWV1ZXMpO1xuJiM0MztlcnJvcl9yZXNldF90YzpcbiYjNDM7XHRzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIG5kZXZfbnRjLCBuZGV2X3RjX3RvX3R4cSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRuZXRkZXZfc2V0X3ByaW9fdGNfbWFwKG5kZXYsIGksIG5kZXZfcHJpb190Y19tYXBbaV0pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTJiNzFhMmMwM2RmZTczODNlOGI3NWY0MjA4OGFlYjhhM2IwYzI1NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTE6NDQ6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKaW5kZXggMDRkYWZlYzAyMWI0Zi4uOTMxNGJjYjg1YzIyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaApAQCAtNDk0LDcgJiM0Mzs0OTQsNyBAQCBzdHJ1Y3Qgc3RtbWFjX29wcyB7CiAjZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFwKIAlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgc2V0X2FycF9vZmZsb2FkLCBfX2FyZ3MpCiAjZGVmaW5lIHN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MoX19wcml2LCBfX2FyZ3MuLi4pIFwKLQlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLCBfX2FyZ3MpCiYjNDM7CXN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIG1hYywgZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLCBfX2FyZ3MpCiAKIC8qIFBUUCBhbmQgSFcgVGltZXIgaGVscGVycyAqLwogc3RydWN0IHN0bW1hY19od3RpbWVzdGFtcCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCmluZGV4IDE0Y2FiZTc2ZTUzZWMuLmM5OWQ5YjdlMjZkY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCkBAIC0xMjM3LDYgJiM0MzsxMjM3LDMwIEBAIHN0YXRpYyBpbnQgdGNfcXVlcnlfY2FwcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJfQogfQogCiYjNDM7c3RhdGljIGludCBzdG1tYWNfc2V0X25kZXZfdGNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1OCBudGMsCiYjNDM7CQkJICAgICAgIHN0cnVjdCBuZXRkZXZfdGNfdHhxICp0Y190b190eHEpCiYjNDM7ewomIzQzOwlpbnQgaSwgZXJyOwomIzQzOwomIzQzOwluZXRkZXZfcmVzZXRfdGMobmRldik7CiYjNDM7CWlmICghbnRjKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWVyciA9IG5ldGRldl9zZXRfbnVtX3RjKG5kZXYsIG50Yyk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbnRjOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdTE2IGNvdW50LCBvZmZzZXQ7CiYjNDM7CiYjNDM7CQljb3VudCA9IHRjX3RvX3R4cVtpXS5jb3VudDsKJiM0MzsJCW9mZnNldCA9IHRjX3RvX3R4cVtpXS5vZmZzZXQ7CiYjNDM7CQluZXRkZXZfc2V0X3RjX3F1ZXVlKG5kZXYsIGksIGNvdW50LCBvZmZzZXQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF90Y19tcXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCQkJICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewpAQCAtMTI1MCw0NSAmIzQzOzEyNzQsNjEgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIHN0YXRpYyBpbnQgdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJCQkgICAgc3RydWN0IHRjX21xcHJpb19xb3B0X29mZmxvYWQgKm1xcHJpbykKIHsKJiM0MzsJdW5zaWduZWQgaW50IG5kZXZfbnVtX3R4X3F1ZXVlcywgbnVtX3R4X3F1ZXVlcyA9IDA7CiYjNDM7CXN0cnVjdCBuZXRkZXZfdGNfdHhxIG5kZXZfdGNfdG9fdHhxW1RDX01BWF9RVUVVRV07CiYjNDM7CXN0cnVjdCBuZXRkZXZfdGNfdHhxIHRjX3RvX3R4cVtUQ19NQVhfUVVFVUVdID0ge307CiAJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbXFwcmlvLSZndDtleHRhY2s7CiAJc3RydWN0IHRjX21xcHJpb19xb3B0ICpxb3B0ID0gJmFtcDttcXByaW8tJmd0O3FvcHQ7Ci0JdTMyIG9mZnNldCwgY291bnQsIG51bV9zdGFja190eF9xdWV1ZXMgPSAwOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcHJpdi0mZ3Q7ZGV2OwotCXUzMiBudW1fdGMgPSBxb3B0LSZndDtudW1fdGM7Ci0JaW50IGVycjsKJiM0MzsJdTggbmRldl9wcmlvX3RjX21hcFtUQ19CSVRNQVNLICYjNDM7IDFdOwomIzQzOwlpbnQgaSwgZXJyLCBuZGV2X250YzsKIAotCWlmICghbnVtX3RjKSB7CiYjNDM7CWlmICghcW9wdC0mZ3Q7bnVtX3RjKSB7CiAJCXN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTsKIAkJcmV0dXJuIDA7CiAJfQogCi0JZXJyID0gbmV0ZGV2X3NldF9udW1fdGMobmRldiwgbnVtX3RjKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JZm9yICh1MzIgdGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7Ci0JCW9mZnNldCA9IHFvcHQtJmd0O29mZnNldFt0Y107Ci0JCWNvdW50ID0gcW9wdC0mZ3Q7Y291bnRbdGNdOwotCQludW1fc3RhY2tfdHhfcXVldWVzICYjNDM7PSBjb3VudDsKJiM0MzsJaWYgKHFvcHQtJmd0O251bV90YyAmZ3Q7IEFSUkFZX1NJWkUodGNfdG9fdHhxKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwogCi0JCWVyciA9IG5ldGRldl9zZXRfdGNfcXVldWUobmRldiwgdGMsIGNvdW50LCBvZmZzZXQpOwotCQlpZiAoZXJyKQotCQkJZ290byBlcnJfcmVzZXRfdGM7CiYjNDM7CS8qIHNhdmUgY3VycmVudCB0YyB2YWx1ZXMgZm9yIHJlc2V0ICovCiYjNDM7CW5kZXZfbnRjID0gbmV0ZGV2X2dldF9udW1fdGMobmRldik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKG5kZXYtJmd0O3RjX3RvX3R4cSk7IGkmIzQzOyYjNDM7KQomIzQzOwkJbmRldl90Y190b190eHFbaV0uY29tYmluZWQgPQomIzQzOwkJCVJFQURfT05DRShuZGV2LSZndDt0Y190b190eHFbaV0uY29tYmluZWQpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSYjNDM7JiM0MzspCiYjNDM7CQluZGV2X3ByaW9fdGNfbWFwW2ldID0gUkVBRF9PTkNFKG5kZXYtJmd0O3ByaW9fdGNfbWFwW2ldKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHFvcHQtJmd0O251bV90YzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXRjX3RvX3R4cVtpXSA9IChzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSkgewomIzQzOwkJCS5jb3VudCA9IHFvcHQtJmd0O2NvdW50W2ldLAomIzQzOwkJCS5vZmZzZXQgPSBxb3B0LSZndDtvZmZzZXRbaV0sCiYjNDM7CQl9OwomIzQzOwkJbnVtX3R4X3F1ZXVlcyAmIzQzOz0gcW9wdC0mZ3Q7Y291bnRbaV07CiAJfQogCi0JZXJyID0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBudW1fc3RhY2tfdHhfcXVldWVzKTsKJiM0MzsJZXJyID0gc3RtbWFjX3NldF9uZGV2X3RjcyhuZGV2LCBxb3B0LSZndDtudW1fdGMsIHRjX3RvX3R4cSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGVycm9yX3Jlc2V0X3RjOwomIzQzOwomIzQzOwluZGV2X251bV90eF9xdWV1ZXMgPSBuZGV2LSZndDtyZWFsX251bV90eF9xdWV1ZXM7CiYjNDM7CWVyciA9IG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbnVtX3R4X3F1ZXVlcyk7CiAJaWYgKGVycikKLQkJZ290byBlcnJfcmVzZXRfdGM7CiYjNDM7CQlnb3RvIGVycm9yX3Jlc2V0X3RjOwogCiAJZXJyID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBuZGV2LCBleHRhY2ssCiAJCQkJCSAgICAgIG1xcHJpby0mZ3Q7cHJlZW1wdGlibGVfdGNzKTsKIAlpZiAoZXJyKQotCQlnb3RvIGVycl9yZXNldF90YzsKJiM0MzsJCWdvdG8gZXJyb3JfcmVzZXRfbnVtX3R4X3F1ZXVlczsKIAogCXJldHVybiAwOwogCi1lcnJfcmVzZXRfdGM6Ci0Jc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhuZGV2LCBleHRhY2spOwomIzQzO2Vycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM6CiYjNDM7CW5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbmRldl9udW1fdHhfcXVldWVzKTsKJiM0MztlcnJvcl9yZXNldF90YzoKJiM0MzsJc3RtbWFjX3NldF9uZGV2X3RjcyhuZGV2LCBuZGV2X250YywgbmRldl90Y190b190eHEpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSYjNDM7JiM0MzspCiYjNDM7CQluZXRkZXZfc2V0X3ByaW9fdGNfbWFwKG5kZXYsIGksIG5kZXZfcHJpb190Y19tYXBbaV0pOwogCiAJcmV0dXJuIGVycjsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBhc3Nlc3MgaWYgdGhpcyBwYXRjaCBpcyBldmVuICp3b3J0aCogZnV6emluZy4gV2UgbmVlZCB0byBiZSBzdHJhdGVnaWMgYWJvdXQgd2hlcmUgd2Ugc3BlbmQgb3VyIHRpbWUgYW5kIHJlc291cmNlcy4KCkFscmlnaHQsIHRoZSBmaWxlcyB0b3VjaGVkIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaGAgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY2AuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldGAgZGlyZWN0b3J5IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBOZXR3b3JraW5nIHN0YWNrcyBhcmUgb2Z0ZW4gY29tcGxleCBhbmQgcmlwZSB3aXRoIG9wcG9ydHVuaXRpZXMgZm9yIGZ1enppbmcsIGdpdmVuIHRoZWlyIGlucHV0LXJpY2ggbmF0dXJlLgoKTm93LCB3aGF0IGlzIGBzdG1tYWNgIGV4YWN0bHk/IEFoLCBpdCYjMzk7cyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciDigJMgMTAvMTAwLzEwMDAvRVFPUy4gT2theSwgdGhhdCBoZWxwcyBuYXJyb3cgaXQgZG93bi4gQnV0LCBpcyB0aGlzIGEgbG93LWxldmVsIGhhcmR3YXJlIGRyaXZlciwgdGllZCB0byBzcGVjaWZpYyBBU0lDcyBvciBTb0NzLCBvciBpcyBpdCBwb3RlbnRpYWxseSBtb3JlIGFjY2Vzc2libGUsIG1heWJlIGVtdWxhdGVkIGluIFFFTVUgb3IgdXNhYmxlIGluIG1vcmUgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IFRoYXQmIzM5O3MgYSBjcml0aWNhbCBxdWVzdGlvbi4gQWNjZXNzIGlzIHRoZSBrZXksIG9mIGNvdXJzZS4KCldlJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgc3RtbWFjIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IHNlYXJjaGluZyBmb3IgdXNhZ2Ugb2Ygc3RtbWFjLCB0aGlzIHNob3VsZCBnaXZlIGEgZ29vZCBpZGVhIG9mIGl0cyBhcmNoaXRlY3R1cmUgc3VwcG9ydC4gVGhhdCB3aWxsIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGFueSB2YWx1ZSBpbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGBzdG1tYWNgIGFuZCBRRU1VIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBgc3RtbWFjYCBpcyBhIHN1aXRhYmxlIGV0aGVybmV0IGRyaXZlciBmb3IgYSBwYXJ0aWN1bGFyIHNjZW5hcmlvLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBwaHlzaWNhbCBoYXJkd2FyZSwgZW1iZWRkZWQgU29Dcywgb3IgcG9zc2libHkgZXZlbiBQQ0kgZGV2aWNlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGluc3RydWN0aW9ucy4uLiBhbmQgY2hlY2sgc2VjdGlvbiAyLiBBaCwgcmlnaHQsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4uLiB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyDigJMgdGhlIHVzdWFsIHN1c3BlY3RzIHRoYXQgKndvbiYjMzk7dCogd29yayB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgaW4gUUVNVS4gQnV0IHdhaXQsIGlzIGBTVE1NQUNgLCB0aGF0IFN5bm9wc3lzIERlc2lnbldhcmUgY29yZSBzdHVmZiwgKnNwZWNpZmljYWxseSogdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgQ29yZXMgRXRoZXJuZXQgTUFDIG9yIFNUTWljcm9lbGVjdHJvbmljcyBNQUMg4oCTIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgYW1kNjQ/CgpUaGlzIGZlZWxzIGxpa2UgYSBmYW1pbGlhciBwcm9ibGVtLiBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgZHdjLWVxb3NgLCBgYWxsd2lubmVyLXN1bjhpLWVtYWNgLCBhbmQgYGlteC1mZWNgIGJ1dCB0aG9zZSBhcmUgcHJpbWFyaWx5IGZvciBBUk0gYXJjaGl0ZWN0dXJlcy4gV2hhdCBhYm91dCBnb29kIG9sJiMzOTsgc3RhbmRhcmQgUUVNVSBhbWQ2ND8gSSYjMzk7bSBub3Qgc2VlaW5nIGFuIGltbWVkaWF0ZSBmaXQsIHNvIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgdG8gc2VlICp3aGljaCogYHN0bW1hY2AgZGV2aWNlcyBhY3R1YWxseSBleGlzdCBhbmQgY29uZmlybSBpZiBhbnkgb2YgdGhlIHZpcnR1YWwgZHJpdmVycyBvciBzdGFuZGFyZCBRRU1VIGRldmljZXMgYWN0dWFsbHkgbGV2ZXJhZ2UgaXQuIFJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgd2l0aCBgU1RNTUFDX1BDSWAgYW5kIGBTVE1NQUNfRVRIYOKApgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY0Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM2Mj1zdGF0aWMgdm9pZCBpbnRlbF9ldGhfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2V0aF9wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5Ni1cdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBRVUFSSywgXHUwMDI2cXVhcmtfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ3OT1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQ5ODpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz01Nzg9c3RhdGljIHZvaWQgbG9vbmdzb25fZHdtYWNfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1OTY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU5Ny1cdHsgUENJX0RFVklDRV9EQVRBKExPT05HU09OLCBHTUFDMSwgXHUwMDI2bG9vbmdzb25fZ21hY19wY2lfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjk0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjI9c3RhdGljIHZvaWQgbW90b3Jjb21tX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2OC1cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExOTpcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTkxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBrbm93LCBgc3RtbWFjYCBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBhcyB3ZWxsIGFzIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgaGFyZHdhcmUuIEl0IGhhbmRsZXMgYSByYW5nZSBvZiBkZXZpY2VzOiBQQ0kgZGV2aWNlcyBpbiBJbnRlbCBRdWFyay9FSEwvVEdMLCBMb29uZ3NvbiwgTW90b3Jjb21tLCBhbmQgU1RNTUFDIFBDSSBjb25maWd1cmF0aW9ucywgYW5kIHBsYXRmb3JtIGRldmljZXMvT0YgZGV2aWNlcyBpbiB2YXJpb3VzIFNvQ3MgbGlrZSBBbGx3aW5uZXIsIFJvY2tjaGlwLCBTVE0zMiwgTWVzb24sIGFuZCBUZWdyYS4gQnV0IGEga2V5IHBvaW50IGhlcmUgaXMsIGlzIHRoaXMgYSB2aXJ0dWFsIGRldmljZSBvciBhIGRyaXZlciBmb3IgKnJlYWwqIGhhcmR3YXJlPwoKUmlnaHQsIGl0IHJlcXVpcmVzIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgcmVsaWVzIG9uIFBDSSBkZXZpY2VzIG9yIHBsYXRmb3JtL09GIGRldmljZXMgYXNzb2NpYXRlZCB3aXRoIHNwZWNpZmljIFNvQ3MuIFRoaXMgaXMgaW1wb3J0YW50OiB0aGF0IGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFtZDY0IHN5emthbGxlciBmdXp6aW5nIGluc3RhbmNlcy4gU28sIHRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHN0cmFpZ2h0Zm9yd2FyZCBmdXp6aW5nIHNldHVwcyB3b24mIzM5O3QgZGlyZWN0bHkgY292ZXIgdGhpcyBkcml2ZXIuCgpOb3csIGhvbGQgb24uIENhbiB3ZSBnZXQgYXJvdW5kIHRoaXM/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgd2hldGhlciBRRU1VIGFtZDY0IGFjdHVhbGx5IGhhcyBhbnkgYHN0bW1hY2AgZW11bGF0aW9uLiBPciBpZiwgcG90ZW50aWFsbHksIGBzdG1tYWNgIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHZpcnR1YWwgYnVzZXM7IHNvbWV0aGluZyBsaWtlIG5ldGRldiwgdHVuL3RhcCwgb3IgdXNiIGdhZGdldCBwZXJoYXBzLgoKTm9wZS4gVGhlIGZhY3QgaXMsIGBzdG1tYWNgIGlzIGRlZmluaXRlbHkgYSBkcml2ZXIgZm9yICpwaHlzaWNhbCogRXRoZXJuZXQgTUFDcywgc3BlY2lmaWNhbGx5IHRob3NlIFN5bm9wc3lzIERXTUFDIGltcGxlbWVudGF0aW9ucy4KClNvIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBhbiBgc3RtbWFjYCBuZXRkZXYgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2VyIHNwYWNlLCBlbnRpcmVseSBpbmRlcGVuZGVudCBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIElzIHRoZXJlIGEgdmlydHVhbCBpbnRlcmZhY2Ugb3IgbmV0bGluayBpbnN0YW50aWF0aW9uIG1lY2hhbmlzbSAobGlrZSBydG5sX2xpbmtfb3BzKSB0aGF0IG1pZ2h0IGFsbG93IGl0IHRvIGJlIHZpcnR1YWxseSBzaW11bGF0ZWQ/IFRoaXMgaXMgd2hhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bmxfbGlua19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI2MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsIENoYWluIG9mIGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYHRjX3NldHVwX2R3bWFjNTEwX21xcHJpb2AgZnVuY3Rpb24gaW4gdGhlIGBzdG1tYWNfdGMuY2AgZHJpdmVyIGlzIGFjdHVhbGx5IGJlaW5nIGludm9rZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgc291cmNlIGNvZGUgdG8gdHJhY2Ugd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBtdWx0aS1xdWV1ZSBwcmlvcml0eSBmdW5jdGlvbmFsaXR5IG9uIHRoaXMgc3BlY2lmaWMgZGV2aWNlLCB0aGUgZHdtYWM1MTAuIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHRzIHdoZXJlIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgaXMgaGFwcGVuaW5nLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYW5kIGFueSBhcmd1bWVudHMgcGFzc2VkLCB3aGljaCB3aWxsIHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjX3NldHVwX2R3bWFjNTEwX21xcHJpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEyNjQ9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMjczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTI3NDpzdGF0aWMgaW50IHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMjc1LVx0XHRcdFx0ICAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdF9vZmZsb2FkICptcXByaW8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTM1NT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTM2Mi1cdC5xdWVyeV9jYXBzID0gdGNfcXVlcnlfY2FwcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzNjM6XHQuc2V0dXBfbXFwcmlvID0gdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTM2NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODkxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBhc3N1bWluZyBteSBleHBlcnRpc2UgaW4gdGhpcyBkb21haW46CgoqKk15IFVuZGVyc3RhbmRpbmcgb2YgdGhlIGBkd21hYzUxMF90Y19vcHNgIEFzc2lnbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYGR3bWFjNTEwX3RjX29wc2Agc3RydWN0dXJlIGlzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSBgcHJpdi0mZ3Q7dGNfb3BzYCBwb2ludGVyLiBUaGlzIGlzIGhhcHBlbmluZyBlaXRoZXIgZHVyaW5nIHRoZSBTeXN0ZW0tb24tQ2hpcCAoU29DKSBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlciAoTUFDKSBwcm9iZSBmdW5jdGlvbiwgb3IgZHVyaW5nIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBwaGFzZSB3aXRoaW4gdGhlIFN0bW1hYyBkcml2ZXIuIEVzc2VudGlhbGx5LCB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIFRyYWZmaWMgQ2xhc3MgKFRDKSBvcGVyYXRpb25zIGZvciB0aGUgZHdtYWM1MTAgSVAgY29yZSBpcyBiZWluZyBjb25maWd1cmVkIGFuZCBtYWRlIGF2YWlsYWJsZSB0byB0aGUgZHJpdmVyIGF0IGVpdGhlciBib290dXAsIG9yIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIFRoYXQgc3BlY2lmaWMgJiMzNDt0Y19vcHMmIzM0OyBzdHJ1Y3R1cmUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBoYW5kbGUgVEMgcmVsYXRlZCB0YXNrcyBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHdtYWM1MTBfdGNfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTk5LVx0XHQubW9kZSA9IFx1MDAyNmR3bWFjNF9yaW5nX21vZGVfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjIwMDpcdFx0LnRjID0gXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTIwMS1cdFx0Lm1tYyA9IFx1MDAyNmR3bWFjX21tY19vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTIyMC1cdFx0Lm1vZGUgPSBcdTAwMjZkd21hYzRfcmluZ19tb2RlX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyMjE6XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMjItXHRcdC5tbWMgPSBcdTAwMjZkd21hY19tbWNfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDEtXHRcdC5tb2RlID0gXHUwMDI2ZHdtYWM0X3JpbmdfbW9kZV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQyOlx0XHQudGMgPSBcdTAwMjZkd21hYzUxMF90Y19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQzLVx0XHQubW1jID0gXHUwMDI2ZHdtYWNfbW1jX29wcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYzLVx0XHQubW9kZSA9IE5VTEwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjY0Olx0XHQudGMgPSBcdTAwMjZkd21hYzUxMF90Y19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjY1LVx0XHQubW1jID0gXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODUtXHRcdC5tb2RlID0gTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODY6XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODctXHRcdC5tbWMgPSBcdTAwMjZkd3hnbWFjX21tY19vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oPTY5MT1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo2OTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC02OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTM0ND1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzRfdGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzU1OmNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNTYtXHQuaW5pdCA9IHRjX2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQ1CgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDYzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBFbGlnaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgY2FyZWZ1bGx5IHJldmlzaXQgU2VjdGlvbiAyIG9mIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zIHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIChuZWdhdGl2ZSBjcml0ZXJpYSkuIFRoZSBrZXkgcGFydCBpczogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6ICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgdG8gYHN0bW1hY2AgZmFsbCB1bmRlciB0aGlzIGV4Y2x1c2lvbi4gSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jYC4gVGhlc2UgZmlsZXMgYXJlIGNsZWFybHkgd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRFdNQUMgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMsIHBoeXNpY2FsIEV0aGVybmV0IGhhcmR3YXJlIOKAkyB0aGluZ3MgbGlrZSB0aGUgRFdNQUMgSVAgY29yZSwgYW5kIGFsc28gc2VlbiBpbiB2YXJpb3VzIFNvQ3MgZnJvbSBJbnRlbCwgTG9vbmdzb24sIE1vdG9yY29tbSwgU1RNMzIsIEFsbHdpbm5lciwgYW5kIFJvY2tjaGlwLgoKQ29uc2lkZXJpbmcgc3RhbmRhcmQgZnV6emluZyBzZXR1cHMgbGlrZSBRRU1VIGFtZDY0IG9yIEdDRSwgdGhpcyBoYXJkd2FyZSBpcyBzaW1wbHkgbm90IGVtdWxhdGVkLiBRRU1VIGdlbmVyYWxseSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldCwgbm90IHRoZSBTeW5vcHN5cyBEV01BQyA1LjEwJiM0MzsgSVAgY29yZSB1c2VkIGJ5IGBzdG1tYWNgLiBUaHVzLCBgc3RtbWFjYCBjYW5ub3QgYmUgcHJvYmVkIG9yIGluc3RhbnRpYXRlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgYW5kIHRoZXJlZm9yZSBmdW5jdGlvbnMgbGlrZSBgdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvYCBjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgc3l6a2FsbGVyLgoKVG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyBjb25maXJtIHRoZSB0cmlhZ2UgcGFyYW1ldGVycy4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcmUgZW1wdHkgbGlzdHMsIHdoaWNoIGlzIGV4cGVjdGVkLgoKSSYjMzk7dmUgZm9ybXVsYXRlZCBhIGNvbmNpc2UgcmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyIChzdG1tYWMpLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIHNldHVwIHBhdGggKGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKS4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIERXTUFDIGhhcmR3YXJlL0FTSUMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7IFRoaXMgaXMgYSBjbGVhciBleHBsYW5hdGlvbi4KCkZpbmFsbHksIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBteSBgc2V0LXJlc3VsdHNgIGFyZ3VtZW50czogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgcmVhc29uaW5nIHdpbGwgYmU6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBpbiB0aGUgaGFyZHdhcmUgVEMgTVFQUklPIG9mZmxvYWQgc2V0dXAgcGF0aCAoYHRjX3NldHVwX2R3bWFjNTEwX21xcHJpb2ApLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgRFdNQUMgaGFyZHdhcmUvQVNJQyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDsKCldpdGggdGhpcyBhc3Nlc3NtZW50IGFuZCBqdXN0aWZpY2F0aW9uLCBJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciwgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgaGFyZHdhcmUgVEMgTVFQUklPIG9mZmxvYWQgaGFuZGxpbmcgKHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIEFTSUMvUENJZS9wbGF0Zm9ybSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NDoyMy41Nzg2MjAzOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc1MDcxNzM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBoYXJkd2FyZSBUQyBNUVBSSU8gb2ZmbG9hZCBoYW5kbGluZyAodGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llL3BsYXRmb3JtIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6MjMuNTc4NjI2Nzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODQyNTkwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MmI3MWEyYzAzZGZlNzM4M2U4Yjc1ZjQyMDg4YWViOGEzYjBjMjU1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTE6NDQ6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXFxuaW5kZXggMDRkYWZlYzAyMWI0Zi4uOTMxNGJjYjg1YzIyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG5AQCAtNDk0LDcgKzQ5NCw3IEBAIHN0cnVjdCBzdG1tYWNfb3BzIHtcXG4gI2RlZmluZSBzdG1tYWNfc2V0X2FycF9vZmZsb2FkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuIFxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBzZXRfYXJwX29mZmxvYWQsIF9fYXJncylcXG4gI2RlZmluZSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuLVxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBmcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MsIF9fYXJncylcXG4rXFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBmcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MsIF9fYXJncylcXG4gXFxuIC8qIFBUUCBhbmQgSFcgVGltZXIgaGVscGVycyAqL1xcbiBzdHJ1Y3Qgc3RtbWFjX2h3dGltZXN0YW1wIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbmluZGV4IDE0Y2FiZTc2ZTUzZWMuLmM5OWQ5YjdlMjZkY2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbkBAIC0xMjM3LDYgKzEyMzcsMzAgQEAgc3RhdGljIGludCB0Y19xdWVyeV9jYXBzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgaW50IHN0bW1hY19zZXRfbmRldl90Y3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHU4IG50YyxcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRkZXZfdGNfdHhxICp0Y190b190eHEpXFxuK3tcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdG5ldGRldl9yZXNldF90YyhuZGV2KTtcXG4rXFx0aWYgKCFudGMpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0ZXJyID0gbmV0ZGV2X3NldF9udW1fdGMobmRldiwgbnRjKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudGM7IGkrKykge1xcbitcXHRcXHR1MTYgY291bnQsIG9mZnNldDtcXG4rXFxuK1xcdFxcdGNvdW50ID0gdGNfdG9fdHhxW2ldLmNvdW50O1xcbitcXHRcXHRvZmZzZXQgPSB0Y190b190eHFbaV0ub2Zmc2V0O1xcbitcXHRcXHRuZXRkZXZfc2V0X3RjX3F1ZXVlKG5kZXYsIGksIGNvdW50LCBvZmZzZXQpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuQEAgLTEyNTAsNDUgKzEyNzQsNjEgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gc3RhdGljIGludCB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IHRjX21xcHJpb19xb3B0X29mZmxvYWQgKm1xcHJpbylcXG4ge1xcbitcXHR1bnNpZ25lZCBpbnQgbmRldl9udW1fdHhfcXVldWVzLCBudW1fdHhfcXVldWVzID0gMDtcXG4rXFx0c3RydWN0IG5ldGRldl90Y190eHEgbmRldl90Y190b190eHFbVENfTUFYX1FVRVVFXTtcXG4rXFx0c3RydWN0IG5ldGRldl90Y190eHEgdGNfdG9fdHhxW1RDX01BWF9RVUVVRV0gPSB7fTtcXG4gXFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbXFwcmlvLVxcdTAwM2VleHRhY2s7XFxuIFxcdHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCA9IFxcdTAwMjZtcXByaW8tXFx1MDAzZXFvcHQ7XFxuLVxcdHUzMiBvZmZzZXQsIGNvdW50LCBudW1fc3RhY2tfdHhfcXVldWVzID0gMDtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwcml2LVxcdTAwM2VkZXY7XFxuLVxcdHUzMiBudW1fdGMgPSBxb3B0LVxcdTAwM2VudW1fdGM7XFxuLVxcdGludCBlcnI7XFxuK1xcdHU4IG5kZXZfcHJpb190Y19tYXBbVENfQklUTUFTSyArIDFdO1xcbitcXHRpbnQgaSwgZXJyLCBuZGV2X250YztcXG4gXFxuLVxcdGlmICghbnVtX3RjKSB7XFxuK1xcdGlmICghcW9wdC1cXHUwMDNlbnVtX3RjKSB7XFxuIFxcdFxcdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGVyciA9IG5ldGRldl9zZXRfbnVtX3RjKG5kZXYsIG51bV90Yyk7XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBlcnI7XFxuLVxcbi1cXHRmb3IgKHUzMiB0YyA9IDA7IHRjIFxcdTAwM2MgbnVtX3RjOyB0YysrKSB7XFxuLVxcdFxcdG9mZnNldCA9IHFvcHQtXFx1MDAzZW9mZnNldFt0Y107XFxuLVxcdFxcdGNvdW50ID0gcW9wdC1cXHUwMDNlY291bnRbdGNdO1xcbi1cXHRcXHRudW1fc3RhY2tfdHhfcXVldWVzICs9IGNvdW50O1xcbitcXHRpZiAocW9wdC1cXHUwMDNlbnVtX3RjIFxcdTAwM2UgQVJSQVlfU0laRSh0Y190b190eHEpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdFxcdGVyciA9IG5ldGRldl9zZXRfdGNfcXVldWUobmRldiwgdGMsIGNvdW50LCBvZmZzZXQpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIGVycl9yZXNldF90YztcXG4rXFx0Lyogc2F2ZSBjdXJyZW50IHRjIHZhbHVlcyBmb3IgcmVzZXQgKi9cXG4rXFx0bmRldl9udGMgPSBuZXRkZXZfZ2V0X251bV90YyhuZGV2KTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobmRldi1cXHUwMDNldGNfdG9fdHhxKTsgaSsrKVxcbitcXHRcXHRuZGV2X3RjX3RvX3R4cVtpXS5jb21iaW5lZCA9XFxuK1xcdFxcdFxcdFJFQURfT05DRShuZGV2LVxcdTAwM2V0Y190b190eHFbaV0uY29tYmluZWQpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSsrKVxcbitcXHRcXHRuZGV2X3ByaW9fdGNfbWFwW2ldID0gUkVBRF9PTkNFKG5kZXYtXFx1MDAzZXByaW9fdGNfbWFwW2ldKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBxb3B0LVxcdTAwM2VudW1fdGM7IGkrKykge1xcbitcXHRcXHR0Y190b190eHFbaV0gPSAoc3RydWN0IG5ldGRldl90Y190eHEpIHtcXG4rXFx0XFx0XFx0LmNvdW50ID0gcW9wdC1cXHUwMDNlY291bnRbaV0sXFxuK1xcdFxcdFxcdC5vZmZzZXQgPSBxb3B0LVxcdTAwM2VvZmZzZXRbaV0sXFxuK1xcdFxcdH07XFxuK1xcdFxcdG51bV90eF9xdWV1ZXMgKz0gcW9wdC1cXHUwMDNlY291bnRbaV07XFxuIFxcdH1cXG4gXFxuLVxcdGVyciA9IG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbnVtX3N0YWNrX3R4X3F1ZXVlcyk7XFxuK1xcdGVyciA9IHN0bW1hY19zZXRfbmRldl90Y3MobmRldiwgcW9wdC1cXHUwMDNlbnVtX3RjLCB0Y190b190eHEpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xcbitcXG4rXFx0bmRldl9udW1fdHhfcXVldWVzID0gbmRldi1cXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xcbitcXHRlcnIgPSBuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKG5kZXYsIG51bV90eF9xdWV1ZXMpO1xcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIGVycl9yZXNldF90YztcXG4rXFx0XFx0Z290byBlcnJvcl9yZXNldF90YztcXG4gXFxuIFxcdGVyciA9IHN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MocHJpdiwgbmRldiwgZXh0YWNrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBtcXByaW8tXFx1MDAzZXByZWVtcHRpYmxlX3Rjcyk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gZXJyX3Jlc2V0X3RjO1xcbitcXHRcXHRnb3RvIGVycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLWVycl9yZXNldF90YzpcXG4tXFx0c3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhuZGV2LCBleHRhY2spO1xcbitlcnJvcl9yZXNldF9udW1fdHhfcXVldWVzOlxcbitcXHRuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKG5kZXYsIG5kZXZfbnVtX3R4X3F1ZXVlcyk7XFxuK2Vycm9yX3Jlc2V0X3RjOlxcbitcXHRzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIG5kZXZfbnRjLCBuZGV2X3RjX3RvX3R4cSk7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5kZXZfcHJpb190Y19tYXApOyBpKyspXFxuK1xcdFxcdG5ldGRldl9zZXRfcHJpb190Y19tYXAobmRldiwgaSwgbmRldl9wcmlvX3RjX21hcFtpXSk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ0OjI0LjE2MzU3MTcyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTYxNjU3NTI3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBoYXJkd2FyZSBUQyBNUVBSSU8gb2ZmbG9hZCBoYW5kbGluZyAodGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llL3BsYXRmb3JtIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MmI3MWEyYzAzZGZlNzM4M2U4Yjc1ZjQyMDg4YWViOGEzYjBjMjU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxMTo0NDoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuaW5kZXggMDRkYWZlYzAyMWI0Zi4uOTMxNGJjYjg1YzIyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtNDk0LDcgKzQ5NCw3IEBAIHN0cnVjdCBzdG1tYWNfb3BzIHtcbiAjZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgc2V0X2FycF9vZmZsb2FkLCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuLVx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBtYWMsIGZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcywgX19hcmdzKVxuK1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBmcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MsIF9fYXJncylcbiBcbiAvKiBQVFAgYW5kIEhXIFRpbWVyIGhlbHBlcnMgKi9cbiBzdHJ1Y3Qgc3RtbWFjX2h3dGltZXN0YW1wIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5pbmRleCAxNGNhYmU3NmU1M2VjLi5jOTlkOWI3ZTI2ZGNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5AQCAtMTIzNyw2ICsxMjM3LDMwIEBAIHN0YXRpYyBpbnQgdGNfcXVlcnlfY2FwcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyBpbnQgc3RtbWFjX3NldF9uZGV2X3RjcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTggbnRjLFxuK1x0XHRcdCAgICAgICBzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSAqdGNfdG9fdHhxKVxuK3tcbitcdGludCBpLCBlcnI7XG4rXG4rXHRuZXRkZXZfcmVzZXRfdGMobmRldik7XG4rXHRpZiAoIW50YylcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudGMpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG50YzsgaSsrKSB7XG4rXHRcdHUxNiBjb3VudCwgb2Zmc2V0O1xuK1xuK1x0XHRjb3VudCA9IHRjX3RvX3R4cVtpXS5jb3VudDtcbitcdFx0b2Zmc2V0ID0gdGNfdG9fdHhxW2ldLm9mZnNldDtcbitcdFx0bmV0ZGV2X3NldF90Y19xdWV1ZShuZGV2LCBpLCBjb3VudCwgb2Zmc2V0KTtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzdG1tYWNfcmVzZXRfdGNfbXFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbkBAIC0xMjUwLDQ1ICsxMjc0LDYxIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF90Y19tcXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gc3RhdGljIGludCB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdF9vZmZsb2FkICptcXByaW8pXG4ge1xuK1x0dW5zaWduZWQgaW50IG5kZXZfbnVtX3R4X3F1ZXVlcywgbnVtX3R4X3F1ZXVlcyA9IDA7XG4rXHRzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSBuZGV2X3RjX3RvX3R4cVtUQ19NQVhfUVVFVUVdO1xuK1x0c3RydWN0IG5ldGRldl90Y190eHEgdGNfdG9fdHhxW1RDX01BWF9RVUVVRV0gPSB7fTtcbiBcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IG1xcHJpby1cdTAwM2VleHRhY2s7XG4gXHRzdHJ1Y3QgdGNfbXFwcmlvX3FvcHQgKnFvcHQgPSBcdTAwMjZtcXByaW8tXHUwMDNlcW9wdDtcbi1cdHUzMiBvZmZzZXQsIGNvdW50LCBudW1fc3RhY2tfdHhfcXVldWVzID0gMDtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4tXHR1MzIgbnVtX3RjID0gcW9wdC1cdTAwM2VudW1fdGM7XG4tXHRpbnQgZXJyO1xuK1x0dTggbmRldl9wcmlvX3RjX21hcFtUQ19CSVRNQVNLICsgMV07XG4rXHRpbnQgaSwgZXJyLCBuZGV2X250YztcbiBcbi1cdGlmICghbnVtX3RjKSB7XG4rXHRpZiAoIXFvcHQtXHUwMDNlbnVtX3RjKSB7XG4gXHRcdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudW1fdGMpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGZvciAodTMyIHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuLVx0XHRvZmZzZXQgPSBxb3B0LVx1MDAzZW9mZnNldFt0Y107XG4tXHRcdGNvdW50ID0gcW9wdC1cdTAwM2Vjb3VudFt0Y107XG4tXHRcdG51bV9zdGFja190eF9xdWV1ZXMgKz0gY291bnQ7XG4rXHRpZiAocW9wdC1cdTAwM2VudW1fdGMgXHUwMDNlIEFSUkFZX1NJWkUodGNfdG9fdHhxKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRcdGVyciA9IG5ldGRldl9zZXRfdGNfcXVldWUobmRldiwgdGMsIGNvdW50LCBvZmZzZXQpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gZXJyX3Jlc2V0X3RjO1xuK1x0Lyogc2F2ZSBjdXJyZW50IHRjIHZhbHVlcyBmb3IgcmVzZXQgKi9cbitcdG5kZXZfbnRjID0gbmV0ZGV2X2dldF9udW1fdGMobmRldik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG5kZXYtXHUwMDNldGNfdG9fdHhxKTsgaSsrKVxuK1x0XHRuZGV2X3RjX3RvX3R4cVtpXS5jb21iaW5lZCA9XG4rXHRcdFx0UkVBRF9PTkNFKG5kZXYtXHUwMDNldGNfdG9fdHhxW2ldLmNvbWJpbmVkKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobmRldl9wcmlvX3RjX21hcCk7IGkrKylcbitcdFx0bmRldl9wcmlvX3RjX21hcFtpXSA9IFJFQURfT05DRShuZGV2LVx1MDAzZXByaW9fdGNfbWFwW2ldKTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHFvcHQtXHUwMDNlbnVtX3RjOyBpKyspIHtcbitcdFx0dGNfdG9fdHhxW2ldID0gKHN0cnVjdCBuZXRkZXZfdGNfdHhxKSB7XG4rXHRcdFx0LmNvdW50ID0gcW9wdC1cdTAwM2Vjb3VudFtpXSxcbitcdFx0XHQub2Zmc2V0ID0gcW9wdC1cdTAwM2VvZmZzZXRbaV0sXG4rXHRcdH07XG4rXHRcdG51bV90eF9xdWV1ZXMgKz0gcW9wdC1cdTAwM2Vjb3VudFtpXTtcbiBcdH1cbiBcbi1cdGVyciA9IG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbnVtX3N0YWNrX3R4X3F1ZXVlcyk7XG4rXHRlcnIgPSBzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIHFvcHQtXHUwMDNlbnVtX3RjLCB0Y190b190eHEpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJvcl9yZXNldF90YztcbitcbitcdG5kZXZfbnVtX3R4X3F1ZXVlcyA9IG5kZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuK1x0ZXJyID0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBudW1fdHhfcXVldWVzKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gZXJyX3Jlc2V0X3RjO1xuK1x0XHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xuIFxuIFx0ZXJyID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBuZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIG1xcHJpby1cdTAwM2VwcmVlbXB0aWJsZV90Y3MpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfcmVzZXRfdGM7XG4rXHRcdGdvdG8gZXJyb3JfcmVzZXRfbnVtX3R4X3F1ZXVlcztcbiBcbiBcdHJldHVybiAwO1xuIFxuLWVycl9yZXNldF90Yzpcbi1cdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcbitlcnJvcl9yZXNldF9udW1fdHhfcXVldWVzOlxuK1x0bmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBuZGV2X251bV90eF9xdWV1ZXMpO1xuK2Vycm9yX3Jlc2V0X3RjOlxuK1x0c3RtbWFjX3NldF9uZGV2X3RjcyhuZGV2LCBuZGV2X250YywgbmRldl90Y190b190eHEpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSsrKVxuK1x0XHRuZXRkZXZfc2V0X3ByaW9fdGNfbWFwKG5kZXYsIGksIG5kZXZfcHJpb190Y19tYXBbaV0pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NDoyNC4xNjM1NzM3OTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQyMDE5ODkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gYXNzZXNzIGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcuIFdlIG5lZWQgdG8gYmUgc3RyYXRlZ2ljIGFib3V0IHdoZXJlIHdlIHNwZW5kIG91ciB0aW1lIGFuZCByZXNvdXJjZXMuXG5cbkFscmlnaHQsIHRoZSBmaWxlcyB0b3VjaGVkIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaGAgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY2AuIFRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0YCBkaXJlY3RvcnkgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuIE5ldHdvcmtpbmcgc3RhY2tzIGFyZSBvZnRlbiBjb21wbGV4IGFuZCByaXBlIHdpdGggb3Bwb3J0dW5pdGllcyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlaXIgaW5wdXQtcmljaCBuYXR1cmUuXG5cbk5vdywgd2hhdCBpcyBgc3RtbWFjYCBleGFjdGx5PyBBaCwgaXQncyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciDigJMgMTAvMTAwLzEwMDAvRVFPUy4gT2theSwgdGhhdCBoZWxwcyBuYXJyb3cgaXQgZG93bi4gQnV0LCBpcyB0aGlzIGEgbG93LWxldmVsIGhhcmR3YXJlIGRyaXZlciwgdGllZCB0byBzcGVjaWZpYyBBU0lDcyBvciBTb0NzLCBvciBpcyBpdCBwb3RlbnRpYWxseSBtb3JlIGFjY2Vzc2libGUsIG1heWJlIGVtdWxhdGVkIGluIFFFTVUgb3IgdXNhYmxlIGluIG1vcmUgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IFRoYXQncyBhIGNyaXRpY2FsIHF1ZXN0aW9uLiBBY2Nlc3MgaXMgdGhlIGtleSwgb2YgY291cnNlLlxuXG5XZSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgc3RtbWFjIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgc2VhcmNoaW5nIGZvciB1c2FnZSBvZiBzdG1tYWMsIHRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIGlkZWEgb2YgaXRzIGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBUaGF0IHdpbGwgcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgdmFsdWUgaW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6NDUuNTgzNzc1MTA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjQ2NTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6NDUuOTI2MjQ3OTAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODQ0MDg4NzE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGBzdG1tYWNgIGFuZCBRRU1VIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYHN0bW1hY2AgaXMgYSBzdWl0YWJsZSBldGhlcm5ldCBkcml2ZXIgZm9yIGEgcGFydGljdWxhciBzY2VuYXJpby4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBwaHlzaWNhbCBoYXJkd2FyZSwgZW1iZWRkZWQgU29Dcywgb3IgcG9zc2libHkgZXZlbiBQQ0kgZGV2aWNlcy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLi4uIGFuZCBjaGVjayBzZWN0aW9uIDIuIEFoLCByaWdodCwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uIHRob3NlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMgdGhhdCAqd29uJ3QqIHdvcmsgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIGluIFFFTVUuIEJ1dCB3YWl0LCBpcyBgU1RNTUFDYCwgdGhhdCBTeW5vcHN5cyBEZXNpZ25XYXJlIGNvcmUgc3R1ZmYsICpzcGVjaWZpY2FsbHkqIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIENvcmVzIEV0aGVybmV0IE1BQyBvciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIOKAkyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFtZDY0P1xuXG5UaGlzIGZlZWxzIGxpa2UgYSBmYW1pbGlhciBwcm9ibGVtLiBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgZHdjLWVxb3NgLCBgYWxsd2lubmVyLXN1bjhpLWVtYWNgLCBhbmQgYGlteC1mZWNgIGJ1dCB0aG9zZSBhcmUgcHJpbWFyaWx5IGZvciBBUk0gYXJjaGl0ZWN0dXJlcy4gV2hhdCBhYm91dCBnb29kIG9sJyBzdGFuZGFyZCBRRU1VIGFtZDY0PyBJJ20gbm90IHNlZWluZyBhbiBpbW1lZGlhdGUgZml0LCBzbyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayB0byBzZWUgKndoaWNoKiBgc3RtbWFjYCBkZXZpY2VzIGFjdHVhbGx5IGV4aXN0IGFuZCBjb25maXJtIGlmIGFueSBvZiB0aGUgdmlydHVhbCBkcml2ZXJzIG9yIHN0YW5kYXJkIFFFTVUgZGV2aWNlcyBhY3R1YWxseSBsZXZlcmFnZSBpdC4gUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY2x1ZSB3aXRoIGBTVE1NQUNfUENJYCBhbmQgYFNUTU1BQ19FVEhg4oCmXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6NTQuMzY3MTM4MzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MjcyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI2NDpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzNjI9c3RhdGljIHZvaWQgaW50ZWxfZXRoX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBRVUFSSywgXFx1MDAyNnF1YXJrX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ3OT1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQ5ODpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz01Nzg9c3RhdGljIHZvaWQgbG9vbmdzb25fZHdtYWNfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1OTY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTctXFx0eyBQQ0lfREVWSUNFX0RBVEEoTE9PTkdTT04sIEdNQUMxLCBcXHUwMDI2bG9vbmdzb25fZ21hY19wY2lfaW5mbykgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI2ND1zdGF0aWMgaW50IG1vdG9yY29tbV9zZXR1cF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkzOnN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Mj1zdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2OC1cXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NT1RPUkNPTU0sIDB4NjgwMSkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTk6XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOTI9c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDQtXFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ0OjU0LjQxODY3MzY5N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NjUyNzU5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHN0bW1hY2AgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBrbm93LCBgc3RtbWFjYCBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBhcyB3ZWxsIGFzIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgaGFyZHdhcmUuIEl0IGhhbmRsZXMgYSByYW5nZSBvZiBkZXZpY2VzOiBQQ0kgZGV2aWNlcyBpbiBJbnRlbCBRdWFyay9FSEwvVEdMLCBMb29uZ3NvbiwgTW90b3Jjb21tLCBhbmQgU1RNTUFDIFBDSSBjb25maWd1cmF0aW9ucywgYW5kIHBsYXRmb3JtIGRldmljZXMvT0YgZGV2aWNlcyBpbiB2YXJpb3VzIFNvQ3MgbGlrZSBBbGx3aW5uZXIsIFJvY2tjaGlwLCBTVE0zMiwgTWVzb24sIGFuZCBUZWdyYS4gQnV0IGEga2V5IHBvaW50IGhlcmUgaXMsIGlzIHRoaXMgYSB2aXJ0dWFsIGRldmljZSBvciBhIGRyaXZlciBmb3IgKnJlYWwqIGhhcmR3YXJlP1xuXG5SaWdodCwgaXQgcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCByZWxpZXMgb24gUENJIGRldmljZXMgb3IgcGxhdGZvcm0vT0YgZGV2aWNlcyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWMgU29Dcy4gVGhpcyBpcyBpbXBvcnRhbnQ6IHRoYXQgaGFyZHdhcmUgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhbWQ2NCBzeXprYWxsZXIgZnV6emluZyBpbnN0YW5jZXMuIFNvLCB0aGUgaW1wbGljYXRpb24gaXMgdGhhdCBzdHJhaWdodGZvcndhcmQgZnV6emluZyBzZXR1cHMgd29uJ3QgZGlyZWN0bHkgY292ZXIgdGhpcyBkcml2ZXIuXG5cbk5vdywgaG9sZCBvbi4gQ2FuIHdlIGdldCBhcm91bmQgdGhpcz8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIFFFTVUgYW1kNjQgYWN0dWFsbHkgaGFzIGFueSBgc3RtbWFjYCBlbXVsYXRpb24uIE9yIGlmLCBwb3RlbnRpYWxseSwgYHN0bW1hY2AgY291bGQgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggdmlydHVhbCBidXNlczsgc29tZXRoaW5nIGxpa2UgbmV0ZGV2LCB0dW4vdGFwLCBvciB1c2IgZ2FkZ2V0IHBlcmhhcHMuXG5cbk5vcGUuIFRoZSBmYWN0IGlzLCBgc3RtbWFjYCBpcyBkZWZpbml0ZWx5IGEgZHJpdmVyIGZvciAqcGh5c2ljYWwqIEV0aGVybmV0IE1BQ3MsIHNwZWNpZmljYWxseSB0aG9zZSBTeW5vcHN5cyBEV01BQyBpbXBsZW1lbnRhdGlvbnMuXG5cblNvIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBhbiBgc3RtbWFjYCBuZXRkZXYgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2VyIHNwYWNlLCBlbnRpcmVseSBpbmRlcGVuZGVudCBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIElzIHRoZXJlIGEgdmlydHVhbCBpbnRlcmZhY2Ugb3IgbmV0bGluayBpbnN0YW50aWF0aW9uIG1lY2hhbmlzbSAobGlrZSBydG5sX2xpbmtfb3BzKSB0aGF0IG1pZ2h0IGFsbG93IGl0IHRvIGJlIHZpcnR1YWxseSBzaW11bGF0ZWQ/IFRoaXMgaXMgd2hhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU5MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NDo1OC45ODM5NTMwODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4NjEyMTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bmxfbGlua19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ0OjU5LjAzMzgyMzEyMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwNDg3MTg0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsIENoYWluIG9mIGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvYCBmdW5jdGlvbiBpbiB0aGUgYHN0bW1hY190Yy5jYCBkcml2ZXIgaXMgYWN0dWFsbHkgYmVpbmcgaW52b2tlZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIHRvIHRyYWNlIHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBtdWx0aS1xdWV1ZSBwcmlvcml0eSBmdW5jdGlvbmFsaXR5IG9uIHRoaXMgc3BlY2lmaWMgZGV2aWNlLCB0aGUgZHdtYWM1MTAuIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHRzIHdoZXJlIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgaXMgaGFwcGVuaW5nLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYW5kIGFueSBhcmd1bWVudHMgcGFzc2VkLCB3aGljaCB3aWxsIHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBkZXBlbmRlbmNpZXMuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjYzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDU6MDUuMDgyNTQ0MzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDg2MTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjX3NldHVwX2R3bWFjNTEwX21xcHJpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMjY0PXN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF90Y19tcXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMjczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEyNzQ6c3RhdGljIGludCB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEyNzUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdF9vZmZsb2FkICptcXByaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzU1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNjItXFx0LnF1ZXJ5X2NhcHMgPSB0Y19xdWVyeV9jYXBzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzNjM6XFx0LnNldHVwX21xcHJpbyA9IHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzY0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ1OjA1LjEzMjY0MDU1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjA3OTUyMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBhc3N1bWluZyBteSBleHBlcnRpc2UgaW4gdGhpcyBkb21haW46XG5cbioqTXkgVW5kZXJzdGFuZGluZyBvZiB0aGUgYGR3bWFjNTEwX3RjX29wc2AgQXNzaWdubWVudCoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYGR3bWFjNTEwX3RjX29wc2Agc3RydWN0dXJlIGlzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSBgcHJpdi1cdTAwM2V0Y19vcHNgIHBvaW50ZXIuIFRoaXMgaXMgaGFwcGVuaW5nIGVpdGhlciBkdXJpbmcgdGhlIFN5c3RlbS1vbi1DaGlwIChTb0MpIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyIChNQUMpIHByb2JlIGZ1bmN0aW9uLCBvciBkdXJpbmcgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHBoYXNlIHdpdGhpbiB0aGUgU3RtbWFjIGRyaXZlci4gRXNzZW50aWFsbHksIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gVHJhZmZpYyBDbGFzcyAoVEMpIG9wZXJhdGlvbnMgZm9yIHRoZSBkd21hYzUxMCBJUCBjb3JlIGlzIGJlaW5nIGNvbmZpZ3VyZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBkcml2ZXIgYXQgZWl0aGVyIGJvb3R1cCwgb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZS4gVGhhdCBzcGVjaWZpYyBcInRjX29wc1wiIHN0cnVjdHVyZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSBjb3JlIGltcGxlbWVudGF0aW9ucyB0aGF0IGhhbmRsZSBUQyByZWxhdGVkIHRhc2tzIGZvciB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODkxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDU6MDkuNzQwNTk3MDgxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIxOTMyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHdtYWM1MTBfdGNfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTk5LVxcdFxcdC5tb2RlID0gXFx1MDAyNmR3bWFjNF9yaW5nX21vZGVfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyMDA6XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjAxLVxcdFxcdC5tbWMgPSBcXHUwMDI2ZHdtYWNfbW1jX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMjAtXFx0XFx0Lm1vZGUgPSBcXHUwMDI2ZHdtYWM0X3JpbmdfbW9kZV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjIyMTpcXHRcXHQudGMgPSBcXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMjItXFx0XFx0Lm1tYyA9IFxcdTAwMjZkd21hY19tbWNfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI0MS1cXHRcXHQubW9kZSA9IFxcdTAwMjZkd21hYzRfcmluZ19tb2RlX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQyOlxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI0My1cXHRcXHQubW1jID0gXFx1MDAyNmR3bWFjX21tY19vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYzLVxcdFxcdC5tb2RlID0gTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjY0OlxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2NS1cXHRcXHQubW1jID0gXFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODUtXFx0XFx0Lm1vZGUgPSBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODY6XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjg3LVxcdFxcdC5tbWMgPSBcXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oPTY5MT1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NjkyOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzNDQ9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTM1NTpjb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTM1Ni1cXHQuaW5pdCA9IHRjX2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ1OjA5LjkxMjc5NzQ0OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDQxNjQ5Mzg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGNhcmVmdWxseSByZXZpc2l0IFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIGluc3RydWN0aW9ucyByZWdhcmRpbmcgd2hlbiB0byBtYXJrIHNvbWV0aGluZyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCAobmVnYXRpdmUgY3JpdGVyaWEpLiBUaGUga2V5IHBhcnQgaXM6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgdG8gYHN0bW1hY2AgZmFsbCB1bmRlciB0aGlzIGV4Y2x1c2lvbi4gSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jYC4gVGhlc2UgZmlsZXMgYXJlIGNsZWFybHkgd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRFdNQUMgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMsIHBoeXNpY2FsIEV0aGVybmV0IGhhcmR3YXJlIOKAkyB0aGluZ3MgbGlrZSB0aGUgRFdNQUMgSVAgY29yZSwgYW5kIGFsc28gc2VlbiBpbiB2YXJpb3VzIFNvQ3MgZnJvbSBJbnRlbCwgTG9vbmdzb24sIE1vdG9yY29tbSwgU1RNMzIsIEFsbHdpbm5lciwgYW5kIFJvY2tjaGlwLlxuXG5Db25zaWRlcmluZyBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcyBsaWtlIFFFTVUgYW1kNjQgb3IgR0NFLCB0aGlzIGhhcmR3YXJlIGlzIHNpbXBseSBub3QgZW11bGF0ZWQuIFFFTVUgZ2VuZXJhbGx5IGVtdWxhdGVzIHRoaW5ncyBsaWtlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIGFuZCB2aXJ0aW8tbmV0LCBub3QgdGhlIFN5bm9wc3lzIERXTUFDIDUuMTArIElQIGNvcmUgdXNlZCBieSBgc3RtbWFjYC4gVGh1cywgYHN0bW1hY2AgY2Fubm90IGJlIHByb2JlZCBvciBpbnN0YW50aWF0ZWQgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIGFuZCB0aGVyZWZvcmUgZnVuY3Rpb25zIGxpa2UgYHRjX3NldHVwX2R3bWFjNTEwX21xcHJpb2AgY2Fubm90IGJlIGV4ZWN1dGVkIGJ5IHN5emthbGxlci5cblxuVG8gYmUgdGhvcm91Z2gsIGxldCdzIGNvbmZpcm0gdGhlIHRyaWFnZSBwYXJhbWV0ZXJzLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NC4gYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIFRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFyZSBlbXB0eSBsaXN0cywgd2hpY2ggaXMgZXhwZWN0ZWQuXG5cbkkndmUgZm9ybXVsYXRlZCBhIGNvbmNpc2UgcmVhc29uaW5nOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyIChzdG1tYWMpLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIHNldHVwIHBhdGggKGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKS4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIERXTUFDIGhhcmR3YXJlL0FTSUMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiIFRoaXMgaXMgYSBjbGVhciBleHBsYW5hdGlvbi5cblxuRmluYWxseSwgSSdsbCBkb3VibGUtY2hlY2sgbXkgYHNldC1yZXN1bHRzYCBhcmd1bWVudHM6IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYEZvY3VzU3ltYm9sczogW11gLCBgRW5hYmxlQ29uZmlnczogW11gLCBhbmQgdGhlIHJlYXNvbmluZyB3aWxsIGJlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyIChzdG1tYWMpLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIHNldHVwIHBhdGggKGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKS4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIERXTUFDIGhhcmR3YXJlL0FTSUMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiXG5cbldpdGggdGhpcyBhc3Nlc3NtZW50IGFuZCBqdXN0aWZpY2F0aW9uLCBJJ20gY29uZmlkZW50IGluIGNhbGxpbmcgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNDUsIk91dHB1dFRva2VucyI6MTIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ1OjIwLjMyOTI5NjA0MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBoYXJkd2FyZSBUQyBNUVBSSU8gb2ZmbG9hZCBoYW5kbGluZyAodGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llL3BsYXRmb3JtIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NToyMC4zMjkzMjYzMjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow4npc4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 11:42:19 +0000 UTC FinishedAt: 2026-09-04 11:45:22 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTJiNzFhMmMwM2RmZTczODNlOGI3NWY0MjA4OGFlYjhhM2IwYzI1NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTE6NDQ6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5pbmRleCAwNGRhZmVjMDIxYjRmLi45MzE0YmNiODVjMjIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbkBAIC00OTQsNyAmIzQzOzQ5NCw3IEBAIHN0cnVjdCBzdG1tYWNfb3BzIHtcbiAjZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgc2V0X2FycF9vZmZsb2FkLCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuLVx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBtYWMsIGZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcywgX19hcmdzKVxuJiM0MztcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIG1hYywgZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLCBfX2FyZ3MpXG4gXG4gLyogUFRQIGFuZCBIVyBUaW1lciBoZWxwZXJzICovXG4gc3RydWN0IHN0bW1hY19od3RpbWVzdGFtcCB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuaW5kZXggMTRjYWJlNzZlNTNlYy4uYzk5ZDliN2UyNmRjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuQEAgLTEyMzcsNiAmIzQzOzEyMzcsMzAgQEAgc3RhdGljIGludCB0Y19xdWVyeV9jYXBzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NldF9uZGV2X3RjcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTggbnRjLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IG5ldGRldl90Y190eHEgKnRjX3RvX3R4cSlcbiYjNDM7e1xuJiM0MztcdGludCBpLCBlcnI7XG4mIzQzO1xuJiM0MztcdG5ldGRldl9yZXNldF90YyhuZGV2KTtcbiYjNDM7XHRpZiAoIW50YylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudGMpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudGM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1MTYgY291bnQsIG9mZnNldDtcbiYjNDM7XG4mIzQzO1x0XHRjb3VudCA9IHRjX3RvX3R4cVtpXS5jb3VudDtcbiYjNDM7XHRcdG9mZnNldCA9IHRjX3RvX3R4cVtpXS5vZmZzZXQ7XG4mIzQzO1x0XHRuZXRkZXZfc2V0X3RjX3F1ZXVlKG5kZXYsIGksIGNvdW50LCBvZmZzZXQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG5AQCAtMTI1MCw0NSAmIzQzOzEyNzQsNjEgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBzdGF0aWMgaW50IHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgICAgc3RydWN0IHRjX21xcHJpb19xb3B0X29mZmxvYWQgKm1xcHJpbylcbiB7XG4mIzQzO1x0dW5zaWduZWQgaW50IG5kZXZfbnVtX3R4X3F1ZXVlcywgbnVtX3R4X3F1ZXVlcyA9IDA7XG4mIzQzO1x0c3RydWN0IG5ldGRldl90Y190eHEgbmRldl90Y190b190eHFbVENfTUFYX1FVRVVFXTtcbiYjNDM7XHRzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSB0Y190b190eHFbVENfTUFYX1FVRVVFXSA9IHt9O1xuIFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbXFwcmlvLVx1MDAzZWV4dGFjaztcbiBcdHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCA9IFx1MDAyNm1xcHJpby1cdTAwM2Vxb3B0O1xuLVx0dTMyIG9mZnNldCwgY291bnQsIG51bV9zdGFja190eF9xdWV1ZXMgPSAwO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwcml2LVx1MDAzZWRldjtcbi1cdHUzMiBudW1fdGMgPSBxb3B0LVx1MDAzZW51bV90Yztcbi1cdGludCBlcnI7XG4mIzQzO1x0dTggbmRldl9wcmlvX3RjX21hcFtUQ19CSVRNQVNLICYjNDM7IDFdO1xuJiM0MztcdGludCBpLCBlcnIsIG5kZXZfbnRjO1xuIFxuLVx0aWYgKCFudW1fdGMpIHtcbiYjNDM7XHRpZiAoIXFvcHQtXHUwMDNlbnVtX3RjKSB7XG4gXHRcdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudW1fdGMpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGZvciAodTMyIHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMmIzQzOyYjNDM7KSB7XG4tXHRcdG9mZnNldCA9IHFvcHQtXHUwMDNlb2Zmc2V0W3RjXTtcbi1cdFx0Y291bnQgPSBxb3B0LVx1MDAzZWNvdW50W3RjXTtcbi1cdFx0bnVtX3N0YWNrX3R4X3F1ZXVlcyAmIzQzOz0gY291bnQ7XG4mIzQzO1x0aWYgKHFvcHQtXHUwMDNlbnVtX3RjIFx1MDAzZSBBUlJBWV9TSVpFKHRjX3RvX3R4cSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdFx0ZXJyID0gbmV0ZGV2X3NldF90Y19xdWV1ZShuZGV2LCB0YywgY291bnQsIG9mZnNldCk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBlcnJfcmVzZXRfdGM7XG4mIzQzO1x0Lyogc2F2ZSBjdXJyZW50IHRjIHZhbHVlcyBmb3IgcmVzZXQgKi9cbiYjNDM7XHRuZGV2X250YyA9IG5ldGRldl9nZXRfbnVtX3RjKG5kZXYpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobmRldi1cdTAwM2V0Y190b190eHEpOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdG5kZXZfdGNfdG9fdHhxW2ldLmNvbWJpbmVkID1cbiYjNDM7XHRcdFx0UkVBRF9PTkNFKG5kZXYtXHUwMDNldGNfdG9fdHhxW2ldLmNvbWJpbmVkKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG5kZXZfcHJpb190Y19tYXApOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdG5kZXZfcHJpb190Y19tYXBbaV0gPSBSRUFEX09OQ0UobmRldi1cdTAwM2VwcmlvX3RjX21hcFtpXSk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHFvcHQtXHUwMDNlbnVtX3RjOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dGNfdG9fdHhxW2ldID0gKHN0cnVjdCBuZXRkZXZfdGNfdHhxKSB7XG4mIzQzO1x0XHRcdC5jb3VudCA9IHFvcHQtXHUwMDNlY291bnRbaV0sXG4mIzQzO1x0XHRcdC5vZmZzZXQgPSBxb3B0LVx1MDAzZW9mZnNldFtpXSxcbiYjNDM7XHRcdH07XG4mIzQzO1x0XHRudW1fdHhfcXVldWVzICYjNDM7PSBxb3B0LVx1MDAzZWNvdW50W2ldO1xuIFx0fVxuIFxuLVx0ZXJyID0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBudW1fc3RhY2tfdHhfcXVldWVzKTtcbiYjNDM7XHRlcnIgPSBzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIHFvcHQtXHUwMDNlbnVtX3RjLCB0Y190b190eHEpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xuJiM0MztcbiYjNDM7XHRuZGV2X251bV90eF9xdWV1ZXMgPSBuZGV2LVx1MDAzZXJlYWxfbnVtX3R4X3F1ZXVlcztcbiYjNDM7XHRlcnIgPSBuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKG5kZXYsIG51bV90eF9xdWV1ZXMpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfcmVzZXRfdGM7XG4mIzQzO1x0XHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xuIFxuIFx0ZXJyID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBuZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIG1xcHJpby1cdTAwM2VwcmVlbXB0aWJsZV90Y3MpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfcmVzZXRfdGM7XG4mIzQzO1x0XHRnb3RvIGVycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfcmVzZXRfdGM6XG4tXHRzdG1tYWNfcmVzZXRfdGNfbXFwcmlvKG5kZXYsIGV4dGFjayk7XG4mIzQzO2Vycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM6XG4mIzQzO1x0bmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBuZGV2X251bV90eF9xdWV1ZXMpO1xuJiM0MztlcnJvcl9yZXNldF90YzpcbiYjNDM7XHRzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIG5kZXZfbnRjLCBuZGV2X3RjX3RvX3R4cSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRuZXRkZXZfc2V0X3ByaW9fdGNfbWFwKG5kZXYsIGksIG5kZXZfcHJpb190Y19tYXBbaV0pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTJiNzFhMmMwM2RmZTczODNlOGI3NWY0MjA4OGFlYjhhM2IwYzI1NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTE6NDQ6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKaW5kZXggMDRkYWZlYzAyMWI0Zi4uOTMxNGJjYjg1YzIyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaApAQCAtNDk0LDcgJiM0Mzs0OTQsNyBAQCBzdHJ1Y3Qgc3RtbWFjX29wcyB7CiAjZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFwKIAlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgc2V0X2FycF9vZmZsb2FkLCBfX2FyZ3MpCiAjZGVmaW5lIHN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MoX19wcml2LCBfX2FyZ3MuLi4pIFwKLQlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLCBfX2FyZ3MpCiYjNDM7CXN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIG1hYywgZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLCBfX2FyZ3MpCiAKIC8qIFBUUCBhbmQgSFcgVGltZXIgaGVscGVycyAqLwogc3RydWN0IHN0bW1hY19od3RpbWVzdGFtcCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCmluZGV4IDE0Y2FiZTc2ZTUzZWMuLmM5OWQ5YjdlMjZkY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCkBAIC0xMjM3LDYgJiM0MzsxMjM3LDMwIEBAIHN0YXRpYyBpbnQgdGNfcXVlcnlfY2FwcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJfQogfQogCiYjNDM7c3RhdGljIGludCBzdG1tYWNfc2V0X25kZXZfdGNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1OCBudGMsCiYjNDM7CQkJICAgICAgIHN0cnVjdCBuZXRkZXZfdGNfdHhxICp0Y190b190eHEpCiYjNDM7ewomIzQzOwlpbnQgaSwgZXJyOwomIzQzOwomIzQzOwluZXRkZXZfcmVzZXRfdGMobmRldik7CiYjNDM7CWlmICghbnRjKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWVyciA9IG5ldGRldl9zZXRfbnVtX3RjKG5kZXYsIG50Yyk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbnRjOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdTE2IGNvdW50LCBvZmZzZXQ7CiYjNDM7CiYjNDM7CQljb3VudCA9IHRjX3RvX3R4cVtpXS5jb3VudDsKJiM0MzsJCW9mZnNldCA9IHRjX3RvX3R4cVtpXS5vZmZzZXQ7CiYjNDM7CQluZXRkZXZfc2V0X3RjX3F1ZXVlKG5kZXYsIGksIGNvdW50LCBvZmZzZXQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF90Y19tcXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCQkJICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewpAQCAtMTI1MCw0NSAmIzQzOzEyNzQsNjEgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIHN0YXRpYyBpbnQgdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJCQkgICAgc3RydWN0IHRjX21xcHJpb19xb3B0X29mZmxvYWQgKm1xcHJpbykKIHsKJiM0MzsJdW5zaWduZWQgaW50IG5kZXZfbnVtX3R4X3F1ZXVlcywgbnVtX3R4X3F1ZXVlcyA9IDA7CiYjNDM7CXN0cnVjdCBuZXRkZXZfdGNfdHhxIG5kZXZfdGNfdG9fdHhxW1RDX01BWF9RVUVVRV07CiYjNDM7CXN0cnVjdCBuZXRkZXZfdGNfdHhxIHRjX3RvX3R4cVtUQ19NQVhfUVVFVUVdID0ge307CiAJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbXFwcmlvLSZndDtleHRhY2s7CiAJc3RydWN0IHRjX21xcHJpb19xb3B0ICpxb3B0ID0gJmFtcDttcXByaW8tJmd0O3FvcHQ7Ci0JdTMyIG9mZnNldCwgY291bnQsIG51bV9zdGFja190eF9xdWV1ZXMgPSAwOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcHJpdi0mZ3Q7ZGV2OwotCXUzMiBudW1fdGMgPSBxb3B0LSZndDtudW1fdGM7Ci0JaW50IGVycjsKJiM0MzsJdTggbmRldl9wcmlvX3RjX21hcFtUQ19CSVRNQVNLICYjNDM7IDFdOwomIzQzOwlpbnQgaSwgZXJyLCBuZGV2X250YzsKIAotCWlmICghbnVtX3RjKSB7CiYjNDM7CWlmICghcW9wdC0mZ3Q7bnVtX3RjKSB7CiAJCXN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTsKIAkJcmV0dXJuIDA7CiAJfQogCi0JZXJyID0gbmV0ZGV2X3NldF9udW1fdGMobmRldiwgbnVtX3RjKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JZm9yICh1MzIgdGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7Ci0JCW9mZnNldCA9IHFvcHQtJmd0O29mZnNldFt0Y107Ci0JCWNvdW50ID0gcW9wdC0mZ3Q7Y291bnRbdGNdOwotCQludW1fc3RhY2tfdHhfcXVldWVzICYjNDM7PSBjb3VudDsKJiM0MzsJaWYgKHFvcHQtJmd0O251bV90YyAmZ3Q7IEFSUkFZX1NJWkUodGNfdG9fdHhxKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwogCi0JCWVyciA9IG5ldGRldl9zZXRfdGNfcXVldWUobmRldiwgdGMsIGNvdW50LCBvZmZzZXQpOwotCQlpZiAoZXJyKQotCQkJZ290byBlcnJfcmVzZXRfdGM7CiYjNDM7CS8qIHNhdmUgY3VycmVudCB0YyB2YWx1ZXMgZm9yIHJlc2V0ICovCiYjNDM7CW5kZXZfbnRjID0gbmV0ZGV2X2dldF9udW1fdGMobmRldik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKG5kZXYtJmd0O3RjX3RvX3R4cSk7IGkmIzQzOyYjNDM7KQomIzQzOwkJbmRldl90Y190b190eHFbaV0uY29tYmluZWQgPQomIzQzOwkJCVJFQURfT05DRShuZGV2LSZndDt0Y190b190eHFbaV0uY29tYmluZWQpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSYjNDM7JiM0MzspCiYjNDM7CQluZGV2X3ByaW9fdGNfbWFwW2ldID0gUkVBRF9PTkNFKG5kZXYtJmd0O3ByaW9fdGNfbWFwW2ldKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHFvcHQtJmd0O251bV90YzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXRjX3RvX3R4cVtpXSA9IChzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSkgewomIzQzOwkJCS5jb3VudCA9IHFvcHQtJmd0O2NvdW50W2ldLAomIzQzOwkJCS5vZmZzZXQgPSBxb3B0LSZndDtvZmZzZXRbaV0sCiYjNDM7CQl9OwomIzQzOwkJbnVtX3R4X3F1ZXVlcyAmIzQzOz0gcW9wdC0mZ3Q7Y291bnRbaV07CiAJfQogCi0JZXJyID0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBudW1fc3RhY2tfdHhfcXVldWVzKTsKJiM0MzsJZXJyID0gc3RtbWFjX3NldF9uZGV2X3RjcyhuZGV2LCBxb3B0LSZndDtudW1fdGMsIHRjX3RvX3R4cSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGVycm9yX3Jlc2V0X3RjOwomIzQzOwomIzQzOwluZGV2X251bV90eF9xdWV1ZXMgPSBuZGV2LSZndDtyZWFsX251bV90eF9xdWV1ZXM7CiYjNDM7CWVyciA9IG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbnVtX3R4X3F1ZXVlcyk7CiAJaWYgKGVycikKLQkJZ290byBlcnJfcmVzZXRfdGM7CiYjNDM7CQlnb3RvIGVycm9yX3Jlc2V0X3RjOwogCiAJZXJyID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBuZGV2LCBleHRhY2ssCiAJCQkJCSAgICAgIG1xcHJpby0mZ3Q7cHJlZW1wdGlibGVfdGNzKTsKIAlpZiAoZXJyKQotCQlnb3RvIGVycl9yZXNldF90YzsKJiM0MzsJCWdvdG8gZXJyb3JfcmVzZXRfbnVtX3R4X3F1ZXVlczsKIAogCXJldHVybiAwOwogCi1lcnJfcmVzZXRfdGM6Ci0Jc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhuZGV2LCBleHRhY2spOwomIzQzO2Vycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM6CiYjNDM7CW5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbmRldl9udW1fdHhfcXVldWVzKTsKJiM0MztlcnJvcl9yZXNldF90YzoKJiM0MzsJc3RtbWFjX3NldF9uZGV2X3RjcyhuZGV2LCBuZGV2X250YywgbmRldl90Y190b190eHEpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSYjNDM7JiM0MzspCiYjNDM7CQluZXRkZXZfc2V0X3ByaW9fdGNfbWFwKG5kZXYsIGksIG5kZXZfcHJpb190Y19tYXBbaV0pOwogCiAJcmV0dXJuIGVycjsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBhc3Nlc3MgaWYgdGhpcyBwYXRjaCBpcyBldmVuICp3b3J0aCogZnV6emluZy4gV2UgbmVlZCB0byBiZSBzdHJhdGVnaWMgYWJvdXQgd2hlcmUgd2Ugc3BlbmQgb3VyIHRpbWUgYW5kIHJlc291cmNlcy4KCkFscmlnaHQsIHRoZSBmaWxlcyB0b3VjaGVkIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaGAgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY2AuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldGAgZGlyZWN0b3J5IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBOZXR3b3JraW5nIHN0YWNrcyBhcmUgb2Z0ZW4gY29tcGxleCBhbmQgcmlwZSB3aXRoIG9wcG9ydHVuaXRpZXMgZm9yIGZ1enppbmcsIGdpdmVuIHRoZWlyIGlucHV0LXJpY2ggbmF0dXJlLgoKTm93LCB3aGF0IGlzIGBzdG1tYWNgIGV4YWN0bHk/IEFoLCBpdCYjMzk7cyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciDigJMgMTAvMTAwLzEwMDAvRVFPUy4gT2theSwgdGhhdCBoZWxwcyBuYXJyb3cgaXQgZG93bi4gQnV0LCBpcyB0aGlzIGEgbG93LWxldmVsIGhhcmR3YXJlIGRyaXZlciwgdGllZCB0byBzcGVjaWZpYyBBU0lDcyBvciBTb0NzLCBvciBpcyBpdCBwb3RlbnRpYWxseSBtb3JlIGFjY2Vzc2libGUsIG1heWJlIGVtdWxhdGVkIGluIFFFTVUgb3IgdXNhYmxlIGluIG1vcmUgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IFRoYXQmIzM5O3MgYSBjcml0aWNhbCBxdWVzdGlvbi4gQWNjZXNzIGlzIHRoZSBrZXksIG9mIGNvdXJzZS4KCldlJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgc3RtbWFjIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IHNlYXJjaGluZyBmb3IgdXNhZ2Ugb2Ygc3RtbWFjLCB0aGlzIHNob3VsZCBnaXZlIGEgZ29vZCBpZGVhIG9mIGl0cyBhcmNoaXRlY3R1cmUgc3VwcG9ydC4gVGhhdCB3aWxsIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGFueSB2YWx1ZSBpbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGBzdG1tYWNgIGFuZCBRRU1VIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBgc3RtbWFjYCBpcyBhIHN1aXRhYmxlIGV0aGVybmV0IGRyaXZlciBmb3IgYSBwYXJ0aWN1bGFyIHNjZW5hcmlvLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBwaHlzaWNhbCBoYXJkd2FyZSwgZW1iZWRkZWQgU29Dcywgb3IgcG9zc2libHkgZXZlbiBQQ0kgZGV2aWNlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGluc3RydWN0aW9ucy4uLiBhbmQgY2hlY2sgc2VjdGlvbiAyLiBBaCwgcmlnaHQsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4uLiB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyDigJMgdGhlIHVzdWFsIHN1c3BlY3RzIHRoYXQgKndvbiYjMzk7dCogd29yayB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgaW4gUUVNVS4gQnV0IHdhaXQsIGlzIGBTVE1NQUNgLCB0aGF0IFN5bm9wc3lzIERlc2lnbldhcmUgY29yZSBzdHVmZiwgKnNwZWNpZmljYWxseSogdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgQ29yZXMgRXRoZXJuZXQgTUFDIG9yIFNUTWljcm9lbGVjdHJvbmljcyBNQUMg4oCTIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgYW1kNjQ/CgpUaGlzIGZlZWxzIGxpa2UgYSBmYW1pbGlhciBwcm9ibGVtLiBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgZHdjLWVxb3NgLCBgYWxsd2lubmVyLXN1bjhpLWVtYWNgLCBhbmQgYGlteC1mZWNgIGJ1dCB0aG9zZSBhcmUgcHJpbWFyaWx5IGZvciBBUk0gYXJjaGl0ZWN0dXJlcy4gV2hhdCBhYm91dCBnb29kIG9sJiMzOTsgc3RhbmRhcmQgUUVNVSBhbWQ2ND8gSSYjMzk7bSBub3Qgc2VlaW5nIGFuIGltbWVkaWF0ZSBmaXQsIHNvIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgdG8gc2VlICp3aGljaCogYHN0bW1hY2AgZGV2aWNlcyBhY3R1YWxseSBleGlzdCBhbmQgY29uZmlybSBpZiBhbnkgb2YgdGhlIHZpcnR1YWwgZHJpdmVycyBvciBzdGFuZGFyZCBRRU1VIGRldmljZXMgYWN0dWFsbHkgbGV2ZXJhZ2UgaXQuIFJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgd2l0aCBgU1RNTUFDX1BDSWAgYW5kIGBTVE1NQUNfRVRIYOKApgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY0Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM2Mj1zdGF0aWMgdm9pZCBpbnRlbF9ldGhfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2V0aF9wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5Ni1cdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBRVUFSSywgXHUwMDI2cXVhcmtfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ3OT1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQ5ODpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz01Nzg9c3RhdGljIHZvaWQgbG9vbmdzb25fZHdtYWNfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1OTY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU5Ny1cdHsgUENJX0RFVklDRV9EQVRBKExPT05HU09OLCBHTUFDMSwgXHUwMDI2bG9vbmdzb25fZ21hY19wY2lfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjk0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjI9c3RhdGljIHZvaWQgbW90b3Jjb21tX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2OC1cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExOTpcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTkxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBrbm93LCBgc3RtbWFjYCBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBhcyB3ZWxsIGFzIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgaGFyZHdhcmUuIEl0IGhhbmRsZXMgYSByYW5nZSBvZiBkZXZpY2VzOiBQQ0kgZGV2aWNlcyBpbiBJbnRlbCBRdWFyay9FSEwvVEdMLCBMb29uZ3NvbiwgTW90b3Jjb21tLCBhbmQgU1RNTUFDIFBDSSBjb25maWd1cmF0aW9ucywgYW5kIHBsYXRmb3JtIGRldmljZXMvT0YgZGV2aWNlcyBpbiB2YXJpb3VzIFNvQ3MgbGlrZSBBbGx3aW5uZXIsIFJvY2tjaGlwLCBTVE0zMiwgTWVzb24sIGFuZCBUZWdyYS4gQnV0IGEga2V5IHBvaW50IGhlcmUgaXMsIGlzIHRoaXMgYSB2aXJ0dWFsIGRldmljZSBvciBhIGRyaXZlciBmb3IgKnJlYWwqIGhhcmR3YXJlPwoKUmlnaHQsIGl0IHJlcXVpcmVzIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgcmVsaWVzIG9uIFBDSSBkZXZpY2VzIG9yIHBsYXRmb3JtL09GIGRldmljZXMgYXNzb2NpYXRlZCB3aXRoIHNwZWNpZmljIFNvQ3MuIFRoaXMgaXMgaW1wb3J0YW50OiB0aGF0IGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFtZDY0IHN5emthbGxlciBmdXp6aW5nIGluc3RhbmNlcy4gU28sIHRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHN0cmFpZ2h0Zm9yd2FyZCBmdXp6aW5nIHNldHVwcyB3b24mIzM5O3QgZGlyZWN0bHkgY292ZXIgdGhpcyBkcml2ZXIuCgpOb3csIGhvbGQgb24uIENhbiB3ZSBnZXQgYXJvdW5kIHRoaXM/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgd2hldGhlciBRRU1VIGFtZDY0IGFjdHVhbGx5IGhhcyBhbnkgYHN0bW1hY2AgZW11bGF0aW9uLiBPciBpZiwgcG90ZW50aWFsbHksIGBzdG1tYWNgIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHZpcnR1YWwgYnVzZXM7IHNvbWV0aGluZyBsaWtlIG5ldGRldiwgdHVuL3RhcCwgb3IgdXNiIGdhZGdldCBwZXJoYXBzLgoKTm9wZS4gVGhlIGZhY3QgaXMsIGBzdG1tYWNgIGlzIGRlZmluaXRlbHkgYSBkcml2ZXIgZm9yICpwaHlzaWNhbCogRXRoZXJuZXQgTUFDcywgc3BlY2lmaWNhbGx5IHRob3NlIFN5bm9wc3lzIERXTUFDIGltcGxlbWVudGF0aW9ucy4KClNvIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBhbiBgc3RtbWFjYCBuZXRkZXYgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2VyIHNwYWNlLCBlbnRpcmVseSBpbmRlcGVuZGVudCBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIElzIHRoZXJlIGEgdmlydHVhbCBpbnRlcmZhY2Ugb3IgbmV0bGluayBpbnN0YW50aWF0aW9uIG1lY2hhbmlzbSAobGlrZSBydG5sX2xpbmtfb3BzKSB0aGF0IG1pZ2h0IGFsbG93IGl0IHRvIGJlIHZpcnR1YWxseSBzaW11bGF0ZWQ/IFRoaXMgaXMgd2hhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bmxfbGlua19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI2MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsIENoYWluIG9mIGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYHRjX3NldHVwX2R3bWFjNTEwX21xcHJpb2AgZnVuY3Rpb24gaW4gdGhlIGBzdG1tYWNfdGMuY2AgZHJpdmVyIGlzIGFjdHVhbGx5IGJlaW5nIGludm9rZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgc291cmNlIGNvZGUgdG8gdHJhY2Ugd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBtdWx0aS1xdWV1ZSBwcmlvcml0eSBmdW5jdGlvbmFsaXR5IG9uIHRoaXMgc3BlY2lmaWMgZGV2aWNlLCB0aGUgZHdtYWM1MTAuIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHRzIHdoZXJlIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgaXMgaGFwcGVuaW5nLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYW5kIGFueSBhcmd1bWVudHMgcGFzc2VkLCB3aGljaCB3aWxsIHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjX3NldHVwX2R3bWFjNTEwX21xcHJpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEyNjQ9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMjczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTI3NDpzdGF0aWMgaW50IHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMjc1LVx0XHRcdFx0ICAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdF9vZmZsb2FkICptcXByaW8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTM1NT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTM2Mi1cdC5xdWVyeV9jYXBzID0gdGNfcXVlcnlfY2FwcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzNjM6XHQuc2V0dXBfbXFwcmlvID0gdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTM2NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODkxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBhc3N1bWluZyBteSBleHBlcnRpc2UgaW4gdGhpcyBkb21haW46CgoqKk15IFVuZGVyc3RhbmRpbmcgb2YgdGhlIGBkd21hYzUxMF90Y19vcHNgIEFzc2lnbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYGR3bWFjNTEwX3RjX29wc2Agc3RydWN0dXJlIGlzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSBgcHJpdi0mZ3Q7dGNfb3BzYCBwb2ludGVyLiBUaGlzIGlzIGhhcHBlbmluZyBlaXRoZXIgZHVyaW5nIHRoZSBTeXN0ZW0tb24tQ2hpcCAoU29DKSBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlciAoTUFDKSBwcm9iZSBmdW5jdGlvbiwgb3IgZHVyaW5nIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBwaGFzZSB3aXRoaW4gdGhlIFN0bW1hYyBkcml2ZXIuIEVzc2VudGlhbGx5LCB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIFRyYWZmaWMgQ2xhc3MgKFRDKSBvcGVyYXRpb25zIGZvciB0aGUgZHdtYWM1MTAgSVAgY29yZSBpcyBiZWluZyBjb25maWd1cmVkIGFuZCBtYWRlIGF2YWlsYWJsZSB0byB0aGUgZHJpdmVyIGF0IGVpdGhlciBib290dXAsIG9yIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIFRoYXQgc3BlY2lmaWMgJiMzNDt0Y19vcHMmIzM0OyBzdHJ1Y3R1cmUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBoYW5kbGUgVEMgcmVsYXRlZCB0YXNrcyBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHdtYWM1MTBfdGNfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTk5LVx0XHQubW9kZSA9IFx1MDAyNmR3bWFjNF9yaW5nX21vZGVfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjIwMDpcdFx0LnRjID0gXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTIwMS1cdFx0Lm1tYyA9IFx1MDAyNmR3bWFjX21tY19vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTIyMC1cdFx0Lm1vZGUgPSBcdTAwMjZkd21hYzRfcmluZ19tb2RlX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyMjE6XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMjItXHRcdC5tbWMgPSBcdTAwMjZkd21hY19tbWNfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDEtXHRcdC5tb2RlID0gXHUwMDI2ZHdtYWM0X3JpbmdfbW9kZV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQyOlx0XHQudGMgPSBcdTAwMjZkd21hYzUxMF90Y19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQzLVx0XHQubW1jID0gXHUwMDI2ZHdtYWNfbW1jX29wcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYzLVx0XHQubW9kZSA9IE5VTEwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjY0Olx0XHQudGMgPSBcdTAwMjZkd21hYzUxMF90Y19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjY1LVx0XHQubW1jID0gXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODUtXHRcdC5tb2RlID0gTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODY6XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODctXHRcdC5tbWMgPSBcdTAwMjZkd3hnbWFjX21tY19vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oPTY5MT1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo2OTI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC02OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTM0ND1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzRfdGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzU1OmNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNTYtXHQuaW5pdCA9IHRjX2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQ1CgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDYzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBFbGlnaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgY2FyZWZ1bGx5IHJldmlzaXQgU2VjdGlvbiAyIG9mIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zIHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIChuZWdhdGl2ZSBjcml0ZXJpYSkuIFRoZSBrZXkgcGFydCBpczogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6ICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgdG8gYHN0bW1hY2AgZmFsbCB1bmRlciB0aGlzIGV4Y2x1c2lvbi4gSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jYC4gVGhlc2UgZmlsZXMgYXJlIGNsZWFybHkgd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRFdNQUMgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMsIHBoeXNpY2FsIEV0aGVybmV0IGhhcmR3YXJlIOKAkyB0aGluZ3MgbGlrZSB0aGUgRFdNQUMgSVAgY29yZSwgYW5kIGFsc28gc2VlbiBpbiB2YXJpb3VzIFNvQ3MgZnJvbSBJbnRlbCwgTG9vbmdzb24sIE1vdG9yY29tbSwgU1RNMzIsIEFsbHdpbm5lciwgYW5kIFJvY2tjaGlwLgoKQ29uc2lkZXJpbmcgc3RhbmRhcmQgZnV6emluZyBzZXR1cHMgbGlrZSBRRU1VIGFtZDY0IG9yIEdDRSwgdGhpcyBoYXJkd2FyZSBpcyBzaW1wbHkgbm90IGVtdWxhdGVkLiBRRU1VIGdlbmVyYWxseSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldCwgbm90IHRoZSBTeW5vcHN5cyBEV01BQyA1LjEwJiM0MzsgSVAgY29yZSB1c2VkIGJ5IGBzdG1tYWNgLiBUaHVzLCBgc3RtbWFjYCBjYW5ub3QgYmUgcHJvYmVkIG9yIGluc3RhbnRpYXRlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgYW5kIHRoZXJlZm9yZSBmdW5jdGlvbnMgbGlrZSBgdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvYCBjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgc3l6a2FsbGVyLgoKVG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyBjb25maXJtIHRoZSB0cmlhZ2UgcGFyYW1ldGVycy4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcmUgZW1wdHkgbGlzdHMsIHdoaWNoIGlzIGV4cGVjdGVkLgoKSSYjMzk7dmUgZm9ybXVsYXRlZCBhIGNvbmNpc2UgcmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyIChzdG1tYWMpLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIHNldHVwIHBhdGggKGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKS4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIERXTUFDIGhhcmR3YXJlL0FTSUMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7IFRoaXMgaXMgYSBjbGVhciBleHBsYW5hdGlvbi4KCkZpbmFsbHksIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBteSBgc2V0LXJlc3VsdHNgIGFyZ3VtZW50czogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgcmVhc29uaW5nIHdpbGwgYmU6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBpbiB0aGUgaGFyZHdhcmUgVEMgTVFQUklPIG9mZmxvYWQgc2V0dXAgcGF0aCAoYHRjX3NldHVwX2R3bWFjNTEwX21xcHJpb2ApLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgRFdNQUMgaGFyZHdhcmUvQVNJQyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDsKCldpdGggdGhpcyBhc3Nlc3NtZW50IGFuZCBqdXN0aWZpY2F0aW9uLCBJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciwgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgaGFyZHdhcmUgVEMgTVFQUklPIG9mZmxvYWQgaGFuZGxpbmcgKHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIEFTSUMvUENJZS9wbGF0Zm9ybSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDExOjQ1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NDoyMy41Nzg2MjAzOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc1MDcxNzM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBoYXJkd2FyZSBUQyBNUVBSSU8gb2ZmbG9hZCBoYW5kbGluZyAodGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llL3BsYXRmb3JtIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6MjMuNTc4NjI2Nzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODQyNTkwMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MmI3MWEyYzAzZGZlNzM4M2U4Yjc1ZjQyMDg4YWViOGEzYjBjMjU1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTE6NDQ6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXFxuaW5kZXggMDRkYWZlYzAyMWI0Zi4uOTMxNGJjYjg1YzIyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG5AQCAtNDk0LDcgKzQ5NCw3IEBAIHN0cnVjdCBzdG1tYWNfb3BzIHtcXG4gI2RlZmluZSBzdG1tYWNfc2V0X2FycF9vZmZsb2FkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuIFxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBzZXRfYXJwX29mZmxvYWQsIF9fYXJncylcXG4gI2RlZmluZSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuLVxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBmcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MsIF9fYXJncylcXG4rXFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBmcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MsIF9fYXJncylcXG4gXFxuIC8qIFBUUCBhbmQgSFcgVGltZXIgaGVscGVycyAqL1xcbiBzdHJ1Y3Qgc3RtbWFjX2h3dGltZXN0YW1wIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbmluZGV4IDE0Y2FiZTc2ZTUzZWMuLmM5OWQ5YjdlMjZkY2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbkBAIC0xMjM3LDYgKzEyMzcsMzAgQEAgc3RhdGljIGludCB0Y19xdWVyeV9jYXBzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgaW50IHN0bW1hY19zZXRfbmRldl90Y3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHU4IG50YyxcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRkZXZfdGNfdHhxICp0Y190b190eHEpXFxuK3tcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdG5ldGRldl9yZXNldF90YyhuZGV2KTtcXG4rXFx0aWYgKCFudGMpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0ZXJyID0gbmV0ZGV2X3NldF9udW1fdGMobmRldiwgbnRjKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudGM7IGkrKykge1xcbitcXHRcXHR1MTYgY291bnQsIG9mZnNldDtcXG4rXFxuK1xcdFxcdGNvdW50ID0gdGNfdG9fdHhxW2ldLmNvdW50O1xcbitcXHRcXHRvZmZzZXQgPSB0Y190b190eHFbaV0ub2Zmc2V0O1xcbitcXHRcXHRuZXRkZXZfc2V0X3RjX3F1ZXVlKG5kZXYsIGksIGNvdW50LCBvZmZzZXQpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuQEAgLTEyNTAsNDUgKzEyNzQsNjEgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gc3RhdGljIGludCB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IHRjX21xcHJpb19xb3B0X29mZmxvYWQgKm1xcHJpbylcXG4ge1xcbitcXHR1bnNpZ25lZCBpbnQgbmRldl9udW1fdHhfcXVldWVzLCBudW1fdHhfcXVldWVzID0gMDtcXG4rXFx0c3RydWN0IG5ldGRldl90Y190eHEgbmRldl90Y190b190eHFbVENfTUFYX1FVRVVFXTtcXG4rXFx0c3RydWN0IG5ldGRldl90Y190eHEgdGNfdG9fdHhxW1RDX01BWF9RVUVVRV0gPSB7fTtcXG4gXFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbXFwcmlvLVxcdTAwM2VleHRhY2s7XFxuIFxcdHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCA9IFxcdTAwMjZtcXByaW8tXFx1MDAzZXFvcHQ7XFxuLVxcdHUzMiBvZmZzZXQsIGNvdW50LCBudW1fc3RhY2tfdHhfcXVldWVzID0gMDtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwcml2LVxcdTAwM2VkZXY7XFxuLVxcdHUzMiBudW1fdGMgPSBxb3B0LVxcdTAwM2VudW1fdGM7XFxuLVxcdGludCBlcnI7XFxuK1xcdHU4IG5kZXZfcHJpb190Y19tYXBbVENfQklUTUFTSyArIDFdO1xcbitcXHRpbnQgaSwgZXJyLCBuZGV2X250YztcXG4gXFxuLVxcdGlmICghbnVtX3RjKSB7XFxuK1xcdGlmICghcW9wdC1cXHUwMDNlbnVtX3RjKSB7XFxuIFxcdFxcdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGVyciA9IG5ldGRldl9zZXRfbnVtX3RjKG5kZXYsIG51bV90Yyk7XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBlcnI7XFxuLVxcbi1cXHRmb3IgKHUzMiB0YyA9IDA7IHRjIFxcdTAwM2MgbnVtX3RjOyB0YysrKSB7XFxuLVxcdFxcdG9mZnNldCA9IHFvcHQtXFx1MDAzZW9mZnNldFt0Y107XFxuLVxcdFxcdGNvdW50ID0gcW9wdC1cXHUwMDNlY291bnRbdGNdO1xcbi1cXHRcXHRudW1fc3RhY2tfdHhfcXVldWVzICs9IGNvdW50O1xcbitcXHRpZiAocW9wdC1cXHUwMDNlbnVtX3RjIFxcdTAwM2UgQVJSQVlfU0laRSh0Y190b190eHEpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdFxcdGVyciA9IG5ldGRldl9zZXRfdGNfcXVldWUobmRldiwgdGMsIGNvdW50LCBvZmZzZXQpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIGVycl9yZXNldF90YztcXG4rXFx0Lyogc2F2ZSBjdXJyZW50IHRjIHZhbHVlcyBmb3IgcmVzZXQgKi9cXG4rXFx0bmRldl9udGMgPSBuZXRkZXZfZ2V0X251bV90YyhuZGV2KTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobmRldi1cXHUwMDNldGNfdG9fdHhxKTsgaSsrKVxcbitcXHRcXHRuZGV2X3RjX3RvX3R4cVtpXS5jb21iaW5lZCA9XFxuK1xcdFxcdFxcdFJFQURfT05DRShuZGV2LVxcdTAwM2V0Y190b190eHFbaV0uY29tYmluZWQpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSsrKVxcbitcXHRcXHRuZGV2X3ByaW9fdGNfbWFwW2ldID0gUkVBRF9PTkNFKG5kZXYtXFx1MDAzZXByaW9fdGNfbWFwW2ldKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBxb3B0LVxcdTAwM2VudW1fdGM7IGkrKykge1xcbitcXHRcXHR0Y190b190eHFbaV0gPSAoc3RydWN0IG5ldGRldl90Y190eHEpIHtcXG4rXFx0XFx0XFx0LmNvdW50ID0gcW9wdC1cXHUwMDNlY291bnRbaV0sXFxuK1xcdFxcdFxcdC5vZmZzZXQgPSBxb3B0LVxcdTAwM2VvZmZzZXRbaV0sXFxuK1xcdFxcdH07XFxuK1xcdFxcdG51bV90eF9xdWV1ZXMgKz0gcW9wdC1cXHUwMDNlY291bnRbaV07XFxuIFxcdH1cXG4gXFxuLVxcdGVyciA9IG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbnVtX3N0YWNrX3R4X3F1ZXVlcyk7XFxuK1xcdGVyciA9IHN0bW1hY19zZXRfbmRldl90Y3MobmRldiwgcW9wdC1cXHUwMDNlbnVtX3RjLCB0Y190b190eHEpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xcbitcXG4rXFx0bmRldl9udW1fdHhfcXVldWVzID0gbmRldi1cXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xcbitcXHRlcnIgPSBuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKG5kZXYsIG51bV90eF9xdWV1ZXMpO1xcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIGVycl9yZXNldF90YztcXG4rXFx0XFx0Z290byBlcnJvcl9yZXNldF90YztcXG4gXFxuIFxcdGVyciA9IHN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MocHJpdiwgbmRldiwgZXh0YWNrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBtcXByaW8tXFx1MDAzZXByZWVtcHRpYmxlX3Rjcyk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gZXJyX3Jlc2V0X3RjO1xcbitcXHRcXHRnb3RvIGVycm9yX3Jlc2V0X251bV90eF9xdWV1ZXM7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLWVycl9yZXNldF90YzpcXG4tXFx0c3RtbWFjX3Jlc2V0X3RjX21xcHJpbyhuZGV2LCBleHRhY2spO1xcbitlcnJvcl9yZXNldF9udW1fdHhfcXVldWVzOlxcbitcXHRuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKG5kZXYsIG5kZXZfbnVtX3R4X3F1ZXVlcyk7XFxuK2Vycm9yX3Jlc2V0X3RjOlxcbitcXHRzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIG5kZXZfbnRjLCBuZGV2X3RjX3RvX3R4cSk7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5kZXZfcHJpb190Y19tYXApOyBpKyspXFxuK1xcdFxcdG5ldGRldl9zZXRfcHJpb190Y19tYXAobmRldiwgaSwgbmRldl9wcmlvX3RjX21hcFtpXSk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ0OjI0LjE2MzU3MTcyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTYxNjU3NTI3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBoYXJkd2FyZSBUQyBNUVBSSU8gb2ZmbG9hZCBoYW5kbGluZyAodGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llL3BsYXRmb3JtIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MmI3MWEyYzAzZGZlNzM4M2U4Yjc1ZjQyMDg4YWViOGEzYjBjMjU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxMTo0NDoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuaW5kZXggMDRkYWZlYzAyMWI0Zi4uOTMxNGJjYjg1YzIyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtNDk0LDcgKzQ5NCw3IEBAIHN0cnVjdCBzdG1tYWNfb3BzIHtcbiAjZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIG1hYywgc2V0X2FycF9vZmZsb2FkLCBfX2FyZ3MpXG4gI2RlZmluZSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuLVx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBtYWMsIGZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcywgX19hcmdzKVxuK1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBmcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MsIF9fYXJncylcbiBcbiAvKiBQVFAgYW5kIEhXIFRpbWVyIGhlbHBlcnMgKi9cbiBzdHJ1Y3Qgc3RtbWFjX2h3dGltZXN0YW1wIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5pbmRleCAxNGNhYmU3NmU1M2VjLi5jOTlkOWI3ZTI2ZGNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5AQCAtMTIzNyw2ICsxMjM3LDMwIEBAIHN0YXRpYyBpbnQgdGNfcXVlcnlfY2FwcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyBpbnQgc3RtbWFjX3NldF9uZGV2X3RjcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTggbnRjLFxuK1x0XHRcdCAgICAgICBzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSAqdGNfdG9fdHhxKVxuK3tcbitcdGludCBpLCBlcnI7XG4rXG4rXHRuZXRkZXZfcmVzZXRfdGMobmRldik7XG4rXHRpZiAoIW50YylcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudGMpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG50YzsgaSsrKSB7XG4rXHRcdHUxNiBjb3VudCwgb2Zmc2V0O1xuK1xuK1x0XHRjb3VudCA9IHRjX3RvX3R4cVtpXS5jb3VudDtcbitcdFx0b2Zmc2V0ID0gdGNfdG9fdHhxW2ldLm9mZnNldDtcbitcdFx0bmV0ZGV2X3NldF90Y19xdWV1ZShuZGV2LCBpLCBjb3VudCwgb2Zmc2V0KTtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzdG1tYWNfcmVzZXRfdGNfbXFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbkBAIC0xMjUwLDQ1ICsxMjc0LDYxIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF90Y19tcXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gc3RhdGljIGludCB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdF9vZmZsb2FkICptcXByaW8pXG4ge1xuK1x0dW5zaWduZWQgaW50IG5kZXZfbnVtX3R4X3F1ZXVlcywgbnVtX3R4X3F1ZXVlcyA9IDA7XG4rXHRzdHJ1Y3QgbmV0ZGV2X3RjX3R4cSBuZGV2X3RjX3RvX3R4cVtUQ19NQVhfUVVFVUVdO1xuK1x0c3RydWN0IG5ldGRldl90Y190eHEgdGNfdG9fdHhxW1RDX01BWF9RVUVVRV0gPSB7fTtcbiBcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IG1xcHJpby1cdTAwM2VleHRhY2s7XG4gXHRzdHJ1Y3QgdGNfbXFwcmlvX3FvcHQgKnFvcHQgPSBcdTAwMjZtcXByaW8tXHUwMDNlcW9wdDtcbi1cdHUzMiBvZmZzZXQsIGNvdW50LCBudW1fc3RhY2tfdHhfcXVldWVzID0gMDtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4tXHR1MzIgbnVtX3RjID0gcW9wdC1cdTAwM2VudW1fdGM7XG4tXHRpbnQgZXJyO1xuK1x0dTggbmRldl9wcmlvX3RjX21hcFtUQ19CSVRNQVNLICsgMV07XG4rXHRpbnQgaSwgZXJyLCBuZGV2X250YztcbiBcbi1cdGlmICghbnVtX3RjKSB7XG4rXHRpZiAoIXFvcHQtXHUwMDNlbnVtX3RjKSB7XG4gXHRcdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRlcnIgPSBuZXRkZXZfc2V0X251bV90YyhuZGV2LCBudW1fdGMpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGZvciAodTMyIHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuLVx0XHRvZmZzZXQgPSBxb3B0LVx1MDAzZW9mZnNldFt0Y107XG4tXHRcdGNvdW50ID0gcW9wdC1cdTAwM2Vjb3VudFt0Y107XG4tXHRcdG51bV9zdGFja190eF9xdWV1ZXMgKz0gY291bnQ7XG4rXHRpZiAocW9wdC1cdTAwM2VudW1fdGMgXHUwMDNlIEFSUkFZX1NJWkUodGNfdG9fdHhxKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRcdGVyciA9IG5ldGRldl9zZXRfdGNfcXVldWUobmRldiwgdGMsIGNvdW50LCBvZmZzZXQpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gZXJyX3Jlc2V0X3RjO1xuK1x0Lyogc2F2ZSBjdXJyZW50IHRjIHZhbHVlcyBmb3IgcmVzZXQgKi9cbitcdG5kZXZfbnRjID0gbmV0ZGV2X2dldF9udW1fdGMobmRldik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG5kZXYtXHUwMDNldGNfdG9fdHhxKTsgaSsrKVxuK1x0XHRuZGV2X3RjX3RvX3R4cVtpXS5jb21iaW5lZCA9XG4rXHRcdFx0UkVBRF9PTkNFKG5kZXYtXHUwMDNldGNfdG9fdHhxW2ldLmNvbWJpbmVkKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobmRldl9wcmlvX3RjX21hcCk7IGkrKylcbitcdFx0bmRldl9wcmlvX3RjX21hcFtpXSA9IFJFQURfT05DRShuZGV2LVx1MDAzZXByaW9fdGNfbWFwW2ldKTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHFvcHQtXHUwMDNlbnVtX3RjOyBpKyspIHtcbitcdFx0dGNfdG9fdHhxW2ldID0gKHN0cnVjdCBuZXRkZXZfdGNfdHhxKSB7XG4rXHRcdFx0LmNvdW50ID0gcW9wdC1cdTAwM2Vjb3VudFtpXSxcbitcdFx0XHQub2Zmc2V0ID0gcW9wdC1cdTAwM2VvZmZzZXRbaV0sXG4rXHRcdH07XG4rXHRcdG51bV90eF9xdWV1ZXMgKz0gcW9wdC1cdTAwM2Vjb3VudFtpXTtcbiBcdH1cbiBcbi1cdGVyciA9IG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMobmRldiwgbnVtX3N0YWNrX3R4X3F1ZXVlcyk7XG4rXHRlcnIgPSBzdG1tYWNfc2V0X25kZXZfdGNzKG5kZXYsIHFvcHQtXHUwMDNlbnVtX3RjLCB0Y190b190eHEpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJvcl9yZXNldF90YztcbitcbitcdG5kZXZfbnVtX3R4X3F1ZXVlcyA9IG5kZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuK1x0ZXJyID0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBudW1fdHhfcXVldWVzKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gZXJyX3Jlc2V0X3RjO1xuK1x0XHRnb3RvIGVycm9yX3Jlc2V0X3RjO1xuIFxuIFx0ZXJyID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBuZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIG1xcHJpby1cdTAwM2VwcmVlbXB0aWJsZV90Y3MpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfcmVzZXRfdGM7XG4rXHRcdGdvdG8gZXJyb3JfcmVzZXRfbnVtX3R4X3F1ZXVlcztcbiBcbiBcdHJldHVybiAwO1xuIFxuLWVycl9yZXNldF90Yzpcbi1cdHN0bW1hY19yZXNldF90Y19tcXByaW8obmRldiwgZXh0YWNrKTtcbitlcnJvcl9yZXNldF9udW1fdHhfcXVldWVzOlxuK1x0bmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcyhuZGV2LCBuZGV2X251bV90eF9xdWV1ZXMpO1xuK2Vycm9yX3Jlc2V0X3RjOlxuK1x0c3RtbWFjX3NldF9uZGV2X3RjcyhuZGV2LCBuZGV2X250YywgbmRldl90Y190b190eHEpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuZGV2X3ByaW9fdGNfbWFwKTsgaSsrKVxuK1x0XHRuZXRkZXZfc2V0X3ByaW9fdGNfbWFwKG5kZXYsIGksIG5kZXZfcHJpb190Y19tYXBbaV0pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NDoyNC4xNjM1NzM3OTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQyMDE5ODkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gYXNzZXNzIGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcuIFdlIG5lZWQgdG8gYmUgc3RyYXRlZ2ljIGFib3V0IHdoZXJlIHdlIHNwZW5kIG91ciB0aW1lIGFuZCByZXNvdXJjZXMuXG5cbkFscmlnaHQsIHRoZSBmaWxlcyB0b3VjaGVkIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaGAgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY2AuIFRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0YCBkaXJlY3RvcnkgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuIE5ldHdvcmtpbmcgc3RhY2tzIGFyZSBvZnRlbiBjb21wbGV4IGFuZCByaXBlIHdpdGggb3Bwb3J0dW5pdGllcyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlaXIgaW5wdXQtcmljaCBuYXR1cmUuXG5cbk5vdywgd2hhdCBpcyBgc3RtbWFjYCBleGFjdGx5PyBBaCwgaXQncyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciDigJMgMTAvMTAwLzEwMDAvRVFPUy4gT2theSwgdGhhdCBoZWxwcyBuYXJyb3cgaXQgZG93bi4gQnV0LCBpcyB0aGlzIGEgbG93LWxldmVsIGhhcmR3YXJlIGRyaXZlciwgdGllZCB0byBzcGVjaWZpYyBBU0lDcyBvciBTb0NzLCBvciBpcyBpdCBwb3RlbnRpYWxseSBtb3JlIGFjY2Vzc2libGUsIG1heWJlIGVtdWxhdGVkIGluIFFFTVUgb3IgdXNhYmxlIGluIG1vcmUgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IFRoYXQncyBhIGNyaXRpY2FsIHF1ZXN0aW9uLiBBY2Nlc3MgaXMgdGhlIGtleSwgb2YgY291cnNlLlxuXG5XZSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgc3RtbWFjIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgc2VhcmNoaW5nIGZvciB1c2FnZSBvZiBzdG1tYWMsIHRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIGlkZWEgb2YgaXRzIGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBUaGF0IHdpbGwgcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgdmFsdWUgaW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6NDUuNTgzNzc1MTA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjQ2NTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6NDUuOTI2MjQ3OTAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODQ0MDg4NzE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGBzdG1tYWNgIGFuZCBRRU1VIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYHN0bW1hY2AgaXMgYSBzdWl0YWJsZSBldGhlcm5ldCBkcml2ZXIgZm9yIGEgcGFydGljdWxhciBzY2VuYXJpby4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBwaHlzaWNhbCBoYXJkd2FyZSwgZW1iZWRkZWQgU29Dcywgb3IgcG9zc2libHkgZXZlbiBQQ0kgZGV2aWNlcy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLi4uIGFuZCBjaGVjayBzZWN0aW9uIDIuIEFoLCByaWdodCwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uIHRob3NlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMgdGhhdCAqd29uJ3QqIHdvcmsgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIGluIFFFTVUuIEJ1dCB3YWl0LCBpcyBgU1RNTUFDYCwgdGhhdCBTeW5vcHN5cyBEZXNpZ25XYXJlIGNvcmUgc3R1ZmYsICpzcGVjaWZpY2FsbHkqIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIENvcmVzIEV0aGVybmV0IE1BQyBvciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIOKAkyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFtZDY0P1xuXG5UaGlzIGZlZWxzIGxpa2UgYSBmYW1pbGlhciBwcm9ibGVtLiBJIGtub3cgUUVNVSBzdXBwb3J0cyB0aGluZ3MgbGlrZSBgZHdjLWVxb3NgLCBgYWxsd2lubmVyLXN1bjhpLWVtYWNgLCBhbmQgYGlteC1mZWNgIGJ1dCB0aG9zZSBhcmUgcHJpbWFyaWx5IGZvciBBUk0gYXJjaGl0ZWN0dXJlcy4gV2hhdCBhYm91dCBnb29kIG9sJyBzdGFuZGFyZCBRRU1VIGFtZDY0PyBJJ20gbm90IHNlZWluZyBhbiBpbW1lZGlhdGUgZml0LCBzbyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayB0byBzZWUgKndoaWNoKiBgc3RtbWFjYCBkZXZpY2VzIGFjdHVhbGx5IGV4aXN0IGFuZCBjb25maXJtIGlmIGFueSBvZiB0aGUgdmlydHVhbCBkcml2ZXJzIG9yIHN0YW5kYXJkIFFFTVUgZGV2aWNlcyBhY3R1YWxseSBsZXZlcmFnZSBpdC4gUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY2x1ZSB3aXRoIGBTVE1NQUNfUENJYCBhbmQgYFNUTU1BQ19FVEhg4oCmXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDQ6NTQuMzY3MTM4MzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MjcyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI2NDpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzNjI9c3RhdGljIHZvaWQgaW50ZWxfZXRoX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBRVUFSSywgXFx1MDAyNnF1YXJrX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ3OT1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQ5ODpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz01Nzg9c3RhdGljIHZvaWQgbG9vbmdzb25fZHdtYWNfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1OTY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTctXFx0eyBQQ0lfREVWSUNFX0RBVEEoTE9PTkdTT04sIEdNQUMxLCBcXHUwMDI2bG9vbmdzb25fZ21hY19wY2lfaW5mbykgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI2ND1zdGF0aWMgaW50IG1vdG9yY29tbV9zZXR1cF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkzOnN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Mj1zdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2OC1cXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NT1RPUkNPTU0sIDB4NjgwMSkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTk6XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOTI9c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDQtXFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ0OjU0LjQxODY3MzY5N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NjUyNzU5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHN0bW1hY2AgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBrbm93LCBgc3RtbWFjYCBpcyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBhcyB3ZWxsIGFzIFNUTWljcm9lbGVjdHJvbmljcyBNQUMgaGFyZHdhcmUuIEl0IGhhbmRsZXMgYSByYW5nZSBvZiBkZXZpY2VzOiBQQ0kgZGV2aWNlcyBpbiBJbnRlbCBRdWFyay9FSEwvVEdMLCBMb29uZ3NvbiwgTW90b3Jjb21tLCBhbmQgU1RNTUFDIFBDSSBjb25maWd1cmF0aW9ucywgYW5kIHBsYXRmb3JtIGRldmljZXMvT0YgZGV2aWNlcyBpbiB2YXJpb3VzIFNvQ3MgbGlrZSBBbGx3aW5uZXIsIFJvY2tjaGlwLCBTVE0zMiwgTWVzb24sIGFuZCBUZWdyYS4gQnV0IGEga2V5IHBvaW50IGhlcmUgaXMsIGlzIHRoaXMgYSB2aXJ0dWFsIGRldmljZSBvciBhIGRyaXZlciBmb3IgKnJlYWwqIGhhcmR3YXJlP1xuXG5SaWdodCwgaXQgcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCByZWxpZXMgb24gUENJIGRldmljZXMgb3IgcGxhdGZvcm0vT0YgZGV2aWNlcyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWMgU29Dcy4gVGhpcyBpcyBpbXBvcnRhbnQ6IHRoYXQgaGFyZHdhcmUgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhbWQ2NCBzeXprYWxsZXIgZnV6emluZyBpbnN0YW5jZXMuIFNvLCB0aGUgaW1wbGljYXRpb24gaXMgdGhhdCBzdHJhaWdodGZvcndhcmQgZnV6emluZyBzZXR1cHMgd29uJ3QgZGlyZWN0bHkgY292ZXIgdGhpcyBkcml2ZXIuXG5cbk5vdywgaG9sZCBvbi4gQ2FuIHdlIGdldCBhcm91bmQgdGhpcz8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIFFFTVUgYW1kNjQgYWN0dWFsbHkgaGFzIGFueSBgc3RtbWFjYCBlbXVsYXRpb24uIE9yIGlmLCBwb3RlbnRpYWxseSwgYHN0bW1hY2AgY291bGQgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggdmlydHVhbCBidXNlczsgc29tZXRoaW5nIGxpa2UgbmV0ZGV2LCB0dW4vdGFwLCBvciB1c2IgZ2FkZ2V0IHBlcmhhcHMuXG5cbk5vcGUuIFRoZSBmYWN0IGlzLCBgc3RtbWFjYCBpcyBkZWZpbml0ZWx5IGEgZHJpdmVyIGZvciAqcGh5c2ljYWwqIEV0aGVybmV0IE1BQ3MsIHNwZWNpZmljYWxseSB0aG9zZSBTeW5vcHN5cyBEV01BQyBpbXBsZW1lbnRhdGlvbnMuXG5cblNvIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBhbiBgc3RtbWFjYCBuZXRkZXYgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2VyIHNwYWNlLCBlbnRpcmVseSBpbmRlcGVuZGVudCBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIElzIHRoZXJlIGEgdmlydHVhbCBpbnRlcmZhY2Ugb3IgbmV0bGluayBpbnN0YW50aWF0aW9uIG1lY2hhbmlzbSAobGlrZSBydG5sX2xpbmtfb3BzKSB0aGF0IG1pZ2h0IGFsbG93IGl0IHRvIGJlIHZpcnR1YWxseSBzaW11bGF0ZWQ/IFRoaXMgaXMgd2hhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU5MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NDo1OC45ODM5NTMwODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4NjEyMTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bmxfbGlua19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ0OjU5LjAzMzgyMzEyMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwNDg3MTg0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsIENoYWluIG9mIGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgdGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvYCBmdW5jdGlvbiBpbiB0aGUgYHN0bW1hY190Yy5jYCBkcml2ZXIgaXMgYWN0dWFsbHkgYmVpbmcgaW52b2tlZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIHRvIHRyYWNlIHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyByZWxhdGVkIHRvIHRoZSBtdWx0aS1xdWV1ZSBwcmlvcml0eSBmdW5jdGlvbmFsaXR5IG9uIHRoaXMgc3BlY2lmaWMgZGV2aWNlLCB0aGUgZHdtYWM1MTAuIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHRzIHdoZXJlIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgaXMgaGFwcGVuaW5nLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYW5kIGFueSBhcmd1bWVudHMgcGFzc2VkLCB3aGljaCB3aWxsIHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBkZXBlbmRlbmNpZXMuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjYzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDU6MDUuMDgyNTQ0MzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDg2MTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjX3NldHVwX2R3bWFjNTEwX21xcHJpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMjY0PXN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF90Y19tcXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMjczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEyNzQ6c3RhdGljIGludCB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEyNzUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdF9vZmZsb2FkICptcXByaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzU1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNjItXFx0LnF1ZXJ5X2NhcHMgPSB0Y19xdWVyeV9jYXBzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzNjM6XFx0LnNldHVwX21xcHJpbyA9IHRjX3NldHVwX2R3bWFjNTEwX21xcHJpbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzY0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ1OjA1LjEzMjY0MDU1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjA3OTUyMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBhc3N1bWluZyBteSBleHBlcnRpc2UgaW4gdGhpcyBkb21haW46XG5cbioqTXkgVW5kZXJzdGFuZGluZyBvZiB0aGUgYGR3bWFjNTEwX3RjX29wc2AgQXNzaWdubWVudCoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYGR3bWFjNTEwX3RjX29wc2Agc3RydWN0dXJlIGlzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSBgcHJpdi1cdTAwM2V0Y19vcHNgIHBvaW50ZXIuIFRoaXMgaXMgaGFwcGVuaW5nIGVpdGhlciBkdXJpbmcgdGhlIFN5c3RlbS1vbi1DaGlwIChTb0MpIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyIChNQUMpIHByb2JlIGZ1bmN0aW9uLCBvciBkdXJpbmcgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHBoYXNlIHdpdGhpbiB0aGUgU3RtbWFjIGRyaXZlci4gRXNzZW50aWFsbHksIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gVHJhZmZpYyBDbGFzcyAoVEMpIG9wZXJhdGlvbnMgZm9yIHRoZSBkd21hYzUxMCBJUCBjb3JlIGlzIGJlaW5nIGNvbmZpZ3VyZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBkcml2ZXIgYXQgZWl0aGVyIGJvb3R1cCwgb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZS4gVGhhdCBzcGVjaWZpYyBcInRjX29wc1wiIHN0cnVjdHVyZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSBjb3JlIGltcGxlbWVudGF0aW9ucyB0aGF0IGhhbmRsZSBUQyByZWxhdGVkIHRhc2tzIGZvciB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODkxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTE6NDU6MDkuNzQwNTk3MDgxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIxOTMyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHdtYWM1MTBfdGNfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTk5LVxcdFxcdC5tb2RlID0gXFx1MDAyNmR3bWFjNF9yaW5nX21vZGVfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyMDA6XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjAxLVxcdFxcdC5tbWMgPSBcXHUwMDI2ZHdtYWNfbW1jX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMjAtXFx0XFx0Lm1vZGUgPSBcXHUwMDI2ZHdtYWM0X3JpbmdfbW9kZV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjIyMTpcXHRcXHQudGMgPSBcXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMjItXFx0XFx0Lm1tYyA9IFxcdTAwMjZkd21hY19tbWNfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI0MS1cXHRcXHQubW9kZSA9IFxcdTAwMjZkd21hYzRfcmluZ19tb2RlX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQyOlxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI0My1cXHRcXHQubW1jID0gXFx1MDAyNmR3bWFjX21tY19vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYzLVxcdFxcdC5tb2RlID0gTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjY0OlxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2NS1cXHRcXHQubW1jID0gXFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODUtXFx0XFx0Lm1vZGUgPSBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODY6XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjg3LVxcdFxcdC5tbWMgPSBcXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oPTY5MT1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NjkyOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzNDQ9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTM1NTpjb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTM1Ni1cXHQuaW5pdCA9IHRjX2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ1OjA5LjkxMjc5NzQ0OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDQxNjQ5Mzg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGNhcmVmdWxseSByZXZpc2l0IFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIGluc3RydWN0aW9ucyByZWdhcmRpbmcgd2hlbiB0byBtYXJrIHNvbWV0aGluZyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCAobmVnYXRpdmUgY3JpdGVyaWEpLiBUaGUga2V5IHBhcnQgaXM6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgdG8gYHN0bW1hY2AgZmFsbCB1bmRlciB0aGlzIGV4Y2x1c2lvbi4gSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jYC4gVGhlc2UgZmlsZXMgYXJlIGNsZWFybHkgd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRFdNQUMgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMsIHBoeXNpY2FsIEV0aGVybmV0IGhhcmR3YXJlIOKAkyB0aGluZ3MgbGlrZSB0aGUgRFdNQUMgSVAgY29yZSwgYW5kIGFsc28gc2VlbiBpbiB2YXJpb3VzIFNvQ3MgZnJvbSBJbnRlbCwgTG9vbmdzb24sIE1vdG9yY29tbSwgU1RNMzIsIEFsbHdpbm5lciwgYW5kIFJvY2tjaGlwLlxuXG5Db25zaWRlcmluZyBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcyBsaWtlIFFFTVUgYW1kNjQgb3IgR0NFLCB0aGlzIGhhcmR3YXJlIGlzIHNpbXBseSBub3QgZW11bGF0ZWQuIFFFTVUgZ2VuZXJhbGx5IGVtdWxhdGVzIHRoaW5ncyBsaWtlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIGFuZCB2aXJ0aW8tbmV0LCBub3QgdGhlIFN5bm9wc3lzIERXTUFDIDUuMTArIElQIGNvcmUgdXNlZCBieSBgc3RtbWFjYC4gVGh1cywgYHN0bW1hY2AgY2Fubm90IGJlIHByb2JlZCBvciBpbnN0YW50aWF0ZWQgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIGFuZCB0aGVyZWZvcmUgZnVuY3Rpb25zIGxpa2UgYHRjX3NldHVwX2R3bWFjNTEwX21xcHJpb2AgY2Fubm90IGJlIGV4ZWN1dGVkIGJ5IHN5emthbGxlci5cblxuVG8gYmUgdGhvcm91Z2gsIGxldCdzIGNvbmZpcm0gdGhlIHRyaWFnZSBwYXJhbWV0ZXJzLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NC4gYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIFRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFyZSBlbXB0eSBsaXN0cywgd2hpY2ggaXMgZXhwZWN0ZWQuXG5cbkkndmUgZm9ybXVsYXRlZCBhIGNvbmNpc2UgcmVhc29uaW5nOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyIChzdG1tYWMpLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIHNldHVwIHBhdGggKGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKS4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIERXTUFDIGhhcmR3YXJlL0FTSUMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiIFRoaXMgaXMgYSBjbGVhciBleHBsYW5hdGlvbi5cblxuRmluYWxseSwgSSdsbCBkb3VibGUtY2hlY2sgbXkgYHNldC1yZXN1bHRzYCBhcmd1bWVudHM6IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYEZvY3VzU3ltYm9sczogW11gLCBgRW5hYmxlQ29uZmlnczogW11gLCBhbmQgdGhlIHJlYXNvbmluZyB3aWxsIGJlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyIChzdG1tYWMpLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIHNldHVwIHBhdGggKGB0Y19zZXR1cF9kd21hYzUxMF9tcXByaW9gKS4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIERXTUFDIGhhcmR3YXJlL0FTSUMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiXG5cbldpdGggdGhpcyBhc3Nlc3NtZW50IGFuZCBqdXN0aWZpY2F0aW9uLCBJJ20gY29uZmlkZW50IGluIGNhbGxpbmcgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNDUsIk91dHB1dFRva2VucyI6MTIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDExOjQ1OjIwLjMyOTI5NjA0MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBoYXJkd2FyZSBUQyBNUVBSSU8gb2ZmbG9hZCBoYW5kbGluZyAodGNfc2V0dXBfZHdtYWM1MTBfbXFwcmlvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llL3BsYXRmb3JtIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGhhcmR3YXJlIFRDIE1RUFJJTyBvZmZsb2FkIGhhbmRsaW5nICh0Y19zZXR1cF9kd21hYzUxMF9tcXByaW8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDL1BDSWUvcGxhdGZvcm0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxMTo0NToyMC4zMjkzMjYzMjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow4npc4[1] Phase: Running StartedAt: 2026-09-04 11:45:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4npc4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 11:45:32 +0000 UTC FinishedAt: 2026-09-04 11:45:36 +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,}