Name: series-workflow2tthf Phase: Failed StartedAt: 2026-06-27 01:41:19 +0000 UTC FinishedAt: 2026-06-27 01:54:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tthf[0] Phase: Succeeded StartedAt: 2026-06-27 01:41:19 +0000 UTC FinishedAt: 2026-06-27 01:54:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tthf[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 01:41:19 +0000 UTC FinishedAt: 2026-06-27 01:54:40 +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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGdpYW5mYXIuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBGcmVlc2NhbGUgU29DcyAoTVBDODN4eCwgTVBDODV4eCwgTVBDODZ4eCwgTFMxMDIxQSkuIFRoaXMgY29kZSBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSB3aXRoIGRlZmF1bHQgbWFjaGluZSB0eXBlcykgYXMgaXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgU29DIGVtdWxhdGlvbiB0byBiZSBwcm9iZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjUzOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCAzMjcxZGU1ODQ0Zjg0Yi4uODkyMTVlMWRkYzJkYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtNDY5LDEwICYjNDM7NDY5LDEzIEBAIHN0YXRpYyB2b2lkIGZyZWVfZ2Zhcl9kZXYoc3RydWN0IGdmYXJfcHJpdmF0ZSAqcHJpdilcbiB7XG4gXHRpbnQgaSwgajtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlbnVtX2dycHM7IGkmIzQzOyYjNDM7KVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWEdST1VQUzsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEdGQVJfTlVNX0lSUVM7IGomIzQzOyYjNDM7KSB7XG4tXHRcdFx0a2ZyZWUocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pO1xuLVx0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbiYjNDM7XHRcdFx0aWYgKHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdKSB7XG4mIzQzO1x0XHRcdFx0aXJxX2Rpc3Bvc2VfbWFwcGluZyhwcml2LVx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXS1cdTAwM2VpcnEpO1xuJiM0MztcdFx0XHRcdGtmcmVlKHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdKTtcbiYjNDM7XHRcdFx0XHRwcml2LVx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0ZnJlZV9uZXRkZXYocHJpdi1cdTAwM2VuZGV2KTtcbkBAIC02MTYsNyAmIzQzOzYxOSw3IEBAIHN0YXRpYyBwaHlfaW50ZXJmYWNlX3QgZ2Zhcl9nZXRfaW50ZXJmYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbiB7XG4gXHRjb25zdCBjaGFyICptb2RlbDtcbi1cdGludCBlcnIgPSAwLCBpO1xuJiM0MztcdGludCBlcnIgPSAwLCBpLCBqO1xuIFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xuIFx0c3RydWN0IGdmYXJfcHJpdmF0ZSAqcHJpdiA9IE5VTEw7XG5AQCAtNzAyLDggJiM0Mzs3MDUsMTEgQEAgc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbiBcdHByaXYtXHUwMDNlcnhfbGlzdC5jb3VudCA9IDA7XG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcnhfcXVldWVfYWNjZXNzKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWEdST1VQUzsgaSYjNDM7JiM0MzspXG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYR1JPVVBTOyBpJiM0MzsmIzQzOykge1xuIFx0XHRwcml2LVx1MDAzZWdmYXJncnBbaV0ucmVncyA9IE5VTEw7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBHRkFSX05VTV9JUlFTOyBqJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0gPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovXG4gXHRpZiAocHJpdi1cdTAwM2Vtb2RlID09IE1RX01HX01PREUpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgRXRoZXJuZXQgZHJpdmVyIChnaWFuZmFyLmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MgKE1QQzgzeHgsIE1QQzg1eHgsIE1QQzg2eHgsIExTMTAyMUEpLiBUaGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUgd2l0aCBkZWZhdWx0IG1hY2hpbmUgdHlwZXMpIGFzIGl0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIFNvQyBlbXVsYXRpb24gdG8gYmUgcHJvYmVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVuIDI3IDAxOjUzOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKaW5kZXggMzI3MWRlNTg0NGY4NGIuLjg5MjE1ZTFkZGMyZGIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKQEAgLTQ2OSwxMCAmIzQzOzQ2OSwxMyBAQCBzdGF0aWMgdm9pZCBmcmVlX2dmYXJfZGV2KHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYpCiB7CiAJaW50IGksIGo7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7bnVtX2dycHM7IGkmIzQzOyYjNDM7KQomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYR1JPVVBTOyBpJiM0MzsmIzQzOykKIAkJZm9yIChqID0gMDsgaiAmbHQ7IEdGQVJfTlVNX0lSUVM7IGomIzQzOyYjNDM7KSB7Ci0JCQlrZnJlZShwcml2LSZndDtnZmFyZ3JwW2ldLmlycWluZm9bal0pOwotCQkJcHJpdi0mZ3Q7Z2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDsKJiM0MzsJCQlpZiAocHJpdi0mZ3Q7Z2ZhcmdycFtpXS5pcnFpbmZvW2pdKSB7CiYjNDM7CQkJCWlycV9kaXNwb3NlX21hcHBpbmcocHJpdi0mZ3Q7Z2ZhcmdycFtpXS5pcnFpbmZvW2pdLSZndDtpcnEpOwomIzQzOwkJCQlrZnJlZShwcml2LSZndDtnZmFyZ3JwW2ldLmlycWluZm9bal0pOwomIzQzOwkJCQlwcml2LSZndDtnZmFyZ3JwW2ldLmlycWluZm9bal0gPSBOVUxMOwomIzQzOwkJCX0KIAkJfQogCiAJZnJlZV9uZXRkZXYocHJpdi0mZ3Q7bmRldik7CkBAIC02MTYsNyAmIzQzOzYxOSw3IEBAIHN0YXRpYyBwaHlfaW50ZXJmYWNlX3QgZ2Zhcl9nZXRfaW50ZXJmYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IGdmYXJfb2ZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKipwZGV2KQogewogCWNvbnN0IGNoYXIgKm1vZGVsOwotCWludCBlcnIgPSAwLCBpOwomIzQzOwlpbnQgZXJyID0gMCwgaSwgajsKIAlwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMOwogCXN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYgPSBOVUxMOwpAQCAtNzAyLDggJiM0Mzs3MDUsMTEgQEAgc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldikKIAlwcml2LSZndDtyeF9saXN0LmNvdW50ID0gMDsKIAltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7cnhfcXVldWVfYWNjZXNzKTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBNQVhHUk9VUFM7IGkmIzQzOyYjNDM7KQomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYR1JPVVBTOyBpJiM0MzsmIzQzOykgewogCQlwcml2LSZndDtnZmFyZ3JwW2ldLnJlZ3MgPSBOVUxMOwomIzQzOwkJZm9yIChqID0gMDsgaiAmbHQ7IEdGQVJfTlVNX0lSUVM7IGomIzQzOyYjNDM7KQomIzQzOwkJCXByaXYtJmd0O2dmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7CiYjNDM7CX0KIAogCS8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovCiAJaWYgKHByaXYtJmd0O21vZGUgPT0gTVFfTUdfTU9ERSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEdpYW5mYXIgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jYCkuIFRoZSBjb3JlIGNoYW5nZXMgYXJlIHdpdGhpbiBgZnJlZV9nZmFyX2RldmAgYW5kIGBnZmFyX29mX2luaXRgLiBJIHNlZSB0aGUgbG9vcCBib3VuZCBpbiBgZnJlZV9nZmFyX2RldmAgaGFzIGJlZW4gZXhwYW5kZWQgZnJvbSBgcHJpdi0mZ3Q7bnVtX2dycHNgIHRvIGBNQVhHUk9VUFNgLCBhbmQgbm93IHRoZXJlJiMzOTtzIGFuIGBpcnFfZGlzcG9zZV9tYXBwaW5nYCBiZWZvcmUgdGhlIGBrZnJlZWAuIEluIGBnZmFyX29mX2luaXRgLCB0aGV5JiMzOTtyZSBpbml0aWFsaXppbmcgYHByaXYtJmd0O2dmYXJncnBbaV0uaXJxaW5mb1tqXWAgdG8gYE5VTExgIGFjcm9zcyBhbGwgdGhlIGBNQVhHUk9VUFNgIGFuZCBgR0ZBUl9OVU1fSVJRU2AgZW50cmllcy4KCk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgcmVsZXZhbnQgaXMgdGhpcz8gSXQmIzM5O3MgdGhlIEdpYW5mYXIsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGFuIEV0aGVybmV0IGNvbnRyb2xsZXIgdHlwaWNhbGx5IGZvdW5kIG9uIEZyZWVzY2FsZSBQb3dlclBDIFNvQ3MsIGxpa2UgdGhlIE1QQzg1eHguIFRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSBiZWNvbWVzOiBpcyB0aGlzIGV2ZW4gcmVtb3RlbHkgZXhwbG9pdGFibGUgb3IgdGVzdGFibGUgaW4gYSBtb2Rlcm4gdmlydHVhbGl6ZWQgc2V0dXA/IENhbiB3ZSBldmVuIHJlYWNoIHRoaXMgY29kZSBwYXRoPwoKSG1tLCBJIHJlbWVtYmVyIFFFTVUgaGF2aW5nIHNvbWUgZTUwMCBlbXVsYXRpb24sIHdoaWNoIGluY2x1ZGVzIEdpYW5mYXIsIG9yLCByYXRoZXIsIGVUU0VDLiBTbywgZW11bGF0aW9uIGlzbiYjMzk7dCAqZW50aXJlbHkqIG91dCBvZiB0aGUgcXVlc3Rpb24uIEJ1dCB0aGVuIEkgaGF2ZSB0byB0aGluaywgZG9lcyBzeXprYWxsZXIgZXZlbiBmdXp6IHRoaXMgdGhpbmc/IEl0JiMzOTtzIG1vc3RseSBnZWFyZWQgdG93YXJkcyB4ODZfNjQsIGFybTY0LCBhbmQgdGhlIGxpa2UuIEl0JiMzOTtzIGEgYml0IG9mIGEgbG9uZyBzaG90LiBCdXQsIGlmIHRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCwgdGhlbiBpdCYjMzk7cyAqcG9zc2libHkqIHJlYWNoYWJsZS4KCkFoLCByaWdodCwgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyISBUaGF0IG1lYW5zIGl0IHJlbGllcyBvbiBkZXZpY2UgdHJlZS4gVGhhdCBhZGRzIGFub3RoZXIgbGF5ZXIgb2YgY29tcGxleGl0eS4gQ2FuIHN5emthbGxlciBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcywgb3IgaXMgaXQgZ29pbmcgdG8gYmUgYSBjb21wbGV0ZSBkZWFkIGVuZD8gSSBrbm93IHN5emthbGxlciBoYXMgKnNvbWUqIHBsYXRmb3JtIGRldmljZSBzdXBwb3J0LCBidXQgaXQmIzM5O3Mgbm90IGFsd2F5cyBzdHJhaWdodGZvcndhcmQuIFRoaXMgaXMgZ29pbmcgdG8gcmVxdWlyZSBtZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgdGhpcyBkcml2ZXIsIHRvIHNlZSBpZiBhbnl0aGluZyBpcyBldmVuIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2lhbmZhciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTY1PWNvbmZpZyBGU0xfUFFfTURJT1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTY4LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6Njk6XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGJ1cyB1c2VkIGJ5IHRoZSBnaWFuZmFyIGFuZCBVQ0MgZHJpdmVycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMjgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBHaWFuZmFyKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBgZ2lhbmZhci5jYCBFdGhlcm5ldCBkcml2ZXIgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXImIzM5O3MgS2NvbmZpZyBmaWxlLiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEZyZWVzY2FsZSBFdGhlcm5ldCBjb250cm9sbGVycywgdGhhdCBwb2ludHMgbWUgZGlyZWN0bHkgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBJIHdvdWxkICpleHBlY3QqIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgYGdpYW5mYXIuY2Agd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dpYW5mYXJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfR0lBTkZBUikgJiM0Mzs9IGdpYW5mYXJfZHJpdmVyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZToxNzpnaWFuZmFyX2RyaXZlci1vYmpzIDo9IGdpYW5mYXIubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL01ha2VmaWxlLTE4LVx0XHRnaWFuZmFyX2V0aHRvb2wub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBHSUFORkFSIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHNlZWluZyBgQ09ORklHX0dJQU5GQVJgLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSBkZXBlbmRlbmN5IGNoYWluIGhlcmU/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucywgZmVhdHVyZXMsIG9yIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIGFyZSBjb250aW5nZW50IHVwb24gYENPTkZJR19HSUFORkFSYCBiZWluZyBlbmFibGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBpbXBhY3Qgb2YgZW5hYmxpbmcsIG9yIGRpc2FibGluZyBpdC4gRnJvbSB0aGVyZSBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoYXQmIzM5O3MgZ29pbmcgdG8gY29tZSBhbG9uZyBmb3IgdGhlIHJpZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdJQU5GQVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz04OT1jb25maWcgVUdFVEhfVFhfT05fREVNQU5EXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo5Mzpjb25maWcgR0lBTkZBUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBGcmVlc2NhbGUgRXRoZXJuZXQgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2AgZGlyZWN0b3J5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gYXJvdW5kIGxpbmUgOTMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgZGVmaW5lZCwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyByZWxhdGUgdG8gdGhlIG92ZXJhbGwgRXRoZXJuZXQgZHJpdmVyIGFyY2hpdGVjdHVyZSBvbiBGcmVlc2NhbGUgU29Dcy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5MDpcdFx0Ym9vbCBcJiMzNDtUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFwmIzM0O1xuICA5MTpcdFx0ZGVwZW5kcyBvbiBVQ0NfR0VUSFxuICA5MjpcdFxuICA5MzpcdGNvbmZpZyBHSUFORkFSXG4gIDk0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4gIDk1Olx0XHRkZXBlbmRzIG9uIEhBU19ETUFcbiAgOTY6XHRcdHNlbGVjdCBGU0xfUFFfTURJT1xuICA5NzpcdFx0c2VsZWN0IFBIWUxJQlxuICA5ODpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICA5OTpcdFx0c2VsZWN0IENSQzMyXG4gMTAwOlx0XHRoZWxwXG4gMTAxOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IFRTRUMgb24gdGhlIE1QQzgzeHgsIE1QQzg1eHgsXG4gMTAyOlx0XHQgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgdGhlIGVUU0VDIG9uIExTMTAyMUEgYW5kIHRoZSBGRUNcbiAxMDM6XHRcdCAgb24gdGhlIDg1NDAuXG4gMTA0Olx0XG4gMTA1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWdcJiMzNDtcbiAxMDY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWdcJiMzNDtcbiAxMDc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWdcJiMzNDtcbiAxMDg6XHRcbiAxMDk6XHRlbmRpZiAjIE5FVF9WRU5ET1JfRlJFRVNDQUxFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUaGlzIFBsYXRmb3JtIERyaXZlcjogQSBUYWN0aWNhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoaXMgY29kZSBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiByZWFjaCBpdC4gVGhlIGNyaXRpY2FsIGZhY3RvciBpcyBgSEFTX0RNQWAsIGFuZCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBzeXprYWxsZXIgaGFuZGxlcyBwbGF0Zm9ybSBkcml2ZXJzLiAgR2VuZXJhbGx5LCBzeXprYWxsZXIgbmVlZHMgdG8gYmUgYWJsZSB0byBlaXRoZXIgaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzIG9yIHBsYXRmb3JtIGRldmljZXMgdG8gZXZlbiBoYXZlIGEgc2hvdCBhdCBmdXp6aW5nIHNvbWV0aGluZyBsaWtlIHRoaXMuCgpJJiMzOTttIHJlbWVtYmVyaW5nIHRoYXQgd2l0aCBQb3dlclBDL0ZyZWVzY2FsZSwgd2hpY2ggc2VlbXMgcmVsZXZhbnQgaGVyZSBiZWNhdXNlIG9mIHRoZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBMUzEwMjFBKSwgc3l6a2FsbGVyIGlzbiYjMzk7dCB1c3VhbGx5IHNldCB1cCB0byBpbmplY3QgYXJiaXRyYXJ5IGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gSG93ZXZlciwgdGhlcmUmIzM5O3MgYWx3YXlzIHRoZSBob3BlLCBpc24mIzM5O3QgdGhlcmU/IEkmIzM5O20gcmVjYWxsaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAsIGJ1dCBteSBleHBlcmllbmNlIGlzIHRoYXQgaXQmIzM5O3MgdXN1YWxseSBxdWl0ZSBsaW1pdGVkIGluIGl0cyBjYXBhYmlsaXRpZXMuCgpBaGEhIFRoZSBMUzEwMjFBIGlzIEFSTSwgc28gYXQgbGVhc3QgaXQgKmNvdWxkKiBiZSBjb21waWxlZCBhbmQgcG90ZW50aWFsbHkgcnVuIG9uIEFSTS4gQnV0IGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uCgpJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyAqYW55KiB3YXkgdG8gYWN0dWFsbHkgdHJpZ2dlciB0aGlzIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gYGdmYXJfb2ZfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBwcm9iZSwgYW5kIGBmcmVlX2dmYXJfZGV2YCBkdXJpbmcgcHJvYmUgZmFpbHVyZSBvciByZW1vdmFsLiBJZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcmVzZW50LCB3ZSYjMzk7cmUgZGVhZCBpbiB0aGUgd2F0ZXIuIElzIHRoZXJlIHNvbWUgc29mdHdhcmUgaW50ZXJmYWNlIHRoYXQgbWlnaHQgaW5zdGFudGlhdGUgdGhlIGRldmljZT8gTm90IGxpa2VseSwgaXQmIzM5O3MgYSBwaHlzaWNhbCBFdGhlcm5ldCBjb250cm9sbGVyLgoKSG1tLCBtYXliZSB0aHJvdWdoIGEgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZT8gTm8sIHdhaXQsIGl0JiMzOTtzIGEgcGxhdGZvcm0gZGV2aWNlLiBPSywgdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gd29yay4KCk9rYXksIHRpbWUgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZ2lhbmZhci5jYCBpdHNlbGYgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgdGhpbmcgZ2V0cyBwcm9iZWQuIFRoYXQgd2lsbCB0ZWxsIHRoZSB0YWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZmFyX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zMTYwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzozMTYxOnN0YXRpYyBpbnQgZ2Zhcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzE2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNjAwPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGdmYXJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzYwNS1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM2MDY6XHQucHJvYmUgPSBnZmFyX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zNjA3LVx0LnJlbW92ZSA9IGdmYXJfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEyCgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciBmcm9tIHRoZSBzdGFydDogdGhpcyBpcyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlci4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHVubGVzcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgdmVyeSBzcGVjaWZpYywgYW5kIEkgbWVhbiAqc3BlY2lmaWMqLCBtYWNoaW5lIHR5cGUgZW11bGF0aW9uLCB0aGlzIGRldmljZSBpcyBzaW1wbHkgbm90IGdvaW5nIHRvIGJlIHByZXNlbnQuIFRoaW5rIG9mIGl0IOKAkyBzb21ldGhpbmcgbGlrZSwgc2F5LCBhIGRlZGljYXRlZCBgcWVtdS1zeXN0ZW0tYXJtYCB3aXRoIGFuIGxzMTAyMWEgYm9hcmQsIG9yIG1heWJlIGEgZGVkaWNhdGVkIFBvd2VyUEMgbGlrZSBhbiBtcGM4NTQ0ZHMuIEJ1dCBpbiBTeXprYWxsZXIsIGluIHRoZSBlbnZpcm9ubWVudHMgSSYjMzk7bSB1c2VkIHRvLCB3ZSYjMzk7cmUgdHlwaWNhbGx5IG9uIGBxZW11LXN5c3RlbS14ODZfNjRgIG9yIHBlcmhhcHMgYW4gYGFhcmNoNjRgIHZpcnQgbWFjaGluZS4KClRoZXJlZm9yZSwgdW5kZXIgdGhlc2Ugc3RhbmRhcmQgY29uZGl0aW9ucywgSSYjMzk7ZCBzYXkgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIEl0JiMzOTtzIGEgbm9uLXN0YXJ0ZXIgZm9yIGZ1enppbmcgYXMgaXQgc3RhbmRzLiBTbywgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZzogZmFsc2VgLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjb25jaXNlIGJ1dCBhY2N1cmF0ZTogSXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGNvbnRyb2xsZXJzIHVzZWQgaW4gdGhlIE1QQzgzeHgvODV4eC84Nnh4IGFuZCBMUzEwMjFBIFNvQ3MuIFRoZXNlIHRhcmdldHMgYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB1bmxlc3Mgd2Ugc3BlY2lmaWNhbGx5LCBhbmQgSSBtZWFuICpleHBsaWNpdGx5KiwgZW11bGF0ZSB0aG9zZSB2ZXJ5IHNwZWNpZmljIFN5c3RlbS1vbi1DaGlwIChTb0MpIHN5c3RlbXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIHBlcmhhcHMgdGhlcmUmIzM5O3Mgc29tZSBvYnNjdXJlIHZpcnR1YWwgb3IgZW11bGF0ZWQgdmVyc2lvbiBvZiB0aGlzIHRoYXQgSSYjMzk7dmUgbWlzc2VkLiBOb3BlLCBpdCYjMzk7cyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIsIGFzIEkgc3VzcGVjdGVkLiBUaGVyZWZvcmUsIG15IGZpbmFsIGRldGVybWluYXRpb24gaXMgY2xlYXI6IFdvcnRoRnV6emluZyB3aWxsIGJlIHNldCB0byBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgRXRoZXJuZXQgZHJpdmVyIChnaWFuZmFyLmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MgKE1QQzgzeHgsIE1QQzg1eHgsIE1QQzg2eHgsIExTMTAyMUEpLiBUaGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUgd2l0aCBkZWZhdWx0IG1hY2hpbmUgdHlwZXMpIGFzIGl0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIFNvQyBlbXVsYXRpb24gdG8gYmUgcHJvYmVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDowMS4yMTE2MzQ4MTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODEzMzI2NDA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjAxLjIxMTYzOTcwMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk5MTAyMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1biAyNyAwMTo1Mzo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1xcbmluZGV4IDMyNzFkZTU4NDRmODRiLi44OTIxNWUxZGRjMmRiMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1xcbkBAIC00NjksMTAgKzQ2OSwxMyBAQCBzdGF0aWMgdm9pZCBmcmVlX2dmYXJfZGV2KHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYpXFxuIHtcXG4gXFx0aW50IGksIGo7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcHJpdi1cXHUwMDNlbnVtX2dycHM7IGkrKylcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWEdST1VQUzsgaSsrKVxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgR0ZBUl9OVU1fSVJRUzsgaisrKSB7XFxuLVxcdFxcdFxcdGtmcmVlKHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSk7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XFxuK1xcdFxcdFxcdGlmIChwcml2LVxcdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pIHtcXG4rXFx0XFx0XFx0XFx0aXJxX2Rpc3Bvc2VfbWFwcGluZyhwcml2LVxcdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0tXFx1MDAzZWlycSk7XFxuK1xcdFxcdFxcdFxcdGtmcmVlKHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSk7XFxuK1xcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4gXFx0ZnJlZV9uZXRkZXYocHJpdi1cXHUwMDNlbmRldik7XFxuQEAgLTYxNiw3ICs2MTksNyBAQCBzdGF0aWMgcGh5X2ludGVyZmFjZV90IGdmYXJfZ2V0X2ludGVyZmFjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBzdGF0aWMgaW50IGdmYXJfb2ZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKipwZGV2KVxcbiB7XFxuIFxcdGNvbnN0IGNoYXIgKm1vZGVsO1xcbi1cXHRpbnQgZXJyID0gMCwgaTtcXG4rXFx0aW50IGVyciA9IDAsIGksIGo7XFxuIFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgZ2Zhcl9wcml2YXRlICpwcml2ID0gTlVMTDtcXG5AQCAtNzAyLDggKzcwNSwxMSBAQCBzdGF0aWMgaW50IGdmYXJfb2ZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKipwZGV2KVxcbiBcXHRwcml2LVxcdTAwM2VyeF9saXN0LmNvdW50ID0gMDtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlcnhfcXVldWVfYWNjZXNzKTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhHUk9VUFM7IGkrKylcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWEdST1VQUzsgaSsrKSB7XFxuIFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0ucmVncyA9IE5VTEw7XFxuK1xcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBHRkFSX05VTV9JUlFTOyBqKyspXFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovXFxuIFxcdGlmIChwcml2LVxcdTAwM2Vtb2RlID09IE1RX01HX01PREUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MDEuNjExMzE0NTc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzczMzU3OTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjUzOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbmluZGV4IDMyNzFkZTU4NDRmODRiLi44OTIxNWUxZGRjMmRiMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbkBAIC00NjksMTAgKzQ2OSwxMyBAQCBzdGF0aWMgdm9pZCBmcmVlX2dmYXJfZGV2KHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYpXG4ge1xuIFx0aW50IGksIGo7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZW51bV9ncnBzOyBpKyspXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhHUk9VUFM7IGkrKylcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgR0ZBUl9OVU1fSVJRUzsgaisrKSB7XG4tXHRcdFx0a2ZyZWUocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pO1xuLVx0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbitcdFx0XHRpZiAocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pIHtcbitcdFx0XHRcdGlycV9kaXNwb3NlX21hcHBpbmcocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0tXHUwMDNlaXJxKTtcbitcdFx0XHRcdGtmcmVlKHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdKTtcbitcdFx0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdGZyZWVfbmV0ZGV2KHByaXYtXHUwMDNlbmRldik7XG5AQCAtNjE2LDcgKzYxOSw3IEBAIHN0YXRpYyBwaHlfaW50ZXJmYWNlX3QgZ2Zhcl9nZXRfaW50ZXJmYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbiB7XG4gXHRjb25zdCBjaGFyICptb2RlbDtcbi1cdGludCBlcnIgPSAwLCBpO1xuK1x0aW50IGVyciA9IDAsIGksIGo7XG4gXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7XG4gXHRzdHJ1Y3QgZ2Zhcl9wcml2YXRlICpwcml2ID0gTlVMTDtcbkBAIC03MDIsOCArNzA1LDExIEBAIHN0YXRpYyBpbnQgZ2Zhcl9vZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqKnBkZXYpXG4gXHRwcml2LVx1MDAzZXJ4X2xpc3QuY291bnQgPSAwO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXJ4X3F1ZXVlX2FjY2Vzcyk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhHUk9VUFM7IGkrKylcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWEdST1VQUzsgaSsrKSB7XG4gXHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5yZWdzID0gTlVMTDtcbitcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgR0ZBUl9OVU1fSVJRUzsgaisrKVxuK1x0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovXG4gXHRpZiAocHJpdi1cdTAwM2Vtb2RlID09IE1RX01HX01PREUpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjAxLjYxMTMxNTkxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNTI4NjIwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgR2lhbmZhciBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jYCkuIFRoZSBjb3JlIGNoYW5nZXMgYXJlIHdpdGhpbiBgZnJlZV9nZmFyX2RldmAgYW5kIGBnZmFyX29mX2luaXRgLiBJIHNlZSB0aGUgbG9vcCBib3VuZCBpbiBgZnJlZV9nZmFyX2RldmAgaGFzIGJlZW4gZXhwYW5kZWQgZnJvbSBgcHJpdi1cdTAwM2VudW1fZ3Jwc2AgdG8gYE1BWEdST1VQU2AsIGFuZCBub3cgdGhlcmUncyBhbiBgaXJxX2Rpc3Bvc2VfbWFwcGluZ2AgYmVmb3JlIHRoZSBga2ZyZWVgLiBJbiBgZ2Zhcl9vZl9pbml0YCwgdGhleSdyZSBpbml0aWFsaXppbmcgYHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdYCB0byBgTlVMTGAgYWNyb3NzIGFsbCB0aGUgYE1BWEdST1VQU2AgYW5kIGBHRkFSX05VTV9JUlFTYCBlbnRyaWVzLlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IHJlbGV2YW50IGlzIHRoaXM/IEl0J3MgdGhlIEdpYW5mYXIsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYW4gRXRoZXJuZXQgY29udHJvbGxlciB0eXBpY2FsbHkgZm91bmQgb24gRnJlZXNjYWxlIFBvd2VyUEMgU29DcywgbGlrZSB0aGUgTVBDODV4eC4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXM6IGlzIHRoaXMgZXZlbiByZW1vdGVseSBleHBsb2l0YWJsZSBvciB0ZXN0YWJsZSBpbiBhIG1vZGVybiB2aXJ0dWFsaXplZCBzZXR1cD8gQ2FuIHdlIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHBhdGg/XG5cbkhtbSwgSSByZW1lbWJlciBRRU1VIGhhdmluZyBzb21lIGU1MDAgZW11bGF0aW9uLCB3aGljaCBpbmNsdWRlcyBHaWFuZmFyLCBvciwgcmF0aGVyLCBlVFNFQy4gU28sIGVtdWxhdGlvbiBpc24ndCAqZW50aXJlbHkqIG91dCBvZiB0aGUgcXVlc3Rpb24uIEJ1dCB0aGVuIEkgaGF2ZSB0byB0aGluaywgZG9lcyBzeXprYWxsZXIgZXZlbiBmdXp6IHRoaXMgdGhpbmc/IEl0J3MgbW9zdGx5IGdlYXJlZCB0b3dhcmRzIHg4Nl82NCwgYXJtNjQsIGFuZCB0aGUgbGlrZS4gSXQncyBhIGJpdCBvZiBhIGxvbmcgc2hvdC4gQnV0LCBpZiB0aGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQsIHRoZW4gaXQncyAqcG9zc2libHkqIHJlYWNoYWJsZS5cblxuQWgsIHJpZ2h0LCBpdCdzIGEgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciEgVGhhdCBtZWFucyBpdCByZWxpZXMgb24gZGV2aWNlIHRyZWUuIFRoYXQgYWRkcyBhbm90aGVyIGxheWVyIG9mIGNvbXBsZXhpdHkuIENhbiBzeXprYWxsZXIgaW5qZWN0IHBsYXRmb3JtIGRldmljZXMsIG9yIGlzIGl0IGdvaW5nIHRvIGJlIGEgY29tcGxldGUgZGVhZCBlbmQ/IEkga25vdyBzeXprYWxsZXIgaGFzICpzb21lKiBwbGF0Zm9ybSBkZXZpY2Ugc3VwcG9ydCwgYnV0IGl0J3Mgbm90IGFsd2F5cyBzdHJhaWdodGZvcndhcmQuIFRoaXMgaXMgZ29pbmcgdG8gcmVxdWlyZSBtZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgdGhpcyBkcml2ZXIsIHRvIHNlZSBpZiBhbnl0aGluZyBpcyBldmVuIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDowNy43NjQxNzk0NjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1NzA2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2lhbmZhclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz02NT1jb25maWcgRlNMX1BRX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTY4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo2OTpcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGJ1cyB1c2VkIGJ5IHRoZSBnaWFuZmFyIGFuZCBVQ0MgZHJpdmVycy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy03MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MDcuODE4NzUzMTI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYwNjkxMzAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgR2lhbmZhcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBgZ2lhbmZhci5jYCBFdGhlcm5ldCBkcml2ZXIgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIncyBLY29uZmlnIGZpbGUuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBGcmVlc2NhbGUgRXRoZXJuZXQgY29udHJvbGxlcnMsIHRoYXQgcG9pbnRzIG1lIGRpcmVjdGx5IHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCAqZXhwZWN0KiB0byBmaW5kIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRoYXQgZ292ZXJuIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIGBnaWFuZmFyLmNgIHdpdGhpbiB0aGUga2VybmVsLiBUaW1lIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgaGF2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjEwLjQyNTY2ODExOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjQ3NTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnaWFuZmFyXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0dJQU5GQVIpICs9IGdpYW5mYXJfZHJpdmVyLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvTWFrZWZpbGU6MTc6Z2lhbmZhcl9kcml2ZXItb2JqcyA6PSBnaWFuZmFyLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZS0xOC1cXHRcXHRnaWFuZmFyX2V0aHRvb2wub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDoxMC40NzgxNDY3NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTIxODcxNDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBHSUFORkFSIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHNlZWluZyBgQ09ORklHX0dJQU5GQVJgLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcywgXCJXaGF0J3MgdGhlIGRlcGVuZGVuY3kgY2hhaW4gaGVyZT9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBmZWF0dXJlcywgb3IgdW5kZXJseWluZyBoYXJkd2FyZSByZXF1aXJlbWVudHMgYXJlIGNvbnRpbmdlbnQgdXBvbiBgQ09ORklHX0dJQU5GQVJgIGJlaW5nIGVuYWJsZWQuIFRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGltcGFjdCBvZiBlbmFibGluZywgb3IgZGlzYWJsaW5nIGl0LiBGcm9tIHRoZXJlIEkgbmVlZCB0byBkZXRlcm1pbmUgd2hhdCdzIGdvaW5nIHRvIGNvbWUgYWxvbmcgZm9yIHRoZSByaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MTMuMDAwMDE5OTE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTk1OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBHSUFORkFSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTg5PWNvbmZpZyBVR0VUSF9UWF9PTl9ERU1BTkRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjkzOmNvbmZpZyBHSUFORkFSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkdpYW5mYXIgRXRoZXJuZXRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjEzLjA1MzAxODQ2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTYyMTYzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEZyZWVzY2FsZSBFdGhlcm5ldCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvYCBkaXJlY3RvcnkuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGFyb3VuZCBsaW5lIDkzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZXNlIG9wdGlvbnMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEV0aGVybmV0IGRyaXZlciBhcmNoaXRlY3R1cmUgb24gRnJlZXNjYWxlIFNvQ3MuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkndmUgYmVlbiBjb25zaWRlcmluZy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MTYuNDQ5MjM2NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5MDpcXHRcXHRib29sIFxcXCJUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFxcXCJcXG4gIDkxOlxcdFxcdGRlcGVuZHMgb24gVUNDX0dFVEhcXG4gIDkyOlxcdFxcbiAgOTM6XFx0Y29uZmlnIEdJQU5GQVJcXG4gIDk0OlxcdFxcdHRyaXN0YXRlIFxcXCJHaWFuZmFyIEV0aGVybmV0XFxcIlxcbiAgOTU6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfRE1BXFxuICA5NjpcXHRcXHRzZWxlY3QgRlNMX1BRX01ESU9cXG4gIDk3OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDk4OlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gIDk5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxMDA6XFx0XFx0aGVscFxcbiAxMDE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4M3h4LCBNUEM4NXh4LFxcbiAxMDI6XFx0XFx0ICBhbmQgTVBDODZ4eCBmYW1pbHkgb2YgY2hpcHMsIHRoZSBlVFNFQyBvbiBMUzEwMjFBIGFuZCB0aGUgRkVDXFxuIDEwMzpcXHRcXHQgIG9uIHRoZSA4NTQwLlxcbiAxMDQ6XFx0XFxuIDEwNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWdcXFwiXFxuIDEwNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnXFxcIlxcbiAxMDc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZ1xcXCJcXG4gMTA4OlxcdFxcbiAxMDk6XFx0ZW5kaWYgIyBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDoxNi40NDkyOTYwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzY0Mzg1OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGhpcyBQbGF0Zm9ybSBEcml2ZXI6IEEgVGFjdGljYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoaXMgY29kZSBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiByZWFjaCBpdC4gVGhlIGNyaXRpY2FsIGZhY3RvciBpcyBgSEFTX0RNQWAsIGFuZCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBoYW5kbGVzIHBsYXRmb3JtIGRyaXZlcnMuICBHZW5lcmFsbHksIHN5emthbGxlciBuZWVkcyB0byBiZSBhYmxlIHRvIGVpdGhlciBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMgb3IgcGxhdGZvcm0gZGV2aWNlcyB0byBldmVuIGhhdmUgYSBzaG90IGF0IGZ1enppbmcgc29tZXRoaW5nIGxpa2UgdGhpcy5cblxuSSdtIHJlbWVtYmVyaW5nIHRoYXQgd2l0aCBQb3dlclBDL0ZyZWVzY2FsZSwgd2hpY2ggc2VlbXMgcmVsZXZhbnQgaGVyZSBiZWNhdXNlIG9mIHRoZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBMUzEwMjFBKSwgc3l6a2FsbGVyIGlzbid0IHVzdWFsbHkgc2V0IHVwIHRvIGluamVjdCBhcmJpdHJhcnkgZGV2aWNlIHRyZWUgbm9kZXMgdW5sZXNzIGl0J3Mgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIEhvd2V2ZXIsIHRoZXJlJ3MgYWx3YXlzIHRoZSBob3BlLCBpc24ndCB0aGVyZT8gSSdtIHJlY2FsbGluZyBzb21ldGhpbmcgbGlrZSBgc3l6X2Rldl9wbGF0Zm9ybV9hZGRgLCBidXQgbXkgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MgdXN1YWxseSBxdWl0ZSBsaW1pdGVkIGluIGl0cyBjYXBhYmlsaXRpZXMuXG5cbkFoYSEgVGhlIExTMTAyMUEgaXMgQVJNLCBzbyBhdCBsZWFzdCBpdCAqY291bGQqIGJlIGNvbXBpbGVkIGFuZCBwb3RlbnRpYWxseSBydW4gb24gQVJNLiBCdXQgaXMgaXQgd29ydGggdGhlIGVmZm9ydD8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLlxuXG5JIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzICphbnkqIHdheSB0byBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgY29kZS4gTGV0J3Mgc2VlLi4uIGBnZmFyX29mX2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgcHJvYmUsIGFuZCBgZnJlZV9nZmFyX2RldmAgZHVyaW5nIHByb2JlIGZhaWx1cmUgb3IgcmVtb3ZhbC4gSWYgdGhlIGRldmljZSBpc24ndCBwcmVzZW50LCB3ZSdyZSBkZWFkIGluIHRoZSB3YXRlci4gSXMgdGhlcmUgc29tZSBzb2Z0d2FyZSBpbnRlcmZhY2UgdGhhdCBtaWdodCBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlPyBOb3QgbGlrZWx5LCBpdCdzIGEgcGh5c2ljYWwgRXRoZXJuZXQgY29udHJvbGxlci5cblxuSG1tLCBtYXliZSB0aHJvdWdoIGEgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZT8gTm8sIHdhaXQsIGl0J3MgYSBwbGF0Zm9ybSBkZXZpY2UuIE9LLCB0aGF0J3Mgbm90IGdvaW5nIHRvIHdvcmsuXG5cbk9rYXksIHRpbWUgdG8gZGlnIGRlZXBlci4gSSdsbCBuZWVkIHRvIGNoZWNrIGBnaWFuZmFyLmNgIGl0c2VsZiB0byBzZWUgZXhhY3RseSBob3cgdGhpcyB0aGluZyBnZXRzIHByb2JlZC4gVGhhdCB3aWxsIHRlbGwgdGhlIHRhbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDoyMi44MTM2ODM1OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDA4NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdmYXJfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNjAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzozMTYxOnN0YXRpYyBpbnQgZ2Zhcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNjAwPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGdmYXJfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zNjA1LVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzozNjA2OlxcdC5wcm9iZSA9IGdmYXJfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zNjA3LVxcdC5yZW1vdmUgPSBnZmFyX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MjIuODY3Njk1MzY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzcxNzI2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgZnJvbSB0aGUgc3RhcnQ6IHRoaXMgaXMgYSBzdGFuZGFyZCBwbGF0Zm9ybSBkcml2ZXIuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIGEgdmVyeSBzcGVjaWZpYywgYW5kIEkgbWVhbiAqc3BlY2lmaWMqLCBtYWNoaW5lIHR5cGUgZW11bGF0aW9uLCB0aGlzIGRldmljZSBpcyBzaW1wbHkgbm90IGdvaW5nIHRvIGJlIHByZXNlbnQuIFRoaW5rIG9mIGl0IOKAkyBzb21ldGhpbmcgbGlrZSwgc2F5LCBhIGRlZGljYXRlZCBgcWVtdS1zeXN0ZW0tYXJtYCB3aXRoIGFuIGxzMTAyMWEgYm9hcmQsIG9yIG1heWJlIGEgZGVkaWNhdGVkIFBvd2VyUEMgbGlrZSBhbiBtcGM4NTQ0ZHMuIEJ1dCBpbiBTeXprYWxsZXIsIGluIHRoZSBlbnZpcm9ubWVudHMgSSdtIHVzZWQgdG8sIHdlJ3JlIHR5cGljYWxseSBvbiBgcWVtdS1zeXN0ZW0teDg2XzY0YCBvciBwZXJoYXBzIGFuIGBhYXJjaDY0YCB2aXJ0IG1hY2hpbmUuXG5cblRoZXJlZm9yZSwgdW5kZXIgdGhlc2Ugc3RhbmRhcmQgY29uZGl0aW9ucywgSSdkIHNheSB0aGlzIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gSXQncyBhIG5vbi1zdGFydGVyIGZvciBmdXp6aW5nIGFzIGl0IHN0YW5kcy4gU28sIEknbSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZzogZmFsc2VgLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjb25jaXNlIGJ1dCBhY2N1cmF0ZTogSXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgRXRoZXJuZXQgY29udHJvbGxlcnMgdXNlZCBpbiB0aGUgTVBDODN4eC84NXh4Lzg2eHggYW5kIExTMTAyMUEgU29Dcy4gVGhlc2UgdGFyZ2V0cyBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHVubGVzcyB3ZSBzcGVjaWZpY2FsbHksIGFuZCBJIG1lYW4gKmV4cGxpY2l0bHkqLCBlbXVsYXRlIHRob3NlIHZlcnkgc3BlY2lmaWMgU3lzdGVtLW9uLUNoaXAgKFNvQykgc3lzdGVtcy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIHBlcmhhcHMgdGhlcmUncyBzb21lIG9ic2N1cmUgdmlydHVhbCBvciBlbXVsYXRlZCB2ZXJzaW9uIG9mIHRoaXMgdGhhdCBJJ3ZlIG1pc3NlZC4gTm9wZSwgaXQncyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIsIGFzIEkgc3VzcGVjdGVkLiBUaGVyZWZvcmUsIG15IGZpbmFsIGRldGVybWluYXRpb24gaXMgY2xlYXI6IFdvcnRoRnV6emluZyB3aWxsIGJlIHNldCB0byBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQxMiwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MjkuMzQ0ODcwMTE5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGdpYW5mYXIuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBGcmVlc2NhbGUgU29DcyAoTVBDODN4eCwgTVBDODV4eCwgTVBDODZ4eCwgTFMxMDIxQSkuIFRoaXMgY29kZSBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSB3aXRoIGRlZmF1bHQgbWFjaGluZSB0eXBlcykgYXMgaXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgU29DIGVtdWxhdGlvbiB0byBiZSBwcm9iZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow2tthf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 01:41:19 +0000 UTC FinishedAt: 2026-06-27 01:54:30 +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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGdpYW5mYXIuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBGcmVlc2NhbGUgU29DcyAoTVBDODN4eCwgTVBDODV4eCwgTVBDODZ4eCwgTFMxMDIxQSkuIFRoaXMgY29kZSBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSB3aXRoIGRlZmF1bHQgbWFjaGluZSB0eXBlcykgYXMgaXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgU29DIGVtdWxhdGlvbiB0byBiZSBwcm9iZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjUzOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCAzMjcxZGU1ODQ0Zjg0Yi4uODkyMTVlMWRkYzJkYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtNDY5LDEwICYjNDM7NDY5LDEzIEBAIHN0YXRpYyB2b2lkIGZyZWVfZ2Zhcl9kZXYoc3RydWN0IGdmYXJfcHJpdmF0ZSAqcHJpdilcbiB7XG4gXHRpbnQgaSwgajtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlbnVtX2dycHM7IGkmIzQzOyYjNDM7KVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWEdST1VQUzsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEdGQVJfTlVNX0lSUVM7IGomIzQzOyYjNDM7KSB7XG4tXHRcdFx0a2ZyZWUocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pO1xuLVx0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbiYjNDM7XHRcdFx0aWYgKHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdKSB7XG4mIzQzO1x0XHRcdFx0aXJxX2Rpc3Bvc2VfbWFwcGluZyhwcml2LVx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXS1cdTAwM2VpcnEpO1xuJiM0MztcdFx0XHRcdGtmcmVlKHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdKTtcbiYjNDM7XHRcdFx0XHRwcml2LVx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0ZnJlZV9uZXRkZXYocHJpdi1cdTAwM2VuZGV2KTtcbkBAIC02MTYsNyAmIzQzOzYxOSw3IEBAIHN0YXRpYyBwaHlfaW50ZXJmYWNlX3QgZ2Zhcl9nZXRfaW50ZXJmYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbiB7XG4gXHRjb25zdCBjaGFyICptb2RlbDtcbi1cdGludCBlcnIgPSAwLCBpO1xuJiM0MztcdGludCBlcnIgPSAwLCBpLCBqO1xuIFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xuIFx0c3RydWN0IGdmYXJfcHJpdmF0ZSAqcHJpdiA9IE5VTEw7XG5AQCAtNzAyLDggJiM0Mzs3MDUsMTEgQEAgc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbiBcdHByaXYtXHUwMDNlcnhfbGlzdC5jb3VudCA9IDA7XG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcnhfcXVldWVfYWNjZXNzKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWEdST1VQUzsgaSYjNDM7JiM0MzspXG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYR1JPVVBTOyBpJiM0MzsmIzQzOykge1xuIFx0XHRwcml2LVx1MDAzZWdmYXJncnBbaV0ucmVncyA9IE5VTEw7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBHRkFSX05VTV9JUlFTOyBqJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0gPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovXG4gXHRpZiAocHJpdi1cdTAwM2Vtb2RlID09IE1RX01HX01PREUpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgRXRoZXJuZXQgZHJpdmVyIChnaWFuZmFyLmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MgKE1QQzgzeHgsIE1QQzg1eHgsIE1QQzg2eHgsIExTMTAyMUEpLiBUaGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUgd2l0aCBkZWZhdWx0IG1hY2hpbmUgdHlwZXMpIGFzIGl0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIFNvQyBlbXVsYXRpb24gdG8gYmUgcHJvYmVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVuIDI3IDAxOjUzOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKaW5kZXggMzI3MWRlNTg0NGY4NGIuLjg5MjE1ZTFkZGMyZGIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKQEAgLTQ2OSwxMCAmIzQzOzQ2OSwxMyBAQCBzdGF0aWMgdm9pZCBmcmVlX2dmYXJfZGV2KHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYpCiB7CiAJaW50IGksIGo7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7bnVtX2dycHM7IGkmIzQzOyYjNDM7KQomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYR1JPVVBTOyBpJiM0MzsmIzQzOykKIAkJZm9yIChqID0gMDsgaiAmbHQ7IEdGQVJfTlVNX0lSUVM7IGomIzQzOyYjNDM7KSB7Ci0JCQlrZnJlZShwcml2LSZndDtnZmFyZ3JwW2ldLmlycWluZm9bal0pOwotCQkJcHJpdi0mZ3Q7Z2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDsKJiM0MzsJCQlpZiAocHJpdi0mZ3Q7Z2ZhcmdycFtpXS5pcnFpbmZvW2pdKSB7CiYjNDM7CQkJCWlycV9kaXNwb3NlX21hcHBpbmcocHJpdi0mZ3Q7Z2ZhcmdycFtpXS5pcnFpbmZvW2pdLSZndDtpcnEpOwomIzQzOwkJCQlrZnJlZShwcml2LSZndDtnZmFyZ3JwW2ldLmlycWluZm9bal0pOwomIzQzOwkJCQlwcml2LSZndDtnZmFyZ3JwW2ldLmlycWluZm9bal0gPSBOVUxMOwomIzQzOwkJCX0KIAkJfQogCiAJZnJlZV9uZXRkZXYocHJpdi0mZ3Q7bmRldik7CkBAIC02MTYsNyAmIzQzOzYxOSw3IEBAIHN0YXRpYyBwaHlfaW50ZXJmYWNlX3QgZ2Zhcl9nZXRfaW50ZXJmYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IGdmYXJfb2ZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKipwZGV2KQogewogCWNvbnN0IGNoYXIgKm1vZGVsOwotCWludCBlcnIgPSAwLCBpOwomIzQzOwlpbnQgZXJyID0gMCwgaSwgajsKIAlwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMOwogCXN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYgPSBOVUxMOwpAQCAtNzAyLDggJiM0Mzs3MDUsMTEgQEAgc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldikKIAlwcml2LSZndDtyeF9saXN0LmNvdW50ID0gMDsKIAltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7cnhfcXVldWVfYWNjZXNzKTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBNQVhHUk9VUFM7IGkmIzQzOyYjNDM7KQomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYR1JPVVBTOyBpJiM0MzsmIzQzOykgewogCQlwcml2LSZndDtnZmFyZ3JwW2ldLnJlZ3MgPSBOVUxMOwomIzQzOwkJZm9yIChqID0gMDsgaiAmbHQ7IEdGQVJfTlVNX0lSUVM7IGomIzQzOyYjNDM7KQomIzQzOwkJCXByaXYtJmd0O2dmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7CiYjNDM7CX0KIAogCS8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovCiAJaWYgKHByaXYtJmd0O21vZGUgPT0gTVFfTUdfTU9ERSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEdpYW5mYXIgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jYCkuIFRoZSBjb3JlIGNoYW5nZXMgYXJlIHdpdGhpbiBgZnJlZV9nZmFyX2RldmAgYW5kIGBnZmFyX29mX2luaXRgLiBJIHNlZSB0aGUgbG9vcCBib3VuZCBpbiBgZnJlZV9nZmFyX2RldmAgaGFzIGJlZW4gZXhwYW5kZWQgZnJvbSBgcHJpdi0mZ3Q7bnVtX2dycHNgIHRvIGBNQVhHUk9VUFNgLCBhbmQgbm93IHRoZXJlJiMzOTtzIGFuIGBpcnFfZGlzcG9zZV9tYXBwaW5nYCBiZWZvcmUgdGhlIGBrZnJlZWAuIEluIGBnZmFyX29mX2luaXRgLCB0aGV5JiMzOTtyZSBpbml0aWFsaXppbmcgYHByaXYtJmd0O2dmYXJncnBbaV0uaXJxaW5mb1tqXWAgdG8gYE5VTExgIGFjcm9zcyBhbGwgdGhlIGBNQVhHUk9VUFNgIGFuZCBgR0ZBUl9OVU1fSVJRU2AgZW50cmllcy4KCk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgcmVsZXZhbnQgaXMgdGhpcz8gSXQmIzM5O3MgdGhlIEdpYW5mYXIsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGFuIEV0aGVybmV0IGNvbnRyb2xsZXIgdHlwaWNhbGx5IGZvdW5kIG9uIEZyZWVzY2FsZSBQb3dlclBDIFNvQ3MsIGxpa2UgdGhlIE1QQzg1eHguIFRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSBiZWNvbWVzOiBpcyB0aGlzIGV2ZW4gcmVtb3RlbHkgZXhwbG9pdGFibGUgb3IgdGVzdGFibGUgaW4gYSBtb2Rlcm4gdmlydHVhbGl6ZWQgc2V0dXA/IENhbiB3ZSBldmVuIHJlYWNoIHRoaXMgY29kZSBwYXRoPwoKSG1tLCBJIHJlbWVtYmVyIFFFTVUgaGF2aW5nIHNvbWUgZTUwMCBlbXVsYXRpb24sIHdoaWNoIGluY2x1ZGVzIEdpYW5mYXIsIG9yLCByYXRoZXIsIGVUU0VDLiBTbywgZW11bGF0aW9uIGlzbiYjMzk7dCAqZW50aXJlbHkqIG91dCBvZiB0aGUgcXVlc3Rpb24uIEJ1dCB0aGVuIEkgaGF2ZSB0byB0aGluaywgZG9lcyBzeXprYWxsZXIgZXZlbiBmdXp6IHRoaXMgdGhpbmc/IEl0JiMzOTtzIG1vc3RseSBnZWFyZWQgdG93YXJkcyB4ODZfNjQsIGFybTY0LCBhbmQgdGhlIGxpa2UuIEl0JiMzOTtzIGEgYml0IG9mIGEgbG9uZyBzaG90LiBCdXQsIGlmIHRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCwgdGhlbiBpdCYjMzk7cyAqcG9zc2libHkqIHJlYWNoYWJsZS4KCkFoLCByaWdodCwgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyISBUaGF0IG1lYW5zIGl0IHJlbGllcyBvbiBkZXZpY2UgdHJlZS4gVGhhdCBhZGRzIGFub3RoZXIgbGF5ZXIgb2YgY29tcGxleGl0eS4gQ2FuIHN5emthbGxlciBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcywgb3IgaXMgaXQgZ29pbmcgdG8gYmUgYSBjb21wbGV0ZSBkZWFkIGVuZD8gSSBrbm93IHN5emthbGxlciBoYXMgKnNvbWUqIHBsYXRmb3JtIGRldmljZSBzdXBwb3J0LCBidXQgaXQmIzM5O3Mgbm90IGFsd2F5cyBzdHJhaWdodGZvcndhcmQuIFRoaXMgaXMgZ29pbmcgdG8gcmVxdWlyZSBtZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgdGhpcyBkcml2ZXIsIHRvIHNlZSBpZiBhbnl0aGluZyBpcyBldmVuIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2lhbmZhciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTY1PWNvbmZpZyBGU0xfUFFfTURJT1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTY4LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6Njk6XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGJ1cyB1c2VkIGJ5IHRoZSBnaWFuZmFyIGFuZCBVQ0MgZHJpdmVycy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMjgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBHaWFuZmFyKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBgZ2lhbmZhci5jYCBFdGhlcm5ldCBkcml2ZXIgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXImIzM5O3MgS2NvbmZpZyBmaWxlLiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEZyZWVzY2FsZSBFdGhlcm5ldCBjb250cm9sbGVycywgdGhhdCBwb2ludHMgbWUgZGlyZWN0bHkgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBJIHdvdWxkICpleHBlY3QqIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgYGdpYW5mYXIuY2Agd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dpYW5mYXJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfR0lBTkZBUikgJiM0Mzs9IGdpYW5mYXJfZHJpdmVyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZToxNzpnaWFuZmFyX2RyaXZlci1vYmpzIDo9IGdpYW5mYXIubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL01ha2VmaWxlLTE4LVx0XHRnaWFuZmFyX2V0aHRvb2wub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBHSUFORkFSIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHNlZWluZyBgQ09ORklHX0dJQU5GQVJgLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSBkZXBlbmRlbmN5IGNoYWluIGhlcmU/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucywgZmVhdHVyZXMsIG9yIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIGFyZSBjb250aW5nZW50IHVwb24gYENPTkZJR19HSUFORkFSYCBiZWluZyBlbmFibGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBpbXBhY3Qgb2YgZW5hYmxpbmcsIG9yIGRpc2FibGluZyBpdC4gRnJvbSB0aGVyZSBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoYXQmIzM5O3MgZ29pbmcgdG8gY29tZSBhbG9uZyBmb3IgdGhlIHJpZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdJQU5GQVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz04OT1jb25maWcgVUdFVEhfVFhfT05fREVNQU5EXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo5Mzpjb25maWcgR0lBTkZBUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBGcmVlc2NhbGUgRXRoZXJuZXQgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2AgZGlyZWN0b3J5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gYXJvdW5kIGxpbmUgOTMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgZGVmaW5lZCwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyByZWxhdGUgdG8gdGhlIG92ZXJhbGwgRXRoZXJuZXQgZHJpdmVyIGFyY2hpdGVjdHVyZSBvbiBGcmVlc2NhbGUgU29Dcy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5MDpcdFx0Ym9vbCBcJiMzNDtUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFwmIzM0O1xuICA5MTpcdFx0ZGVwZW5kcyBvbiBVQ0NfR0VUSFxuICA5MjpcdFxuICA5MzpcdGNvbmZpZyBHSUFORkFSXG4gIDk0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHaWFuZmFyIEV0aGVybmV0XCYjMzQ7XG4gIDk1Olx0XHRkZXBlbmRzIG9uIEhBU19ETUFcbiAgOTY6XHRcdHNlbGVjdCBGU0xfUFFfTURJT1xuICA5NzpcdFx0c2VsZWN0IFBIWUxJQlxuICA5ODpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICA5OTpcdFx0c2VsZWN0IENSQzMyXG4gMTAwOlx0XHRoZWxwXG4gMTAxOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IFRTRUMgb24gdGhlIE1QQzgzeHgsIE1QQzg1eHgsXG4gMTAyOlx0XHQgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgdGhlIGVUU0VDIG9uIExTMTAyMUEgYW5kIHRoZSBGRUNcbiAxMDM6XHRcdCAgb24gdGhlIDg1NDAuXG4gMTA0Olx0XG4gMTA1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWdcJiMzNDtcbiAxMDY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWdcJiMzNDtcbiAxMDc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWdcJiMzNDtcbiAxMDg6XHRcbiAxMDk6XHRlbmRpZiAjIE5FVF9WRU5ET1JfRlJFRVNDQUxFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUaGlzIFBsYXRmb3JtIERyaXZlcjogQSBUYWN0aWNhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoaXMgY29kZSBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiByZWFjaCBpdC4gVGhlIGNyaXRpY2FsIGZhY3RvciBpcyBgSEFTX0RNQWAsIGFuZCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBzeXprYWxsZXIgaGFuZGxlcyBwbGF0Zm9ybSBkcml2ZXJzLiAgR2VuZXJhbGx5LCBzeXprYWxsZXIgbmVlZHMgdG8gYmUgYWJsZSB0byBlaXRoZXIgaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzIG9yIHBsYXRmb3JtIGRldmljZXMgdG8gZXZlbiBoYXZlIGEgc2hvdCBhdCBmdXp6aW5nIHNvbWV0aGluZyBsaWtlIHRoaXMuCgpJJiMzOTttIHJlbWVtYmVyaW5nIHRoYXQgd2l0aCBQb3dlclBDL0ZyZWVzY2FsZSwgd2hpY2ggc2VlbXMgcmVsZXZhbnQgaGVyZSBiZWNhdXNlIG9mIHRoZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBMUzEwMjFBKSwgc3l6a2FsbGVyIGlzbiYjMzk7dCB1c3VhbGx5IHNldCB1cCB0byBpbmplY3QgYXJiaXRyYXJ5IGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gSG93ZXZlciwgdGhlcmUmIzM5O3MgYWx3YXlzIHRoZSBob3BlLCBpc24mIzM5O3QgdGhlcmU/IEkmIzM5O20gcmVjYWxsaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfZGV2X3BsYXRmb3JtX2FkZGAsIGJ1dCBteSBleHBlcmllbmNlIGlzIHRoYXQgaXQmIzM5O3MgdXN1YWxseSBxdWl0ZSBsaW1pdGVkIGluIGl0cyBjYXBhYmlsaXRpZXMuCgpBaGEhIFRoZSBMUzEwMjFBIGlzIEFSTSwgc28gYXQgbGVhc3QgaXQgKmNvdWxkKiBiZSBjb21waWxlZCBhbmQgcG90ZW50aWFsbHkgcnVuIG9uIEFSTS4gQnV0IGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uCgpJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyAqYW55KiB3YXkgdG8gYWN0dWFsbHkgdHJpZ2dlciB0aGlzIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gYGdmYXJfb2ZfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBwcm9iZSwgYW5kIGBmcmVlX2dmYXJfZGV2YCBkdXJpbmcgcHJvYmUgZmFpbHVyZSBvciByZW1vdmFsLiBJZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcmVzZW50LCB3ZSYjMzk7cmUgZGVhZCBpbiB0aGUgd2F0ZXIuIElzIHRoZXJlIHNvbWUgc29mdHdhcmUgaW50ZXJmYWNlIHRoYXQgbWlnaHQgaW5zdGFudGlhdGUgdGhlIGRldmljZT8gTm90IGxpa2VseSwgaXQmIzM5O3MgYSBwaHlzaWNhbCBFdGhlcm5ldCBjb250cm9sbGVyLgoKSG1tLCBtYXliZSB0aHJvdWdoIGEgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZT8gTm8sIHdhaXQsIGl0JiMzOTtzIGEgcGxhdGZvcm0gZGV2aWNlLiBPSywgdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gd29yay4KCk9rYXksIHRpbWUgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZ2lhbmZhci5jYCBpdHNlbGYgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgdGhpbmcgZ2V0cyBwcm9iZWQuIFRoYXQgd2lsbCB0ZWxsIHRoZSB0YWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZmFyX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zMTYwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzozMTYxOnN0YXRpYyBpbnQgZ2Zhcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzE2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNjAwPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGdmYXJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtMzYwNS1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjM2MDY6XHQucHJvYmUgPSBnZmFyX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zNjA3LVx0LnJlbW92ZSA9IGdmYXJfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEyCgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciBmcm9tIHRoZSBzdGFydDogdGhpcyBpcyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlci4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHVubGVzcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgdmVyeSBzcGVjaWZpYywgYW5kIEkgbWVhbiAqc3BlY2lmaWMqLCBtYWNoaW5lIHR5cGUgZW11bGF0aW9uLCB0aGlzIGRldmljZSBpcyBzaW1wbHkgbm90IGdvaW5nIHRvIGJlIHByZXNlbnQuIFRoaW5rIG9mIGl0IOKAkyBzb21ldGhpbmcgbGlrZSwgc2F5LCBhIGRlZGljYXRlZCBgcWVtdS1zeXN0ZW0tYXJtYCB3aXRoIGFuIGxzMTAyMWEgYm9hcmQsIG9yIG1heWJlIGEgZGVkaWNhdGVkIFBvd2VyUEMgbGlrZSBhbiBtcGM4NTQ0ZHMuIEJ1dCBpbiBTeXprYWxsZXIsIGluIHRoZSBlbnZpcm9ubWVudHMgSSYjMzk7bSB1c2VkIHRvLCB3ZSYjMzk7cmUgdHlwaWNhbGx5IG9uIGBxZW11LXN5c3RlbS14ODZfNjRgIG9yIHBlcmhhcHMgYW4gYGFhcmNoNjRgIHZpcnQgbWFjaGluZS4KClRoZXJlZm9yZSwgdW5kZXIgdGhlc2Ugc3RhbmRhcmQgY29uZGl0aW9ucywgSSYjMzk7ZCBzYXkgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIEl0JiMzOTtzIGEgbm9uLXN0YXJ0ZXIgZm9yIGZ1enppbmcgYXMgaXQgc3RhbmRzLiBTbywgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZzogZmFsc2VgLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjb25jaXNlIGJ1dCBhY2N1cmF0ZTogSXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGNvbnRyb2xsZXJzIHVzZWQgaW4gdGhlIE1QQzgzeHgvODV4eC84Nnh4IGFuZCBMUzEwMjFBIFNvQ3MuIFRoZXNlIHRhcmdldHMgYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB1bmxlc3Mgd2Ugc3BlY2lmaWNhbGx5LCBhbmQgSSBtZWFuICpleHBsaWNpdGx5KiwgZW11bGF0ZSB0aG9zZSB2ZXJ5IHNwZWNpZmljIFN5c3RlbS1vbi1DaGlwIChTb0MpIHN5c3RlbXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIHBlcmhhcHMgdGhlcmUmIzM5O3Mgc29tZSBvYnNjdXJlIHZpcnR1YWwgb3IgZW11bGF0ZWQgdmVyc2lvbiBvZiB0aGlzIHRoYXQgSSYjMzk7dmUgbWlzc2VkLiBOb3BlLCBpdCYjMzk7cyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIsIGFzIEkgc3VzcGVjdGVkLiBUaGVyZWZvcmUsIG15IGZpbmFsIGRldGVybWluYXRpb24gaXMgY2xlYXI6IFdvcnRoRnV6emluZyB3aWxsIGJlIHNldCB0byBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgRXRoZXJuZXQgZHJpdmVyIChnaWFuZmFyLmMpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MgKE1QQzgzeHgsIE1QQzg1eHgsIE1QQzg2eHgsIExTMTAyMUEpLiBUaGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUgd2l0aCBkZWZhdWx0IG1hY2hpbmUgdHlwZXMpIGFzIGl0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIFNvQyBlbXVsYXRpb24gdG8gYmUgcHJvYmVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDowMS4yMTE2MzQ4MTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODEzMzI2NDA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjAxLjIxMTYzOTcwMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk5MTAyMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1biAyNyAwMTo1Mzo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1xcbmluZGV4IDMyNzFkZTU4NDRmODRiLi44OTIxNWUxZGRjMmRiMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1xcbkBAIC00NjksMTAgKzQ2OSwxMyBAQCBzdGF0aWMgdm9pZCBmcmVlX2dmYXJfZGV2KHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYpXFxuIHtcXG4gXFx0aW50IGksIGo7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcHJpdi1cXHUwMDNlbnVtX2dycHM7IGkrKylcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWEdST1VQUzsgaSsrKVxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgR0ZBUl9OVU1fSVJRUzsgaisrKSB7XFxuLVxcdFxcdFxcdGtmcmVlKHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSk7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XFxuK1xcdFxcdFxcdGlmIChwcml2LVxcdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pIHtcXG4rXFx0XFx0XFx0XFx0aXJxX2Rpc3Bvc2VfbWFwcGluZyhwcml2LVxcdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0tXFx1MDAzZWlycSk7XFxuK1xcdFxcdFxcdFxcdGtmcmVlKHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSk7XFxuK1xcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4gXFx0ZnJlZV9uZXRkZXYocHJpdi1cXHUwMDNlbmRldik7XFxuQEAgLTYxNiw3ICs2MTksNyBAQCBzdGF0aWMgcGh5X2ludGVyZmFjZV90IGdmYXJfZ2V0X2ludGVyZmFjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBzdGF0aWMgaW50IGdmYXJfb2ZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKipwZGV2KVxcbiB7XFxuIFxcdGNvbnN0IGNoYXIgKm1vZGVsO1xcbi1cXHRpbnQgZXJyID0gMCwgaTtcXG4rXFx0aW50IGVyciA9IDAsIGksIGo7XFxuIFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgZ2Zhcl9wcml2YXRlICpwcml2ID0gTlVMTDtcXG5AQCAtNzAyLDggKzcwNSwxMSBAQCBzdGF0aWMgaW50IGdmYXJfb2ZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKipwZGV2KVxcbiBcXHRwcml2LVxcdTAwM2VyeF9saXN0LmNvdW50ID0gMDtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlcnhfcXVldWVfYWNjZXNzKTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhHUk9VUFM7IGkrKylcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWEdST1VQUzsgaSsrKSB7XFxuIFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0ucmVncyA9IE5VTEw7XFxuK1xcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBHRkFSX05VTV9JUlFTOyBqKyspXFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZWdmYXJncnBbaV0uaXJxaW5mb1tqXSA9IE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovXFxuIFxcdGlmIChwcml2LVxcdTAwM2Vtb2RlID09IE1RX01HX01PREUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MDEuNjExMzE0NTc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzczMzU3OTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjExZDhmOThmOGMyNTNlYTc0OWU1YWQzMmYyMmY4NDJmODE5NmM0MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjUzOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbmluZGV4IDMyNzFkZTU4NDRmODRiLi44OTIxNWUxZGRjMmRiMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbkBAIC00NjksMTAgKzQ2OSwxMyBAQCBzdGF0aWMgdm9pZCBmcmVlX2dmYXJfZGV2KHN0cnVjdCBnZmFyX3ByaXZhdGUgKnByaXYpXG4ge1xuIFx0aW50IGksIGo7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZW51bV9ncnBzOyBpKyspXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhHUk9VUFM7IGkrKylcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgR0ZBUl9OVU1fSVJRUzsgaisrKSB7XG4tXHRcdFx0a2ZyZWUocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pO1xuLVx0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbitcdFx0XHRpZiAocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0pIHtcbitcdFx0XHRcdGlycV9kaXNwb3NlX21hcHBpbmcocHJpdi1cdTAwM2VnZmFyZ3JwW2ldLmlycWluZm9bal0tXHUwMDNlaXJxKTtcbitcdFx0XHRcdGtmcmVlKHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdKTtcbitcdFx0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdGZyZWVfbmV0ZGV2KHByaXYtXHUwMDNlbmRldik7XG5AQCAtNjE2LDcgKzYxOSw3IEBAIHN0YXRpYyBwaHlfaW50ZXJmYWNlX3QgZ2Zhcl9nZXRfaW50ZXJmYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbiB7XG4gXHRjb25zdCBjaGFyICptb2RlbDtcbi1cdGludCBlcnIgPSAwLCBpO1xuK1x0aW50IGVyciA9IDAsIGksIGo7XG4gXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7XG4gXHRzdHJ1Y3QgZ2Zhcl9wcml2YXRlICpwcml2ID0gTlVMTDtcbkBAIC03MDIsOCArNzA1LDExIEBAIHN0YXRpYyBpbnQgZ2Zhcl9vZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqKnBkZXYpXG4gXHRwcml2LVx1MDAzZXJ4X2xpc3QuY291bnQgPSAwO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXJ4X3F1ZXVlX2FjY2Vzcyk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhHUk9VUFM7IGkrKylcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWEdST1VQUzsgaSsrKSB7XG4gXHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5yZWdzID0gTlVMTDtcbitcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgR0ZBUl9OVU1fSVJRUzsgaisrKVxuK1x0XHRcdHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdID0gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFBhcnNlIGFuZCBpbml0aWFsaXplIGdyb3VwIHNwZWNpZmljIGluZm9ybWF0aW9uICovXG4gXHRpZiAocHJpdi1cdTAwM2Vtb2RlID09IE1RX01HX01PREUpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjAxLjYxMTMxNTkxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNTI4NjIwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgR2lhbmZhciBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jYCkuIFRoZSBjb3JlIGNoYW5nZXMgYXJlIHdpdGhpbiBgZnJlZV9nZmFyX2RldmAgYW5kIGBnZmFyX29mX2luaXRgLiBJIHNlZSB0aGUgbG9vcCBib3VuZCBpbiBgZnJlZV9nZmFyX2RldmAgaGFzIGJlZW4gZXhwYW5kZWQgZnJvbSBgcHJpdi1cdTAwM2VudW1fZ3Jwc2AgdG8gYE1BWEdST1VQU2AsIGFuZCBub3cgdGhlcmUncyBhbiBgaXJxX2Rpc3Bvc2VfbWFwcGluZ2AgYmVmb3JlIHRoZSBga2ZyZWVgLiBJbiBgZ2Zhcl9vZl9pbml0YCwgdGhleSdyZSBpbml0aWFsaXppbmcgYHByaXYtXHUwMDNlZ2ZhcmdycFtpXS5pcnFpbmZvW2pdYCB0byBgTlVMTGAgYWNyb3NzIGFsbCB0aGUgYE1BWEdST1VQU2AgYW5kIGBHRkFSX05VTV9JUlFTYCBlbnRyaWVzLlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IHJlbGV2YW50IGlzIHRoaXM/IEl0J3MgdGhlIEdpYW5mYXIsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYW4gRXRoZXJuZXQgY29udHJvbGxlciB0eXBpY2FsbHkgZm91bmQgb24gRnJlZXNjYWxlIFBvd2VyUEMgU29DcywgbGlrZSB0aGUgTVBDODV4eC4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXM6IGlzIHRoaXMgZXZlbiByZW1vdGVseSBleHBsb2l0YWJsZSBvciB0ZXN0YWJsZSBpbiBhIG1vZGVybiB2aXJ0dWFsaXplZCBzZXR1cD8gQ2FuIHdlIGV2ZW4gcmVhY2ggdGhpcyBjb2RlIHBhdGg/XG5cbkhtbSwgSSByZW1lbWJlciBRRU1VIGhhdmluZyBzb21lIGU1MDAgZW11bGF0aW9uLCB3aGljaCBpbmNsdWRlcyBHaWFuZmFyLCBvciwgcmF0aGVyLCBlVFNFQy4gU28sIGVtdWxhdGlvbiBpc24ndCAqZW50aXJlbHkqIG91dCBvZiB0aGUgcXVlc3Rpb24uIEJ1dCB0aGVuIEkgaGF2ZSB0byB0aGluaywgZG9lcyBzeXprYWxsZXIgZXZlbiBmdXp6IHRoaXMgdGhpbmc/IEl0J3MgbW9zdGx5IGdlYXJlZCB0b3dhcmRzIHg4Nl82NCwgYXJtNjQsIGFuZCB0aGUgbGlrZS4gSXQncyBhIGJpdCBvZiBhIGxvbmcgc2hvdC4gQnV0LCBpZiB0aGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQsIHRoZW4gaXQncyAqcG9zc2libHkqIHJlYWNoYWJsZS5cblxuQWgsIHJpZ2h0LCBpdCdzIGEgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciEgVGhhdCBtZWFucyBpdCByZWxpZXMgb24gZGV2aWNlIHRyZWUuIFRoYXQgYWRkcyBhbm90aGVyIGxheWVyIG9mIGNvbXBsZXhpdHkuIENhbiBzeXprYWxsZXIgaW5qZWN0IHBsYXRmb3JtIGRldmljZXMsIG9yIGlzIGl0IGdvaW5nIHRvIGJlIGEgY29tcGxldGUgZGVhZCBlbmQ/IEkga25vdyBzeXprYWxsZXIgaGFzICpzb21lKiBwbGF0Zm9ybSBkZXZpY2Ugc3VwcG9ydCwgYnV0IGl0J3Mgbm90IGFsd2F5cyBzdHJhaWdodGZvcndhcmQuIFRoaXMgaXMgZ29pbmcgdG8gcmVxdWlyZSBtZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgdGhpcyBkcml2ZXIsIHRvIHNlZSBpZiBhbnl0aGluZyBpcyBldmVuIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDowNy43NjQxNzk0NjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1NzA2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2lhbmZhclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz02NT1jb25maWcgRlNMX1BRX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTY4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo2OTpcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGJ1cyB1c2VkIGJ5IHRoZSBnaWFuZmFyIGFuZCBVQ0MgZHJpdmVycy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy03MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MDcuODE4NzUzMTI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYwNjkxMzAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgR2lhbmZhcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBgZ2lhbmZhci5jYCBFdGhlcm5ldCBkcml2ZXIgYXJlIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIncyBLY29uZmlnIGZpbGUuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBGcmVlc2NhbGUgRXRoZXJuZXQgY29udHJvbGxlcnMsIHRoYXQgcG9pbnRzIG1lIGRpcmVjdGx5IHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCAqZXhwZWN0KiB0byBmaW5kIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRoYXQgZ292ZXJuIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIGBnaWFuZmFyLmNgIHdpdGhpbiB0aGUga2VybmVsLiBUaW1lIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgaGF2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjEwLjQyNTY2ODExOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjQ3NTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnaWFuZmFyXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0dJQU5GQVIpICs9IGdpYW5mYXJfZHJpdmVyLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvTWFrZWZpbGU6MTc6Z2lhbmZhcl9kcml2ZXItb2JqcyA6PSBnaWFuZmFyLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9NYWtlZmlsZS0xOC1cXHRcXHRnaWFuZmFyX2V0aHRvb2wub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDoxMC40NzgxNDY3NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTIxODcxNDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBHSUFORkFSIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHNlZWluZyBgQ09ORklHX0dJQU5GQVJgLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcywgXCJXaGF0J3MgdGhlIGRlcGVuZGVuY3kgY2hhaW4gaGVyZT9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBmZWF0dXJlcywgb3IgdW5kZXJseWluZyBoYXJkd2FyZSByZXF1aXJlbWVudHMgYXJlIGNvbnRpbmdlbnQgdXBvbiBgQ09ORklHX0dJQU5GQVJgIGJlaW5nIGVuYWJsZWQuIFRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGltcGFjdCBvZiBlbmFibGluZywgb3IgZGlzYWJsaW5nIGl0LiBGcm9tIHRoZXJlIEkgbmVlZCB0byBkZXRlcm1pbmUgd2hhdCdzIGdvaW5nIHRvIGNvbWUgYWxvbmcgZm9yIHRoZSByaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MTMuMDAwMDE5OTE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTk1OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBHSUFORkFSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTg5PWNvbmZpZyBVR0VUSF9UWF9PTl9ERU1BTkRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjkzOmNvbmZpZyBHSUFORkFSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkdpYW5mYXIgRXRoZXJuZXRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjU0OjEzLjA1MzAxODQ2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTYyMTYzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEZyZWVzY2FsZSBFdGhlcm5ldCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXJzIGluIHRoaXMga2VybmVsLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvYCBkaXJlY3RvcnkuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGFyb3VuZCBsaW5lIDkzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIG1lYXQgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb3IgaW1wb3J0YW50IG9wdGlvbnMgc3RhcnRzLCBJIHN1c3BlY3QsIG9yIHBvc3NpYmx5IHdoZXJlIGEgc3BlY2lmaWMgZmFtaWx5IG9yIGtleSBzZXR0aW5nIGJlZ2lucy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZXNlIG9wdGlvbnMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEV0aGVybmV0IGRyaXZlciBhcmNoaXRlY3R1cmUgb24gRnJlZXNjYWxlIFNvQ3MuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYXJlYXMgdGhhdCBuZWVkIGltbWVkaWF0ZSBhdHRlbnRpb24gb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWxseSBmb3Igb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIGlzc3VlIEkndmUgYmVlbiBjb25zaWRlcmluZy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MTYuNDQ5MjM2NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5MDpcXHRcXHRib29sIFxcXCJUcmFuc21pdCBvbiBEZW1hbmQgc3VwcG9ydFxcXCJcXG4gIDkxOlxcdFxcdGRlcGVuZHMgb24gVUNDX0dFVEhcXG4gIDkyOlxcdFxcbiAgOTM6XFx0Y29uZmlnIEdJQU5GQVJcXG4gIDk0OlxcdFxcdHRyaXN0YXRlIFxcXCJHaWFuZmFyIEV0aGVybmV0XFxcIlxcbiAgOTU6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfRE1BXFxuICA5NjpcXHRcXHRzZWxlY3QgRlNMX1BRX01ESU9cXG4gIDk3OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDk4OlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gIDk5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxMDA6XFx0XFx0aGVscFxcbiAxMDE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4M3h4LCBNUEM4NXh4LFxcbiAxMDI6XFx0XFx0ICBhbmQgTVBDODZ4eCBmYW1pbHkgb2YgY2hpcHMsIHRoZSBlVFNFQyBvbiBMUzEwMjFBIGFuZCB0aGUgRkVDXFxuIDEwMzpcXHRcXHQgIG9uIHRoZSA4NTQwLlxcbiAxMDQ6XFx0XFxuIDEwNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWdcXFwiXFxuIDEwNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnXFxcIlxcbiAxMDc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZ1xcXCJcXG4gMTA4OlxcdFxcbiAxMDk6XFx0ZW5kaWYgIyBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDoxNi40NDkyOTYwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzY0Mzg1OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGhpcyBQbGF0Zm9ybSBEcml2ZXI6IEEgVGFjdGljYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoaXMgY29kZSBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiByZWFjaCBpdC4gVGhlIGNyaXRpY2FsIGZhY3RvciBpcyBgSEFTX0RNQWAsIGFuZCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBoYW5kbGVzIHBsYXRmb3JtIGRyaXZlcnMuICBHZW5lcmFsbHksIHN5emthbGxlciBuZWVkcyB0byBiZSBhYmxlIHRvIGVpdGhlciBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMgb3IgcGxhdGZvcm0gZGV2aWNlcyB0byBldmVuIGhhdmUgYSBzaG90IGF0IGZ1enppbmcgc29tZXRoaW5nIGxpa2UgdGhpcy5cblxuSSdtIHJlbWVtYmVyaW5nIHRoYXQgd2l0aCBQb3dlclBDL0ZyZWVzY2FsZSwgd2hpY2ggc2VlbXMgcmVsZXZhbnQgaGVyZSBiZWNhdXNlIG9mIHRoZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBMUzEwMjFBKSwgc3l6a2FsbGVyIGlzbid0IHVzdWFsbHkgc2V0IHVwIHRvIGluamVjdCBhcmJpdHJhcnkgZGV2aWNlIHRyZWUgbm9kZXMgdW5sZXNzIGl0J3Mgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIEhvd2V2ZXIsIHRoZXJlJ3MgYWx3YXlzIHRoZSBob3BlLCBpc24ndCB0aGVyZT8gSSdtIHJlY2FsbGluZyBzb21ldGhpbmcgbGlrZSBgc3l6X2Rldl9wbGF0Zm9ybV9hZGRgLCBidXQgbXkgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MgdXN1YWxseSBxdWl0ZSBsaW1pdGVkIGluIGl0cyBjYXBhYmlsaXRpZXMuXG5cbkFoYSEgVGhlIExTMTAyMUEgaXMgQVJNLCBzbyBhdCBsZWFzdCBpdCAqY291bGQqIGJlIGNvbXBpbGVkIGFuZCBwb3RlbnRpYWxseSBydW4gb24gQVJNLiBCdXQgaXMgaXQgd29ydGggdGhlIGVmZm9ydD8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLlxuXG5JIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzICphbnkqIHdheSB0byBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgY29kZS4gTGV0J3Mgc2VlLi4uIGBnZmFyX29mX2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgcHJvYmUsIGFuZCBgZnJlZV9nZmFyX2RldmAgZHVyaW5nIHByb2JlIGZhaWx1cmUgb3IgcmVtb3ZhbC4gSWYgdGhlIGRldmljZSBpc24ndCBwcmVzZW50LCB3ZSdyZSBkZWFkIGluIHRoZSB3YXRlci4gSXMgdGhlcmUgc29tZSBzb2Z0d2FyZSBpbnRlcmZhY2UgdGhhdCBtaWdodCBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlPyBOb3QgbGlrZWx5LCBpdCdzIGEgcGh5c2ljYWwgRXRoZXJuZXQgY29udHJvbGxlci5cblxuSG1tLCBtYXliZSB0aHJvdWdoIGEgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZT8gTm8sIHdhaXQsIGl0J3MgYSBwbGF0Zm9ybSBkZXZpY2UuIE9LLCB0aGF0J3Mgbm90IGdvaW5nIHRvIHdvcmsuXG5cbk9rYXksIHRpbWUgdG8gZGlnIGRlZXBlci4gSSdsbCBuZWVkIHRvIGNoZWNrIGBnaWFuZmFyLmNgIGl0c2VsZiB0byBzZWUgZXhhY3RseSBob3cgdGhpcyB0aGluZyBnZXRzIHByb2JlZC4gVGhhdCB3aWxsIHRlbGwgdGhlIHRhbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTo1NDoyMi44MTM2ODM1OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDA4NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdmYXJfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNjAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzozMTYxOnN0YXRpYyBpbnQgZ2Zhcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0zNjAwPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGdmYXJfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zNjA1LVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzozNjA2OlxcdC5wcm9iZSA9IGdmYXJfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zNjA3LVxcdC5yZW1vdmUgPSBnZmFyX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MjIuODY3Njk1MzY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzcxNzI2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgZnJvbSB0aGUgc3RhcnQ6IHRoaXMgaXMgYSBzdGFuZGFyZCBwbGF0Zm9ybSBkcml2ZXIuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIGEgdmVyeSBzcGVjaWZpYywgYW5kIEkgbWVhbiAqc3BlY2lmaWMqLCBtYWNoaW5lIHR5cGUgZW11bGF0aW9uLCB0aGlzIGRldmljZSBpcyBzaW1wbHkgbm90IGdvaW5nIHRvIGJlIHByZXNlbnQuIFRoaW5rIG9mIGl0IOKAkyBzb21ldGhpbmcgbGlrZSwgc2F5LCBhIGRlZGljYXRlZCBgcWVtdS1zeXN0ZW0tYXJtYCB3aXRoIGFuIGxzMTAyMWEgYm9hcmQsIG9yIG1heWJlIGEgZGVkaWNhdGVkIFBvd2VyUEMgbGlrZSBhbiBtcGM4NTQ0ZHMuIEJ1dCBpbiBTeXprYWxsZXIsIGluIHRoZSBlbnZpcm9ubWVudHMgSSdtIHVzZWQgdG8sIHdlJ3JlIHR5cGljYWxseSBvbiBgcWVtdS1zeXN0ZW0teDg2XzY0YCBvciBwZXJoYXBzIGFuIGBhYXJjaDY0YCB2aXJ0IG1hY2hpbmUuXG5cblRoZXJlZm9yZSwgdW5kZXIgdGhlc2Ugc3RhbmRhcmQgY29uZGl0aW9ucywgSSdkIHNheSB0aGlzIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gSXQncyBhIG5vbi1zdGFydGVyIGZvciBmdXp6aW5nIGFzIGl0IHN0YW5kcy4gU28sIEknbSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZzogZmFsc2VgLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjb25jaXNlIGJ1dCBhY2N1cmF0ZTogSXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgRnJlZXNjYWxlIEdpYW5mYXIgRXRoZXJuZXQgY29udHJvbGxlcnMgdXNlZCBpbiB0aGUgTVBDODN4eC84NXh4Lzg2eHggYW5kIExTMTAyMUEgU29Dcy4gVGhlc2UgdGFyZ2V0cyBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHVubGVzcyB3ZSBzcGVjaWZpY2FsbHksIGFuZCBJIG1lYW4gKmV4cGxpY2l0bHkqLCBlbXVsYXRlIHRob3NlIHZlcnkgc3BlY2lmaWMgU3lzdGVtLW9uLUNoaXAgKFNvQykgc3lzdGVtcy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIHBlcmhhcHMgdGhlcmUncyBzb21lIG9ic2N1cmUgdmlydHVhbCBvciBlbXVsYXRlZCB2ZXJzaW9uIG9mIHRoaXMgdGhhdCBJJ3ZlIG1pc3NlZC4gTm9wZSwgaXQncyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIsIGFzIEkgc3VzcGVjdGVkLiBUaGVyZWZvcmUsIG15IGZpbmFsIGRldGVybWluYXRpb24gaXMgY2xlYXI6IFdvcnRoRnV6emluZyB3aWxsIGJlIHNldCB0byBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQxMiwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6NTQ6MjkuMzQ0ODcwMTE5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBHaWFuZmFyIEV0aGVybmV0IGRyaXZlciAoZ2lhbmZhci5jKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzIChNUEM4M3h4LCBNUEM4NXh4LCBNUEM4Nnh4LCBMUzEwMjFBKS4gVGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIHdpdGggZGVmYXVsdCBtYWNoaW5lIHR5cGVzKSBhcyBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBTb0MgZW11bGF0aW9uIHRvIGJlIHByb2JlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgR2lhbmZhciBFdGhlcm5ldCBkcml2ZXIgKGdpYW5mYXIuYyksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBGcmVlc2NhbGUgU29DcyAoTVBDODN4eCwgTVBDODV4eCwgTVBDODZ4eCwgTFMxMDIxQSkuIFRoaXMgY29kZSBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSB3aXRoIGRlZmF1bHQgbWFjaGluZSB0eXBlcykgYXMgaXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgU29DIGVtdWxhdGlvbiB0byBiZSBwcm9iZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow2tthf[1] Phase: Running StartedAt: 2026-06-27 01:54:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tthf[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-27 01:54:40 +0000 UTC FinishedAt: 2026-06-27 01:54:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}