Name: series-workflow52hfz Phase: Failed StartedAt: 2026-07-06 07:03:38 +0000 UTC FinishedAt: 2026-07-06 07:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow52hfz[0] Phase: Succeeded StartedAt: 2026-07-06 07:03:38 +0000 UTC FinishedAt: 2026-07-06 07:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow52hfz[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 07:03:38 +0000 UTC FinishedAt: 2026-07-06 07:18:18 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRXRoZXJuZXQgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlbjc1ODEsIGFuNzU4MykgYW5kIHJlbGllcyBvbiBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzhiOWRlYTY2NDIwZjc4MmI0MWJmZmQ3ZDJmNDQzYjI4NWEwMzVjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDc6MTc6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbmluZGV4IDU5MDAxZmQ0YjZmNzQwLi44ZTRlNzljMWU0YzI2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbkBAIC0yNzY2LDE4ICYjNDM7Mjc2NiwxMyBAQCBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgICAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdClcbiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0LFxuJiM0MztcdFx0XHRcdCAgdTMyIGNoYW5uZWwpXG4ge1xuLVx0dTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtXHUwMDNlY2xhc3NpZCkgJSBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUztcbiBcdHUzMiByYXRlID0gZGl2X3U2NChvcHQtXHUwMDNlcmF0ZSwgMTAwMCkgXHUwMDNjXHUwMDNjIDM7IC8qIGticHMgKi9cbiBcdGludCBlcnI7XG4gXG4tXHRpZiAob3B0LVx1MDAzZXBhcmVudF9jbGFzc2lkICE9IFRDX0hUQl9DTEFTU0lEX1JPT1QpIHtcbi1cdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWRcJiMzNDspO1xuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdH1cbi1cbiBcdGVyciA9IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KGRldiwgY2hhbm5lbCwgcmF0ZSwgb3B0LVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGVycilcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssXG5AQCAtMjc4Niw2ICYjNDM7Mjc4MSwyMCBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgY2hhbm5lbCA9IFRDX0hfTUlOKG9wdC1cdTAwM2VjbGFzc2lkKSAlIEFJUk9IQV9OVU1fUU9TX0NIQU5ORUxTO1xuJiM0MztcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKCF0ZXN0X2JpdChjaGFubmVsLCBkZXYtXHUwMDNlcW9zX3NxX2JtYXApKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0Qob3B0LVx1MDAzZWV4dGFjaywgXCYjMzQ7aW52YWxpZCBxdWV1ZSBpZFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKG5ldGRldiwgb3B0LCBjaGFubmVsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXG4ge1xuQEAgLTI3OTQsNiAmIzQzOzI4MDMsMTEgQEAgc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX2FsbG9jX2xlYWZfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiBcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGRldi1cdTAwM2VxZG1hO1xuIFxuJiM0MztcdGlmIChvcHQtXHUwMDNlcGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qIEhlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVxdWVzdGVkIFFETUEgY2hhbm5lbCBpcyBub3QgYWxyZWFkeVxuIFx0ICogaW4gdXNlIGJ5IGFub3RoZXIgbmV0X2RldmljZSBydW5uaW5nIG9uIHRoZSBzYW1lIFFETUEgYmxvY2suXG4gXHQgKi9cbkBAIC0yODAzLDcgJiM0MzsyODE3LDcgQEAgc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX2FsbG9jX2xlYWZfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0cmV0dXJuIC1FQlVTWTtcbiBcdH1cbiBcbi1cdGVyciA9IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKG5ldGRldiwgb3B0KTtcbiYjNDM7XHRlcnIgPSBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKG5ldGRldiwgb3B0LCBjaGFubmVsKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3I7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM4YjlkZWE2NjQyMGY3ODJiNDFiZmZkN2QyZjQ0M2IyODVhMDM1Y2YKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA3OjE3OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMKaW5kZXggNTkwMDFmZDRiNmY3NDAuLjhlNGU3OWMxZTRjMjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMKQEAgLTI3NjYsMTggJiM0MzsyNzY2LDEzIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfc2V0X3R4X3JhdGVfbGltaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJCSAgICAgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpCiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiYjNDM7CQkJCSAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdCwKJiM0MzsJCQkJICB1MzIgY2hhbm5lbCkKIHsKLQl1MzIgY2hhbm5lbCA9IFRDX0hfTUlOKG9wdC0mZ3Q7Y2xhc3NpZCkgJSBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUzsKIAl1MzIgcmF0ZSA9IGRpdl91NjQob3B0LSZndDtyYXRlLCAxMDAwKSAmbHQ7Jmx0OyAzOyAvKiBrYnBzICovCiAJaW50IGVycjsKIAotCWlmIChvcHQtJmd0O3BhcmVudF9jbGFzc2lkICE9IFRDX0hUQl9DTEFTU0lEX1JPT1QpIHsKLQkJTkxfU0VUX0VSUl9NU0dfTU9EKG9wdC0mZ3Q7ZXh0YWNrLCAmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWQmIzM0Oyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQogCWVyciA9IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KGRldiwgY2hhbm5lbCwgcmF0ZSwgb3B0LSZndDtxdWFudHVtKTsKIAlpZiAoZXJyKQogCQlOTF9TRVRfRVJSX01TR19NT0Qob3B0LSZndDtleHRhY2ssCkBAIC0yNzg2LDYgJiM0MzsyNzgxLDIwIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAomIzQzOwkJCQkgICAgICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KQomIzQzO3sKJiM0MzsJdTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtJmd0O2NsYXNzaWQpICUgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFM7CiYjNDM7CXN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKJiM0MzsKJiM0MzsJaWYgKCF0ZXN0X2JpdChjaGFubmVsLCBkZXYtJmd0O3Fvc19zcV9ibWFwKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKG9wdC0mZ3Q7ZXh0YWNrLCAmIzM0O2ludmFsaWQgcXVldWUgaWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZShuZXRkZXYsIG9wdCwgY2hhbm5lbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX2FsbG9jX2xlYWZfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCQkJICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KQogewpAQCAtMjc5NCw2ICYjNDM7MjgwMywxMSBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCXN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKIAlzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBkZXYtJmd0O3FkbWE7CiAKJiM0MzsJaWYgKG9wdC0mZ3Q7cGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKG9wdC0mZ3Q7ZXh0YWNrLCAmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCS8qIEhlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVxdWVzdGVkIFFETUEgY2hhbm5lbCBpcyBub3QgYWxyZWFkeQogCSAqIGluIHVzZSBieSBhbm90aGVyIG5ldF9kZXZpY2UgcnVubmluZyBvbiB0aGUgc2FtZSBRRE1BIGJsb2NrLgogCSAqLwpAQCAtMjgwMyw3ICYjNDM7MjgxNyw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCXJldHVybiAtRUJVU1k7CiAJfQogCi0JZXJyID0gYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWUobmV0ZGV2LCBvcHQpOwomIzQzOwllcnIgPSBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKG5ldGRldiwgb3B0LCBjaGFubmVsKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycm9yOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSByZWZhY3RvcmVkIHNvbWUgdHJhZmZpYyBjb250cm9sIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZXkmIzM5O3ZlIHVwZGF0ZWQgYGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlYCBhbmQgYGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZWAgdG8gdXRpbGl6ZSB0aGlzIG5ldyBgYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZWAgaGVscGVyLCB3aGljaCBzdWdnZXN0cyBhbiBpbXByb3ZlbWVudCBpbiBob3cgdGhleSBoYW5kbGUgcmF0ZSBsaW1pdGluZy4gQSBuZXcgY2hlY2ssIGAhdGVzdF9iaXQoY2hhbm5lbCwgZGV2LSZndDtxb3Nfc3FfYm1hcClgLCB3YXMgaW50cm9kdWNlZCBpbiBgYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWVgLCB3aGljaCBpcyBzb21ldGhpbmcgdG8gaW52ZXN0aWdhdGUgLSBpdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50LCBidXQgdGhlIHNwZWNpZmljIGNvbnRleHQgaXMgdW5jbGVhciB3aXRob3V0IGZ1cnRoZXIgZGlnZ2luZy4gQW5kLCB0aGV5JiMzOTt2ZSBtb3ZlZCB0aGUgYG9wdC0mZ3Q7cGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVGAgY2hlY2sgZnJvbSBgbW9kaWZ5X3F1ZXVlYCB0byBgYWxsb2NfbGVhZl9xdWV1ZWAsIHdoaWNoIHByb2JhYmx5IGNsYXJpZmllcyB0aGUgbG9naWMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoZSBIVEIgKEhpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQpIHN5c3RlbS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIG9uIGEgYnJvYWRlciBzY2FsZS4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhbiBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlc2UgdHlwZXMgb2YgbW9kaWZpY2F0aW9ucyAqY2FuKiBzb21ldGltZXMgcHJlc2VudCBjaGFsbGVuZ2VzIGluIGNlcnRhaW4gc2V0dXBzLCBJJiMzOTttIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIGRyaXZlciYjMzk7cyByZWFjaC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWxpemF0aW9uIGNvbnNpZGVyYXRpb25zIGhlcmUuIElzIGBhaXJvaGFfZXRoLmNgIGEgcGxhdGZvcm0gZHJpdmVyIG9yIGEgUENJIG9uZT8gVGhlIGBhaXJvaGFfZXRoYCBpZGVudGlmaWVyIGlzIHRoZSBrZXkgaGVyZTsgSSBuZWVkIHRvIGxvb2sgZm9yIHRoYXQgc3RyaW5nIGluIHRoZSBkaXJlY3RvcnkgYW5kIHBvdGVudGlhbGx5IGNyb3NzLXJlZmVyZW5jZSBpdCB3aXRoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgc2VhcmNoIHRocm91Z2ggdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCBkaXJlY3RvcnkgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgZHJpdmVyJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgdGhpcyBjaGFuZ2UgaGFzIGluIHZhcmlvdXMgdmlydHVhbGl6ZWQgb3IgY29udGFpbmVyaXplZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zNzMzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NDE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTgxMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbnB1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4MjE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGxhdGZvcm0gRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIg4oCTIG5vdCBpZGVhbCBmb3IgbXkgcHVycG9zZXMsIGJ1dCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRvLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIHByb2JlIGl0IHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJcyB0aGVyZSBhIGJhY2tkb29yPyBPciBpcyBpdCBsb2NrZWQgZG93biB0aWdodGx5IHRvIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY2llcz8gUGxhdGZvcm0gZHJpdmVycywgZ2VuZXJhbGx5LCBsZWFuIGhlYXZpbHkgb24gZGV2aWNlIHRyZWUgbm9kZXMsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgc3RhcnQgbG9va2luZy4KCkFscmlnaHQsIG5vIGx1Y2sgd2l0aCB2aXJ0dWFsaXphdGlvbi4gVGhpcyBpcyB0aWVkIHRvIGFuIEFpcm9oYSBTb0MgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBtZWFucyB3ZSYjMzk7cmUgaW4gc3BlY2lmaWMtaGFyZHdhcmUgdGVycml0b3J5LiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgYW5kIGl0JiMzOTtzIHZlbmRvci1zcGVjaWZpYywgSSBjYW4gcHJvYmFibHkgcnVsZSBvdXQgYW55IGVhc3kgcmVhY2hhYmlsaXR5IGluIHNvbWV0aGluZyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc29tZSBpbmNyZWRpYmx5IHNwZWNpZmljIGVtdWxhdGlvbiBzZXR1cCDigJMgd2hpY2gsIGtub3dpbmcgb3VyIGN1cnJlbnQgaW5mcmFzdHJ1Y3R1cmUsIHdlJiMzOTtyZSB1bmxpa2VseSB0byBoYXZlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgdGhpcyBpcyBldmVuIFBDSS1iYXNlZCBvciBzb21ldGhpbmcgZW50aXJlbHkgZGlmZmVyZW50Li4uIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzcxND1zdGF0aWMgY29uc3Qgc3RydWN0IGFpcm9oYV9ldGhfc29jX2RhdGEgYW43NTgzX3NvY19kYXRhID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzcyNjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcyNy1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsZW43NTgxLWV0aFwmIzM0OywgLmRhdGEgPSBcdTAwMjZlbjc1ODFfc29jX2RhdGEgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTY2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGFpcm9oYV9ucHVfc29jX2RhdGEgYW43NTgzX25wdV9zb2NfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2Fpcm9oYV9ucHVfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2Fpcm9oYSxlbjc1ODEtbnB1XCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmVuNzU4MV9ucHVfc29jX2RhdGEgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzE0CgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCYjMzk7cyBkZXNpZ25lZCBmb3IgdGhlIEFpcm9oYSBFTjc1ODEvQU43NTgzIFNvQ3MsIHNwZWNpZmljYWxseSB1c2luZyBhbiBPRiAoZGV2aWNlIHRyZWUpIGZyYW1ld29yay4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIEkgZnV6eiB0aGlzIGVmZmVjdGl2ZWx5PyBJIG5lZWQgdG8gY29uc2lkZXIgd2hlcmUgdGhpcyBjb2RlIGlzIGFjdHVhbGx5ICp1c2VkKi4gQW5kIGhvbmVzdGx5LCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGdvaW5nIHRvIGJlIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSB3aXRob3V0IHNvbWUgdmVyeSBzcGVjaWFsaXplZCBoYXJkd2FyZSBlbXVsYXRpb24uIFdpdGhvdXQgZGlyZWN0IGFjY2VzcyB0byB0aGUgYWN0dWFsIHRhcmdldCBoYXJkd2FyZSwgYW55IGZ1enppbmcgZWZmb3J0cyBoZXJlIHdvdWxkIGJlIGZ1dGlsZS4gVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiBXb3J0aEZ1enppbmc9ZmFsc2UuIEl0JiMzOTtzIGp1c3Qgbm90IHByYWN0aWNhbCBnaXZlbiB0aGUgbGltaXRhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DcyAoZW43NTgxLCBhbjc1ODMpIGFuZCByZWxpZXMgb24gZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNzo1MC4xNzA4NzQ4OTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIxMzE2OTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE3OjUwLjE3MDg4MTY2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5MjgyNDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzhiOWRlYTY2NDIwZjc4MmI0MWJmZmQ3ZDJmNDQzYjI4NWEwMzVjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCA2IDA3OjE3OjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXFxuaW5kZXggNTkwMDFmZDRiNmY3NDAuLjhlNGU3OWMxZTRjMjZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXFxuQEAgLTI3NjYsMTggKzI3NjYsMTMgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9zZXRfdHhfcmF0ZV9saW1pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KVxcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfc2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0LFxcbitcXHRcXHRcXHRcXHQgIHUzMiBjaGFubmVsKVxcbiB7XFxuLVxcdHUzMiBjaGFubmVsID0gVENfSF9NSU4ob3B0LVxcdTAwM2VjbGFzc2lkKSAlIEFJUk9IQV9OVU1fUU9TX0NIQU5ORUxTO1xcbiBcXHR1MzIgcmF0ZSA9IGRpdl91NjQob3B0LVxcdTAwM2VyYXRlLCAxMDAwKSBcXHUwMDNjXFx1MDAzYyAzOyAvKiBrYnBzICovXFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAob3B0LVxcdTAwM2VwYXJlbnRfY2xhc3NpZCAhPSBUQ19IVEJfQ0xBU1NJRF9ST09UKSB7XFxuLVxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChvcHQtXFx1MDAzZWV4dGFjaywgXFxcImludmFsaWQgcGFyZW50IGNsYXNzaWRcXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcdH1cXG4tXFxuIFxcdGVyciA9IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KGRldiwgY2hhbm5lbCwgcmF0ZSwgb3B0LVxcdTAwM2VxdWFudHVtKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cXHUwMDNlZXh0YWNrLFxcbkBAIC0yNzg2LDYgKzI3ODEsMjAgQEAgc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXFxuK3tcXG4rXFx0dTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtXFx1MDAzZWNsYXNzaWQpICUgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFM7XFxuK1xcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4rXFxuK1xcdGlmICghdGVzdF9iaXQoY2hhbm5lbCwgZGV2LVxcdTAwM2Vxb3Nfc3FfYm1hcCkpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cXHUwMDNlZXh0YWNrLCBcXFwiaW52YWxpZCBxdWV1ZSBpZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGFpcm9oYV90Y19odGJfc2V0X3JhdGUobmV0ZGV2LCBvcHQsIGNoYW5uZWwpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXFxuIHtcXG5AQCAtMjc5NCw2ICsyODAzLDExIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gXFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gZGV2LVxcdTAwM2VxZG1hO1xcbiBcXG4rXFx0aWYgKG9wdC1cXHUwMDNlcGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0Qob3B0LVxcdTAwM2VleHRhY2ssIFxcXCJpbnZhbGlkIHBhcmVudCBjbGFzc2lkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBIZXJlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVlc3RlZCBRRE1BIGNoYW5uZWwgaXMgbm90IGFscmVhZHlcXG4gXFx0ICogaW4gdXNlIGJ5IGFub3RoZXIgbmV0X2RldmljZSBydW5uaW5nIG9uIHRoZSBzYW1lIFFETUEgYmxvY2suXFxuIFxcdCAqL1xcbkBAIC0yODAzLDcgKzI4MTcsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbiBcXHR9XFxuIFxcbi1cXHRlcnIgPSBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShuZXRkZXYsIG9wdCk7XFxuK1xcdGVyciA9IGFpcm9oYV90Y19odGJfc2V0X3JhdGUobmV0ZGV2LCBvcHQsIGNoYW5uZWwpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycm9yO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTc6NTAuNjMwNzU3NzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NzUzMjc3NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DcyAoZW43NTgxLCBhbjc1ODMpIGFuZCByZWxpZXMgb24gZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzOGI5ZGVhNjY0MjBmNzgyYjQxYmZmZDdkMmY0NDNiMjg1YTAzNWNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNzo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5pbmRleCA1OTAwMWZkNGI2Zjc0MC4uOGU0ZTc5YzFlNGMyNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtMjc2NiwxOCArMjc2NiwxMyBAQCBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgICAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdClcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfc2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitcdFx0XHRcdCAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdCxcbitcdFx0XHRcdCAgdTMyIGNoYW5uZWwpXG4ge1xuLVx0dTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtXHUwMDNlY2xhc3NpZCkgJSBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUztcbiBcdHUzMiByYXRlID0gZGl2X3U2NChvcHQtXHUwMDNlcmF0ZSwgMTAwMCkgXHUwMDNjXHUwMDNjIDM7IC8qIGticHMgKi9cbiBcdGludCBlcnI7XG4gXG4tXHRpZiAob3B0LVx1MDAzZXBhcmVudF9jbGFzc2lkICE9IFRDX0hUQl9DTEFTU0lEX1JPT1QpIHtcbi1cdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwiaW52YWxpZCBwYXJlbnQgY2xhc3NpZFwiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4tXG4gXHRlcnIgPSBhaXJvaGFfcWRtYV9zZXRfdHhfcmF0ZV9saW1pdChkZXYsIGNoYW5uZWwsIHJhdGUsIG9wdC1cdTAwM2VxdWFudHVtKTtcbiBcdGlmIChlcnIpXG4gXHRcdE5MX1NFVF9FUlJfTVNHX01PRChvcHQtXHUwMDNlZXh0YWNrLFxuQEAgLTI3ODYsNiArMjc4MSwyMCBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KVxuK3tcbitcdHUzMiBjaGFubmVsID0gVENfSF9NSU4ob3B0LVx1MDAzZWNsYXNzaWQpICUgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFM7XG4rXHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG4rXG4rXHRpZiAoIXRlc3RfYml0KGNoYW5uZWwsIGRldi1cdTAwM2Vxb3Nfc3FfYm1hcCkpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwiaW52YWxpZCBxdWV1ZSBpZFwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRyZXR1cm4gYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZShuZXRkZXYsIG9wdCwgY2hhbm5lbCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0XHRcdCAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdClcbiB7XG5AQCAtMjc5NCw2ICsyODAzLDExIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG4gXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBkZXYtXHUwMDNlcWRtYTtcbiBcbitcdGlmIChvcHQtXHUwMDNlcGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0Qob3B0LVx1MDAzZWV4dGFjaywgXCJpbnZhbGlkIHBhcmVudCBjbGFzc2lkXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdC8qIEhlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVxdWVzdGVkIFFETUEgY2hhbm5lbCBpcyBub3QgYWxyZWFkeVxuIFx0ICogaW4gdXNlIGJ5IGFub3RoZXIgbmV0X2RldmljZSBydW5uaW5nIG9uIHRoZSBzYW1lIFFETUEgYmxvY2suXG4gXHQgKi9cbkBAIC0yODAzLDcgKzI4MTcsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRyZXR1cm4gLUVCVVNZO1xuIFx0fVxuIFxuLVx0ZXJyID0gYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWUobmV0ZGV2LCBvcHQpO1xuK1x0ZXJyID0gYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZShuZXRkZXYsIG9wdCwgY2hhbm5lbCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm9yO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTc6NTAuNjMwNzU5MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODM3MDc1MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWlyb2hhIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY2AuIEl0IHNlZW1zIHRoZXkndmUgcmVmYWN0b3JlZCBzb21lIHRyYWZmaWMgY29udHJvbCBmdW5jdGlvbnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5J3ZlIHVwZGF0ZWQgYGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlYCBhbmQgYGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZWAgdG8gdXRpbGl6ZSB0aGlzIG5ldyBgYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZWAgaGVscGVyLCB3aGljaCBzdWdnZXN0cyBhbiBpbXByb3ZlbWVudCBpbiBob3cgdGhleSBoYW5kbGUgcmF0ZSBsaW1pdGluZy4gQSBuZXcgY2hlY2ssIGAhdGVzdF9iaXQoY2hhbm5lbCwgZGV2LVx1MDAzZXFvc19zcV9ibWFwKWAsIHdhcyBpbnRyb2R1Y2VkIGluIGBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZWAsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBpbnZlc3RpZ2F0ZSAtIGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gcXVldWUgbWFuYWdlbWVudCwgYnV0IHRoZSBzcGVjaWZpYyBjb250ZXh0IGlzIHVuY2xlYXIgd2l0aG91dCBmdXJ0aGVyIGRpZ2dpbmcuIEFuZCwgdGhleSd2ZSBtb3ZlZCB0aGUgYG9wdC1cdTAwM2VwYXJlbnRfY2xhc3NpZCAhPSBUQ19IVEJfQ0xBU1NJRF9ST09UYCBjaGVjayBmcm9tIGBtb2RpZnlfcXVldWVgIHRvIGBhbGxvY19sZWFmX3F1ZXVlYCwgd2hpY2ggcHJvYmFibHkgY2xhcmlmaWVzIHRoZSBsb2dpYyBhbmQgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhlIEhUQiAoSGllcmFyY2hpY2FsIFRva2VuIEJ1Y2tldCkgc3lzdGVtLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBvbiBhIGJyb2FkZXIgc2NhbGUuIEdpdmVuIHRoYXQgaXQncyBhbiBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlc2UgdHlwZXMgb2YgbW9kaWZpY2F0aW9ucyAqY2FuKiBzb21ldGltZXMgcHJlc2VudCBjaGFsbGVuZ2VzIGluIGNlcnRhaW4gc2V0dXBzLCBJJ20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgZHJpdmVyJ3MgcmVhY2guIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWxpemF0aW9uIGNvbnNpZGVyYXRpb25zIGhlcmUuIElzIGBhaXJvaGFfZXRoLmNgIGEgcGxhdGZvcm0gZHJpdmVyIG9yIGEgUENJIG9uZT8gVGhlIGBhaXJvaGFfZXRoYCBpZGVudGlmaWVyIGlzIHRoZSBrZXkgaGVyZTsgSSBuZWVkIHRvIGxvb2sgZm9yIHRoYXQgc3RyaW5nIGluIHRoZSBkaXJlY3RvcnkgYW5kIHBvdGVudGlhbGx5IGNyb3NzLXJlZmVyZW5jZSBpdCB3aXRoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdsbCBzZWFyY2ggdGhyb3VnaCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBkcml2ZXIncyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgdGhpcyBjaGFuZ2UgaGFzIGluIHZhcmlvdXMgdmlydHVhbGl6ZWQgb3IgY29udGFpbmVyaXplZCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNzo1Ni40Njc4MzY2NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxOTU2NjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3MzM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc0MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9ODEzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjgyMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9ucHVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTc6NTYuNjM5Nzk5OTc2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyMjMwODA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBsYXRmb3JtIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIg4oCTIG5vdCBpZGVhbCBmb3IgbXkgcHVycG9zZXMsIGJ1dCBsZXQncyBzZWUgd2hhdCB3ZSBjYW4gZG8uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IHdheSB0byBwcm9iZSBpdCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXMgdGhlcmUgYSBiYWNrZG9vcj8gT3IgaXMgaXQgbG9ja2VkIGRvd24gdGlnaHRseSB0byBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmNpZXM/IFBsYXRmb3JtIGRyaXZlcnMsIGdlbmVyYWxseSwgbGVhbiBoZWF2aWx5IG9uIGRldmljZSB0cmVlIG5vZGVzLCBzbyB0aGF0J3Mgd2hlcmUgSSdsbCBzdGFydCBsb29raW5nLlxuXG5BbHJpZ2h0LCBubyBsdWNrIHdpdGggdmlydHVhbGl6YXRpb24uIFRoaXMgaXMgdGllZCB0byBhbiBBaXJvaGEgU29DIGV0aGVybmV0IGRyaXZlciwgd2hpY2ggbWVhbnMgd2UncmUgaW4gc3BlY2lmaWMtaGFyZHdhcmUgdGVycml0b3J5LiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgYW5kIGl0J3MgdmVuZG9yLXNwZWNpZmljLCBJIGNhbiBwcm9iYWJseSBydWxlIG91dCBhbnkgZWFzeSByZWFjaGFiaWxpdHkgaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzb21lIGluY3JlZGlibHkgc3BlY2lmaWMgZW11bGF0aW9uIHNldHVwIOKAkyB3aGljaCwga25vd2luZyBvdXIgY3VycmVudCBpbmZyYXN0cnVjdHVyZSwgd2UncmUgdW5saWtlbHkgdG8gaGF2ZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBpZiB0aGlzIGlzIGV2ZW4gUENJLWJhc2VkIG9yIHNvbWV0aGluZyBlbnRpcmVseSBkaWZmZXJlbnQuLi4ganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE4OjAxLjc2MjExMTIwNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODE0MTM0MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zNzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWlyb2hhX2V0aF9zb2NfZGF0YSBhbjc1ODNfc29jX2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzI2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2Fpcm9oYV9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcyNy1cXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtZXRoXFxcIiwgLmRhdGEgPSBcXHUwMDI2ZW43NTgxX3NvY19kYXRhIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTY2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGFpcm9oYV9ucHVfc29jX2RhdGEgYW43NTgzX25wdV9zb2NfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2Fpcm9oYV9ucHVfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3OS1cXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtbnB1XFxcIiwgLmRhdGEgPSBcXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxODowMi4xNDM1MjkwNjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjQwNDcyMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCdzIGRlc2lnbmVkIGZvciB0aGUgQWlyb2hhIEVONzU4MS9BTjc1ODMgU29Dcywgc3BlY2lmaWNhbGx5IHVzaW5nIGFuIE9GIChkZXZpY2UgdHJlZSkgZnJhbWV3b3JrLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBjYW4gSSBmdXp6IHRoaXMgZWZmZWN0aXZlbHk/IEkgbmVlZCB0byBjb25zaWRlciB3aGVyZSB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgKnVzZWQqLiBBbmQgaG9uZXN0bHksIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBnb2luZyB0byBiZSB2aXJ0dWFsbHkgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUgd2l0aG91dCBzb21lIHZlcnkgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgZW11bGF0aW9uLiBXaXRob3V0IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0YXJnZXQgaGFyZHdhcmUsIGFueSBmdXp6aW5nIGVmZm9ydHMgaGVyZSB3b3VsZCBiZSBmdXRpbGUuIFRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogV29ydGhGdXp6aW5nPWZhbHNlLiBJdCdzIGp1c3Qgbm90IHByYWN0aWNhbCBnaXZlbiB0aGUgbGltaXRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMTQsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTg6MDYuMzg0MDAzODE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DcyAoZW43NTgxLCBhbjc1ODMpIGFuZCByZWxpZXMgb24gZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow52hfz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 07:03:38 +0000 UTC FinishedAt: 2026-07-06 07:18:08 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRXRoZXJuZXQgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlbjc1ODEsIGFuNzU4MykgYW5kIHJlbGllcyBvbiBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzhiOWRlYTY2NDIwZjc4MmI0MWJmZmQ3ZDJmNDQzYjI4NWEwMzVjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDc6MTc6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbmluZGV4IDU5MDAxZmQ0YjZmNzQwLi44ZTRlNzljMWU0YzI2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbkBAIC0yNzY2LDE4ICYjNDM7Mjc2NiwxMyBAQCBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgICAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdClcbiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0LFxuJiM0MztcdFx0XHRcdCAgdTMyIGNoYW5uZWwpXG4ge1xuLVx0dTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtXHUwMDNlY2xhc3NpZCkgJSBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUztcbiBcdHUzMiByYXRlID0gZGl2X3U2NChvcHQtXHUwMDNlcmF0ZSwgMTAwMCkgXHUwMDNjXHUwMDNjIDM7IC8qIGticHMgKi9cbiBcdGludCBlcnI7XG4gXG4tXHRpZiAob3B0LVx1MDAzZXBhcmVudF9jbGFzc2lkICE9IFRDX0hUQl9DTEFTU0lEX1JPT1QpIHtcbi1cdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWRcJiMzNDspO1xuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdH1cbi1cbiBcdGVyciA9IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KGRldiwgY2hhbm5lbCwgcmF0ZSwgb3B0LVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGVycilcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssXG5AQCAtMjc4Niw2ICYjNDM7Mjc4MSwyMCBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgY2hhbm5lbCA9IFRDX0hfTUlOKG9wdC1cdTAwM2VjbGFzc2lkKSAlIEFJUk9IQV9OVU1fUU9TX0NIQU5ORUxTO1xuJiM0MztcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKCF0ZXN0X2JpdChjaGFubmVsLCBkZXYtXHUwMDNlcW9zX3NxX2JtYXApKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0Qob3B0LVx1MDAzZWV4dGFjaywgXCYjMzQ7aW52YWxpZCBxdWV1ZSBpZFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKG5ldGRldiwgb3B0LCBjaGFubmVsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXG4ge1xuQEAgLTI3OTQsNiAmIzQzOzI4MDMsMTEgQEAgc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX2FsbG9jX2xlYWZfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiBcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGRldi1cdTAwM2VxZG1hO1xuIFxuJiM0MztcdGlmIChvcHQtXHUwMDNlcGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qIEhlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVxdWVzdGVkIFFETUEgY2hhbm5lbCBpcyBub3QgYWxyZWFkeVxuIFx0ICogaW4gdXNlIGJ5IGFub3RoZXIgbmV0X2RldmljZSBydW5uaW5nIG9uIHRoZSBzYW1lIFFETUEgYmxvY2suXG4gXHQgKi9cbkBAIC0yODAzLDcgJiM0MzsyODE3LDcgQEAgc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX2FsbG9jX2xlYWZfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0cmV0dXJuIC1FQlVTWTtcbiBcdH1cbiBcbi1cdGVyciA9IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKG5ldGRldiwgb3B0KTtcbiYjNDM7XHRlcnIgPSBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKG5ldGRldiwgb3B0LCBjaGFubmVsKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3I7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM4YjlkZWE2NjQyMGY3ODJiNDFiZmZkN2QyZjQ0M2IyODVhMDM1Y2YKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA3OjE3OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMKaW5kZXggNTkwMDFmZDRiNmY3NDAuLjhlNGU3OWMxZTRjMjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMKQEAgLTI3NjYsMTggJiM0MzsyNzY2LDEzIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfc2V0X3R4X3JhdGVfbGltaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJCSAgICAgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpCiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiYjNDM7CQkJCSAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdCwKJiM0MzsJCQkJICB1MzIgY2hhbm5lbCkKIHsKLQl1MzIgY2hhbm5lbCA9IFRDX0hfTUlOKG9wdC0mZ3Q7Y2xhc3NpZCkgJSBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUzsKIAl1MzIgcmF0ZSA9IGRpdl91NjQob3B0LSZndDtyYXRlLCAxMDAwKSAmbHQ7Jmx0OyAzOyAvKiBrYnBzICovCiAJaW50IGVycjsKIAotCWlmIChvcHQtJmd0O3BhcmVudF9jbGFzc2lkICE9IFRDX0hUQl9DTEFTU0lEX1JPT1QpIHsKLQkJTkxfU0VUX0VSUl9NU0dfTU9EKG9wdC0mZ3Q7ZXh0YWNrLCAmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWQmIzM0Oyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQogCWVyciA9IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KGRldiwgY2hhbm5lbCwgcmF0ZSwgb3B0LSZndDtxdWFudHVtKTsKIAlpZiAoZXJyKQogCQlOTF9TRVRfRVJSX01TR19NT0Qob3B0LSZndDtleHRhY2ssCkBAIC0yNzg2LDYgJiM0MzsyNzgxLDIwIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7c3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAomIzQzOwkJCQkgICAgICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KQomIzQzO3sKJiM0MzsJdTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtJmd0O2NsYXNzaWQpICUgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFM7CiYjNDM7CXN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKJiM0MzsKJiM0MzsJaWYgKCF0ZXN0X2JpdChjaGFubmVsLCBkZXYtJmd0O3Fvc19zcV9ibWFwKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKG9wdC0mZ3Q7ZXh0YWNrLCAmIzM0O2ludmFsaWQgcXVldWUgaWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZShuZXRkZXYsIG9wdCwgY2hhbm5lbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX2FsbG9jX2xlYWZfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCQkJICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KQogewpAQCAtMjc5NCw2ICYjNDM7MjgwMywxMSBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCXN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKIAlzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBkZXYtJmd0O3FkbWE7CiAKJiM0MzsJaWYgKG9wdC0mZ3Q7cGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKG9wdC0mZ3Q7ZXh0YWNrLCAmIzM0O2ludmFsaWQgcGFyZW50IGNsYXNzaWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCS8qIEhlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVxdWVzdGVkIFFETUEgY2hhbm5lbCBpcyBub3QgYWxyZWFkeQogCSAqIGluIHVzZSBieSBhbm90aGVyIG5ldF9kZXZpY2UgcnVubmluZyBvbiB0aGUgc2FtZSBRRE1BIGJsb2NrLgogCSAqLwpAQCAtMjgwMyw3ICYjNDM7MjgxNyw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCXJldHVybiAtRUJVU1k7CiAJfQogCi0JZXJyID0gYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWUobmV0ZGV2LCBvcHQpOwomIzQzOwllcnIgPSBhaXJvaGFfdGNfaHRiX3NldF9yYXRlKG5ldGRldiwgb3B0LCBjaGFubmVsKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycm9yOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSByZWZhY3RvcmVkIHNvbWUgdHJhZmZpYyBjb250cm9sIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZXkmIzM5O3ZlIHVwZGF0ZWQgYGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlYCBhbmQgYGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZWAgdG8gdXRpbGl6ZSB0aGlzIG5ldyBgYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZWAgaGVscGVyLCB3aGljaCBzdWdnZXN0cyBhbiBpbXByb3ZlbWVudCBpbiBob3cgdGhleSBoYW5kbGUgcmF0ZSBsaW1pdGluZy4gQSBuZXcgY2hlY2ssIGAhdGVzdF9iaXQoY2hhbm5lbCwgZGV2LSZndDtxb3Nfc3FfYm1hcClgLCB3YXMgaW50cm9kdWNlZCBpbiBgYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWVgLCB3aGljaCBpcyBzb21ldGhpbmcgdG8gaW52ZXN0aWdhdGUgLSBpdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50LCBidXQgdGhlIHNwZWNpZmljIGNvbnRleHQgaXMgdW5jbGVhciB3aXRob3V0IGZ1cnRoZXIgZGlnZ2luZy4gQW5kLCB0aGV5JiMzOTt2ZSBtb3ZlZCB0aGUgYG9wdC0mZ3Q7cGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVGAgY2hlY2sgZnJvbSBgbW9kaWZ5X3F1ZXVlYCB0byBgYWxsb2NfbGVhZl9xdWV1ZWAsIHdoaWNoIHByb2JhYmx5IGNsYXJpZmllcyB0aGUgbG9naWMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoZSBIVEIgKEhpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQpIHN5c3RlbS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIG9uIGEgYnJvYWRlciBzY2FsZS4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhbiBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlc2UgdHlwZXMgb2YgbW9kaWZpY2F0aW9ucyAqY2FuKiBzb21ldGltZXMgcHJlc2VudCBjaGFsbGVuZ2VzIGluIGNlcnRhaW4gc2V0dXBzLCBJJiMzOTttIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIGRyaXZlciYjMzk7cyByZWFjaC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWxpemF0aW9uIGNvbnNpZGVyYXRpb25zIGhlcmUuIElzIGBhaXJvaGFfZXRoLmNgIGEgcGxhdGZvcm0gZHJpdmVyIG9yIGEgUENJIG9uZT8gVGhlIGBhaXJvaGFfZXRoYCBpZGVudGlmaWVyIGlzIHRoZSBrZXkgaGVyZTsgSSBuZWVkIHRvIGxvb2sgZm9yIHRoYXQgc3RyaW5nIGluIHRoZSBkaXJlY3RvcnkgYW5kIHBvdGVudGlhbGx5IGNyb3NzLXJlZmVyZW5jZSBpdCB3aXRoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgc2VhcmNoIHRocm91Z2ggdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCBkaXJlY3RvcnkgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgZHJpdmVyJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgdGhpcyBjaGFuZ2UgaGFzIGluIHZhcmlvdXMgdmlydHVhbGl6ZWQgb3IgY29udGFpbmVyaXplZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zNzMzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NDE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTgxMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbnB1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4MjE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGxhdGZvcm0gRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIg4oCTIG5vdCBpZGVhbCBmb3IgbXkgcHVycG9zZXMsIGJ1dCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRvLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIHByb2JlIGl0IHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJcyB0aGVyZSBhIGJhY2tkb29yPyBPciBpcyBpdCBsb2NrZWQgZG93biB0aWdodGx5IHRvIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY2llcz8gUGxhdGZvcm0gZHJpdmVycywgZ2VuZXJhbGx5LCBsZWFuIGhlYXZpbHkgb24gZGV2aWNlIHRyZWUgbm9kZXMsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgc3RhcnQgbG9va2luZy4KCkFscmlnaHQsIG5vIGx1Y2sgd2l0aCB2aXJ0dWFsaXphdGlvbi4gVGhpcyBpcyB0aWVkIHRvIGFuIEFpcm9oYSBTb0MgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBtZWFucyB3ZSYjMzk7cmUgaW4gc3BlY2lmaWMtaGFyZHdhcmUgdGVycml0b3J5LiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgYW5kIGl0JiMzOTtzIHZlbmRvci1zcGVjaWZpYywgSSBjYW4gcHJvYmFibHkgcnVsZSBvdXQgYW55IGVhc3kgcmVhY2hhYmlsaXR5IGluIHNvbWV0aGluZyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc29tZSBpbmNyZWRpYmx5IHNwZWNpZmljIGVtdWxhdGlvbiBzZXR1cCDigJMgd2hpY2gsIGtub3dpbmcgb3VyIGN1cnJlbnQgaW5mcmFzdHJ1Y3R1cmUsIHdlJiMzOTtyZSB1bmxpa2VseSB0byBoYXZlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgdGhpcyBpcyBldmVuIFBDSS1iYXNlZCBvciBzb21ldGhpbmcgZW50aXJlbHkgZGlmZmVyZW50Li4uIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzcxND1zdGF0aWMgY29uc3Qgc3RydWN0IGFpcm9oYV9ldGhfc29jX2RhdGEgYW43NTgzX3NvY19kYXRhID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzcyNjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcyNy1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsZW43NTgxLWV0aFwmIzM0OywgLmRhdGEgPSBcdTAwMjZlbjc1ODFfc29jX2RhdGEgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTY2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGFpcm9oYV9ucHVfc29jX2RhdGEgYW43NTgzX25wdV9zb2NfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2Fpcm9oYV9ucHVfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2Fpcm9oYSxlbjc1ODEtbnB1XCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmVuNzU4MV9ucHVfc29jX2RhdGEgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzE0CgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCYjMzk7cyBkZXNpZ25lZCBmb3IgdGhlIEFpcm9oYSBFTjc1ODEvQU43NTgzIFNvQ3MsIHNwZWNpZmljYWxseSB1c2luZyBhbiBPRiAoZGV2aWNlIHRyZWUpIGZyYW1ld29yay4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIEkgZnV6eiB0aGlzIGVmZmVjdGl2ZWx5PyBJIG5lZWQgdG8gY29uc2lkZXIgd2hlcmUgdGhpcyBjb2RlIGlzIGFjdHVhbGx5ICp1c2VkKi4gQW5kIGhvbmVzdGx5LCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGdvaW5nIHRvIGJlIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSB3aXRob3V0IHNvbWUgdmVyeSBzcGVjaWFsaXplZCBoYXJkd2FyZSBlbXVsYXRpb24uIFdpdGhvdXQgZGlyZWN0IGFjY2VzcyB0byB0aGUgYWN0dWFsIHRhcmdldCBoYXJkd2FyZSwgYW55IGZ1enppbmcgZWZmb3J0cyBoZXJlIHdvdWxkIGJlIGZ1dGlsZS4gVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiBXb3J0aEZ1enppbmc9ZmFsc2UuIEl0JiMzOTtzIGp1c3Qgbm90IHByYWN0aWNhbCBnaXZlbiB0aGUgbGltaXRhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DcyAoZW43NTgxLCBhbjc1ODMpIGFuZCByZWxpZXMgb24gZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNzo1MC4xNzA4NzQ4OTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIxMzE2OTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE3OjUwLjE3MDg4MTY2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5MjgyNDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzhiOWRlYTY2NDIwZjc4MmI0MWJmZmQ3ZDJmNDQzYjI4NWEwMzVjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCA2IDA3OjE3OjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXFxuaW5kZXggNTkwMDFmZDRiNmY3NDAuLjhlNGU3OWMxZTRjMjZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXFxuQEAgLTI3NjYsMTggKzI3NjYsMTMgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9zZXRfdHhfcmF0ZV9saW1pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KVxcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfc2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0LFxcbitcXHRcXHRcXHRcXHQgIHUzMiBjaGFubmVsKVxcbiB7XFxuLVxcdHUzMiBjaGFubmVsID0gVENfSF9NSU4ob3B0LVxcdTAwM2VjbGFzc2lkKSAlIEFJUk9IQV9OVU1fUU9TX0NIQU5ORUxTO1xcbiBcXHR1MzIgcmF0ZSA9IGRpdl91NjQob3B0LVxcdTAwM2VyYXRlLCAxMDAwKSBcXHUwMDNjXFx1MDAzYyAzOyAvKiBrYnBzICovXFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAob3B0LVxcdTAwM2VwYXJlbnRfY2xhc3NpZCAhPSBUQ19IVEJfQ0xBU1NJRF9ST09UKSB7XFxuLVxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChvcHQtXFx1MDAzZWV4dGFjaywgXFxcImludmFsaWQgcGFyZW50IGNsYXNzaWRcXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcdH1cXG4tXFxuIFxcdGVyciA9IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KGRldiwgY2hhbm5lbCwgcmF0ZSwgb3B0LVxcdTAwM2VxdWFudHVtKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cXHUwMDNlZXh0YWNrLFxcbkBAIC0yNzg2LDYgKzI3ODEsMjAgQEAgc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXFxuK3tcXG4rXFx0dTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtXFx1MDAzZWNsYXNzaWQpICUgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFM7XFxuK1xcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4rXFxuK1xcdGlmICghdGVzdF9iaXQoY2hhbm5lbCwgZGV2LVxcdTAwM2Vxb3Nfc3FfYm1hcCkpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cXHUwMDNlZXh0YWNrLCBcXFwiaW52YWxpZCBxdWV1ZSBpZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGFpcm9oYV90Y19odGJfc2V0X3JhdGUobmV0ZGV2LCBvcHQsIGNoYW5uZWwpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB0Y19odGJfcW9wdF9vZmZsb2FkICpvcHQpXFxuIHtcXG5AQCAtMjc5NCw2ICsyODAzLDExIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gXFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gZGV2LVxcdTAwM2VxZG1hO1xcbiBcXG4rXFx0aWYgKG9wdC1cXHUwMDNlcGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0Qob3B0LVxcdTAwM2VleHRhY2ssIFxcXCJpbnZhbGlkIHBhcmVudCBjbGFzc2lkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBIZXJlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVlc3RlZCBRRE1BIGNoYW5uZWwgaXMgbm90IGFscmVhZHlcXG4gXFx0ICogaW4gdXNlIGJ5IGFub3RoZXIgbmV0X2RldmljZSBydW5uaW5nIG9uIHRoZSBzYW1lIFFETUEgYmxvY2suXFxuIFxcdCAqL1xcbkBAIC0yODAzLDcgKzI4MTcsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbiBcXHR9XFxuIFxcbi1cXHRlcnIgPSBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShuZXRkZXYsIG9wdCk7XFxuK1xcdGVyciA9IGFpcm9oYV90Y19odGJfc2V0X3JhdGUobmV0ZGV2LCBvcHQsIGNoYW5uZWwpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycm9yO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTc6NTAuNjMwNzU3NzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NzUzMjc3NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DcyAoZW43NTgxLCBhbjc1ODMpIGFuZCByZWxpZXMgb24gZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzOGI5ZGVhNjY0MjBmNzgyYjQxYmZmZDdkMmY0NDNiMjg1YTAzNWNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNzo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5pbmRleCA1OTAwMWZkNGI2Zjc0MC4uOGU0ZTc5YzFlNGMyNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtMjc2NiwxOCArMjc2NiwxMyBAQCBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3NldF90eF9yYXRlX2xpbWl0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgICAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdClcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfc2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitcdFx0XHRcdCAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdCxcbitcdFx0XHRcdCAgdTMyIGNoYW5uZWwpXG4ge1xuLVx0dTMyIGNoYW5uZWwgPSBUQ19IX01JTihvcHQtXHUwMDNlY2xhc3NpZCkgJSBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUztcbiBcdHUzMiByYXRlID0gZGl2X3U2NChvcHQtXHUwMDNlcmF0ZSwgMTAwMCkgXHUwMDNjXHUwMDNjIDM7IC8qIGticHMgKi9cbiBcdGludCBlcnI7XG4gXG4tXHRpZiAob3B0LVx1MDAzZXBhcmVudF9jbGFzc2lkICE9IFRDX0hUQl9DTEFTU0lEX1JPT1QpIHtcbi1cdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwiaW52YWxpZCBwYXJlbnQgY2xhc3NpZFwiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4tXG4gXHRlcnIgPSBhaXJvaGFfcWRtYV9zZXRfdHhfcmF0ZV9saW1pdChkZXYsIGNoYW5uZWwsIHJhdGUsIG9wdC1cdTAwM2VxdWFudHVtKTtcbiBcdGlmIChlcnIpXG4gXHRcdE5MX1NFVF9FUlJfTVNHX01PRChvcHQtXHUwMDNlZXh0YWNrLFxuQEAgLTI3ODYsNiArMjc4MSwyMCBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgdGNfaHRiX3FvcHRfb2ZmbG9hZCAqb3B0KVxuK3tcbitcdHUzMiBjaGFubmVsID0gVENfSF9NSU4ob3B0LVx1MDAzZWNsYXNzaWQpICUgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFM7XG4rXHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG4rXG4rXHRpZiAoIXRlc3RfYml0KGNoYW5uZWwsIGRldi1cdTAwM2Vxb3Nfc3FfYm1hcCkpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKG9wdC1cdTAwM2VleHRhY2ssIFwiaW52YWxpZCBxdWV1ZSBpZFwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRyZXR1cm4gYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZShuZXRkZXYsIG9wdCwgY2hhbm5lbCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0XHRcdCAgc3RydWN0IHRjX2h0Yl9xb3B0X29mZmxvYWQgKm9wdClcbiB7XG5AQCAtMjc5NCw2ICsyODAzLDExIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3RjX2h0Yl9hbGxvY19sZWFmX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG4gXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBkZXYtXHUwMDNlcWRtYTtcbiBcbitcdGlmIChvcHQtXHUwMDNlcGFyZW50X2NsYXNzaWQgIT0gVENfSFRCX0NMQVNTSURfUk9PVCkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0Qob3B0LVx1MDAzZWV4dGFjaywgXCJpbnZhbGlkIHBhcmVudCBjbGFzc2lkXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdC8qIEhlcmUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVxdWVzdGVkIFFETUEgY2hhbm5lbCBpcyBub3QgYWxyZWFkeVxuIFx0ICogaW4gdXNlIGJ5IGFub3RoZXIgbmV0X2RldmljZSBydW5uaW5nIG9uIHRoZSBzYW1lIFFETUEgYmxvY2suXG4gXHQgKi9cbkBAIC0yODAzLDcgKzI4MTcsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRyZXR1cm4gLUVCVVNZO1xuIFx0fVxuIFxuLVx0ZXJyID0gYWlyb2hhX3RjX2h0Yl9tb2RpZnlfcXVldWUobmV0ZGV2LCBvcHQpO1xuK1x0ZXJyID0gYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZShuZXRkZXYsIG9wdCwgY2hhbm5lbCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm9yO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTc6NTAuNjMwNzU5MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODM3MDc1MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWlyb2hhIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY2AuIEl0IHNlZW1zIHRoZXkndmUgcmVmYWN0b3JlZCBzb21lIHRyYWZmaWMgY29udHJvbCBmdW5jdGlvbnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5J3ZlIHVwZGF0ZWQgYGFpcm9oYV90Y19odGJfbW9kaWZ5X3F1ZXVlYCBhbmQgYGFpcm9oYV90Y19odGJfYWxsb2NfbGVhZl9xdWV1ZWAgdG8gdXRpbGl6ZSB0aGlzIG5ldyBgYWlyb2hhX3RjX2h0Yl9zZXRfcmF0ZWAgaGVscGVyLCB3aGljaCBzdWdnZXN0cyBhbiBpbXByb3ZlbWVudCBpbiBob3cgdGhleSBoYW5kbGUgcmF0ZSBsaW1pdGluZy4gQSBuZXcgY2hlY2ssIGAhdGVzdF9iaXQoY2hhbm5lbCwgZGV2LVx1MDAzZXFvc19zcV9ibWFwKWAsIHdhcyBpbnRyb2R1Y2VkIGluIGBhaXJvaGFfdGNfaHRiX21vZGlmeV9xdWV1ZWAsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBpbnZlc3RpZ2F0ZSAtIGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gcXVldWUgbWFuYWdlbWVudCwgYnV0IHRoZSBzcGVjaWZpYyBjb250ZXh0IGlzIHVuY2xlYXIgd2l0aG91dCBmdXJ0aGVyIGRpZ2dpbmcuIEFuZCwgdGhleSd2ZSBtb3ZlZCB0aGUgYG9wdC1cdTAwM2VwYXJlbnRfY2xhc3NpZCAhPSBUQ19IVEJfQ0xBU1NJRF9ST09UYCBjaGVjayBmcm9tIGBtb2RpZnlfcXVldWVgIHRvIGBhbGxvY19sZWFmX3F1ZXVlYCwgd2hpY2ggcHJvYmFibHkgY2xhcmlmaWVzIHRoZSBsb2dpYyBhbmQgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhlIEhUQiAoSGllcmFyY2hpY2FsIFRva2VuIEJ1Y2tldCkgc3lzdGVtLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBvbiBhIGJyb2FkZXIgc2NhbGUuIEdpdmVuIHRoYXQgaXQncyBhbiBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhlc2UgdHlwZXMgb2YgbW9kaWZpY2F0aW9ucyAqY2FuKiBzb21ldGltZXMgcHJlc2VudCBjaGFsbGVuZ2VzIGluIGNlcnRhaW4gc2V0dXBzLCBJJ20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgZHJpdmVyJ3MgcmVhY2guIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWxpemF0aW9uIGNvbnNpZGVyYXRpb25zIGhlcmUuIElzIGBhaXJvaGFfZXRoLmNgIGEgcGxhdGZvcm0gZHJpdmVyIG9yIGEgUENJIG9uZT8gVGhlIGBhaXJvaGFfZXRoYCBpZGVudGlmaWVyIGlzIHRoZSBrZXkgaGVyZTsgSSBuZWVkIHRvIGxvb2sgZm9yIHRoYXQgc3RyaW5nIGluIHRoZSBkaXJlY3RvcnkgYW5kIHBvdGVudGlhbGx5IGNyb3NzLXJlZmVyZW5jZSBpdCB3aXRoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdsbCBzZWFyY2ggdGhyb3VnaCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBkcml2ZXIncyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgdGhpcyBjaGFuZ2UgaGFzIGluIHZhcmlvdXMgdmlydHVhbGl6ZWQgb3IgY29udGFpbmVyaXplZCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNzo1Ni40Njc4MzY2NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxOTU2NjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3MzM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc0MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9ODEzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjgyMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9ucHVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTc6NTYuNjM5Nzk5OTc2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyMjMwODA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBsYXRmb3JtIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIg4oCTIG5vdCBpZGVhbCBmb3IgbXkgcHVycG9zZXMsIGJ1dCBsZXQncyBzZWUgd2hhdCB3ZSBjYW4gZG8uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IHdheSB0byBwcm9iZSBpdCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXMgdGhlcmUgYSBiYWNrZG9vcj8gT3IgaXMgaXQgbG9ja2VkIGRvd24gdGlnaHRseSB0byBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmNpZXM/IFBsYXRmb3JtIGRyaXZlcnMsIGdlbmVyYWxseSwgbGVhbiBoZWF2aWx5IG9uIGRldmljZSB0cmVlIG5vZGVzLCBzbyB0aGF0J3Mgd2hlcmUgSSdsbCBzdGFydCBsb29raW5nLlxuXG5BbHJpZ2h0LCBubyBsdWNrIHdpdGggdmlydHVhbGl6YXRpb24uIFRoaXMgaXMgdGllZCB0byBhbiBBaXJvaGEgU29DIGV0aGVybmV0IGRyaXZlciwgd2hpY2ggbWVhbnMgd2UncmUgaW4gc3BlY2lmaWMtaGFyZHdhcmUgdGVycml0b3J5LiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgYW5kIGl0J3MgdmVuZG9yLXNwZWNpZmljLCBJIGNhbiBwcm9iYWJseSBydWxlIG91dCBhbnkgZWFzeSByZWFjaGFiaWxpdHkgaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzb21lIGluY3JlZGlibHkgc3BlY2lmaWMgZW11bGF0aW9uIHNldHVwIOKAkyB3aGljaCwga25vd2luZyBvdXIgY3VycmVudCBpbmZyYXN0cnVjdHVyZSwgd2UncmUgdW5saWtlbHkgdG8gaGF2ZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBpZiB0aGlzIGlzIGV2ZW4gUENJLWJhc2VkIG9yIHNvbWV0aGluZyBlbnRpcmVseSBkaWZmZXJlbnQuLi4ganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE4OjAxLjc2MjExMTIwNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODE0MTM0MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zNzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWlyb2hhX2V0aF9zb2NfZGF0YSBhbjc1ODNfc29jX2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzI2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2Fpcm9oYV9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcyNy1cXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtZXRoXFxcIiwgLmRhdGEgPSBcXHUwMDI2ZW43NTgxX3NvY19kYXRhIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTY2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGFpcm9oYV9ucHVfc29jX2RhdGEgYW43NTgzX25wdV9zb2NfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2Fpcm9oYV9ucHVfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3OS1cXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtbnB1XFxcIiwgLmRhdGEgPSBcXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxODowMi4xNDM1MjkwNjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjQwNDcyMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCdzIGRlc2lnbmVkIGZvciB0aGUgQWlyb2hhIEVONzU4MS9BTjc1ODMgU29Dcywgc3BlY2lmaWNhbGx5IHVzaW5nIGFuIE9GIChkZXZpY2UgdHJlZSkgZnJhbWV3b3JrLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBjYW4gSSBmdXp6IHRoaXMgZWZmZWN0aXZlbHk/IEkgbmVlZCB0byBjb25zaWRlciB3aGVyZSB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgKnVzZWQqLiBBbmQgaG9uZXN0bHksIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBnb2luZyB0byBiZSB2aXJ0dWFsbHkgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUgd2l0aG91dCBzb21lIHZlcnkgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgZW11bGF0aW9uLiBXaXRob3V0IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0YXJnZXQgaGFyZHdhcmUsIGFueSBmdXp6aW5nIGVmZm9ydHMgaGVyZSB3b3VsZCBiZSBmdXRpbGUuIFRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogV29ydGhGdXp6aW5nPWZhbHNlLiBJdCdzIGp1c3Qgbm90IHByYWN0aWNhbCBnaXZlbiB0aGUgbGltaXRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMTQsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDc6MTg6MDYuMzg0MDAzODE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DcyAoZW43NTgxLCBhbjc1ODMpIGFuZCByZWxpZXMgb24gZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFdGhlcm5ldCBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGVuNzU4MSwgYW43NTgzKSBhbmQgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow52hfz[1] Phase: Running StartedAt: 2026-07-06 07:18:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow52hfz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-06 07:18:18 +0000 UTC FinishedAt: 2026-07-06 07:18:30 +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,}