Name: series-workflowfhcqp Phase: Failed StartedAt: 2026-06-22 12:02:04 +0000 UTC FinishedAt: 2026-06-22 12:29:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfhcqp[0] Phase: Succeeded StartedAt: 2026-06-22 12:02:04 +0000 UTC FinishedAt: 2026-06-22 12:29:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfhcqp[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 12:02:04 +0000 UTC FinishedAt: 2026-06-22 12:29:00 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDEyOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgQWlyb2hhIEFONzU4MyBTb0MmIzM5O3MgTURJTyBidXMgY29udHJvbGxlci4gUGxhdGZvcm0gZHJpdmVycyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgU29DcyBhcmUgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDEyOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTE5MDA2MjQ1YzFlNDgxN2U0MGM1NDk0YmRjZWQyYTUwMjAyYTAyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDEyOjI4OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY1xuaW5kZXggNTJlNzQ3NTEyMWVhZmMuLjRjMWIyNDE1Njg3YzFhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcbkBAIC0yNDYsMTUgJiM0MzsyNDYsMTcgQEAgc3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIFx0cmV0ID0gY2xrX3NldF9yYXRlKHByaXYtXHUwMDNlY2xrLCBmcmVxKTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHRnb3RvIGVycl9yZXNldF9hc3NlcnQ7XG4gXG4gXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIGRldi1cdTAwM2VvZl9ub2RlKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0cmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi1cdTAwM2VyZXNldCk7XG4tXHRcdHJldHVybiByZXQ7XG4tXHR9XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gZXJyX3Jlc2V0X2Fzc2VydDtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX3Jlc2V0X2Fzc2VydDpcbiYjNDM7XHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVx1MDAzZXJlc2V0KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhaXJvaGFfbWRpb19kdF9pZHNbXSA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DJiMzOTtzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTE5MDA2MjQ1YzFlNDgxN2U0MGM1NDk0YmRjZWQyYTUwMjAyYTAyNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDEyOjI4OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jCmluZGV4IDUyZTc0NzUxMjFlYWZjLi40YzFiMjQxNTY4N2MxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYwpAQCAtMjQ2LDE1ICYjNDM7MjQ2LDE3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCXJldCA9IGNsa19zZXRfcmF0ZShwcml2LSZndDtjbGssIGZyZXEpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9yZXNldF9hc3NlcnQ7CiAKIAlyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIGRldi0mZ3Q7b2Zfbm9kZSk7Ci0JaWYgKHJldCkgewotCQlyZXNldF9jb250cm9sX2Fzc2VydChwcml2LSZndDtyZXNldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfcmVzZXRfYXNzZXJ0OwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyX3Jlc2V0X2Fzc2VydDoKJiM0MzsJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0mZ3Q7cmVzZXQpOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhaXJvaGFfbWRpb19kdF9pZHNbXSA9IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYWlyb2hhX21kaW9fcHJvYmVgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0JiMzOTtzIGFzc2VydGluZyB0aGUgcmVzZXQgY29udHJvbCBvbiBlcnJvci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIHJlYWNoIG9mIHRoaXMgY29kZSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuCgpgbWRpby1haXJvaGEuY2AgaXMsIGFzIEkgcmVjYWxsLCBhIHBsYXRmb3JtIGRyaXZlciB0YXJnZXRpbmcgdGhlIEFpcm9oYSBFTjc1ODEgTURJTy4gVGhlc2UgcGxhdGZvcm0gZHJpdmVycywgYmVpbmcgcXVpdGUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIFN5c3RlbS1vbi1DaGlwIChTb0MpLCBvZnRlbiBhcmVuJiMzOTt0IHRyaWdnZXJlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgdW5sZXNzIHlvdSYjMzk7cmUgZWl0aGVyIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgaW4gc29tZSBmYXNoaW9uIG9yLCBwb3RlbnRpYWxseSwgaWYgaXQgYWxzbyBmdW5jdGlvbnMgYXMgYSBtb3JlIGdlbmVyaWMgZHJpdmVyIGluIGNlcnRhaW4gY29udGV4dHMuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLCBJIHNob3VsZCBpbW1lZGlhdGVseSBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgdGhpcyBkcml2ZXIgdG8gY29uZmlybSBhbmQgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBpbmRpY2F0aW9uIG9mIGl0IGJlaW5nIGNvbXBpbGVkIGluIGFzIGEgbW9kdWxlIG9yIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgcmVsYXRlZCB0byBpdCBhbHNvIGJlaW5nIGEgZ2VuZXJpYyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX21kaW9fcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTE2Nz1zdGF0aWMgaW50IGFpcm9oYV9tZGlvX2NsNDVfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZudW0sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwMi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyMDM6c3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTI2OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM6MjY5Olx0LnByb2JlID0gYWlyb2hhX21kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjcwLVx0LmRyaXZlciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTcxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlIGZvciBNRElPIFN1cHBvcnQqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IGBtZGlvLWFpcm9oYS5jYCBkcml2ZXIuIFNlZW1zIGxpa2UgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBLY29uZmlnYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgZHJpdmVyJiMzOTtzIGJ1aWxkIG9wdGlvbnMgYXJlIGNvbnRyb2xsZWQgdGhlcmUsIGFuZCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBwYXJhbWV0ZXJzIEkgaGF2ZSBjb250cm9sIG92ZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgYmVoYXZpb3JzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGRyaXZlciYjMzk7cyBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQsIHdoYXQgbW9kdWxlcyBpdCBuZWVkcywgYW5kIHdoYXQgdGhlIG92ZXJhbGwgYnVpbGQgaW1wbGljYXRpb25zIGFyZS4gQmFzaWNhbGx5LCBJIHdhbnQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBrbm9icyBiZWZvcmUgSSBnbyBmdXJ0aGVyLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLWFpcm9oYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfT0ZfTURJTylcdFx0JiM0Mzs9IG9mX21kaW8ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19NRElPX0FJUk9IQSlcdFx0JiM0Mzs9IG1kaW8tYWlyb2hhLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTURJT19BU1BFRUQpXHRcdCYjNDM7PSBtZGlvLWFzcGVlZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyB0aGUgTURJTyBBSVJPSEEgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgb3IgZ29pbmcgZG93biByYWJiaXQgaG9sZXMsIG15IGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBmb3IgYE1ESU9fQUlST0hBYC4gSSBrbm93IHRoYXQmIzM5O3MgYSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGlzIHBhcnRpY3VsYXIgTURJTyBpbXBsZW1lbnRhdGlvbi4gU28sIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UsIHRoZSBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBtb3N0IHJlbGlhYmxlIHBsYWNlIHRvIHN0YXJ0OyBpdCYjMzk7bGwgdGVsbCBtZSBpZiBgTURJT19BSVJPSEFgIGlzIGV2ZW4gc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGtlcm5lbCB2ZXJzaW9uLCBhbmQgaWYgc28sIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGluIHRlcm1zIG9mIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCB0aGUgYXNzb2NpYXRlZCBoZWxwIHRleHQuIFRoaXMgd2lsbCBmcmFtZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtIHNwYWNlIHF1aWNrbHksIHNhdmluZyB0aW1lIG9uIGFueSB1bm5lY2Vzc2FyeSBpbnZlc3RpZ2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtIGlzIGNyaXRpY2FsIGZvciBhbnkgZGVidWdnaW5nIG9yIGNvZGUgY2hhbmdlcyBJIG1pZ2h0IG5lZWQgdG8gbWFrZSBsYXRlci4gVGhpcyBpcyBiYXNpYywgYnV0IGZ1bmRhbWVudGFsLCBhbmQgSSYjMzk7bGwga2VlcCBpdCBhcyBteSBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRElPX0FJUk9IQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xOT1jb25maWcgQUNQSV9NRElPXG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjI0OmNvbmZpZyBNRElPX0FJUk9IQVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7QWlyb2hhIEFONzU4MyBNRElPIGJ1cyBjb250cm9sbGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIHRleHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNRElPIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNRElPIHN1YnN5c3RlbSwgYW5kIHRoaXMgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIHRoYXQmIzM5O3MgYWxsIGRlZmluZWQuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcml0aWNhbCBwYXJhbWV0ZXJzIGhlcmUsIHRoaW5ncyB0aGF0IHdpbGwgYWxsb3cgbWUgdG8gdGFpbG9yIHRoaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBzeXN0ZW0gbmVlZHMuIFRoaW5ncyBsaWtlIHdoYXQgTURJTyBidXMgdHlwZXMgYXJlIHN1cHBvcnRlZCwgd2hhdCBQSFkgZHJpdmVycyBhcmUgaW5jbHVkZWQsIGFuZCB3aGV0aGVyIGRpZmZlcmVudCBNRElPIGFjY2VzcyBtZXRob2RzIGFyZSBlbmFibGVkLiBUaGlzIGlzIHRoZSBiZWRyb2NrIG9mIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBrZXJuZWwgY29uZmlndXJlcyBhbmQgaW50ZXJhY3RzIHdpdGggdGhlIHBoeXNpY2FsIGxheWVyIGRldmljZXMgYXR0YWNoZWQgdG8gYSBuZXR3b3JrIGludGVyZmFjZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdGRlZl90cmlzdGF0ZSBBQ1BJXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIEFDUEkgTURJTyBidXMgKEV0aGVybmV0IFBIWSkgYWNjZXNzb3JzXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1ESU9fQUlST0hBXG4gIDI1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgQU43NTgzIE1ESU8gYnVzIGNvbnRyb2xsZXJcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgQ09NUElMRV9URVNUXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGZvciB0aGUgTURJTyBidXNzZXMgZm91bmQgaW4gdGhlXG4gIDI5Olx0XHQgIEFpcm9oYSBBTjc1ODMgU29DJiMzOTtzLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBNRElPX1NVTjRJXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuNGkgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVFxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTURJTyBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIG5ldHdvcmtcbiAgMzY6XHRcdCAgaW50ZXJmYWNlIHVuaXRzIG9mIHRoZSBBbGx3aW5uZXIgU29DIHRoYXQgaGF2ZSBhbiBFTUFDIChBMTAsXG4gIDM3Olx0XHQgIEExMiwgQTEwcywgZXRjLilcbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgTURJT19YR0VORVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIEFpcm9oYSBNRElPIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZHJpdmVyIEkmIzM5O20gbG9va2luZyBhdCwgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQywgcmVsaWVzIG9uIGVpdGhlciBgQVJDSF9BSVJPSEFgIG9yIGBDT01QSUxFX1RFU1RgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGlrZSBtYW55IHBsYXRmb3JtIGRyaXZlcnMsIGl0JiMzOTtzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRob3V0IGEgc3BlY2lmaWMgUUVNVSBtYWNoaW5lIG9yIGVtdWxhdGlvbiB0YWlsb3JlZCBmb3IgdGhpcyBoYXJkd2FyZSwgaXQmIzM5O3MgYSBkZWFkIGVuZCwgZ2VuZXJhbGx5LgoKU2luY2UgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIGJpbmRpbmcgaGFwcGVucyB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gSSBzZWUgdGhlIGNvbXBhdGlibGUgc3RyaW5nICYjMzQ7YWlyb2hhLGVuNzU4MS1tZGlvJiMzNDsgZGVmaW5lZCwgc28gdGhhdCYjMzk7cyB0aGUga2V5LgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIEkgdHJpZ2dlciB0aGlzIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYHN5ei11c2JnZW5gIG9yIHNpbWlsYXIgZnV6emluZyB0b29scz8gTm8sIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGVzZSB0b29scyBhcmUgb2Z0ZW4gZ2VhcmVkIHRvd2FyZCBtb3JlICYjMzQ7YnVzJiMzNDsgcmVsYXRlZCBkZXZpY2VzLgoKQ291bGQgSSB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IFN5emthbGxlciAqY2FuKiBpbmplY3Qgb3ZlcmxheXMgaWYgYENPTkZJR19PRl9PVkVSTEFZYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgcG9zc2liaWxpdHksIGJ1dCBvdmVybGF5cyBoYXZlIGxpbWl0YXRpb25zLiBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGEgZ2VuZXJpYyBtZXRob2QgZm9yIGZ1enppbmcgYXJiaXRyYXJ5IHBsYXRmb3JtIGRyaXZlcnMgdW5sZXNzIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhbmQgdGhhdCYjMzk7cyBub3Qgd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4KCldhaXQsIGRvZXMgU3l6a2FsbGVyIGhhdmUgYSB3YXkgdG8gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMsIG1heWJlIHRocm91Z2ggYHN5el9tb3VudF9pbWFnZWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLiBJdCBoYXMgc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBVU0IgKGBzeXpfZ2VuX3N5el91c2JfZGV2aWNlYCksIFBDSSAoYHN5el9nZW5fc3l6X3BjaV9kZXZpY2VgKSwgZXRjLiBCdXQgZm9yIHBsYXRmb3JtIGRldmljZXMsIGl0IGNhbiYjMzk7dCBlYXNpbHkgaW5zdGFudGlhdGUgdGhlbSB1bmxlc3MgdGhlcmUmIzM5O3MgYSBwc2V1ZG8tZGV2aWNlIG9yIERUIG92ZXJsYXkgc3VwcG9ydC4KCkRvZXMgYHN5el9tb3VudF9pbWFnZWAgaW5qZWN0IERUIG92ZXJsYXlzPyBOby4gU3l6a2FsbGVyIHNlZW1zIHRvIGhhdmUgZnVuY3Rpb25zIGZvciBuZXR3b3JraW5nIChgc3l6X2luaXRfbmV0X3NvY2tldGApIGFuZCB0aGUgbGlrZS4KCldhaXQsIGlzIHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzeXpfZGV2X2R0X292ZXJsYXlgPyBOby4KClNvLCBpbiBlc3NlbmNlLCBwbGF0Zm9ybSBkcml2ZXJzIHRpZWQgdG8gc3BlY2lmaWMgU29DcyBhcmUgZ2VuZXJhbGx5IHVucmVhY2hhYmxlIHdpdGggdGhlIGN1cnJlbnQgU3l6a2FsbGVyIHRvb2xzZXQuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLgoKQnV0LCBiZWZvcmUgSSBtYWtlIGEgZmluYWwgZGV0ZXJtaW5hdGlvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrICpldmVyeSogcG9zc2libGUgZW50cnkgcG9pbnQgZm9yIGBhaXJvaGFfbWRpb19wcm9iZWAuIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX21kaW9fcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTE2Nz1zdGF0aWMgaW50IGFpcm9oYV9tZGlvX2NsNDVfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZudW0sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwMi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyMDM6c3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTI2OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM6MjY5Olx0LnByb2JlID0gYWlyb2hhX21kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjcwLVx0LmRyaXZlciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1NwoJCQkJCQkJb3V0cHV0OiA5MAoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBsYXRmb3JtIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIGlzIGp1c3QgYW5vdGhlciBydW4tb2YtdGhlLW1pbGwgcGxhdGZvcm0gZHJpdmVyLCBub3RoaW5nIHBhcnRpY3VsYXJseSBncm91bmRicmVha2luZyBoZXJlLiBHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQy4gVGhhdCBtZWFucyBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGhhcmR3YXJlIGFuZCByZWxpZXMgb24gc3BlY2lmaWMgcmVnaXN0ZXJzLCBwZXJpcGhlcmFscywgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyB0aGF0IGFyZSBzaW1wbHkgdW5hdmFpbGFibGUgb3IgZW11bGF0ZWQgaW5hZGVxdWF0ZWx5IGluIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLiBUcnlpbmcgdG8gZnV6eiB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgaXMgYSB3YXN0ZSBvZiB0aW1lIGFuZCByZXNvdXJjZXMg4oCTIGl0JiMzOTtzIHByYWN0aWNhbGx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIGl0JiMzOTtzIG5vdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DJiMzOTtzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQyYjMzk7cyBNRElPIGJ1cyBjb250cm9sbGVyLiBQbGF0Zm9ybSBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBTb0NzIGFyZSBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24sIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaGVyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoxOC4wNjE0MDIzODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgyNzI2MjM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQydzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MTguMDYxNDA5NDI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc2NDk2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MTkwMDYyNDVjMWU0ODE3ZTQwYzU0OTRiZGNlZDJhNTAyMDJhMDI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDEyOjI4OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY1xcbmluZGV4IDUyZTc0NzUxMjFlYWZjLi40YzFiMjQxNTY4N2MxYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcXG5AQCAtMjQ2LDE1ICsyNDYsMTcgQEAgc3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXG4gXFx0cmV0ID0gY2xrX3NldF9yYXRlKHByaXYtXFx1MDAzZWNsaywgZnJlcSk7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gZXJyX3Jlc2V0X2Fzc2VydDtcXG4gXFxuIFxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG4tXFx0aWYgKHJldCkge1xcbi1cXHRcXHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVxcdTAwM2VyZXNldCk7XFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcdH1cXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byBlcnJfcmVzZXRfYXNzZXJ0O1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfcmVzZXRfYXNzZXJ0OlxcbitcXHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVxcdTAwM2VyZXNldCk7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFpcm9oYV9tZGlvX2R0X2lkc1tdID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoxOC42OTA0MjM5NThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTk4MjMzMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DJ3MgTURJTyBidXMgY29udHJvbGxlci4gUGxhdGZvcm0gZHJpdmVycyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgU29DcyBhcmUgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGhlcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUxOTAwNjI0NWMxZTQ4MTdlNDBjNTQ5NGJkY2VkMmE1MDIwMmEwMjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAxMjoyODoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY1xuaW5kZXggNTJlNzQ3NTEyMWVhZmMuLjRjMWIyNDE1Njg3YzFhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcbkBAIC0yNDYsMTUgKzI0NiwxNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXG4gXHRyZXQgPSBjbGtfc2V0X3JhdGUocHJpdi1cdTAwM2VjbGssIGZyZXEpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfcmVzZXRfYXNzZXJ0O1xuIFxuIFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG4tXHRpZiAocmV0KSB7XG4tXHRcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcmVzZXQpO1xuLVx0XHRyZXR1cm4gcmV0O1xuLVx0fVxuK1x0aWYgKHJldClcbitcdFx0Z290byBlcnJfcmVzZXRfYXNzZXJ0O1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX3Jlc2V0X2Fzc2VydDpcbitcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcmVzZXQpO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWlyb2hhX21kaW9fZHRfaWRzW10gPSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoxOC42OTA0MjY4NDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc4Mjk3Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0d2Vha2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYGRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBhaXJvaGFfbWRpb19wcm9iZWAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoYXQgaXQncyBhc3NlcnRpbmcgdGhlIHJlc2V0IGNvbnRyb2wgb24gZXJyb3IuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCByZWFjaCBvZiB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLlxuXG5gbWRpby1haXJvaGEuY2AgaXMsIGFzIEkgcmVjYWxsLCBhIHBsYXRmb3JtIGRyaXZlciB0YXJnZXRpbmcgdGhlIEFpcm9oYSBFTjc1ODEgTURJTy4gVGhlc2UgcGxhdGZvcm0gZHJpdmVycywgYmVpbmcgcXVpdGUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIFN5c3RlbS1vbi1DaGlwIChTb0MpLCBvZnRlbiBhcmVuJ3QgdHJpZ2dlcmVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB1bmxlc3MgeW91J3JlIGVpdGhlciBlbXVsYXRpbmcgdGhlIGhhcmR3YXJlIGluIHNvbWUgZmFzaGlvbiBvciwgcG90ZW50aWFsbHksIGlmIGl0IGFsc28gZnVuY3Rpb25zIGFzIGEgbW9yZSBnZW5lcmljIGRyaXZlciBpbiBjZXJ0YWluIGNvbnRleHRzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBzaG91bGQgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIHRoaXMgZHJpdmVyIHRvIGNvbmZpcm0gYW5kIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW5kaWNhdGlvbiBvZiBpdCBiZWluZyBjb21waWxlZCBpbiBhcyBhIG1vZHVsZSBvciBpZiB0aGVyZSBhcmUgYW55IGhpbnRzIHJlbGF0ZWQgdG8gaXQgYWxzbyBiZWluZyBhIGdlbmVyaWMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTU0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MjMuMzY4NzI5MDI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3Njg0ODQ4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhX21kaW9fcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTE2Nz1zdGF0aWMgaW50IGFpcm9oYV9tZGlvX2NsNDVfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjAyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyMDM6c3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTI2OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jOjI2OTpcXHQucHJvYmUgPSBhaXJvaGFfbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjcwLVxcdC5kcml2ZXIgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDEyOjI4OjI2LjEzNzIyMDY4OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzY5OTc0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhbmRzY2FwZSBmb3IgTURJTyBTdXBwb3J0KipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgYG1kaW8tYWlyb2hhLmNgIGRyaXZlci4gU2VlbXMgbGlrZSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEknbSBhc3N1bWluZyB0aGF0IGRyaXZlcidzIGJ1aWxkIG9wdGlvbnMgYXJlIGNvbnRyb2xsZWQgdGhlcmUsIGFuZCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBwYXJhbWV0ZXJzIEkgaGF2ZSBjb250cm9sIG92ZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgYmVoYXZpb3JzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZCwgd2hhdCBtb2R1bGVzIGl0IG5lZWRzLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBidWlsZCBpbXBsaWNhdGlvbnMgYXJlLiBCYXNpY2FsbHksIEkgd2FudCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24ga25vYnMgYmVmb3JlIEkgZ28gZnVydGhlci4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoyOS4wNzQyMjAyNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyODM0MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby1haXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT02PW9iai0kKENPTkZJR19PRl9NRElPKVxcdFxcdCs9IG9mX21kaW8ub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX01ESU9fQUlST0hBKVxcdFxcdCs9IG1kaW8tYWlyb2hhLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX01ESU9fQVNQRUVEKVxcdFxcdCs9IG1kaW8tYXNwZWVkLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MjkuMTU2NTA5ODMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzIzODQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgdGhlIE1ESU8gQUlST0hBIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gQmVmb3JlIEkgc3RhcnQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBvciBnb2luZyBkb3duIHJhYmJpdCBob2xlcywgbXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgd2hhdCdzIGRlZmluZWQgZm9yIGBNRElPX0FJUk9IQWAuIEkga25vdyB0aGF0J3MgYSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGlzIHBhcnRpY3VsYXIgTURJTyBpbXBsZW1lbnRhdGlvbi4gU28sIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdGhlIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgbW9zdCByZWxpYWJsZSBwbGFjZSB0byBzdGFydDsgaXQnbGwgdGVsbCBtZSBpZiBgTURJT19BSVJPSEFgIGlzIGV2ZW4gc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGtlcm5lbCB2ZXJzaW9uLCBhbmQgaWYgc28sIGhvdyBpdCdzIGRlZmluZWQgaW4gdGVybXMgb2YgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIHRoZSBhc3NvY2lhdGVkIGhlbHAgdGV4dC4gVGhpcyB3aWxsIGZyYW1lIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gc3BhY2UgcXVpY2tseSwgc2F2aW5nIHRpbWUgb24gYW55IHVubmVjZXNzYXJ5IGludmVzdGlnYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0gaXMgY3JpdGljYWwgZm9yIGFueSBkZWJ1Z2dpbmcgb3IgY29kZSBjaGFuZ2VzIEkgbWlnaHQgbmVlZCB0byBtYWtlIGxhdGVyLiBUaGlzIGlzIGJhc2ljLCBidXQgZnVuZGFtZW50YWwsIGFuZCBJJ2xsIGtlZXAgaXQgYXMgbXkgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDEyOjI4OjMyLjU3OTc1MDA1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTA0MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRElPX0FJUk9IQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTk9Y29uZmlnIEFDUElfTURJT1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoyNDpjb25maWcgTURJT19BSVJPSEFcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjc1ODMgTURJTyBidXMgY29udHJvbGxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MzIuNjU3MjU4MTQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0MjI5MjIwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgdGV4dDpcblxuKipEaXZpbmcgaW50byB0aGUgTURJTyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyNC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1ESU8gc3Vic3lzdGVtLCBhbmQgdGhpcyBLY29uZmlnIGZpbGUgaXMgd2hlcmUgdGhhdCdzIGFsbCBkZWZpbmVkLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY3JpdGljYWwgcGFyYW1ldGVycyBoZXJlLCB0aGluZ3MgdGhhdCB3aWxsIGFsbG93IG1lIHRvIHRhaWxvciB0aGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgc3lzdGVtIG5lZWRzLiBUaGluZ3MgbGlrZSB3aGF0IE1ESU8gYnVzIHR5cGVzIGFyZSBzdXBwb3J0ZWQsIHdoYXQgUEhZIGRyaXZlcnMgYXJlIGluY2x1ZGVkLCBhbmQgd2hldGhlciBkaWZmZXJlbnQgTURJTyBhY2Nlc3MgbWV0aG9kcyBhcmUgZW5hYmxlZC4gVGhpcyBpcyB0aGUgYmVkcm9jayBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsIGNvbmZpZ3VyZXMgYW5kIGludGVyYWN0cyB3aXRoIHRoZSBwaHlzaWNhbCBsYXllciBkZXZpY2VzIGF0dGFjaGVkIHRvIGEgbmV0d29yayBpbnRlcmZhY2UuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODozNS42OTk1NTI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0ZGVmX3RyaXN0YXRlIEFDUElcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgQUNQSSBNRElPIGJ1cyAoRXRoZXJuZXQgUEhZKSBhY2Nlc3NvcnNcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1ESU9fQUlST0hBXFxuICAyNTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWlyb2hhIEFONzU4MyBNRElPIGJ1cyBjb250cm9sbGVyXFxcIlxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCBDT01QSUxFX1RFU1RcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgZm9yIHRoZSBNRElPIGJ1c3NlcyBmb3VuZCBpbiB0aGVcXG4gIDI5OlxcdFxcdCAgQWlyb2hhIEFONzU4MyBTb0Mncy5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE1ESU9fU1VONElcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuNGkgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1RcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXFxuICAzNjpcXHRcXHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgQWxsd2lubmVyIFNvQyB0aGF0IGhhdmUgYW4gRU1BQyAoQTEwLFxcbiAgMzc6XFx0XFx0ICBBMTIsIEExMHMsIGV0Yy4pXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBNRElPX1hHRU5FXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDEyOjI4OjM1LjY5OTY1ODQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3OTQxMjIxNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgQWlyb2hhIE1ESU8gRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZHJpdmVyIEknbSBsb29raW5nIGF0LCBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DLCByZWxpZXMgb24gZWl0aGVyIGBBUkNIX0FJUk9IQWAgb3IgYENPTVBJTEVfVEVTVGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsaWtlIG1hbnkgcGxhdGZvcm0gZHJpdmVycywgaXQncyBnb2luZyB0byBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2l0aG91dCBhIHNwZWNpZmljIFFFTVUgbWFjaGluZSBvciBlbXVsYXRpb24gdGFpbG9yZWQgZm9yIHRoaXMgaGFyZHdhcmUsIGl0J3MgYSBkZWFkIGVuZCwgZ2VuZXJhbGx5LlxuXG5TaW5jZSBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBiaW5kaW5nIGhhcHBlbnMgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUuIEkgc2VlIHRoZSBjb21wYXRpYmxlIHN0cmluZyBcImFpcm9oYSxlbjc1ODEtbWRpb1wiIGRlZmluZWQsIHNvIHRoYXQncyB0aGUga2V5LlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gSSB0cmlnZ2VyIHRoaXMgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgc3l6LXVzYmdlbmAgb3Igc2ltaWxhciBmdXp6aW5nIHRvb2xzPyBObywgaXQncyBhIHBsYXRmb3JtIGRyaXZlci4gVGhlc2UgdG9vbHMgYXJlIG9mdGVuIGdlYXJlZCB0b3dhcmQgbW9yZSBcImJ1c1wiIHJlbGF0ZWQgZGV2aWNlcy5cblxuQ291bGQgSSB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IFN5emthbGxlciAqY2FuKiBpbmplY3Qgb3ZlcmxheXMgaWYgYENPTkZJR19PRl9PVkVSTEFZYCBpcyBlbmFibGVkLiBUaGF0J3MgYSBwb3NzaWJpbGl0eSwgYnV0IG92ZXJsYXlzIGhhdmUgbGltaXRhdGlvbnMuIFN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIGdlbmVyaWMgbWV0aG9kIGZvciBmdXp6aW5nIGFyYml0cmFyeSBwbGF0Zm9ybSBkcml2ZXJzIHVubGVzcyBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQgYW5kIHRoYXQncyBub3Qgd2hhdCBJJ20gZGVhbGluZyB3aXRoLlxuXG5XYWl0LCBkb2VzIFN5emthbGxlciBoYXZlIGEgd2F5IHRvIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzLCBtYXliZSB0aHJvdWdoIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBOby4gSXQgaGFzIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgVVNCIChgc3l6X2dlbl9zeXpfdXNiX2RldmljZWApLCBQQ0kgKGBzeXpfZ2VuX3N5el9wY2lfZGV2aWNlYCksIGV0Yy4gQnV0IGZvciBwbGF0Zm9ybSBkZXZpY2VzLCBpdCBjYW4ndCBlYXNpbHkgaW5zdGFudGlhdGUgdGhlbSB1bmxlc3MgdGhlcmUncyBhIHBzZXVkby1kZXZpY2Ugb3IgRFQgb3ZlcmxheSBzdXBwb3J0LlxuXG5Eb2VzIGBzeXpfbW91bnRfaW1hZ2VgIGluamVjdCBEVCBvdmVybGF5cz8gTm8uIFN5emthbGxlciBzZWVtcyB0byBoYXZlIGZ1bmN0aW9ucyBmb3IgbmV0d29ya2luZyAoYHN5el9pbml0X25ldF9zb2NrZXRgKSBhbmQgdGhlIGxpa2UuXG5cbldhaXQsIGlzIHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzeXpfZGV2X2R0X292ZXJsYXlgPyBOby5cblxuU28sIGluIGVzc2VuY2UsIHBsYXRmb3JtIGRyaXZlcnMgdGllZCB0byBzcGVjaWZpYyBTb0NzIGFyZSBnZW5lcmFsbHkgdW5yZWFjaGFibGUgd2l0aCB0aGUgY3VycmVudCBTeXprYWxsZXIgdG9vbHNldC5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC5cblxuQnV0LCBiZWZvcmUgSSBtYWtlIGEgZmluYWwgZGV0ZXJtaW5hdGlvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrICpldmVyeSogcG9zc2libGUgZW50cnkgcG9pbnQgZm9yIGBhaXJvaGFfbWRpb19wcm9iZWAuIEkgZG9uJ3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6NDMuNDkzNzgzMTE4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ5MjM2MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFpcm9oYV9tZGlvX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYz0xNjc9c3RhdGljIGludCBhaXJvaGFfbWRpb19jbDQ1X3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2bnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwMi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM6MjAzOnN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYz0yNjg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX21kaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyNjk6XFx0LnByb2JlID0gYWlyb2hhX21kaW9fcHJvYmUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTI3MC1cXHQuZHJpdmVyID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODo0NS45NDMwMjQzNzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTU5NTA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQbGF0Zm9ybSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGp1c3QgYW5vdGhlciBydW4tb2YtdGhlLW1pbGwgcGxhdGZvcm0gZHJpdmVyLCBub3RoaW5nIHBhcnRpY3VsYXJseSBncm91bmRicmVha2luZyBoZXJlLiBHaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc6IGZhbHNlYC4gTXkgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DLiBUaGF0IG1lYW5zIGl0J3MgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBoYXJkd2FyZSBhbmQgcmVsaWVzIG9uIHNwZWNpZmljIHJlZ2lzdGVycywgcGVyaXBoZXJhbHMsIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgc2ltcGx5IHVuYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluYWRlcXVhdGVseSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVS4gVHJ5aW5nIHRvIGZ1enogdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGlzIGEgd2FzdGUgb2YgdGltZSBhbmQgcmVzb3VyY2VzIOKAkyBpdCdzIHByYWN0aWNhbGx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIGl0J3Mgbm90IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDU3LCJPdXRwdXRUb2tlbnMiOjkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6NDkuODg4NjIxODQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQydzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQydzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfhcqp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 12:02:04 +0000 UTC FinishedAt: 2026-06-22 12:28:50 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDEyOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgQWlyb2hhIEFONzU4MyBTb0MmIzM5O3MgTURJTyBidXMgY29udHJvbGxlci4gUGxhdGZvcm0gZHJpdmVycyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgU29DcyBhcmUgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDEyOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTE5MDA2MjQ1YzFlNDgxN2U0MGM1NDk0YmRjZWQyYTUwMjAyYTAyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDEyOjI4OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY1xuaW5kZXggNTJlNzQ3NTEyMWVhZmMuLjRjMWIyNDE1Njg3YzFhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcbkBAIC0yNDYsMTUgJiM0MzsyNDYsMTcgQEAgc3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIFx0cmV0ID0gY2xrX3NldF9yYXRlKHByaXYtXHUwMDNlY2xrLCBmcmVxKTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHRnb3RvIGVycl9yZXNldF9hc3NlcnQ7XG4gXG4gXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIGRldi1cdTAwM2VvZl9ub2RlKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0cmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi1cdTAwM2VyZXNldCk7XG4tXHRcdHJldHVybiByZXQ7XG4tXHR9XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gZXJyX3Jlc2V0X2Fzc2VydDtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX3Jlc2V0X2Fzc2VydDpcbiYjNDM7XHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVx1MDAzZXJlc2V0KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhaXJvaGFfbWRpb19kdF9pZHNbXSA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DJiMzOTtzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTE5MDA2MjQ1YzFlNDgxN2U0MGM1NDk0YmRjZWQyYTUwMjAyYTAyNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDEyOjI4OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jCmluZGV4IDUyZTc0NzUxMjFlYWZjLi40YzFiMjQxNTY4N2MxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYwpAQCAtMjQ2LDE1ICYjNDM7MjQ2LDE3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCXJldCA9IGNsa19zZXRfcmF0ZShwcml2LSZndDtjbGssIGZyZXEpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9yZXNldF9hc3NlcnQ7CiAKIAlyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIGRldi0mZ3Q7b2Zfbm9kZSk7Ci0JaWYgKHJldCkgewotCQlyZXNldF9jb250cm9sX2Fzc2VydChwcml2LSZndDtyZXNldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfcmVzZXRfYXNzZXJ0OwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyX3Jlc2V0X2Fzc2VydDoKJiM0MzsJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0mZ3Q7cmVzZXQpOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhaXJvaGFfbWRpb19kdF9pZHNbXSA9IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYWlyb2hhX21kaW9fcHJvYmVgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0JiMzOTtzIGFzc2VydGluZyB0aGUgcmVzZXQgY29udHJvbCBvbiBlcnJvci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIHJlYWNoIG9mIHRoaXMgY29kZSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuCgpgbWRpby1haXJvaGEuY2AgaXMsIGFzIEkgcmVjYWxsLCBhIHBsYXRmb3JtIGRyaXZlciB0YXJnZXRpbmcgdGhlIEFpcm9oYSBFTjc1ODEgTURJTy4gVGhlc2UgcGxhdGZvcm0gZHJpdmVycywgYmVpbmcgcXVpdGUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIFN5c3RlbS1vbi1DaGlwIChTb0MpLCBvZnRlbiBhcmVuJiMzOTt0IHRyaWdnZXJlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgdW5sZXNzIHlvdSYjMzk7cmUgZWl0aGVyIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgaW4gc29tZSBmYXNoaW9uIG9yLCBwb3RlbnRpYWxseSwgaWYgaXQgYWxzbyBmdW5jdGlvbnMgYXMgYSBtb3JlIGdlbmVyaWMgZHJpdmVyIGluIGNlcnRhaW4gY29udGV4dHMuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLCBJIHNob3VsZCBpbW1lZGlhdGVseSBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgdGhpcyBkcml2ZXIgdG8gY29uZmlybSBhbmQgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBpbmRpY2F0aW9uIG9mIGl0IGJlaW5nIGNvbXBpbGVkIGluIGFzIGEgbW9kdWxlIG9yIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgcmVsYXRlZCB0byBpdCBhbHNvIGJlaW5nIGEgZ2VuZXJpYyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX21kaW9fcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTE2Nz1zdGF0aWMgaW50IGFpcm9oYV9tZGlvX2NsNDVfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZudW0sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwMi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyMDM6c3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTI2OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM6MjY5Olx0LnByb2JlID0gYWlyb2hhX21kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjcwLVx0LmRyaXZlciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTcxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlIGZvciBNRElPIFN1cHBvcnQqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IGBtZGlvLWFpcm9oYS5jYCBkcml2ZXIuIFNlZW1zIGxpa2UgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBLY29uZmlnYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgZHJpdmVyJiMzOTtzIGJ1aWxkIG9wdGlvbnMgYXJlIGNvbnRyb2xsZWQgdGhlcmUsIGFuZCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBwYXJhbWV0ZXJzIEkgaGF2ZSBjb250cm9sIG92ZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgYmVoYXZpb3JzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGRyaXZlciYjMzk7cyBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQsIHdoYXQgbW9kdWxlcyBpdCBuZWVkcywgYW5kIHdoYXQgdGhlIG92ZXJhbGwgYnVpbGQgaW1wbGljYXRpb25zIGFyZS4gQmFzaWNhbGx5LCBJIHdhbnQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBrbm9icyBiZWZvcmUgSSBnbyBmdXJ0aGVyLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLWFpcm9oYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfT0ZfTURJTylcdFx0JiM0Mzs9IG9mX21kaW8ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19NRElPX0FJUk9IQSlcdFx0JiM0Mzs9IG1kaW8tYWlyb2hhLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTURJT19BU1BFRUQpXHRcdCYjNDM7PSBtZGlvLWFzcGVlZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyB0aGUgTURJTyBBSVJPSEEgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgb3IgZ29pbmcgZG93biByYWJiaXQgaG9sZXMsIG15IGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBmb3IgYE1ESU9fQUlST0hBYC4gSSBrbm93IHRoYXQmIzM5O3MgYSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGlzIHBhcnRpY3VsYXIgTURJTyBpbXBsZW1lbnRhdGlvbi4gU28sIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UsIHRoZSBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBtb3N0IHJlbGlhYmxlIHBsYWNlIHRvIHN0YXJ0OyBpdCYjMzk7bGwgdGVsbCBtZSBpZiBgTURJT19BSVJPSEFgIGlzIGV2ZW4gc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGtlcm5lbCB2ZXJzaW9uLCBhbmQgaWYgc28sIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGluIHRlcm1zIG9mIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCB0aGUgYXNzb2NpYXRlZCBoZWxwIHRleHQuIFRoaXMgd2lsbCBmcmFtZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtIHNwYWNlIHF1aWNrbHksIHNhdmluZyB0aW1lIG9uIGFueSB1bm5lY2Vzc2FyeSBpbnZlc3RpZ2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtIGlzIGNyaXRpY2FsIGZvciBhbnkgZGVidWdnaW5nIG9yIGNvZGUgY2hhbmdlcyBJIG1pZ2h0IG5lZWQgdG8gbWFrZSBsYXRlci4gVGhpcyBpcyBiYXNpYywgYnV0IGZ1bmRhbWVudGFsLCBhbmQgSSYjMzk7bGwga2VlcCBpdCBhcyBteSBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRElPX0FJUk9IQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xOT1jb25maWcgQUNQSV9NRElPXG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjI0OmNvbmZpZyBNRElPX0FJUk9IQVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7QWlyb2hhIEFONzU4MyBNRElPIGJ1cyBjb250cm9sbGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIHRleHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNRElPIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNRElPIHN1YnN5c3RlbSwgYW5kIHRoaXMgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIHRoYXQmIzM5O3MgYWxsIGRlZmluZWQuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcml0aWNhbCBwYXJhbWV0ZXJzIGhlcmUsIHRoaW5ncyB0aGF0IHdpbGwgYWxsb3cgbWUgdG8gdGFpbG9yIHRoaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBzeXN0ZW0gbmVlZHMuIFRoaW5ncyBsaWtlIHdoYXQgTURJTyBidXMgdHlwZXMgYXJlIHN1cHBvcnRlZCwgd2hhdCBQSFkgZHJpdmVycyBhcmUgaW5jbHVkZWQsIGFuZCB3aGV0aGVyIGRpZmZlcmVudCBNRElPIGFjY2VzcyBtZXRob2RzIGFyZSBlbmFibGVkLiBUaGlzIGlzIHRoZSBiZWRyb2NrIG9mIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBrZXJuZWwgY29uZmlndXJlcyBhbmQgaW50ZXJhY3RzIHdpdGggdGhlIHBoeXNpY2FsIGxheWVyIGRldmljZXMgYXR0YWNoZWQgdG8gYSBuZXR3b3JrIGludGVyZmFjZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdGRlZl90cmlzdGF0ZSBBQ1BJXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIEFDUEkgTURJTyBidXMgKEV0aGVybmV0IFBIWSkgYWNjZXNzb3JzXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1ESU9fQUlST0hBXG4gIDI1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgQU43NTgzIE1ESU8gYnVzIGNvbnRyb2xsZXJcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgQ09NUElMRV9URVNUXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGZvciB0aGUgTURJTyBidXNzZXMgZm91bmQgaW4gdGhlXG4gIDI5Olx0XHQgIEFpcm9oYSBBTjc1ODMgU29DJiMzOTtzLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBNRElPX1NVTjRJXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuNGkgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVFxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTURJTyBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIG5ldHdvcmtcbiAgMzY6XHRcdCAgaW50ZXJmYWNlIHVuaXRzIG9mIHRoZSBBbGx3aW5uZXIgU29DIHRoYXQgaGF2ZSBhbiBFTUFDIChBMTAsXG4gIDM3Olx0XHQgIEExMiwgQTEwcywgZXRjLilcbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgTURJT19YR0VORVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIEFpcm9oYSBNRElPIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZHJpdmVyIEkmIzM5O20gbG9va2luZyBhdCwgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQywgcmVsaWVzIG9uIGVpdGhlciBgQVJDSF9BSVJPSEFgIG9yIGBDT01QSUxFX1RFU1RgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGlrZSBtYW55IHBsYXRmb3JtIGRyaXZlcnMsIGl0JiMzOTtzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdCB0byByZWFjaCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRob3V0IGEgc3BlY2lmaWMgUUVNVSBtYWNoaW5lIG9yIGVtdWxhdGlvbiB0YWlsb3JlZCBmb3IgdGhpcyBoYXJkd2FyZSwgaXQmIzM5O3MgYSBkZWFkIGVuZCwgZ2VuZXJhbGx5LgoKU2luY2UgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIGJpbmRpbmcgaGFwcGVucyB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gSSBzZWUgdGhlIGNvbXBhdGlibGUgc3RyaW5nICYjMzQ7YWlyb2hhLGVuNzU4MS1tZGlvJiMzNDsgZGVmaW5lZCwgc28gdGhhdCYjMzk7cyB0aGUga2V5LgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIEkgdHJpZ2dlciB0aGlzIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYHN5ei11c2JnZW5gIG9yIHNpbWlsYXIgZnV6emluZyB0b29scz8gTm8sIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGVzZSB0b29scyBhcmUgb2Z0ZW4gZ2VhcmVkIHRvd2FyZCBtb3JlICYjMzQ7YnVzJiMzNDsgcmVsYXRlZCBkZXZpY2VzLgoKQ291bGQgSSB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IFN5emthbGxlciAqY2FuKiBpbmplY3Qgb3ZlcmxheXMgaWYgYENPTkZJR19PRl9PVkVSTEFZYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgcG9zc2liaWxpdHksIGJ1dCBvdmVybGF5cyBoYXZlIGxpbWl0YXRpb25zLiBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGEgZ2VuZXJpYyBtZXRob2QgZm9yIGZ1enppbmcgYXJiaXRyYXJ5IHBsYXRmb3JtIGRyaXZlcnMgdW5sZXNzIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhbmQgdGhhdCYjMzk7cyBub3Qgd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4KCldhaXQsIGRvZXMgU3l6a2FsbGVyIGhhdmUgYSB3YXkgdG8gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMsIG1heWJlIHRocm91Z2ggYHN5el9tb3VudF9pbWFnZWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLiBJdCBoYXMgc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBVU0IgKGBzeXpfZ2VuX3N5el91c2JfZGV2aWNlYCksIFBDSSAoYHN5el9nZW5fc3l6X3BjaV9kZXZpY2VgKSwgZXRjLiBCdXQgZm9yIHBsYXRmb3JtIGRldmljZXMsIGl0IGNhbiYjMzk7dCBlYXNpbHkgaW5zdGFudGlhdGUgdGhlbSB1bmxlc3MgdGhlcmUmIzM5O3MgYSBwc2V1ZG8tZGV2aWNlIG9yIERUIG92ZXJsYXkgc3VwcG9ydC4KCkRvZXMgYHN5el9tb3VudF9pbWFnZWAgaW5qZWN0IERUIG92ZXJsYXlzPyBOby4gU3l6a2FsbGVyIHNlZW1zIHRvIGhhdmUgZnVuY3Rpb25zIGZvciBuZXR3b3JraW5nIChgc3l6X2luaXRfbmV0X3NvY2tldGApIGFuZCB0aGUgbGlrZS4KCldhaXQsIGlzIHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzeXpfZGV2X2R0X292ZXJsYXlgPyBOby4KClNvLCBpbiBlc3NlbmNlLCBwbGF0Zm9ybSBkcml2ZXJzIHRpZWQgdG8gc3BlY2lmaWMgU29DcyBhcmUgZ2VuZXJhbGx5IHVucmVhY2hhYmxlIHdpdGggdGhlIGN1cnJlbnQgU3l6a2FsbGVyIHRvb2xzZXQuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLgoKQnV0LCBiZWZvcmUgSSBtYWtlIGEgZmluYWwgZGV0ZXJtaW5hdGlvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrICpldmVyeSogcG9zc2libGUgZW50cnkgcG9pbnQgZm9yIGBhaXJvaGFfbWRpb19wcm9iZWAuIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX21kaW9fcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTE2Nz1zdGF0aWMgaW50IGFpcm9oYV9tZGlvX2NsNDVfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZudW0sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwMi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyMDM6c3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTI2OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM6MjY5Olx0LnByb2JlID0gYWlyb2hhX21kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjcwLVx0LmRyaXZlciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1NwoJCQkJCQkJb3V0cHV0OiA5MAoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBsYXRmb3JtIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIGlzIGp1c3QgYW5vdGhlciBydW4tb2YtdGhlLW1pbGwgcGxhdGZvcm0gZHJpdmVyLCBub3RoaW5nIHBhcnRpY3VsYXJseSBncm91bmRicmVha2luZyBoZXJlLiBHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQy4gVGhhdCBtZWFucyBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGhhcmR3YXJlIGFuZCByZWxpZXMgb24gc3BlY2lmaWMgcmVnaXN0ZXJzLCBwZXJpcGhlcmFscywgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyB0aGF0IGFyZSBzaW1wbHkgdW5hdmFpbGFibGUgb3IgZW11bGF0ZWQgaW5hZGVxdWF0ZWx5IGluIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLiBUcnlpbmcgdG8gZnV6eiB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgaXMgYSB3YXN0ZSBvZiB0aW1lIGFuZCByZXNvdXJjZXMg4oCTIGl0JiMzOTtzIHByYWN0aWNhbGx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIGl0JiMzOTtzIG5vdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DJiMzOTtzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQyYjMzk7cyBNRElPIGJ1cyBjb250cm9sbGVyLiBQbGF0Zm9ybSBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBTb0NzIGFyZSBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24sIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaGVyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoxOC4wNjE0MDIzODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgyNzI2MjM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQydzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MTguMDYxNDA5NDI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc2NDk2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MTkwMDYyNDVjMWU0ODE3ZTQwYzU0OTRiZGNlZDJhNTAyMDJhMDI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDEyOjI4OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY1xcbmluZGV4IDUyZTc0NzUxMjFlYWZjLi40YzFiMjQxNTY4N2MxYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcXG5AQCAtMjQ2LDE1ICsyNDYsMTcgQEAgc3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXG4gXFx0cmV0ID0gY2xrX3NldF9yYXRlKHByaXYtXFx1MDAzZWNsaywgZnJlcSk7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gZXJyX3Jlc2V0X2Fzc2VydDtcXG4gXFxuIFxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG4tXFx0aWYgKHJldCkge1xcbi1cXHRcXHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVxcdTAwM2VyZXNldCk7XFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcdH1cXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byBlcnJfcmVzZXRfYXNzZXJ0O1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfcmVzZXRfYXNzZXJ0OlxcbitcXHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVxcdTAwM2VyZXNldCk7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFpcm9oYV9tZGlvX2R0X2lkc1tdID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoxOC42OTA0MjM5NThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTk4MjMzMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DJ3MgTURJTyBidXMgY29udHJvbGxlci4gUGxhdGZvcm0gZHJpdmVycyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgU29DcyBhcmUgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGhlcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUxOTAwNjI0NWMxZTQ4MTdlNDBjNTQ5NGJkY2VkMmE1MDIwMmEwMjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAxMjoyODoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY1xuaW5kZXggNTJlNzQ3NTEyMWVhZmMuLjRjMWIyNDE1Njg3YzFhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmNcbkBAIC0yNDYsMTUgKzI0NiwxNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXG4gXHRyZXQgPSBjbGtfc2V0X3JhdGUocHJpdi1cdTAwM2VjbGssIGZyZXEpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfcmVzZXRfYXNzZXJ0O1xuIFxuIFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG4tXHRpZiAocmV0KSB7XG4tXHRcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcmVzZXQpO1xuLVx0XHRyZXR1cm4gcmV0O1xuLVx0fVxuK1x0aWYgKHJldClcbitcdFx0Z290byBlcnJfcmVzZXRfYXNzZXJ0O1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX3Jlc2V0X2Fzc2VydDpcbitcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcmVzZXQpO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWlyb2hhX21kaW9fZHRfaWRzW10gPSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoxOC42OTA0MjY4NDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc4Mjk3Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0d2Vha2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYGRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBhaXJvaGFfbWRpb19wcm9iZWAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoYXQgaXQncyBhc3NlcnRpbmcgdGhlIHJlc2V0IGNvbnRyb2wgb24gZXJyb3IuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCByZWFjaCBvZiB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLlxuXG5gbWRpby1haXJvaGEuY2AgaXMsIGFzIEkgcmVjYWxsLCBhIHBsYXRmb3JtIGRyaXZlciB0YXJnZXRpbmcgdGhlIEFpcm9oYSBFTjc1ODEgTURJTy4gVGhlc2UgcGxhdGZvcm0gZHJpdmVycywgYmVpbmcgcXVpdGUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIFN5c3RlbS1vbi1DaGlwIChTb0MpLCBvZnRlbiBhcmVuJ3QgdHJpZ2dlcmVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB1bmxlc3MgeW91J3JlIGVpdGhlciBlbXVsYXRpbmcgdGhlIGhhcmR3YXJlIGluIHNvbWUgZmFzaGlvbiBvciwgcG90ZW50aWFsbHksIGlmIGl0IGFsc28gZnVuY3Rpb25zIGFzIGEgbW9yZSBnZW5lcmljIGRyaXZlciBpbiBjZXJ0YWluIGNvbnRleHRzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBzaG91bGQgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIHRoaXMgZHJpdmVyIHRvIGNvbmZpcm0gYW5kIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW5kaWNhdGlvbiBvZiBpdCBiZWluZyBjb21waWxlZCBpbiBhcyBhIG1vZHVsZSBvciBpZiB0aGVyZSBhcmUgYW55IGhpbnRzIHJlbGF0ZWQgdG8gaXQgYWxzbyBiZWluZyBhIGdlbmVyaWMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTU0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MjMuMzY4NzI5MDI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3Njg0ODQ4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhX21kaW9fcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTE2Nz1zdGF0aWMgaW50IGFpcm9oYV9tZGlvX2NsNDVfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjAyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyMDM6c3RhdGljIGludCBhaXJvaGFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jPTI2OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jOjI2OTpcXHQucHJvYmUgPSBhaXJvaGFfbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjcwLVxcdC5kcml2ZXIgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDEyOjI4OjI2LjEzNzIyMDY4OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzY5OTc0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhbmRzY2FwZSBmb3IgTURJTyBTdXBwb3J0KipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgYG1kaW8tYWlyb2hhLmNgIGRyaXZlci4gU2VlbXMgbGlrZSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEknbSBhc3N1bWluZyB0aGF0IGRyaXZlcidzIGJ1aWxkIG9wdGlvbnMgYXJlIGNvbnRyb2xsZWQgdGhlcmUsIGFuZCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBwYXJhbWV0ZXJzIEkgaGF2ZSBjb250cm9sIG92ZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgYmVoYXZpb3JzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZCwgd2hhdCBtb2R1bGVzIGl0IG5lZWRzLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBidWlsZCBpbXBsaWNhdGlvbnMgYXJlLiBCYXNpY2FsbHksIEkgd2FudCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24ga25vYnMgYmVmb3JlIEkgZ28gZnVydGhlci4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODoyOS4wNzQyMjAyNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyODM0MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby1haXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT02PW9iai0kKENPTkZJR19PRl9NRElPKVxcdFxcdCs9IG9mX21kaW8ub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX01ESU9fQUlST0hBKVxcdFxcdCs9IG1kaW8tYWlyb2hhLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX01ESU9fQVNQRUVEKVxcdFxcdCs9IG1kaW8tYXNwZWVkLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MjkuMTU2NTA5ODMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzIzODQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgdGhlIE1ESU8gQUlST0hBIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gQmVmb3JlIEkgc3RhcnQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBvciBnb2luZyBkb3duIHJhYmJpdCBob2xlcywgbXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgd2hhdCdzIGRlZmluZWQgZm9yIGBNRElPX0FJUk9IQWAuIEkga25vdyB0aGF0J3MgYSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGlzIHBhcnRpY3VsYXIgTURJTyBpbXBsZW1lbnRhdGlvbi4gU28sIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdGhlIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgbW9zdCByZWxpYWJsZSBwbGFjZSB0byBzdGFydDsgaXQnbGwgdGVsbCBtZSBpZiBgTURJT19BSVJPSEFgIGlzIGV2ZW4gc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGtlcm5lbCB2ZXJzaW9uLCBhbmQgaWYgc28sIGhvdyBpdCdzIGRlZmluZWQgaW4gdGVybXMgb2YgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIHRoZSBhc3NvY2lhdGVkIGhlbHAgdGV4dC4gVGhpcyB3aWxsIGZyYW1lIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gc3BhY2UgcXVpY2tseSwgc2F2aW5nIHRpbWUgb24gYW55IHVubmVjZXNzYXJ5IGludmVzdGlnYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0gaXMgY3JpdGljYWwgZm9yIGFueSBkZWJ1Z2dpbmcgb3IgY29kZSBjaGFuZ2VzIEkgbWlnaHQgbmVlZCB0byBtYWtlIGxhdGVyLiBUaGlzIGlzIGJhc2ljLCBidXQgZnVuZGFtZW50YWwsIGFuZCBJJ2xsIGtlZXAgaXQgYXMgbXkgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDEyOjI4OjMyLjU3OTc1MDA1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTA0MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRElPX0FJUk9IQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTk9Y29uZmlnIEFDUElfTURJT1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoyNDpjb25maWcgTURJT19BSVJPSEFcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjc1ODMgTURJTyBidXMgY29udHJvbGxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6MzIuNjU3MjU4MTQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0MjI5MjIwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgdGV4dDpcblxuKipEaXZpbmcgaW50byB0aGUgTURJTyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyNC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1ESU8gc3Vic3lzdGVtLCBhbmQgdGhpcyBLY29uZmlnIGZpbGUgaXMgd2hlcmUgdGhhdCdzIGFsbCBkZWZpbmVkLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY3JpdGljYWwgcGFyYW1ldGVycyBoZXJlLCB0aGluZ3MgdGhhdCB3aWxsIGFsbG93IG1lIHRvIHRhaWxvciB0aGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgc3lzdGVtIG5lZWRzLiBUaGluZ3MgbGlrZSB3aGF0IE1ESU8gYnVzIHR5cGVzIGFyZSBzdXBwb3J0ZWQsIHdoYXQgUEhZIGRyaXZlcnMgYXJlIGluY2x1ZGVkLCBhbmQgd2hldGhlciBkaWZmZXJlbnQgTURJTyBhY2Nlc3MgbWV0aG9kcyBhcmUgZW5hYmxlZC4gVGhpcyBpcyB0aGUgYmVkcm9jayBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsIGNvbmZpZ3VyZXMgYW5kIGludGVyYWN0cyB3aXRoIHRoZSBwaHlzaWNhbCBsYXllciBkZXZpY2VzIGF0dGFjaGVkIHRvIGEgbmV0d29yayBpbnRlcmZhY2UuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODozNS42OTk1NTI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0ZGVmX3RyaXN0YXRlIEFDUElcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgQUNQSSBNRElPIGJ1cyAoRXRoZXJuZXQgUEhZKSBhY2Nlc3NvcnNcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1ESU9fQUlST0hBXFxuICAyNTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWlyb2hhIEFONzU4MyBNRElPIGJ1cyBjb250cm9sbGVyXFxcIlxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCBDT01QSUxFX1RFU1RcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgZm9yIHRoZSBNRElPIGJ1c3NlcyBmb3VuZCBpbiB0aGVcXG4gIDI5OlxcdFxcdCAgQWlyb2hhIEFONzU4MyBTb0Mncy5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE1ESU9fU1VONElcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuNGkgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1RcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXFxuICAzNjpcXHRcXHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgQWxsd2lubmVyIFNvQyB0aGF0IGhhdmUgYW4gRU1BQyAoQTEwLFxcbiAgMzc6XFx0XFx0ICBBMTIsIEExMHMsIGV0Yy4pXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBNRElPX1hHRU5FXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDEyOjI4OjM1LjY5OTY1ODQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3OTQxMjIxNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgQWlyb2hhIE1ESU8gRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZHJpdmVyIEknbSBsb29raW5nIGF0LCBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DLCByZWxpZXMgb24gZWl0aGVyIGBBUkNIX0FJUk9IQWAgb3IgYENPTVBJTEVfVEVTVGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsaWtlIG1hbnkgcGxhdGZvcm0gZHJpdmVycywgaXQncyBnb2luZyB0byBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2l0aG91dCBhIHNwZWNpZmljIFFFTVUgbWFjaGluZSBvciBlbXVsYXRpb24gdGFpbG9yZWQgZm9yIHRoaXMgaGFyZHdhcmUsIGl0J3MgYSBkZWFkIGVuZCwgZ2VuZXJhbGx5LlxuXG5TaW5jZSBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBiaW5kaW5nIGhhcHBlbnMgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUuIEkgc2VlIHRoZSBjb21wYXRpYmxlIHN0cmluZyBcImFpcm9oYSxlbjc1ODEtbWRpb1wiIGRlZmluZWQsIHNvIHRoYXQncyB0aGUga2V5LlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gSSB0cmlnZ2VyIHRoaXMgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgc3l6LXVzYmdlbmAgb3Igc2ltaWxhciBmdXp6aW5nIHRvb2xzPyBObywgaXQncyBhIHBsYXRmb3JtIGRyaXZlci4gVGhlc2UgdG9vbHMgYXJlIG9mdGVuIGdlYXJlZCB0b3dhcmQgbW9yZSBcImJ1c1wiIHJlbGF0ZWQgZGV2aWNlcy5cblxuQ291bGQgSSB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IFN5emthbGxlciAqY2FuKiBpbmplY3Qgb3ZlcmxheXMgaWYgYENPTkZJR19PRl9PVkVSTEFZYCBpcyBlbmFibGVkLiBUaGF0J3MgYSBwb3NzaWJpbGl0eSwgYnV0IG92ZXJsYXlzIGhhdmUgbGltaXRhdGlvbnMuIFN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIGdlbmVyaWMgbWV0aG9kIGZvciBmdXp6aW5nIGFyYml0cmFyeSBwbGF0Zm9ybSBkcml2ZXJzIHVubGVzcyBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQgYW5kIHRoYXQncyBub3Qgd2hhdCBJJ20gZGVhbGluZyB3aXRoLlxuXG5XYWl0LCBkb2VzIFN5emthbGxlciBoYXZlIGEgd2F5IHRvIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzLCBtYXliZSB0aHJvdWdoIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBOby4gSXQgaGFzIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgVVNCIChgc3l6X2dlbl9zeXpfdXNiX2RldmljZWApLCBQQ0kgKGBzeXpfZ2VuX3N5el9wY2lfZGV2aWNlYCksIGV0Yy4gQnV0IGZvciBwbGF0Zm9ybSBkZXZpY2VzLCBpdCBjYW4ndCBlYXNpbHkgaW5zdGFudGlhdGUgdGhlbSB1bmxlc3MgdGhlcmUncyBhIHBzZXVkby1kZXZpY2Ugb3IgRFQgb3ZlcmxheSBzdXBwb3J0LlxuXG5Eb2VzIGBzeXpfbW91bnRfaW1hZ2VgIGluamVjdCBEVCBvdmVybGF5cz8gTm8uIFN5emthbGxlciBzZWVtcyB0byBoYXZlIGZ1bmN0aW9ucyBmb3IgbmV0d29ya2luZyAoYHN5el9pbml0X25ldF9zb2NrZXRgKSBhbmQgdGhlIGxpa2UuXG5cbldhaXQsIGlzIHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzeXpfZGV2X2R0X292ZXJsYXlgPyBOby5cblxuU28sIGluIGVzc2VuY2UsIHBsYXRmb3JtIGRyaXZlcnMgdGllZCB0byBzcGVjaWZpYyBTb0NzIGFyZSBnZW5lcmFsbHkgdW5yZWFjaGFibGUgd2l0aCB0aGUgY3VycmVudCBTeXprYWxsZXIgdG9vbHNldC5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC5cblxuQnV0LCBiZWZvcmUgSSBtYWtlIGEgZmluYWwgZGV0ZXJtaW5hdGlvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrICpldmVyeSogcG9zc2libGUgZW50cnkgcG9pbnQgZm9yIGBhaXJvaGFfbWRpb19wcm9iZWAuIEkgZG9uJ3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6NDMuNDkzNzgzMTE4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ5MjM2MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFpcm9oYV9tZGlvX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYz0xNjc9c3RhdGljIGludCBhaXJvaGFfbWRpb19jbDQ1X3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2bnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTIwMi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM6MjAzOnN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYz0yNjg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX21kaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYzoyNjk6XFx0LnByb2JlID0gYWlyb2hhX21kaW9fcHJvYmUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTI3MC1cXHQuZHJpdmVyID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxMjoyODo0NS45NDMwMjQzNzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTU5NTA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQbGF0Zm9ybSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGp1c3QgYW5vdGhlciBydW4tb2YtdGhlLW1pbGwgcGxhdGZvcm0gZHJpdmVyLCBub3RoaW5nIHBhcnRpY3VsYXJseSBncm91bmRicmVha2luZyBoZXJlLiBHaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc6IGZhbHNlYC4gTXkgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgdGhlIEFpcm9oYSBBTjc1ODMgU29DLiBUaGF0IG1lYW5zIGl0J3MgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBoYXJkd2FyZSBhbmQgcmVsaWVzIG9uIHNwZWNpZmljIHJlZ2lzdGVycywgcGVyaXBoZXJhbHMsIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgc2ltcGx5IHVuYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluYWRlcXVhdGVseSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVS4gVHJ5aW5nIHRvIGZ1enogdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGlzIGEgd2FzdGUgb2YgdGltZSBhbmQgcmVzb3VyY2VzIOKAkyBpdCdzIHByYWN0aWNhbGx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIGl0J3Mgbm90IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDU3LCJPdXRwdXRUb2tlbnMiOjkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTI6Mjg6NDkuODg4NjIxODQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQydzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgQU43NTgzIFNvQydzIE1ESU8gYnVzIGNvbnRyb2xsZXIuIFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIFNvQ3MgYXJlIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfhcqp[1] Phase: Running StartedAt: 2026-06-22 12:29:00 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfhcqp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-22 12:29:00 +0000 UTC FinishedAt: 2026-06-22 12:29:04 +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,}