Name: series-workflownbsrl Phase: Failed StartedAt: 2026-09-04 14:02:50 +0000 UTC FinishedAt: 2026-09-04 14:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflownbsrl[0] Phase: Succeeded StartedAt: 2026-09-04 14:02:50 +0000 UTC FinishedAt: 2026-09-04 14:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflownbsrl[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 14:02:50 +0000 UTC FinishedAt: 2026-09-04 14:05:59 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWMwMjJmY2M4OTQyMzg3N2IwNmQxOWVkOWMyN2E4ODAzNDQ3M2IyY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDQ6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiAmIzQzOzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4mIzQzO1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiYjNDM7XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuJiM0MztcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7XG4gXG4gXHRyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWMwMjJmY2M4OTQyMzg3N2IwNmQxOWVkOWMyN2E4ODAzNDQ3M2IyYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDQ6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMKaW5kZXggYjRjMzk1ODIwMWIyNS4uODVmNDc5ZGI5MzZjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYwpAQCAtNDA3LDYgJiM0Mzs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LAogCQkJJmFtcDsmYW1wOyAodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9XUklURSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqLwomIzQzOwlpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQomIzQzOwkJdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7CiYjNDM7CiAJdm1hLSZndDt2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7CiAKIAlyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLCB2bWEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGl0JiMzOTtzIHdvcnRoIG91ciB0aW1lIHRvIGZ1enouIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kOyBpdCYjMzk7cyBhIGNvbW1vbiBhbmQgd2VsbC1zdXBwb3J0ZWQgcGxhdGZvcm0gZm9yIG91ciBwdXJwb3Nlcy4KClRoZSBkaWZmIGlzIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBUaGlzIGlzIGEgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBWRklPIGZyYW1ld29yaywgZGVhbGluZyB3aXRoIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRldmljZXMuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBkZXZpY2UgZHJpdmVycyBhcmUgb2Z0ZW4gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBwb3RlbnRpYWxseSB1bnRydXN0ZWQgaGFyZHdhcmUgb3IgZW11bGF0ZWQgaGFyZHdhcmUuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBhZGRpbmcgYSBjaGVjayB3aXRoaW4gdGhlIGB2ZmlvX2ZzbF9tY19tbWFwYCBmdW5jdGlvbi4gSXQgYXBwZWFycyB0byBiZSBndWFyZGluZyBhZ2FpbnN0IG1wcm90ZWN0KCkgc2hlbmFuaWdhbnMsIGVuc3VyaW5nIHRoYXQgcmVhZC1vbmx5IHJlZ2lvbnMgbWFwcGVkIHZpYSBWRklPIGNhbiYjMzk7dCBiZSBzdWJzZXF1ZW50bHkgbWFkZSB3cml0ZWFibGUgdGhyb3VnaCBhIGNhbGwgdG8gbXByb3RlY3QuIFRoaXMgaXMgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBJdCYjMzk7cyBjbGVhcmx5IGludGVuZGVkIHRvICpwcmV2ZW50KiBhIHZ1bG5lcmFiaWxpdHksIGJ1dCBwYXRjaGVzIHRoYXQgYXR0ZW1wdCB0byBmaXggc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGNhbiB0aGVtc2VsdmVzIGludHJvZHVjZSBzdWJ0bGUgbmV3IG9uZXMuIFRoYXQgbWFrZXMgdGhpcyBwYXRjaCBhIGRlY2VudCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIHJlbGV2YW50IGBkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWdgIGluZm9ybWF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCB0ZWxsIG1lIHRoZSBidWlsZCBjb25kaXRpb25zIHRoYXQgYXBwbHkgdG8gdGhpcyBjb2RlLCB3aGljaCB3aWxsIGluZmx1ZW5jZSBob3cgSSBzZXQgdXAgYW55IGZ1enppbmcgcnVucy4gS25vd2luZyB3aGVyZSB0aGlzIGRyaXZlciBzaXRzIGluIHRoZSBicm9hZGVyIFZGSU8gZWNvc3lzdGVtIGlzIGNydWNpYWwgZm9yIGNvbnN0cnVjdGluZyBhbiBlZmZlY3RpdmUgZnV6emluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWRklPX0ZTTF9NQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX1ZGSU9fTURFVikgJiM0Mzs9IG1kZXYvXG5kcml2ZXJzL3ZmaW8vTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX1ZGSU9fRlNMX01DKSAmIzQzOz0gZnNsLW1jL1xuZHJpdmVycy92ZmlvL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19WRklPX0NEWCkgJiM0Mzs9IGNkeC9cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc9MT1tZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTMtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc6NDpjb25maWcgVkZJT19GU0xfTUNcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL01ha2VmaWxlPTM9dmZpby1mc2wtbWMteSA6PSB2ZmlvX2ZzbF9tYy5vIHZmaW9fZnNsX21jX2ludHIub1xuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IHZmaW8tZnNsLW1jLm9cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9OTc9c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMTItXHRcdGRldl93YXJuKFx1MDAyNm1jX2NvbnQtXHUwMDNlZGV2LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjExMzpcdFx0XHQgXCYjMzQ7VkZJT19GU0xfTUM6IHJlc2V0IGRldmljZSBoYXMgZmFpbGVkICglZClcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTE0LVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0xMjA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMS1cdC8qIG1hcCBvZmZzZXQgdG8gdGhlIHBoeXNpY2FsIGFkZHJlc3MgICovXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MTMyOlx0aW5mby1cdTAwM2VvZmZzZXQgPSBWRklPX0ZTTF9NQ19JTkRFWF9UT19PRkZTRVQoaW5mby1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTMzLVx0aW5mby1cdTAwM2VzaXplID0gdmRldi1cdTAwM2VyZWdpb25zW2luZm8tXHUwMDNlaW5kZXhdLnNpemU7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTIzND1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY19yZWFkKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMzgtXHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIzOTpcdHVuc2lnbmVkIGludCBpbmRleCA9IFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWCgqcHBvcyk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MjQwOlx0bG9mZl90IG9mZiA9ICpwcG9zIFx1MDAyNiBWRklPX0ZTTF9NQ19PRkZTRVRfTUFTSztcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yNDEtXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cdTAwM2VtY19kZXY7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTMxMj1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY193cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzE3LVx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTg6XHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjMxOTpcdGxvZmZfdCBvZmYgPSAqcHBvcyBcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzIwLVx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHZkZXYtXHUwMDNlbWNfZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0zNTM9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwX21taW8oc3RydWN0IHZmaW9fZnNsX21jX3JlZ2lvbiByZWdpb24sXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM2MC1cdHBnb2ZmID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAyNlxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM2MTpcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM2Mi1cdGJhc2UgPSBwZ29mZiBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVDtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Mzc4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzg1LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM4NjpcdGluZGV4ID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAzZVx1MDAzZSAoVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzg3LVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00MjA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19idXNfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMxLVx0XHRpZiAoZGV2aWNlX3NldF9kcml2ZXJfb3ZlcnJpZGUoZGV2LCB2ZmlvX2ZzbF9tY19vcHMubmFtZSkpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDMyOlx0XHRcdGRldl93YXJuKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IFNldHRpbmcgZHJpdmVyIG92ZXJyaWRlIGZvciBkZXZpY2UgaW4gZHByYyAlcyBmYWlsZWRcXG5cJiMzNDssXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMzLVx0XHRcdFx0IGRldl9uYW1lKFx1MDAyNm1jX2NvbnQtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM0LVx0XHRlbHNlXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDM1Olx0XHRcdGRldl9pbmZvKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IFNldHRpbmcgZHJpdmVyIG92ZXJyaWRlIGZvciBkZXZpY2UgaW4gZHByYyAlc1xcblwmIzM0OyxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00MzYtXHRcdFx0XHQgZGV2X25hbWUoXHUwMDI2bWNfY29udC1cdTAwM2VkZXYpKTtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQxLVx0XHRpZiAobWNfZHJ2IFx1MDAyNlx1MDAyNiBtY19kcnYgIT0gXHUwMDI2dmZpb19mc2xfbWNfZHJpdmVyKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ0MjpcdFx0XHRkZXZfd2FybihkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBPYmplY3QgJXMgYm91bmQgdG8gZHJpdmVyICVzIHdoaWxlIERQUkMgYm91bmQgdG8gdmZpby1mc2wtbWNcXG5cJiMzNDssXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQzLVx0XHRcdFx0IGRldl9uYW1lKGRldiksIG1jX2Rydi1cdTAwM2Vkcml2ZXIubmFtZSk7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ0OT1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ2OS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NzA6XHRcdGRldl9lcnIoXHUwMDI2bWNfZGV2LVx1MDAzZWRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IEZhaWxlZCB0byBzZXR1cCBEUFJDICglZClcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDcxLVx0XHRnb3RvIG91dF9uY191bnJlZztcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDgwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfc2Nhbl9jb250YWluZXIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDg5LVx0XHRkZXZfZXJyKFx1MDAyNm1jX2Rldi1cdTAwM2VkZXYsXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDkwOlx0XHRcdFwmIzM0O1ZGSU9fRlNMX01DOiBDb250YWluZXIgc2Nhbm5pbmcgZmFpbGVkICglZClcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDkxLVx0XHRkcHJjX3JlbW92ZV9kZXZpY2VzKG1jX2RldiwgTlVMTCwgMCk7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTUzMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU0Mi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo1NDM6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDQtXHRcdGdvdG8gb3V0X3B1dF92ZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTYtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo3OiNpZm5kZWYgVkZJT19GU0xfTUNfUFJJVkFURV9IXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo4OiNkZWZpbmUgVkZJT19GU0xfTUNfUFJJVkFURV9IXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC05LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6MTA6I2RlZmluZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQgICAgNDBcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0sgKCgodTY0KSgxKSBcdTAwM2NcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKSAtIDEpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xMi1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjEzOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX1RPX0lOREVYKG9mZikgKChvZmYpIFx1MDAzZVx1MDAzZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xNC1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE1OiNkZWZpbmUgVkZJT19GU0xfTUNfSU5ERVhfVE9fT0ZGU0VUKGluZGV4KVx0XFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE2Olx0KCh1NjQpKGluZGV4KSBcdTAwM2NcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTctXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg9NDc9dm9pZCB2ZmlvX2ZzbF9tY19pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC00OC1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjQ5OiNlbmRpZiAvKiBWRklPX0ZTTF9NQ19QUklWQVRFX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODA0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYGRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ2AgZmlsZToKCioqQW5hbHl6aW5nIHRoZSBWRklPIEZTTCBNQyBLY29uZmlnIEZpbGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgVkZJTyBGU0wgTUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEZpcnN0LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIHR5cGljYWwgc3RydWN0dXJlOiBhIGBjb25maWdgIGJsb2NrIGRlZmluaW5nIHRoZSBtYWluIGZlYXR1cmUsIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9uIGZvciBlbmFibGluZyB0aGUgRlNMIE1DIChGcmVlc2NhbGUgTWVkaWEgQ29udGFpbmVyKSBzdXBwb3J0IHdpdGhpbiB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGZyYW1ld29yay4gVGhpcyBpcyBjcnVjaWFsIGZvciBleHBvc2luZyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCB0aGlzIGZpbGUgc2hvdWxkIGV4cG9zZSB0aGUgdmFyaW91cyBjb25maWd1cmFiaWxpdHkga25vYnMuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMuIEZvciBpbnN0YW5jZSwgSSBhbnRpY2lwYXRlIGEgZGVwZW5kZW5jeSBvbiB0aGUgY29yZSBWRklPIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYW5kIHByb2JhYmx5IHNwZWNpZmljIEZTTCBNQyBkcml2ZXJzIG9yIHN1YnN5c3RlbXMuIEkmIzM5O2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciBhbnkgb3B0aW9ucyByZWxhdGVkIHRvIHNwZWNpZmljIGZlYXR1cmVzIG9mIHRoZSBGU0wgTUMgaGFyZHdhcmUsIHN1Y2ggYXMgZGlmZmVyZW50IGFjY2VsZXJhdGlvbiBlbmdpbmVzIG9yIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXRzLiBBcmUgdGhlcmUgYW55IGZlYXR1cmVzIEkgY2FuIHR1bmUgdG8gdGFpbG9yIHRoZSBkZXZpY2UgYW5kIGl0cyB2aXJ0dWFsIGZ1bmN0aW9ucz8KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEFyZSB0aGVyZSByZWFzb25hYmxlIGRlZmF1bHRzIGZvciBtb3N0IGRlcGxveW1lbnRzLCBvciBpcyB0aGlzIGRyaXZlciBkZXNpZ25lZCB0byBiZSBoaWdobHkgY29uZmlndXJhYmxlPyBJZiBpdCYjMzk7cyB0aGUgbGF0dGVyLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciB1c2VyIGV4cGVyaWVuY2UgYW5kIHBvdGVudGlhbCBjb21wbGV4aXR5PyBJJiMzOTtsbCBhc3Nlc3Mgd2hldGhlciBpdCYjMzk7cyBzZXR0aW5nIGFueSBkZWZhdWx0cyB0aGF0IG1pZ2h0IG5lZWQgc3BlY2lhbCBhdHRlbnRpb24gaW4gb3VyIHVzZSBjYXNlIChvciB0aGF0IGFyZSBjbGVhcmx5IGluYXBwcm9wcmlhdGUgZm9yIGEgZ2l2ZW4gdGFyZ2V0KS4gSSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMg4oCTIGZlYXR1cmVzIHRoYXQgYmVjb21lIGF2YWlsYWJsZSBvbmx5IHdoZW4gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgb3Igb3RoZXIga2VybmVsIG9wdGlvbnMgYXJlIGVuYWJsZWQuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSByZWFkaW5nIHRoZSBoZWxwIHRleHQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBHb29kIGhlbHAgdGV4dCBpcyBpbmZvcm1hdGl2ZSwgZXhwbGFpbmluZyBub3QganVzdCAqd2hhdCogdGhlIG9wdGlvbiBkb2VzIGJ1dCAqd2h5KiBzb21lb25lIG1pZ2h0IHdhbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgaXQuIEkgd2FudCB0byBlbnN1cmUgdGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXIgYW5kIGFjY3VyYXRlLiBJcyBpdCBjb25jaXNlPyBEb2VzIGl0IHBvaW50IHRvIHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBWRklPIHNpZGUgb2YgdGhpbmdzPyBUaGlzIGlzIGFsbCBhYm91dCBhc3Nlc3NpbmcgdGhlIGNvbmZpZ3VyYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IG9mIHRoaXMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuICAgMjpcdFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXG4gICAzOlx0XG4gICA0Olx0Y29uZmlnIFZGSU9fRlNMX01DXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1wmIzM0O1xuICAgNjpcdFx0c2VsZWN0IEVWRU5URkRcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVkZJTyBRb3JJUSBEUEFBMiBmc2wtbWNcbiAgIDk6XHRcdCAgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBwYXNzdGhyb3VnaFxuICAxMDpcdFx0ICBmc2wtbWMgYnVzIGRldmljZXMgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAxMTpcdFxuICAxMjpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRlbmRtZW51XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUzMAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIEZTTF9NQ19CVVMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYEZTTF9NQ19CVVNgIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoaXMgbWVhbnMgSSYjMzk7bSBnb2luZyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkbyBhIGdsb2JhbCBzZWFyY2ggYWNyb3NzIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHRvb2xzIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzeW1ib2wuIEkgZXhwZWN0IEkmIzM5O2xsIHdhbnQgdG8gZmlsdGVyIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uIGBLY29uZmlnYCBmaWxlcyBhbmQgbWF5IG5lZWQgc29tZSBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gbWFuYWdlIHRoZSBzZWFyY2ggcHJvY2VzcyBiYXNlZCBvbiB0aGUgc3lzdGVtIGluIHdoaWNoIHRoaXMgaXMgaW1wbGVtZW50ZWQuIFRoaXMgd2lsbCBsZXQgbWUgc2VlIGl0cyBkZXBlbmRlbmNpZXMsIHdobyYjMzk7cyBlbmFibGluZyBpdCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsb2dpYyBhcm91bmQgYEZTTF9NQ19CVVNgIGlzIGNydWNpYWwgdG8gaXRzIGJlaGF2aW9yIGFuZCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9NQ19CVVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjg6Y29uZmlnIEZTTF9NQ19CVVNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTktXHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgzMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZWFkaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byB0aGUgRlNMIE1DIEtjb25maWcgRmlsZSoqCgpPa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgRnJlZXNjYWxlIChub3cgTlhQKSBNdWx0aS1Db3JlIChNQykgZHJpdmVycy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIOKAkyB0aGluZ3MgbGlrZToKCiogICAqKk9wdGlvbnMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBNQyBkcml2ZXIgZnJhbWV3b3JrLioqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB0aGUgZ2F0ZWtlZXBlciBmb3IgYWxsIHRoZSBNQy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBsaWtlIGBDT05GSUdfRlNMX01DYCBvciBgRlNMX01DX0RSSVZFUlNgLgoqICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgTUMgZGV2aWNlcyBvciBzdWItZHJpdmVycy4qKiBXZSBhcmUgaW4gdGhlIGZzbC1tYyBkaXJlY3RvcnksIHNvLCBnaXZlbiBpdHMgY29tbW9uIG9yZ2FuaXphdGlvbiwgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNQyBoYXJkd2FyZSBkZXZpY2VzIG9yIGZlYXR1cmVzLCBwZXJoYXBzIHN0cnVjdHVyZWQgaGllcmFyY2hpY2FsbHkuIFRoZXNlIHdvdWxkIGxpa2VseSBiZSBndWFyZGVkIGJ5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sIG9yIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy4gRm9yIGV4YW1wbGUsIHNwZWNpZmljIGRldmljZSB0eXBlcyAobGlrZSBFdGhlcm5ldCwgRE1BLCBldGMuKSB1c2luZyB0aGUgTUMgZnJhbWV3b3JrLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgTUMgY29tcG9uZW50cy4qKiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBvcHRpb25zIGFyZSBpbnRlci1yZWxhdGVkLiBBcmUgdGhlcmUgY2xlYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIHZhcmlvdXMgZGV2aWNlIHN1Yi1kcml2ZXJzPyBBcmUgY2VydGFpbiBvcHRpb25zIG9ubHkgYXZhaWxhYmxlIGlmIG90aGVycyBhcmUgZW5hYmxlZD8gVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgYSBzZW5zZSBvZiBob3cgbW9kdWxhciBhbmQgd2VsbC1kZXNpZ25lZCB0aGUgY29uZmlndXJhdGlvbiBpcy4KKiAgICoqRGVmYXVsdCB2YWx1ZXMgYW5kIGhlbHAgdGV4dC4qKiBJJiMzOTttIGFsc28gaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIG9wdGlvbnMgYW5kIHRoZSBleHBsYW5hdG9yeSB0ZXh0LiBEbyB0aGUgZGVmYXVsdHMgbWFrZSBzZW5zZT8gSXMgdGhlIGhlbHAgdGV4dCBjbGVhciBhbmQgaW5mb3JtYXRpdmU/IEdvb2QgS2NvbmZpZyBmaWxlcyBwcm92aWRlIGVub3VnaCBndWlkYW5jZSB0byBtYWtlIGFuIGluZm9ybWVkIGNob2ljZSB3aXRob3V0IGJlaW5nIG92ZXJ3aGVsbWluZy4KKiAgICoqQW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBrZXJuZWwgdmVyc2lvbi4qKiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFzIHRoZSBGU0wgTUMgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzIGFuZCBoYXJkd2FyZSByZXZpc2lvbnMuIEFsc28sIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjb21wYXRpYmlsaXR5IHNoaW1zIG9yIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQga2VybmVsIHZlcnNpb25zLgoKSSYjMzk7bGwgYmUgcmVhZGluZyB0aGlzIHdpdGggYW4gZXllIHRvd2FyZCBpZGVudGlmeWluZyBhbnkgYXJlYXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gY291bGQgYmUgaW1wcm92ZWQgZm9yIGNsYXJpdHksIG1haW50YWluYWJpbGl0eSwgb3IgcGVyZm9ybWFuY2UuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgZnV0dXJlIGVuaGFuY2VtZW50cyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgd29yayBvciBwcm9qZWN0cy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgRFBBQTIgZnNsLW1jIGJ1c1xuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBGU0xfTUNfQlVTXG4gICA5Olx0XHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4gIDExOlx0XHRzZWxlY3QgR0VORVJJQ19NU0lfSVJRXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG4gIDE0Olx0XHQgIGFyY2hpdGVjdHVyZS4gIFRoZSBmc2wtbWMgYnVzIGRyaXZlciBoYW5kbGVzIGRpc2NvdmVyeSBvZlxuICAxNTpcdFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXG4gIDE2Olx0XHQgIGJpbmRpbmcgb2JqZWN0cyB0byBkcml2ZXJzLlxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBGU0xfTUNfVUFQSV9TVVBQT1JUXG4gIDE5Olx0XHRib29sIFwmIzM0O01hbmFnZW1lbnQgQ29tcGxleCAoTUMpIHVzZXJzcGFjZSBzdXBwb3J0XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgUHJvdmlkZXMgdXNlcnNwYWNlIHN1cHBvcnQgZm9yIGludGVycm9nYXRpbmcsIGNyZWF0aW5nLCBkZXN0cm95aW5nIG9yXG4gIDIzOlx0XHQgIGNvbmZpZ3VyaW5nIERQQUEyIG9iamVjdHMgZXhwb3J0ZWQgYnkgdGhlIE1hbmFnZW1lbnQgQ29tcGxleC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc0MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEdlbmVzaXMgb2YgYGZzbC1tY2AgRGV2aWNlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBmYXNjaW5hdGluZyB3b3JsZCBvZiBgZnNsLW1jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRoZXNlIGRldmljZXMgYWN0dWFsbHkgKmJvcm4qPyBJcyB0aGUgYGZzbC1tY2AgYnVzIGEgZGlyZWN0IG1hbmlmZXN0YXRpb24gb2YgdGhlIFFvcklRIERQQUEyIGhhcmR3YXJlLCBhIHRhbmdpYmxlIHBoeXNpY2FsIGVudGl0eSwgb3IgY2FuIGl0IGJlIGJyb3VnaHQgdG8gbGlmZSwgZW11bGF0ZWQgaWYgeW91IHdpbGwsIHdpdGhpbiB0aGUgc3RhbmRhcmQgZnJhbWV3b3JrcyBvZiBRRU1VIG9yIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb25hbCBuYXR1cmUuCgpNeSBuZXh0IGxpbmUgb2YgaW5xdWlyeSBoYXMgdG8gZG8gd2l0aCBob3cgdGhlIHN5c3RlbSByZWNvZ25pemVzIGFuZCB0aGVuIHNldHMgdXAgZGV2aWNlcyBvbiB0aGlzIGJ1cy4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIG9mIGBmc2xfbWNfYnVzX3R5cGVgLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gdHJhY2UgaG93IGRldmljZXMgYWN0dWFsbHkgZ2V0IGNyZWF0ZWQgYW5kIG1hZGUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIHN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGlzIGJ1cyB0eXBlIHJlZ2lzdHJhdGlvbiBhbmQgZGV2aWNlIGluc3RhbnRpYXRpb24gaXMga2V5IHRvIGdhaW5pbmcgYSBzdHJvbmcgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgZGV2aWNlcyBvcGVyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfYnVzX3R5cGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjQ9QVRUUklCVVRFX0dST1VQUyhmc2xfbWNfYnVzKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI1LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI3LVx0Lm5hbWUgPSBcJiMzNDtmc2wtbWNcJiMzNDssXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMzgtfTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MzM5OkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM0MC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTQ2MT1pbnQgX19mc2xfbWNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcml2ZXIsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjYtXHRtY19kcml2ZXItXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQ2NzpcdG1jX2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2ZnNsX21jX2J1c190eXBlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjgtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03NTI9aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzg5LVx0bWNfZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBwYXJlbnRfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTA6XHRtY19kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNmZzbF9tY19idXNfdHlwZTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkxLVx0bWNfZGV2LVx1MDAzZWRldi5yZWxlYXNlID0gZnNsX21jX2RldmljZV9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTE3NT1zdGF0aWMgdm9pZCBmc2xfbWNfYnVzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4NDpcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2ZnNsX21jX25iKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4NS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyNjA9c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTI2NDpcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjUtXHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTItZXJyb3JfY2xlYW51cF9idXM6XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTM6XHRidXNfdW5yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjk0LVxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXUuYz0xODY9c3RhdGljIGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqIGNvbnN0IGlvbW11X2J1c2VzW10gPSB7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE5NC0jaWZkZWYgQ09ORklHX0ZTTF9NQ19CVVNcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxOTU6XHRcdTAwMjZmc2xfbWNfYnVzX3R5cGUsXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk2LSNlbmRpZlxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NjItXHR2ZGV2LVx1MDAzZW5iLm5vdGlmaWVyX2NhbGwgPSB2ZmlvX2ZzbF9tY19idXNfbm90aWZpZXI7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDYzOlx0cmV0ID0gYnVzX3JlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2dmRldi1cdTAwM2VuYik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDY0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDc1LW91dF9uY191bnJlZzpcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NzY6XHRidXNfdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZmc2xfbWNfYnVzX3R5cGUsIFx1MDAyNnZkZXYtXHUwMDNlbmIpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ3Ny1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ5Nz1zdGF0aWMgdm9pZCB2ZmlvX2ZzbF91bmluaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTUwNC1cdGRwcmNfY2xlYW51cChtY19kZXYpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjUwNTpcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2dmRldi1cdTAwM2VuYik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTA2LX1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oPTM1Nj1pbnQgbWNfc2VuZF9jb21tYW5kKHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLCBzdHJ1Y3QgZnNsX21jX2NvbW1hbmQgKmNtZCk7XG4tLVxuaW5jbHVkZS9saW51eC9mc2wvbWMuaC0zNTgtI2lmZGVmIENPTkZJR19GU0xfTUNfQlVTXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oOjM1OTojZGVmaW5lIGRldl9pc19mc2xfbWMoX2RldikgKChfZGV2KS1cdTAwM2VidXMgPT0gXHUwMDI2ZnNsX21jX2J1c190eXBlKVxuaW5jbHVkZS9saW51eC9mc2wvbWMuaC0zNjAtdTMyIGZzbF9tY19nZXRfbXNpX2lkKHN0cnVjdCBkZXZpY2UgKmRldik7XG4tLVxuaW5jbHVkZS9saW51eC9mc2wvbWMuaD00Mjg9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldixcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTQzMC1cbmluY2x1ZGUvbGludXgvZnNsL21jLmg6NDMxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgZnNsX21jX2J1c190eXBlO1xuaW5jbHVkZS9saW51eC9mc2wvbWMuaC00MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzk5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZToKCioqRmluZGluZyB0aGUgU291cmNlIG9mIGBmc2xfbWNfYnVzYCBEZXZpY2VzKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIGBmc2xfbWNfYnVzYCBkZXZpY2VzIGFyZSBiZWluZyBjcmVhdGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyYWNrIGRvd24gdGhlIHBvaW50cyBvZiBvcmlnaW4uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciB0aGVpciBpbnN0YW50aWF0aW9uLCBhbmQgdGhlIHdheSB0byBkbyB0aGF0IGlzIHRvIGxvb2sgZm9yIGhvdyB0aGlzIGJ1cyBpcyBiZWluZyB0cmlnZ2VyZWQuCgpGaXJzdCwgSSYjMzk7bGwgc2VhcmNoIGZvciBjYWxscyB0byBgZnNsX21jX2RldmljZV9hZGRgLiBUaGlzIGlzIHRoZSBtb3N0IGRpcmVjdCB3YXkgdG8gY3JlYXRlIGEgZGV2aWNlIHdpdGhpbiB0aGUgZnJhbWV3b3JrLCBzbyBpdCYjMzk7cyBhIGxpa2VseSBjYW5kaWRhdGUuIElmIEkgZmluZCBjYWxscyB0byBpdCwgSSYjMzk7bGwgaW52ZXN0aWdhdGUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZC4KCkFsdGVybmF0aXZlbHksIEkgY291bGQgdHJ5IHRvIGlkZW50aWZ5IGhvdyBgZnNsX21jX2J1c19wcm9iZWAgaXMgdHJpZ2dlcmVkLiBUaGlzIHByb2JlIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCwgc28gdW5kZXJzdGFuZGluZyB3aGVuIGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgd2lsbCBoZWxwIG1lIHRyYWNlIHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzcyBmcm9tIHRoZSB0b3AgZG93bi4gQSBkZWVwIGRpdmUgaW50byB0aGUgY2FsbGluZyBjb250ZXh0cyBvZiBgZnNsX21jX2J1c19wcm9iZWAgc2hvdWxkIHJldmVhbCB0aGUgZW5hYmxpbmcgbWVjaGFuaXNtcyBvZiB0aGlzIGJ1cy4gVGhlIHVsdGltYXRlIGdvYWwgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cyB0aGF0IGxlYWQgdG8gdGhlIGJ1cyBhbmQsIGNvbnNlcXVlbnRseSwgdGhlIGRldmljZXMsIGJlaW5nIGJyb3VnaHQgb25saW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfZGV2aWNlX2FkZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xNjk9c3RhdGljIHZvaWQgZnNsX21jX29ial9kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxODM6XHRcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQob2JqX2Rlc2MsIE5VTEwsIFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTg0LVx0XHRcdFx0XHQgIFx1MDAyNmNoaWxkX2Rldik7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03Mzc9c3RhdGljIHZvaWQgZnNsX21jX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUyOmludCBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzUzLVx0XHQgICAgICBzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg3OS19XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg4MDpFWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfZGV2aWNlX2FkZCk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4MS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEwMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU3LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTU4Olx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcdTAwMjZvYmpfZGVzYywgbWNfaW8sIFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcdTAwMjZtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1OS1cdGlmIChlcnJvciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MDE9c3RydWN0IGZzbF9tY19idXMge1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxMy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNDppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjE1LVx0XHRcdFx0ICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODU5CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBmc2xfbWNfYnVzX3Byb2JlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBmc2xfbWNfYnVzX3Byb2JlYC4gUmlnaHQsIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQmIzM5O3MgZG9pbmcgd2l0aGluIHRoZSBicm9hZGVyIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBvdXQgYGZzbC1tYy1idXMuY2AgYW5kIHplcm8gaW4gb24gbGluZXMgMTAzOSB0aHJvdWdoIDExNzAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHJlbGV2YW50IGNvZGUgYmxvY2sgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmUmIzM5O3Mgb3BlcmF0aW9uLCBhbnkgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB0aGF0JiMzOTtzIGJlaW5nIHBlcmZvcm1lZCwgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgd2l0aGluIHRoZSBgZnNsLW1jLWJ1c2AgZHJpdmVyLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIHdvcmsgaGFwcGVucy4gRnJvbSB0aGVyZSBJIHdpbGwgaG9wZWZ1bGx5IGJlIGFibGUgdG8gaW50ZXJwcmV0IGFuZCBhc2NlcnRhaW4gdGhlIGZ1bmN0aW9uIGFuZCBmbG93IG9mIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjAwOlx0fTtcbjEyMDE6XHRcbjEyMDI6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBmc2xfbWNfYnVzX21hdGNoX3RhYmxlKTtcbjEyMDM6XHRcbjEyMDQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZVtdID0ge1xuMTIwNTpcdFx0e1wmIzM0O05YUDAwMDhcJiMzNDssIDAgfSxcbjEyMDY6XHRcdHsgfVxuMTIwNzpcdH07XG4xMjA4Olx0TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xuMTIwOTpcdFxuMTIxMDpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZzbF9tY19idXNfZHJpdmVyID0ge1xuMTIxMTpcdFx0LmRyaXZlciA9IHtcbjEyMTI6XHRcdFx0ICAgLm5hbWUgPSBcJiMzNDtmc2xfbWNfYnVzXCYjMzQ7LFxuMTIxMzpcdFx0XHQgICAucG0gPSBOVUxMLFxuMTIxNDpcdFx0XHQgICAub2ZfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLFxuMTIxNTpcdFx0XHQgICAuYWNwaV9tYXRjaF90YWJsZSA9IGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZSxcbjEyMTY6XHRcdFx0ICAgfSxcbjEyMTc6XHRcdC5wcm9iZSA9IGZzbF9tY19idXNfcHJvYmUsXG4xMjE4Olx0XHQucmVtb3ZlID0gZnNsX21jX2J1c19yZW1vdmUsXG4xMjE5Olx0XHQuc2h1dGRvd24gPSBmc2xfbWNfYnVzX3JlbW92ZSxcbjEyMjA6XHR9O1xuMTIyMTpcdFxuMTIyMjpcdHN0YXRpYyBpbnQgZnNsX21jX2J1c19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuMTIyMzpcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0YSlcbjEyMjQ6XHR7XG4xMjI1Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhO1xuMTIyNjpcdFx0c3RydWN0IHJlc291cmNlICpyZXM7XG4xMjI3Olx0XHR2b2lkIF9faW9tZW0gKmZzbF9tY19yZWdzO1xuMTIyODpcdFxuMTIyOTpcdFx0aWYgKGFjdGlvbiAhPSBCVVNfTk9USUZZX0FERF9ERVZJQ0UpXG4xMjMwOlx0XHRcdHJldHVybiAwO1xuMTIzMTpcdFxuMTIzMjpcdFx0aWYgKCFvZl9tYXRjaF9kZXZpY2UoZnNsX21jX2J1c19tYXRjaF90YWJsZSwgZGV2KSBcdTAwMjZcdTAwMjZcbjEyMzM6XHRcdCAgICAhYWNwaV9tYXRjaF9kZXZpY2UoZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlLCBkZXYpKVxuMTIzNDpcdFx0XHRyZXR1cm4gMDtcbjEyMzU6XHRcbjEyMzY6XHRcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZSh0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KSwgSU9SRVNPVVJDRV9NRU0sIDEpO1xuMTIzNzpcdFx0aWYgKCFyZXMpXG4xMjM4Olx0XHRcdHJldHVybiAwO1xuMTIzOTpcdFxuMTI0MDpcdFx0ZnNsX21jX3JlZ3MgPSBpb3JlbWFwKHJlcy1cdTAwM2VzdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpKTtcbjEyNDE6XHRcdGlmICghZnNsX21jX3JlZ3MpXG4xMjQyOlx0XHRcdHJldHVybiAwO1xuMTI0MzpcdFxuMTI0NDpcdFx0LypcbjEyNDU6XHRcdCAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBNQyBmaXJtd2FyZSBpcyBwYXVzZWQgYmVmb3JlIHRoZSBJT01NVSBzZXR1cCBmb3JcbjEyNDY6XHRcdCAqIGl0IGlzIGRvbmUgb3Igb3RoZXJ3aXNlIHRoZSBmaXJtd2FyZSB3aWxsIGNyYXNoIHJpZ2h0IGFmdGVyIHRoZSBTTU1VXG4xMjQ3Olx0XHQgKiBnZXRzIHByb2JlZCBhbmQgZW5hYmxlZC5cbjEyNDg6XHRcdCAqL1xuMTI0OTpcdFx0d3JpdGVsKHJlYWRsKGZzbF9tY19yZWdzICYjNDM7IEZTTF9NQ19HQ1IxKSB8IChHQ1IxX1AxX1NUT1AgfCBHQ1IxX1AyX1NUT1ApLFxuMTI1MDpcdFx0ICAgICAgIGZzbF9tY19yZWdzICYjNDM7IEZTTF9NQ19HQ1IxKTtcbjEyNTE6XHRcdGlvdW5tYXAoZnNsX21jX3JlZ3MpO1xuMTI1MjpcdFxuMTI1MzpcdFx0cmV0dXJuIDA7XG4xMjU0Olx0fVxuMTI1NTpcdFxuMTI1NjpcdHN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgZnNsX21jX25iID0ge1xuMTI1NzpcdFx0Lm5vdGlmaWVyX2NhbGwgPSBmc2xfbWNfYnVzX25vdGlmaWVyLFxuMTI1ODpcdH07XG4xMjU5Olx0XG4xMjYwOlx0c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxuMTI2MTpcdHtcbjEyNjI6XHRcdGludCBlcnJvcjtcbjEyNjM6XHRcbjEyNjQ6XHRcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XG4xMjY1Olx0XHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbjEyNjY6XHRcdFx0cHJfZXJyKFwmIzM0O2J1cyB0eXBlIHJlZ2lzdHJhdGlvbiBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBlcnJvcik7XG4xMjY3Olx0XHRcdGdvdG8gZXJyb3JfY2xlYW51cF9jYWNoZTtcbjEyNjg6XHRcdH1cbjEyNjk6XHRcbjEyNzA6XHRcdGVycm9yID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfZHJpdmVyKTtcbjEyNzE6XHRcdGlmIChlcnJvciBcdTAwM2MgMCkge1xuMTI3MjpcdFx0XHRwcl9lcnIoXCYjMzQ7cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkOiAlZFxcblwmIzM0OywgZXJyb3IpO1xuMTI3MzpcdFx0XHRnb3RvIGVycm9yX2NsZWFudXBfYnVzO1xuMTI3NDpcdFx0fVxuMTI3NTpcdFxuMTI3NjpcdFx0ZXJyb3IgPSBkcHJjX2RyaXZlcl9pbml0KCk7XG4xMjc3Olx0XHRpZiAoZXJyb3IgXHUwMDNjIDApXG4xMjc4Olx0XHRcdGdvdG8gZXJyb3JfY2xlYW51cF9kcml2ZXI7XG4xMjc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzkzCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBGcmVlc2NhbGUgUW9ySVEgRFBBQTIgSGFyZHdhcmUgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBgZnNsX21jX2J1c2AuIFJpZ2h0LCB0aGF0IHJpbmdzIGEgYmVsbC4gSXQmIzM5O3MgZm9yIHRoZSBGcmVlc2NhbGUgUW9ySVEgRFBBQTIsIHNwZWNpZmljYWxseSB0aGUgQVJDSF9MQVlFUlNDQVBFIChvciBOWFAgTGF5ZXJzY2FwZSBTb0MpIGhhcmR3YXJlLiBNYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgYW5kIGhvdyBpdCBpbnRlcmZhY2VzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBgdmZpb19mc2xfbWMuY2AgZmlsZS4gSXQmIzM5O3MgdGltZSB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW1wbGVtZW50ZWQgdGhlcmUgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgd2l0aCBldmVyeXRoaW5nLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhlIHJvbGUgb2YgYHZmaW9fZnNsX21jYCBpcyBpbiB0aGUgZ3JlYXRlciBhcmNoaXRlY3R1cmUsIGFuZCBob3cgaXQmIzM5O3MgcHJvdmlkaW5nIHRoZSBhYnN0cmFjdGlvbiBsYXllci4gSSYjMzk7bSBob3BpbmcgSSBjYW4gZWFzaWx5IGlkZW50aWZ5IHRoZSBrZXkgY29udHJvbCBwb2ludHMsIGRhdGEgc3RydWN0dXJlcywgYW5kIHRoZSBvdmVyYWxsIGRyaXZlciYjMzk7cyBmdW5jdGlvbiB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTEwOlx0XHRzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2ID1cbiA1MTE6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XG4gNTEyOlx0XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiA1MTM6XHRcdGludCByZXQ7XG4gNTE0Olx0XG4gNTE1Olx0XHR2ZGV2LVx1MDAzZW1jX2RldiA9IG1jX2RldjtcbiA1MTY6XHRcdG11dGV4X2luaXQoXHUwMDI2dmRldi1cdTAwM2VpZ2F0ZSk7XG4gNTE3Olx0XG4gNTE4Olx0XHRpZiAoaXNfZnNsX21jX2J1c19kcHJjKG1jX2RldikpXG4gNTE5Olx0XHRcdHJldCA9IHZmaW9fYXNzaWduX2RldmljZV9zZXQoY29yZV92ZGV2LCBcdTAwMjZtY19kZXYtXHUwMDNlZGV2KTtcbiA1MjA6XHRcdGVsc2VcbiA1MjE6XHRcdFx0cmV0ID0gdmZpb19hc3NpZ25fZGV2aWNlX3NldChjb3JlX3ZkZXYsIG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbiA1MjI6XHRcbiA1MjM6XHRcdGlmIChyZXQpXG4gNTI0Olx0XHRcdHJldHVybiByZXQ7XG4gNTI1Olx0XG4gNTI2Olx0XHQvKiBkZXZpY2Vfc2V0IGlzIHJlbGVhc2VkIGJ5IHZmaW8gY29yZSBpZiBAaW5pdCBmYWlscyAqL1xuIDUyNzpcdFx0cmV0dXJuIHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHZkZXYpO1xuIDUyODpcdH1cbiA1Mjk6XHRcbiA1MzA6XHRzdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4gNTMxOlx0e1xuIDUzMjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldjtcbiA1MzM6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1jX2Rldi1cdTAwM2VkZXY7XG4gNTM0Olx0XHRpbnQgcmV0O1xuIDUzNTpcdFxuIDUzNjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fZnNsX21jX2RldmljZSwgdmRldiwgZGV2LFxuIDUzNzpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fZnNsX21jX29wcyk7XG4gNTM4Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDUzOTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiA1NDA6XHRcbiA1NDE6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gNTQyOlx0XHRpZiAocmV0KSB7XG4gNTQzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxuXCYjMzQ7KTtcbiA1NDQ6XHRcdFx0Z290byBvdXRfcHV0X3ZkZXY7XG4gNTQ1Olx0XHR9XG4gNTQ2Olx0XG4gNTQ3Olx0XHRyZXQgPSB2ZmlvX2ZzbF9tY19zY2FuX2NvbnRhaW5lcihtY19kZXYpO1xuIDU0ODpcdFx0aWYgKHJldClcbiA1NDk6XHRcdFx0Z290byBvdXRfZ3JvdXBfZGV2O1xuIDU1MDpcdFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgdmRldik7XG4gNTUxOlx0XHRyZXR1cm4gMDtcbiA1NTI6XHRcbiA1NTM6XHRvdXRfZ3JvdXBfZGV2OlxuIDU1NDpcdFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NTpcdG91dF9wdXRfdmRldjpcbiA1NTY6XHRcdHZmaW9fcHV0X2RldmljZShcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NzpcdFx0cmV0dXJuIHJldDtcbiA1NTg6XHR9XG4gNTU5Olx0XG4gNTYwOlx0c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gNTYxOlx0e1xuIDU2MjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9XG4gNTYzOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYpO1xuIDU2NDpcdFxuIDU2NTpcdFx0dmZpb19mc2xfdW5pbml0X2RldmljZSh2ZGV2KTtcbiA1NjY6XHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2dmRldi1cdTAwM2VpZ2F0ZSk7XG4gNTY3Olx0fVxuIDU2ODpcdFxuIDU2OTpcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDcwMwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDcyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IGZzbF9tY19idXMgb24gYW1kNjQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYGZzbF9tY19idXNgLCB3aGljaCBpcyBhIGhhcmR3YXJlIGJ1cyBzcGVjaWZpYyB0byBOWFAvRnJlZXNjYWxlIExheWVyc2NhcGUgU29Dcywgc3BlY2lmaWNhbGx5IHRoZSBRb3JJUSBEUEFBMi4gVGhlIHF1ZXN0aW9uIGlzLCBzaG91bGQgd2UgYm90aGVyIGZ1enppbmcgY29kZSByZWxhdGVkIHRvIHRoaXMgb24gYW1kNjQsIGNvbnNpZGVyaW5nIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZCBpbiB0aGUgcHJvbXB0PwoKVGhlIHByb21wdCBzYXlzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgaW50byBjYXRlZ29yaWVzIGxpa2Ugc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzICpwcmVjaXNlbHkqIHRoZSBjYXNlIGhlcmUuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IFFvcklRIERQQUEyIGlzIEFSTTY0IG9yIFBvd2VyUEMgYmFzZWQuIFdlJiMzOTtyZSBvbiBhbWQ2NC4gQ2FuIGBDT05GSUdfRlNMX01DX0JVU2Agb3IgZXZlbiBgQ09ORklHX1ZGSU9fRlNMX01DYCAqcG9zc2libHkqIGJlIHJlbGV2YW50IG9uIGFtZDY0LCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZXJlJiMzOTtzIGxpa2VseSBubyBEUEFBMiBoYXJkd2FyZSBwcmVzZW50PwoKTGV0JiMzOTtzIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBgZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdgLiBBaGEhIEl0IGNvbmZpcm1zIG15IHN1c3BpY2lvbnM6IHRoZSBgRlNMX01DX0JVU2AgZHJpdmVyIHJlcXVpcmVzIGBPRmAgKERldmljZSBUcmVlKSwgd2hpY2ggaXMgdHlwaWNhbCBmb3IgZW1iZWRkZWQgc3lzdGVtcywgKmFuZCogZWl0aGVyIGBBUkNIX0xBWUVSU0NBUEVgIChhIExheWVyc2NhcGUtc3BlY2lmaWMgcGxhdGZvcm0pIG9yLCB2aWEgYENPTVBJTEVfVEVTVGAsIHBvdGVudGlhbGx5IG90aGVyIGFyY2hpdGVjdHVyZXMgbGlrZSBBUk0sIEFSTTY0LCBYODZfTE9DQUxfQVBJQywgb3IgUFBDLiBIb3dldmVyLCB0aGUgY3JpdGljYWwgcG9pbnQgaXMgdGhpczogZXZlbiBpZiB3ZSBzb21laG93IGhhdmUgYENPTVBJTEVfVEVTVGAgZW5hYmxlZCwgaXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IFFFTVUsIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdlJiMzOTtyZSBsaWtlbHkgdXNpbmcsIGlzIGVtdWxhdGluZyBhbiBmc2wtbWMgZGV2aWNlPyBBYnNvbHV0ZWx5IG5vdC4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgdGhlIFFvcklRIERQQUEyIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgb3IgdGhlIHZhcmlvdXMgZGV2aWNlcyB0aGF0IHdvdWxkIGxpdmUgb24gaXQgKERQUkMsIERQTUNQLCBldGMuKS4KCkZ1cnRoZXJtb3JlLCBRb3JJUSBEUEFBMiBpcyBleHBsaWNpdGx5IGFuIE5YUCBMYXllcnNjYXBlIEFSTTY0IC8gUG93ZXJQQyBTb0Mtc3BlY2lmaWMgYnVzIGhhcmR3YXJlLiBUaGUgcGF0aCB0byBgdmZpb19mc2xfbWNfbW1hcGAgcmVxdWlyZXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gYSBgL2Rldi92ZmlvLypgIGRldmljZSBub2RlLiBUaGF0IG5vZGUgbXVzdCByZXByZXNlbnQgYW4gYGZzbF9tY19kZXZpY2VgIGJvdW5kIHRvIGB2ZmlvLWZzbC1tY2AuIEluIHR1cm4sIGZvciBgdmZpby1mc2wtbWNgIHRvIHByb2JlIGFuZCByZWdpc3RlciBhIHZmaW8gZGV2aWNlLCBhbiBgZnNsX21jX2RldmljZWAgKm11c3QqIGV4aXN0IG9uIHRoZSBgZnNsX21jX2J1c2AuIEFuZCBmb3IgdGhlIGBmc2xfbWNfYnVzYCB0byBjcmVhdGUgYW55IGRldmljZXMsIGl0IG5lZWRzIHRvIHByb2JlIHRoZSBgZnNsX21jX2J1c19kcml2ZXJgIHBsYXRmb3JtIGRldmljZSB2aWEgYW4gT0YvQUNQSSBub2RlIChsaWtlIHRoZSBOWFAwMDA4IG5vZGUpLCBhbmQgdWx0aW1hdGVseSBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwaHlzaWNhbCBNQyAoTWFuYWdlbWVudCBDb21wbGV4KSBmaXJtd2FyZS4gVGhpcyBjb21tdW5pY2F0aW9uIGhhcHBlbnMgdmlhIE1NSU8gcmVnaXN0ZXJzLCB3aGVyZSBpdCBzZW5kcyBNQyBjb21tYW5kcyAodmlhIGBtY19zZW5kX2NvbW1hbmRgKSB0byBkaXNjb3ZlciBEUFJDIGNvbnRhaW5lcnMuIEluIGEgbnV0c2hlbGwsIHdpdGhvdXQgdGhlICpwaHlzaWNhbCogTUMgZmlybXdhcmUsIGhhcmR3YXJlIEFTSUMsICpvciogYSBRRU1VIGVtdWxhdGlvbiBvZiBEUEFBMiBNQywgbm8gZGV2aWNlcyBjYW4gZXZlciBiZSBlbnVtZXJhdGVkIG9yIGFkZGVkIHRvIHRoZSBmc2wtbWMgYnVzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyBxdWlja2x5IGdyZXAgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIHNvbWV0aGluZyBsaWtlIGBmc2xfbWNfZGV2aWNlX2FkZGAgdG8gbWFrZSBkb3VibHkgY2VydGFpbiB0aGVyZSYjMzk7cyBub3RoaW5nIHNuZWFreSBnb2luZyBvbi4KCioqQ29uY2x1c2lvbjoqKiBJdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgb24gYW1kNjQuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMjUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTIwPXN0cnVjdCBmc2xfbWNfY2hpbGRfb2JqcyB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjQtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyNTpzdGF0aWMgYm9vbCBmc2xfbWNfZGV2aWNlX21hdGNoKGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNi1cdFx0XHRcdGNvbnN0IHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTMyPXN0YXRpYyBib29sIGZzbF9tY19vYmpfZGVzY19pc19hbGxvY2F0YWJsZShzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmopXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNDEtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo0MjpzdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9yZW1vdmVfaWZfbm90X2luX21jKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQzLXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy00NS1cdHN0cnVjdCBmc2xfbWNfY2hpbGRfb2JqcyAqb2JqcztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjQ2Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ3LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTE6XHRtY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01Mi1cdG9ianMgPSBkYXRhO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU3LVx0XHRpZiAoc3RybGVuKG9ial9kZXNjLVx1MDAzZXR5cGUpICE9IDAgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1ODpcdFx0ICAgIGZzbF9tY19kZXZpY2VfbWF0Y2gobWNfZGV2LCBvYmpfZGVzYykpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01OS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02Mi1cdGlmIChpID09IG9ianMtXHUwMDNlY2hpbGRfY291bnQpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo2MzpcdFx0ZnNsX21jX2RldmljZV9yZW1vdmUobWNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY0LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY3LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6Njg6c3RhdGljIGludCBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY5LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03Mi1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjczOlx0ZnNsX21jX2RldmljZV9yZW1vdmUodG9fZnNsX21jX2RldmljZShkZXYpKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc0LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODgtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4OTp2b2lkIGRwcmNfcmVtb3ZlX2RldmljZXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy05MC1cdFx0XHQgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2NfYXJyYXksXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTAyLVx0XHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoXHUwMDI2bWNfYnVzX2Rldi1cdTAwM2VkZXYsIFx1MDAyNm9ianMsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMDM6XHRcdFx0XHQgICAgICBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlX2lmX25vdF9pbl9tYyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMDQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEwOS1cdFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2LCBOVUxMLFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTEwOlx0XHRcdFx0ICAgICAgX19mc2xfbWNfZGV2aWNlX3JlbW92ZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMTEtXHR9XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTEzPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfcmVtb3ZlX2RldmljZXMpO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTE1OnN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTExNi17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMTctXHRjb25zdCBzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyA9IGRhdGE7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMTg6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE5LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTIwOlx0cmV0dXJuIGZzbF9tY19kZXZpY2VfbWF0Y2gobWNfZGV2LCBvYmpfZGVzYyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMjEtfVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTIyLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTIzOnN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEyNDpcdFx0XHRcdFx0ICAgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMjUte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEyOC1cdGRldiA9IGRldmljZV9maW5kX2NoaWxkKFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2LCBvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEyOTpcdFx0XHRcdF9fZnNsX21jX2RldmljZV9tYXRjaCk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzAtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMzE6XHRyZXR1cm4gZGV2ID8gdG9fZnNsX21jX2RldmljZShkZXYpIDogTlVMTDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzMi19XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTQ0LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQ1OnN0YXRpYyB2b2lkIGNoZWNrX3BsdWdnZWRfc3RhdGVfY2hhbmdlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDYtXHRcdFx0XHQgICAgICAgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTY4LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTY5OnN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3MC1cdFx0XHRcdCAgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTcyLVx0aW50IGVycm9yO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTczOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKmNoaWxkX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3NC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzctXHQgKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE3ODpcdGNoaWxkX2RldiA9IGZzbF9tY19kZXZpY2VfbG9va3VwKG9ial9kZXNjLCBtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3OS1cdGlmIChjaGlsZF9kZXYpIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xODItXHR9IGVsc2Uge1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlx0XHRlcnJvciA9IGZzbF9tY19kZXZpY2VfYWRkKG9ial9kZXNjLCBOVUxMLCBcdTAwMjZtY19idXNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4NC1cdFx0XHRcdFx0ICBcdTAwMjZjaGlsZF9kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIwMS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjIwMjpzdGF0aWMgdm9pZCBkcHJjX2FkZF9uZXdfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIwMy1cdFx0XHRcdCBzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzY19hcnJheSxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNDQtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyNDU6aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjQ2LVx0XHQgICAgICBib29sIGFsbG9jX2ludGVycnVwdHMpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzYzLSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MzY0OmludCBkcHJjX3NjYW5fY29udGFpbmVyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzY1LVx0XHRcdGJvb2wgYWxsb2NfaW50ZXJydXB0cylcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0zODk9c3RhdGljIGlycXJldHVybl90IGRwcmNfaXJxMF9oYW5kbGVyX3RocmVhZChpbnQgaXJxX251bSwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM5My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGFyZztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjM5NDpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zOTUtXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzID0gdG9fZnNsX21jX2J1cyhtY19kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ1Ni0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjQ1NzppbnQgZGlzYWJsZV9kcHJjX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNDU4LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDAtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MDE6aW50IGdldF9kcHJjX2lycV9zdGF0ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTAyLXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MDg6c3RhdGljIGludCByZWdpc3Rlcl9kcHJjX2lycV9oYW5kbGVyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDkte1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTEwLVx0aW50IGVycm9yO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTExOlx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXHUwMDNlaXJxc1swXTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUxMi1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MzMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MzQ6aW50IGVuYWJsZV9kcHJjX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTM1LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01NzEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1NzI6c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTczLXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo2MDg6aW50IGRwcmNfc2V0dXAoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTYwOS17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NzExPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfc2V0dXApO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcyMi0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjcyMzpzdGF0aWMgaW50IGRwcmNfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcyNC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzQ4LXNjYW5fY2xlYW51cDpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc0OTpcdGRldmljZV9mb3JfZWFjaF9jaGlsZChcdTAwMjZtY19kZXYtXHUwMDNlZGV2LCBOVUxMLCBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc1MC1kcHJjX2NsZWFudXA6XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzU3LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzU4OnN0YXRpYyB2b2lkIGRwcmNfdGVhcmRvd25faXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NTkte1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzYwOlx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXHUwMDNlaXJxc1swXTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc2MS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3Nzg6aW50IGRwcmNfY2xlYW51cChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzc5LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz04MTU9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19jbGVhbnVwKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjYtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4Mjc6c3RhdGljIHZvaWQgZHByY19yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgyOC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODM4LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODM5Olx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFx1MDAyNm1jX2Rldi1cdTAwM2VkZXYsIE5VTEwsIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODQwLVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0NS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjg0NjpzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2VfaWQgbWF0Y2hfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0Ny1cdHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxNTpzdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE2LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX2FkZF9kZXZpY2Uoc3RydWN0IGZzbF9tY19idXNcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMzLVx0XHRcdFx0XHRcdFx0XHRwb29sX3R5cGUsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM0Olx0XHRcdFx0XHRcdFx0c3RydWN0IGZzbF9tY19kZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzUtXHRcdFx0XHRcdFx0XHRcdCptY19kZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zOC1cdHN0cnVjdCBmc2xfbWNfcmVzb3VyY2UgKnJlc291cmNlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozOTpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2ID0gXHUwMDI2bWNfYnVzLVx1MDAzZW1jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDAtXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTYtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk3OnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGZzbF9tY19kZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTgtXHRcdFx0XHRcdFx0XHRcdCAgICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk5LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTAwOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEwMS1cdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXM7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xMDUtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjEwNjpcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTA3LVx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyhtY19idXNfZGV2KTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTE4MT1pbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9hbGxvY2F0ZShzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTg2LVx0c3RydWN0IGZzbF9tY19yZXNvdXJjZSAqcmVzb3VyY2U7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjE4NzpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2ID0gXHUwMDI2bWNfYnVzLVx1MDAzZW1jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTg4LVx0aW50IGVycm9yID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzMtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3NDppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19vYmplY3RfYWxsb2NhdGUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjc1LVx0XHRcdFx0XHRlbnVtIGZzbF9tY19wb29sX3R5cGUgcG9vbF90eXBlLFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNzY6XHRcdFx0XHRcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICoqbmV3X21jX2FkZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI3Ny17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3ODpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzktXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyODA6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYWRldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjgxLVx0aW50IGVycm9yID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI5My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6Mjk0Olx0bWNfYnVzX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yOTUtXHRtY19idXMgPSB0b19mc2xfbWNfYnVzKG1jX2J1c19kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzIyPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfYWxsb2NhdGUpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozMjk6dm9pZCBmc2xfbWNfb2JqZWN0X2ZyZWUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2FkZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMzMC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zNDM9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX29iamVjdF9mcmVlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1NC0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzU1OmludCBmc2xfbWNfcG9wdWxhdGVfaXJxX3Bvb2woc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1Ni1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBpcnFfY291bnQpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTgtXHR1bnNpZ25lZCBpbnQgaTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzU5Olx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnFfcmVzb3VyY2VzO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozNjA6XHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKm1jX2Rldl9pcnE7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM2MS1cdGludCBlcnJvcjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQxMT1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcG9wdWxhdGVfaXJxX3Bvb2wpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE2LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0MTc6dm9pZCBmc2xfbWNfY2xlYW51cF9pcnFfcG9vbChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE4LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfY2xlYW51cF9pcnFfcG9vbCk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NDItICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ0MzppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19hbGxvY2F0ZV9pcnFzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0NC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NDgtXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0NDk6XHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKippcnFzID0gTlVMTDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDUwLVx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ2Mi1cdGVsc2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDYzOlx0XHRtY19idXMgPSB0b19mc2xfbWNfYnVzKHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVx1MDAzZWRldi5wYXJlbnQpKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDY0LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTA2PUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19hbGxvY2F0ZV9pcnFzKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTExOnZvaWQgZnNsX21jX2ZyZWVfaXJxcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MTIte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTE1LVx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTE2Olx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICoqaXJxcyA9IG1jX2Rldi1cdTAwM2VpcnFzO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MTctXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MjUtXHRlbHNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjUyNjpcdFx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyh0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUyNy1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfZnJlZV9pcnFzKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTM5LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NDA6dm9pZCBmc2xfbWNfaW5pdF9hbGxfcmVzb3VyY2VfcG9vbHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU0MS17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjU2MjpzdGF0aWMgaW50IGZzbF9tY19hbGxvY2F0b3JfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTYzLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTY0LVx0ZW51bSBmc2xfbWNfcG9vbF90eXBlIHBvb2xfdHlwZTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTY1Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU2Ni1cdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXM7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NzEtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjU3MjpcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTczLVx0aWYgKCFkZXZfaXNfZnNsX21jKFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2KSlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU5My0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTk0OnN0YXRpYyB2b2lkIGZzbF9tY19hbGxvY2F0b3JfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU5NS17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy02MDctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwODpzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2VfaWQgbWF0Y2hfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNjA5LVx0e1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NDI9c3RydWN0IGZzbF9tYyB7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQzOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfYnVzX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNDQtXHR1OCBudW1fdHJhbnNsYXRpb25fcmFuZ2VzO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9OTA9c3RhdGljIGludCBmc2xfbWNfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTEte1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MjpcdGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lkICppZDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTM6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05NC1cdGNvbnN0IHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcnYgPSB0b19mc2xfbWNfZHJpdmVyKGRydik7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3VldmVudChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQwLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQxOlx0Y29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQyLVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTUxPXN0YXRpYyBpbnQgZnNsX21jX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE1My1cdHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcnYgPSB0b19mc2xfbWNfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxNTQ6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNTUtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xNjI9c3RhdGljIHZvaWQgZnNsX21jX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNjQtXHRzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJ2ID0gdG9fZnNsX21jX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTY1Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTY2LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTcxPXN0YXRpYyB2b2lkIGZzbF9tY19zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNzMtXHRzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJ2ID0gdG9fZnNsX21jX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTc0Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTc1LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTgwPXN0YXRpYyBpbnQgZnNsX21jX2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTgzLVx0c3RydWN0IGRldmljZSAqZG1hX2RldiA9IGRldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTg0Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTg1LVx0dTMyIGlucHV0X2lkID0gbWNfZGV2LVx1MDAzZWljaWQ7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE2LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjE3Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE4LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MjMxPXN0YXRpYyBpbnQgc2Nhbl9mc2xfbWNfYnVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjMyLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjMzOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMzQtXHRzdHJ1Y3QgZnNsX21jX2J1cyAqcm9vdF9tY19idXM7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMzgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjIzOTpcdHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNDAtXHRyb290X21jX2J1cyA9IHRvX2ZzbF9tY19idXMocm9vdF9tY19kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MjY0PXN0YXRpYyBpbnQgZnNsX21jX2J1c19zZXRfYXV0b3Jlc2NhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI2NS17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI2NjpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICpyb290X21jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjY3LVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNzItXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI3MzpcdHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNzQtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yODc9c3RhdGljIGludCBmc2xfbWNfYnVzX2dldF9hdXRvcmVzY2FuKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjg4LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjg5Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yOTAtXHRjaGFyICpidWYgPSBkYXRhO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjk0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTU6XHRyb290X21jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjk2LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NTg0PXN0YXRpYyBpbnQgZ2V0X2RwcmNfaWNpZChzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTU5Ni1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NTk3OnN0YXRpYyBpbnQgdHJhbnNsYXRlX21jX2FkZHIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTk4LVx0XHRcdCAgICAgZW51bSBkcHJjX3JlZ2lvbl90eXBlIG1jX3JlZ2lvbl90eXBlLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNjMxLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo2MzI6c3RhdGljIGludCBmc2xfbWNfZGV2aWNlX2dldF9tbWlvX3JlZ2lvbnMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NjMzOlx0XHRcdFx0XHQgIHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy02MzQte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzI3PWJvb2wgZnNsX21jX2lzX3Jvb3RfZHByYyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MzYtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjczNzpzdGF0aWMgdm9pZCBmc2xfbWNfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03Mzgte1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3Mzk6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDAtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1MjppbnQgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1My1cdFx0ICAgICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1NC1cdFx0ICAgICAgc3RydWN0IGRldmljZSAqcGFyZW50X2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzU1Olx0XHQgICAgICBzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1Ni17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1Ny1cdGludCBlcnJvcjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzU4Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IE5VTEw7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1OS1cdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXMgPSBOVUxMO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3NjA6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqcGFyZW50X21jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzYxLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NjItXHRpZiAoZGV2X2lzX2ZzbF9tYyhwYXJlbnRfZGV2KSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzYzOlx0XHRwYXJlbnRfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShwYXJlbnRfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzY0LVx0ZWxzZVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzc4LVx0XHQvKlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3Nzk6XHRcdCAqIEFsbG9jYXRlIGEgcmVndWxhciBmc2xfbWNfZGV2aWNlIG9iamVjdDpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzgwLVx0XHQgKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5MC1cdG1jX2Rldi1cdTAwM2VkZXYuYnVzID0gXHUwMDI2ZnNsX21jX2J1c190eXBlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTE6XHRtY19kZXYtXHUwMDNlZGV2LnJlbGVhc2UgPSBmc2xfbWNfZGV2aWNlX3JlbGVhc2U7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5Mi1cdG1jX2Rldi1cdTAwM2VkZXYudHlwZSA9IGZzbF9tY19nZXRfZGV2aWNlX3R5cGUob2JqX2Rlc2MtXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NTItXHRpZiAocGFyZW50X21jX2RldiBcdTAwMjZcdTAwMjYgb2JqX2Rlc2MtXHUwMDNlcmVnaW9uX2NvdW50ICE9IDApIHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODUzOlx0XHRlcnJvciA9IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhtY19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg1NC1cdFx0XHRcdFx0XHQgICAgICAgcGFyZW50X21jX2Rldik7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4ODA6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2RldmljZV9hZGQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODEtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4NC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ni0gKiBMaW51eFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4OTA6dm9pZCBmc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04OTEte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODk3LX1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODk4OkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODk5LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MDA6c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTAxLVx0XHRcdFx0XHQgIHUxNiBpZl9pZClcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTAyLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTAzOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsICplbmRwb2ludDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTA0LVx0c3RydWN0IGZzbF9tY19vYmpfZGVzYyBlbmRwb2ludF9kZXNjID0ge3sgMCB9fTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkwOS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTEwOlx0bWNfYnVzX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MTEtXHRzdHJjcHkoZW5kcG9pbnQxLnR5cGUsIG1jX2Rldi1cdTAwM2VvYmpfZGVzYy50eXBlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkyOS1cdGVuZHBvaW50X2Rlc2MuaWQgPSBlbmRwb2ludDIuaWQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzMDpcdGVuZHBvaW50ID0gZnNsX21jX2RldmljZV9sb29rdXAoXHUwMDI2ZW5kcG9pbnRfZGVzYywgbWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzMS1cdGlmIChlbmRwb2ludClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTk0Ny1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTQ4Olx0ZW5kcG9pbnQgPSBmc2xfbWNfZGV2aWNlX2xvb2t1cChcdTAwMjZlbmRwb2ludF9kZXNjLCBtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTQ5LVx0Lypcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEwMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDQzLVx0c3RydWN0IGZzbF9tYyAqbWM7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwNDQ6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IE5VTEw7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwNDUtXHRzdHJ1Y3QgZnNsX21jX2lvICptY19pbyA9IE5VTEw7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU3LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTU4Olx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcdTAwMjZvYmpfZGVzYywgbWNfaW8sIFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcdTAwMjZtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1OS1cdGlmIChlcnJvciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTExNzU9c3RhdGljIHZvaWQgZnNsX21jX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODAtXHRtY19pbyA9IG1jLVx1MDAzZXJvb3RfbWNfYnVzX2Rldi1cdTAwM2VtY19pbztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4MTpcdGZzbF9tY19kZXZpY2VfcmVtb3ZlKG1jLVx1MDAzZXJvb3RfbWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODItXHRmc2xfZGVzdHJveV9tY19pbyhtY19pbyk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYz0xOD1zdGF0aWMgdm9pZCBmc2xfbWNfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xOS17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjIwOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1zaV9kZXNjLVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTIxLVx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cyA9IHRvX2ZzbF9tY19idXMobWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjIyOlx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICptY19kZXZfaXJxID0gXHUwMDI2bWNfYnVzLVx1MDAzZWlycV9yZXNvdXJjZXNbbXNpX2Rlc2MtXHUwMDNlbXNpX2luZGV4XTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MjM6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqb3duZXJfbWNfZGV2ID0gbWNfZGV2X2lycS1cdTAwM2VtY19kZXY7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTI0LVx0c3RydWN0IGRwcmNfaXJxX2NmZyBpcnFfY2ZnO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM9NzY9c3RydWN0IGlycV9kb21haW4gKmZzbF9tY19nZXRfbXNpX3BhcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTc3LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6Nzg6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy03OS1cdHN0cnVjdCBkZXZpY2UgKnJvb3RfZHByY19kZXY7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYz0xMDc9dTMyIGZzbF9tY19nZXRfbXNpX2lkKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTA4LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MTA5Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTEwLVx0c3RydWN0IGRldmljZSAqcm9vdF9kcHJjX2Rldjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MDE9c3RydWN0IGZzbF9tY19idXMge1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjAyOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgbWNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjAzLVx0c3RydWN0IGZzbF9tY19yZXNvdXJjZV9wb29sIHJlc291cmNlX3Bvb2xzW0ZTTF9NQ19OVU1fUE9PTF9UWVBFU107XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MDQ6XHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKmlycV9yZXNvdXJjZXM7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MDUtXHRzdHJ1Y3QgbXV0ZXggc2Nhbl9tdXRleDsgICAgLyogc2VyaWFsaXplcyBidXMgc2Nhbm5pbmcgKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNS1cdFx0XHRcdCAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjE2LVx0XHRcdFx0ICAgc3RydWN0IGRldmljZSAqcGFyZW50X2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNzpcdFx0XHRcdCAgIHN0cnVjdCBmc2xfbWNfZGV2aWNlICoqbmV3X21jX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTk6dm9pZCBmc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MjM9dm9pZCBkcHJjX2RyaXZlcl9leGl0KHZvaWQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjI0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjI1OmludCBkcHJjX3NjYW5fb2JqZWN0cyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyNi1cdFx0ICAgICAgYm9vbCBhbGxvY19pbnRlcnJ1cHRzKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02Mjg9aW50IF9faW5pdCBmc2xfbWNfYWxsb2NhdG9yX2RyaXZlcl9pbml0KHZvaWQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjI5LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjMwOnZvaWQgZnNsX21jX2luaXRfYWxsX3Jlc291cmNlX3Bvb2xzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYzMS1cbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3MDkKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogNjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IHZmaW9fZnNsX21jIGlzIFVuZnV6emFibGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYGZzbC1tY2AgZHJpdmVycywgc3BlY2lmaWNhbGx5IGB2ZmlvX2ZzbF9tYy5jYC4gVGhpcyBjb2RlIGlzIGludGltYXRlbHkgdGllZCB0byBOWFAgTGF5ZXJzY2FwZSBTb0NzIGxpa2UgdGhlIExTMTA4OEEsIExTMjA4MEEsIGFuZCBzaW1pbGFyLCBkZWFsaW5nIHdpdGggdGhlaXIgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4LiBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBBbHJlYWR5LCBJJiMzOTttIHNlZWluZyBhIHByb2JsZW0uIFRoZXNlIGRldmljZXMsIHRoZSBmc2wtbWMgaGFyZHdhcmUgYW5kIHRoZSBEUEFBMiwgYXJlICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gQW5kIHdlIGhhdmUgYSBndWlkZWxpbmUgdGhhdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IGNvZGUgcmVsaWFudCBvbiBoYXJkd2FyZSB1bmF2YWlsYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwLCBpcyBub3Qgc29tZXRoaW5nIHRvIGJlIGZ1enplZC4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcuCgpUaGUgZ3VpZGVsaW5lcyBhcmUgcHJldHR5IGNsZWFyOiAmIzM0O1JlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlJiMzNDsuIElmIGl0IGNhbiYjMzk7dCBydW4sIGl0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLiBBbHNvLCB3ZSBoYXZlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDssIHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBzcGVjaWFsaXplZCBkcml2ZXJzLiBUaG9zZSBraW5kcyBvZiB0aGluZ3MgYXJlbiYjMzk7dCBzb21ldGhpbmcgd2UgY2FuIHJlbGlhYmx5IHRlc3Qgb3IgY292ZXIgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGlzIGZhbGxzIHJpZ2h0IGludG8gdGhhdCBjYXRlZ29yeS4KClNvLCBgdmZpb19mc2xfbWMuY2AgaXMgb2ZmIHRoZSB0YWJsZS4gVGhlIGRyaXZlciwgYHZmaW9fZnNsX21jX2RyaXZlcmAsIHJlZ2lzdGVycyBpdHNlbGYgb24gdGhlIGBmc2xfbWNfYnVzX3R5cGVgLiAgVGhhdCBidXMgaXMgb25seSBwb3B1bGF0ZWQgdGhyb3VnaCBBQ1BJIGFuZCBkZXZpY2Ugbm9kZXMgdGFsa2luZyB0byBNQyBmaXJtd2FyZSByZWdpc3RlcnMsIHNwZWNpZmljYWxseSBgTlhQMDAwOGAgQUNQSSBvciBgZnNsLHFvcmlxLW1jYCBPRiBkZXZpY2Ugbm9kZXMuIFRoZXJlJiMzOTtzIG5vIHZpcnR1YWwgb3Igc29mdHdhcmUtZW11bGF0ZWQgZXF1aXZhbGVudC4gSXQmIzM5O3MgYWxsIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBUaGVyZWZvcmUsIGl0JiMzOTtzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9mIGFtZDY0LiBJdCBzaW1wbHkgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwcm9iZWQgb3IgZXhlcmNpc2VkIGluIGEgc3RhbmRhcmQgUUVNVSBWTS4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgaXQmIzM5O3MgdW5mZWFzaWJsZSB0byBmdXp6IHRoaXMgY29kZS4gV2UmIzM5O3JlIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCwgYEZvY3VzU3ltYm9sc2AgdG8gYW4gZW1wdHkgbGlzdCwgYW5kIGBFbmFibGVDb25maWdzYCB0byBhbiBlbXB0eSBsaXN0LCBhbmQgcHJvdmlkaW5nIHRoZSByYXRpb25hbGUgYXMgZGVzY3JpYmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYywgd2hpY2ggcHJvdmlkZXMgVkZJTyBwYXNzdGhyb3VnaCBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIGZzbC1tYyAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzIG9uIExheWVyc2NhcGUgU29Dcy4gVGhpcyBkcml2ZXIgcmVsaWVzIG9uIHBoeXNpY2FsIFNvQyBoYXJkd2FyZSBhbmQgZmlybXdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSBhbWQ2NCB0YXJnZXQgYXJjaGl0ZWN0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDkuMTg4MzIwMjE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3ODExNDgzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMsIHdoaWNoIHByb3ZpZGVzIFZGSU8gcGFzc3Rocm91Z2ggc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBmc2wtbWMgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcyBvbiBMYXllcnNjYXBlIFNvQ3MuIFRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGZpcm13YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgYW1kNjQgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjA5LjE4ODMyNTMwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5ODUyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWMwMjJmY2M4OTQyMzg3N2IwNmQxOWVkOWMyN2E4ODAzNDQ3M2IyY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE0OjA0OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuQEAgLTQwNyw2ICs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xcbiBcXG4gXFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDkuNjU4OTI1ODM3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo5OTMxMDUzMDIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVjMDIyZmNjODk0MjM4NzdiMDZkMTllZDljMjdhODgwMzQ0NzNiMmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE0OjA0OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiArNDA3LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuK1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbitcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4rXG4gXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xuIFxuIFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDkuNjU4OTI3NTU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU3Mjk4MzIzNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGl0J3Mgd29ydGggb3VyIHRpbWUgdG8gZnV6ei4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHdoaWNoIGlzIGdvb2Q7IGl0J3MgYSBjb21tb24gYW5kIHdlbGwtc3VwcG9ydGVkIHBsYXRmb3JtIGZvciBvdXIgcHVycG9zZXMuXG5cblRoZSBkaWZmIGlzIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBUaGlzIGlzIGEgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBWRklPIGZyYW1ld29yaywgZGVhbGluZyB3aXRoIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRldmljZXMuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBkZXZpY2UgZHJpdmVycyBhcmUgb2Z0ZW4gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBwb3RlbnRpYWxseSB1bnRydXN0ZWQgaGFyZHdhcmUgb3IgZW11bGF0ZWQgaGFyZHdhcmUuXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIEl0J3MgYWRkaW5nIGEgY2hlY2sgd2l0aGluIHRoZSBgdmZpb19mc2xfbWNfbW1hcGAgZnVuY3Rpb24uIEl0IGFwcGVhcnMgdG8gYmUgZ3VhcmRpbmcgYWdhaW5zdCBtcHJvdGVjdCgpIHNoZW5hbmlnYW5zLCBlbnN1cmluZyB0aGF0IHJlYWQtb25seSByZWdpb25zIG1hcHBlZCB2aWEgVkZJTyBjYW4ndCBiZSBzdWJzZXF1ZW50bHkgbWFkZSB3cml0ZWFibGUgdGhyb3VnaCBhIGNhbGwgdG8gbXByb3RlY3QuIFRoaXMgaXMgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBJdCdzIGNsZWFybHkgaW50ZW5kZWQgdG8gKnByZXZlbnQqIGEgdnVsbmVyYWJpbGl0eSwgYnV0IHBhdGNoZXMgdGhhdCBhdHRlbXB0IHRvIGZpeCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgY2FuIHRoZW1zZWx2ZXMgaW50cm9kdWNlIHN1YnRsZSBuZXcgb25lcy4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIGEgZGVjZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuVG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gSSdsbCB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgcmVsZXZhbnQgYGRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ2AgaW5mb3JtYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIHRlbGwgbWUgdGhlIGJ1aWxkIGNvbmRpdGlvbnMgdGhhdCBhcHBseSB0byB0aGlzIGNvZGUsIHdoaWNoIHdpbGwgaW5mbHVlbmNlIGhvdyBJIHNldCB1cCBhbnkgZnV6emluZyBydW5zLiBLbm93aW5nIHdoZXJlIHRoaXMgZHJpdmVyIHNpdHMgaW4gdGhlIGJyb2FkZXIgVkZJTyBlY29zeXN0ZW0gaXMgY3J1Y2lhbCBmb3IgY29uc3RydWN0aW5nIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6NTUuMzg4NzYxNzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMzc4MjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWRklPX0ZTTF9NQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICs9IG1kZXYvXFxuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgKz0gZnNsLW1jL1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICs9IGNkeC9cXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZz0xPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTMtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZT0zPXZmaW8tZnNsLW1jLXkgOj0gdmZpb19mc2xfbWMubyB2ZmlvX2ZzbF9tY19pbnRyLm9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1ZGSU9fRlNMX01DKSArPSB2ZmlvLWZzbC1tYy5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9OTc9c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTExMi1cXHRcXHRkZXZfd2FybihcXHUwMDI2bWNfY29udC1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoxMTM6XFx0XFx0XFx0IFxcXCJWRklPX0ZTTF9NQzogcmVzZXQgZGV2aWNlIGhhcyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTE0LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTEyMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2lvY3RsX2dldF9yZWdpb25faW5mbyhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMzEtXFx0LyogbWFwIG9mZnNldCB0byB0aGUgcGh5c2ljYWwgYWRkcmVzcyAgKi9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MTMyOlxcdGluZm8tXFx1MDAzZW9mZnNldCA9IFZGSU9fRlNMX01DX0lOREVYX1RPX09GRlNFVChpbmZvLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMy1cXHRpbmZvLVxcdTAwM2VzaXplID0gdmRldi1cXHUwMDNlcmVnaW9uc1tpbmZvLVxcdTAwM2VpbmRleF0uc2l6ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0yMzQ9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfcmVhZChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMzgtXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIzOTpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoyNDA6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTI0MS1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTMxMj1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY193cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zMTctXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjMxODpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTk6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMyMC1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTM1Mz1zdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19mc2xfbWNfcmVnaW9uIHJlZ2lvbixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjAtXFx0cGdvZmYgPSB2bWEtXFx1MDAzZXZtX3Bnb2ZmIFxcdTAwMjZcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MzYxOlxcdFxcdCgoMVUgXFx1MDAzY1xcdTAwM2MgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjItXFx0YmFzZSA9IHBnb2ZmIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Mzc4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODUtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM4NjpcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMxLVxcdFxcdGlmIChkZXZpY2Vfc2V0X2RyaXZlcl9vdmVycmlkZShkZXYsIHZmaW9fZnNsX21jX29wcy5uYW1lKSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDMyOlxcdFxcdFxcdGRldl93YXJuKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXMgZmFpbGVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00MzMtXFx0XFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZtY19jb250LVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM0LVxcdFxcdGVsc2VcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDM1OlxcdFxcdFxcdGRldl9pbmZvKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXNcXFxcblxcXCIsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzNi1cXHRcXHRcXHRcXHQgZGV2X25hbWUoXFx1MDAyNm1jX2NvbnQtXFx1MDAzZWRldikpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MS1cXHRcXHRpZiAobWNfZHJ2IFxcdTAwMjZcXHUwMDI2IG1jX2RydiAhPSBcXHUwMDI2dmZpb19mc2xfbWNfZHJpdmVyKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDI6XFx0XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwiVkZJT19GU0xfTUM6IE9iamVjdCAlcyBib3VuZCB0byBkcml2ZXIgJXMgd2hpbGUgRFBSQyBib3VuZCB0byB2ZmlvLWZzbC1tY1xcXFxuXFxcIixcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQzLVxcdFxcdFxcdFxcdCBkZXZfbmFtZShkZXYpLCBtY19kcnYtXFx1MDAzZWRyaXZlci5uYW1lKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ2OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ3MDpcXHRcXHRkZXZfZXJyKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gc2V0dXAgRFBSQyAoJWQpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NzEtXFx0XFx0Z290byBvdXRfbmNfdW5yZWc7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDgwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfc2Nhbl9jb250YWluZXIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00ODktXFx0XFx0ZGV2X2VycihcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ5MDpcXHRcXHRcXHRcXFwiVkZJT19GU0xfTUM6IENvbnRhaW5lciBzY2FubmluZyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDkxLVxcdFxcdGRwcmNfcmVtb3ZlX2RldmljZXMobWNfZGV2LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz01MzA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU0Mi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU0MzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gYWRkIHRvIHZmaW8gZ3JvdXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDQtXFx0XFx0Z290byBvdXRfcHV0X3ZkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC02LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjc6I2lmbmRlZiBWRklPX0ZTTF9NQ19QUklWQVRFX0hcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo4OiNkZWZpbmUgVkZJT19GU0xfTUNfUFJJVkFURV9IXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtOS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMDojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAgICA0MFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0sgKCgodTY0KSgxKSBcXHUwMDNjXFx1MDAzYyBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpIC0gMSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xMi1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMzojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWChvZmYpICgob2ZmKSBcXHUwMDNlXFx1MDAzZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTQtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6MTU6I2RlZmluZSBWRklPX0ZTTF9NQ19JTkRFWF9UT19PRkZTRVQoaW5kZXgpXFx0XFxcXFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE2OlxcdCgodTY0KShpbmRleCkgXFx1MDAzY1xcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTE3LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg9NDc9dm9pZCB2ZmlvX2ZzbF9tY19pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtNDgtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6NDk6I2VuZGlmIC8qIFZGSU9fRlNMX01DX1BSSVZBVEVfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNDo1NS43MDI1NDk0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2Mzk3NDQxNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWdgIGZpbGU6XG5cbioqQW5hbHl6aW5nIHRoZSBWRklPIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmb3IgdGhlIFZGSU8gRlNMIE1DIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBGaXJzdCwgSSdtIGV4cGVjdGluZyB0byBzZWUgdGhlIHR5cGljYWwgc3RydWN0dXJlOiBhIGBjb25maWdgIGJsb2NrIGRlZmluaW5nIHRoZSBtYWluIGZlYXR1cmUsIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBvcHRpb24gZm9yIGVuYWJsaW5nIHRoZSBGU0wgTUMgKEZyZWVzY2FsZSBNZWRpYSBDb250YWluZXIpIHN1cHBvcnQgd2l0aGluIHRoZSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgZnJhbWV3b3JrLiBUaGlzIGlzIGNydWNpYWwgZm9yIGV4cG9zaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIHRoaXMgZmlsZSBzaG91bGQgZXhwb3NlIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYWJpbGl0eSBrbm9icy5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMuIEZvciBpbnN0YW5jZSwgSSBhbnRpY2lwYXRlIGEgZGVwZW5kZW5jeSBvbiB0aGUgY29yZSBWRklPIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYW5kIHByb2JhYmx5IHNwZWNpZmljIEZTTCBNQyBkcml2ZXJzIG9yIHN1YnN5c3RlbXMuIEknbGwgYWxzbyBiZSBzZWFyY2hpbmcgZm9yIGFueSBvcHRpb25zIHJlbGF0ZWQgdG8gc3BlY2lmaWMgZmVhdHVyZXMgb2YgdGhlIEZTTCBNQyBoYXJkd2FyZSwgc3VjaCBhcyBkaWZmZXJlbnQgYWNjZWxlcmF0aW9uIGVuZ2luZXMgb3IgbWVtb3J5IG1hbmFnZW1lbnQgdW5pdHMuIEFyZSB0aGVyZSBhbnkgZmVhdHVyZXMgSSBjYW4gdHVuZSB0byB0YWlsb3IgdGhlIGRldmljZSBhbmQgaXRzIHZpcnR1YWwgZnVuY3Rpb25zP1xuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEFyZSB0aGVyZSByZWFzb25hYmxlIGRlZmF1bHRzIGZvciBtb3N0IGRlcGxveW1lbnRzLCBvciBpcyB0aGlzIGRyaXZlciBkZXNpZ25lZCB0byBiZSBoaWdobHkgY29uZmlndXJhYmxlPyBJZiBpdCdzIHRoZSBsYXR0ZXIsIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHVzZXIgZXhwZXJpZW5jZSBhbmQgcG90ZW50aWFsIGNvbXBsZXhpdHk/IEknbGwgYXNzZXNzIHdoZXRoZXIgaXQncyBzZXR0aW5nIGFueSBkZWZhdWx0cyB0aGF0IG1pZ2h0IG5lZWQgc3BlY2lhbCBhdHRlbnRpb24gaW4gb3VyIHVzZSBjYXNlIChvciB0aGF0IGFyZSBjbGVhcmx5IGluYXBwcm9wcmlhdGUgZm9yIGEgZ2l2ZW4gdGFyZ2V0KS4gSSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMg4oCTIGZlYXR1cmVzIHRoYXQgYmVjb21lIGF2YWlsYWJsZSBvbmx5IHdoZW4gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgb3Igb3RoZXIga2VybmVsIG9wdGlvbnMgYXJlIGVuYWJsZWQuXG5cbkZpbmFsbHksIEknbGwgYmUgcmVhZGluZyB0aGUgaGVscCB0ZXh0LiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBHb29kIGhlbHAgdGV4dCBpcyBpbmZvcm1hdGl2ZSwgZXhwbGFpbmluZyBub3QganVzdCAqd2hhdCogdGhlIG9wdGlvbiBkb2VzIGJ1dCAqd2h5KiBzb21lb25lIG1pZ2h0IHdhbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgaXQuIEkgd2FudCB0byBlbnN1cmUgdGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXIgYW5kIGFjY3VyYXRlLiBJcyBpdCBjb25jaXNlPyBEb2VzIGl0IHBvaW50IHRvIHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBWRklPIHNpZGUgb2YgdGhpbmdzPyBUaGlzIGlzIGFsbCBhYm91dCBhc3Nlc3NpbmcgdGhlIGNvbmZpZ3VyYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IG9mIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODA0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDAuMzQyMjk3MDg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0bWVudSBcXFwiVkZJTyBzdXBwb3J0IGZvciBGU0xfTUMgYnVzIGRldmljZXNcXFwiXFxuICAgMjpcXHRcXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcXG4gICAzOlxcdFxcbiAgIDQ6XFx0Y29uZmlnIFZGSU9fRlNMX01DXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiVkZJTyBzdXBwb3J0IGZvciBRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRldmljZXNcXFwiXFxuICAgNjpcXHRcXHRzZWxlY3QgRVZFTlRGRFxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBWRklPIFFvcklRIERQQUEyIGZzbC1tY1xcbiAgIDk6XFx0XFx0ICAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzLiBUaGlzIGlzIHJlcXVpcmVkIHRvIHBhc3N0aHJvdWdoXFxuICAxMDpcXHRcXHQgIGZzbC1tYyBidXMgZGV2aWNlcyB1c2luZyB0aGUgVkZJTyBmcmFtZXdvcmsuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTowMC4zNDIzNTY1NjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTg3MzQwNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBGU0xfTUNfQlVTKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYEZTTF9NQ19CVVNgIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoaXMgbWVhbnMgSSdtIGdvaW5nIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRvIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSdsbCBuZWVkIHRvIHVzZSB0b29scyB0byBxdWlja2x5IGxvY2F0ZSBhbGwgaW5zdGFuY2VzIG9mIHRoaXMgc3ltYm9sLiBJIGV4cGVjdCBJJ2xsIHdhbnQgdG8gZmlsdGVyIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uIGBLY29uZmlnYCBmaWxlcyBhbmQgbWF5IG5lZWQgc29tZSBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gbWFuYWdlIHRoZSBzZWFyY2ggcHJvY2VzcyBiYXNlZCBvbiB0aGUgc3lzdGVtIGluIHdoaWNoIHRoaXMgaXMgaW1wbGVtZW50ZWQuIFRoaXMgd2lsbCBsZXQgbWUgc2VlIGl0cyBkZXBlbmRlbmNpZXMsIHdobydzIGVuYWJsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIGFyb3VuZCBgRlNMX01DX0JVU2AgaXMgY3J1Y2lhbCB0byBpdHMgYmVoYXZpb3IgYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUzMCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDMuOTI5NzAwNTg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjA1MDk3OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9NQ19CVVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo4OmNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctOS1cXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDUuNzUwMjE0OTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzkzMTY2MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgKE1DKSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgaWRlYSBvZiB3aGF0IEknbSBsb29raW5nIGZvciDigJMgdGhpbmdzIGxpa2U6XG5cbiogICAqKk9wdGlvbnMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBNQyBkcml2ZXIgZnJhbWV3b3JrLioqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB0aGUgZ2F0ZWtlZXBlciBmb3IgYWxsIHRoZSBNQy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIEknbGwgYmUgbG9va2luZyBmb3Igc29tZXRoaW5nIGxpa2UgYENPTkZJR19GU0xfTUNgIG9yIGBGU0xfTUNfRFJJVkVSU2AuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgTUMgZGV2aWNlcyBvciBzdWItZHJpdmVycy4qKiBXZSBhcmUgaW4gdGhlIGZzbC1tYyBkaXJlY3RvcnksIHNvLCBnaXZlbiBpdHMgY29tbW9uIG9yZ2FuaXphdGlvbiwgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNQyBoYXJkd2FyZSBkZXZpY2VzIG9yIGZlYXR1cmVzLCBwZXJoYXBzIHN0cnVjdHVyZWQgaGllcmFyY2hpY2FsbHkuIFRoZXNlIHdvdWxkIGxpa2VseSBiZSBndWFyZGVkIGJ5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sIG9yIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy4gRm9yIGV4YW1wbGUsIHNwZWNpZmljIGRldmljZSB0eXBlcyAobGlrZSBFdGhlcm5ldCwgRE1BLCBldGMuKSB1c2luZyB0aGUgTUMgZnJhbWV3b3JrLlxuKiAgICoqRGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IE1DIGNvbXBvbmVudHMuKiogSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgaW50ZXItcmVsYXRlZC4gQXJlIHRoZXJlIGNsZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSB2YXJpb3VzIGRldmljZSBzdWItZHJpdmVycz8gQXJlIGNlcnRhaW4gb3B0aW9ucyBvbmx5IGF2YWlsYWJsZSBpZiBvdGhlcnMgYXJlIGVuYWJsZWQ/IFRoaXMgaXMgd2hlcmUgSSBjYW4gZ2V0IGEgc2Vuc2Ugb2YgaG93IG1vZHVsYXIgYW5kIHdlbGwtZGVzaWduZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXMuXG4qICAgKipEZWZhdWx0IHZhbHVlcyBhbmQgaGVscCB0ZXh0LioqIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBvcHRpb25zIGFuZCB0aGUgZXhwbGFuYXRvcnkgdGV4dC4gRG8gdGhlIGRlZmF1bHRzIG1ha2Ugc2Vuc2U/IElzIHRoZSBoZWxwIHRleHQgY2xlYXIgYW5kIGluZm9ybWF0aXZlPyBHb29kIEtjb25maWcgZmlsZXMgcHJvdmlkZSBlbm91Z2ggZ3VpZGFuY2UgdG8gbWFrZSBhbiBpbmZvcm1lZCBjaG9pY2Ugd2l0aG91dCBiZWluZyBvdmVyd2hlbG1pbmcuXG4qICAgKipBbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gYXJjaGl0ZWN0dXJlIG9yIGtlcm5lbCB2ZXJzaW9uLioqIEknbSBhbnRpY2lwYXRpbmcgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhcyB0aGUgRlNMIE1DIGZyYW1ld29yayBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBhbmQgaGFyZHdhcmUgcmV2aXNpb25zLiBBbHNvLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjb21wYXRpYmlsaXR5IHNoaW1zIG9yIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQga2VybmVsIHZlcnNpb25zLlxuXG5JJ2xsIGJlIHJlYWRpbmcgdGhpcyB3aXRoIGFuIGV5ZSB0b3dhcmQgaWRlbnRpZnlpbmcgYW55IGFyZWFzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIGltcHJvdmVkIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIG9yIHBlcmZvcm1hbmNlLiBJJ20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgZnV0dXJlIGVuaGFuY2VtZW50cyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgd29yayBvciBwcm9qZWN0cy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDkuNTQzMzg0NjgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBEUEFBMiBmc2wtbWMgYnVzXFxuICAgNDpcXHQjXFxuICAgNTpcXHQjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBGU0xfTUNfQlVTXFxuICAgOTpcXHRcXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTEFZRVJTQ0FQRSB8fCAoQ09NUElMRV9URVNUIFxcdTAwMjZcXHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXFxuICAxMTpcXHRcXHRzZWxlY3QgR0VORVJJQ19NU0lfSVJRXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXFxuICAxNDpcXHRcXHQgIGFyY2hpdGVjdHVyZS4gIFRoZSBmc2wtbWMgYnVzIGRyaXZlciBoYW5kbGVzIGRpc2NvdmVyeSBvZlxcbiAgMTU6XFx0XFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXFxuICAxNjpcXHRcXHQgIGJpbmRpbmcgb2JqZWN0cyB0byBkcml2ZXJzLlxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgRlNMX01DX1VBUElfU1VQUE9SVFxcbiAgMTk6XFx0XFx0Ym9vbCBcXFwiTWFuYWdlbWVudCBDb21wbGV4IChNQykgdXNlcnNwYWNlIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgUHJvdmlkZXMgdXNlcnNwYWNlIHN1cHBvcnQgZm9yIGludGVycm9nYXRpbmcsIGNyZWF0aW5nLCBkZXN0cm95aW5nIG9yXFxuICAyMzpcXHRcXHQgIGNvbmZpZ3VyaW5nIERQQUEyIG9iamVjdHMgZXhwb3J0ZWQgYnkgdGhlIE1hbmFnZW1lbnQgQ29tcGxleC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDkuNTQzNDQ2NTUyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5MjM2MzkzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgR2VuZXNpcyBvZiBgZnNsLW1jYCBEZXZpY2VzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBmYXNjaW5hdGluZyB3b3JsZCBvZiBgZnNsLW1jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRoZXNlIGRldmljZXMgYWN0dWFsbHkgKmJvcm4qPyBJcyB0aGUgYGZzbC1tY2AgYnVzIGEgZGlyZWN0IG1hbmlmZXN0YXRpb24gb2YgdGhlIFFvcklRIERQQUEyIGhhcmR3YXJlLCBhIHRhbmdpYmxlIHBoeXNpY2FsIGVudGl0eSwgb3IgY2FuIGl0IGJlIGJyb3VnaHQgdG8gbGlmZSwgZW11bGF0ZWQgaWYgeW91IHdpbGwsIHdpdGhpbiB0aGUgc3RhbmRhcmQgZnJhbWV3b3JrcyBvZiBRRU1VIG9yIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb25hbCBuYXR1cmUuXG5cbk15IG5leHQgbGluZSBvZiBpbnF1aXJ5IGhhcyB0byBkbyB3aXRoIGhvdyB0aGUgc3lzdGVtIHJlY29nbml6ZXMgYW5kIHRoZW4gc2V0cyB1cCBkZXZpY2VzIG9uIHRoaXMgYnVzLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgb2YgYGZzbF9tY19idXNfdHlwZWAuIEZyb20gdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHRyYWNlIGhvdyBkZXZpY2VzIGFjdHVhbGx5IGdldCBjcmVhdGVkIGFuZCBtYWRlIGFjY2Vzc2libGUgd2l0aGluIHRoZSBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhpcyBidXMgdHlwZSByZWdpc3RyYXRpb24gYW5kIGRldmljZSBpbnN0YW50aWF0aW9uIGlzIGtleSB0byBnYWluaW5nIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGRldmljZXMgb3BlcmF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc0MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MTUuNDY3MDg4NTY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg0NDc0Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbF9tY19idXNfdHlwZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMyND1BVFRSSUJVVEVfR1JPVVBTKGZzbF9tY19idXMpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MzI2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBmc2xfbWNfYnVzX3R5cGUgPSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMjctXFx0Lm5hbWUgPSBcXFwiZnNsLW1jXFxcIixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzM4LX07XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMzk6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2J1c190eXBlKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM0MC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NDYxPWludCBfX2ZzbF9tY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RyaXZlcixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNDY2LVxcdG1jX2RyaXZlci1cXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo0Njc6XFx0bWNfZHJpdmVyLVxcdTAwM2Vkcml2ZXIuYnVzID0gXFx1MDAyNmZzbF9tY19idXNfdHlwZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTQ2OC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzUyPWludCBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzg5LVxcdG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCA9IHBhcmVudF9kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTA6XFx0bWNfZGV2LVxcdTAwM2VkZXYuYnVzID0gXFx1MDAyNmZzbF9tY19idXNfdHlwZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5MS1cXHRtY19kZXYtXFx1MDAzZWRldi5yZWxlYXNlID0gZnNsX21jX2RldmljZV9yZWxlYXNlO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMTc1PXN0YXRpYyB2b2lkIGZzbF9tY19idXNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODMtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTg0OlxcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUsIFxcdTAwMjZmc2xfbWNfbmIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4NS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTI2MD1zdGF0aWMgaW50IF9faW5pdCBmc2xfbWNfYnVzX2RyaXZlcl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjMtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMjY0OlxcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2NS1cXHRpZiAoZXJyb3IgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTItZXJyb3JfY2xlYW51cF9idXM6XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMjkzOlxcdGJ1c191bnJlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI5NC1cXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYz0xODY9c3RhdGljIGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqIGNvbnN0IGlvbW11X2J1c2VzW10gPSB7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk0LSNpZmRlZiBDT05GSUdfRlNMX01DX0JVU1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxOTU6XFx0XFx1MDAyNmZzbF9tY19idXNfdHlwZSxcXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk2LSNlbmRpZlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ0OT1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDYyLVxcdHZkZXYtXFx1MDAzZW5iLm5vdGlmaWVyX2NhbGwgPSB2ZmlvX2ZzbF9tY19idXNfbm90aWZpZXI7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ2MzpcXHRyZXQgPSBidXNfcmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXFx1MDAyNnZkZXYtXFx1MDAzZW5iKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDc1LW91dF9uY191bnJlZzpcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDc2OlxcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUsIFxcdTAwMjZ2ZGV2LVxcdTAwM2VuYik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ3Ny1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ5Nz1zdGF0aWMgdm9pZCB2ZmlvX2ZzbF91bmluaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTA0LVxcdGRwcmNfY2xlYW51cChtY19kZXYpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo1MDU6XFx0YnVzX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXFx1MDAyNnZkZXYtXFx1MDAzZW5iKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTA2LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvZnNsL21jLmg9MzU2PWludCBtY19zZW5kX2NvbW1hbmQoc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sIHN0cnVjdCBmc2xfbWNfY29tbWFuZCAqY21kKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnNsL21jLmgtMzU4LSNpZmRlZiBDT05GSUdfRlNMX01DX0JVU1xcbmluY2x1ZGUvbGludXgvZnNsL21jLmg6MzU5OiNkZWZpbmUgZGV2X2lzX2ZzbF9tYyhfZGV2KSAoKF9kZXYpLVxcdTAwM2VidXMgPT0gXFx1MDAyNmZzbF9tY19idXNfdHlwZSlcXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTM2MC11MzIgZnNsX21jX2dldF9tc2lfaWQoc3RydWN0IGRldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnNsL21jLmg9NDI4PXN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZ2V0X2VuZHBvaW50KHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTQzMC1cXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oOjQzMTpleHRlcm4gY29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZTtcXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTQzMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MTcuMTUxNTY3MDgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwMDQ0NDMyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkZpbmRpbmcgdGhlIFNvdXJjZSBvZiBgZnNsX21jX2J1c2AgRGV2aWNlcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIGBmc2xfbWNfYnVzYCBkZXZpY2VzIGFyZSBiZWluZyBjcmVhdGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyYWNrIGRvd24gdGhlIHBvaW50cyBvZiBvcmlnaW4uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyByZXNwb25zaWJsZSBmb3IgdGhlaXIgaW5zdGFudGlhdGlvbiwgYW5kIHRoZSB3YXkgdG8gZG8gdGhhdCBpcyB0byBsb29rIGZvciBob3cgdGhpcyBidXMgaXMgYmVpbmcgdHJpZ2dlcmVkLlxuXG5GaXJzdCwgSSdsbCBzZWFyY2ggZm9yIGNhbGxzIHRvIGBmc2xfbWNfZGV2aWNlX2FkZGAuIFRoaXMgaXMgdGhlIG1vc3QgZGlyZWN0IHdheSB0byBjcmVhdGUgYSBkZXZpY2Ugd2l0aGluIHRoZSBmcmFtZXdvcmssIHNvIGl0J3MgYSBsaWtlbHkgY2FuZGlkYXRlLiBJZiBJIGZpbmQgY2FsbHMgdG8gaXQsIEknbGwgaW52ZXN0aWdhdGUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZC5cblxuQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCB0cnkgdG8gaWRlbnRpZnkgaG93IGBmc2xfbWNfYnVzX3Byb2JlYCBpcyB0cmlnZ2VyZWQuIFRoaXMgcHJvYmUgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIHdoZW4gYW5kIHdoZXJlIGl0J3MgY2FsbGVkIHdpbGwgaGVscCBtZSB0cmFjZSB0aGUgZGV2aWNlIGNyZWF0aW9uIHByb2Nlc3MgZnJvbSB0aGUgdG9wIGRvd24uIEEgZGVlcCBkaXZlIGludG8gdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZzbF9tY19idXNfcHJvYmVgIHNob3VsZCByZXZlYWwgdGhlIGVuYWJsaW5nIG1lY2hhbmlzbXMgb2YgdGhpcyBidXMuIFRoZSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCBsZWFkIHRvIHRoZSBidXMgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBkZXZpY2VzLCBiZWluZyBicm91Z2h0IG9ubGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3OTksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNToyMi4xNTYwMTMxMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDg3NzcxODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnNsX21jX2RldmljZV9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE4MzpcXHRcXHRlcnJvciA9IGZzbF9tY19kZXZpY2VfYWRkKG9ial9kZXNjLCBOVUxMLCBcXHUwMDI2bWNfYnVzX2Rldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4NC1cXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjaGlsZF9kZXYpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03Mzc9c3RhdGljIHZvaWQgZnNsX21jX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzUxLSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUyOmludCBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1My1cXHRcXHQgICAgICBzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODc5LX1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg4MDpFWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfZGV2aWNlX2FkZCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEwMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExNTctXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTU4OlxcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQoXFx1MDAyNm9ial9kZXNjLCBtY19pbywgXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFx1MDAyNm1jX2J1c19kZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1OS1cXHRpZiAoZXJyb3IgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NjAxPXN0cnVjdCBmc2xfbWNfYnVzIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxMy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjIzLjY2NDc5NTE2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDU5MTg4MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGZzbF9tY19idXNfcHJvYmUqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBmc2xfbWNfYnVzX3Byb2JlYC4gUmlnaHQsIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyBkb2luZyB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gZ28gdG8gdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgb3V0IGBmc2wtbWMtYnVzLmNgIGFuZCB6ZXJvIGluIG9uIGxpbmVzIDEwMzkgdGhyb3VnaCAxMTcwLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSByZWxldmFudCBjb2RlIGJsb2NrIHRvIHVuZGVyc3RhbmQgdGhlIHByb2JlJ3Mgb3BlcmF0aW9uLCBhbnkgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB0aGF0J3MgYmVpbmcgcGVyZm9ybWVkLCBhbmQgdGhlIG92ZXJhbGwgY29udGV4dCB3aXRoaW4gdGhlIGBmc2wtbWMtYnVzYCBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBoYXBwZW5zLiBGcm9tIHRoZXJlIEkgd2lsbCBob3BlZnVsbHkgYmUgYWJsZSB0byBpbnRlcnByZXQgYW5kIGFzY2VydGFpbiB0aGUgZnVuY3Rpb24gYW5kIGZsb3cgb2Ygb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg1OSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI1LjcyMzk4NjYwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY5MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjAwOlxcdH07XFxuMTIwMTpcXHRcXG4xMjAyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9tY19idXNfbWF0Y2hfdGFibGUpO1xcbjEyMDM6XFx0XFxuMTIwNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZVtdID0ge1xcbjEyMDU6XFx0XFx0e1xcXCJOWFAwMDA4XFxcIiwgMCB9LFxcbjEyMDY6XFx0XFx0eyB9XFxuMTIwNzpcXHR9O1xcbjEyMDg6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfbWNfYnVzX2RyaXZlciA9IHtcXG4xMjExOlxcdFxcdC5kcml2ZXIgPSB7XFxuMTIxMjpcXHRcXHRcXHQgICAubmFtZSA9IFxcXCJmc2xfbWNfYnVzXFxcIixcXG4xMjEzOlxcdFxcdFxcdCAgIC5wbSA9IE5VTEwsXFxuMTIxNDpcXHRcXHRcXHQgICAub2ZfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLFxcbjEyMTU6XFx0XFx0XFx0ICAgLmFjcGlfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUsXFxuMTIxNjpcXHRcXHRcXHQgICB9LFxcbjEyMTc6XFx0XFx0LnByb2JlID0gZnNsX21jX2J1c19wcm9iZSxcXG4xMjE4OlxcdFxcdC5yZW1vdmUgPSBmc2xfbWNfYnVzX3JlbW92ZSxcXG4xMjE5OlxcdFxcdC5zaHV0ZG93biA9IGZzbF9tY19idXNfcmVtb3ZlLFxcbjEyMjA6XFx0fTtcXG4xMjIxOlxcdFxcbjEyMjI6XFx0c3RhdGljIGludCBmc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuMTIyMzpcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpXFxuMTIyNDpcXHR7XFxuMTIyNTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhO1xcbjEyMjY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXM7XFxuMTIyNzpcXHRcXHR2b2lkIF9faW9tZW0gKmZzbF9tY19yZWdzO1xcbjEyMjg6XFx0XFxuMTIyOTpcXHRcXHRpZiAoYWN0aW9uICE9IEJVU19OT1RJRllfQUREX0RFVklDRSlcXG4xMjMwOlxcdFxcdFxcdHJldHVybiAwO1xcbjEyMzE6XFx0XFxuMTIzMjpcXHRcXHRpZiAoIW9mX21hdGNoX2RldmljZShmc2xfbWNfYnVzX21hdGNoX3RhYmxlLCBkZXYpIFxcdTAwMjZcXHUwMDI2XFxuMTIzMzpcXHRcXHQgICAgIWFjcGlfbWF0Y2hfZGV2aWNlKGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZSwgZGV2KSlcXG4xMjM0OlxcdFxcdFxcdHJldHVybiAwO1xcbjEyMzU6XFx0XFxuMTIzNjpcXHRcXHRyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UodG9fcGxhdGZvcm1fZGV2aWNlKGRldiksIElPUkVTT1VSQ0VfTUVNLCAxKTtcXG4xMjM3OlxcdFxcdGlmICghcmVzKVxcbjEyMzg6XFx0XFx0XFx0cmV0dXJuIDA7XFxuMTIzOTpcXHRcXG4xMjQwOlxcdFxcdGZzbF9tY19yZWdzID0gaW9yZW1hcChyZXMtXFx1MDAzZXN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcykpO1xcbjEyNDE6XFx0XFx0aWYgKCFmc2xfbWNfcmVncylcXG4xMjQyOlxcdFxcdFxcdHJldHVybiAwO1xcbjEyNDM6XFx0XFxuMTI0NDpcXHRcXHQvKlxcbjEyNDU6XFx0XFx0ICogTWFrZSBzdXJlIHRoYXQgdGhlIE1DIGZpcm13YXJlIGlzIHBhdXNlZCBiZWZvcmUgdGhlIElPTU1VIHNldHVwIGZvclxcbjEyNDY6XFx0XFx0ICogaXQgaXMgZG9uZSBvciBvdGhlcndpc2UgdGhlIGZpcm13YXJlIHdpbGwgY3Jhc2ggcmlnaHQgYWZ0ZXIgdGhlIFNNTVVcXG4xMjQ3OlxcdFxcdCAqIGdldHMgcHJvYmVkIGFuZCBlbmFibGVkLlxcbjEyNDg6XFx0XFx0ICovXFxuMTI0OTpcXHRcXHR3cml0ZWwocmVhZGwoZnNsX21jX3JlZ3MgKyBGU0xfTUNfR0NSMSkgfCAoR0NSMV9QMV9TVE9QIHwgR0NSMV9QMl9TVE9QKSxcXG4xMjUwOlxcdFxcdCAgICAgICBmc2xfbWNfcmVncyArIEZTTF9NQ19HQ1IxKTtcXG4xMjUxOlxcdFxcdGlvdW5tYXAoZnNsX21jX3JlZ3MpO1xcbjEyNTI6XFx0XFxuMTI1MzpcXHRcXHRyZXR1cm4gMDtcXG4xMjU0OlxcdH1cXG4xMjU1OlxcdFxcbjEyNTY6XFx0c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBmc2xfbWNfbmIgPSB7XFxuMTI1NzpcXHRcXHQubm90aWZpZXJfY2FsbCA9IGZzbF9tY19idXNfbm90aWZpZXIsXFxuMTI1ODpcXHR9O1xcbjEyNTk6XFx0XFxuMTI2MDpcXHRzdGF0aWMgaW50IF9faW5pdCBmc2xfbWNfYnVzX2RyaXZlcl9pbml0KHZvaWQpXFxuMTI2MTpcXHR7XFxuMTI2MjpcXHRcXHRpbnQgZXJyb3I7XFxuMTI2MzpcXHRcXG4xMjY0OlxcdFxcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xcbjEyNjU6XFx0XFx0aWYgKGVycm9yIFxcdTAwM2MgMCkge1xcbjEyNjY6XFx0XFx0XFx0cHJfZXJyKFxcXCJidXMgdHlwZSByZWdpc3RyYXRpb24gZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyb3IpO1xcbjEyNjc6XFx0XFx0XFx0Z290byBlcnJvcl9jbGVhbnVwX2NhY2hlO1xcbjEyNjg6XFx0XFx0fVxcbjEyNjk6XFx0XFxuMTI3MDpcXHRcXHRlcnJvciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZnNsX21jX2J1c19kcml2ZXIpO1xcbjEyNzE6XFx0XFx0aWYgKGVycm9yIFxcdTAwM2MgMCkge1xcbjEyNzI6XFx0XFx0XFx0cHJfZXJyKFxcXCJwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBlcnJvcik7XFxuMTI3MzpcXHRcXHRcXHRnb3RvIGVycm9yX2NsZWFudXBfYnVzO1xcbjEyNzQ6XFx0XFx0fVxcbjEyNzU6XFx0XFxuMTI3NjpcXHRcXHRlcnJvciA9IGRwcmNfZHJpdmVyX2luaXQoKTtcXG4xMjc3OlxcdFxcdGlmIChlcnJvciBcXHUwMDNjIDApXFxuMTI3ODpcXHRcXHRcXHRnb3RvIGVycm9yX2NsZWFudXBfZHJpdmVyO1xcbjEyNzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI1LjcyNDA5NDc4NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTQyNTA5NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEZyZWVzY2FsZSBRb3JJUSBEUEFBMiBIYXJkd2FyZSBTdXBwb3J0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBgZnNsX21jX2J1c2AuIFJpZ2h0LCB0aGF0IHJpbmdzIGEgYmVsbC4gSXQncyBmb3IgdGhlIEZyZWVzY2FsZSBRb3JJUSBEUEFBMiwgc3BlY2lmaWNhbGx5IHRoZSBBUkNIX0xBWUVSU0NBUEUgKG9yIE5YUCBMYXllcnNjYXBlIFNvQykgaGFyZHdhcmUuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBhbmQgaG93IGl0IGludGVyZmFjZXMuIExldCdzIGRpZyBpbnRvIHRoYXQgYHZmaW9fZnNsX21jLmNgIGZpbGUuIEl0J3MgdGltZSB0byB1bmRlcnN0YW5kIHdoYXQncyBpbXBsZW1lbnRlZCB0aGVyZSBhbmQsIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpdCdzIGludGVyZmFjaW5nIHdpdGggZXZlcnl0aGluZy4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoZSByb2xlIG9mIGB2ZmlvX2ZzbF9tY2AgaXMgaW4gdGhlIGdyZWF0ZXIgYXJjaGl0ZWN0dXJlLCBhbmQgaG93IGl0J3MgcHJvdmlkaW5nIHRoZSBhYnN0cmFjdGlvbiBsYXllci4gSSdtIGhvcGluZyBJIGNhbiBlYXNpbHkgaWRlbnRpZnkgdGhlIGtleSBjb250cm9sIHBvaW50cywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIG92ZXJhbGwgZHJpdmVyJ3MgZnVuY3Rpb24gd2l0aGluIHRoZSBWRklPIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzOTMsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI5LjY2NjYwNjU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTEwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTEwOlxcdFxcdHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYgPVxcbiA1MTE6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuIDUxMjpcXHRcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuIDUxMzpcXHRcXHRpbnQgcmV0O1xcbiA1MTQ6XFx0XFxuIDUxNTpcXHRcXHR2ZGV2LVxcdTAwM2VtY19kZXYgPSBtY19kZXY7XFxuIDUxNjpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZ2ZGV2LVxcdTAwM2VpZ2F0ZSk7XFxuIDUxNzpcXHRcXG4gNTE4OlxcdFxcdGlmIChpc19mc2xfbWNfYnVzX2RwcmMobWNfZGV2KSlcXG4gNTE5OlxcdFxcdFxcdHJldCA9IHZmaW9fYXNzaWduX2RldmljZV9zZXQoY29yZV92ZGV2LCBcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYpO1xcbiA1MjA6XFx0XFx0ZWxzZVxcbiA1MjE6XFx0XFx0XFx0cmV0ID0gdmZpb19hc3NpZ25fZGV2aWNlX3NldChjb3JlX3ZkZXYsIG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuIDUyMjpcXHRcXG4gNTIzOlxcdFxcdGlmIChyZXQpXFxuIDUyNDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1MjU6XFx0XFxuIDUyNjpcXHRcXHQvKiBkZXZpY2Vfc2V0IGlzIHJlbGVhc2VkIGJ5IHZmaW8gY29yZSBpZiBAaW5pdCBmYWlscyAqL1xcbiA1Mjc6XFx0XFx0cmV0dXJuIHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHZkZXYpO1xcbiA1Mjg6XFx0fVxcbiA1Mjk6XFx0XFxuIDUzMDpcXHRzdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuIDUzMTpcXHR7XFxuIDUzMjpcXHRcXHRzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2O1xcbiA1MzM6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1jX2Rldi1cXHUwMDNlZGV2O1xcbiA1MzQ6XFx0XFx0aW50IHJldDtcXG4gNTM1OlxcdFxcbiA1MzY6XFx0XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fZnNsX21jX2RldmljZSwgdmRldiwgZGV2LFxcbiA1Mzc6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2ZzbF9tY19vcHMpO1xcbiA1Mzg6XFx0XFx0aWYgKElTX0VSUih2ZGV2KSlcXG4gNTM5OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHZkZXYpO1xcbiA1NDA6XFx0XFxuIDU0MTpcXHRcXHRyZXQgPSB2ZmlvX3JlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDU0MjpcXHRcXHRpZiAocmV0KSB7XFxuIDU0MzpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gYWRkIHRvIHZmaW8gZ3JvdXBcXFxcblxcXCIpO1xcbiA1NDQ6XFx0XFx0XFx0Z290byBvdXRfcHV0X3ZkZXY7XFxuIDU0NTpcXHRcXHR9XFxuIDU0NjpcXHRcXG4gNTQ3OlxcdFxcdHJldCA9IHZmaW9fZnNsX21jX3NjYW5fY29udGFpbmVyKG1jX2Rldik7XFxuIDU0ODpcXHRcXHRpZiAocmV0KVxcbiA1NDk6XFx0XFx0XFx0Z290byBvdXRfZ3JvdXBfZGV2O1xcbiA1NTA6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgdmRldik7XFxuIDU1MTpcXHRcXHRyZXR1cm4gMDtcXG4gNTUyOlxcdFxcbiA1NTM6XFx0b3V0X2dyb3VwX2RldjpcXG4gNTU0OlxcdFxcdHZmaW9fdW5yZWdpc3Rlcl9ncm91cF9kZXYoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiA1NTU6XFx0b3V0X3B1dF92ZGV2OlxcbiA1NTY6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gNTU3OlxcdFxcdHJldHVybiByZXQ7XFxuIDU1ODpcXHR9XFxuIDU1OTpcXHRcXG4gNTYwOlxcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA1NjE6XFx0e1xcbiA1NjI6XFx0XFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9XFxuIDU2MzpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlLCB2ZGV2KTtcXG4gNTY0OlxcdFxcbiA1NjU6XFx0XFx0dmZpb19mc2xfdW5pbml0X2RldmljZSh2ZGV2KTtcXG4gNTY2OlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnZkZXYtXFx1MDAzZWlnYXRlKTtcXG4gNTY3OlxcdH1cXG4gNTY4OlxcdFxcbiA1Njk6XFx0c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI5LjY2NjcyNjI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2ODYxMzU2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBmc2xfbWNfYnVzIG9uIGFtZDY0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBmc2xfbWNfYnVzYCwgd2hpY2ggaXMgYSBoYXJkd2FyZSBidXMgc3BlY2lmaWMgdG8gTlhQL0ZyZWVzY2FsZSBMYXllcnNjYXBlIFNvQ3MsIHNwZWNpZmljYWxseSB0aGUgUW9ySVEgRFBBQTIuIFRoZSBxdWVzdGlvbiBpcywgc2hvdWxkIHdlIGJvdGhlciBmdXp6aW5nIGNvZGUgcmVsYXRlZCB0byB0aGlzIG9uIGFtZDY0LCBjb25zaWRlcmluZyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgb3V0bGluZWQgaW4gdGhlIHByb21wdD9cblxuVGhlIHByb21wdCBzYXlzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgaW50byBjYXRlZ29yaWVzIGxpa2Ugc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzICpwcmVjaXNlbHkqIHRoZSBjYXNlIGhlcmUuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IFFvcklRIERQQUEyIGlzIEFSTTY0IG9yIFBvd2VyUEMgYmFzZWQuIFdlJ3JlIG9uIGFtZDY0LiBDYW4gYENPTkZJR19GU0xfTUNfQlVTYCBvciBldmVuIGBDT05GSUdfVkZJT19GU0xfTUNgICpwb3NzaWJseSogYmUgcmVsZXZhbnQgb24gYW1kNjQsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlcmUncyBsaWtlbHkgbm8gRFBBQTIgaGFyZHdhcmUgcHJlc2VudD9cblxuTGV0J3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AuIEFoYSEgSXQgY29uZmlybXMgbXkgc3VzcGljaW9uczogdGhlIGBGU0xfTUNfQlVTYCBkcml2ZXIgcmVxdWlyZXMgYE9GYCAoRGV2aWNlIFRyZWUpLCB3aGljaCBpcyB0eXBpY2FsIGZvciBlbWJlZGRlZCBzeXN0ZW1zLCAqYW5kKiBlaXRoZXIgYEFSQ0hfTEFZRVJTQ0FQRWAgKGEgTGF5ZXJzY2FwZS1zcGVjaWZpYyBwbGF0Zm9ybSkgb3IsIHZpYSBgQ09NUElMRV9URVNUYCwgcG90ZW50aWFsbHkgb3RoZXIgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTSwgQVJNNjQsIFg4Nl9MT0NBTF9BUElDLCBvciBQUEMuIEhvd2V2ZXIsIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGlzOiBldmVuIGlmIHdlIHNvbWVob3cgaGF2ZSBgQ09NUElMRV9URVNUYCBlbmFibGVkLCBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoYXQgUUVNVSwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2UncmUgbGlrZWx5IHVzaW5nLCBpcyBlbXVsYXRpbmcgYW4gZnNsLW1jIGRldmljZT8gQWJzb2x1dGVseSBub3QuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZSBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIG9yIHRoZSB2YXJpb3VzIGRldmljZXMgdGhhdCB3b3VsZCBsaXZlIG9uIGl0IChEUFJDLCBEUE1DUCwgZXRjLikuXG5cbkZ1cnRoZXJtb3JlLCBRb3JJUSBEUEFBMiBpcyBleHBsaWNpdGx5IGFuIE5YUCBMYXllcnNjYXBlIEFSTTY0IC8gUG93ZXJQQyBTb0Mtc3BlY2lmaWMgYnVzIGhhcmR3YXJlLiBUaGUgcGF0aCB0byBgdmZpb19mc2xfbWNfbW1hcGAgcmVxdWlyZXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gYSBgL2Rldi92ZmlvLypgIGRldmljZSBub2RlLiBUaGF0IG5vZGUgbXVzdCByZXByZXNlbnQgYW4gYGZzbF9tY19kZXZpY2VgIGJvdW5kIHRvIGB2ZmlvLWZzbC1tY2AuIEluIHR1cm4sIGZvciBgdmZpby1mc2wtbWNgIHRvIHByb2JlIGFuZCByZWdpc3RlciBhIHZmaW8gZGV2aWNlLCBhbiBgZnNsX21jX2RldmljZWAgKm11c3QqIGV4aXN0IG9uIHRoZSBgZnNsX21jX2J1c2AuIEFuZCBmb3IgdGhlIGBmc2xfbWNfYnVzYCB0byBjcmVhdGUgYW55IGRldmljZXMsIGl0IG5lZWRzIHRvIHByb2JlIHRoZSBgZnNsX21jX2J1c19kcml2ZXJgIHBsYXRmb3JtIGRldmljZSB2aWEgYW4gT0YvQUNQSSBub2RlIChsaWtlIHRoZSBOWFAwMDA4IG5vZGUpLCBhbmQgdWx0aW1hdGVseSBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwaHlzaWNhbCBNQyAoTWFuYWdlbWVudCBDb21wbGV4KSBmaXJtd2FyZS4gVGhpcyBjb21tdW5pY2F0aW9uIGhhcHBlbnMgdmlhIE1NSU8gcmVnaXN0ZXJzLCB3aGVyZSBpdCBzZW5kcyBNQyBjb21tYW5kcyAodmlhIGBtY19zZW5kX2NvbW1hbmRgKSB0byBkaXNjb3ZlciBEUFJDIGNvbnRhaW5lcnMuIEluIGEgbnV0c2hlbGwsIHdpdGhvdXQgdGhlICpwaHlzaWNhbCogTUMgZmlybXdhcmUsIGhhcmR3YXJlIEFTSUMsICpvciogYSBRRU1VIGVtdWxhdGlvbiBvZiBEUEFBMiBNQywgbm8gZGV2aWNlcyBjYW4gZXZlciBiZSBlbnVtZXJhdGVkIG9yIGFkZGVkIHRvIHRoZSBmc2wtbWMgYnVzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgcXVpY2tseSBncmVwIHRoZSBrZXJuZWwgc291cmNlIGZvciBzb21ldGhpbmcgbGlrZSBgZnNsX21jX2RldmljZV9hZGRgIHRvIG1ha2UgZG91Ymx5IGNlcnRhaW4gdGhlcmUncyBub3RoaW5nIHNuZWFreSBnb2luZyBvbi5cblxuKipDb25jbHVzaW9uOioqIEl0J3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIG9uIGFtZDY0LiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MDMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTozNi4zNTI4NjQ2MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI1OTM4NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbF9tY19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yMD1zdHJ1Y3QgZnNsX21jX2NoaWxkX29ianMge1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjQtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MjU6c3RhdGljIGJvb2wgZnNsX21jX2RldmljZV9tYXRjaChjb25zdCBzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTI2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MzI9c3RhdGljIGJvb2wgZnNsX21jX29ial9kZXNjX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9iailcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQxLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjQyOnN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZV9pZl9ub3RfaW5fbWMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQzLXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ1LVxcdHN0cnVjdCBmc2xfbWNfY2hpbGRfb2JqcyAqb2JqcztcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo0NjpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2O1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ3LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTAtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTE6XFx0bWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUyLVxcdG9ianMgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTctXFx0XFx0aWYgKHN0cmxlbihvYmpfZGVzYy1cXHUwMDNldHlwZSkgIT0gMCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjU4OlxcdFxcdCAgICBmc2xfbWNfZGV2aWNlX21hdGNoKG1jX2Rldiwgb2JqX2Rlc2MpKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjItXFx0aWYgKGkgPT0gb2Jqcy1cXHUwMDNlY2hpbGRfY291bnQpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjM6XFx0XFx0ZnNsX21jX2RldmljZV9yZW1vdmUobWNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02NC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY3LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjY4OnN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjkte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzItXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzM6XFx0ZnNsX21jX2RldmljZV9yZW1vdmUodG9fZnNsX21jX2RldmljZShkZXYpKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg4LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjg5OnZvaWQgZHByY19yZW1vdmVfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy05MC1cXHRcXHRcXHQgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2NfYXJyYXksXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMDItXFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZvYmpzLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEwMzpcXHRcXHRcXHRcXHQgICAgICBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlX2lmX25vdF9pbl9tYyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTA0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMDktXFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsIE5VTEwsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTEwOlxcdFxcdFxcdFxcdCAgICAgIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTExMS1cXHR9XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xMTM9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19yZW1vdmVfZGV2aWNlcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE0LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjExNTpzdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE2LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMTctXFx0Y29uc3Qgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MgPSBkYXRhO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjExODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTExOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMjA6XFx0cmV0dXJuIGZzbF9tY19kZXZpY2VfbWF0Y2gobWNfZGV2LCBvYmpfZGVzYyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTIxLX1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMjItXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTIzOnN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMjQ6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTI1LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEyOC1cXHRkZXYgPSBkZXZpY2VfZmluZF9jaGlsZChcXHUwMDI2bWNfYnVzX2Rldi1cXHUwMDNlZGV2LCBvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMjk6XFx0XFx0XFx0XFx0X19mc2xfbWNfZGV2aWNlX21hdGNoKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzAtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTMxOlxcdHJldHVybiBkZXYgPyB0b19mc2xfbWNfZGV2aWNlKGRldikgOiBOVUxMO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzMi19XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDQtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQ1OnN0YXRpYyB2b2lkIGNoZWNrX3BsdWdnZWRfc3RhdGVfY2hhbmdlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTQ2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYylcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE2OC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxNjk6c3RhdGljIHZvaWQgZnNsX21jX29ial9kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTcyLVxcdGludCBlcnJvcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxNzM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKmNoaWxkX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzctXFx0ICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTc4OlxcdGNoaWxkX2RldiA9IGZzbF9tY19kZXZpY2VfbG9va3VwKG9ial9kZXNjLCBtY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzktXFx0aWYgKGNoaWxkX2Rldikge1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTgyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlxcdFxcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQob2JqX2Rlc2MsIE5VTEwsIFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTg0LVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmNoaWxkX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yMDEtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MjAyOnN0YXRpYyB2b2lkIGRwcmNfYWRkX25ld19kZXZpY2VzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIwMy1cXHRcXHRcXHRcXHQgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2NfYXJyYXksXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNDQtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MjQ1OmludCBkcHJjX3NjYW5fb2JqZWN0cyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNDYtXFx0XFx0ICAgICAgYm9vbCBhbGxvY19pbnRlcnJ1cHRzKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzYzLSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjM2NDppbnQgZHByY19zY2FuX2NvbnRhaW5lcihzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNjUtXFx0XFx0XFx0Ym9vbCBhbGxvY19pbnRlcnJ1cHRzKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9Mzg5PXN0YXRpYyBpcnFyZXR1cm5fdCBkcHJjX2lycTBfaGFuZGxlcl90aHJlYWQoaW50IGlycV9udW0sIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM5My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBhcmc7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6Mzk0OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzk1LVxcdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXMgPSB0b19mc2xfbWNfYnVzKG1jX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy00NTYtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NDU3OmludCBkaXNhYmxlX2RwcmNfaXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNDU4LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwMC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MDE6aW50IGdldF9kcHJjX2lycV9zdGF0ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwMi17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDctXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTA4OnN0YXRpYyBpbnQgcmVnaXN0ZXJfZHByY19pcnFfaGFuZGxlcihzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwOS17XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTEwLVxcdGludCBlcnJvcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MTE6XFx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXFx1MDAzZWlycXNbMF07XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTEyLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTMzLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjUzNDppbnQgZW5hYmxlX2RwcmNfaXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTM1LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU3MS0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1NzI6c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU3My17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDctXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjA4OmludCBkcHJjX3NldHVwKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjA5LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTcxMT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX3NldHVwKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcyMi0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3MjM6c3RhdGljIGludCBkcHJjX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzI0LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc0OC1zY2FuX2NsZWFudXA6XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzQ5OlxcdGRldmljZV9mb3JfZWFjaF9jaGlsZChcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsIE5VTEwsIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc1MC1kcHJjX2NsZWFudXA6XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NTctICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzU4OnN0YXRpYyB2b2lkIGRwcmNfdGVhcmRvd25faXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzU5LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3NjA6XFx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXFx1MDAzZWlycXNbMF07XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzYxLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzc3LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc3ODppbnQgZHByY19jbGVhbnVwKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzc5LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTgxNT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX2NsZWFudXApO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODI2LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgyNzpzdGF0aWMgdm9pZCBkcHJjX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgyOC17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MzgtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODM5OlxcdGRldmljZV9mb3JfZWFjaF9jaGlsZChcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsIE5VTEwsIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0MC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0NS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lkIG1hdGNoX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODQ3LVxcdHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTQtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxNTpzdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xNi17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX2FkZF9kZXZpY2Uoc3RydWN0IGZzbF9tY19idXNcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cG9vbF90eXBlLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGZzbF9tY19kZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCptY19kZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM4LVxcdHN0cnVjdCBmc2xfbWNfcmVzb3VyY2UgKnJlc291cmNlO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6Mzk6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYgPSBcXHUwMDI2bWNfYnVzLVxcdTAwM2VtY19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MC1cXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05Ni0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk3OnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGZzbF9tY19kZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05OS17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxMDA6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xMDEtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTA1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTA2OlxcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xMDctXFx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyhtY19idXNfZGV2KTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MTgxPWludCBfX211c3RfY2hlY2sgZnNsX21jX3Jlc291cmNlX2FsbG9jYXRlKHN0cnVjdCBmc2xfbWNfYnVzICptY19idXMsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE4Ni1cXHRzdHJ1Y3QgZnNsX21jX3Jlc291cmNlICpyZXNvdXJjZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjE4NzpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IFxcdTAwMjZtY19idXMtXFx1MDAzZW1jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE4OC1cXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0yNTQ9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3Jlc291cmNlX2ZyZWUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzMtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNzQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzUtXFx0XFx0XFx0XFx0XFx0ZW51bSBmc2xfbWNfcG9vbF90eXBlIHBvb2xfdHlwZSxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3NjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19hZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjc3LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3ODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI3OS1cXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MjgwOlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19hZGV2O1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjgxLVxcdGludCBlcnJvciA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI5My1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI5NDpcXHRtY19idXNfZGV2ID0gdG9fZnNsX21jX2RldmljZShtY19kZXYtXFx1MDAzZWRldi5wYXJlbnQpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjk1LVxcdG1jX2J1cyA9IHRvX2ZzbF9tY19idXMobWNfYnVzX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI5OnZvaWQgZnNsX21jX29iamVjdF9mcmVlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19hZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzMwLXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzQzPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfZnJlZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1NC0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM1NTppbnQgZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzU2LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGlycV9jb3VudClcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzU4LVxcdHVuc2lnbmVkIGludCBpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzU5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lycSAqaXJxX3Jlc291cmNlcztcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM2MDpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKm1jX2Rldl9pcnE7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNjEtXFx0aW50IGVycm9yO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00MTE9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE2LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDE3OnZvaWQgZnNsX21jX2NsZWFudXBfaXJxX3Bvb2woc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MTgte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2NsZWFudXBfaXJxX3Bvb2wpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NDItICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0NDM6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfYWxsb2NhdGVfaXJxcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQ0LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQ4LVxcdGludCBlcnJvciA9IC1FSU5WQUw7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0NDk6XFx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICoqaXJxcyA9IE5VTEw7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NTAtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDYyLVxcdGVsc2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ2MzpcXHRcXHRtY19idXMgPSB0b19mc2xfbWNfYnVzKHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVxcdTAwM2VkZXYucGFyZW50KSk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NjQtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUwNj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYWxsb2NhdGVfaXJxcyk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjUxMTp2b2lkIGZzbF9tY19mcmVlX2lycXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMi17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxNS1cXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTE2OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lycSAqKmlycXMgPSBtY19kZXYtXFx1MDAzZWlycXM7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUyNS1cXHRlbHNlXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1MjY6XFx0XFx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyh0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCkpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTI3LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz01Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2ZyZWVfaXJxcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MzktXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NDA6dm9pZCBmc2xfbWNfaW5pdF9hbGxfcmVzb3VyY2VfcG9vbHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NDEte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjEtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NjI6c3RhdGljIGludCBmc2xfbWNfYWxsb2NhdG9yX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjMte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTY0LVxcdGVudW0gZnNsX21jX3Bvb2xfdHlwZSBwb29sX3R5cGU7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NjU6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjYtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTcxLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTcyOlxcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NzMtXFx0aWYgKCFkZXZfaXNfZnNsX21jKFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYpKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01OTMtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1OTQ6c3RhdGljIHZvaWQgZnNsX21jX2FsbG9jYXRvcl9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU5NS17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwODpzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2VfaWQgbWF0Y2hfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwOS1cXHR7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTQyPXN0cnVjdCBmc2xfbWMge1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NDM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfYnVzX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTQ0LVxcdHU4IG51bV90cmFuc2xhdGlvbl9yYW5nZXM7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTkwPXN0YXRpYyBpbnQgZnNsX21jX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MS17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MjpcXHRjb25zdCBzdHJ1Y3QgZnNsX21jX2RldmljZV9pZCAqaWQ7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MzpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTQtXFx0Y29uc3Qgc3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RydiA9IHRvX2ZzbF9tY19kcml2ZXIoZHJ2KTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDAte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQxOlxcdGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDItXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTE1MT1zdGF0aWMgaW50IGZzbF9tY19wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE1My1cXHRzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJ2ID0gdG9fZnNsX21jX2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxNTQ6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE1NS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTYyPXN0YXRpYyB2b2lkIGZzbF9tY19yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNjQtXFx0c3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RydiA9IHRvX2ZzbF9tY19kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTY1OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNjYtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTE3MT1zdGF0aWMgdm9pZCBmc2xfbWNfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNzMtXFx0c3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RydiA9IHRvX2ZzbF9tY19kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTc0OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNzUtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTE4MD1zdGF0aWMgaW50IGZzbF9tY19kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTgzLVxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSBkZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxODQ6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE4NS1cXHR1MzIgaW5wdXRfaWQgPSBtY19kZXYtXFx1MDAzZWljaWQ7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTIxND1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIxNi17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTc6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIxOC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MjMxPXN0YXRpYyBpbnQgc2Nhbl9mc2xfbWNfYnVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIzMi17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMzM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfZGV2O1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjM0LVxcdHN0cnVjdCBmc2xfbWNfYnVzICpyb290X21jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjM4LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjM5OlxcdHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjQwLVxcdHJvb3RfbWNfYnVzID0gdG9fZnNsX21jX2J1cyhyb290X21jX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTI2ND1zdGF0aWMgaW50IGZzbF9tY19idXNfc2V0X2F1dG9yZXNjYW4oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjY1LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI2NjpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqcm9vdF9tY19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNjctXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI3Mi1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI3MzpcXHRyb290X21jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9Mjg3PXN0YXRpYyBpbnQgZnNsX21jX2J1c19nZXRfYXV0b3Jlc2NhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yODgte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjg5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICpyb290X21jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI5MC1cXHRjaGFyICpidWYgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yOTQtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTU6XFx0cm9vdF9tY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yOTYtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTU4ND1zdGF0aWMgaW50IGdldF9kcHJjX2ljaWQoc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTU5Ni1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjU5NzpzdGF0aWMgaW50IHRyYW5zbGF0ZV9tY19hZGRyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy01OTgtXFx0XFx0XFx0ICAgICBlbnVtIGRwcmNfcmVnaW9uX3R5cGUgbWNfcmVnaW9uX3R5cGUsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTYzMS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjYzMjpzdGF0aWMgaW50IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NjMzOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy02MzQte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03Mjc9Ym9vbCBmc2xfbWNfaXNfcm9vdF9kcHJjKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzM2LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzM3OnN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03Mzgte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzM5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDAtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1MjppbnQgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTMtXFx0XFx0ICAgICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTQtXFx0XFx0ICAgICAgc3RydWN0IGRldmljZSAqcGFyZW50X2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1NTpcXHRcXHQgICAgICBzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTYte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzU3LVxcdGludCBlcnJvcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1ODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gTlVMTDtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1OS1cXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzID0gTlVMTDtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc2MDpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqcGFyZW50X21jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc2MS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc2Mi1cXHRpZiAoZGV2X2lzX2ZzbF9tYyhwYXJlbnRfZGV2KSlcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc2MzpcXHRcXHRwYXJlbnRfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShwYXJlbnRfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc2NC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc3OC1cXHRcXHQvKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Nzc5OlxcdFxcdCAqIEFsbG9jYXRlIGEgcmVndWxhciBmc2xfbWNfZGV2aWNlIG9iamVjdDpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc4MC1cXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkwLVxcdG1jX2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZmc2xfbWNfYnVzX3R5cGU7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTE6XFx0bWNfZGV2LVxcdTAwM2VkZXYucmVsZWFzZSA9IGZzbF9tY19kZXZpY2VfcmVsZWFzZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5Mi1cXHRtY19kZXYtXFx1MDAzZWRldi50eXBlID0gZnNsX21jX2dldF9kZXZpY2VfdHlwZShvYmpfZGVzYy1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg1Mi1cXHRpZiAocGFyZW50X21jX2RldiBcXHUwMDI2XFx1MDAyNiBvYmpfZGVzYy1cXHUwMDNlcmVnaW9uX2NvdW50ICE9IDApIHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg1MzpcXHRcXHRlcnJvciA9IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhtY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NTQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHBhcmVudF9tY19kZXYpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODgwOkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19kZXZpY2VfYWRkKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4MS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODYtICogTGludXhcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODkwOnZvaWQgZnNsX21jX2RldmljZV9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg5MS17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg5Ny19XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4OTg6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODk5LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTAwOnN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZ2V0X2VuZHBvaW50KHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MDEtXFx0XFx0XFx0XFx0XFx0ICB1MTYgaWZfaWQpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MDIte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTAzOlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LCAqZW5kcG9pbnQ7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MDQtXFx0c3RydWN0IGZzbF9tY19vYmpfZGVzYyBlbmRwb2ludF9kZXNjID0ge3sgMCB9fTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTA5LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTEwOlxcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MTEtXFx0c3RyY3B5KGVuZHBvaW50MS50eXBlLCBtY19kZXYtXFx1MDAzZW9ial9kZXNjLnR5cGUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MjktXFx0ZW5kcG9pbnRfZGVzYy5pZCA9IGVuZHBvaW50Mi5pZDtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzMDpcXHRlbmRwb2ludCA9IGZzbF9tY19kZXZpY2VfbG9va3VwKFxcdTAwMjZlbmRwb2ludF9kZXNjLCBtY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzMS1cXHRpZiAoZW5kcG9pbnQpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTk0Ny1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjk0ODpcXHRlbmRwb2ludCA9IGZzbF9tY19kZXZpY2VfbG9va3VwKFxcdTAwMjZlbmRwb2ludF9kZXNjLCBtY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTk0OS1cXHQvKlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDQzLVxcdHN0cnVjdCBmc2xfbWMgKm1jO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTA0NDpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IE5VTEw7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDQ1LVxcdHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1Ny1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjExNTg6XFx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcXHUwMDI2b2JqX2Rlc2MsIG1jX2lvLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWNfYnVzX2Rldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU5LVxcdGlmIChlcnJvciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTExNzU9c3RhdGljIHZvaWQgZnNsX21jX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4MC1cXHRtY19pbyA9IG1jLVxcdTAwM2Vyb290X21jX2J1c19kZXYtXFx1MDAzZW1jX2lvO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4MTpcXHRmc2xfbWNfZGV2aWNlX3JlbW92ZShtYy1cXHUwMDNlcm9vdF9tY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODItXFx0ZnNsX2Rlc3Ryb3lfbWNfaW8obWNfaW8pO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYz0xOD1zdGF0aWMgdm9pZCBmc2xfbWNfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTkte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MjA6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMjEtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cyA9IHRvX2ZzbF9tY19idXMobWNfYnVzX2Rldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYzoyMjpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKm1jX2Rldl9pcnEgPSBcXHUwMDI2bWNfYnVzLVxcdTAwM2VpcnFfcmVzb3VyY2VzW21zaV9kZXNjLVxcdTAwM2Vtc2lfaW5kZXhdO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MjM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm93bmVyX21jX2RldiA9IG1jX2Rldl9pcnEtXFx1MDAzZW1jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTI0LVxcdHN0cnVjdCBkcHJjX2lycV9jZmcgaXJxX2NmZztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM9NzY9c3RydWN0IGlycV9kb21haW4gKmZzbF9tY19nZXRfbXNpX3BhcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy03Ny17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYzo3ODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtNzktXFx0c3RydWN0IGRldmljZSAqcm9vdF9kcHJjX2RldjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM9MTA3PXUzMiBmc2xfbWNfZ2V0X21zaV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xMDgte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MTA5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xMTAtXFx0c3RydWN0IGRldmljZSAqcm9vdF9kcHJjX2RldjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oPTYwMT1zdHJ1Y3QgZnNsX21jX2J1cyB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjAyOlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlIG1jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MDMtXFx0c3RydWN0IGZzbF9tY19yZXNvdXJjZV9wb29sIHJlc291cmNlX3Bvb2xzW0ZTTF9NQ19OVU1fUE9PTF9UWVBFU107XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjA0OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lycSAqaXJxX3Jlc291cmNlcztcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MDUtXFx0c3RydWN0IG11dGV4IHNjYW5fbXV0ZXg7ICAgIC8qIHNlcmlhbGl6ZXMgYnVzIHNjYW5uaW5nICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTMtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjE0OmludCBfX211c3RfY2hlY2sgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjE1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlICpwYXJlbnRfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19kZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTk6dm9pZCBmc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MjAtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MjM9dm9pZCBkcHJjX2RyaXZlcl9leGl0KHZvaWQpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyNC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MjU6aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyNi1cXHRcXHQgICAgICBib29sIGFsbG9jX2ludGVycnVwdHMpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NjI4PWludCBfX2luaXQgZnNsX21jX2FsbG9jYXRvcl9kcml2ZXJfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MjktXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjMwOnZvaWQgZnNsX21jX2luaXRfYWxsX3Jlc291cmNlX3Bvb2xzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MzEtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MzcuMDc4ODEyNjZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTE4OTA2MTkxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogdmZpb19mc2xfbWMgaXMgVW5mdXp6YWJsZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBgZnNsLW1jYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYHZmaW9fZnNsX21jLmNgLiBUaGlzIGNvZGUgaXMgaW50aW1hdGVseSB0aWVkIHRvIE5YUCBMYXllcnNjYXBlIFNvQ3MgbGlrZSB0aGUgTFMxMDg4QSwgTFMyMDgwQSwgYW5kIHNpbWlsYXIsIGRlYWxpbmcgd2l0aCB0aGVpciBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXguIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIEFscmVhZHksIEknbSBzZWVpbmcgYSBwcm9ibGVtLiBUaGVzZSBkZXZpY2VzLCB0aGUgZnNsLW1jIGhhcmR3YXJlIGFuZCB0aGUgRFBBQTIsIGFyZSAqbm90KiBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIEFuZCB3ZSBoYXZlIGEgZ3VpZGVsaW5lIHRoYXQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBjb2RlIHJlbGlhbnQgb24gaGFyZHdhcmUgdW5hdmFpbGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCwgaXMgbm90IHNvbWV0aGluZyB0byBiZSBmdXp6ZWQuIFRoYXQncyBhIGh1Z2UgcmVkIGZsYWcuXG5cblRoZSBndWlkZWxpbmVzIGFyZSBwcmV0dHkgY2xlYXI6IFwiUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGVcIi4gSWYgaXQgY2FuJ3QgcnVuLCBpdCBzaG91bGRuJ3QgYmUgZnV6emVkLiBBbHNvLCB3ZSBoYXZlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIsIHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBzcGVjaWFsaXplZCBkcml2ZXJzLiBUaG9zZSBraW5kcyBvZiB0aGluZ3MgYXJlbid0IHNvbWV0aGluZyB3ZSBjYW4gcmVsaWFibHkgdGVzdCBvciBjb3ZlciBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoaXMgZmFsbHMgcmlnaHQgaW50byB0aGF0IGNhdGVnb3J5LlxuXG5TbywgYHZmaW9fZnNsX21jLmNgIGlzIG9mZiB0aGUgdGFibGUuIFRoZSBkcml2ZXIsIGB2ZmlvX2ZzbF9tY19kcml2ZXJgLCByZWdpc3RlcnMgaXRzZWxmIG9uIHRoZSBgZnNsX21jX2J1c190eXBlYC4gIFRoYXQgYnVzIGlzIG9ubHkgcG9wdWxhdGVkIHRocm91Z2ggQUNQSSBhbmQgZGV2aWNlIG5vZGVzIHRhbGtpbmcgdG8gTUMgZmlybXdhcmUgcmVnaXN0ZXJzLCBzcGVjaWZpY2FsbHkgYE5YUDAwMDhgIEFDUEkgb3IgYGZzbCxxb3JpcS1tY2AgT0YgZGV2aWNlIG5vZGVzLiBUaGVyZSdzIG5vIHZpcnR1YWwgb3Igc29mdHdhcmUtZW11bGF0ZWQgZXF1aXZhbGVudC4gSXQncyBhbGwgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB0aGF0J3MgYSBkZWFkIGVuZC4gVGhlcmVmb3JlLCBpdCdzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9mIGFtZDY0LiBJdCBzaW1wbHkgaXNuJ3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHByb2JlZCBvciBleGVyY2lzZWQgaW4gYSBzdGFuZGFyZCBRRU1VIFZNLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgbXkgY29uY2x1c2lvbiBpcyB0aGF0IGl0J3MgdW5mZWFzaWJsZSB0byBmdXp6IHRoaXMgY29kZS4gV2UncmUgc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLCBgRm9jdXNTeW1ib2xzYCB0byBhbiBlbXB0eSBsaXN0LCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIGFuIGVtcHR5IGxpc3QsIGFuZCBwcm92aWRpbmcgdGhlIHJhdGlvbmFsZSBhcyBkZXNjcmliZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzA5LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTo0OC45Njk0MzQ2MTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMsIHdoaWNoIHByb3ZpZGVzIFZGSU8gcGFzc3Rocm91Z2ggc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBmc2wtbWMgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcyBvbiBMYXllcnNjYXBlIFNvQ3MuIFRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGZpcm13YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgYW1kNjQgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYywgd2hpY2ggcHJvdmlkZXMgVkZJTyBwYXNzdGhyb3VnaCBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIGZzbC1tYyAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzIG9uIExheWVyc2NhcGUgU29Dcy4gVGhpcyBkcml2ZXIgcmVsaWVzIG9uIHBoeXNpY2FsIFNvQyBoYXJkd2FyZSBhbmQgZmlybXdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSBhbWQ2NCB0YXJnZXQgYXJjaGl0ZWN0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6NDguOTY5NDU3NzgyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownbsrl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 14:02:50 +0000 UTC FinishedAt: 2026-09-04 14:05:49 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWMwMjJmY2M4OTQyMzg3N2IwNmQxOWVkOWMyN2E4ODAzNDQ3M2IyY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDQ6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiAmIzQzOzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4mIzQzO1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiYjNDM7XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuJiM0MztcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7XG4gXG4gXHRyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWMwMjJmY2M4OTQyMzg3N2IwNmQxOWVkOWMyN2E4ODAzNDQ3M2IyYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDQ6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMKaW5kZXggYjRjMzk1ODIwMWIyNS4uODVmNDc5ZGI5MzZjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYwpAQCAtNDA3LDYgJiM0Mzs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LAogCQkJJmFtcDsmYW1wOyAodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9XUklURSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqLwomIzQzOwlpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQomIzQzOwkJdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7CiYjNDM7CiAJdm1hLSZndDt2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7CiAKIAlyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLCB2bWEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGl0JiMzOTtzIHdvcnRoIG91ciB0aW1lIHRvIGZ1enouIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kOyBpdCYjMzk7cyBhIGNvbW1vbiBhbmQgd2VsbC1zdXBwb3J0ZWQgcGxhdGZvcm0gZm9yIG91ciBwdXJwb3Nlcy4KClRoZSBkaWZmIGlzIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBUaGlzIGlzIGEgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBWRklPIGZyYW1ld29yaywgZGVhbGluZyB3aXRoIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRldmljZXMuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBkZXZpY2UgZHJpdmVycyBhcmUgb2Z0ZW4gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBwb3RlbnRpYWxseSB1bnRydXN0ZWQgaGFyZHdhcmUgb3IgZW11bGF0ZWQgaGFyZHdhcmUuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBhZGRpbmcgYSBjaGVjayB3aXRoaW4gdGhlIGB2ZmlvX2ZzbF9tY19tbWFwYCBmdW5jdGlvbi4gSXQgYXBwZWFycyB0byBiZSBndWFyZGluZyBhZ2FpbnN0IG1wcm90ZWN0KCkgc2hlbmFuaWdhbnMsIGVuc3VyaW5nIHRoYXQgcmVhZC1vbmx5IHJlZ2lvbnMgbWFwcGVkIHZpYSBWRklPIGNhbiYjMzk7dCBiZSBzdWJzZXF1ZW50bHkgbWFkZSB3cml0ZWFibGUgdGhyb3VnaCBhIGNhbGwgdG8gbXByb3RlY3QuIFRoaXMgaXMgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBJdCYjMzk7cyBjbGVhcmx5IGludGVuZGVkIHRvICpwcmV2ZW50KiBhIHZ1bG5lcmFiaWxpdHksIGJ1dCBwYXRjaGVzIHRoYXQgYXR0ZW1wdCB0byBmaXggc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGNhbiB0aGVtc2VsdmVzIGludHJvZHVjZSBzdWJ0bGUgbmV3IG9uZXMuIFRoYXQgbWFrZXMgdGhpcyBwYXRjaCBhIGRlY2VudCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIHJlbGV2YW50IGBkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWdgIGluZm9ybWF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCB0ZWxsIG1lIHRoZSBidWlsZCBjb25kaXRpb25zIHRoYXQgYXBwbHkgdG8gdGhpcyBjb2RlLCB3aGljaCB3aWxsIGluZmx1ZW5jZSBob3cgSSBzZXQgdXAgYW55IGZ1enppbmcgcnVucy4gS25vd2luZyB3aGVyZSB0aGlzIGRyaXZlciBzaXRzIGluIHRoZSBicm9hZGVyIFZGSU8gZWNvc3lzdGVtIGlzIGNydWNpYWwgZm9yIGNvbnN0cnVjdGluZyBhbiBlZmZlY3RpdmUgZnV6emluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWRklPX0ZTTF9NQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX1ZGSU9fTURFVikgJiM0Mzs9IG1kZXYvXG5kcml2ZXJzL3ZmaW8vTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX1ZGSU9fRlNMX01DKSAmIzQzOz0gZnNsLW1jL1xuZHJpdmVycy92ZmlvL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19WRklPX0NEWCkgJiM0Mzs9IGNkeC9cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc9MT1tZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTMtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc6NDpjb25maWcgVkZJT19GU0xfTUNcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL01ha2VmaWxlPTM9dmZpby1mc2wtbWMteSA6PSB2ZmlvX2ZzbF9tYy5vIHZmaW9fZnNsX21jX2ludHIub1xuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IHZmaW8tZnNsLW1jLm9cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9OTc9c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMTItXHRcdGRldl93YXJuKFx1MDAyNm1jX2NvbnQtXHUwMDNlZGV2LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjExMzpcdFx0XHQgXCYjMzQ7VkZJT19GU0xfTUM6IHJlc2V0IGRldmljZSBoYXMgZmFpbGVkICglZClcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTE0LVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0xMjA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMS1cdC8qIG1hcCBvZmZzZXQgdG8gdGhlIHBoeXNpY2FsIGFkZHJlc3MgICovXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MTMyOlx0aW5mby1cdTAwM2VvZmZzZXQgPSBWRklPX0ZTTF9NQ19JTkRFWF9UT19PRkZTRVQoaW5mby1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTMzLVx0aW5mby1cdTAwM2VzaXplID0gdmRldi1cdTAwM2VyZWdpb25zW2luZm8tXHUwMDNlaW5kZXhdLnNpemU7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTIzND1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY19yZWFkKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMzgtXHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIzOTpcdHVuc2lnbmVkIGludCBpbmRleCA9IFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWCgqcHBvcyk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MjQwOlx0bG9mZl90IG9mZiA9ICpwcG9zIFx1MDAyNiBWRklPX0ZTTF9NQ19PRkZTRVRfTUFTSztcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yNDEtXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cdTAwM2VtY19kZXY7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTMxMj1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY193cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzE3LVx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTg6XHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjMxOTpcdGxvZmZfdCBvZmYgPSAqcHBvcyBcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzIwLVx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHZkZXYtXHUwMDNlbWNfZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0zNTM9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwX21taW8oc3RydWN0IHZmaW9fZnNsX21jX3JlZ2lvbiByZWdpb24sXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM2MC1cdHBnb2ZmID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAyNlxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM2MTpcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM2Mi1cdGJhc2UgPSBwZ29mZiBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVDtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Mzc4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzg1LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM4NjpcdGluZGV4ID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAzZVx1MDAzZSAoVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMzg3LVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00MjA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19idXNfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMxLVx0XHRpZiAoZGV2aWNlX3NldF9kcml2ZXJfb3ZlcnJpZGUoZGV2LCB2ZmlvX2ZzbF9tY19vcHMubmFtZSkpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDMyOlx0XHRcdGRldl93YXJuKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IFNldHRpbmcgZHJpdmVyIG92ZXJyaWRlIGZvciBkZXZpY2UgaW4gZHByYyAlcyBmYWlsZWRcXG5cJiMzNDssXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMzLVx0XHRcdFx0IGRldl9uYW1lKFx1MDAyNm1jX2NvbnQtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM0LVx0XHRlbHNlXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDM1Olx0XHRcdGRldl9pbmZvKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IFNldHRpbmcgZHJpdmVyIG92ZXJyaWRlIGZvciBkZXZpY2UgaW4gZHByYyAlc1xcblwmIzM0OyxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00MzYtXHRcdFx0XHQgZGV2X25hbWUoXHUwMDI2bWNfY29udC1cdTAwM2VkZXYpKTtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQxLVx0XHRpZiAobWNfZHJ2IFx1MDAyNlx1MDAyNiBtY19kcnYgIT0gXHUwMDI2dmZpb19mc2xfbWNfZHJpdmVyKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ0MjpcdFx0XHRkZXZfd2FybihkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBPYmplY3QgJXMgYm91bmQgdG8gZHJpdmVyICVzIHdoaWxlIERQUkMgYm91bmQgdG8gdmZpby1mc2wtbWNcXG5cJiMzNDssXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQzLVx0XHRcdFx0IGRldl9uYW1lKGRldiksIG1jX2Rydi1cdTAwM2Vkcml2ZXIubmFtZSk7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ0OT1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ2OS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NzA6XHRcdGRldl9lcnIoXHUwMDI2bWNfZGV2LVx1MDAzZWRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IEZhaWxlZCB0byBzZXR1cCBEUFJDICglZClcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDcxLVx0XHRnb3RvIG91dF9uY191bnJlZztcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDgwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfc2Nhbl9jb250YWluZXIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDg5LVx0XHRkZXZfZXJyKFx1MDAyNm1jX2Rldi1cdTAwM2VkZXYsXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDkwOlx0XHRcdFwmIzM0O1ZGSU9fRlNMX01DOiBDb250YWluZXIgc2Nhbm5pbmcgZmFpbGVkICglZClcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDkxLVx0XHRkcHJjX3JlbW92ZV9kZXZpY2VzKG1jX2RldiwgTlVMTCwgMCk7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTUzMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU0Mi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo1NDM6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDQtXHRcdGdvdG8gb3V0X3B1dF92ZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTYtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo3OiNpZm5kZWYgVkZJT19GU0xfTUNfUFJJVkFURV9IXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo4OiNkZWZpbmUgVkZJT19GU0xfTUNfUFJJVkFURV9IXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC05LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6MTA6I2RlZmluZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQgICAgNDBcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0sgKCgodTY0KSgxKSBcdTAwM2NcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKSAtIDEpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xMi1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjEzOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX1RPX0lOREVYKG9mZikgKChvZmYpIFx1MDAzZVx1MDAzZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xNC1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE1OiNkZWZpbmUgVkZJT19GU0xfTUNfSU5ERVhfVE9fT0ZGU0VUKGluZGV4KVx0XFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE2Olx0KCh1NjQpKGluZGV4KSBcdTAwM2NcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTctXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg9NDc9dm9pZCB2ZmlvX2ZzbF9tY19pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC00OC1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjQ5OiNlbmRpZiAvKiBWRklPX0ZTTF9NQ19QUklWQVRFX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODA0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYGRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ2AgZmlsZToKCioqQW5hbHl6aW5nIHRoZSBWRklPIEZTTCBNQyBLY29uZmlnIEZpbGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgVkZJTyBGU0wgTUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEZpcnN0LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIHR5cGljYWwgc3RydWN0dXJlOiBhIGBjb25maWdgIGJsb2NrIGRlZmluaW5nIHRoZSBtYWluIGZlYXR1cmUsIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9uIGZvciBlbmFibGluZyB0aGUgRlNMIE1DIChGcmVlc2NhbGUgTWVkaWEgQ29udGFpbmVyKSBzdXBwb3J0IHdpdGhpbiB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGZyYW1ld29yay4gVGhpcyBpcyBjcnVjaWFsIGZvciBleHBvc2luZyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCB0aGlzIGZpbGUgc2hvdWxkIGV4cG9zZSB0aGUgdmFyaW91cyBjb25maWd1cmFiaWxpdHkga25vYnMuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMuIEZvciBpbnN0YW5jZSwgSSBhbnRpY2lwYXRlIGEgZGVwZW5kZW5jeSBvbiB0aGUgY29yZSBWRklPIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYW5kIHByb2JhYmx5IHNwZWNpZmljIEZTTCBNQyBkcml2ZXJzIG9yIHN1YnN5c3RlbXMuIEkmIzM5O2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciBhbnkgb3B0aW9ucyByZWxhdGVkIHRvIHNwZWNpZmljIGZlYXR1cmVzIG9mIHRoZSBGU0wgTUMgaGFyZHdhcmUsIHN1Y2ggYXMgZGlmZmVyZW50IGFjY2VsZXJhdGlvbiBlbmdpbmVzIG9yIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXRzLiBBcmUgdGhlcmUgYW55IGZlYXR1cmVzIEkgY2FuIHR1bmUgdG8gdGFpbG9yIHRoZSBkZXZpY2UgYW5kIGl0cyB2aXJ0dWFsIGZ1bmN0aW9ucz8KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEFyZSB0aGVyZSByZWFzb25hYmxlIGRlZmF1bHRzIGZvciBtb3N0IGRlcGxveW1lbnRzLCBvciBpcyB0aGlzIGRyaXZlciBkZXNpZ25lZCB0byBiZSBoaWdobHkgY29uZmlndXJhYmxlPyBJZiBpdCYjMzk7cyB0aGUgbGF0dGVyLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciB1c2VyIGV4cGVyaWVuY2UgYW5kIHBvdGVudGlhbCBjb21wbGV4aXR5PyBJJiMzOTtsbCBhc3Nlc3Mgd2hldGhlciBpdCYjMzk7cyBzZXR0aW5nIGFueSBkZWZhdWx0cyB0aGF0IG1pZ2h0IG5lZWQgc3BlY2lhbCBhdHRlbnRpb24gaW4gb3VyIHVzZSBjYXNlIChvciB0aGF0IGFyZSBjbGVhcmx5IGluYXBwcm9wcmlhdGUgZm9yIGEgZ2l2ZW4gdGFyZ2V0KS4gSSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMg4oCTIGZlYXR1cmVzIHRoYXQgYmVjb21lIGF2YWlsYWJsZSBvbmx5IHdoZW4gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgb3Igb3RoZXIga2VybmVsIG9wdGlvbnMgYXJlIGVuYWJsZWQuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSByZWFkaW5nIHRoZSBoZWxwIHRleHQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBHb29kIGhlbHAgdGV4dCBpcyBpbmZvcm1hdGl2ZSwgZXhwbGFpbmluZyBub3QganVzdCAqd2hhdCogdGhlIG9wdGlvbiBkb2VzIGJ1dCAqd2h5KiBzb21lb25lIG1pZ2h0IHdhbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgaXQuIEkgd2FudCB0byBlbnN1cmUgdGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXIgYW5kIGFjY3VyYXRlLiBJcyBpdCBjb25jaXNlPyBEb2VzIGl0IHBvaW50IHRvIHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBWRklPIHNpZGUgb2YgdGhpbmdzPyBUaGlzIGlzIGFsbCBhYm91dCBhc3Nlc3NpbmcgdGhlIGNvbmZpZ3VyYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IG9mIHRoaXMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuICAgMjpcdFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXG4gICAzOlx0XG4gICA0Olx0Y29uZmlnIFZGSU9fRlNMX01DXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1wmIzM0O1xuICAgNjpcdFx0c2VsZWN0IEVWRU5URkRcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVkZJTyBRb3JJUSBEUEFBMiBmc2wtbWNcbiAgIDk6XHRcdCAgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBwYXNzdGhyb3VnaFxuICAxMDpcdFx0ICBmc2wtbWMgYnVzIGRldmljZXMgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAxMTpcdFxuICAxMjpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRlbmRtZW51XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUzMAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIEZTTF9NQ19CVVMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYEZTTF9NQ19CVVNgIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoaXMgbWVhbnMgSSYjMzk7bSBnb2luZyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkbyBhIGdsb2JhbCBzZWFyY2ggYWNyb3NzIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHRvb2xzIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzeW1ib2wuIEkgZXhwZWN0IEkmIzM5O2xsIHdhbnQgdG8gZmlsdGVyIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uIGBLY29uZmlnYCBmaWxlcyBhbmQgbWF5IG5lZWQgc29tZSBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gbWFuYWdlIHRoZSBzZWFyY2ggcHJvY2VzcyBiYXNlZCBvbiB0aGUgc3lzdGVtIGluIHdoaWNoIHRoaXMgaXMgaW1wbGVtZW50ZWQuIFRoaXMgd2lsbCBsZXQgbWUgc2VlIGl0cyBkZXBlbmRlbmNpZXMsIHdobyYjMzk7cyBlbmFibGluZyBpdCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsb2dpYyBhcm91bmQgYEZTTF9NQ19CVVNgIGlzIGNydWNpYWwgdG8gaXRzIGJlaGF2aW9yIGFuZCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9NQ19CVVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjg6Y29uZmlnIEZTTF9NQ19CVVNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTktXHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgzMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZWFkaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byB0aGUgRlNMIE1DIEtjb25maWcgRmlsZSoqCgpPa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgRnJlZXNjYWxlIChub3cgTlhQKSBNdWx0aS1Db3JlIChNQykgZHJpdmVycy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIOKAkyB0aGluZ3MgbGlrZToKCiogICAqKk9wdGlvbnMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBNQyBkcml2ZXIgZnJhbWV3b3JrLioqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB0aGUgZ2F0ZWtlZXBlciBmb3IgYWxsIHRoZSBNQy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBsaWtlIGBDT05GSUdfRlNMX01DYCBvciBgRlNMX01DX0RSSVZFUlNgLgoqICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgTUMgZGV2aWNlcyBvciBzdWItZHJpdmVycy4qKiBXZSBhcmUgaW4gdGhlIGZzbC1tYyBkaXJlY3RvcnksIHNvLCBnaXZlbiBpdHMgY29tbW9uIG9yZ2FuaXphdGlvbiwgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNQyBoYXJkd2FyZSBkZXZpY2VzIG9yIGZlYXR1cmVzLCBwZXJoYXBzIHN0cnVjdHVyZWQgaGllcmFyY2hpY2FsbHkuIFRoZXNlIHdvdWxkIGxpa2VseSBiZSBndWFyZGVkIGJ5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sIG9yIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy4gRm9yIGV4YW1wbGUsIHNwZWNpZmljIGRldmljZSB0eXBlcyAobGlrZSBFdGhlcm5ldCwgRE1BLCBldGMuKSB1c2luZyB0aGUgTUMgZnJhbWV3b3JrLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgTUMgY29tcG9uZW50cy4qKiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBvcHRpb25zIGFyZSBpbnRlci1yZWxhdGVkLiBBcmUgdGhlcmUgY2xlYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIHZhcmlvdXMgZGV2aWNlIHN1Yi1kcml2ZXJzPyBBcmUgY2VydGFpbiBvcHRpb25zIG9ubHkgYXZhaWxhYmxlIGlmIG90aGVycyBhcmUgZW5hYmxlZD8gVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgYSBzZW5zZSBvZiBob3cgbW9kdWxhciBhbmQgd2VsbC1kZXNpZ25lZCB0aGUgY29uZmlndXJhdGlvbiBpcy4KKiAgICoqRGVmYXVsdCB2YWx1ZXMgYW5kIGhlbHAgdGV4dC4qKiBJJiMzOTttIGFsc28gaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIG9wdGlvbnMgYW5kIHRoZSBleHBsYW5hdG9yeSB0ZXh0LiBEbyB0aGUgZGVmYXVsdHMgbWFrZSBzZW5zZT8gSXMgdGhlIGhlbHAgdGV4dCBjbGVhciBhbmQgaW5mb3JtYXRpdmU/IEdvb2QgS2NvbmZpZyBmaWxlcyBwcm92aWRlIGVub3VnaCBndWlkYW5jZSB0byBtYWtlIGFuIGluZm9ybWVkIGNob2ljZSB3aXRob3V0IGJlaW5nIG92ZXJ3aGVsbWluZy4KKiAgICoqQW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBrZXJuZWwgdmVyc2lvbi4qKiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFzIHRoZSBGU0wgTUMgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzIGFuZCBoYXJkd2FyZSByZXZpc2lvbnMuIEFsc28sIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjb21wYXRpYmlsaXR5IHNoaW1zIG9yIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQga2VybmVsIHZlcnNpb25zLgoKSSYjMzk7bGwgYmUgcmVhZGluZyB0aGlzIHdpdGggYW4gZXllIHRvd2FyZCBpZGVudGlmeWluZyBhbnkgYXJlYXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gY291bGQgYmUgaW1wcm92ZWQgZm9yIGNsYXJpdHksIG1haW50YWluYWJpbGl0eSwgb3IgcGVyZm9ybWFuY2UuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgZnV0dXJlIGVuaGFuY2VtZW50cyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgd29yayBvciBwcm9qZWN0cy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgRFBBQTIgZnNsLW1jIGJ1c1xuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBGU0xfTUNfQlVTXG4gICA5Olx0XHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4gIDExOlx0XHRzZWxlY3QgR0VORVJJQ19NU0lfSVJRXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG4gIDE0Olx0XHQgIGFyY2hpdGVjdHVyZS4gIFRoZSBmc2wtbWMgYnVzIGRyaXZlciBoYW5kbGVzIGRpc2NvdmVyeSBvZlxuICAxNTpcdFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXG4gIDE2Olx0XHQgIGJpbmRpbmcgb2JqZWN0cyB0byBkcml2ZXJzLlxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBGU0xfTUNfVUFQSV9TVVBQT1JUXG4gIDE5Olx0XHRib29sIFwmIzM0O01hbmFnZW1lbnQgQ29tcGxleCAoTUMpIHVzZXJzcGFjZSBzdXBwb3J0XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgUHJvdmlkZXMgdXNlcnNwYWNlIHN1cHBvcnQgZm9yIGludGVycm9nYXRpbmcsIGNyZWF0aW5nLCBkZXN0cm95aW5nIG9yXG4gIDIzOlx0XHQgIGNvbmZpZ3VyaW5nIERQQUEyIG9iamVjdHMgZXhwb3J0ZWQgYnkgdGhlIE1hbmFnZW1lbnQgQ29tcGxleC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc0MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEdlbmVzaXMgb2YgYGZzbC1tY2AgRGV2aWNlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBmYXNjaW5hdGluZyB3b3JsZCBvZiBgZnNsLW1jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRoZXNlIGRldmljZXMgYWN0dWFsbHkgKmJvcm4qPyBJcyB0aGUgYGZzbC1tY2AgYnVzIGEgZGlyZWN0IG1hbmlmZXN0YXRpb24gb2YgdGhlIFFvcklRIERQQUEyIGhhcmR3YXJlLCBhIHRhbmdpYmxlIHBoeXNpY2FsIGVudGl0eSwgb3IgY2FuIGl0IGJlIGJyb3VnaHQgdG8gbGlmZSwgZW11bGF0ZWQgaWYgeW91IHdpbGwsIHdpdGhpbiB0aGUgc3RhbmRhcmQgZnJhbWV3b3JrcyBvZiBRRU1VIG9yIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb25hbCBuYXR1cmUuCgpNeSBuZXh0IGxpbmUgb2YgaW5xdWlyeSBoYXMgdG8gZG8gd2l0aCBob3cgdGhlIHN5c3RlbSByZWNvZ25pemVzIGFuZCB0aGVuIHNldHMgdXAgZGV2aWNlcyBvbiB0aGlzIGJ1cy4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIG9mIGBmc2xfbWNfYnVzX3R5cGVgLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gdHJhY2UgaG93IGRldmljZXMgYWN0dWFsbHkgZ2V0IGNyZWF0ZWQgYW5kIG1hZGUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIHN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGlzIGJ1cyB0eXBlIHJlZ2lzdHJhdGlvbiBhbmQgZGV2aWNlIGluc3RhbnRpYXRpb24gaXMga2V5IHRvIGdhaW5pbmcgYSBzdHJvbmcgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgZGV2aWNlcyBvcGVyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfYnVzX3R5cGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjQ9QVRUUklCVVRFX0dST1VQUyhmc2xfbWNfYnVzKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI1LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI3LVx0Lm5hbWUgPSBcJiMzNDtmc2wtbWNcJiMzNDssXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMzgtfTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MzM5OkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM0MC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTQ2MT1pbnQgX19mc2xfbWNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcml2ZXIsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjYtXHRtY19kcml2ZXItXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQ2NzpcdG1jX2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2ZnNsX21jX2J1c190eXBlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjgtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03NTI9aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzg5LVx0bWNfZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBwYXJlbnRfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTA6XHRtY19kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNmZzbF9tY19idXNfdHlwZTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkxLVx0bWNfZGV2LVx1MDAzZWRldi5yZWxlYXNlID0gZnNsX21jX2RldmljZV9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTE3NT1zdGF0aWMgdm9pZCBmc2xfbWNfYnVzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4NDpcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2ZnNsX21jX25iKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4NS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyNjA9c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTI2NDpcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjUtXHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTItZXJyb3JfY2xlYW51cF9idXM6XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTM6XHRidXNfdW5yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjk0LVxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXUuYz0xODY9c3RhdGljIGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqIGNvbnN0IGlvbW11X2J1c2VzW10gPSB7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE5NC0jaWZkZWYgQ09ORklHX0ZTTF9NQ19CVVNcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxOTU6XHRcdTAwMjZmc2xfbWNfYnVzX3R5cGUsXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk2LSNlbmRpZlxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NjItXHR2ZGV2LVx1MDAzZW5iLm5vdGlmaWVyX2NhbGwgPSB2ZmlvX2ZzbF9tY19idXNfbm90aWZpZXI7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDYzOlx0cmV0ID0gYnVzX3JlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2dmRldi1cdTAwM2VuYik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDY0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDc1LW91dF9uY191bnJlZzpcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NzY6XHRidXNfdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZmc2xfbWNfYnVzX3R5cGUsIFx1MDAyNnZkZXYtXHUwMDNlbmIpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ3Ny1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ5Nz1zdGF0aWMgdm9pZCB2ZmlvX2ZzbF91bmluaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTUwNC1cdGRwcmNfY2xlYW51cChtY19kZXYpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjUwNTpcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2dmRldi1cdTAwM2VuYik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTA2LX1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oPTM1Nj1pbnQgbWNfc2VuZF9jb21tYW5kKHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLCBzdHJ1Y3QgZnNsX21jX2NvbW1hbmQgKmNtZCk7XG4tLVxuaW5jbHVkZS9saW51eC9mc2wvbWMuaC0zNTgtI2lmZGVmIENPTkZJR19GU0xfTUNfQlVTXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oOjM1OTojZGVmaW5lIGRldl9pc19mc2xfbWMoX2RldikgKChfZGV2KS1cdTAwM2VidXMgPT0gXHUwMDI2ZnNsX21jX2J1c190eXBlKVxuaW5jbHVkZS9saW51eC9mc2wvbWMuaC0zNjAtdTMyIGZzbF9tY19nZXRfbXNpX2lkKHN0cnVjdCBkZXZpY2UgKmRldik7XG4tLVxuaW5jbHVkZS9saW51eC9mc2wvbWMuaD00Mjg9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldixcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTQzMC1cbmluY2x1ZGUvbGludXgvZnNsL21jLmg6NDMxOmV4dGVybiBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgZnNsX21jX2J1c190eXBlO1xuaW5jbHVkZS9saW51eC9mc2wvbWMuaC00MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzk5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZToKCioqRmluZGluZyB0aGUgU291cmNlIG9mIGBmc2xfbWNfYnVzYCBEZXZpY2VzKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIGBmc2xfbWNfYnVzYCBkZXZpY2VzIGFyZSBiZWluZyBjcmVhdGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyYWNrIGRvd24gdGhlIHBvaW50cyBvZiBvcmlnaW4uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciB0aGVpciBpbnN0YW50aWF0aW9uLCBhbmQgdGhlIHdheSB0byBkbyB0aGF0IGlzIHRvIGxvb2sgZm9yIGhvdyB0aGlzIGJ1cyBpcyBiZWluZyB0cmlnZ2VyZWQuCgpGaXJzdCwgSSYjMzk7bGwgc2VhcmNoIGZvciBjYWxscyB0byBgZnNsX21jX2RldmljZV9hZGRgLiBUaGlzIGlzIHRoZSBtb3N0IGRpcmVjdCB3YXkgdG8gY3JlYXRlIGEgZGV2aWNlIHdpdGhpbiB0aGUgZnJhbWV3b3JrLCBzbyBpdCYjMzk7cyBhIGxpa2VseSBjYW5kaWRhdGUuIElmIEkgZmluZCBjYWxscyB0byBpdCwgSSYjMzk7bGwgaW52ZXN0aWdhdGUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZC4KCkFsdGVybmF0aXZlbHksIEkgY291bGQgdHJ5IHRvIGlkZW50aWZ5IGhvdyBgZnNsX21jX2J1c19wcm9iZWAgaXMgdHJpZ2dlcmVkLiBUaGlzIHByb2JlIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCwgc28gdW5kZXJzdGFuZGluZyB3aGVuIGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgd2lsbCBoZWxwIG1lIHRyYWNlIHRoZSBkZXZpY2UgY3JlYXRpb24gcHJvY2VzcyBmcm9tIHRoZSB0b3AgZG93bi4gQSBkZWVwIGRpdmUgaW50byB0aGUgY2FsbGluZyBjb250ZXh0cyBvZiBgZnNsX21jX2J1c19wcm9iZWAgc2hvdWxkIHJldmVhbCB0aGUgZW5hYmxpbmcgbWVjaGFuaXNtcyBvZiB0aGlzIGJ1cy4gVGhlIHVsdGltYXRlIGdvYWwgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cyB0aGF0IGxlYWQgdG8gdGhlIGJ1cyBhbmQsIGNvbnNlcXVlbnRseSwgdGhlIGRldmljZXMsIGJlaW5nIGJyb3VnaHQgb25saW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfZGV2aWNlX2FkZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xNjk9c3RhdGljIHZvaWQgZnNsX21jX29ial9kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxODM6XHRcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQob2JqX2Rlc2MsIE5VTEwsIFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTg0LVx0XHRcdFx0XHQgIFx1MDAyNmNoaWxkX2Rldik7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03Mzc9c3RhdGljIHZvaWQgZnNsX21jX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUyOmludCBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzUzLVx0XHQgICAgICBzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg3OS19XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg4MDpFWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfZGV2aWNlX2FkZCk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4MS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEwMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU3LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTU4Olx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcdTAwMjZvYmpfZGVzYywgbWNfaW8sIFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcdTAwMjZtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1OS1cdGlmIChlcnJvciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MDE9c3RydWN0IGZzbF9tY19idXMge1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxMy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNDppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjE1LVx0XHRcdFx0ICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODU5CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBmc2xfbWNfYnVzX3Byb2JlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBmc2xfbWNfYnVzX3Byb2JlYC4gUmlnaHQsIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQmIzM5O3MgZG9pbmcgd2l0aGluIHRoZSBicm9hZGVyIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBvdXQgYGZzbC1tYy1idXMuY2AgYW5kIHplcm8gaW4gb24gbGluZXMgMTAzOSB0aHJvdWdoIDExNzAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHJlbGV2YW50IGNvZGUgYmxvY2sgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmUmIzM5O3Mgb3BlcmF0aW9uLCBhbnkgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB0aGF0JiMzOTtzIGJlaW5nIHBlcmZvcm1lZCwgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgd2l0aGluIHRoZSBgZnNsLW1jLWJ1c2AgZHJpdmVyLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIHdvcmsgaGFwcGVucy4gRnJvbSB0aGVyZSBJIHdpbGwgaG9wZWZ1bGx5IGJlIGFibGUgdG8gaW50ZXJwcmV0IGFuZCBhc2NlcnRhaW4gdGhlIGZ1bmN0aW9uIGFuZCBmbG93IG9mIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjAwOlx0fTtcbjEyMDE6XHRcbjEyMDI6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBmc2xfbWNfYnVzX21hdGNoX3RhYmxlKTtcbjEyMDM6XHRcbjEyMDQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZVtdID0ge1xuMTIwNTpcdFx0e1wmIzM0O05YUDAwMDhcJiMzNDssIDAgfSxcbjEyMDY6XHRcdHsgfVxuMTIwNzpcdH07XG4xMjA4Olx0TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xuMTIwOTpcdFxuMTIxMDpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZzbF9tY19idXNfZHJpdmVyID0ge1xuMTIxMTpcdFx0LmRyaXZlciA9IHtcbjEyMTI6XHRcdFx0ICAgLm5hbWUgPSBcJiMzNDtmc2xfbWNfYnVzXCYjMzQ7LFxuMTIxMzpcdFx0XHQgICAucG0gPSBOVUxMLFxuMTIxNDpcdFx0XHQgICAub2ZfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLFxuMTIxNTpcdFx0XHQgICAuYWNwaV9tYXRjaF90YWJsZSA9IGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZSxcbjEyMTY6XHRcdFx0ICAgfSxcbjEyMTc6XHRcdC5wcm9iZSA9IGZzbF9tY19idXNfcHJvYmUsXG4xMjE4Olx0XHQucmVtb3ZlID0gZnNsX21jX2J1c19yZW1vdmUsXG4xMjE5Olx0XHQuc2h1dGRvd24gPSBmc2xfbWNfYnVzX3JlbW92ZSxcbjEyMjA6XHR9O1xuMTIyMTpcdFxuMTIyMjpcdHN0YXRpYyBpbnQgZnNsX21jX2J1c19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuMTIyMzpcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0YSlcbjEyMjQ6XHR7XG4xMjI1Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhO1xuMTIyNjpcdFx0c3RydWN0IHJlc291cmNlICpyZXM7XG4xMjI3Olx0XHR2b2lkIF9faW9tZW0gKmZzbF9tY19yZWdzO1xuMTIyODpcdFxuMTIyOTpcdFx0aWYgKGFjdGlvbiAhPSBCVVNfTk9USUZZX0FERF9ERVZJQ0UpXG4xMjMwOlx0XHRcdHJldHVybiAwO1xuMTIzMTpcdFxuMTIzMjpcdFx0aWYgKCFvZl9tYXRjaF9kZXZpY2UoZnNsX21jX2J1c19tYXRjaF90YWJsZSwgZGV2KSBcdTAwMjZcdTAwMjZcbjEyMzM6XHRcdCAgICAhYWNwaV9tYXRjaF9kZXZpY2UoZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlLCBkZXYpKVxuMTIzNDpcdFx0XHRyZXR1cm4gMDtcbjEyMzU6XHRcbjEyMzY6XHRcdHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZSh0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KSwgSU9SRVNPVVJDRV9NRU0sIDEpO1xuMTIzNzpcdFx0aWYgKCFyZXMpXG4xMjM4Olx0XHRcdHJldHVybiAwO1xuMTIzOTpcdFxuMTI0MDpcdFx0ZnNsX21jX3JlZ3MgPSBpb3JlbWFwKHJlcy1cdTAwM2VzdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpKTtcbjEyNDE6XHRcdGlmICghZnNsX21jX3JlZ3MpXG4xMjQyOlx0XHRcdHJldHVybiAwO1xuMTI0MzpcdFxuMTI0NDpcdFx0LypcbjEyNDU6XHRcdCAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBNQyBmaXJtd2FyZSBpcyBwYXVzZWQgYmVmb3JlIHRoZSBJT01NVSBzZXR1cCBmb3JcbjEyNDY6XHRcdCAqIGl0IGlzIGRvbmUgb3Igb3RoZXJ3aXNlIHRoZSBmaXJtd2FyZSB3aWxsIGNyYXNoIHJpZ2h0IGFmdGVyIHRoZSBTTU1VXG4xMjQ3Olx0XHQgKiBnZXRzIHByb2JlZCBhbmQgZW5hYmxlZC5cbjEyNDg6XHRcdCAqL1xuMTI0OTpcdFx0d3JpdGVsKHJlYWRsKGZzbF9tY19yZWdzICYjNDM7IEZTTF9NQ19HQ1IxKSB8IChHQ1IxX1AxX1NUT1AgfCBHQ1IxX1AyX1NUT1ApLFxuMTI1MDpcdFx0ICAgICAgIGZzbF9tY19yZWdzICYjNDM7IEZTTF9NQ19HQ1IxKTtcbjEyNTE6XHRcdGlvdW5tYXAoZnNsX21jX3JlZ3MpO1xuMTI1MjpcdFxuMTI1MzpcdFx0cmV0dXJuIDA7XG4xMjU0Olx0fVxuMTI1NTpcdFxuMTI1NjpcdHN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgZnNsX21jX25iID0ge1xuMTI1NzpcdFx0Lm5vdGlmaWVyX2NhbGwgPSBmc2xfbWNfYnVzX25vdGlmaWVyLFxuMTI1ODpcdH07XG4xMjU5Olx0XG4xMjYwOlx0c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxuMTI2MTpcdHtcbjEyNjI6XHRcdGludCBlcnJvcjtcbjEyNjM6XHRcbjEyNjQ6XHRcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XG4xMjY1Olx0XHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbjEyNjY6XHRcdFx0cHJfZXJyKFwmIzM0O2J1cyB0eXBlIHJlZ2lzdHJhdGlvbiBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBlcnJvcik7XG4xMjY3Olx0XHRcdGdvdG8gZXJyb3JfY2xlYW51cF9jYWNoZTtcbjEyNjg6XHRcdH1cbjEyNjk6XHRcbjEyNzA6XHRcdGVycm9yID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfZHJpdmVyKTtcbjEyNzE6XHRcdGlmIChlcnJvciBcdTAwM2MgMCkge1xuMTI3MjpcdFx0XHRwcl9lcnIoXCYjMzQ7cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkOiAlZFxcblwmIzM0OywgZXJyb3IpO1xuMTI3MzpcdFx0XHRnb3RvIGVycm9yX2NsZWFudXBfYnVzO1xuMTI3NDpcdFx0fVxuMTI3NTpcdFxuMTI3NjpcdFx0ZXJyb3IgPSBkcHJjX2RyaXZlcl9pbml0KCk7XG4xMjc3Olx0XHRpZiAoZXJyb3IgXHUwMDNjIDApXG4xMjc4Olx0XHRcdGdvdG8gZXJyb3JfY2xlYW51cF9kcml2ZXI7XG4xMjc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzkzCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBGcmVlc2NhbGUgUW9ySVEgRFBBQTIgSGFyZHdhcmUgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBgZnNsX21jX2J1c2AuIFJpZ2h0LCB0aGF0IHJpbmdzIGEgYmVsbC4gSXQmIzM5O3MgZm9yIHRoZSBGcmVlc2NhbGUgUW9ySVEgRFBBQTIsIHNwZWNpZmljYWxseSB0aGUgQVJDSF9MQVlFUlNDQVBFIChvciBOWFAgTGF5ZXJzY2FwZSBTb0MpIGhhcmR3YXJlLiBNYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgYW5kIGhvdyBpdCBpbnRlcmZhY2VzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBgdmZpb19mc2xfbWMuY2AgZmlsZS4gSXQmIzM5O3MgdGltZSB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW1wbGVtZW50ZWQgdGhlcmUgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgd2l0aCBldmVyeXRoaW5nLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhlIHJvbGUgb2YgYHZmaW9fZnNsX21jYCBpcyBpbiB0aGUgZ3JlYXRlciBhcmNoaXRlY3R1cmUsIGFuZCBob3cgaXQmIzM5O3MgcHJvdmlkaW5nIHRoZSBhYnN0cmFjdGlvbiBsYXllci4gSSYjMzk7bSBob3BpbmcgSSBjYW4gZWFzaWx5IGlkZW50aWZ5IHRoZSBrZXkgY29udHJvbCBwb2ludHMsIGRhdGEgc3RydWN0dXJlcywgYW5kIHRoZSBvdmVyYWxsIGRyaXZlciYjMzk7cyBmdW5jdGlvbiB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTEwOlx0XHRzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2ID1cbiA1MTE6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XG4gNTEyOlx0XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiA1MTM6XHRcdGludCByZXQ7XG4gNTE0Olx0XG4gNTE1Olx0XHR2ZGV2LVx1MDAzZW1jX2RldiA9IG1jX2RldjtcbiA1MTY6XHRcdG11dGV4X2luaXQoXHUwMDI2dmRldi1cdTAwM2VpZ2F0ZSk7XG4gNTE3Olx0XG4gNTE4Olx0XHRpZiAoaXNfZnNsX21jX2J1c19kcHJjKG1jX2RldikpXG4gNTE5Olx0XHRcdHJldCA9IHZmaW9fYXNzaWduX2RldmljZV9zZXQoY29yZV92ZGV2LCBcdTAwMjZtY19kZXYtXHUwMDNlZGV2KTtcbiA1MjA6XHRcdGVsc2VcbiA1MjE6XHRcdFx0cmV0ID0gdmZpb19hc3NpZ25fZGV2aWNlX3NldChjb3JlX3ZkZXYsIG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbiA1MjI6XHRcbiA1MjM6XHRcdGlmIChyZXQpXG4gNTI0Olx0XHRcdHJldHVybiByZXQ7XG4gNTI1Olx0XG4gNTI2Olx0XHQvKiBkZXZpY2Vfc2V0IGlzIHJlbGVhc2VkIGJ5IHZmaW8gY29yZSBpZiBAaW5pdCBmYWlscyAqL1xuIDUyNzpcdFx0cmV0dXJuIHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHZkZXYpO1xuIDUyODpcdH1cbiA1Mjk6XHRcbiA1MzA6XHRzdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4gNTMxOlx0e1xuIDUzMjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldjtcbiA1MzM6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1jX2Rldi1cdTAwM2VkZXY7XG4gNTM0Olx0XHRpbnQgcmV0O1xuIDUzNTpcdFxuIDUzNjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fZnNsX21jX2RldmljZSwgdmRldiwgZGV2LFxuIDUzNzpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fZnNsX21jX29wcyk7XG4gNTM4Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDUzOTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiA1NDA6XHRcbiA1NDE6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gNTQyOlx0XHRpZiAocmV0KSB7XG4gNTQzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxuXCYjMzQ7KTtcbiA1NDQ6XHRcdFx0Z290byBvdXRfcHV0X3ZkZXY7XG4gNTQ1Olx0XHR9XG4gNTQ2Olx0XG4gNTQ3Olx0XHRyZXQgPSB2ZmlvX2ZzbF9tY19zY2FuX2NvbnRhaW5lcihtY19kZXYpO1xuIDU0ODpcdFx0aWYgKHJldClcbiA1NDk6XHRcdFx0Z290byBvdXRfZ3JvdXBfZGV2O1xuIDU1MDpcdFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgdmRldik7XG4gNTUxOlx0XHRyZXR1cm4gMDtcbiA1NTI6XHRcbiA1NTM6XHRvdXRfZ3JvdXBfZGV2OlxuIDU1NDpcdFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NTpcdG91dF9wdXRfdmRldjpcbiA1NTY6XHRcdHZmaW9fcHV0X2RldmljZShcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NzpcdFx0cmV0dXJuIHJldDtcbiA1NTg6XHR9XG4gNTU5Olx0XG4gNTYwOlx0c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gNTYxOlx0e1xuIDU2MjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9XG4gNTYzOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYpO1xuIDU2NDpcdFxuIDU2NTpcdFx0dmZpb19mc2xfdW5pbml0X2RldmljZSh2ZGV2KTtcbiA1NjY6XHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2dmRldi1cdTAwM2VpZ2F0ZSk7XG4gNTY3Olx0fVxuIDU2ODpcdFxuIDU2OTpcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDcwMwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDcyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IGZzbF9tY19idXMgb24gYW1kNjQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYGZzbF9tY19idXNgLCB3aGljaCBpcyBhIGhhcmR3YXJlIGJ1cyBzcGVjaWZpYyB0byBOWFAvRnJlZXNjYWxlIExheWVyc2NhcGUgU29Dcywgc3BlY2lmaWNhbGx5IHRoZSBRb3JJUSBEUEFBMi4gVGhlIHF1ZXN0aW9uIGlzLCBzaG91bGQgd2UgYm90aGVyIGZ1enppbmcgY29kZSByZWxhdGVkIHRvIHRoaXMgb24gYW1kNjQsIGNvbnNpZGVyaW5nIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZCBpbiB0aGUgcHJvbXB0PwoKVGhlIHByb21wdCBzYXlzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgaW50byBjYXRlZ29yaWVzIGxpa2Ugc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzICpwcmVjaXNlbHkqIHRoZSBjYXNlIGhlcmUuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IFFvcklRIERQQUEyIGlzIEFSTTY0IG9yIFBvd2VyUEMgYmFzZWQuIFdlJiMzOTtyZSBvbiBhbWQ2NC4gQ2FuIGBDT05GSUdfRlNMX01DX0JVU2Agb3IgZXZlbiBgQ09ORklHX1ZGSU9fRlNMX01DYCAqcG9zc2libHkqIGJlIHJlbGV2YW50IG9uIGFtZDY0LCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZXJlJiMzOTtzIGxpa2VseSBubyBEUEFBMiBoYXJkd2FyZSBwcmVzZW50PwoKTGV0JiMzOTtzIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBgZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdgLiBBaGEhIEl0IGNvbmZpcm1zIG15IHN1c3BpY2lvbnM6IHRoZSBgRlNMX01DX0JVU2AgZHJpdmVyIHJlcXVpcmVzIGBPRmAgKERldmljZSBUcmVlKSwgd2hpY2ggaXMgdHlwaWNhbCBmb3IgZW1iZWRkZWQgc3lzdGVtcywgKmFuZCogZWl0aGVyIGBBUkNIX0xBWUVSU0NBUEVgIChhIExheWVyc2NhcGUtc3BlY2lmaWMgcGxhdGZvcm0pIG9yLCB2aWEgYENPTVBJTEVfVEVTVGAsIHBvdGVudGlhbGx5IG90aGVyIGFyY2hpdGVjdHVyZXMgbGlrZSBBUk0sIEFSTTY0LCBYODZfTE9DQUxfQVBJQywgb3IgUFBDLiBIb3dldmVyLCB0aGUgY3JpdGljYWwgcG9pbnQgaXMgdGhpczogZXZlbiBpZiB3ZSBzb21laG93IGhhdmUgYENPTVBJTEVfVEVTVGAgZW5hYmxlZCwgaXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IFFFTVUsIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdlJiMzOTtyZSBsaWtlbHkgdXNpbmcsIGlzIGVtdWxhdGluZyBhbiBmc2wtbWMgZGV2aWNlPyBBYnNvbHV0ZWx5IG5vdC4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgdGhlIFFvcklRIERQQUEyIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgb3IgdGhlIHZhcmlvdXMgZGV2aWNlcyB0aGF0IHdvdWxkIGxpdmUgb24gaXQgKERQUkMsIERQTUNQLCBldGMuKS4KCkZ1cnRoZXJtb3JlLCBRb3JJUSBEUEFBMiBpcyBleHBsaWNpdGx5IGFuIE5YUCBMYXllcnNjYXBlIEFSTTY0IC8gUG93ZXJQQyBTb0Mtc3BlY2lmaWMgYnVzIGhhcmR3YXJlLiBUaGUgcGF0aCB0byBgdmZpb19mc2xfbWNfbW1hcGAgcmVxdWlyZXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gYSBgL2Rldi92ZmlvLypgIGRldmljZSBub2RlLiBUaGF0IG5vZGUgbXVzdCByZXByZXNlbnQgYW4gYGZzbF9tY19kZXZpY2VgIGJvdW5kIHRvIGB2ZmlvLWZzbC1tY2AuIEluIHR1cm4sIGZvciBgdmZpby1mc2wtbWNgIHRvIHByb2JlIGFuZCByZWdpc3RlciBhIHZmaW8gZGV2aWNlLCBhbiBgZnNsX21jX2RldmljZWAgKm11c3QqIGV4aXN0IG9uIHRoZSBgZnNsX21jX2J1c2AuIEFuZCBmb3IgdGhlIGBmc2xfbWNfYnVzYCB0byBjcmVhdGUgYW55IGRldmljZXMsIGl0IG5lZWRzIHRvIHByb2JlIHRoZSBgZnNsX21jX2J1c19kcml2ZXJgIHBsYXRmb3JtIGRldmljZSB2aWEgYW4gT0YvQUNQSSBub2RlIChsaWtlIHRoZSBOWFAwMDA4IG5vZGUpLCBhbmQgdWx0aW1hdGVseSBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwaHlzaWNhbCBNQyAoTWFuYWdlbWVudCBDb21wbGV4KSBmaXJtd2FyZS4gVGhpcyBjb21tdW5pY2F0aW9uIGhhcHBlbnMgdmlhIE1NSU8gcmVnaXN0ZXJzLCB3aGVyZSBpdCBzZW5kcyBNQyBjb21tYW5kcyAodmlhIGBtY19zZW5kX2NvbW1hbmRgKSB0byBkaXNjb3ZlciBEUFJDIGNvbnRhaW5lcnMuIEluIGEgbnV0c2hlbGwsIHdpdGhvdXQgdGhlICpwaHlzaWNhbCogTUMgZmlybXdhcmUsIGhhcmR3YXJlIEFTSUMsICpvciogYSBRRU1VIGVtdWxhdGlvbiBvZiBEUEFBMiBNQywgbm8gZGV2aWNlcyBjYW4gZXZlciBiZSBlbnVtZXJhdGVkIG9yIGFkZGVkIHRvIHRoZSBmc2wtbWMgYnVzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyBxdWlja2x5IGdyZXAgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIHNvbWV0aGluZyBsaWtlIGBmc2xfbWNfZGV2aWNlX2FkZGAgdG8gbWFrZSBkb3VibHkgY2VydGFpbiB0aGVyZSYjMzk7cyBub3RoaW5nIHNuZWFreSBnb2luZyBvbi4KCioqQ29uY2x1c2lvbjoqKiBJdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgb24gYW1kNjQuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMjUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTIwPXN0cnVjdCBmc2xfbWNfY2hpbGRfb2JqcyB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjQtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyNTpzdGF0aWMgYm9vbCBmc2xfbWNfZGV2aWNlX21hdGNoKGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNi1cdFx0XHRcdGNvbnN0IHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTMyPXN0YXRpYyBib29sIGZzbF9tY19vYmpfZGVzY19pc19hbGxvY2F0YWJsZShzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmopXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNDEtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo0MjpzdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9yZW1vdmVfaWZfbm90X2luX21jKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQzLXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy00NS1cdHN0cnVjdCBmc2xfbWNfY2hpbGRfb2JqcyAqb2JqcztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjQ2Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ3LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTE6XHRtY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01Mi1cdG9ianMgPSBkYXRhO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU3LVx0XHRpZiAoc3RybGVuKG9ial9kZXNjLVx1MDAzZXR5cGUpICE9IDAgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1ODpcdFx0ICAgIGZzbF9tY19kZXZpY2VfbWF0Y2gobWNfZGV2LCBvYmpfZGVzYykpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01OS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02Mi1cdGlmIChpID09IG9ianMtXHUwMDNlY2hpbGRfY291bnQpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo2MzpcdFx0ZnNsX21jX2RldmljZV9yZW1vdmUobWNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY0LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY3LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6Njg6c3RhdGljIGludCBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY5LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03Mi1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjczOlx0ZnNsX21jX2RldmljZV9yZW1vdmUodG9fZnNsX21jX2RldmljZShkZXYpKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc0LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODgtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4OTp2b2lkIGRwcmNfcmVtb3ZlX2RldmljZXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy05MC1cdFx0XHQgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2NfYXJyYXksXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTAyLVx0XHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoXHUwMDI2bWNfYnVzX2Rldi1cdTAwM2VkZXYsIFx1MDAyNm9ianMsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMDM6XHRcdFx0XHQgICAgICBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlX2lmX25vdF9pbl9tYyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMDQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEwOS1cdFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2LCBOVUxMLFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTEwOlx0XHRcdFx0ICAgICAgX19mc2xfbWNfZGV2aWNlX3JlbW92ZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMTEtXHR9XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTEzPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfcmVtb3ZlX2RldmljZXMpO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTE1OnN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTExNi17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMTctXHRjb25zdCBzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyA9IGRhdGE7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMTg6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE5LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTIwOlx0cmV0dXJuIGZzbF9tY19kZXZpY2VfbWF0Y2gobWNfZGV2LCBvYmpfZGVzYyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMjEtfVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTIyLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTIzOnN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEyNDpcdFx0XHRcdFx0ICAgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMjUte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEyOC1cdGRldiA9IGRldmljZV9maW5kX2NoaWxkKFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2LCBvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEyOTpcdFx0XHRcdF9fZnNsX21jX2RldmljZV9tYXRjaCk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzAtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMzE6XHRyZXR1cm4gZGV2ID8gdG9fZnNsX21jX2RldmljZShkZXYpIDogTlVMTDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzMi19XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTQ0LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQ1OnN0YXRpYyB2b2lkIGNoZWNrX3BsdWdnZWRfc3RhdGVfY2hhbmdlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDYtXHRcdFx0XHQgICAgICAgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTY4LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTY5OnN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3MC1cdFx0XHRcdCAgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTcyLVx0aW50IGVycm9yO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTczOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKmNoaWxkX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3NC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzctXHQgKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE3ODpcdGNoaWxkX2RldiA9IGZzbF9tY19kZXZpY2VfbG9va3VwKG9ial9kZXNjLCBtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3OS1cdGlmIChjaGlsZF9kZXYpIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xODItXHR9IGVsc2Uge1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlx0XHRlcnJvciA9IGZzbF9tY19kZXZpY2VfYWRkKG9ial9kZXNjLCBOVUxMLCBcdTAwMjZtY19idXNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4NC1cdFx0XHRcdFx0ICBcdTAwMjZjaGlsZF9kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIwMS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjIwMjpzdGF0aWMgdm9pZCBkcHJjX2FkZF9uZXdfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIwMy1cdFx0XHRcdCBzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzY19hcnJheSxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNDQtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyNDU6aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjQ2LVx0XHQgICAgICBib29sIGFsbG9jX2ludGVycnVwdHMpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzYzLSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MzY0OmludCBkcHJjX3NjYW5fY29udGFpbmVyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzY1LVx0XHRcdGJvb2wgYWxsb2NfaW50ZXJydXB0cylcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0zODk9c3RhdGljIGlycXJldHVybl90IGRwcmNfaXJxMF9oYW5kbGVyX3RocmVhZChpbnQgaXJxX251bSwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM5My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGFyZztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjM5NDpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zOTUtXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzID0gdG9fZnNsX21jX2J1cyhtY19kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ1Ni0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjQ1NzppbnQgZGlzYWJsZV9kcHJjX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNDU4LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDAtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MDE6aW50IGdldF9kcHJjX2lycV9zdGF0ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTAyLXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MDg6c3RhdGljIGludCByZWdpc3Rlcl9kcHJjX2lycV9oYW5kbGVyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDkte1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTEwLVx0aW50IGVycm9yO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTExOlx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXHUwMDNlaXJxc1swXTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUxMi1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MzMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MzQ6aW50IGVuYWJsZV9kcHJjX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTM1LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01NzEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1NzI6c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTczLXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo2MDg6aW50IGRwcmNfc2V0dXAoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTYwOS17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NzExPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfc2V0dXApO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcyMi0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjcyMzpzdGF0aWMgaW50IGRwcmNfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcyNC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzQ4LXNjYW5fY2xlYW51cDpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc0OTpcdGRldmljZV9mb3JfZWFjaF9jaGlsZChcdTAwMjZtY19kZXYtXHUwMDNlZGV2LCBOVUxMLCBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc1MC1kcHJjX2NsZWFudXA6XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzU3LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzU4OnN0YXRpYyB2b2lkIGRwcmNfdGVhcmRvd25faXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NTkte1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzYwOlx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXHUwMDNlaXJxc1swXTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc2MS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3Nzg6aW50IGRwcmNfY2xlYW51cChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzc5LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz04MTU9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19jbGVhbnVwKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjYtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4Mjc6c3RhdGljIHZvaWQgZHByY19yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgyOC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODM4LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODM5Olx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFx1MDAyNm1jX2Rldi1cdTAwM2VkZXYsIE5VTEwsIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODQwLVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0NS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjg0NjpzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2VfaWQgbWF0Y2hfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0Ny1cdHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxNTpzdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE2LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX2FkZF9kZXZpY2Uoc3RydWN0IGZzbF9tY19idXNcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMzLVx0XHRcdFx0XHRcdFx0XHRwb29sX3R5cGUsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM0Olx0XHRcdFx0XHRcdFx0c3RydWN0IGZzbF9tY19kZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzUtXHRcdFx0XHRcdFx0XHRcdCptY19kZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zOC1cdHN0cnVjdCBmc2xfbWNfcmVzb3VyY2UgKnJlc291cmNlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozOTpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2ID0gXHUwMDI2bWNfYnVzLVx1MDAzZW1jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDAtXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTYtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk3OnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGZzbF9tY19kZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTgtXHRcdFx0XHRcdFx0XHRcdCAgICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk5LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTAwOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEwMS1cdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXM7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xMDUtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjEwNjpcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTA3LVx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyhtY19idXNfZGV2KTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTE4MT1pbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9hbGxvY2F0ZShzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTg2LVx0c3RydWN0IGZzbF9tY19yZXNvdXJjZSAqcmVzb3VyY2U7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjE4NzpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2ID0gXHUwMDI2bWNfYnVzLVx1MDAzZW1jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTg4LVx0aW50IGVycm9yID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzMtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3NDppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19vYmplY3RfYWxsb2NhdGUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjc1LVx0XHRcdFx0XHRlbnVtIGZzbF9tY19wb29sX3R5cGUgcG9vbF90eXBlLFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNzY6XHRcdFx0XHRcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICoqbmV3X21jX2FkZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI3Ny17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3ODpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzktXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyODA6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYWRldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjgxLVx0aW50IGVycm9yID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI5My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6Mjk0Olx0bWNfYnVzX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yOTUtXHRtY19idXMgPSB0b19mc2xfbWNfYnVzKG1jX2J1c19kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzIyPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfYWxsb2NhdGUpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozMjk6dm9pZCBmc2xfbWNfb2JqZWN0X2ZyZWUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2FkZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMzMC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zNDM9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX29iamVjdF9mcmVlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1NC0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzU1OmludCBmc2xfbWNfcG9wdWxhdGVfaXJxX3Bvb2woc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1Ni1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBpcnFfY291bnQpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTgtXHR1bnNpZ25lZCBpbnQgaTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzU5Olx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnFfcmVzb3VyY2VzO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozNjA6XHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKm1jX2Rldl9pcnE7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM2MS1cdGludCBlcnJvcjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQxMT1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcG9wdWxhdGVfaXJxX3Bvb2wpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE2LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0MTc6dm9pZCBmc2xfbWNfY2xlYW51cF9pcnFfcG9vbChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE4LXtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfY2xlYW51cF9pcnFfcG9vbCk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NDItICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ0MzppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19hbGxvY2F0ZV9pcnFzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0NC17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NDgtXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0NDk6XHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKippcnFzID0gTlVMTDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDUwLVx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ2Mi1cdGVsc2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDYzOlx0XHRtY19idXMgPSB0b19mc2xfbWNfYnVzKHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVx1MDAzZWRldi5wYXJlbnQpKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDY0LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTA2PUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19hbGxvY2F0ZV9pcnFzKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTExOnZvaWQgZnNsX21jX2ZyZWVfaXJxcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MTIte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTE1LVx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTE2Olx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICoqaXJxcyA9IG1jX2Rldi1cdTAwM2VpcnFzO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MTctXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MjUtXHRlbHNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjUyNjpcdFx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyh0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUyNy1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfZnJlZV9pcnFzKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTM5LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NDA6dm9pZCBmc2xfbWNfaW5pdF9hbGxfcmVzb3VyY2VfcG9vbHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU0MS17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjU2MjpzdGF0aWMgaW50IGZzbF9tY19hbGxvY2F0b3JfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTYzLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTY0LVx0ZW51bSBmc2xfbWNfcG9vbF90eXBlIHBvb2xfdHlwZTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTY1Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU2Ni1cdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXM7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NzEtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjU3MjpcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTczLVx0aWYgKCFkZXZfaXNfZnNsX21jKFx1MDAyNm1jX2J1c19kZXYtXHUwMDNlZGV2KSlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU5My0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTk0OnN0YXRpYyB2b2lkIGZzbF9tY19hbGxvY2F0b3JfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU5NS17XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy02MDctXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwODpzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2VfaWQgbWF0Y2hfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNjA5LVx0e1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NDI9c3RydWN0IGZzbF9tYyB7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQzOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfYnVzX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNDQtXHR1OCBudW1fdHJhbnNsYXRpb25fcmFuZ2VzO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9OTA9c3RhdGljIGludCBmc2xfbWNfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTEte1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MjpcdGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lkICppZDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTM6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05NC1cdGNvbnN0IHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcnYgPSB0b19mc2xfbWNfZHJpdmVyKGRydik7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3VldmVudChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQwLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQxOlx0Y29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQyLVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTUxPXN0YXRpYyBpbnQgZnNsX21jX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE1My1cdHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcnYgPSB0b19mc2xfbWNfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxNTQ6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNTUtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xNjI9c3RhdGljIHZvaWQgZnNsX21jX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNjQtXHRzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJ2ID0gdG9fZnNsX21jX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTY1Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTY2LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTcxPXN0YXRpYyB2b2lkIGZzbF9tY19zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNzMtXHRzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJ2ID0gdG9fZnNsX21jX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTc0Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTc1LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTgwPXN0YXRpYyBpbnQgZnNsX21jX2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTgzLVx0c3RydWN0IGRldmljZSAqZG1hX2RldiA9IGRldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTg0Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTg1LVx0dTMyIGlucHV0X2lkID0gbWNfZGV2LVx1MDAzZWljaWQ7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE2LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjE3Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE4LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MjMxPXN0YXRpYyBpbnQgc2Nhbl9mc2xfbWNfYnVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjMyLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjMzOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMzQtXHRzdHJ1Y3QgZnNsX21jX2J1cyAqcm9vdF9tY19idXM7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMzgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjIzOTpcdHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNDAtXHRyb290X21jX2J1cyA9IHRvX2ZzbF9tY19idXMocm9vdF9tY19kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MjY0PXN0YXRpYyBpbnQgZnNsX21jX2J1c19zZXRfYXV0b3Jlc2NhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI2NS17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI2NjpcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICpyb290X21jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjY3LVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNzItXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI3MzpcdHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNzQtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yODc9c3RhdGljIGludCBmc2xfbWNfYnVzX2dldF9hdXRvcmVzY2FuKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjg4LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjg5Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yOTAtXHRjaGFyICpidWYgPSBkYXRhO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjk0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTU6XHRyb290X21jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjk2LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NTg0PXN0YXRpYyBpbnQgZ2V0X2RwcmNfaWNpZChzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTU5Ni1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NTk3OnN0YXRpYyBpbnQgdHJhbnNsYXRlX21jX2FkZHIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTk4LVx0XHRcdCAgICAgZW51bSBkcHJjX3JlZ2lvbl90eXBlIG1jX3JlZ2lvbl90eXBlLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNjMxLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo2MzI6c3RhdGljIGludCBmc2xfbWNfZGV2aWNlX2dldF9tbWlvX3JlZ2lvbnMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NjMzOlx0XHRcdFx0XHQgIHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy02MzQte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzI3PWJvb2wgZnNsX21jX2lzX3Jvb3RfZHByYyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MzYtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjczNzpzdGF0aWMgdm9pZCBmc2xfbWNfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03Mzgte1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3Mzk6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDAtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1MjppbnQgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1My1cdFx0ICAgICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1NC1cdFx0ICAgICAgc3RydWN0IGRldmljZSAqcGFyZW50X2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzU1Olx0XHQgICAgICBzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19kZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1Ni17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1Ny1cdGludCBlcnJvcjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzU4Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IE5VTEw7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1OS1cdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXMgPSBOVUxMO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3NjA6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqcGFyZW50X21jX2RldjtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzYxLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NjItXHRpZiAoZGV2X2lzX2ZzbF9tYyhwYXJlbnRfZGV2KSlcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzYzOlx0XHRwYXJlbnRfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShwYXJlbnRfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzY0LVx0ZWxzZVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzc4LVx0XHQvKlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3Nzk6XHRcdCAqIEFsbG9jYXRlIGEgcmVndWxhciBmc2xfbWNfZGV2aWNlIG9iamVjdDpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzgwLVx0XHQgKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5MC1cdG1jX2Rldi1cdTAwM2VkZXYuYnVzID0gXHUwMDI2ZnNsX21jX2J1c190eXBlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTE6XHRtY19kZXYtXHUwMDNlZGV2LnJlbGVhc2UgPSBmc2xfbWNfZGV2aWNlX3JlbGVhc2U7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5Mi1cdG1jX2Rldi1cdTAwM2VkZXYudHlwZSA9IGZzbF9tY19nZXRfZGV2aWNlX3R5cGUob2JqX2Rlc2MtXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NTItXHRpZiAocGFyZW50X21jX2RldiBcdTAwMjZcdTAwMjYgb2JqX2Rlc2MtXHUwMDNlcmVnaW9uX2NvdW50ICE9IDApIHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODUzOlx0XHRlcnJvciA9IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhtY19kZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg1NC1cdFx0XHRcdFx0XHQgICAgICAgcGFyZW50X21jX2Rldik7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4ODA6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2RldmljZV9hZGQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODEtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4NC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ni0gKiBMaW51eFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4OTA6dm9pZCBmc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04OTEte1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODk3LX1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODk4OkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODk5LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MDA6c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTAxLVx0XHRcdFx0XHQgIHUxNiBpZl9pZClcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTAyLXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTAzOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsICplbmRwb2ludDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTA0LVx0c3RydWN0IGZzbF9tY19vYmpfZGVzYyBlbmRwb2ludF9kZXNjID0ge3sgMCB9fTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkwOS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTEwOlx0bWNfYnVzX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MTEtXHRzdHJjcHkoZW5kcG9pbnQxLnR5cGUsIG1jX2Rldi1cdTAwM2VvYmpfZGVzYy50eXBlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkyOS1cdGVuZHBvaW50X2Rlc2MuaWQgPSBlbmRwb2ludDIuaWQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzMDpcdGVuZHBvaW50ID0gZnNsX21jX2RldmljZV9sb29rdXAoXHUwMDI2ZW5kcG9pbnRfZGVzYywgbWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzMS1cdGlmIChlbmRwb2ludClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTk0Ny1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTQ4Olx0ZW5kcG9pbnQgPSBmc2xfbWNfZGV2aWNlX2xvb2t1cChcdTAwMjZlbmRwb2ludF9kZXNjLCBtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTQ5LVx0Lypcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEwMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDQzLVx0c3RydWN0IGZzbF9tYyAqbWM7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwNDQ6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IE5VTEw7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwNDUtXHRzdHJ1Y3QgZnNsX21jX2lvICptY19pbyA9IE5VTEw7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU3LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTU4Olx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcdTAwMjZvYmpfZGVzYywgbWNfaW8sIFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcdTAwMjZtY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1OS1cdGlmIChlcnJvciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTExNzU9c3RhdGljIHZvaWQgZnNsX21jX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODAtXHRtY19pbyA9IG1jLVx1MDAzZXJvb3RfbWNfYnVzX2Rldi1cdTAwM2VtY19pbztcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4MTpcdGZzbF9tY19kZXZpY2VfcmVtb3ZlKG1jLVx1MDAzZXJvb3RfbWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODItXHRmc2xfZGVzdHJveV9tY19pbyhtY19pbyk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYz0xOD1zdGF0aWMgdm9pZCBmc2xfbWNfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xOS17XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjIwOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1zaV9kZXNjLVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTIxLVx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cyA9IHRvX2ZzbF9tY19idXMobWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjIyOlx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICptY19kZXZfaXJxID0gXHUwMDI2bWNfYnVzLVx1MDAzZWlycV9yZXNvdXJjZXNbbXNpX2Rlc2MtXHUwMDNlbXNpX2luZGV4XTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MjM6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqb3duZXJfbWNfZGV2ID0gbWNfZGV2X2lycS1cdTAwM2VtY19kZXY7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTI0LVx0c3RydWN0IGRwcmNfaXJxX2NmZyBpcnFfY2ZnO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM9NzY9c3RydWN0IGlycV9kb21haW4gKmZzbF9tY19nZXRfbXNpX3BhcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTc3LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6Nzg6XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy03OS1cdHN0cnVjdCBkZXZpY2UgKnJvb3RfZHByY19kZXY7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYz0xMDc9dTMyIGZzbF9tY19nZXRfbXNpX2lkKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTA4LXtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MTA5Olx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTEwLVx0c3RydWN0IGRldmljZSAqcm9vdF9kcHJjX2Rldjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MDE9c3RydWN0IGZzbF9tY19idXMge1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjAyOlx0c3RydWN0IGZzbF9tY19kZXZpY2UgbWNfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjAzLVx0c3RydWN0IGZzbF9tY19yZXNvdXJjZV9wb29sIHJlc291cmNlX3Bvb2xzW0ZTTF9NQ19OVU1fUE9PTF9UWVBFU107XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MDQ6XHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKmlycV9yZXNvdXJjZXM7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MDUtXHRzdHJ1Y3QgbXV0ZXggc2Nhbl9tdXRleDsgICAgLyogc2VyaWFsaXplcyBidXMgc2Nhbm5pbmcgKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNS1cdFx0XHRcdCAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjE2LVx0XHRcdFx0ICAgc3RydWN0IGRldmljZSAqcGFyZW50X2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNzpcdFx0XHRcdCAgIHN0cnVjdCBmc2xfbWNfZGV2aWNlICoqbmV3X21jX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTk6dm9pZCBmc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MjM9dm9pZCBkcHJjX2RyaXZlcl9leGl0KHZvaWQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjI0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjI1OmludCBkcHJjX3NjYW5fb2JqZWN0cyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyNi1cdFx0ICAgICAgYm9vbCBhbGxvY19pbnRlcnJ1cHRzKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02Mjg9aW50IF9faW5pdCBmc2xfbWNfYWxsb2NhdG9yX2RyaXZlcl9pbml0KHZvaWQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjI5LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjMwOnZvaWQgZnNsX21jX2luaXRfYWxsX3Jlc291cmNlX3Bvb2xzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYzMS1cbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3MDkKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogNjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IHZmaW9fZnNsX21jIGlzIFVuZnV6emFibGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYGZzbC1tY2AgZHJpdmVycywgc3BlY2lmaWNhbGx5IGB2ZmlvX2ZzbF9tYy5jYC4gVGhpcyBjb2RlIGlzIGludGltYXRlbHkgdGllZCB0byBOWFAgTGF5ZXJzY2FwZSBTb0NzIGxpa2UgdGhlIExTMTA4OEEsIExTMjA4MEEsIGFuZCBzaW1pbGFyLCBkZWFsaW5nIHdpdGggdGhlaXIgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4LiBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBBbHJlYWR5LCBJJiMzOTttIHNlZWluZyBhIHByb2JsZW0uIFRoZXNlIGRldmljZXMsIHRoZSBmc2wtbWMgaGFyZHdhcmUgYW5kIHRoZSBEUEFBMiwgYXJlICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gQW5kIHdlIGhhdmUgYSBndWlkZWxpbmUgdGhhdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IGNvZGUgcmVsaWFudCBvbiBoYXJkd2FyZSB1bmF2YWlsYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwLCBpcyBub3Qgc29tZXRoaW5nIHRvIGJlIGZ1enplZC4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcuCgpUaGUgZ3VpZGVsaW5lcyBhcmUgcHJldHR5IGNsZWFyOiAmIzM0O1JlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlJiMzNDsuIElmIGl0IGNhbiYjMzk7dCBydW4sIGl0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLiBBbHNvLCB3ZSBoYXZlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDssIHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBzcGVjaWFsaXplZCBkcml2ZXJzLiBUaG9zZSBraW5kcyBvZiB0aGluZ3MgYXJlbiYjMzk7dCBzb21ldGhpbmcgd2UgY2FuIHJlbGlhYmx5IHRlc3Qgb3IgY292ZXIgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGlzIGZhbGxzIHJpZ2h0IGludG8gdGhhdCBjYXRlZ29yeS4KClNvLCBgdmZpb19mc2xfbWMuY2AgaXMgb2ZmIHRoZSB0YWJsZS4gVGhlIGRyaXZlciwgYHZmaW9fZnNsX21jX2RyaXZlcmAsIHJlZ2lzdGVycyBpdHNlbGYgb24gdGhlIGBmc2xfbWNfYnVzX3R5cGVgLiAgVGhhdCBidXMgaXMgb25seSBwb3B1bGF0ZWQgdGhyb3VnaCBBQ1BJIGFuZCBkZXZpY2Ugbm9kZXMgdGFsa2luZyB0byBNQyBmaXJtd2FyZSByZWdpc3RlcnMsIHNwZWNpZmljYWxseSBgTlhQMDAwOGAgQUNQSSBvciBgZnNsLHFvcmlxLW1jYCBPRiBkZXZpY2Ugbm9kZXMuIFRoZXJlJiMzOTtzIG5vIHZpcnR1YWwgb3Igc29mdHdhcmUtZW11bGF0ZWQgZXF1aXZhbGVudC4gSXQmIzM5O3MgYWxsIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBUaGVyZWZvcmUsIGl0JiMzOTtzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9mIGFtZDY0LiBJdCBzaW1wbHkgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwcm9iZWQgb3IgZXhlcmNpc2VkIGluIGEgc3RhbmRhcmQgUUVNVSBWTS4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgaXQmIzM5O3MgdW5mZWFzaWJsZSB0byBmdXp6IHRoaXMgY29kZS4gV2UmIzM5O3JlIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCwgYEZvY3VzU3ltYm9sc2AgdG8gYW4gZW1wdHkgbGlzdCwgYW5kIGBFbmFibGVDb25maWdzYCB0byBhbiBlbXB0eSBsaXN0LCBhbmQgcHJvdmlkaW5nIHRoZSByYXRpb25hbGUgYXMgZGVzY3JpYmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYywgd2hpY2ggcHJvdmlkZXMgVkZJTyBwYXNzdGhyb3VnaCBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIGZzbC1tYyAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzIG9uIExheWVyc2NhcGUgU29Dcy4gVGhpcyBkcml2ZXIgcmVsaWVzIG9uIHBoeXNpY2FsIFNvQyBoYXJkd2FyZSBhbmQgZmlybXdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSBhbWQ2NCB0YXJnZXQgYXJjaGl0ZWN0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDkuMTg4MzIwMjE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3ODExNDgzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMsIHdoaWNoIHByb3ZpZGVzIFZGSU8gcGFzc3Rocm91Z2ggc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBmc2wtbWMgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcyBvbiBMYXllcnNjYXBlIFNvQ3MuIFRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGZpcm13YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgYW1kNjQgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjA5LjE4ODMyNTMwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5ODUyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWMwMjJmY2M4OTQyMzg3N2IwNmQxOWVkOWMyN2E4ODAzNDQ3M2IyY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE0OjA0OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuQEAgLTQwNyw2ICs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xcbiBcXG4gXFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDkuNjU4OTI1ODM3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo5OTMxMDUzMDIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLCB3aGljaCBwcm92aWRlcyBWRklPIHBhc3N0aHJvdWdoIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgZnNsLW1jIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMgb24gTGF5ZXJzY2FwZSBTb0NzLiBUaGlzIGRyaXZlciByZWxpZXMgb24gcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVjMDIyZmNjODk0MjM4NzdiMDZkMTllZDljMjdhODgwMzQ0NzNiMmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE0OjA0OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiArNDA3LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuK1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbitcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4rXG4gXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xuIFxuIFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDkuNjU4OTI3NTU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU3Mjk4MzIzNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGl0J3Mgd29ydGggb3VyIHRpbWUgdG8gZnV6ei4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHdoaWNoIGlzIGdvb2Q7IGl0J3MgYSBjb21tb24gYW5kIHdlbGwtc3VwcG9ydGVkIHBsYXRmb3JtIGZvciBvdXIgcHVycG9zZXMuXG5cblRoZSBkaWZmIGlzIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBUaGlzIGlzIGEgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBWRklPIGZyYW1ld29yaywgZGVhbGluZyB3aXRoIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRldmljZXMuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBkZXZpY2UgZHJpdmVycyBhcmUgb2Z0ZW4gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBwb3RlbnRpYWxseSB1bnRydXN0ZWQgaGFyZHdhcmUgb3IgZW11bGF0ZWQgaGFyZHdhcmUuXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIEl0J3MgYWRkaW5nIGEgY2hlY2sgd2l0aGluIHRoZSBgdmZpb19mc2xfbWNfbW1hcGAgZnVuY3Rpb24uIEl0IGFwcGVhcnMgdG8gYmUgZ3VhcmRpbmcgYWdhaW5zdCBtcHJvdGVjdCgpIHNoZW5hbmlnYW5zLCBlbnN1cmluZyB0aGF0IHJlYWQtb25seSByZWdpb25zIG1hcHBlZCB2aWEgVkZJTyBjYW4ndCBiZSBzdWJzZXF1ZW50bHkgbWFkZSB3cml0ZWFibGUgdGhyb3VnaCBhIGNhbGwgdG8gbXByb3RlY3QuIFRoaXMgaXMgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBJdCdzIGNsZWFybHkgaW50ZW5kZWQgdG8gKnByZXZlbnQqIGEgdnVsbmVyYWJpbGl0eSwgYnV0IHBhdGNoZXMgdGhhdCBhdHRlbXB0IHRvIGZpeCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgY2FuIHRoZW1zZWx2ZXMgaW50cm9kdWNlIHN1YnRsZSBuZXcgb25lcy4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIGEgZGVjZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuVG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gSSdsbCB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgcmVsZXZhbnQgYGRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ2AgaW5mb3JtYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIHRlbGwgbWUgdGhlIGJ1aWxkIGNvbmRpdGlvbnMgdGhhdCBhcHBseSB0byB0aGlzIGNvZGUsIHdoaWNoIHdpbGwgaW5mbHVlbmNlIGhvdyBJIHNldCB1cCBhbnkgZnV6emluZyBydW5zLiBLbm93aW5nIHdoZXJlIHRoaXMgZHJpdmVyIHNpdHMgaW4gdGhlIGJyb2FkZXIgVkZJTyBlY29zeXN0ZW0gaXMgY3J1Y2lhbCBmb3IgY29uc3RydWN0aW5nIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6NTUuMzg4NzYxNzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMzc4MjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWRklPX0ZTTF9NQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICs9IG1kZXYvXFxuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgKz0gZnNsLW1jL1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICs9IGNkeC9cXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZz0xPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTMtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZT0zPXZmaW8tZnNsLW1jLXkgOj0gdmZpb19mc2xfbWMubyB2ZmlvX2ZzbF9tY19pbnRyLm9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1ZGSU9fRlNMX01DKSArPSB2ZmlvLWZzbC1tYy5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9OTc9c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTExMi1cXHRcXHRkZXZfd2FybihcXHUwMDI2bWNfY29udC1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoxMTM6XFx0XFx0XFx0IFxcXCJWRklPX0ZTTF9NQzogcmVzZXQgZGV2aWNlIGhhcyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTE0LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTEyMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2lvY3RsX2dldF9yZWdpb25faW5mbyhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMzEtXFx0LyogbWFwIG9mZnNldCB0byB0aGUgcGh5c2ljYWwgYWRkcmVzcyAgKi9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MTMyOlxcdGluZm8tXFx1MDAzZW9mZnNldCA9IFZGSU9fRlNMX01DX0lOREVYX1RPX09GRlNFVChpbmZvLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMy1cXHRpbmZvLVxcdTAwM2VzaXplID0gdmRldi1cXHUwMDNlcmVnaW9uc1tpbmZvLVxcdTAwM2VpbmRleF0uc2l6ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0yMzQ9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfcmVhZChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMzgtXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIzOTpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoyNDA6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTI0MS1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTMxMj1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY193cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zMTctXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjMxODpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTk6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMyMC1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTM1Mz1zdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19mc2xfbWNfcmVnaW9uIHJlZ2lvbixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjAtXFx0cGdvZmYgPSB2bWEtXFx1MDAzZXZtX3Bnb2ZmIFxcdTAwMjZcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MzYxOlxcdFxcdCgoMVUgXFx1MDAzY1xcdTAwM2MgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjItXFx0YmFzZSA9IHBnb2ZmIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Mzc4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODUtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM4NjpcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMxLVxcdFxcdGlmIChkZXZpY2Vfc2V0X2RyaXZlcl9vdmVycmlkZShkZXYsIHZmaW9fZnNsX21jX29wcy5uYW1lKSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDMyOlxcdFxcdFxcdGRldl93YXJuKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXMgZmFpbGVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00MzMtXFx0XFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZtY19jb250LVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM0LVxcdFxcdGVsc2VcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDM1OlxcdFxcdFxcdGRldl9pbmZvKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXNcXFxcblxcXCIsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzNi1cXHRcXHRcXHRcXHQgZGV2X25hbWUoXFx1MDAyNm1jX2NvbnQtXFx1MDAzZWRldikpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MS1cXHRcXHRpZiAobWNfZHJ2IFxcdTAwMjZcXHUwMDI2IG1jX2RydiAhPSBcXHUwMDI2dmZpb19mc2xfbWNfZHJpdmVyKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDI6XFx0XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwiVkZJT19GU0xfTUM6IE9iamVjdCAlcyBib3VuZCB0byBkcml2ZXIgJXMgd2hpbGUgRFBSQyBib3VuZCB0byB2ZmlvLWZzbC1tY1xcXFxuXFxcIixcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQzLVxcdFxcdFxcdFxcdCBkZXZfbmFtZShkZXYpLCBtY19kcnYtXFx1MDAzZWRyaXZlci5uYW1lKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ2OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ3MDpcXHRcXHRkZXZfZXJyKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gc2V0dXAgRFBSQyAoJWQpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NzEtXFx0XFx0Z290byBvdXRfbmNfdW5yZWc7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDgwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfc2Nhbl9jb250YWluZXIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00ODktXFx0XFx0ZGV2X2VycihcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ5MDpcXHRcXHRcXHRcXFwiVkZJT19GU0xfTUM6IENvbnRhaW5lciBzY2FubmluZyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDkxLVxcdFxcdGRwcmNfcmVtb3ZlX2RldmljZXMobWNfZGV2LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz01MzA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU0Mi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU0MzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gYWRkIHRvIHZmaW8gZ3JvdXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDQtXFx0XFx0Z290byBvdXRfcHV0X3ZkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC02LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjc6I2lmbmRlZiBWRklPX0ZTTF9NQ19QUklWQVRFX0hcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo4OiNkZWZpbmUgVkZJT19GU0xfTUNfUFJJVkFURV9IXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtOS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMDojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAgICA0MFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0sgKCgodTY0KSgxKSBcXHUwMDNjXFx1MDAzYyBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpIC0gMSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xMi1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMzojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWChvZmYpICgob2ZmKSBcXHUwMDNlXFx1MDAzZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTQtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6MTU6I2RlZmluZSBWRklPX0ZTTF9NQ19JTkRFWF9UT19PRkZTRVQoaW5kZXgpXFx0XFxcXFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE2OlxcdCgodTY0KShpbmRleCkgXFx1MDAzY1xcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTE3LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg9NDc9dm9pZCB2ZmlvX2ZzbF9tY19pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtNDgtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6NDk6I2VuZGlmIC8qIFZGSU9fRlNMX01DX1BSSVZBVEVfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNDo1NS43MDI1NDk0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2Mzk3NDQxNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWdgIGZpbGU6XG5cbioqQW5hbHl6aW5nIHRoZSBWRklPIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmb3IgdGhlIFZGSU8gRlNMIE1DIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBGaXJzdCwgSSdtIGV4cGVjdGluZyB0byBzZWUgdGhlIHR5cGljYWwgc3RydWN0dXJlOiBhIGBjb25maWdgIGJsb2NrIGRlZmluaW5nIHRoZSBtYWluIGZlYXR1cmUsIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBvcHRpb24gZm9yIGVuYWJsaW5nIHRoZSBGU0wgTUMgKEZyZWVzY2FsZSBNZWRpYSBDb250YWluZXIpIHN1cHBvcnQgd2l0aGluIHRoZSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgZnJhbWV3b3JrLiBUaGlzIGlzIGNydWNpYWwgZm9yIGV4cG9zaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIHRoaXMgZmlsZSBzaG91bGQgZXhwb3NlIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYWJpbGl0eSBrbm9icy5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMuIEZvciBpbnN0YW5jZSwgSSBhbnRpY2lwYXRlIGEgZGVwZW5kZW5jeSBvbiB0aGUgY29yZSBWRklPIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYW5kIHByb2JhYmx5IHNwZWNpZmljIEZTTCBNQyBkcml2ZXJzIG9yIHN1YnN5c3RlbXMuIEknbGwgYWxzbyBiZSBzZWFyY2hpbmcgZm9yIGFueSBvcHRpb25zIHJlbGF0ZWQgdG8gc3BlY2lmaWMgZmVhdHVyZXMgb2YgdGhlIEZTTCBNQyBoYXJkd2FyZSwgc3VjaCBhcyBkaWZmZXJlbnQgYWNjZWxlcmF0aW9uIGVuZ2luZXMgb3IgbWVtb3J5IG1hbmFnZW1lbnQgdW5pdHMuIEFyZSB0aGVyZSBhbnkgZmVhdHVyZXMgSSBjYW4gdHVuZSB0byB0YWlsb3IgdGhlIGRldmljZSBhbmQgaXRzIHZpcnR1YWwgZnVuY3Rpb25zP1xuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEFyZSB0aGVyZSByZWFzb25hYmxlIGRlZmF1bHRzIGZvciBtb3N0IGRlcGxveW1lbnRzLCBvciBpcyB0aGlzIGRyaXZlciBkZXNpZ25lZCB0byBiZSBoaWdobHkgY29uZmlndXJhYmxlPyBJZiBpdCdzIHRoZSBsYXR0ZXIsIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHVzZXIgZXhwZXJpZW5jZSBhbmQgcG90ZW50aWFsIGNvbXBsZXhpdHk/IEknbGwgYXNzZXNzIHdoZXRoZXIgaXQncyBzZXR0aW5nIGFueSBkZWZhdWx0cyB0aGF0IG1pZ2h0IG5lZWQgc3BlY2lhbCBhdHRlbnRpb24gaW4gb3VyIHVzZSBjYXNlIChvciB0aGF0IGFyZSBjbGVhcmx5IGluYXBwcm9wcmlhdGUgZm9yIGEgZ2l2ZW4gdGFyZ2V0KS4gSSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMg4oCTIGZlYXR1cmVzIHRoYXQgYmVjb21lIGF2YWlsYWJsZSBvbmx5IHdoZW4gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgb3Igb3RoZXIga2VybmVsIG9wdGlvbnMgYXJlIGVuYWJsZWQuXG5cbkZpbmFsbHksIEknbGwgYmUgcmVhZGluZyB0aGUgaGVscCB0ZXh0LiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBHb29kIGhlbHAgdGV4dCBpcyBpbmZvcm1hdGl2ZSwgZXhwbGFpbmluZyBub3QganVzdCAqd2hhdCogdGhlIG9wdGlvbiBkb2VzIGJ1dCAqd2h5KiBzb21lb25lIG1pZ2h0IHdhbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgaXQuIEkgd2FudCB0byBlbnN1cmUgdGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXIgYW5kIGFjY3VyYXRlLiBJcyBpdCBjb25jaXNlPyBEb2VzIGl0IHBvaW50IHRvIHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBWRklPIHNpZGUgb2YgdGhpbmdzPyBUaGlzIGlzIGFsbCBhYm91dCBhc3Nlc3NpbmcgdGhlIGNvbmZpZ3VyYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IG9mIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODA0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDAuMzQyMjk3MDg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0bWVudSBcXFwiVkZJTyBzdXBwb3J0IGZvciBGU0xfTUMgYnVzIGRldmljZXNcXFwiXFxuICAgMjpcXHRcXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcXG4gICAzOlxcdFxcbiAgIDQ6XFx0Y29uZmlnIFZGSU9fRlNMX01DXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiVkZJTyBzdXBwb3J0IGZvciBRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRldmljZXNcXFwiXFxuICAgNjpcXHRcXHRzZWxlY3QgRVZFTlRGRFxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBWRklPIFFvcklRIERQQUEyIGZzbC1tY1xcbiAgIDk6XFx0XFx0ICAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzLiBUaGlzIGlzIHJlcXVpcmVkIHRvIHBhc3N0aHJvdWdoXFxuICAxMDpcXHRcXHQgIGZzbC1tYyBidXMgZGV2aWNlcyB1c2luZyB0aGUgVkZJTyBmcmFtZXdvcmsuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTowMC4zNDIzNTY1NjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTg3MzQwNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBGU0xfTUNfQlVTKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYEZTTF9NQ19CVVNgIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoaXMgbWVhbnMgSSdtIGdvaW5nIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRvIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSdsbCBuZWVkIHRvIHVzZSB0b29scyB0byBxdWlja2x5IGxvY2F0ZSBhbGwgaW5zdGFuY2VzIG9mIHRoaXMgc3ltYm9sLiBJIGV4cGVjdCBJJ2xsIHdhbnQgdG8gZmlsdGVyIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uIGBLY29uZmlnYCBmaWxlcyBhbmQgbWF5IG5lZWQgc29tZSBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gbWFuYWdlIHRoZSBzZWFyY2ggcHJvY2VzcyBiYXNlZCBvbiB0aGUgc3lzdGVtIGluIHdoaWNoIHRoaXMgaXMgaW1wbGVtZW50ZWQuIFRoaXMgd2lsbCBsZXQgbWUgc2VlIGl0cyBkZXBlbmRlbmNpZXMsIHdobydzIGVuYWJsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIGFyb3VuZCBgRlNMX01DX0JVU2AgaXMgY3J1Y2lhbCB0byBpdHMgYmVoYXZpb3IgYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUzMCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDMuOTI5NzAwNTg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjA1MDk3OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9NQ19CVVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo4OmNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctOS1cXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDUuNzUwMjE0OTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzkzMTY2MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgKE1DKSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgaWRlYSBvZiB3aGF0IEknbSBsb29raW5nIGZvciDigJMgdGhpbmdzIGxpa2U6XG5cbiogICAqKk9wdGlvbnMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBNQyBkcml2ZXIgZnJhbWV3b3JrLioqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB0aGUgZ2F0ZWtlZXBlciBmb3IgYWxsIHRoZSBNQy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIEknbGwgYmUgbG9va2luZyBmb3Igc29tZXRoaW5nIGxpa2UgYENPTkZJR19GU0xfTUNgIG9yIGBGU0xfTUNfRFJJVkVSU2AuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgTUMgZGV2aWNlcyBvciBzdWItZHJpdmVycy4qKiBXZSBhcmUgaW4gdGhlIGZzbC1tYyBkaXJlY3RvcnksIHNvLCBnaXZlbiBpdHMgY29tbW9uIG9yZ2FuaXphdGlvbiwgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNQyBoYXJkd2FyZSBkZXZpY2VzIG9yIGZlYXR1cmVzLCBwZXJoYXBzIHN0cnVjdHVyZWQgaGllcmFyY2hpY2FsbHkuIFRoZXNlIHdvdWxkIGxpa2VseSBiZSBndWFyZGVkIGJ5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sIG9yIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy4gRm9yIGV4YW1wbGUsIHNwZWNpZmljIGRldmljZSB0eXBlcyAobGlrZSBFdGhlcm5ldCwgRE1BLCBldGMuKSB1c2luZyB0aGUgTUMgZnJhbWV3b3JrLlxuKiAgICoqRGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IE1DIGNvbXBvbmVudHMuKiogSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgaW50ZXItcmVsYXRlZC4gQXJlIHRoZXJlIGNsZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSB2YXJpb3VzIGRldmljZSBzdWItZHJpdmVycz8gQXJlIGNlcnRhaW4gb3B0aW9ucyBvbmx5IGF2YWlsYWJsZSBpZiBvdGhlcnMgYXJlIGVuYWJsZWQ/IFRoaXMgaXMgd2hlcmUgSSBjYW4gZ2V0IGEgc2Vuc2Ugb2YgaG93IG1vZHVsYXIgYW5kIHdlbGwtZGVzaWduZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXMuXG4qICAgKipEZWZhdWx0IHZhbHVlcyBhbmQgaGVscCB0ZXh0LioqIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBvcHRpb25zIGFuZCB0aGUgZXhwbGFuYXRvcnkgdGV4dC4gRG8gdGhlIGRlZmF1bHRzIG1ha2Ugc2Vuc2U/IElzIHRoZSBoZWxwIHRleHQgY2xlYXIgYW5kIGluZm9ybWF0aXZlPyBHb29kIEtjb25maWcgZmlsZXMgcHJvdmlkZSBlbm91Z2ggZ3VpZGFuY2UgdG8gbWFrZSBhbiBpbmZvcm1lZCBjaG9pY2Ugd2l0aG91dCBiZWluZyBvdmVyd2hlbG1pbmcuXG4qICAgKipBbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gYXJjaGl0ZWN0dXJlIG9yIGtlcm5lbCB2ZXJzaW9uLioqIEknbSBhbnRpY2lwYXRpbmcgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhcyB0aGUgRlNMIE1DIGZyYW1ld29yayBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBhbmQgaGFyZHdhcmUgcmV2aXNpb25zLiBBbHNvLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjb21wYXRpYmlsaXR5IHNoaW1zIG9yIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQga2VybmVsIHZlcnNpb25zLlxuXG5JJ2xsIGJlIHJlYWRpbmcgdGhpcyB3aXRoIGFuIGV5ZSB0b3dhcmQgaWRlbnRpZnlpbmcgYW55IGFyZWFzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIGltcHJvdmVkIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIG9yIHBlcmZvcm1hbmNlLiBJJ20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgZnV0dXJlIGVuaGFuY2VtZW50cyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgd29yayBvciBwcm9qZWN0cy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDkuNTQzMzg0NjgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBEUEFBMiBmc2wtbWMgYnVzXFxuICAgNDpcXHQjXFxuICAgNTpcXHQjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBGU0xfTUNfQlVTXFxuICAgOTpcXHRcXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTEFZRVJTQ0FQRSB8fCAoQ09NUElMRV9URVNUIFxcdTAwMjZcXHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXFxuICAxMTpcXHRcXHRzZWxlY3QgR0VORVJJQ19NU0lfSVJRXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXFxuICAxNDpcXHRcXHQgIGFyY2hpdGVjdHVyZS4gIFRoZSBmc2wtbWMgYnVzIGRyaXZlciBoYW5kbGVzIGRpc2NvdmVyeSBvZlxcbiAgMTU6XFx0XFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXFxuICAxNjpcXHRcXHQgIGJpbmRpbmcgb2JqZWN0cyB0byBkcml2ZXJzLlxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgRlNMX01DX1VBUElfU1VQUE9SVFxcbiAgMTk6XFx0XFx0Ym9vbCBcXFwiTWFuYWdlbWVudCBDb21wbGV4IChNQykgdXNlcnNwYWNlIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgUHJvdmlkZXMgdXNlcnNwYWNlIHN1cHBvcnQgZm9yIGludGVycm9nYXRpbmcsIGNyZWF0aW5nLCBkZXN0cm95aW5nIG9yXFxuICAyMzpcXHRcXHQgIGNvbmZpZ3VyaW5nIERQQUEyIG9iamVjdHMgZXhwb3J0ZWQgYnkgdGhlIE1hbmFnZW1lbnQgQ29tcGxleC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDkuNTQzNDQ2NTUyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5MjM2MzkzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgR2VuZXNpcyBvZiBgZnNsLW1jYCBEZXZpY2VzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBmYXNjaW5hdGluZyB3b3JsZCBvZiBgZnNsLW1jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRoZXNlIGRldmljZXMgYWN0dWFsbHkgKmJvcm4qPyBJcyB0aGUgYGZzbC1tY2AgYnVzIGEgZGlyZWN0IG1hbmlmZXN0YXRpb24gb2YgdGhlIFFvcklRIERQQUEyIGhhcmR3YXJlLCBhIHRhbmdpYmxlIHBoeXNpY2FsIGVudGl0eSwgb3IgY2FuIGl0IGJlIGJyb3VnaHQgdG8gbGlmZSwgZW11bGF0ZWQgaWYgeW91IHdpbGwsIHdpdGhpbiB0aGUgc3RhbmRhcmQgZnJhbWV3b3JrcyBvZiBRRU1VIG9yIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb25hbCBuYXR1cmUuXG5cbk15IG5leHQgbGluZSBvZiBpbnF1aXJ5IGhhcyB0byBkbyB3aXRoIGhvdyB0aGUgc3lzdGVtIHJlY29nbml6ZXMgYW5kIHRoZW4gc2V0cyB1cCBkZXZpY2VzIG9uIHRoaXMgYnVzLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgb2YgYGZzbF9tY19idXNfdHlwZWAuIEZyb20gdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHRyYWNlIGhvdyBkZXZpY2VzIGFjdHVhbGx5IGdldCBjcmVhdGVkIGFuZCBtYWRlIGFjY2Vzc2libGUgd2l0aGluIHRoZSBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhpcyBidXMgdHlwZSByZWdpc3RyYXRpb24gYW5kIGRldmljZSBpbnN0YW50aWF0aW9uIGlzIGtleSB0byBnYWluaW5nIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGRldmljZXMgb3BlcmF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc0MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MTUuNDY3MDg4NTY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg0NDc0Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbF9tY19idXNfdHlwZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMyND1BVFRSSUJVVEVfR1JPVVBTKGZzbF9tY19idXMpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MzI2OmNvbnN0IHN0cnVjdCBidXNfdHlwZSBmc2xfbWNfYnVzX3R5cGUgPSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMjctXFx0Lm5hbWUgPSBcXFwiZnNsLW1jXFxcIixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzM4LX07XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMzk6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2J1c190eXBlKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM0MC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NDYxPWludCBfX2ZzbF9tY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RyaXZlcixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNDY2LVxcdG1jX2RyaXZlci1cXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo0Njc6XFx0bWNfZHJpdmVyLVxcdTAwM2Vkcml2ZXIuYnVzID0gXFx1MDAyNmZzbF9tY19idXNfdHlwZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTQ2OC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzUyPWludCBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzg5LVxcdG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCA9IHBhcmVudF9kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTA6XFx0bWNfZGV2LVxcdTAwM2VkZXYuYnVzID0gXFx1MDAyNmZzbF9tY19idXNfdHlwZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5MS1cXHRtY19kZXYtXFx1MDAzZWRldi5yZWxlYXNlID0gZnNsX21jX2RldmljZV9yZWxlYXNlO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMTc1PXN0YXRpYyB2b2lkIGZzbF9tY19idXNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODMtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTg0OlxcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUsIFxcdTAwMjZmc2xfbWNfbmIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4NS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTI2MD1zdGF0aWMgaW50IF9faW5pdCBmc2xfbWNfYnVzX2RyaXZlcl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjMtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMjY0OlxcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2NS1cXHRpZiAoZXJyb3IgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTItZXJyb3JfY2xlYW51cF9idXM6XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMjkzOlxcdGJ1c191bnJlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI5NC1cXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYz0xODY9c3RhdGljIGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqIGNvbnN0IGlvbW11X2J1c2VzW10gPSB7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk0LSNpZmRlZiBDT05GSUdfRlNMX01DX0JVU1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxOTU6XFx0XFx1MDAyNmZzbF9tY19idXNfdHlwZSxcXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTk2LSNlbmRpZlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ0OT1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDYyLVxcdHZkZXYtXFx1MDAzZW5iLm5vdGlmaWVyX2NhbGwgPSB2ZmlvX2ZzbF9tY19idXNfbm90aWZpZXI7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ2MzpcXHRyZXQgPSBidXNfcmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXFx1MDAyNnZkZXYtXFx1MDAzZW5iKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDc1LW91dF9uY191bnJlZzpcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDc2OlxcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUsIFxcdTAwMjZ2ZGV2LVxcdTAwM2VuYik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ3Ny1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ5Nz1zdGF0aWMgdm9pZCB2ZmlvX2ZzbF91bmluaXRfZGV2aWNlKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTA0LVxcdGRwcmNfY2xlYW51cChtY19kZXYpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo1MDU6XFx0YnVzX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXFx1MDAyNnZkZXYtXFx1MDAzZW5iKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTA2LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvZnNsL21jLmg9MzU2PWludCBtY19zZW5kX2NvbW1hbmQoc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sIHN0cnVjdCBmc2xfbWNfY29tbWFuZCAqY21kKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnNsL21jLmgtMzU4LSNpZmRlZiBDT05GSUdfRlNMX01DX0JVU1xcbmluY2x1ZGUvbGludXgvZnNsL21jLmg6MzU5OiNkZWZpbmUgZGV2X2lzX2ZzbF9tYyhfZGV2KSAoKF9kZXYpLVxcdTAwM2VidXMgPT0gXFx1MDAyNmZzbF9tY19idXNfdHlwZSlcXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTM2MC11MzIgZnNsX21jX2dldF9tc2lfaWQoc3RydWN0IGRldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnNsL21jLmg9NDI4PXN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZ2V0X2VuZHBvaW50KHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTQzMC1cXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oOjQzMTpleHRlcm4gY29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZTtcXG5pbmNsdWRlL2xpbnV4L2ZzbC9tYy5oLTQzMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MTcuMTUxNTY3MDgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwMDQ0NDMyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkZpbmRpbmcgdGhlIFNvdXJjZSBvZiBgZnNsX21jX2J1c2AgRGV2aWNlcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIGBmc2xfbWNfYnVzYCBkZXZpY2VzIGFyZSBiZWluZyBjcmVhdGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyYWNrIGRvd24gdGhlIHBvaW50cyBvZiBvcmlnaW4uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyByZXNwb25zaWJsZSBmb3IgdGhlaXIgaW5zdGFudGlhdGlvbiwgYW5kIHRoZSB3YXkgdG8gZG8gdGhhdCBpcyB0byBsb29rIGZvciBob3cgdGhpcyBidXMgaXMgYmVpbmcgdHJpZ2dlcmVkLlxuXG5GaXJzdCwgSSdsbCBzZWFyY2ggZm9yIGNhbGxzIHRvIGBmc2xfbWNfZGV2aWNlX2FkZGAuIFRoaXMgaXMgdGhlIG1vc3QgZGlyZWN0IHdheSB0byBjcmVhdGUgYSBkZXZpY2Ugd2l0aGluIHRoZSBmcmFtZXdvcmssIHNvIGl0J3MgYSBsaWtlbHkgY2FuZGlkYXRlLiBJZiBJIGZpbmQgY2FsbHMgdG8gaXQsIEknbGwgaW52ZXN0aWdhdGUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZC5cblxuQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCB0cnkgdG8gaWRlbnRpZnkgaG93IGBmc2xfbWNfYnVzX3Byb2JlYCBpcyB0cmlnZ2VyZWQuIFRoaXMgcHJvYmUgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIHdoZW4gYW5kIHdoZXJlIGl0J3MgY2FsbGVkIHdpbGwgaGVscCBtZSB0cmFjZSB0aGUgZGV2aWNlIGNyZWF0aW9uIHByb2Nlc3MgZnJvbSB0aGUgdG9wIGRvd24uIEEgZGVlcCBkaXZlIGludG8gdGhlIGNhbGxpbmcgY29udGV4dHMgb2YgYGZzbF9tY19idXNfcHJvYmVgIHNob3VsZCByZXZlYWwgdGhlIGVuYWJsaW5nIG1lY2hhbmlzbXMgb2YgdGhpcyBidXMuIFRoZSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCBsZWFkIHRvIHRoZSBidXMgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBkZXZpY2VzLCBiZWluZyBicm91Z2h0IG9ubGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3OTksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNToyMi4xNTYwMTMxMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDg3NzcxODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnNsX21jX2RldmljZV9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE4MzpcXHRcXHRlcnJvciA9IGZzbF9tY19kZXZpY2VfYWRkKG9ial9kZXNjLCBOVUxMLCBcXHUwMDI2bWNfYnVzX2Rldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4NC1cXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjaGlsZF9kZXYpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03Mzc9c3RhdGljIHZvaWQgZnNsX21jX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzUxLSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUyOmludCBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1My1cXHRcXHQgICAgICBzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODc5LX1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg4MDpFWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfZGV2aWNlX2FkZCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEwMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExNTctXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMTU4OlxcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQoXFx1MDAyNm9ial9kZXNjLCBtY19pbywgXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFx1MDAyNm1jX2J1c19kZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1OS1cXHRpZiAoZXJyb3IgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NjAxPXN0cnVjdCBmc2xfbWNfYnVzIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxMy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjIzLjY2NDc5NTE2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDU5MTg4MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGZzbF9tY19idXNfcHJvYmUqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBmc2xfbWNfYnVzX3Byb2JlYC4gUmlnaHQsIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyBkb2luZyB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gZ28gdG8gdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgb3V0IGBmc2wtbWMtYnVzLmNgIGFuZCB6ZXJvIGluIG9uIGxpbmVzIDEwMzkgdGhyb3VnaCAxMTcwLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSByZWxldmFudCBjb2RlIGJsb2NrIHRvIHVuZGVyc3RhbmQgdGhlIHByb2JlJ3Mgb3BlcmF0aW9uLCBhbnkgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB0aGF0J3MgYmVpbmcgcGVyZm9ybWVkLCBhbmQgdGhlIG92ZXJhbGwgY29udGV4dCB3aXRoaW4gdGhlIGBmc2wtbWMtYnVzYCBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBoYXBwZW5zLiBGcm9tIHRoZXJlIEkgd2lsbCBob3BlZnVsbHkgYmUgYWJsZSB0byBpbnRlcnByZXQgYW5kIGFzY2VydGFpbiB0aGUgZnVuY3Rpb24gYW5kIGZsb3cgb2Ygb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg1OSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI1LjcyMzk4NjYwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY5MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjAwOlxcdH07XFxuMTIwMTpcXHRcXG4xMjAyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9tY19idXNfbWF0Y2hfdGFibGUpO1xcbjEyMDM6XFx0XFxuMTIwNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZVtdID0ge1xcbjEyMDU6XFx0XFx0e1xcXCJOWFAwMDA4XFxcIiwgMCB9LFxcbjEyMDY6XFx0XFx0eyB9XFxuMTIwNzpcXHR9O1xcbjEyMDg6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfbWNfYnVzX2RyaXZlciA9IHtcXG4xMjExOlxcdFxcdC5kcml2ZXIgPSB7XFxuMTIxMjpcXHRcXHRcXHQgICAubmFtZSA9IFxcXCJmc2xfbWNfYnVzXFxcIixcXG4xMjEzOlxcdFxcdFxcdCAgIC5wbSA9IE5VTEwsXFxuMTIxNDpcXHRcXHRcXHQgICAub2ZfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLFxcbjEyMTU6XFx0XFx0XFx0ICAgLmFjcGlfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUsXFxuMTIxNjpcXHRcXHRcXHQgICB9LFxcbjEyMTc6XFx0XFx0LnByb2JlID0gZnNsX21jX2J1c19wcm9iZSxcXG4xMjE4OlxcdFxcdC5yZW1vdmUgPSBmc2xfbWNfYnVzX3JlbW92ZSxcXG4xMjE5OlxcdFxcdC5zaHV0ZG93biA9IGZzbF9tY19idXNfcmVtb3ZlLFxcbjEyMjA6XFx0fTtcXG4xMjIxOlxcdFxcbjEyMjI6XFx0c3RhdGljIGludCBmc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuMTIyMzpcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpXFxuMTIyNDpcXHR7XFxuMTIyNTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhO1xcbjEyMjY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXM7XFxuMTIyNzpcXHRcXHR2b2lkIF9faW9tZW0gKmZzbF9tY19yZWdzO1xcbjEyMjg6XFx0XFxuMTIyOTpcXHRcXHRpZiAoYWN0aW9uICE9IEJVU19OT1RJRllfQUREX0RFVklDRSlcXG4xMjMwOlxcdFxcdFxcdHJldHVybiAwO1xcbjEyMzE6XFx0XFxuMTIzMjpcXHRcXHRpZiAoIW9mX21hdGNoX2RldmljZShmc2xfbWNfYnVzX21hdGNoX3RhYmxlLCBkZXYpIFxcdTAwMjZcXHUwMDI2XFxuMTIzMzpcXHRcXHQgICAgIWFjcGlfbWF0Y2hfZGV2aWNlKGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZSwgZGV2KSlcXG4xMjM0OlxcdFxcdFxcdHJldHVybiAwO1xcbjEyMzU6XFx0XFxuMTIzNjpcXHRcXHRyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UodG9fcGxhdGZvcm1fZGV2aWNlKGRldiksIElPUkVTT1VSQ0VfTUVNLCAxKTtcXG4xMjM3OlxcdFxcdGlmICghcmVzKVxcbjEyMzg6XFx0XFx0XFx0cmV0dXJuIDA7XFxuMTIzOTpcXHRcXG4xMjQwOlxcdFxcdGZzbF9tY19yZWdzID0gaW9yZW1hcChyZXMtXFx1MDAzZXN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcykpO1xcbjEyNDE6XFx0XFx0aWYgKCFmc2xfbWNfcmVncylcXG4xMjQyOlxcdFxcdFxcdHJldHVybiAwO1xcbjEyNDM6XFx0XFxuMTI0NDpcXHRcXHQvKlxcbjEyNDU6XFx0XFx0ICogTWFrZSBzdXJlIHRoYXQgdGhlIE1DIGZpcm13YXJlIGlzIHBhdXNlZCBiZWZvcmUgdGhlIElPTU1VIHNldHVwIGZvclxcbjEyNDY6XFx0XFx0ICogaXQgaXMgZG9uZSBvciBvdGhlcndpc2UgdGhlIGZpcm13YXJlIHdpbGwgY3Jhc2ggcmlnaHQgYWZ0ZXIgdGhlIFNNTVVcXG4xMjQ3OlxcdFxcdCAqIGdldHMgcHJvYmVkIGFuZCBlbmFibGVkLlxcbjEyNDg6XFx0XFx0ICovXFxuMTI0OTpcXHRcXHR3cml0ZWwocmVhZGwoZnNsX21jX3JlZ3MgKyBGU0xfTUNfR0NSMSkgfCAoR0NSMV9QMV9TVE9QIHwgR0NSMV9QMl9TVE9QKSxcXG4xMjUwOlxcdFxcdCAgICAgICBmc2xfbWNfcmVncyArIEZTTF9NQ19HQ1IxKTtcXG4xMjUxOlxcdFxcdGlvdW5tYXAoZnNsX21jX3JlZ3MpO1xcbjEyNTI6XFx0XFxuMTI1MzpcXHRcXHRyZXR1cm4gMDtcXG4xMjU0OlxcdH1cXG4xMjU1OlxcdFxcbjEyNTY6XFx0c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBmc2xfbWNfbmIgPSB7XFxuMTI1NzpcXHRcXHQubm90aWZpZXJfY2FsbCA9IGZzbF9tY19idXNfbm90aWZpZXIsXFxuMTI1ODpcXHR9O1xcbjEyNTk6XFx0XFxuMTI2MDpcXHRzdGF0aWMgaW50IF9faW5pdCBmc2xfbWNfYnVzX2RyaXZlcl9pbml0KHZvaWQpXFxuMTI2MTpcXHR7XFxuMTI2MjpcXHRcXHRpbnQgZXJyb3I7XFxuMTI2MzpcXHRcXG4xMjY0OlxcdFxcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xcbjEyNjU6XFx0XFx0aWYgKGVycm9yIFxcdTAwM2MgMCkge1xcbjEyNjY6XFx0XFx0XFx0cHJfZXJyKFxcXCJidXMgdHlwZSByZWdpc3RyYXRpb24gZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyb3IpO1xcbjEyNjc6XFx0XFx0XFx0Z290byBlcnJvcl9jbGVhbnVwX2NhY2hlO1xcbjEyNjg6XFx0XFx0fVxcbjEyNjk6XFx0XFxuMTI3MDpcXHRcXHRlcnJvciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZnNsX21jX2J1c19kcml2ZXIpO1xcbjEyNzE6XFx0XFx0aWYgKGVycm9yIFxcdTAwM2MgMCkge1xcbjEyNzI6XFx0XFx0XFx0cHJfZXJyKFxcXCJwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoKSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBlcnJvcik7XFxuMTI3MzpcXHRcXHRcXHRnb3RvIGVycm9yX2NsZWFudXBfYnVzO1xcbjEyNzQ6XFx0XFx0fVxcbjEyNzU6XFx0XFxuMTI3NjpcXHRcXHRlcnJvciA9IGRwcmNfZHJpdmVyX2luaXQoKTtcXG4xMjc3OlxcdFxcdGlmIChlcnJvciBcXHUwMDNjIDApXFxuMTI3ODpcXHRcXHRcXHRnb3RvIGVycm9yX2NsZWFudXBfZHJpdmVyO1xcbjEyNzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI1LjcyNDA5NDc4NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTQyNTA5NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEZyZWVzY2FsZSBRb3JJUSBEUEFBMiBIYXJkd2FyZSBTdXBwb3J0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBgZnNsX21jX2J1c2AuIFJpZ2h0LCB0aGF0IHJpbmdzIGEgYmVsbC4gSXQncyBmb3IgdGhlIEZyZWVzY2FsZSBRb3JJUSBEUEFBMiwgc3BlY2lmaWNhbGx5IHRoZSBBUkNIX0xBWUVSU0NBUEUgKG9yIE5YUCBMYXllcnNjYXBlIFNvQykgaGFyZHdhcmUuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBhbmQgaG93IGl0IGludGVyZmFjZXMuIExldCdzIGRpZyBpbnRvIHRoYXQgYHZmaW9fZnNsX21jLmNgIGZpbGUuIEl0J3MgdGltZSB0byB1bmRlcnN0YW5kIHdoYXQncyBpbXBsZW1lbnRlZCB0aGVyZSBhbmQsIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpdCdzIGludGVyZmFjaW5nIHdpdGggZXZlcnl0aGluZy4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoZSByb2xlIG9mIGB2ZmlvX2ZzbF9tY2AgaXMgaW4gdGhlIGdyZWF0ZXIgYXJjaGl0ZWN0dXJlLCBhbmQgaG93IGl0J3MgcHJvdmlkaW5nIHRoZSBhYnN0cmFjdGlvbiBsYXllci4gSSdtIGhvcGluZyBJIGNhbiBlYXNpbHkgaWRlbnRpZnkgdGhlIGtleSBjb250cm9sIHBvaW50cywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIG92ZXJhbGwgZHJpdmVyJ3MgZnVuY3Rpb24gd2l0aGluIHRoZSBWRklPIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzOTMsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI5LjY2NjYwNjU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTEwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTEwOlxcdFxcdHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYgPVxcbiA1MTE6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuIDUxMjpcXHRcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuIDUxMzpcXHRcXHRpbnQgcmV0O1xcbiA1MTQ6XFx0XFxuIDUxNTpcXHRcXHR2ZGV2LVxcdTAwM2VtY19kZXYgPSBtY19kZXY7XFxuIDUxNjpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZ2ZGV2LVxcdTAwM2VpZ2F0ZSk7XFxuIDUxNzpcXHRcXG4gNTE4OlxcdFxcdGlmIChpc19mc2xfbWNfYnVzX2RwcmMobWNfZGV2KSlcXG4gNTE5OlxcdFxcdFxcdHJldCA9IHZmaW9fYXNzaWduX2RldmljZV9zZXQoY29yZV92ZGV2LCBcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYpO1xcbiA1MjA6XFx0XFx0ZWxzZVxcbiA1MjE6XFx0XFx0XFx0cmV0ID0gdmZpb19hc3NpZ25fZGV2aWNlX3NldChjb3JlX3ZkZXYsIG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuIDUyMjpcXHRcXG4gNTIzOlxcdFxcdGlmIChyZXQpXFxuIDUyNDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1MjU6XFx0XFxuIDUyNjpcXHRcXHQvKiBkZXZpY2Vfc2V0IGlzIHJlbGVhc2VkIGJ5IHZmaW8gY29yZSBpZiBAaW5pdCBmYWlscyAqL1xcbiA1Mjc6XFx0XFx0cmV0dXJuIHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHZkZXYpO1xcbiA1Mjg6XFx0fVxcbiA1Mjk6XFx0XFxuIDUzMDpcXHRzdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuIDUzMTpcXHR7XFxuIDUzMjpcXHRcXHRzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2O1xcbiA1MzM6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1jX2Rldi1cXHUwMDNlZGV2O1xcbiA1MzQ6XFx0XFx0aW50IHJldDtcXG4gNTM1OlxcdFxcbiA1MzY6XFx0XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fZnNsX21jX2RldmljZSwgdmRldiwgZGV2LFxcbiA1Mzc6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2ZzbF9tY19vcHMpO1xcbiA1Mzg6XFx0XFx0aWYgKElTX0VSUih2ZGV2KSlcXG4gNTM5OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHZkZXYpO1xcbiA1NDA6XFx0XFxuIDU0MTpcXHRcXHRyZXQgPSB2ZmlvX3JlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDU0MjpcXHRcXHRpZiAocmV0KSB7XFxuIDU0MzpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gYWRkIHRvIHZmaW8gZ3JvdXBcXFxcblxcXCIpO1xcbiA1NDQ6XFx0XFx0XFx0Z290byBvdXRfcHV0X3ZkZXY7XFxuIDU0NTpcXHRcXHR9XFxuIDU0NjpcXHRcXG4gNTQ3OlxcdFxcdHJldCA9IHZmaW9fZnNsX21jX3NjYW5fY29udGFpbmVyKG1jX2Rldik7XFxuIDU0ODpcXHRcXHRpZiAocmV0KVxcbiA1NDk6XFx0XFx0XFx0Z290byBvdXRfZ3JvdXBfZGV2O1xcbiA1NTA6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgdmRldik7XFxuIDU1MTpcXHRcXHRyZXR1cm4gMDtcXG4gNTUyOlxcdFxcbiA1NTM6XFx0b3V0X2dyb3VwX2RldjpcXG4gNTU0OlxcdFxcdHZmaW9fdW5yZWdpc3Rlcl9ncm91cF9kZXYoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiA1NTU6XFx0b3V0X3B1dF92ZGV2OlxcbiA1NTY6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gNTU3OlxcdFxcdHJldHVybiByZXQ7XFxuIDU1ODpcXHR9XFxuIDU1OTpcXHRcXG4gNTYwOlxcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiA1NjE6XFx0e1xcbiA1NjI6XFx0XFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9XFxuIDU2MzpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlLCB2ZGV2KTtcXG4gNTY0OlxcdFxcbiA1NjU6XFx0XFx0dmZpb19mc2xfdW5pbml0X2RldmljZSh2ZGV2KTtcXG4gNTY2OlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnZkZXYtXFx1MDAzZWlnYXRlKTtcXG4gNTY3OlxcdH1cXG4gNTY4OlxcdFxcbiA1Njk6XFx0c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjI5LjY2NjcyNjI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2ODYxMzU2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBmc2xfbWNfYnVzIG9uIGFtZDY0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBmc2xfbWNfYnVzYCwgd2hpY2ggaXMgYSBoYXJkd2FyZSBidXMgc3BlY2lmaWMgdG8gTlhQL0ZyZWVzY2FsZSBMYXllcnNjYXBlIFNvQ3MsIHNwZWNpZmljYWxseSB0aGUgUW9ySVEgRFBBQTIuIFRoZSBxdWVzdGlvbiBpcywgc2hvdWxkIHdlIGJvdGhlciBmdXp6aW5nIGNvZGUgcmVsYXRlZCB0byB0aGlzIG9uIGFtZDY0LCBjb25zaWRlcmluZyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgb3V0bGluZWQgaW4gdGhlIHByb21wdD9cblxuVGhlIHByb21wdCBzYXlzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgaW50byBjYXRlZ29yaWVzIGxpa2Ugc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzICpwcmVjaXNlbHkqIHRoZSBjYXNlIGhlcmUuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IFFvcklRIERQQUEyIGlzIEFSTTY0IG9yIFBvd2VyUEMgYmFzZWQuIFdlJ3JlIG9uIGFtZDY0LiBDYW4gYENPTkZJR19GU0xfTUNfQlVTYCBvciBldmVuIGBDT05GSUdfVkZJT19GU0xfTUNgICpwb3NzaWJseSogYmUgcmVsZXZhbnQgb24gYW1kNjQsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlcmUncyBsaWtlbHkgbm8gRFBBQTIgaGFyZHdhcmUgcHJlc2VudD9cblxuTGV0J3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AuIEFoYSEgSXQgY29uZmlybXMgbXkgc3VzcGljaW9uczogdGhlIGBGU0xfTUNfQlVTYCBkcml2ZXIgcmVxdWlyZXMgYE9GYCAoRGV2aWNlIFRyZWUpLCB3aGljaCBpcyB0eXBpY2FsIGZvciBlbWJlZGRlZCBzeXN0ZW1zLCAqYW5kKiBlaXRoZXIgYEFSQ0hfTEFZRVJTQ0FQRWAgKGEgTGF5ZXJzY2FwZS1zcGVjaWZpYyBwbGF0Zm9ybSkgb3IsIHZpYSBgQ09NUElMRV9URVNUYCwgcG90ZW50aWFsbHkgb3RoZXIgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTSwgQVJNNjQsIFg4Nl9MT0NBTF9BUElDLCBvciBQUEMuIEhvd2V2ZXIsIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGlzOiBldmVuIGlmIHdlIHNvbWVob3cgaGF2ZSBgQ09NUElMRV9URVNUYCBlbmFibGVkLCBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoYXQgUUVNVSwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2UncmUgbGlrZWx5IHVzaW5nLCBpcyBlbXVsYXRpbmcgYW4gZnNsLW1jIGRldmljZT8gQWJzb2x1dGVseSBub3QuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZSBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIG9yIHRoZSB2YXJpb3VzIGRldmljZXMgdGhhdCB3b3VsZCBsaXZlIG9uIGl0IChEUFJDLCBEUE1DUCwgZXRjLikuXG5cbkZ1cnRoZXJtb3JlLCBRb3JJUSBEUEFBMiBpcyBleHBsaWNpdGx5IGFuIE5YUCBMYXllcnNjYXBlIEFSTTY0IC8gUG93ZXJQQyBTb0Mtc3BlY2lmaWMgYnVzIGhhcmR3YXJlLiBUaGUgcGF0aCB0byBgdmZpb19mc2xfbWNfbW1hcGAgcmVxdWlyZXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gYSBgL2Rldi92ZmlvLypgIGRldmljZSBub2RlLiBUaGF0IG5vZGUgbXVzdCByZXByZXNlbnQgYW4gYGZzbF9tY19kZXZpY2VgIGJvdW5kIHRvIGB2ZmlvLWZzbC1tY2AuIEluIHR1cm4sIGZvciBgdmZpby1mc2wtbWNgIHRvIHByb2JlIGFuZCByZWdpc3RlciBhIHZmaW8gZGV2aWNlLCBhbiBgZnNsX21jX2RldmljZWAgKm11c3QqIGV4aXN0IG9uIHRoZSBgZnNsX21jX2J1c2AuIEFuZCBmb3IgdGhlIGBmc2xfbWNfYnVzYCB0byBjcmVhdGUgYW55IGRldmljZXMsIGl0IG5lZWRzIHRvIHByb2JlIHRoZSBgZnNsX21jX2J1c19kcml2ZXJgIHBsYXRmb3JtIGRldmljZSB2aWEgYW4gT0YvQUNQSSBub2RlIChsaWtlIHRoZSBOWFAwMDA4IG5vZGUpLCBhbmQgdWx0aW1hdGVseSBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwaHlzaWNhbCBNQyAoTWFuYWdlbWVudCBDb21wbGV4KSBmaXJtd2FyZS4gVGhpcyBjb21tdW5pY2F0aW9uIGhhcHBlbnMgdmlhIE1NSU8gcmVnaXN0ZXJzLCB3aGVyZSBpdCBzZW5kcyBNQyBjb21tYW5kcyAodmlhIGBtY19zZW5kX2NvbW1hbmRgKSB0byBkaXNjb3ZlciBEUFJDIGNvbnRhaW5lcnMuIEluIGEgbnV0c2hlbGwsIHdpdGhvdXQgdGhlICpwaHlzaWNhbCogTUMgZmlybXdhcmUsIGhhcmR3YXJlIEFTSUMsICpvciogYSBRRU1VIGVtdWxhdGlvbiBvZiBEUEFBMiBNQywgbm8gZGV2aWNlcyBjYW4gZXZlciBiZSBlbnVtZXJhdGVkIG9yIGFkZGVkIHRvIHRoZSBmc2wtbWMgYnVzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgcXVpY2tseSBncmVwIHRoZSBrZXJuZWwgc291cmNlIGZvciBzb21ldGhpbmcgbGlrZSBgZnNsX21jX2RldmljZV9hZGRgIHRvIG1ha2UgZG91Ymx5IGNlcnRhaW4gdGhlcmUncyBub3RoaW5nIHNuZWFreSBnb2luZyBvbi5cblxuKipDb25jbHVzaW9uOioqIEl0J3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIG9uIGFtZDY0LiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MDMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTozNi4zNTI4NjQ2MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI1OTM4NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbF9tY19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yMD1zdHJ1Y3QgZnNsX21jX2NoaWxkX29ianMge1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjQtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MjU6c3RhdGljIGJvb2wgZnNsX21jX2RldmljZV9tYXRjaChjb25zdCBzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTI2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MzI9c3RhdGljIGJvb2wgZnNsX21jX29ial9kZXNjX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9iailcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQxLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjQyOnN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZV9pZl9ub3RfaW5fbWMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQzLXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ1LVxcdHN0cnVjdCBmc2xfbWNfY2hpbGRfb2JqcyAqb2JqcztcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo0NjpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2O1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTQ3LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTAtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTE6XFx0bWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUyLVxcdG9ianMgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTctXFx0XFx0aWYgKHN0cmxlbihvYmpfZGVzYy1cXHUwMDNldHlwZSkgIT0gMCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjU4OlxcdFxcdCAgICBmc2xfbWNfZGV2aWNlX21hdGNoKG1jX2Rldiwgb2JqX2Rlc2MpKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjItXFx0aWYgKGkgPT0gb2Jqcy1cXHUwMDNlY2hpbGRfY291bnQpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjM6XFx0XFx0ZnNsX21jX2RldmljZV9yZW1vdmUobWNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02NC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTY3LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjY4OnN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjkte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzItXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzM6XFx0ZnNsX21jX2RldmljZV9yZW1vdmUodG9fZnNsX21jX2RldmljZShkZXYpKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg4LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjg5OnZvaWQgZHByY19yZW1vdmVfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy05MC1cXHRcXHRcXHQgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2NfYXJyYXksXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMDItXFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZvYmpzLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEwMzpcXHRcXHRcXHRcXHQgICAgICBfX2ZzbF9tY19kZXZpY2VfcmVtb3ZlX2lmX25vdF9pbl9tYyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTA0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMDktXFx0XFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsIE5VTEwsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTEwOlxcdFxcdFxcdFxcdCAgICAgIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTExMS1cXHR9XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xMTM9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19yZW1vdmVfZGV2aWNlcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE0LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjExNTpzdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTE2LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMTctXFx0Y29uc3Qgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MgPSBkYXRhO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjExODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTExOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMjA6XFx0cmV0dXJuIGZzbF9tY19kZXZpY2VfbWF0Y2gobWNfZGV2LCBvYmpfZGVzYyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTIxLX1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMjItXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTIzOnN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMjQ6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTI1LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEyOC1cXHRkZXYgPSBkZXZpY2VfZmluZF9jaGlsZChcXHUwMDI2bWNfYnVzX2Rldi1cXHUwMDNlZGV2LCBvYmpfZGVzYyxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxMjk6XFx0XFx0XFx0XFx0X19mc2xfbWNfZGV2aWNlX21hdGNoKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzAtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTMxOlxcdHJldHVybiBkZXYgPyB0b19mc2xfbWNfZGV2aWNlKGRldikgOiBOVUxMO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzMi19XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDQtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQ1OnN0YXRpYyB2b2lkIGNoZWNrX3BsdWdnZWRfc3RhdGVfY2hhbmdlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTQ2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYylcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE2OC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxNjk6c3RhdGljIHZvaWQgZnNsX21jX29ial9kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTcyLVxcdGludCBlcnJvcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxNzM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKmNoaWxkX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzctXFx0ICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTc4OlxcdGNoaWxkX2RldiA9IGZzbF9tY19kZXZpY2VfbG9va3VwKG9ial9kZXNjLCBtY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNzktXFx0aWYgKGNoaWxkX2Rldikge1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTgyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlxcdFxcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQob2JqX2Rlc2MsIE5VTEwsIFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTg0LVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmNoaWxkX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yMDEtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MjAyOnN0YXRpYyB2b2lkIGRwcmNfYWRkX25ld19kZXZpY2VzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIwMy1cXHRcXHRcXHRcXHQgc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2NfYXJyYXksXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNDQtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MjQ1OmludCBkcHJjX3NjYW5fb2JqZWN0cyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0yNDYtXFx0XFx0ICAgICAgYm9vbCBhbGxvY19pbnRlcnJ1cHRzKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzYzLSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjM2NDppbnQgZHByY19zY2FuX2NvbnRhaW5lcihzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNjUtXFx0XFx0XFx0Ym9vbCBhbGxvY19pbnRlcnJ1cHRzKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9Mzg5PXN0YXRpYyBpcnFyZXR1cm5fdCBkcHJjX2lycTBfaGFuZGxlcl90aHJlYWQoaW50IGlycV9udW0sIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM5My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBhcmc7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6Mzk0OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMzk1LVxcdHN0cnVjdCBmc2xfbWNfYnVzICptY19idXMgPSB0b19mc2xfbWNfYnVzKG1jX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy00NTYtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NDU3OmludCBkaXNhYmxlX2RwcmNfaXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNDU4LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwMC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MDE6aW50IGdldF9kcHJjX2lycV9zdGF0ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwMi17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy01MDctXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NTA4OnN0YXRpYyBpbnQgcmVnaXN0ZXJfZHByY19pcnFfaGFuZGxlcihzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTUwOS17XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTEwLVxcdGludCBlcnJvcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1MTE6XFx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXFx1MDAzZWlycXNbMF07XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTEyLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTMzLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjUzNDppbnQgZW5hYmxlX2RwcmNfaXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNTM1LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU3MS0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo1NzI6c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTU3My17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDctXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjA4OmludCBkcHJjX3NldHVwKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjA5LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTcxMT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX3NldHVwKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcyMi0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3MjM6c3RhdGljIGludCBkcHJjX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzI0LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc0OC1zY2FuX2NsZWFudXA6XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzQ5OlxcdGRldmljZV9mb3JfZWFjaF9jaGlsZChcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsIE5VTEwsIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTc1MC1kcHJjX2NsZWFudXA6XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NTctICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzU4OnN0YXRpYyB2b2lkIGRwcmNfdGVhcmRvd25faXJxKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzU5LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3NjA6XFx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICppcnEgPSBtY19kZXYtXFx1MDAzZWlycXNbMF07XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzYxLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzc3LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc3ODppbnQgZHByY19jbGVhbnVwKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzc5LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTgxNT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX2NsZWFudXApO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODI2LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgyNzpzdGF0aWMgdm9pZCBkcHJjX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgyOC17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MzgtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODM5OlxcdGRldmljZV9mb3JfZWFjaF9jaGlsZChcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsIE5VTEwsIF9fZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0MC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTg0NS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lkIG1hdGNoX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODQ3LVxcdHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTQtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxNTpzdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xNi17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX2FkZF9kZXZpY2Uoc3RydWN0IGZzbF9tY19idXNcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cG9vbF90eXBlLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGZzbF9tY19kZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCptY19kZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM4LVxcdHN0cnVjdCBmc2xfbWNfcmVzb3VyY2UgKnJlc291cmNlO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6Mzk6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYgPSBcXHUwMDI2bWNfYnVzLVxcdTAwM2VtY19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MC1cXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05Ni0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk3OnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZzbF9tY19yZXNvdXJjZV9wb29sX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGZzbF9tY19kZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05OS17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxMDA6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xMDEtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMTA1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTA2OlxcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xMDctXFx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyhtY19idXNfZGV2KTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MTgxPWludCBfX211c3RfY2hlY2sgZnNsX21jX3Jlc291cmNlX2FsbG9jYXRlKHN0cnVjdCBmc2xfbWNfYnVzICptY19idXMsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE4Ni1cXHRzdHJ1Y3QgZnNsX21jX3Jlc291cmNlICpyZXNvdXJjZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjE4NzpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IFxcdTAwMjZtY19idXMtXFx1MDAzZW1jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE4OC1cXHRpbnQgZXJyb3IgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0yNTQ9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3Jlc291cmNlX2ZyZWUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzMtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNzQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNzUtXFx0XFx0XFx0XFx0XFx0ZW51bSBmc2xfbWNfcG9vbF90eXBlIHBvb2xfdHlwZSxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3NjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19hZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjc3LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI3ODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI3OS1cXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MjgwOlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19hZGV2O1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjgxLVxcdGludCBlcnJvciA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI5My1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI5NDpcXHRtY19idXNfZGV2ID0gdG9fZnNsX21jX2RldmljZShtY19kZXYtXFx1MDAzZWRldi5wYXJlbnQpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjk1LVxcdG1jX2J1cyA9IHRvX2ZzbF9tY19idXMobWNfYnVzX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI5OnZvaWQgZnNsX21jX29iamVjdF9mcmVlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19hZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzMwLXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzQzPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfZnJlZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTM1NC0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM1NTppbnQgZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzU2LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGlycV9jb3VudClcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzU4LVxcdHVuc2lnbmVkIGludCBpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzU5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lycSAqaXJxX3Jlc291cmNlcztcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM2MDpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKm1jX2Rldl9pcnE7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNjEtXFx0aW50IGVycm9yO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00MTE9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE2LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDE3OnZvaWQgZnNsX21jX2NsZWFudXBfaXJxX3Bvb2woc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MTgte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2NsZWFudXBfaXJxX3Bvb2wpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NDItICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0NDM6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfYWxsb2NhdGVfaXJxcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQ0LXtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQ4LVxcdGludCBlcnJvciA9IC1FSU5WQUw7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0NDk6XFx0c3RydWN0IGZzbF9tY19kZXZpY2VfaXJxICoqaXJxcyA9IE5VTEw7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NTAtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDYyLVxcdGVsc2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ2MzpcXHRcXHRtY19idXMgPSB0b19mc2xfbWNfYnVzKHRvX2ZzbF9tY19kZXZpY2UobWNfZGV2LVxcdTAwM2VkZXYucGFyZW50KSk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00NjQtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUwNj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYWxsb2NhdGVfaXJxcyk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjUxMTp2b2lkIGZzbF9tY19mcmVlX2lycXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMi17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxNS1cXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTE2OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lycSAqKmlycXMgPSBtY19kZXYtXFx1MDAzZWlycXM7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUyNS1cXHRlbHNlXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1MjY6XFx0XFx0bWNfYnVzID0gdG9fZnNsX21jX2J1cyh0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCkpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTI3LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz01Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2ZyZWVfaXJxcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MzktXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NDA6dm9pZCBmc2xfbWNfaW5pdF9hbGxfcmVzb3VyY2VfcG9vbHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NDEte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjEtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NjI6c3RhdGljIGludCBmc2xfbWNfYWxsb2NhdG9yX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjMte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTY0LVxcdGVudW0gZnNsX21jX3Bvb2xfdHlwZSBwb29sX3R5cGU7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1NjU6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NjYtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTcxLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTcyOlxcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01NzMtXFx0aWYgKCFkZXZfaXNfZnNsX21jKFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYpKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01OTMtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1OTQ6c3RhdGljIHZvaWQgZnNsX21jX2FsbG9jYXRvcl9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU5NS17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwODpzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9tY19kZXZpY2VfaWQgbWF0Y2hfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwOS1cXHR7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTQyPXN0cnVjdCBmc2xfbWMge1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NDM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfYnVzX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTQ0LVxcdHU4IG51bV90cmFuc2xhdGlvbl9yYW5nZXM7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTkwPXN0YXRpYyBpbnQgZnNsX21jX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MS17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MjpcXHRjb25zdCBzdHJ1Y3QgZnNsX21jX2RldmljZV9pZCAqaWQ7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5MzpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTQtXFx0Y29uc3Qgc3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RydiA9IHRvX2ZzbF9tY19kcml2ZXIoZHJ2KTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDAte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQxOlxcdGNvbnN0IHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDItXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTE1MT1zdGF0aWMgaW50IGZzbF9tY19wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE1My1cXHRzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJ2ID0gdG9fZnNsX21jX2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxNTQ6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE1NS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTYyPXN0YXRpYyB2b2lkIGZzbF9tY19yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNjQtXFx0c3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RydiA9IHRvX2ZzbF9tY19kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTY1OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNjYtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTE3MT1zdGF0aWMgdm9pZCBmc2xfbWNfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNzMtXFx0c3RydWN0IGZzbF9tY19kcml2ZXIgKm1jX2RydiA9IHRvX2ZzbF9tY19kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTc0OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNzUtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTE4MD1zdGF0aWMgaW50IGZzbF9tY19kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTgzLVxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSBkZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxODQ6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTE4NS1cXHR1MzIgaW5wdXRfaWQgPSBtY19kZXYtXFx1MDAzZWljaWQ7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTIxND1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIxNi17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTc6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIxOC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MjMxPXN0YXRpYyBpbnQgc2Nhbl9mc2xfbWNfYnVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIzMi17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMzM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKnJvb3RfbWNfZGV2O1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjM0LVxcdHN0cnVjdCBmc2xfbWNfYnVzICpyb290X21jX2J1cztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjM4LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjM5OlxcdHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjQwLVxcdHJvb3RfbWNfYnVzID0gdG9fZnNsX21jX2J1cyhyb290X21jX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTI2ND1zdGF0aWMgaW50IGZzbF9tY19idXNfc2V0X2F1dG9yZXNjYW4oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjY1LXtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI2NjpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqcm9vdF9tY19kZXY7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNjctXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI3Mi1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjI3MzpcXHRyb290X21jX2RldiA9IHRvX2ZzbF9tY19kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9Mjg3PXN0YXRpYyBpbnQgZnNsX21jX2J1c19nZXRfYXV0b3Jlc2NhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yODgte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjg5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICpyb290X21jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI5MC1cXHRjaGFyICpidWYgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yOTQtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTU6XFx0cm9vdF9tY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yOTYtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTU4ND1zdGF0aWMgaW50IGdldF9kcHJjX2ljaWQoc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTU5Ni1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjU5NzpzdGF0aWMgaW50IHRyYW5zbGF0ZV9tY19hZGRyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy01OTgtXFx0XFx0XFx0ICAgICBlbnVtIGRwcmNfcmVnaW9uX3R5cGUgbWNfcmVnaW9uX3R5cGUsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTYzMS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjYzMjpzdGF0aWMgaW50IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NjMzOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy02MzQte1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03Mjc9Ym9vbCBmc2xfbWNfaXNfcm9vdF9kcHJjKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzM2LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzM3OnN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03Mzgte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzM5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDAtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1MjppbnQgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTMtXFx0XFx0ICAgICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTQtXFx0XFx0ICAgICAgc3RydWN0IGRldmljZSAqcGFyZW50X2RldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1NTpcXHRcXHQgICAgICBzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19kZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTYte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzU3LVxcdGludCBlcnJvcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1ODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gTlVMTDtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1OS1cXHRzdHJ1Y3QgZnNsX21jX2J1cyAqbWNfYnVzID0gTlVMTDtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc2MDpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqcGFyZW50X21jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc2MS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc2Mi1cXHRpZiAoZGV2X2lzX2ZzbF9tYyhwYXJlbnRfZGV2KSlcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc2MzpcXHRcXHRwYXJlbnRfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShwYXJlbnRfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc2NC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc3OC1cXHRcXHQvKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Nzc5OlxcdFxcdCAqIEFsbG9jYXRlIGEgcmVndWxhciBmc2xfbWNfZGV2aWNlIG9iamVjdDpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc4MC1cXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkwLVxcdG1jX2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZmc2xfbWNfYnVzX3R5cGU7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTE6XFx0bWNfZGV2LVxcdTAwM2VkZXYucmVsZWFzZSA9IGZzbF9tY19kZXZpY2VfcmVsZWFzZTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc5Mi1cXHRtY19kZXYtXFx1MDAzZWRldi50eXBlID0gZnNsX21jX2dldF9kZXZpY2VfdHlwZShvYmpfZGVzYy1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg1Mi1cXHRpZiAocGFyZW50X21jX2RldiBcXHUwMDI2XFx1MDAyNiBvYmpfZGVzYy1cXHUwMDNlcmVnaW9uX2NvdW50ICE9IDApIHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg1MzpcXHRcXHRlcnJvciA9IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhtY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NTQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHBhcmVudF9tY19kZXYpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODgwOkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19kZXZpY2VfYWRkKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4MS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODYtICogTGludXhcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODkwOnZvaWQgZnNsX21jX2RldmljZV9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg5MS17XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg5Ny19XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4OTg6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2RldmljZV9yZW1vdmUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODk5LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTAwOnN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZ2V0X2VuZHBvaW50KHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MDEtXFx0XFx0XFx0XFx0XFx0ICB1MTYgaWZfaWQpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MDIte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTAzOlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LCAqZW5kcG9pbnQ7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MDQtXFx0c3RydWN0IGZzbF9tY19vYmpfZGVzYyBlbmRwb2ludF9kZXNjID0ge3sgMCB9fTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTA5LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6OTEwOlxcdG1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1jX2Rldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MTEtXFx0c3RyY3B5KGVuZHBvaW50MS50eXBlLCBtY19kZXYtXFx1MDAzZW9ial9kZXNjLnR5cGUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy05MjktXFx0ZW5kcG9pbnRfZGVzYy5pZCA9IGVuZHBvaW50Mi5pZDtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzMDpcXHRlbmRwb2ludCA9IGZzbF9tY19kZXZpY2VfbG9va3VwKFxcdTAwMjZlbmRwb2ludF9kZXNjLCBtY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzMS1cXHRpZiAoZW5kcG9pbnQpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTk0Ny1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjk0ODpcXHRlbmRwb2ludCA9IGZzbF9tY19kZXZpY2VfbG9va3VwKFxcdTAwMjZlbmRwb2ludF9kZXNjLCBtY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTk0OS1cXHQvKlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDQzLVxcdHN0cnVjdCBmc2xfbWMgKm1jO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTA0NDpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IE5VTEw7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDQ1LVxcdHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1Ny1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjExNTg6XFx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcXHUwMDI2b2JqX2Rlc2MsIG1jX2lvLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWNfYnVzX2Rldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU5LVxcdGlmIChlcnJvciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTExNzU9c3RhdGljIHZvaWQgZnNsX21jX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4MC1cXHRtY19pbyA9IG1jLVxcdTAwM2Vyb290X21jX2J1c19kZXYtXFx1MDAzZW1jX2lvO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4MTpcXHRmc2xfbWNfZGV2aWNlX3JlbW92ZShtYy1cXHUwMDNlcm9vdF9tY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExODItXFx0ZnNsX2Rlc3Ryb3lfbWNfaW8obWNfaW8pO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYz0xOD1zdGF0aWMgdm9pZCBmc2xfbWNfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTkte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MjA6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMjEtXFx0c3RydWN0IGZzbF9tY19idXMgKm1jX2J1cyA9IHRvX2ZzbF9tY19idXMobWNfYnVzX2Rldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYzoyMjpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZV9pcnEgKm1jX2Rldl9pcnEgPSBcXHUwMDI2bWNfYnVzLVxcdTAwM2VpcnFfcmVzb3VyY2VzW21zaV9kZXNjLVxcdTAwM2Vtc2lfaW5kZXhdO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MjM6XFx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm93bmVyX21jX2RldiA9IG1jX2Rldl9pcnEtXFx1MDAzZW1jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jLTI0LVxcdHN0cnVjdCBkcHJjX2lycV9jZmcgaXJxX2NmZztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM9NzY9c3RydWN0IGlycV9kb21haW4gKmZzbF9tY19nZXRfbXNpX3BhcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy03Ny17XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYzo3ODpcXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShkZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtNzktXFx0c3RydWN0IGRldmljZSAqcm9vdF9kcHJjX2RldjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM9MTA3PXUzMiBmc2xfbWNfZ2V0X21zaV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xMDgte1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmM6MTA5OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB0b19mc2xfbWNfZGV2aWNlKGRldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xMTAtXFx0c3RydWN0IGRldmljZSAqcm9vdF9kcHJjX2RldjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oPTYwMT1zdHJ1Y3QgZnNsX21jX2J1cyB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjAyOlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlIG1jX2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MDMtXFx0c3RydWN0IGZzbF9tY19yZXNvdXJjZV9wb29sIHJlc291cmNlX3Bvb2xzW0ZTTF9NQ19OVU1fUE9PTF9UWVBFU107XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjA0OlxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlX2lycSAqaXJxX3Jlc291cmNlcztcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MDUtXFx0c3RydWN0IG11dGV4IHNjYW5fbXV0ZXg7ICAgIC8qIHNlcmlhbGl6ZXMgYnVzIHNjYW5uaW5nICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTMtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjE0OmludCBfX211c3RfY2hlY2sgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjE1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlICpwYXJlbnRfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZnNsX21jX2RldmljZSAqKm5ld19tY19kZXYpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTk6dm9pZCBmc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MjAtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MjM9dm9pZCBkcHJjX2RyaXZlcl9leGl0KHZvaWQpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyNC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MjU6aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYyNi1cXHRcXHQgICAgICBib29sIGFsbG9jX2ludGVycnVwdHMpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NjI4PWludCBfX2luaXQgZnNsX21jX2FsbG9jYXRvcl9kcml2ZXJfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MjktXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NjMwOnZvaWQgZnNsX21jX2luaXRfYWxsX3Jlc291cmNlX3Bvb2xzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2KTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MzEtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MzcuMDc4ODEyNjZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTE4OTA2MTkxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogdmZpb19mc2xfbWMgaXMgVW5mdXp6YWJsZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBgZnNsLW1jYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYHZmaW9fZnNsX21jLmNgLiBUaGlzIGNvZGUgaXMgaW50aW1hdGVseSB0aWVkIHRvIE5YUCBMYXllcnNjYXBlIFNvQ3MgbGlrZSB0aGUgTFMxMDg4QSwgTFMyMDgwQSwgYW5kIHNpbWlsYXIsIGRlYWxpbmcgd2l0aCB0aGVpciBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXguIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIEFscmVhZHksIEknbSBzZWVpbmcgYSBwcm9ibGVtLiBUaGVzZSBkZXZpY2VzLCB0aGUgZnNsLW1jIGhhcmR3YXJlIGFuZCB0aGUgRFBBQTIsIGFyZSAqbm90KiBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIEFuZCB3ZSBoYXZlIGEgZ3VpZGVsaW5lIHRoYXQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBjb2RlIHJlbGlhbnQgb24gaGFyZHdhcmUgdW5hdmFpbGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCwgaXMgbm90IHNvbWV0aGluZyB0byBiZSBmdXp6ZWQuIFRoYXQncyBhIGh1Z2UgcmVkIGZsYWcuXG5cblRoZSBndWlkZWxpbmVzIGFyZSBwcmV0dHkgY2xlYXI6IFwiUmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGVcIi4gSWYgaXQgY2FuJ3QgcnVuLCBpdCBzaG91bGRuJ3QgYmUgZnV6emVkLiBBbHNvLCB3ZSBoYXZlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIsIHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBzcGVjaWFsaXplZCBkcml2ZXJzLiBUaG9zZSBraW5kcyBvZiB0aGluZ3MgYXJlbid0IHNvbWV0aGluZyB3ZSBjYW4gcmVsaWFibHkgdGVzdCBvciBjb3ZlciBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoaXMgZmFsbHMgcmlnaHQgaW50byB0aGF0IGNhdGVnb3J5LlxuXG5TbywgYHZmaW9fZnNsX21jLmNgIGlzIG9mZiB0aGUgdGFibGUuIFRoZSBkcml2ZXIsIGB2ZmlvX2ZzbF9tY19kcml2ZXJgLCByZWdpc3RlcnMgaXRzZWxmIG9uIHRoZSBgZnNsX21jX2J1c190eXBlYC4gIFRoYXQgYnVzIGlzIG9ubHkgcG9wdWxhdGVkIHRocm91Z2ggQUNQSSBhbmQgZGV2aWNlIG5vZGVzIHRhbGtpbmcgdG8gTUMgZmlybXdhcmUgcmVnaXN0ZXJzLCBzcGVjaWZpY2FsbHkgYE5YUDAwMDhgIEFDUEkgb3IgYGZzbCxxb3JpcS1tY2AgT0YgZGV2aWNlIG5vZGVzLiBUaGVyZSdzIG5vIHZpcnR1YWwgb3Igc29mdHdhcmUtZW11bGF0ZWQgZXF1aXZhbGVudC4gSXQncyBhbGwgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB0aGF0J3MgYSBkZWFkIGVuZC4gVGhlcmVmb3JlLCBpdCdzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9mIGFtZDY0LiBJdCBzaW1wbHkgaXNuJ3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHByb2JlZCBvciBleGVyY2lzZWQgaW4gYSBzdGFuZGFyZCBRRU1VIFZNLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgbXkgY29uY2x1c2lvbiBpcyB0aGF0IGl0J3MgdW5mZWFzaWJsZSB0byBmdXp6IHRoaXMgY29kZS4gV2UncmUgc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLCBgRm9jdXNTeW1ib2xzYCB0byBhbiBlbXB0eSBsaXN0LCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIGFuIGVtcHR5IGxpc3QsIGFuZCBwcm92aWRpbmcgdGhlIHJhdGlvbmFsZSBhcyBkZXNjcmliZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzA5LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTo0OC45Njk0MzQ2MTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMsIHdoaWNoIHByb3ZpZGVzIFZGSU8gcGFzc3Rocm91Z2ggc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBmc2wtbWMgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcyBvbiBMYXllcnNjYXBlIFNvQ3MuIFRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGZpcm13YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgYW1kNjQgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYywgd2hpY2ggcHJvdmlkZXMgVkZJTyBwYXNzdGhyb3VnaCBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIGZzbC1tYyAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzIG9uIExheWVyc2NhcGUgU29Dcy4gVGhpcyBkcml2ZXIgcmVsaWVzIG9uIHBoeXNpY2FsIFNvQyBoYXJkd2FyZSBhbmQgZmlybXdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSBhbWQ2NCB0YXJnZXQgYXJjaGl0ZWN0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6NDguOTY5NDU3NzgyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownbsrl[1] Phase: Running StartedAt: 2026-09-04 14:05:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownbsrl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 14:05:59 +0000 UTC FinishedAt: 2026-09-04 14:06: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,}