Name: series-workflowxvl29 Phase: Failed StartedAt: 2026-09-02 20:06:44 +0000 UTC FinishedAt: 2026-09-02 20:22:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvl29[0] Phase: Succeeded StartedAt: 2026-09-02 20:06:44 +0000 UTC FinishedAt: 2026-09-02 20:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvl29[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 20:06:44 +0000 UTC FinishedAt: 2026-09-02 20:22:36 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIGVycm9yLXVud2luZGluZyBhbmQgbW9kdWxlIHRlYXJkb3duIGNsZWFudXAgZm9yIExvb25nQXJjaCBLVk0gZGV2aWNlIHJlZ2lzdHJhdGlvbiAodW5yZWdpc3RlcmluZyBLVk0gZGV2aWNlIG9wcyBvbiBtb2R1bGUgZXhpdCBvciBpbml0IGZhaWx1cmUpLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJ1bnRpbWUgZGV2aWNlIGVtdWxhdGlvbiwgaW9jdGxzLCBvciBjb3JlIGV4ZWN1dGlvbiBwYXRocyB0aGF0IHdhcnJhbnQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZTY3ZjMxY2QxMWEwYTZhMzI3MzQyMDE0OTE1YzBkNzZmN2QyZmE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMDoyMTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaFxuaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbkBAIC0yMCw2ICYjNDM7MjAsNyBAQCBzdHJ1Y3QgZG1zaW50Y19zdGF0ZSB7XG4gfTtcbiBcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcbiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZCk7XG4gdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgZG1zaW50Y19zZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGFkZHIsIGludCBkYXRhLCBpbnQgbGV2ZWwpO1xuIGludCBkbXNpbnRjX2RlbGl2ZXJfbXNpX3RvX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB2ZWN0b3IsIGludCBsZXZlbCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmhcbmluZGV4IDhiN2EyZmEzZjdmODYuLjk2MzNmYmZjMDY2ZDYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXG5AQCAtNzksNiAmIzQzOzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHtcbiB9O1xuIFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcbiB2b2lkIGVpb2ludGNfc2V0X2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbCk7XG4gXG4gI2VuZGlmIC8qIF9fQVNNX0tWTV9FSU9JTlRDX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcbmluZGV4IDA2MDE2M2RmYjRhMzguLmQxZDcyZDRiYjhkMTUgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaFxuQEAgLTQxLDUgJiM0Mzs0MSw2IEBAIHN0cnVjdCBpcGlfc3RhdGUge1xuICNkZWZpbmUgSU9DU1JfQU5ZX1NFTkRcdFx0MHgxNThcbiBcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXG5pbmRleCBlNzRiM2I3NDI2MzRkLi44ODdiMDQzMWZkMjA2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuQEAgLTcwLDYgJiM0Mzs3MCw3IEBAIHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyB7XG4gXG4gc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnk7XG4gaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XG4mIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpO1xuIHZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcbiBpbnQgcGNoX21zaV9zZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsIGludCBsZXZlbCk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXG5pbmRleCBiYjcyODVjNDlkZjNhLi5jN2Q4ODQxZGY5NmZhIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9kbXNpbnRjLmNcbkBAIC0xODAsMyAmIzQzOzE4MCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9kbXNpbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7XG4gfVxuJiM0MztcbiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcbiYjNDM7e1xuJiM0MztcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9ETVNJTlRDKTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuaW5kZXggODRkODRiZDQzMmQ3NC4uODBmNzhlMDdjNzRhNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXG5AQCAtNjk1LDMgJiM0Mzs2OTUsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuIHtcbiBcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcdTAwMjZrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXG5pbmRleCBmY2ZhZjFhNjY3OTBiLi43YjMzM2E0YTA0MzBmIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXG5AQCAtNDYzLDMgJiM0Mzs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9pcGlfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZClcbiYjNDM7e1xuJiM0MztcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXG5pbmRleCBlN2I3NzcwNWM1MTZhLi44M2ZhMjM4NmNmODE4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmNcbkBAIC01MDAsMyAmIzQzOzUwMCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9wY2hfcGljX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfUENIUElDKTtcbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX1BDSFBJQyk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuaW5kZXggM2UxMDA1NTI2ZjRiZC4uYzljYjNmYzJlNTYwNSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbkBAIC0zODUsMjcgJiM0MzszODUsNTEgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KHZvaWQpXG4gXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggSVBJIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiBcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZXJyX2VudjtcbiBcbiBcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBFSU9JTlRDIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiBcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHRnb3RvIGVycl9pcGk7XG4gXG4gXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggUENILVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXG4gXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBlcnJfZWlvaW50YztcbiBcbiBcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBETVNJTlRDIGludGVycnVwdCBjb250cnJvbGxlciBpbnRlcmZhY2UgKi9cbi1cdGlmIChjcHVfaGFzX21zZ2ludClcbiYjNDM7XHRpZiAoY3B1X2hhc19tc2dpbnQpIHtcbiBcdFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBlcnJfcGNoX3BpYztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX3BjaF9waWM6XG4mIzQzO1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG4mIzQzO2Vycl9laW9pbnRjOlxuJiM0MztcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuJiM0MztlcnJfaXBpOlxuJiM0MztcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XG4mIzQzO2Vycl9lbnY6XG4mIzQzO1x0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcbiYjNDM7XHRrZnJlZShrdm1fbG9vbmdhcmNoX29wcyk7XG4mIzQzO1x0a3ZtX2xvb25nYXJjaF9vcHMgPSBOVUxMO1xuJiM0MztcdGZyZWVfcGVyY3B1KHZtY3MpO1xuJiM0MztcdHZtY3MgPSBOVUxMO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHZvaWQga3ZtX2xvb25nYXJjaF9lbnZfZXhpdCh2b2lkKVxuIHtcbiYjNDM7XHRpZiAoY3B1X2hhc19tc2dpbnQpXG4mIzQzO1x0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcbiYjNDM7XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbiYjNDM7XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbiYjNDM7XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuJiM0MztcbiBcdGlmICh2bWNzKVxuIFx0XHRmcmVlX3BlcmNwdSh2bWNzKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJlNjdmMzFjZDExYTBhNmEzMjczNDIwMTQ5MTVjMGQ3NmY3ZDJmYTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDIwOjIxOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmgKaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oCkBAIC0yMCw2ICYjNDM7MjAsNyBAQCBzdHJ1Y3QgZG1zaW50Y19zdGF0ZSB7CiB9OwogCiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTsKJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTsKIHZvaWQgZG1zaW50Y19pbmplY3RfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBpbnQgZG1zaW50Y19zZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGFkZHIsIGludCBkYXRhLCBpbnQgbGV2ZWwpOwogaW50IGRtc2ludGNfZGVsaXZlcl9tc2lfdG9fdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHZlY3RvciwgaW50IGxldmVsKTsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oCmluZGV4IDhiN2EyZmEzZjdmODYuLjk2MzNmYmZjMDY2ZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaApAQCAtNzksNiAmIzQzOzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHsKIH07CiAKIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpOwomIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpOwogdm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpOwogCiAjZW5kaWYgLyogX19BU01fS1ZNX0VJT0lOVENfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oCmluZGV4IDA2MDE2M2RmYjRhMzguLmQxZDcyZDRiYjhkMTUgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmgKQEAgLTQxLDUgJiM0Mzs0MSw2IEBAIHN0cnVjdCBpcGlfc3RhdGUgewogI2RlZmluZSBJT0NTUl9BTllfU0VORAkJMHgxNTgKIAogaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKTsKJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oCmluZGV4IGU3NGIzYjc0MjYzNGQuLjg4N2IwNDMxZmQyMDYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaApAQCAtNzAsNiAmIzQzOzcwLDcgQEAgc3RydWN0IGxvb25nYXJjaF9wY2hfcGljIHsKIAogc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnk7CiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTsKJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTsKIHZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTsKIGludCBwY2hfbXNpX3NldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSwgaW50IGxldmVsKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jCmluZGV4IGJiNzI4NWM0OWRmM2EuLmM3ZDg4NDFkZjk2ZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9kbXNpbnRjLmMKQEAgLTE4MCwzICYjNDM7MTgwLDggQEAgaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZCkKIHsKIAlyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoJmFtcDtrdm1fZG1zaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0RNU0lOVEMpOwogfQomIzQzOwomIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpCiYjNDM7ewomIzQzOwlrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jCmluZGV4IDg0ZDg0YmQ0MzJkNzQuLjgwZjc4ZTA3Yzc0YTYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMKQEAgLTY5NSwzICYjNDM7Njk1LDggQEAgaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZCkKIHsKIAlyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoJmFtcDtrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpOwogfQomIzQzOwomIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpCiYjNDM7ewomIzQzOwlrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYwppbmRleCBmY2ZhZjFhNjY3OTBiLi43YjMzM2E0YTA0MzBmIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYwpAQCAtNDYzLDMgJiM0Mzs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpCiB7CiAJcmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKCZhbXA7a3ZtX2lwaV9kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7CiB9CiYjNDM7CiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKQomIzQzO3sKJiM0MzsJa3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jCmluZGV4IGU3Yjc3NzA1YzUxNmEuLjgzZmEyMzg2Y2Y4MTggMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMKQEAgLTUwMCwzICYjNDM7NTAwLDggQEAgaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCkKIHsKIAlyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoJmFtcDtrdm1fcGNoX3BpY19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX1BDSFBJQyk7CiB9CiYjNDM7CiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCkKJiM0Mzt7CiYjNDM7CWt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jCmluZGV4IDNlMTAwNTUyNmY0YmQuLmM5Y2IzZmMyZTU2MDUgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYwpAQCAtMzg1LDI3ICYjNDM7Mzg1LDUxIEBAIHN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKQogCS8qIFJlZ2lzdGVyIExvb25nQXJjaCBJUEkgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqLwogCXJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9lbnY7CiAKIAkvKiBSZWdpc3RlciBMb29uZ0FyY2ggRUlPSU5UQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovCiAJcmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9pcGk7CiAKIAkvKiBSZWdpc3RlciBMb29uZ0FyY2ggUENILVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovCiAJcmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9laW9pbnRjOwogCiAJLyogUmVnaXN0ZXIgTG9vbmdBcmNoIERNU0lOVEMgaW50ZXJydXB0IGNvbnRycm9sbGVyIGludGVyZmFjZSAqLwotCWlmIChjcHVfaGFzX21zZ2ludCkKJiM0MzsJaWYgKGNwdV9oYXNfbXNnaW50KSB7CiAJCXJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJZ290byBlcnJfcGNoX3BpYzsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfcGNoX3BpYzoKJiM0MzsJa3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7CiYjNDM7ZXJyX2Vpb2ludGM6CiYjNDM7CWt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpOwomIzQzO2Vycl9pcGk6CiYjNDM7CWt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7CiYjNDM7ZXJyX2VudjoKJiM0MzsJa3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTsKJiM0MzsJa2ZyZWUoa3ZtX2xvb25nYXJjaF9vcHMpOwomIzQzOwlrdm1fbG9vbmdhcmNoX29wcyA9IE5VTEw7CiYjNDM7CWZyZWVfcGVyY3B1KHZtY3MpOwomIzQzOwl2bWNzID0gTlVMTDsKIAogCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZCkKIHsKJiM0MzsJaWYgKGNwdV9oYXNfbXNnaW50KQomIzQzOwkJa3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7CiYjNDM7CWt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpOwomIzQzOwlrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTsKJiM0MzsJa3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTsKJiM0MzsKIAlpZiAodm1jcykKIAkJZnJlZV9wZXJjcHUodm1jcyk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZXZpZXdpbmcgYSBLVk0gUGF0Y2ggZm9yIExvb25nQXJjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O3ZlIGdvdCBhIExpbnV4IGtlcm5lbCBwYXRjaCBzZXJpZXMgaGVyZSB0aGF0IG5lZWRzIGEgY3JpdGljYWwgZXllLiBGaXJzdCwgbGV0JiMzOTtzIHF1aWNrbHkgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIGdyb3VuZCBydWxlcy4gVGhlIGNoYW5nZXMgYXJlIGluIHRoZSBIRUFEIGNvbW1pdCwgc28gdGhlIGNvZGUgaXMgYWxyZWFkeSBhcHBsaWVkLiBNeSBqb2IgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgbWVyaXRzIGZ1enppbmc7IGlmIHRoZXJlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBuZWVkIHRoYXQgbGV2ZWwgb2Ygc2NydXRpbnkuCgpJIG5lZWQgdG8gZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgY29zbWV0aWMgY2hhbmdlcyBsaWtlIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHMsIGNvbnN0YW50IHR3ZWFrcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24sIGNvZGUgcGF0aHMgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgdmVuZG9yLXNwZWNpZmljIHN0dWZmIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBvciBjZXJ0YWluIHRlYXJkb3duIGNhbGxiYWNrcy4gQmFzaWNhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gd2hhdCAqYWN0dWFsbHkqIGltcGFjdHMgaG93IHRoZSBrZXJuZWwgcnVucy4gTGV04oCZcyBzZWUgd2hhdCB3ZSBoYXZlLgoKT2theSwgY2hlY2tpbmcgdGhlIHBhdGNo4oCmIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV8qLmhgLCBgYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvKi5jYCwgYW5kIGBhcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jYC4gSG1tLCB3aGF0JiMzOTtzIHRoaXMgcGF0Y2ggYWN0dWFsbHkgZG9pbmc/IExvb2tzIGxpa2UgdGhlcmUgYXJlIG5ldyBga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyXypfZGV2aWNlKHZvaWQpYCBmdW5jdGlvbnMgYW5kIGVycm9yIGhhbmRsaW5nL2V4aXQgdW53aW5kaW5nIGluIGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KClgIGFuZCBga3ZtX2xvb25nYXJjaF9lbnZfZXhpdCgpYC4gCgpXYWl0LCBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGDigKYgdGhhdCYjMzk7cyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBLVk0gb24gTG9vbmdBcmNoLCByaWdodD8gTG9va3MgbGlrZSBlcnJvciBoYW5kbGluZyBhbmQgdW53aW5kIGNvZGUgaW4gdGhlIGt2bSBtb2R1bGUgaW5pdC9leGl0LCBzbyBJIG5lZWQgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNgIGluIGRldGFpbCB0byBkZXRlcm1pbmUgd2hhdCB0aG9zZSBuZXcgdW5yZWdpc3RlciBmdW5jdGlvbnMgYXJlIHJlbW92aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzgwOlx0XHR9XG4gMzgxOlx0XG4gMzgyOlx0XHRrdm1faW5pdF9nY3NyX2ZsYWcoKTtcbiAzODM6XHRcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIDM4NDpcdFxuIDM4NTpcdFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIElQSSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXG4gMzg2Olx0XHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcbiAzODc6XHRcdGlmIChyZXQpXG4gMzg4Olx0XHRcdGdvdG8gZXJyX2VudjtcbiAzODk6XHRcbiAzOTA6XHRcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBFSU9JTlRDIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiAzOTE6XHRcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbiAzOTI6XHRcdGlmIChyZXQpXG4gMzkzOlx0XHRcdGdvdG8gZXJyX2lwaTtcbiAzOTQ6XHRcbiAzOTU6XHRcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBQQ0gtUElDIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiAzOTY6XHRcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbiAzOTc6XHRcdGlmIChyZXQpXG4gMzk4Olx0XHRcdGdvdG8gZXJyX2Vpb2ludGM7XG4gMzk5Olx0XG4gNDAwOlx0XHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRE1TSU5UQyBpbnRlcnJ1cHQgY29udHJyb2xsZXIgaW50ZXJmYWNlICovXG4gNDAxOlx0XHRpZiAoY3B1X2hhc19tc2dpbnQpIHtcbiA0MDI6XHRcdFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xuIDQwMzpcdFx0XHRpZiAocmV0KVxuIDQwNDpcdFx0XHRcdGdvdG8gZXJyX3BjaF9waWM7XG4gNDA1Olx0XHR9XG4gNDA2Olx0XG4gNDA3Olx0XHRyZXR1cm4gMDtcbiA0MDg6XHRcbiA0MDk6XHRlcnJfcGNoX3BpYzpcbiA0MTA6XHRcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpO1xuIDQxMTpcdGVycl9laW9pbnRjOlxuIDQxMjpcdFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XG4gNDEzOlx0ZXJyX2lwaTpcbiA0MTQ6XHRcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XG4gNDE1Olx0ZXJyX2VudjpcbiA0MTY6XHRcdGt2bV91bnJlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XG4gNDE3Olx0XHRrZnJlZShrdm1fbG9vbmdhcmNoX29wcyk7XG4gNDE4Olx0XHRrdm1fbG9vbmdhcmNoX29wcyA9IE5VTEw7XG4gNDE5Olx0XHRmcmVlX3BlcmNwdSh2bWNzKTtcbiA0MjA6XHRcdHZtY3MgPSBOVUxMO1xuIDQyMTpcdFxuIDQyMjpcdFx0cmV0dXJuIHJldDtcbiA0MjM6XHR9XG4gNDI0Olx0XG4gNDI1Olx0c3RhdGljIHZvaWQga3ZtX2xvb25nYXJjaF9lbnZfZXhpdCh2b2lkKVxuIDQyNjpcdHtcbiA0Mjc6XHRcdGlmIChjcHVfaGFzX21zZ2ludClcbiA0Mjg6XHRcdFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7XG4gNDI5Olx0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbiA0MzA6XHRcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuIDQzMTpcdFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcbiA0MzI6XHRcbiA0MzM6XHRcdGlmICh2bWNzKVxuIDQzNDpcdFx0XHRmcmVlX3BlcmNwdSh2bWNzKTtcbiA0MzU6XHRcbiA0MzY6XHRcdGlmIChrdm1fbG9vbmdhcmNoX29wcykge1xuIDQzNzpcdFx0XHRrZnJlZShrdm1fbG9vbmdhcmNoX29wcyk7XG4gNDM4Olx0XHR9XG4gNDM5Olx0XG4gNDQwOlx0XHRrdm1fdW5yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIDQ0MTpcdH1cbiA0NDI6XHRcbiA0NDM6XHRzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfaW5pdCh2b2lkKVxuIDQ0NDpcdHtcbiA0NDU6XHRcdGludCByO1xuIDQ0NjpcdFxuIDQ0NzpcdFx0aWYgKCFjcHVfaGFzX2x2eikge1xuIDQ0ODpcdFx0XHRrdm1faW5mbyhcJiMzNDtIYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBub3QgYXZhaWxhYmxlXFxuXCYjMzQ7KTtcbiA0NDk6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNDUwOlx0XHR9XG4gNDUxOlx0XHRyID0ga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpO1xuIDQ1MjpcdFx0aWYgKHIpXG4gNDUzOlx0XHRcdHJldHVybiByO1xuIDQ1NDpcdFxuIDQ1NTpcdFx0cmV0dXJuIGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XG4gNDU2Olx0fVxuIDQ1NzpcdFxuIDQ1ODpcdHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZXhpdCh2b2lkKVxuIDQ1OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDc4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGluIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFzc3VtaW5nIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8ga3ZtX2xvb25nYXJjaF9leGl0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgaGVhcnQgb2YgYGt2bV9sb29uZ2FyY2hfZXhpdGAuIEkmIzM5O3ZlIGJlZW4gd29ya2luZyB3aXRoIEtWTSBvbiBMb29uZ0FyY2gsIHNvIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBoYXBwZW5zLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHdoYXQgY29uc3RpdHV0ZXMgYW4gJiMzNDtleGl0JiMzNDsg4oCTIHdoYXQgdHJpZ2dlcmVkIHRoaXMsIGFuZCB3aGVyZSB3ZSBuZWVkIHRvIHJldHVybiBhZnRlciBoYW5kbGluZyBpdC4gSXMgdGhpcyBhIHN5c3RlbSBjYWxsIGV4aXQsIGEgbWVtb3J5IGFjY2VzcywgYW4gaW50ZXJydXB0PyBUaGUgc3BlY2lmaWNzIG9mIHRoZSBleGl0IHR5cGUgd2lsbCBkaWN0YXRlIHRoZSBwYXRoIHdlIHRha2UuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjYXVzZS4KCkkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBhcmNoaXRlY3R1cmFsIGRpZmZlcmVuY2VzIGJldHdlZW4gTG9vbmdBcmNoIGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgbGlrZSB4ODYgb3IgQVJNLiBXaGF0IGFyZSB0aGUga2V5IHJlZ2lzdGVycyB3ZSBuZWVkIHRvIGluc3BlY3Q/IFRoZSBwcm9ncmFtIGNvdW50ZXIgKFBDKSwgb2J2aW91c2x5LiBCdXQgYWxzbywgd2hhdCBhYm91dCB0aGUgc3RhdHVzIHJlZ2lzdGVycywgdGhlIGNvbnRyb2wgcmVnaXN0ZXJzLCBhbmQgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyByZWdpc3RlcnMgdGhhdCBob2xkIGV4aXQgaW5mb3JtYXRpb24/IFdoZXJlIGRvZXMgTG9vbmdBcmNoIHN0b3JlIGl0cyBleGl0IHJlYXNvbiBjb2Rlcz8gQXJlIHRoZXkgaW4gYSBkZWRpY2F0ZWQgcmVnaXN0ZXIgb3IgZW5jb2RlZCB3aXRoaW4gYSBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb24/CgpUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgcHJvY2Vzc2luZyBwYXRoLiBJZiBpdCYjMzk7cyBhIHRyYXAsIEkgbmVlZCB0byBmaW5kIHRoZSB0cmFwIG51bWJlci4gSWYgaXQmIzM5O3MgYSBtZW1vcnkgYWNjZXNzLCBpcyBpdCBhIHJlYWQgb3IgYSB3cml0ZT8gV2hhdCYjMzk7cyB0aGUgdmlydHVhbCBhZGRyZXNzIGludm9sdmVkPyBXaGF0IGtpbmQgb2YgcGFnZSBmYXVsdCBoYW5kbGVyIGRvIEkgbmVlZCB0byBpbnZva2UsIGFuZCBkb2VzIExvb25nQXJjaCYjMzk7cyBNTVUgaGF2ZSBhbnkgcXVpcmtzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/CgpTbywgSSBuZWVkIHRvIGNhcmVmdWxseSBwYXJzZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBleGl0IHJlYXNvbiwgdGhlIGd1ZXN0JiMzOTtzIHJlZ2lzdGVycyBhdCB0aGUgdGltZSBvZiB0aGUgZXhpdCwgYW5kIGFueSByZWxldmFudCBtZW1vcnkgaW5mb3JtYXRpb24uIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gZGlzcGF0Y2ggdG8gdGhlIGNvcnJlY3QgaGFuZGxlciwgdXBkYXRlIHRoZSBndWVzdCBzdGF0ZSwgYW5kIHVsdGltYXRlbHksIHJldHVybiB0aGUgZ3Vlc3QgdG8gYSBydW5uYWJsZSBzdGF0ZS4gV2hhdCBzcGVjaWZpYyBga3ZtX3J1bmAgc3RydWN0dXJlIGlzIHJlbGV2YW50IGhlcmU/IFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IHB1dCB0b2dldGhlci4gSSBob3BlIHRoaXMgY29kZSBpcyB3ZWxsLWNvbW1lbnRlZCBhbmQgZWFzeSB0byBmb2xsb3cuIEnigJltIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaG93IHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbG9naWMgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBnZW5lcmljIEtWTSBmcmFtZXdvcmsuIEkgbmVlZCB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgaG93IHRoZXNlIHR3byBhcmUgY29ubmVjdGVkLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDU1Olx0XHRyZXR1cm4ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTtcbiA0NTY6XHR9XG4gNDU3Olx0XG4gNDU4Olx0c3RhdGljIHZvaWQga3ZtX2xvb25nYXJjaF9leGl0KHZvaWQpXG4gNDU5Olx0e1xuIDQ2MDpcdFx0a3ZtX2V4aXQoKTtcbiA0NjE6XHRcdGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKTtcbiA0NjI6XHR9XG4gNDYzOlx0XG4gNDY0Olx0bW9kdWxlX2luaXQoa3ZtX2xvb25nYXJjaF9pbml0KTtcbiA0NjU6XHRtb2R1bGVfZXhpdChrdm1fbG9vbmdhcmNoX2V4aXQpO1xuIDQ2NjpcdFxuIDQ2NzpcdCNpZmRlZiBNT0RVTEVcbiA0Njg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlIGt2bV9mZWF0dXJlW10gPSB7XG4gNDY5Olx0XHR7IC5mZWF0dXJlID0gY3B1X2ZlYXR1cmUoTE9PTkdBUkNIX0xWWikgfSxcbiA0NzA6XHRcdHt9LFxuIDQ3MTpcdH07XG4gNDcyOlx0TU9EVUxFX0RFVklDRV9UQUJMRShjcHUsIGt2bV9mZWF0dXJlKTtcbiA0NzM6XHQjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGlzIFBhdGNoOiBLVk0gTG9vbmdBcmNoIENsZWFudXAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gYmUgZm9jdXNlZCBzb2xlbHkgb24gYWRkaW5nIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzYCBjYWxscywgc3BlY2lmaWNhbGx5IGZvciBjbGVhbnVwIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRocyBvZiBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpYCBhbmQgdGhlIG1vZHVsZSB1bmxvYWQgZnVuY3Rpb24gYGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKWAuIFNvLCB0aGlzIHNlZW1zIGxhc2VyLWZvY3VzZWQgb24gbW9kdWxlIGluaXQgYW5kIG1vZHVsZSB1bmxvYWQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIGlzIGEgZ29vZCB0aGluZyB0byBzZWUgLSByb2J1c3QgZXJyb3IgaGFuZGxpbmcgaXMgYWx3YXlzIGltcG9ydGFudC4KCkJ1dCB3YWl0IGEgbWludXRlLCB0byBiZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoaXMsIGlzIGl0IHJlYWxseSAqanVzdCogYWJvdXQgY2xlYW51cCBpbiB0aGVzZSB0d28gc2NlbmFyaW9zPyBJIG5lZWQgdG8gY29uZmlybSB0aGUgc2NvcGUgaGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoYXQgYGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzYCBhbmQgYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgIGFjdHVhbGx5ICpkbyouIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdGltZSBmb3IgYSBxdWljayBgZ3JlcGAgZm9yIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzYC4gVGhhdCBzaG91bGQgY2xhcmlmeSB0aGluZ3MgcXVpY2tseSBhbmQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYz05NDk9aW50IHZnaWNfdjNfcHJvYmUoY29uc3Qgc3RydWN0IGdpY19rdm1faW5mbyAqaW5mbylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYy05OTUtXHRcdGt2bV9lcnIoXCYjMzQ7Q2Fubm90IHJlZ2lzdGVyIEdJQ3YzIEtWTSBkZXZpY2UuXFxuXCYjMzQ7KTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My5jOjk5NjpcdFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLmMtOTk3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYz0xODQ9dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jOjE4NjpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9ETVNJTlRDKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODctfVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYz02OTk9dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDAte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjcwMTpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9FSU9JTlRDKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDItfVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jPTQ2Nz12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00Njgte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM6NDY5Olx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00NzAtfVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYz01MDQ9dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjUwNjpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTUwNy19XG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhLmM9NzUzPXZvaWQga3ZtX3Jpc2N2X2FpYV9leGl0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhLmMtNzU4LVx0LyogVW5yZWdpc3RlciBkZXZpY2Ugb3BlcmF0aW9ucyAqL1xuYXJjaC9yaXNjdi9rdm0vYWlhLmM6NzU5Olx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfUklTQ1ZfQUlBKTtcbmFyY2gvcmlzY3Yva3ZtL2FpYS5jLTc2MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjQwOT1pbnQga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoY29uc3Qgc3RydWN0IGt2bV9kZXZpY2Vfb3BzICpvcHMsIHUzMiB0eXBlKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDEwOnZvaWQga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyh1MzIgdHlwZSk7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQxMS1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQ4MDY9aW50IGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzLCB1MzIgdHlwZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ4MTctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ4MTg6dm9pZCBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKHUzMiB0eXBlKVxudmlydC9rdm0va3ZtX21haW4uYy00ODE5LXtcbi0tXG52aXJ0L2t2bS92ZmlvLmM9MzU2PXZvaWQga3ZtX3ZmaW9fb3BzX2V4aXQodm9pZClcbnZpcnQva3ZtL3ZmaW8uYy0zNTcte1xudmlydC9rdm0vdmZpby5jOjM1ODpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX1ZGSU8pO1xudmlydC9rdm0vdmZpby5jLTM1OS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgyMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AqKgoKT2theSwgc28gYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2UgYWxsIGl0IGRvZXMgaXMgbnVsbGlmeSB0aGUgZW50cnkgaW4gYGt2bV9kZXZpY2Vfb3BzX3RhYmxlYCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBkZXZpY2UgYHR5cGVgLiBJbiBlc3NlbmNlLCBpdCYjMzk7cyBlZmZlY3RpdmVseSB1bnJlZ2lzdGVyaW5nIHRoZSBkZXZpY2Ugb3BlcmF0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHR5cGUuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGUgc291cmNlIHRvIGVuc3VyZSB0aGlzIGlzIGFsbCB0aGVyZSBpcyB0byBpdC4gQmVzdCB0byBsb29rIGF0IGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdGVwcyBpbiB0aGUgdW5yZWdpc3RyYXRpb24gcHJvY2VzcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzaWRlLWVmZmVjdHMsIHJlc291cmNlIGNsZWFuLXVwLCBvciBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDgwNTpcdFxuNDgwNjpcdGludCBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhjb25zdCBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMgKm9wcywgdTMyIHR5cGUpXG40ODA3Olx0e1xuNDgwODpcdFx0aWYgKHR5cGUgXHUwMDNlPSBBUlJBWV9TSVpFKGt2bV9kZXZpY2Vfb3BzX3RhYmxlKSlcbjQ4MDk6XHRcdFx0cmV0dXJuIC1FTk9TUEM7XG40ODEwOlx0XG40ODExOlx0XHRpZiAoa3ZtX2RldmljZV9vcHNfdGFibGVbdHlwZV0gIT0gTlVMTClcbjQ4MTI6XHRcdFx0cmV0dXJuIC1FRVhJU1Q7XG40ODEzOlx0XG40ODE0Olx0XHRrdm1fZGV2aWNlX29wc190YWJsZVt0eXBlXSA9IG9wcztcbjQ4MTU6XHRcdHJldHVybiAwO1xuNDgxNjpcdH1cbjQ4MTc6XHRcbjQ4MTg6XHR2b2lkIGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHModTMyIHR5cGUpXG40ODE5Olx0e1xuNDgyMDpcdFx0aWYgKGt2bV9kZXZpY2Vfb3BzX3RhYmxlW3R5cGVdICE9IE5VTEwpXG40ODIxOlx0XHRcdGt2bV9kZXZpY2Vfb3BzX3RhYmxlW3R5cGVdID0gTlVMTDtcbjQ4MjI6XHR9XG40ODIzOlx0XG40ODI0Olx0c3RhdGljIGludCBrdm1faW9jdGxfY3JlYXRlX2RldmljZShzdHJ1Y3Qga3ZtICprdm0sXG40ODI1Olx0XHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX2NyZWF0ZV9kZXZpY2UgKmNkKVxuNDgyNjpcdHtcbjQ4Mjc6XHRcdGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzO1xuNDgyODpcdFx0c3RydWN0IGt2bV9kZXZpY2UgKmRldjtcbjQ4Mjk6XHRcdGJvb2wgdGVzdCA9IGNkLVx1MDAzZWZsYWdzIFx1MDAyNiBLVk1fQ1JFQVRFX0RFVklDRV9URVNUO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDcwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogODgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHByaW1hcmlseSBhYm91dCBjbGVhbnVwIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZCB1bi1pbml0aWFsaXphdGlvbiBvZiB0aGUgS1ZNIExvb25nQXJjaCBtb2R1bGUsIGFuZCBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgaXQgbWVyaXRzIGZ1enppbmcuCgpNeSBwcmltYXJ5IHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBjaGFuZ2VkIGZ1bmN0aW9uYWxseT8mIzM0OyBJIHNlZSBuZXcgdW5yZWdpc3RlciBmdW5jdGlvbnM6IGBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpYCwgYGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpYCwgZXRjLiwgd2hpY2ggYXJlIGVzc2VudGlhbGx5IHdyYXBwZXJzIGFyb3VuZCBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcygpYC4gVGhleSYjMzk7cmUgYmVpbmcgYWRkZWQgdG8gaGFuZGxlIHRoZSBjbGVhbnVwIG9mIEtWTSBkZXZpY2VzIGluIGJvdGggdGhlIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IHBhdGhzIG9mIHRoZSBga3ZtX2xvb25nYXJjaGAgbW9kdWxlLgoKTXkgZmlyc3QgY2hlY2sgaXMsIGlzIHRoZXJlIGFueSBydW50aW1lIGV4ZWN1dGlvbiBjaGFuZ2VzPyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpYCBpcyBvbmx5IGNhbGxlZCBvbiBtb2R1bGUgaW5pdCwgYW5kIGBrdm1fbG9vbmdhcmNoX2Vudl9leGl0KClgIG9uIG1vZHVsZSBleGl0LiBUaGUgZXJyb3IgdW53aW5kIHBhdGhzIGluIGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0YCBhcmUgb25seSBoaXQgd2hlbiBga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoKWAgZmFpbHMgKHdoaWNoIHN1Z2dlc3RzIHNvbWUga2luZCBvZiBlYXJseSByZWdpc3RyYXRpb24gZXJyb3IpLiBUaGUgY2xlYW51cCBmdW5jdGlvbnMgYXJlIGNhbGxlZCB0aGVyZSBhbmQgaW4gYGt2bV9sb29uZ2FyY2hfZW52X2V4aXRgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRlYXJkb3duL21vZHVsZSBleGl0IG9yIGluaXQgZXJyb3IgcGF0aHMuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBiZWNvbWVzOiBhcmUgdGVhcmRvd24gYW5kIGluaXQgZmFpbHVyZSBwYXRocyB3b3J0aCBmdXp6aW5nPyBMZXQmIzM5O3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lczogdGhleSBzZWVtIHRvIHN1Z2dlc3QgdGhlc2UgYXJlICpub3QqIHR5cGljYWxseSB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGV5IG1vZGlmeSBjb3JlIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMuIFNvLCBsZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBjaGFuZ2VzIHRvIHJ1bnRpbWUgZXhlY3V0aW9uIGZsb3csIGlvY3Rscywgc3lzY2FsbHMsIG9yIFZNIG9wZXJhdGlvbnMuCgpNeSBxdWljayBpbnNwZWN0aW9uIHJldmVhbHMgdGhhdCBub25lIG9mIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24sIGlvY3RscywgaW50ZXJydXB0IGluamVjdGlvbiwgdmNwdSBvcGVyYXRpb25zLCBvciBLVk0gZGV2aWNlIG9wcyBhcmUgY2hhbmdlZC4gVGhpcyBwYXRjaCAqb25seSogaW50cm9kdWNlcyB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMgYW5kIHRoZWlyIHVzZSBpbiBpbml0L2V4aXQgZXJyb3IgaGFuZGxpbmcgcGF0aHMuIEFuZCB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMganVzdCBjYWxsIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKClgLgoKTGV0JiMzOTtzIGRvIGEgZmluYWwgY2hlY2sgb2YgdGhlIGNvbW1pdCB3aXRoIGBnaXQgbG9nYCBhbmQgYGdpdCBkaWZmYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGZpbGVzIG9yIGNoYW5nZXMuCgpCYXNlZCBvbiBhbGwgdGhpcywgSSBjb25jbHVkZSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgcnVudGltZSBmdW5jdGlvbmFsaXR5IHRoYXQgd291bGQgbWFrZSB0aGUgbW9kdWxlIG9yIEtWTSBtb3JlIGludGVyZXN0aW5nIHRvIGZ1enogZnJvbSBhIHJ1bnRpbWUgcGVyc3BlY3RpdmUuIFRoZXJlZm9yZSwgSSB3aWxsIHJlc3BvbmQgd2l0aCBXb3J0aEZ1enppbmc9ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfdW5yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oPTIyPWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaDoyMzp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmgtMjQtdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oPTgxPWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaDo4Mjp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmgtODMtdm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaD00Mz1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oOjQ0OnZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZCk7XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmgtNDUtXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaD03Mj1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmg6NzM6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oLTc0LXZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9kbXNpbnRjLmM9MTc5PWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jLTE4My1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYzoxODQ6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYz02OTQ9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk4LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5OTp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTcwMC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM9NDYyPWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00NjYtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYzo0Njc6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDY4LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9NDk5PWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTUwMy1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzo1MDQ6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9MzUwPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDA5LWVycl9wY2hfcGljOlxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzo0MTA6XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDExLWVycl9laW9pbnRjOlxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzo0MTI6XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDEzLWVycl9pcGk6XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQxNDpcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQxNS1lcnJfZW52OlxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9NDI1PXN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQyNy1cdGlmIChjcHVfaGFzX21zZ2ludClcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6NDI4Olx0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6NDI5Olx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQzMDpcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzo0MzE6XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy00MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDAxCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgUGF0Y2ggaXMgTm90IEZ1enotV29ydGh5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBmdXp6aW5nLCBidXQgbGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCB0aGUgcGF0Y2ggYWN0dWFsbHkgKmRvZXMqLiBJdCYjMzk7cyBmb2N1c2VkIGVudGlyZWx5IG9uIHR3byBrZXkgYXJlYXM6IHVucmVnaXN0ZXJpbmcgZGV2aWNlIG9wZXJhdGlvbnMgZHVyaW5nIG1vZHVsZSB0ZWFyZG93biB2aWEgYGt2bV9sb29uZ2FyY2hfZW52X2V4aXRgLCBhbmQgZXJyb3Igcm9sbGJhY2sgd2l0aGluIG1vZHVsZSBpbml0aWFsaXphdGlvbiBpbiBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGAuCgpUaGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXNlIGFyZSAqZXhjbHVzaXZlbHkqIHRlYXJkb3duIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocy4gVGhleSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSB0aGF0IGEgdXNlciB3b3VsZCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoLCBtb2RpZnkgZXhpc3RpbmcgcnVudGltZSBiZWhhdmlvciwgY3JlYXRlIGFueSBuZXcgaW50ZXJmYWNlcywgb3IgZXhwb3NlIGFueSBuZXcgcmVhY2hhYmxlIGNvZGUgdGhhdCB3b3VsZCBiZSByZWxldmFudCB0byBmdXp6aW5nLiBJdOKAmXMgYWxsIGFib3V0IGdyYWNlZnVsIGNsZWFudXAgb3IgY29udHJvbGxlZCBmYWlsdXJlLgoKVGhlcmVmb3JlLCBhZnRlciByZXZpZXdpbmcgYWxsIHRoZSBzcGVjaWZpY3MsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTGV0IG1lIGRvdWJsZS1jaGVjayBteSByZWFzb25pbmcgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIGJ1bGxldHByb29mLiBNeSByZWFzb25pbmcgcmVtYWlucyBjbGVhcjogdGhlIHBhdGNoIGlzIGVudGlyZWx5IGFib3V0IGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgZXJyb3IgdW53aW5kaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBtb2R1bGUgZXhpdCwgaXQgaGFzIG5vIGltcGFjdCBvbiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ1bnRpbWUgbG9naWMgb2YgaW9jdGxzLCBvciB0aGUgZGV2aWNlIGVtdWxhdGlvbiBsb2dpYyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBwcmVwYXJlIHRoZSBkZXRhaWxzIGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsIHRvIGNvbmZpcm0gbXkgZXZhbHVhdGlvbjoKCiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYAoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGFkZHMgZGV2aWNlIHVucmVnaXN0cmF0aW9uIGFuZCBlcnJvci11bndpbmRpbmcgY2xlYW51cCBwYXRocyBmb3IgdGhlIExvb25nQXJjaCBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIChga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGApIGFuZCBtb2R1bGUgdGVhcmRvd24gKGBrdm1fbG9vbmdhcmNoX2Vudl9leGl0YCkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBleGVjdXRpb24gZmxvdywgaW9jdGxzLCBvciBkZXZpY2UgZW11bGF0aW9uIGxvZ2ljIHRoYXQgd2FycmFudCBmdXp6aW5nLgoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgW11gIChOb3RoaW5nIHRvIGVuYWJsZSkKKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChObyBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uKQoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIExldCYjMzk7cyBtYWtlIHRoYXQgYHNldC1yZXN1bHRzYCBjYWxsIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBlcnJvci11bndpbmRpbmcgYW5kIG1vZHVsZSB0ZWFyZG93biBjbGVhbnVwIGZvciBMb29uZ0FyY2ggS1ZNIGRldmljZSByZWdpc3RyYXRpb24gKHVucmVnaXN0ZXJpbmcgS1ZNIGRldmljZSBvcHMgb24gbW9kdWxlIGV4aXQgb3IgaW5pdCBmYWlsdXJlKS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBydW50aW1lIGRldmljZSBlbXVsYXRpb24sIGlvY3Rscywgb3IgY29yZSBleGVjdXRpb24gcGF0aHMgdGhhdCB3YXJyYW50IGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIxOjQ1LjQ5MDk2Njk3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MzE3NjU4Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIGVycm9yLXVud2luZGluZyBhbmQgbW9kdWxlIHRlYXJkb3duIGNsZWFudXAgZm9yIExvb25nQXJjaCBLVk0gZGV2aWNlIHJlZ2lzdHJhdGlvbiAodW5yZWdpc3RlcmluZyBLVk0gZGV2aWNlIG9wcyBvbiBtb2R1bGUgZXhpdCBvciBpbml0IGZhaWx1cmUpLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJ1bnRpbWUgZGV2aWNlIGVtdWxhdGlvbiwgaW9jdGxzLCBvciBjb3JlIGV4ZWN1dGlvbiBwYXRocyB0aGF0IHdhcnJhbnQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIxOjQ1LjQ5MDk3MjY0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0NTIwMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmU2N2YzMWNkMTFhMGE2YTMyNzM0MjAxNDkxNWMwZDc2ZjdkMmZhN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDIwOjIxOjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oXFxuaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaFxcbkBAIC0yMCw2ICsyMCw3IEBAIHN0cnVjdCBkbXNpbnRjX3N0YXRlIHtcXG4gfTtcXG4gXFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcXG4gdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gaW50IGRtc2ludGNfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHU2NCBhZGRyLCBpbnQgZGF0YSwgaW50IGxldmVsKTtcXG4gaW50IGRtc2ludGNfZGVsaXZlcl9tc2lfdG9fdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHZlY3RvciwgaW50IGxldmVsKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmhcXG5pbmRleCA4YjdhMmZhM2Y3Zjg2Li45NjMzZmJmYzA2NmQ2IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXFxuQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHtcXG4gfTtcXG4gXFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcXG4gdm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpO1xcbiBcXG4gI2VuZGlmIC8qIF9fQVNNX0tWTV9FSU9JTlRDX0ggKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oXFxuaW5kZXggMDYwMTYzZGZiNGEzOC4uZDFkNzJkNGJiOGQxNSAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcXG5AQCAtNDEsNSArNDEsNiBAQCBzdHJ1Y3QgaXBpX3N0YXRlIHtcXG4gI2RlZmluZSBJT0NTUl9BTllfU0VORFxcdFxcdDB4MTU4XFxuIFxcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbiBcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXFxuaW5kZXggZTc0YjNiNzQyNjM0ZC4uODg3YjA0MzFmZDIwNiAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxcbkBAIC03MCw2ICs3MCw3IEBAIHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyB7XFxuIFxcbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeTtcXG4gaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XFxuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpO1xcbiB2b2lkIHBjaF9waWNfc2V0X2lycShzdHJ1Y3QgbG9vbmdhcmNoX3BjaF9waWMgKnMsIGludCBpcnEsIGludCBsZXZlbCk7XFxuIGludCBwY2hfbXNpX3NldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSwgaW50IGxldmVsKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuY1xcbmluZGV4IGJiNzI4NWM0OWRmM2EuLmM3ZDg4NDFkZjk2ZmEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXFxuQEAgLTE4MCwzICsxODAsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKVxcbiB7XFxuIFxcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcXHUwMDI2a3ZtX2Rtc2ludGNfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9ETVNJTlRDKTtcXG4gfVxcbitcXG4rdm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcXG4re1xcbitcXHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXFxuaW5kZXggODRkODRiZDQzMmQ3NC4uODBmNzhlMDdjNzRhNiAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcXG5AQCAtNjk1LDMgKzY5NSw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXFxuIHtcXG4gXFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFxcdTAwMjZrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xcbiB9XFxuK1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxcbit7XFxuK1xcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9FSU9JTlRDKTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXFxuaW5kZXggZmNmYWYxYTY2NzkwYi4uN2IzMzNhNGEwNDMwZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXFxuQEAgLTQ2MywzICs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXFxuIHtcXG4gXFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFxcdTAwMjZrdm1faXBpX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfSVBJKTtcXG4gfVxcbitcXG4rdm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKVxcbit7XFxuK1xcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuY1xcbmluZGV4IGU3Yjc3NzA1YzUxNmEuLjgzZmEyMzg2Y2Y4MTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXFxuQEAgLTUwMCwzICs1MDAsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbiB7XFxuIFxcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcXHUwMDI2a3ZtX3BjaF9waWNfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpO1xcbiB9XFxuK1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbit7XFxuK1xcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuaW5kZXggM2UxMDA1NTI2ZjRiZC4uYzljYjNmYzJlNTYwNSAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xcbkBAIC0zODUsMjcgKzM4NSw1MSBAQCBzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfZW52X2luaXQodm9pZClcXG4gXFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIElQSSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpO1xcbiBcXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIGVycl9lbnY7XFxuIFxcbiBcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRUlPSU5UQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBlcnJfaXBpO1xcbiBcXG4gXFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIFBDSC1QSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbiBcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gZXJyX2Vpb2ludGM7XFxuIFxcbiBcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRE1TSU5UQyBpbnRlcnJ1cHQgY29udHJyb2xsZXIgaW50ZXJmYWNlICovXFxuLVxcdGlmIChjcHVfaGFzX21zZ2ludClcXG4rXFx0aWYgKGNwdV9oYXNfbXNnaW50KSB7XFxuIFxcdFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0Z290byBlcnJfcGNoX3BpYztcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfcGNoX3BpYzpcXG4rXFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuK2Vycl9laW9pbnRjOlxcbitcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG4rZXJyX2lwaTpcXG4rXFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcXG4rZXJyX2VudjpcXG4rXFx0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcXG4rXFx0a2ZyZWUoa3ZtX2xvb25nYXJjaF9vcHMpO1xcbitcXHRrdm1fbG9vbmdhcmNoX29wcyA9IE5VTEw7XFxuK1xcdGZyZWVfcGVyY3B1KHZtY3MpO1xcbitcXHR2bWNzID0gTlVMTDtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcXG4ge1xcbitcXHRpZiAoY3B1X2hhc19tc2dpbnQpXFxuK1xcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xcbitcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcXG4rXFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XFxuK1xcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuK1xcbiBcXHRpZiAodm1jcylcXG4gXFx0XFx0ZnJlZV9wZXJjcHUodm1jcyk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMTo0NS45NDYxNDkzNTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM4ODYyNDYyNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmU2N2YzMWNkMTFhMGE2YTMyNzM0MjAxNDkxNWMwZDc2ZjdkMmZhN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjA6MjE6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaFxuaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbkBAIC0yMCw2ICsyMCw3IEBAIHN0cnVjdCBkbXNpbnRjX3N0YXRlIHtcbiB9O1xuIFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xuIHZvaWQgZG1zaW50Y19pbmplY3RfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gaW50IGRtc2ludGNfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHU2NCBhZGRyLCBpbnQgZGF0YSwgaW50IGxldmVsKTtcbiBpbnQgZG1zaW50Y19kZWxpdmVyX21zaV90b192Y3B1KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdmVjdG9yLCBpbnQgbGV2ZWwpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXG5pbmRleCA4YjdhMmZhM2Y3Zjg2Li45NjMzZmJmYzA2NmQ2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaFxuQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHtcbiB9O1xuIFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuIHZvaWQgZWlvaW50Y19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcbiBcbiAjZW5kaWYgLyogX19BU01fS1ZNX0VJT0lOVENfSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaFxuaW5kZXggMDYwMTYzZGZiNGEzOC4uZDFkNzJkNGJiOGQxNSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oXG5AQCAtNDEsNSArNDEsNiBAQCBzdHJ1Y3QgaXBpX3N0YXRlIHtcbiAjZGVmaW5lIElPQ1NSX0FOWV9TRU5EXHRcdDB4MTU4XG4gXG4gaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKTtcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXG5pbmRleCBlNzRiM2I3NDI2MzRkLi44ODdiMDQzMWZkMjA2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuQEAgLTcwLDYgKzcwLDcgQEAgc3RydWN0IGxvb25nYXJjaF9wY2hfcGljIHtcbiBcbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeTtcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcbiB2b2lkIHBjaF9waWNfc2V0X2lycShzdHJ1Y3QgbG9vbmdhcmNoX3BjaF9waWMgKnMsIGludCBpcnEsIGludCBsZXZlbCk7XG4gaW50IHBjaF9tc2lfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLCBpbnQgbGV2ZWwpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuY1xuaW5kZXggYmI3Mjg1YzQ5ZGYzYS4uYzdkODg0MWRmOTZmYSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXG5AQCAtMTgwLDMgKzE4MCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9kbXNpbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7XG4gfVxuK1xuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4re1xuK1x0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0RNU0lOVEMpO1xuK31cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbmluZGV4IDg0ZDg0YmQ0MzJkNzQuLjgwZjc4ZTA3Yzc0YTYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuQEAgLTY5NSwzICs2OTUsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuIHtcbiBcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcdTAwMjZrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xuIH1cbitcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuK3tcbitcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9FSU9JTlRDKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuY1xuaW5kZXggZmNmYWYxYTY2NzkwYi4uN2IzMzNhNGEwNDMwZiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuY1xuQEAgLTQ2MywzICs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9pcGlfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xuIH1cbitcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG4re1xuK1x0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuY1xuaW5kZXggZTdiNzc3MDVjNTE2YS4uODNmYTIzODZjZjgxOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXG5AQCAtNTAwLDMgKzUwMCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9wY2hfcGljX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfUENIUElDKTtcbiB9XG4rXG4rdm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcbit7XG4rXHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfUENIUElDKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbmluZGV4IDNlMTAwNTUyNmY0YmQuLmM5Y2IzZmMyZTU2MDUgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXG5AQCAtMzg1LDI3ICszODUsNTEgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KHZvaWQpXG4gXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggSVBJIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiBcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfZW52O1xuIFxuIFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIEVJT0lOVEMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuIFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfaXBpO1xuIFxuIFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIFBDSC1QSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuIFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfZWlvaW50YztcbiBcbiBcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBETVNJTlRDIGludGVycnVwdCBjb250cnJvbGxlciBpbnRlcmZhY2UgKi9cbi1cdGlmIChjcHVfaGFzX21zZ2ludClcbitcdGlmIChjcHVfaGFzX21zZ2ludCkge1xuIFx0XHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0Z290byBlcnJfcGNoX3BpYztcbitcdH1cbitcbitcdHJldHVybiAwO1xuK1xuK2Vycl9wY2hfcGljOlxuK1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG4rZXJyX2Vpb2ludGM6XG4rXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbitlcnJfaXBpOlxuK1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcbitlcnJfZW52OlxuK1x0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcbitcdGtmcmVlKGt2bV9sb29uZ2FyY2hfb3BzKTtcbitcdGt2bV9sb29uZ2FyY2hfb3BzID0gTlVMTDtcbitcdGZyZWVfcGVyY3B1KHZtY3MpO1xuK1x0dm1jcyA9IE5VTEw7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBrdm1fbG9vbmdhcmNoX2Vudl9leGl0KHZvaWQpXG4ge1xuK1x0aWYgKGNwdV9oYXNfbXNnaW50KVxuK1x0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcbitcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpO1xuK1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XG4rXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuK1xuIFx0aWYgKHZtY3MpXG4gXHRcdGZyZWVfcGVyY3B1KHZtY3MpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjE6NDUuOTQ2MTUxODIxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU2NjkxOTAwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmV2aWV3aW5nIGEgS1ZNIFBhdGNoIGZvciBMb29uZ0FyY2gqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSd2ZSBnb3QgYSBMaW51eCBrZXJuZWwgcGF0Y2ggc2VyaWVzIGhlcmUgdGhhdCBuZWVkcyBhIGNyaXRpY2FsIGV5ZS4gRmlyc3QsIGxldCdzIHF1aWNrbHkgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIGdyb3VuZCBydWxlcy4gVGhlIGNoYW5nZXMgYXJlIGluIHRoZSBIRUFEIGNvbW1pdCwgc28gdGhlIGNvZGUgaXMgYWxyZWFkeSBhcHBsaWVkLiBNeSBqb2IgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgbWVyaXRzIGZ1enppbmc7IGlmIHRoZXJlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBuZWVkIHRoYXQgbGV2ZWwgb2Ygc2NydXRpbnkuXG5cbkkgbmVlZCB0byBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl04oCZcyBqdXN0IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBjb3NtZXRpYyBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50cywgY29uc3RhbnQgdHdlYWtzIHRoYXQgZG9uJ3QgYWx0ZXIgZXhlY3V0aW9uLCBjb2RlIHBhdGhzIGluYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIHZlbmRvci1zcGVjaWZpYyBzdHVmZiBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgb3IgY2VydGFpbiB0ZWFyZG93biBjYWxsYmFja3MuIEJhc2ljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgKmFjdHVhbGx5KiBpbXBhY3RzIGhvdyB0aGUga2VybmVsIHJ1bnMuIExldOKAmXMgc2VlIHdoYXQgd2UgaGF2ZS5cblxuT2theSwgY2hlY2tpbmcgdGhlIHBhdGNo4oCmIGl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtXyouaGAsIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy8qLmNgLCBhbmQgYGFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNgLiBIbW0sIHdoYXQncyB0aGlzIHBhdGNoIGFjdHVhbGx5IGRvaW5nPyBMb29rcyBsaWtlIHRoZXJlIGFyZSBuZXcgYGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl8qX2RldmljZSh2b2lkKWAgZnVuY3Rpb25zIGFuZCBlcnJvciBoYW5kbGluZy9leGl0IHVud2luZGluZyBpbiBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpYCBhbmQgYGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKWAuIFxuXG5XYWl0LCBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGDigKYgdGhhdCdzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIEtWTSBvbiBMb29uZ0FyY2gsIHJpZ2h0PyBMb29rcyBsaWtlIGVycm9yIGhhbmRsaW5nIGFuZCB1bndpbmQgY29kZSBpbiB0aGUga3ZtIG1vZHVsZSBpbml0L2V4aXQsIHNvIEkgbmVlZCB0byBjaGVjayBgYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY2AgaW4gZGV0YWlsIHRvIGRldGVybWluZSB3aGF0IHRob3NlIG5ldyB1bnJlZ2lzdGVyIGZ1bmN0aW9ucyBhcmUgcmVtb3ZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjowMS42MTUzNDUxMzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM4MDpcXHRcXHR9XFxuIDM4MTpcXHRcXG4gMzgyOlxcdFxcdGt2bV9pbml0X2djc3JfZmxhZygpO1xcbiAzODM6XFx0XFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XFxuIDM4NDpcXHRcXG4gMzg1OlxcdFxcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBJUEkgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbiAzODY6XFx0XFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuIDM4NzpcXHRcXHRpZiAocmV0KVxcbiAzODg6XFx0XFx0XFx0Z290byBlcnJfZW52O1xcbiAzODk6XFx0XFxuIDM5MDpcXHRcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRUlPSU5UQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIDM5MTpcXHRcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XFxuIDM5MjpcXHRcXHRpZiAocmV0KVxcbiAzOTM6XFx0XFx0XFx0Z290byBlcnJfaXBpO1xcbiAzOTQ6XFx0XFxuIDM5NTpcXHRcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggUENILVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIDM5NjpcXHRcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIDM5NzpcXHRcXHRpZiAocmV0KVxcbiAzOTg6XFx0XFx0XFx0Z290byBlcnJfZWlvaW50YztcXG4gMzk5OlxcdFxcbiA0MDA6XFx0XFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIERNU0lOVEMgaW50ZXJydXB0IGNvbnRycm9sbGVyIGludGVyZmFjZSAqL1xcbiA0MDE6XFx0XFx0aWYgKGNwdV9oYXNfbXNnaW50KSB7XFxuIDQwMjpcXHRcXHRcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7XFxuIDQwMzpcXHRcXHRcXHRpZiAocmV0KVxcbiA0MDQ6XFx0XFx0XFx0XFx0Z290byBlcnJfcGNoX3BpYztcXG4gNDA1OlxcdFxcdH1cXG4gNDA2OlxcdFxcbiA0MDc6XFx0XFx0cmV0dXJuIDA7XFxuIDQwODpcXHRcXG4gNDA5OlxcdGVycl9wY2hfcGljOlxcbiA0MTA6XFx0XFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIDQxMTpcXHRlcnJfZWlvaW50YzpcXG4gNDEyOlxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xcbiA0MTM6XFx0ZXJyX2lwaTpcXG4gNDE0OlxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuIDQxNTpcXHRlcnJfZW52OlxcbiA0MTY6XFx0XFx0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcXG4gNDE3OlxcdFxcdGtmcmVlKGt2bV9sb29uZ2FyY2hfb3BzKTtcXG4gNDE4OlxcdFxcdGt2bV9sb29uZ2FyY2hfb3BzID0gTlVMTDtcXG4gNDE5OlxcdFxcdGZyZWVfcGVyY3B1KHZtY3MpO1xcbiA0MjA6XFx0XFx0dm1jcyA9IE5VTEw7XFxuIDQyMTpcXHRcXG4gNDIyOlxcdFxcdHJldHVybiByZXQ7XFxuIDQyMzpcXHR9XFxuIDQyNDpcXHRcXG4gNDI1OlxcdHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcXG4gNDI2OlxcdHtcXG4gNDI3OlxcdFxcdGlmIChjcHVfaGFzX21zZ2ludClcXG4gNDI4OlxcdFxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xcbiA0Mjk6XFx0XFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIDQzMDpcXHRcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG4gNDMxOlxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuIDQzMjpcXHRcXG4gNDMzOlxcdFxcdGlmICh2bWNzKVxcbiA0MzQ6XFx0XFx0XFx0ZnJlZV9wZXJjcHUodm1jcyk7XFxuIDQzNTpcXHRcXG4gNDM2OlxcdFxcdGlmIChrdm1fbG9vbmdhcmNoX29wcykge1xcbiA0Mzc6XFx0XFx0XFx0a2ZyZWUoa3ZtX2xvb25nYXJjaF9vcHMpO1xcbiA0Mzg6XFx0XFx0fVxcbiA0Mzk6XFx0XFxuIDQ0MDpcXHRcXHRrdm1fdW5yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xcbiA0NDE6XFx0fVxcbiA0NDI6XFx0XFxuIDQ0MzpcXHRzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfaW5pdCh2b2lkKVxcbiA0NDQ6XFx0e1xcbiA0NDU6XFx0XFx0aW50IHI7XFxuIDQ0NjpcXHRcXG4gNDQ3OlxcdFxcdGlmICghY3B1X2hhc19sdnopIHtcXG4gNDQ4OlxcdFxcdFxcdGt2bV9pbmZvKFxcXCJIYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBub3QgYXZhaWxhYmxlXFxcXG5cXFwiKTtcXG4gNDQ5OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA0NTA6XFx0XFx0fVxcbiA0NTE6XFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfZW52X2luaXQoKTtcXG4gNDUyOlxcdFxcdGlmIChyKVxcbiA0NTM6XFx0XFx0XFx0cmV0dXJuIHI7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdHJldHVybiBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xcbiA0NTY6XFx0fVxcbiA0NTc6XFx0XFxuIDQ1ODpcXHRzdGF0aWMgdm9pZCBrdm1fbG9vbmdhcmNoX2V4aXQodm9pZClcXG4gNDU5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjI6MDEuNjE1NDQxMTQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzYyNjQ3NjI0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uIGFuZCBhc3N1bWluZyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8ga3ZtX2xvb25nYXJjaF9leGl0KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIGBrdm1fbG9vbmdhcmNoX2V4aXRgLiBJJ3ZlIGJlZW4gd29ya2luZyB3aXRoIEtWTSBvbiBMb29uZ0FyY2gsIHNvIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBoYXBwZW5zLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgd2hhdCBjb25zdGl0dXRlcyBhbiBcImV4aXRcIiDigJMgd2hhdCB0cmlnZ2VyZWQgdGhpcywgYW5kIHdoZXJlIHdlIG5lZWQgdG8gcmV0dXJuIGFmdGVyIGhhbmRsaW5nIGl0LiBJcyB0aGlzIGEgc3lzdGVtIGNhbGwgZXhpdCwgYSBtZW1vcnkgYWNjZXNzLCBhbiBpbnRlcnJ1cHQ/IFRoZSBzcGVjaWZpY3Mgb2YgdGhlIGV4aXQgdHlwZSB3aWxsIGRpY3RhdGUgdGhlIHBhdGggd2UgdGFrZS4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNhdXNlLlxuXG5JJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBhcmNoaXRlY3R1cmFsIGRpZmZlcmVuY2VzIGJldHdlZW4gTG9vbmdBcmNoIGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzIEknbSBmYW1pbGlhciB3aXRoLCBsaWtlIHg4NiBvciBBUk0uIFdoYXQgYXJlIHRoZSBrZXkgcmVnaXN0ZXJzIHdlIG5lZWQgdG8gaW5zcGVjdD8gVGhlIHByb2dyYW0gY291bnRlciAoUEMpLCBvYnZpb3VzbHkuIEJ1dCBhbHNvLCB3aGF0IGFib3V0IHRoZSBzdGF0dXMgcmVnaXN0ZXJzLCB0aGUgY29udHJvbCByZWdpc3RlcnMsIGFuZCBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlZ2lzdGVycyB0aGF0IGhvbGQgZXhpdCBpbmZvcm1hdGlvbj8gV2hlcmUgZG9lcyBMb29uZ0FyY2ggc3RvcmUgaXRzIGV4aXQgcmVhc29uIGNvZGVzPyBBcmUgdGhleSBpbiBhIGRlZGljYXRlZCByZWdpc3RlciBvciBlbmNvZGVkIHdpdGhpbiBhIHNwZWNpZmljIG1lbW9yeSBsb2NhdGlvbj9cblxuVGhlIGdvYWwgaXMgdG8gZGV0ZXJtaW5lIHRoZSBvcHRpbWFsIHByb2Nlc3NpbmcgcGF0aC4gSWYgaXQncyBhIHRyYXAsIEkgbmVlZCB0byBmaW5kIHRoZSB0cmFwIG51bWJlci4gSWYgaXQncyBhIG1lbW9yeSBhY2Nlc3MsIGlzIGl0IGEgcmVhZCBvciBhIHdyaXRlPyBXaGF0J3MgdGhlIHZpcnR1YWwgYWRkcmVzcyBpbnZvbHZlZD8gV2hhdCBraW5kIG9mIHBhZ2UgZmF1bHQgaGFuZGxlciBkbyBJIG5lZWQgdG8gaW52b2tlLCBhbmQgZG9lcyBMb29uZ0FyY2gncyBNTVUgaGF2ZSBhbnkgcXVpcmtzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/XG5cblNvLCBJIG5lZWQgdG8gY2FyZWZ1bGx5IHBhcnNlIHRoZSBkYXRhIHN0cnVjdHVyZXMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24uIEknbSBsb29raW5nIGZvciB0aGUgZXhpdCByZWFzb24sIHRoZSBndWVzdCdzIHJlZ2lzdGVycyBhdCB0aGUgdGltZSBvZiB0aGUgZXhpdCwgYW5kIGFueSByZWxldmFudCBtZW1vcnkgaW5mb3JtYXRpb24uIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIEknbGwgbmVlZCB0byBkaXNwYXRjaCB0byB0aGUgY29ycmVjdCBoYW5kbGVyLCB1cGRhdGUgdGhlIGd1ZXN0IHN0YXRlLCBhbmQgdWx0aW1hdGVseSwgcmV0dXJuIHRoZSBndWVzdCB0byBhIHJ1bm5hYmxlIHN0YXRlLiBXaGF0IHNwZWNpZmljIGBrdm1fcnVuYCBzdHJ1Y3R1cmUgaXMgcmVsZXZhbnQgaGVyZT8gVGhhdCdzIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBMZXQncyBzZWUgaG93IHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgcHV0IHRvZ2V0aGVyLiBJIGhvcGUgdGhpcyBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGFuZCBlYXN5IHRvIGZvbGxvdy4gSeKAmW0gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsb2dpYyBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIGdlbmVyaWMgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCBob3cgdGhlc2UgdHdvIGFyZSBjb25uZWN0ZWQuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjI6MDUuMjQxOTE5NTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTU6XFx0XFx0cmV0dXJuIGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XFxuIDQ1NjpcXHR9XFxuIDQ1NzpcXHRcXG4gNDU4OlxcdHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZXhpdCh2b2lkKVxcbiA0NTk6XFx0e1xcbiA0NjA6XFx0XFx0a3ZtX2V4aXQoKTtcXG4gNDYxOlxcdFxcdGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKTtcXG4gNDYyOlxcdH1cXG4gNDYzOlxcdFxcbiA0NjQ6XFx0bW9kdWxlX2luaXQoa3ZtX2xvb25nYXJjaF9pbml0KTtcXG4gNDY1OlxcdG1vZHVsZV9leGl0KGt2bV9sb29uZ2FyY2hfZXhpdCk7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdCNpZmRlZiBNT0RVTEVcXG4gNDY4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgY3B1X2ZlYXR1cmUga3ZtX2ZlYXR1cmVbXSA9IHtcXG4gNDY5OlxcdFxcdHsgLmZlYXR1cmUgPSBjcHVfZmVhdHVyZShMT09OR0FSQ0hfTFZaKSB9LFxcbiA0NzA6XFx0XFx0e30sXFxuIDQ3MTpcXHR9O1xcbiA0NzI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShjcHUsIGt2bV9mZWF0dXJlKTtcXG4gNDczOlxcdCNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjowNS4yNDE5ODI3NDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjM2MDcxNzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoOiBLVk0gTG9vbmdBcmNoIENsZWFudXAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIGZvY3VzZWQgc29sZWx5IG9uIGFkZGluZyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AgY2FsbHMsIHNwZWNpZmljYWxseSBmb3IgY2xlYW51cCBvcGVyYXRpb25zIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgb2YgYGt2bV9sb29uZ2FyY2hfZW52X2luaXQoKWAgYW5kIHRoZSBtb2R1bGUgdW5sb2FkIGZ1bmN0aW9uIGBrdm1fbG9vbmdhcmNoX2Vudl9leGl0KClgLiBTbywgdGhpcyBzZWVtcyBsYXNlci1mb2N1c2VkIG9uIG1vZHVsZSBpbml0IGFuZCBtb2R1bGUgdW5sb2FkIGVycm9yIGhhbmRsaW5nLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlIC0gcm9idXN0IGVycm9yIGhhbmRsaW5nIGlzIGFsd2F5cyBpbXBvcnRhbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCB0byBiZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcywgaXMgaXQgcmVhbGx5ICpqdXN0KiBhYm91dCBjbGVhbnVwIGluIHRoZXNlIHR3byBzY2VuYXJpb3M/IEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBoZXJlLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHdoYXQgYGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzYCBhbmQgYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgIGFjdHVhbGx5ICpkbyouIEl0IGxvb2tzIGxpa2UgaXQncyB0aW1lIGZvciBhIHF1aWNrIGBncmVwYCBmb3IgYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgLiBUaGF0IHNob3VsZCBjbGFyaWZ5IHRoaW5ncyBxdWlja2x5IGFuZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI5OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIyOjA4LjQ3ODA1NjgxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE2MzE3Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLmM9OTQ5PWludCB2Z2ljX3YzX3Byb2JlKGNvbnN0IHN0cnVjdCBnaWNfa3ZtX2luZm8gKmluZm8pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYy05OTUtXFx0XFx0a3ZtX2VycihcXFwiQ2Fubm90IHJlZ2lzdGVyIEdJQ3YzIEtWTSBkZXZpY2UuXFxcXG5cXFwiKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYzo5OTY6XFx0XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My5jLTk5Ny1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jPTE4ND12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYzoxODY6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0RNU0lOVEMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODctfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTY5OT12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDAte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo3MDE6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDItfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM9NDY3PXZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZClcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00Njgte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQ2OTpcXHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfSVBJKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00NzAtfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jPTUwND12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzo1MDY6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX1BDSFBJQyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTUwNy19XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9haWEuYz03NTM9dm9pZCBrdm1fcmlzY3ZfYWlhX2V4aXQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYS5jLTc1OC1cXHQvKiBVbnJlZ2lzdGVyIGRldmljZSBvcGVyYXRpb25zICovXFxuYXJjaC9yaXNjdi9rdm0vYWlhLmM6NzU5OlxcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX1JJU0NWX0FJQSk7XFxuYXJjaC9yaXNjdi9rdm0vYWlhLmMtNzYwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0MDk9aW50IGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzLCB1MzIgdHlwZSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0MTA6dm9pZCBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKHUzMiB0eXBlKTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQxMS1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDgwNj1pbnQga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoY29uc3Qgc3RydWN0IGt2bV9kZXZpY2Vfb3BzICpvcHMsIHUzMiB0eXBlKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy00ODE3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NDgxODp2b2lkIGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHModTMyIHR5cGUpXFxudmlydC9rdm0va3ZtX21haW4uYy00ODE5LXtcXG4tLVxcbnZpcnQva3ZtL3ZmaW8uYz0zNTY9dm9pZCBrdm1fdmZpb19vcHNfZXhpdCh2b2lkKVxcbnZpcnQva3ZtL3ZmaW8uYy0zNTcte1xcbnZpcnQva3ZtL3ZmaW8uYzozNTg6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfVkZJTyk7XFxudmlydC9rdm0vdmZpby5jLTM1OS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIyOjExLjI5NDM4MDE4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NzAxMTI5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AqKlxuXG5Pa2F5LCBzbyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSBhbGwgaXQgZG9lcyBpcyBudWxsaWZ5IHRoZSBlbnRyeSBpbiBga3ZtX2RldmljZV9vcHNfdGFibGVgIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGRldmljZSBgdHlwZWAuIEluIGVzc2VuY2UsIGl0J3MgZWZmZWN0aXZlbHkgdW5yZWdpc3RlcmluZyB0aGUgZGV2aWNlIG9wZXJhdGlvbnMgZm9yIHRoYXQgcGFydGljdWxhciB0eXBlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIHNvdXJjZSB0byBlbnN1cmUgdGhpcyBpcyBhbGwgdGhlcmUgaXMgdG8gaXQuIEJlc3QgdG8gbG9vayBhdCBgdmlydC9rdm0va3ZtX21haW4uY2AgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3RlcHMgaW4gdGhlIHVucmVnaXN0cmF0aW9uIHByb2Nlc3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzaWRlLWVmZmVjdHMsIHJlc291cmNlIGNsZWFuLXVwLCBvciBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoxMy43NjQ0OTU2NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODA1LFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0ODA1OlxcdFxcbjQ4MDY6XFx0aW50IGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzLCB1MzIgdHlwZSlcXG40ODA3OlxcdHtcXG40ODA4OlxcdFxcdGlmICh0eXBlIFxcdTAwM2U9IEFSUkFZX1NJWkUoa3ZtX2RldmljZV9vcHNfdGFibGUpKVxcbjQ4MDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuNDgxMDpcXHRcXG40ODExOlxcdFxcdGlmIChrdm1fZGV2aWNlX29wc190YWJsZVt0eXBlXSAhPSBOVUxMKVxcbjQ4MTI6XFx0XFx0XFx0cmV0dXJuIC1FRVhJU1Q7XFxuNDgxMzpcXHRcXG40ODE0OlxcdFxcdGt2bV9kZXZpY2Vfb3BzX3RhYmxlW3R5cGVdID0gb3BzO1xcbjQ4MTU6XFx0XFx0cmV0dXJuIDA7XFxuNDgxNjpcXHR9XFxuNDgxNzpcXHRcXG40ODE4OlxcdHZvaWQga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyh1MzIgdHlwZSlcXG40ODE5OlxcdHtcXG40ODIwOlxcdFxcdGlmIChrdm1fZGV2aWNlX29wc190YWJsZVt0eXBlXSAhPSBOVUxMKVxcbjQ4MjE6XFx0XFx0XFx0a3ZtX2RldmljZV9vcHNfdGFibGVbdHlwZV0gPSBOVUxMO1xcbjQ4MjI6XFx0fVxcbjQ4MjM6XFx0XFxuNDgyNDpcXHRzdGF0aWMgaW50IGt2bV9pb2N0bF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBrdm0gKmt2bSxcXG40ODI1OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fY3JlYXRlX2RldmljZSAqY2QpXFxuNDgyNjpcXHR7XFxuNDgyNzpcXHRcXHRjb25zdCBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMgKm9wcztcXG40ODI4OlxcdFxcdHN0cnVjdCBrdm1fZGV2aWNlICpkZXY7XFxuNDgyOTpcXHRcXHRib29sIHRlc3QgPSBjZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fQ1JFQVRFX0RFVklDRV9URVNUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoxMy43NjQ3MTYwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzE0Mjk0OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBwcmltYXJpbHkgYWJvdXQgY2xlYW51cCBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgdW4taW5pdGlhbGl6YXRpb24gb2YgdGhlIEtWTSBMb29uZ0FyY2ggbW9kdWxlLCBhbmQgSSBuZWVkIHRvIGFzc2VzcyB3aGV0aGVyIGl0IG1lcml0cyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IHRob3VnaHQgaXMsIFwiV2hhdCdzIGNoYW5nZWQgZnVuY3Rpb25hbGx5P1wiIEkgc2VlIG5ldyB1bnJlZ2lzdGVyIGZ1bmN0aW9uczogYGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKClgLCBga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKClgLCBldGMuLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgd3JhcHBlcnMgYXJvdW5kIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKClgLiBUaGV5J3JlIGJlaW5nIGFkZGVkIHRvIGhhbmRsZSB0aGUgY2xlYW51cCBvZiBLVk0gZGV2aWNlcyBpbiBib3RoIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXhpdCBwYXRocyBvZiB0aGUgYGt2bV9sb29uZ2FyY2hgIG1vZHVsZS5cblxuTXkgZmlyc3QgY2hlY2sgaXMsIGlzIHRoZXJlIGFueSBydW50aW1lIGV4ZWN1dGlvbiBjaGFuZ2VzPyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KClgIGlzIG9ubHkgY2FsbGVkIG9uIG1vZHVsZSBpbml0LCBhbmQgYGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKWAgb24gbW9kdWxlIGV4aXQuIFRoZSBlcnJvciB1bndpbmQgcGF0aHMgaW4gYGt2bV9sb29uZ2FyY2hfZW52X2luaXRgIGFyZSBvbmx5IGhpdCB3aGVuIGBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcygpYCBmYWlscyAod2hpY2ggc3VnZ2VzdHMgc29tZSBraW5kIG9mIGVhcmx5IHJlZ2lzdHJhdGlvbiBlcnJvcikuIFRoZSBjbGVhbnVwIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHRoZXJlIGFuZCBpbiBga3ZtX2xvb25nYXJjaF9lbnZfZXhpdGAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGVhcmRvd24vbW9kdWxlIGV4aXQgb3IgaW5pdCBlcnJvciBwYXRocy5cblxuVGhlIGNydWNpYWwgcXVlc3Rpb24gYmVjb21lczogYXJlIHRlYXJkb3duIGFuZCBpbml0IGZhaWx1cmUgcGF0aHMgd29ydGggZnV6emluZz8gTGV0J3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lczogdGhleSBzZWVtIHRvIHN1Z2dlc3QgdGhlc2UgYXJlICpub3QqIHR5cGljYWxseSB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGV5IG1vZGlmeSBjb3JlIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMuIFNvLCBsZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY2hhbmdlcyB0byBydW50aW1lIGV4ZWN1dGlvbiBmbG93LCBpb2N0bHMsIHN5c2NhbGxzLCBvciBWTSBvcGVyYXRpb25zLlxuXG5NeSBxdWljayBpbnNwZWN0aW9uIHJldmVhbHMgdGhhdCBub25lIG9mIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24sIGlvY3RscywgaW50ZXJydXB0IGluamVjdGlvbiwgdmNwdSBvcGVyYXRpb25zLCBvciBLVk0gZGV2aWNlIG9wcyBhcmUgY2hhbmdlZC4gVGhpcyBwYXRjaCAqb25seSogaW50cm9kdWNlcyB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMgYW5kIHRoZWlyIHVzZSBpbiBpbml0L2V4aXQgZXJyb3IgaGFuZGxpbmcgcGF0aHMuIEFuZCB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMganVzdCBjYWxsIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKClgLlxuXG5MZXQncyBkbyBhIGZpbmFsIGNoZWNrIG9mIHRoZSBjb21taXQgd2l0aCBgZ2l0IGxvZ2AgYW5kIGBnaXQgZGlmZmAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBmaWxlcyBvciBjaGFuZ2VzLlxuXG5CYXNlZCBvbiBhbGwgdGhpcywgSSBjb25jbHVkZSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBydW50aW1lIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBtYWtlIHRoZSBtb2R1bGUgb3IgS1ZNIG1vcmUgaW50ZXJlc3RpbmcgdG8gZnV6eiBmcm9tIGEgcnVudGltZSBwZXJzcGVjdGl2ZS4gVGhlcmVmb3JlLCBJIHdpbGwgcmVzcG9uZCB3aXRoIFdvcnRoRnV6emluZz1mYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ3MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIyOjE5LjA3OTAxMjgwMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NjQ1NTQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaD0yMj1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oOjIzOnZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmgtMjQtdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmg9ODE9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZCk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaDo4Mjp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oLTgzLXZvaWQgZWlvaW50Y19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaD00Mz1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaDo0NDp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaC00NS1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmg9NzI9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaDo3Mzp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oLTc0LXZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYz0xNzk9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jOjE4NDp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTY5ND1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5OC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njk5OnZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTcwMC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYz00NjI9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDY2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQ2Nzp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDY4LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYz00OTk9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjUwNDp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYz0zNTA9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQwOS1lcnJfcGNoX3BpYzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQxMDpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQxMS1lcnJfZWlvaW50YzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQxMjpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQxMy1lcnJfaXBpOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6NDE0OlxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy00MTUtZXJyX2VudjpcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9NDI1PXN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDI3LVxcdGlmIChjcHVfaGFzX21zZ2ludClcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQyODpcXHRcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQyOTpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQzMDpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQzMTpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoyMC44MzU0Nzc1MThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzk3MzEwODA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBUaGlzIFBhdGNoIGlzIE5vdCBGdXp6LVdvcnRoeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgZnV6emluZywgYnV0IGxldCdzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCB0aGUgcGF0Y2ggYWN0dWFsbHkgKmRvZXMqLiBJdCdzIGZvY3VzZWQgZW50aXJlbHkgb24gdHdvIGtleSBhcmVhczogdW5yZWdpc3RlcmluZyBkZXZpY2Ugb3BlcmF0aW9ucyBkdXJpbmcgbW9kdWxlIHRlYXJkb3duIHZpYSBga3ZtX2xvb25nYXJjaF9lbnZfZXhpdGAsIGFuZCBlcnJvciByb2xsYmFjayB3aXRoaW4gbW9kdWxlIGluaXRpYWxpemF0aW9uIGluIGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0YC5cblxuVGhlIGNyaXRpY2FsIHBvaW50IGhlcmUgaXMgdGhhdCB0aGVzZSBhcmUgKmV4Y2x1c2l2ZWx5KiB0ZWFyZG93biBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMuIFRoZXkgZG9uJ3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSB0aGF0IGEgdXNlciB3b3VsZCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoLCBtb2RpZnkgZXhpc3RpbmcgcnVudGltZSBiZWhhdmlvciwgY3JlYXRlIGFueSBuZXcgaW50ZXJmYWNlcywgb3IgZXhwb3NlIGFueSBuZXcgcmVhY2hhYmxlIGNvZGUgdGhhdCB3b3VsZCBiZSByZWxldmFudCB0byBmdXp6aW5nLiBJdOKAmXMgYWxsIGFib3V0IGdyYWNlZnVsIGNsZWFudXAgb3IgY29udHJvbGxlZCBmYWlsdXJlLlxuXG5UaGVyZWZvcmUsIGFmdGVyIHJldmlld2luZyBhbGwgdGhlIHNwZWNpZmljcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIExldCBtZSBkb3VibGUtY2hlY2sgbXkgcmVhc29uaW5nIHRvIG1ha2Ugc3VyZSBpdCdzIGJ1bGxldHByb29mLiBNeSByZWFzb25pbmcgcmVtYWlucyBjbGVhcjogdGhlIHBhdGNoIGlzIGVudGlyZWx5IGFib3V0IGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgZXJyb3IgdW53aW5kaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBtb2R1bGUgZXhpdCwgaXQgaGFzIG5vIGltcGFjdCBvbiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ1bnRpbWUgbG9naWMgb2YgaW9jdGxzLCBvciB0aGUgZGV2aWNlIGVtdWxhdGlvbiBsb2dpYyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgcHJlcGFyZSB0aGUgZGV0YWlscyBmb3IgdGhlIGBzZXQtcmVzdWx0c2AgY2FsbCB0byBjb25maXJtIG15IGV2YWx1YXRpb246XG5cbiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggb25seSBhZGRzIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgZXJyb3ItdW53aW5kaW5nIGNsZWFudXAgcGF0aHMgZm9yIHRoZSBMb29uZ0FyY2ggS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiAoYGt2bV9sb29uZ2FyY2hfZW52X2luaXRgKSBhbmQgbW9kdWxlIHRlYXJkb3duIChga3ZtX2xvb25nYXJjaF9lbnZfZXhpdGApLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJ1bnRpbWUgZXhlY3V0aW9uIGZsb3csIGlvY3Rscywgb3IgZGV2aWNlIGVtdWxhdGlvbiBsb2dpYyB0aGF0IHdhcnJhbnQgZnV6emluZy5cbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKE5vdGhpbmcgdG8gZW5hYmxlKVxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChObyBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uKVxuXG5BbHJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBMZXQncyBtYWtlIHRoYXQgYHNldC1yZXN1bHRzYCBjYWxsIGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQwMSwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoyNC44MDg1ODc3MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBlcnJvci11bndpbmRpbmcgYW5kIG1vZHVsZSB0ZWFyZG93biBjbGVhbnVwIGZvciBMb29uZ0FyY2ggS1ZNIGRldmljZSByZWdpc3RyYXRpb24gKHVucmVnaXN0ZXJpbmcgS1ZNIGRldmljZSBvcHMgb24gbW9kdWxlIGV4aXQgb3IgaW5pdCBmYWlsdXJlKS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBydW50aW1lIGRldmljZSBlbXVsYXRpb24sIGlvY3Rscywgb3IgY29yZSBleGVjdXRpb24gcGF0aHMgdGhhdCB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjI6MjQuODA4NjE0MDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvl29[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 20:06:44 +0000 UTC FinishedAt: 2026-09-02 20:22:26 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIGVycm9yLXVud2luZGluZyBhbmQgbW9kdWxlIHRlYXJkb3duIGNsZWFudXAgZm9yIExvb25nQXJjaCBLVk0gZGV2aWNlIHJlZ2lzdHJhdGlvbiAodW5yZWdpc3RlcmluZyBLVk0gZGV2aWNlIG9wcyBvbiBtb2R1bGUgZXhpdCBvciBpbml0IGZhaWx1cmUpLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJ1bnRpbWUgZGV2aWNlIGVtdWxhdGlvbiwgaW9jdGxzLCBvciBjb3JlIGV4ZWN1dGlvbiBwYXRocyB0aGF0IHdhcnJhbnQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZTY3ZjMxY2QxMWEwYTZhMzI3MzQyMDE0OTE1YzBkNzZmN2QyZmE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMDoyMTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaFxuaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbkBAIC0yMCw2ICYjNDM7MjAsNyBAQCBzdHJ1Y3QgZG1zaW50Y19zdGF0ZSB7XG4gfTtcbiBcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcbiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZCk7XG4gdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBpbnQgZG1zaW50Y19zZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGFkZHIsIGludCBkYXRhLCBpbnQgbGV2ZWwpO1xuIGludCBkbXNpbnRjX2RlbGl2ZXJfbXNpX3RvX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB2ZWN0b3IsIGludCBsZXZlbCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmhcbmluZGV4IDhiN2EyZmEzZjdmODYuLjk2MzNmYmZjMDY2ZDYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXG5AQCAtNzksNiAmIzQzOzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHtcbiB9O1xuIFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcbiB2b2lkIGVpb2ludGNfc2V0X2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbCk7XG4gXG4gI2VuZGlmIC8qIF9fQVNNX0tWTV9FSU9JTlRDX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcbmluZGV4IDA2MDE2M2RmYjRhMzguLmQxZDcyZDRiYjhkMTUgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaFxuQEAgLTQxLDUgJiM0Mzs0MSw2IEBAIHN0cnVjdCBpcGlfc3RhdGUge1xuICNkZWZpbmUgSU9DU1JfQU5ZX1NFTkRcdFx0MHgxNThcbiBcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXG5pbmRleCBlNzRiM2I3NDI2MzRkLi44ODdiMDQzMWZkMjA2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuQEAgLTcwLDYgJiM0Mzs3MCw3IEBAIHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyB7XG4gXG4gc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnk7XG4gaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XG4mIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpO1xuIHZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcbiBpbnQgcGNoX21zaV9zZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsIGludCBsZXZlbCk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXG5pbmRleCBiYjcyODVjNDlkZjNhLi5jN2Q4ODQxZGY5NmZhIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9kbXNpbnRjLmNcbkBAIC0xODAsMyAmIzQzOzE4MCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9kbXNpbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7XG4gfVxuJiM0MztcbiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcbiYjNDM7e1xuJiM0MztcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9ETVNJTlRDKTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuaW5kZXggODRkODRiZDQzMmQ3NC4uODBmNzhlMDdjNzRhNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXG5AQCAtNjk1LDMgJiM0Mzs2OTUsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuIHtcbiBcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcdTAwMjZrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXG5pbmRleCBmY2ZhZjFhNjY3OTBiLi43YjMzM2E0YTA0MzBmIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXG5AQCAtNDYzLDMgJiM0Mzs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9pcGlfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZClcbiYjNDM7e1xuJiM0MztcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXG5pbmRleCBlN2I3NzcwNWM1MTZhLi44M2ZhMjM4NmNmODE4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmNcbkBAIC01MDAsMyAmIzQzOzUwMCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9wY2hfcGljX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfUENIUElDKTtcbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX1BDSFBJQyk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuaW5kZXggM2UxMDA1NTI2ZjRiZC4uYzljYjNmYzJlNTYwNSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbkBAIC0zODUsMjcgJiM0MzszODUsNTEgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KHZvaWQpXG4gXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggSVBJIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiBcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZXJyX2VudjtcbiBcbiBcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBFSU9JTlRDIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiBcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHRnb3RvIGVycl9pcGk7XG4gXG4gXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggUENILVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXG4gXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBlcnJfZWlvaW50YztcbiBcbiBcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBETVNJTlRDIGludGVycnVwdCBjb250cnJvbGxlciBpbnRlcmZhY2UgKi9cbi1cdGlmIChjcHVfaGFzX21zZ2ludClcbiYjNDM7XHRpZiAoY3B1X2hhc19tc2dpbnQpIHtcbiBcdFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBlcnJfcGNoX3BpYztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX3BjaF9waWM6XG4mIzQzO1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG4mIzQzO2Vycl9laW9pbnRjOlxuJiM0MztcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuJiM0MztlcnJfaXBpOlxuJiM0MztcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XG4mIzQzO2Vycl9lbnY6XG4mIzQzO1x0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcbiYjNDM7XHRrZnJlZShrdm1fbG9vbmdhcmNoX29wcyk7XG4mIzQzO1x0a3ZtX2xvb25nYXJjaF9vcHMgPSBOVUxMO1xuJiM0MztcdGZyZWVfcGVyY3B1KHZtY3MpO1xuJiM0MztcdHZtY3MgPSBOVUxMO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHZvaWQga3ZtX2xvb25nYXJjaF9lbnZfZXhpdCh2b2lkKVxuIHtcbiYjNDM7XHRpZiAoY3B1X2hhc19tc2dpbnQpXG4mIzQzO1x0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcbiYjNDM7XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbiYjNDM7XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbiYjNDM7XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuJiM0MztcbiBcdGlmICh2bWNzKVxuIFx0XHRmcmVlX3BlcmNwdSh2bWNzKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJlNjdmMzFjZDExYTBhNmEzMjczNDIwMTQ5MTVjMGQ3NmY3ZDJmYTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDIwOjIxOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmgKaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oCkBAIC0yMCw2ICYjNDM7MjAsNyBAQCBzdHJ1Y3QgZG1zaW50Y19zdGF0ZSB7CiB9OwogCiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTsKJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTsKIHZvaWQgZG1zaW50Y19pbmplY3RfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBpbnQgZG1zaW50Y19zZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGFkZHIsIGludCBkYXRhLCBpbnQgbGV2ZWwpOwogaW50IGRtc2ludGNfZGVsaXZlcl9tc2lfdG9fdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHZlY3RvciwgaW50IGxldmVsKTsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oCmluZGV4IDhiN2EyZmEzZjdmODYuLjk2MzNmYmZjMDY2ZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaApAQCAtNzksNiAmIzQzOzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHsKIH07CiAKIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpOwomIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpOwogdm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpOwogCiAjZW5kaWYgLyogX19BU01fS1ZNX0VJT0lOVENfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oCmluZGV4IDA2MDE2M2RmYjRhMzguLmQxZDcyZDRiYjhkMTUgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmgKQEAgLTQxLDUgJiM0Mzs0MSw2IEBAIHN0cnVjdCBpcGlfc3RhdGUgewogI2RlZmluZSBJT0NTUl9BTllfU0VORAkJMHgxNTgKIAogaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKTsKJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oCmluZGV4IGU3NGIzYjc0MjYzNGQuLjg4N2IwNDMxZmQyMDYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaApAQCAtNzAsNiAmIzQzOzcwLDcgQEAgc3RydWN0IGxvb25nYXJjaF9wY2hfcGljIHsKIAogc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnk7CiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTsKJiM0Mzt2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTsKIHZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTsKIGludCBwY2hfbXNpX3NldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSwgaW50IGxldmVsKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jCmluZGV4IGJiNzI4NWM0OWRmM2EuLmM3ZDg4NDFkZjk2ZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9kbXNpbnRjLmMKQEAgLTE4MCwzICYjNDM7MTgwLDggQEAgaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZCkKIHsKIAlyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoJmFtcDtrdm1fZG1zaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0RNU0lOVEMpOwogfQomIzQzOwomIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpCiYjNDM7ewomIzQzOwlrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jCmluZGV4IDg0ZDg0YmQ0MzJkNzQuLjgwZjc4ZTA3Yzc0YTYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMKQEAgLTY5NSwzICYjNDM7Njk1LDggQEAgaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZCkKIHsKIAlyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoJmFtcDtrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpOwogfQomIzQzOwomIzQzO3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpCiYjNDM7ewomIzQzOwlrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYwppbmRleCBmY2ZhZjFhNjY3OTBiLi43YjMzM2E0YTA0MzBmIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYwpAQCAtNDYzLDMgJiM0Mzs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpCiB7CiAJcmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKCZhbXA7a3ZtX2lwaV9kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7CiB9CiYjNDM7CiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKQomIzQzO3sKJiM0MzsJa3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jCmluZGV4IGU3Yjc3NzA1YzUxNmEuLjgzZmEyMzg2Y2Y4MTggMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMKQEAgLTUwMCwzICYjNDM7NTAwLDggQEAgaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCkKIHsKIAlyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoJmFtcDtrdm1fcGNoX3BpY19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX1BDSFBJQyk7CiB9CiYjNDM7CiYjNDM7dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCkKJiM0Mzt7CiYjNDM7CWt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jCmluZGV4IDNlMTAwNTUyNmY0YmQuLmM5Y2IzZmMyZTU2MDUgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYwpAQCAtMzg1LDI3ICYjNDM7Mzg1LDUxIEBAIHN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKQogCS8qIFJlZ2lzdGVyIExvb25nQXJjaCBJUEkgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqLwogCXJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9lbnY7CiAKIAkvKiBSZWdpc3RlciBMb29uZ0FyY2ggRUlPSU5UQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovCiAJcmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9pcGk7CiAKIAkvKiBSZWdpc3RlciBMb29uZ0FyY2ggUENILVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovCiAJcmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycl9laW9pbnRjOwogCiAJLyogUmVnaXN0ZXIgTG9vbmdBcmNoIERNU0lOVEMgaW50ZXJydXB0IGNvbnRycm9sbGVyIGludGVyZmFjZSAqLwotCWlmIChjcHVfaGFzX21zZ2ludCkKJiM0MzsJaWYgKGNwdV9oYXNfbXNnaW50KSB7CiAJCXJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJZ290byBlcnJfcGNoX3BpYzsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfcGNoX3BpYzoKJiM0MzsJa3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7CiYjNDM7ZXJyX2Vpb2ludGM6CiYjNDM7CWt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpOwomIzQzO2Vycl9pcGk6CiYjNDM7CWt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7CiYjNDM7ZXJyX2VudjoKJiM0MzsJa3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTsKJiM0MzsJa2ZyZWUoa3ZtX2xvb25nYXJjaF9vcHMpOwomIzQzOwlrdm1fbG9vbmdhcmNoX29wcyA9IE5VTEw7CiYjNDM7CWZyZWVfcGVyY3B1KHZtY3MpOwomIzQzOwl2bWNzID0gTlVMTDsKIAogCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZCkKIHsKJiM0MzsJaWYgKGNwdV9oYXNfbXNnaW50KQomIzQzOwkJa3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7CiYjNDM7CWt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpOwomIzQzOwlrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTsKJiM0MzsJa3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTsKJiM0MzsKIAlpZiAodm1jcykKIAkJZnJlZV9wZXJjcHUodm1jcyk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZXZpZXdpbmcgYSBLVk0gUGF0Y2ggZm9yIExvb25nQXJjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O3ZlIGdvdCBhIExpbnV4IGtlcm5lbCBwYXRjaCBzZXJpZXMgaGVyZSB0aGF0IG5lZWRzIGEgY3JpdGljYWwgZXllLiBGaXJzdCwgbGV0JiMzOTtzIHF1aWNrbHkgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIGdyb3VuZCBydWxlcy4gVGhlIGNoYW5nZXMgYXJlIGluIHRoZSBIRUFEIGNvbW1pdCwgc28gdGhlIGNvZGUgaXMgYWxyZWFkeSBhcHBsaWVkLiBNeSBqb2IgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgbWVyaXRzIGZ1enppbmc7IGlmIHRoZXJlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBuZWVkIHRoYXQgbGV2ZWwgb2Ygc2NydXRpbnkuCgpJIG5lZWQgdG8gZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgY29zbWV0aWMgY2hhbmdlcyBsaWtlIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHMsIGNvbnN0YW50IHR3ZWFrcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24sIGNvZGUgcGF0aHMgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgdmVuZG9yLXNwZWNpZmljIHN0dWZmIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBvciBjZXJ0YWluIHRlYXJkb3duIGNhbGxiYWNrcy4gQmFzaWNhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gd2hhdCAqYWN0dWFsbHkqIGltcGFjdHMgaG93IHRoZSBrZXJuZWwgcnVucy4gTGV04oCZcyBzZWUgd2hhdCB3ZSBoYXZlLgoKT2theSwgY2hlY2tpbmcgdGhlIHBhdGNo4oCmIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV8qLmhgLCBgYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvKi5jYCwgYW5kIGBhcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jYC4gSG1tLCB3aGF0JiMzOTtzIHRoaXMgcGF0Y2ggYWN0dWFsbHkgZG9pbmc/IExvb2tzIGxpa2UgdGhlcmUgYXJlIG5ldyBga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyXypfZGV2aWNlKHZvaWQpYCBmdW5jdGlvbnMgYW5kIGVycm9yIGhhbmRsaW5nL2V4aXQgdW53aW5kaW5nIGluIGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KClgIGFuZCBga3ZtX2xvb25nYXJjaF9lbnZfZXhpdCgpYC4gCgpXYWl0LCBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGDigKYgdGhhdCYjMzk7cyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBLVk0gb24gTG9vbmdBcmNoLCByaWdodD8gTG9va3MgbGlrZSBlcnJvciBoYW5kbGluZyBhbmQgdW53aW5kIGNvZGUgaW4gdGhlIGt2bSBtb2R1bGUgaW5pdC9leGl0LCBzbyBJIG5lZWQgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNgIGluIGRldGFpbCB0byBkZXRlcm1pbmUgd2hhdCB0aG9zZSBuZXcgdW5yZWdpc3RlciBmdW5jdGlvbnMgYXJlIHJlbW92aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzgwOlx0XHR9XG4gMzgxOlx0XG4gMzgyOlx0XHRrdm1faW5pdF9nY3NyX2ZsYWcoKTtcbiAzODM6XHRcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIDM4NDpcdFxuIDM4NTpcdFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIElQSSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXG4gMzg2Olx0XHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcbiAzODc6XHRcdGlmIChyZXQpXG4gMzg4Olx0XHRcdGdvdG8gZXJyX2VudjtcbiAzODk6XHRcbiAzOTA6XHRcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBFSU9JTlRDIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiAzOTE6XHRcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbiAzOTI6XHRcdGlmIChyZXQpXG4gMzkzOlx0XHRcdGdvdG8gZXJyX2lwaTtcbiAzOTQ6XHRcbiAzOTU6XHRcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBQQ0gtUElDIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiAzOTY6XHRcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbiAzOTc6XHRcdGlmIChyZXQpXG4gMzk4Olx0XHRcdGdvdG8gZXJyX2Vpb2ludGM7XG4gMzk5Olx0XG4gNDAwOlx0XHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRE1TSU5UQyBpbnRlcnJ1cHQgY29udHJyb2xsZXIgaW50ZXJmYWNlICovXG4gNDAxOlx0XHRpZiAoY3B1X2hhc19tc2dpbnQpIHtcbiA0MDI6XHRcdFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xuIDQwMzpcdFx0XHRpZiAocmV0KVxuIDQwNDpcdFx0XHRcdGdvdG8gZXJyX3BjaF9waWM7XG4gNDA1Olx0XHR9XG4gNDA2Olx0XG4gNDA3Olx0XHRyZXR1cm4gMDtcbiA0MDg6XHRcbiA0MDk6XHRlcnJfcGNoX3BpYzpcbiA0MTA6XHRcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpO1xuIDQxMTpcdGVycl9laW9pbnRjOlxuIDQxMjpcdFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XG4gNDEzOlx0ZXJyX2lwaTpcbiA0MTQ6XHRcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XG4gNDE1Olx0ZXJyX2VudjpcbiA0MTY6XHRcdGt2bV91bnJlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XG4gNDE3Olx0XHRrZnJlZShrdm1fbG9vbmdhcmNoX29wcyk7XG4gNDE4Olx0XHRrdm1fbG9vbmdhcmNoX29wcyA9IE5VTEw7XG4gNDE5Olx0XHRmcmVlX3BlcmNwdSh2bWNzKTtcbiA0MjA6XHRcdHZtY3MgPSBOVUxMO1xuIDQyMTpcdFxuIDQyMjpcdFx0cmV0dXJuIHJldDtcbiA0MjM6XHR9XG4gNDI0Olx0XG4gNDI1Olx0c3RhdGljIHZvaWQga3ZtX2xvb25nYXJjaF9lbnZfZXhpdCh2b2lkKVxuIDQyNjpcdHtcbiA0Mjc6XHRcdGlmIChjcHVfaGFzX21zZ2ludClcbiA0Mjg6XHRcdFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7XG4gNDI5Olx0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbiA0MzA6XHRcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuIDQzMTpcdFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcbiA0MzI6XHRcbiA0MzM6XHRcdGlmICh2bWNzKVxuIDQzNDpcdFx0XHRmcmVlX3BlcmNwdSh2bWNzKTtcbiA0MzU6XHRcbiA0MzY6XHRcdGlmIChrdm1fbG9vbmdhcmNoX29wcykge1xuIDQzNzpcdFx0XHRrZnJlZShrdm1fbG9vbmdhcmNoX29wcyk7XG4gNDM4Olx0XHR9XG4gNDM5Olx0XG4gNDQwOlx0XHRrdm1fdW5yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIDQ0MTpcdH1cbiA0NDI6XHRcbiA0NDM6XHRzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfaW5pdCh2b2lkKVxuIDQ0NDpcdHtcbiA0NDU6XHRcdGludCByO1xuIDQ0NjpcdFxuIDQ0NzpcdFx0aWYgKCFjcHVfaGFzX2x2eikge1xuIDQ0ODpcdFx0XHRrdm1faW5mbyhcJiMzNDtIYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBub3QgYXZhaWxhYmxlXFxuXCYjMzQ7KTtcbiA0NDk6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNDUwOlx0XHR9XG4gNDUxOlx0XHRyID0ga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpO1xuIDQ1MjpcdFx0aWYgKHIpXG4gNDUzOlx0XHRcdHJldHVybiByO1xuIDQ1NDpcdFxuIDQ1NTpcdFx0cmV0dXJuIGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XG4gNDU2Olx0fVxuIDQ1NzpcdFxuIDQ1ODpcdHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZXhpdCh2b2lkKVxuIDQ1OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDc4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGluIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFzc3VtaW5nIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8ga3ZtX2xvb25nYXJjaF9leGl0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgaGVhcnQgb2YgYGt2bV9sb29uZ2FyY2hfZXhpdGAuIEkmIzM5O3ZlIGJlZW4gd29ya2luZyB3aXRoIEtWTSBvbiBMb29uZ0FyY2gsIHNvIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBoYXBwZW5zLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHdoYXQgY29uc3RpdHV0ZXMgYW4gJiMzNDtleGl0JiMzNDsg4oCTIHdoYXQgdHJpZ2dlcmVkIHRoaXMsIGFuZCB3aGVyZSB3ZSBuZWVkIHRvIHJldHVybiBhZnRlciBoYW5kbGluZyBpdC4gSXMgdGhpcyBhIHN5c3RlbSBjYWxsIGV4aXQsIGEgbWVtb3J5IGFjY2VzcywgYW4gaW50ZXJydXB0PyBUaGUgc3BlY2lmaWNzIG9mIHRoZSBleGl0IHR5cGUgd2lsbCBkaWN0YXRlIHRoZSBwYXRoIHdlIHRha2UuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjYXVzZS4KCkkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBhcmNoaXRlY3R1cmFsIGRpZmZlcmVuY2VzIGJldHdlZW4gTG9vbmdBcmNoIGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgbGlrZSB4ODYgb3IgQVJNLiBXaGF0IGFyZSB0aGUga2V5IHJlZ2lzdGVycyB3ZSBuZWVkIHRvIGluc3BlY3Q/IFRoZSBwcm9ncmFtIGNvdW50ZXIgKFBDKSwgb2J2aW91c2x5LiBCdXQgYWxzbywgd2hhdCBhYm91dCB0aGUgc3RhdHVzIHJlZ2lzdGVycywgdGhlIGNvbnRyb2wgcmVnaXN0ZXJzLCBhbmQgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyByZWdpc3RlcnMgdGhhdCBob2xkIGV4aXQgaW5mb3JtYXRpb24/IFdoZXJlIGRvZXMgTG9vbmdBcmNoIHN0b3JlIGl0cyBleGl0IHJlYXNvbiBjb2Rlcz8gQXJlIHRoZXkgaW4gYSBkZWRpY2F0ZWQgcmVnaXN0ZXIgb3IgZW5jb2RlZCB3aXRoaW4gYSBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb24/CgpUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgcHJvY2Vzc2luZyBwYXRoLiBJZiBpdCYjMzk7cyBhIHRyYXAsIEkgbmVlZCB0byBmaW5kIHRoZSB0cmFwIG51bWJlci4gSWYgaXQmIzM5O3MgYSBtZW1vcnkgYWNjZXNzLCBpcyBpdCBhIHJlYWQgb3IgYSB3cml0ZT8gV2hhdCYjMzk7cyB0aGUgdmlydHVhbCBhZGRyZXNzIGludm9sdmVkPyBXaGF0IGtpbmQgb2YgcGFnZSBmYXVsdCBoYW5kbGVyIGRvIEkgbmVlZCB0byBpbnZva2UsIGFuZCBkb2VzIExvb25nQXJjaCYjMzk7cyBNTVUgaGF2ZSBhbnkgcXVpcmtzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/CgpTbywgSSBuZWVkIHRvIGNhcmVmdWxseSBwYXJzZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBleGl0IHJlYXNvbiwgdGhlIGd1ZXN0JiMzOTtzIHJlZ2lzdGVycyBhdCB0aGUgdGltZSBvZiB0aGUgZXhpdCwgYW5kIGFueSByZWxldmFudCBtZW1vcnkgaW5mb3JtYXRpb24uIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gZGlzcGF0Y2ggdG8gdGhlIGNvcnJlY3QgaGFuZGxlciwgdXBkYXRlIHRoZSBndWVzdCBzdGF0ZSwgYW5kIHVsdGltYXRlbHksIHJldHVybiB0aGUgZ3Vlc3QgdG8gYSBydW5uYWJsZSBzdGF0ZS4gV2hhdCBzcGVjaWZpYyBga3ZtX3J1bmAgc3RydWN0dXJlIGlzIHJlbGV2YW50IGhlcmU/IFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IHB1dCB0b2dldGhlci4gSSBob3BlIHRoaXMgY29kZSBpcyB3ZWxsLWNvbW1lbnRlZCBhbmQgZWFzeSB0byBmb2xsb3cuIEnigJltIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaG93IHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbG9naWMgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBnZW5lcmljIEtWTSBmcmFtZXdvcmsuIEkgbmVlZCB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgaG93IHRoZXNlIHR3byBhcmUgY29ubmVjdGVkLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDU1Olx0XHRyZXR1cm4ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTtcbiA0NTY6XHR9XG4gNDU3Olx0XG4gNDU4Olx0c3RhdGljIHZvaWQga3ZtX2xvb25nYXJjaF9leGl0KHZvaWQpXG4gNDU5Olx0e1xuIDQ2MDpcdFx0a3ZtX2V4aXQoKTtcbiA0NjE6XHRcdGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKTtcbiA0NjI6XHR9XG4gNDYzOlx0XG4gNDY0Olx0bW9kdWxlX2luaXQoa3ZtX2xvb25nYXJjaF9pbml0KTtcbiA0NjU6XHRtb2R1bGVfZXhpdChrdm1fbG9vbmdhcmNoX2V4aXQpO1xuIDQ2NjpcdFxuIDQ2NzpcdCNpZmRlZiBNT0RVTEVcbiA0Njg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlIGt2bV9mZWF0dXJlW10gPSB7XG4gNDY5Olx0XHR7IC5mZWF0dXJlID0gY3B1X2ZlYXR1cmUoTE9PTkdBUkNIX0xWWikgfSxcbiA0NzA6XHRcdHt9LFxuIDQ3MTpcdH07XG4gNDcyOlx0TU9EVUxFX0RFVklDRV9UQUJMRShjcHUsIGt2bV9mZWF0dXJlKTtcbiA0NzM6XHQjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGlzIFBhdGNoOiBLVk0gTG9vbmdBcmNoIENsZWFudXAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gYmUgZm9jdXNlZCBzb2xlbHkgb24gYWRkaW5nIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzYCBjYWxscywgc3BlY2lmaWNhbGx5IGZvciBjbGVhbnVwIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRocyBvZiBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpYCBhbmQgdGhlIG1vZHVsZSB1bmxvYWQgZnVuY3Rpb24gYGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKWAuIFNvLCB0aGlzIHNlZW1zIGxhc2VyLWZvY3VzZWQgb24gbW9kdWxlIGluaXQgYW5kIG1vZHVsZSB1bmxvYWQgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIGlzIGEgZ29vZCB0aGluZyB0byBzZWUgLSByb2J1c3QgZXJyb3IgaGFuZGxpbmcgaXMgYWx3YXlzIGltcG9ydGFudC4KCkJ1dCB3YWl0IGEgbWludXRlLCB0byBiZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoaXMsIGlzIGl0IHJlYWxseSAqanVzdCogYWJvdXQgY2xlYW51cCBpbiB0aGVzZSB0d28gc2NlbmFyaW9zPyBJIG5lZWQgdG8gY29uZmlybSB0aGUgc2NvcGUgaGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoYXQgYGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzYCBhbmQgYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgIGFjdHVhbGx5ICpkbyouIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdGltZSBmb3IgYSBxdWljayBgZ3JlcGAgZm9yIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzYC4gVGhhdCBzaG91bGQgY2xhcmlmeSB0aGluZ3MgcXVpY2tseSBhbmQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYz05NDk9aW50IHZnaWNfdjNfcHJvYmUoY29uc3Qgc3RydWN0IGdpY19rdm1faW5mbyAqaW5mbylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYy05OTUtXHRcdGt2bV9lcnIoXCYjMzQ7Q2Fubm90IHJlZ2lzdGVyIEdJQ3YzIEtWTSBkZXZpY2UuXFxuXCYjMzQ7KTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My5jOjk5NjpcdFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLmMtOTk3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYz0xODQ9dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jOjE4NjpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9ETVNJTlRDKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODctfVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYz02OTk9dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDAte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjcwMTpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9FSU9JTlRDKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDItfVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jPTQ2Nz12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00Njgte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM6NDY5Olx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00NzAtfVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYz01MDQ9dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjUwNjpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTUwNy19XG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhLmM9NzUzPXZvaWQga3ZtX3Jpc2N2X2FpYV9leGl0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vYWlhLmMtNzU4LVx0LyogVW5yZWdpc3RlciBkZXZpY2Ugb3BlcmF0aW9ucyAqL1xuYXJjaC9yaXNjdi9rdm0vYWlhLmM6NzU5Olx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfUklTQ1ZfQUlBKTtcbmFyY2gvcmlzY3Yva3ZtL2FpYS5jLTc2MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjQwOT1pbnQga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoY29uc3Qgc3RydWN0IGt2bV9kZXZpY2Vfb3BzICpvcHMsIHUzMiB0eXBlKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDEwOnZvaWQga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyh1MzIgdHlwZSk7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQxMS1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQ4MDY9aW50IGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzLCB1MzIgdHlwZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ4MTctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ4MTg6dm9pZCBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKHUzMiB0eXBlKVxudmlydC9rdm0va3ZtX21haW4uYy00ODE5LXtcbi0tXG52aXJ0L2t2bS92ZmlvLmM9MzU2PXZvaWQga3ZtX3ZmaW9fb3BzX2V4aXQodm9pZClcbnZpcnQva3ZtL3ZmaW8uYy0zNTcte1xudmlydC9rdm0vdmZpby5jOjM1ODpcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX1ZGSU8pO1xudmlydC9rdm0vdmZpby5jLTM1OS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgyMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AqKgoKT2theSwgc28gYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2UgYWxsIGl0IGRvZXMgaXMgbnVsbGlmeSB0aGUgZW50cnkgaW4gYGt2bV9kZXZpY2Vfb3BzX3RhYmxlYCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBkZXZpY2UgYHR5cGVgLiBJbiBlc3NlbmNlLCBpdCYjMzk7cyBlZmZlY3RpdmVseSB1bnJlZ2lzdGVyaW5nIHRoZSBkZXZpY2Ugb3BlcmF0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHR5cGUuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGUgc291cmNlIHRvIGVuc3VyZSB0aGlzIGlzIGFsbCB0aGVyZSBpcyB0byBpdC4gQmVzdCB0byBsb29rIGF0IGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdGVwcyBpbiB0aGUgdW5yZWdpc3RyYXRpb24gcHJvY2VzcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzaWRlLWVmZmVjdHMsIHJlc291cmNlIGNsZWFuLXVwLCBvciBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDgwNTpcdFxuNDgwNjpcdGludCBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhjb25zdCBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMgKm9wcywgdTMyIHR5cGUpXG40ODA3Olx0e1xuNDgwODpcdFx0aWYgKHR5cGUgXHUwMDNlPSBBUlJBWV9TSVpFKGt2bV9kZXZpY2Vfb3BzX3RhYmxlKSlcbjQ4MDk6XHRcdFx0cmV0dXJuIC1FTk9TUEM7XG40ODEwOlx0XG40ODExOlx0XHRpZiAoa3ZtX2RldmljZV9vcHNfdGFibGVbdHlwZV0gIT0gTlVMTClcbjQ4MTI6XHRcdFx0cmV0dXJuIC1FRVhJU1Q7XG40ODEzOlx0XG40ODE0Olx0XHRrdm1fZGV2aWNlX29wc190YWJsZVt0eXBlXSA9IG9wcztcbjQ4MTU6XHRcdHJldHVybiAwO1xuNDgxNjpcdH1cbjQ4MTc6XHRcbjQ4MTg6XHR2b2lkIGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHModTMyIHR5cGUpXG40ODE5Olx0e1xuNDgyMDpcdFx0aWYgKGt2bV9kZXZpY2Vfb3BzX3RhYmxlW3R5cGVdICE9IE5VTEwpXG40ODIxOlx0XHRcdGt2bV9kZXZpY2Vfb3BzX3RhYmxlW3R5cGVdID0gTlVMTDtcbjQ4MjI6XHR9XG40ODIzOlx0XG40ODI0Olx0c3RhdGljIGludCBrdm1faW9jdGxfY3JlYXRlX2RldmljZShzdHJ1Y3Qga3ZtICprdm0sXG40ODI1Olx0XHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX2NyZWF0ZV9kZXZpY2UgKmNkKVxuNDgyNjpcdHtcbjQ4Mjc6XHRcdGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzO1xuNDgyODpcdFx0c3RydWN0IGt2bV9kZXZpY2UgKmRldjtcbjQ4Mjk6XHRcdGJvb2wgdGVzdCA9IGNkLVx1MDAzZWZsYWdzIFx1MDAyNiBLVk1fQ1JFQVRFX0RFVklDRV9URVNUO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDcwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogODgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHByaW1hcmlseSBhYm91dCBjbGVhbnVwIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZCB1bi1pbml0aWFsaXphdGlvbiBvZiB0aGUgS1ZNIExvb25nQXJjaCBtb2R1bGUsIGFuZCBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgaXQgbWVyaXRzIGZ1enppbmcuCgpNeSBwcmltYXJ5IHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBjaGFuZ2VkIGZ1bmN0aW9uYWxseT8mIzM0OyBJIHNlZSBuZXcgdW5yZWdpc3RlciBmdW5jdGlvbnM6IGBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpYCwgYGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpYCwgZXRjLiwgd2hpY2ggYXJlIGVzc2VudGlhbGx5IHdyYXBwZXJzIGFyb3VuZCBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcygpYC4gVGhleSYjMzk7cmUgYmVpbmcgYWRkZWQgdG8gaGFuZGxlIHRoZSBjbGVhbnVwIG9mIEtWTSBkZXZpY2VzIGluIGJvdGggdGhlIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IHBhdGhzIG9mIHRoZSBga3ZtX2xvb25nYXJjaGAgbW9kdWxlLgoKTXkgZmlyc3QgY2hlY2sgaXMsIGlzIHRoZXJlIGFueSBydW50aW1lIGV4ZWN1dGlvbiBjaGFuZ2VzPyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpYCBpcyBvbmx5IGNhbGxlZCBvbiBtb2R1bGUgaW5pdCwgYW5kIGBrdm1fbG9vbmdhcmNoX2Vudl9leGl0KClgIG9uIG1vZHVsZSBleGl0LiBUaGUgZXJyb3IgdW53aW5kIHBhdGhzIGluIGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0YCBhcmUgb25seSBoaXQgd2hlbiBga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoKWAgZmFpbHMgKHdoaWNoIHN1Z2dlc3RzIHNvbWUga2luZCBvZiBlYXJseSByZWdpc3RyYXRpb24gZXJyb3IpLiBUaGUgY2xlYW51cCBmdW5jdGlvbnMgYXJlIGNhbGxlZCB0aGVyZSBhbmQgaW4gYGt2bV9sb29uZ2FyY2hfZW52X2V4aXRgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRlYXJkb3duL21vZHVsZSBleGl0IG9yIGluaXQgZXJyb3IgcGF0aHMuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBiZWNvbWVzOiBhcmUgdGVhcmRvd24gYW5kIGluaXQgZmFpbHVyZSBwYXRocyB3b3J0aCBmdXp6aW5nPyBMZXQmIzM5O3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lczogdGhleSBzZWVtIHRvIHN1Z2dlc3QgdGhlc2UgYXJlICpub3QqIHR5cGljYWxseSB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGV5IG1vZGlmeSBjb3JlIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMuIFNvLCBsZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBjaGFuZ2VzIHRvIHJ1bnRpbWUgZXhlY3V0aW9uIGZsb3csIGlvY3Rscywgc3lzY2FsbHMsIG9yIFZNIG9wZXJhdGlvbnMuCgpNeSBxdWljayBpbnNwZWN0aW9uIHJldmVhbHMgdGhhdCBub25lIG9mIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24sIGlvY3RscywgaW50ZXJydXB0IGluamVjdGlvbiwgdmNwdSBvcGVyYXRpb25zLCBvciBLVk0gZGV2aWNlIG9wcyBhcmUgY2hhbmdlZC4gVGhpcyBwYXRjaCAqb25seSogaW50cm9kdWNlcyB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMgYW5kIHRoZWlyIHVzZSBpbiBpbml0L2V4aXQgZXJyb3IgaGFuZGxpbmcgcGF0aHMuIEFuZCB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMganVzdCBjYWxsIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKClgLgoKTGV0JiMzOTtzIGRvIGEgZmluYWwgY2hlY2sgb2YgdGhlIGNvbW1pdCB3aXRoIGBnaXQgbG9nYCBhbmQgYGdpdCBkaWZmYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGZpbGVzIG9yIGNoYW5nZXMuCgpCYXNlZCBvbiBhbGwgdGhpcywgSSBjb25jbHVkZSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgcnVudGltZSBmdW5jdGlvbmFsaXR5IHRoYXQgd291bGQgbWFrZSB0aGUgbW9kdWxlIG9yIEtWTSBtb3JlIGludGVyZXN0aW5nIHRvIGZ1enogZnJvbSBhIHJ1bnRpbWUgcGVyc3BlY3RpdmUuIFRoZXJlZm9yZSwgSSB3aWxsIHJlc3BvbmQgd2l0aCBXb3J0aEZ1enppbmc9ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfdW5yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oPTIyPWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaDoyMzp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmgtMjQtdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oPTgxPWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaDo4Mjp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmgtODMtdm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaD00Mz1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oOjQ0OnZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZCk7XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmgtNDUtXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaD03Mj1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmg6NzM6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oLTc0LXZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9kbXNpbnRjLmM9MTc5PWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jLTE4My1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYzoxODQ6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYz02OTQ9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk4LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5OTp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTcwMC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM9NDYyPWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00NjYtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYzo0Njc6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDY4LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9NDk5PWludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTUwMy1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzo1MDQ6dm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9MzUwPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDA5LWVycl9wY2hfcGljOlxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzo0MTA6XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDExLWVycl9laW9pbnRjOlxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzo0MTI6XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDEzLWVycl9pcGk6XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQxNDpcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQxNS1lcnJfZW52OlxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9NDI1PXN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQyNy1cdGlmIChjcHVfaGFzX21zZ2ludClcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6NDI4Olx0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6NDI5Olx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQzMDpcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzo0MzE6XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy00MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDAxCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgUGF0Y2ggaXMgTm90IEZ1enotV29ydGh5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBmdXp6aW5nLCBidXQgbGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCB0aGUgcGF0Y2ggYWN0dWFsbHkgKmRvZXMqLiBJdCYjMzk7cyBmb2N1c2VkIGVudGlyZWx5IG9uIHR3byBrZXkgYXJlYXM6IHVucmVnaXN0ZXJpbmcgZGV2aWNlIG9wZXJhdGlvbnMgZHVyaW5nIG1vZHVsZSB0ZWFyZG93biB2aWEgYGt2bV9sb29uZ2FyY2hfZW52X2V4aXRgLCBhbmQgZXJyb3Igcm9sbGJhY2sgd2l0aGluIG1vZHVsZSBpbml0aWFsaXphdGlvbiBpbiBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGAuCgpUaGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXNlIGFyZSAqZXhjbHVzaXZlbHkqIHRlYXJkb3duIGFuZCBlcnJvciBoYW5kbGluZyBwYXRocy4gVGhleSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSB0aGF0IGEgdXNlciB3b3VsZCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoLCBtb2RpZnkgZXhpc3RpbmcgcnVudGltZSBiZWhhdmlvciwgY3JlYXRlIGFueSBuZXcgaW50ZXJmYWNlcywgb3IgZXhwb3NlIGFueSBuZXcgcmVhY2hhYmxlIGNvZGUgdGhhdCB3b3VsZCBiZSByZWxldmFudCB0byBmdXp6aW5nLiBJdOKAmXMgYWxsIGFib3V0IGdyYWNlZnVsIGNsZWFudXAgb3IgY29udHJvbGxlZCBmYWlsdXJlLgoKVGhlcmVmb3JlLCBhZnRlciByZXZpZXdpbmcgYWxsIHRoZSBzcGVjaWZpY3MsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTGV0IG1lIGRvdWJsZS1jaGVjayBteSByZWFzb25pbmcgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIGJ1bGxldHByb29mLiBNeSByZWFzb25pbmcgcmVtYWlucyBjbGVhcjogdGhlIHBhdGNoIGlzIGVudGlyZWx5IGFib3V0IGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgZXJyb3IgdW53aW5kaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBtb2R1bGUgZXhpdCwgaXQgaGFzIG5vIGltcGFjdCBvbiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ1bnRpbWUgbG9naWMgb2YgaW9jdGxzLCBvciB0aGUgZGV2aWNlIGVtdWxhdGlvbiBsb2dpYyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBwcmVwYXJlIHRoZSBkZXRhaWxzIGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsIHRvIGNvbmZpcm0gbXkgZXZhbHVhdGlvbjoKCiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYAoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGFkZHMgZGV2aWNlIHVucmVnaXN0cmF0aW9uIGFuZCBlcnJvci11bndpbmRpbmcgY2xlYW51cCBwYXRocyBmb3IgdGhlIExvb25nQXJjaCBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIChga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGApIGFuZCBtb2R1bGUgdGVhcmRvd24gKGBrdm1fbG9vbmdhcmNoX2Vudl9leGl0YCkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBleGVjdXRpb24gZmxvdywgaW9jdGxzLCBvciBkZXZpY2UgZW11bGF0aW9uIGxvZ2ljIHRoYXQgd2FycmFudCBmdXp6aW5nLgoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgW11gIChOb3RoaW5nIHRvIGVuYWJsZSkKKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChObyBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uKQoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIExldCYjMzk7cyBtYWtlIHRoYXQgYHNldC1yZXN1bHRzYCBjYWxsIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBlcnJvci11bndpbmRpbmcgYW5kIG1vZHVsZSB0ZWFyZG93biBjbGVhbnVwIGZvciBMb29uZ0FyY2ggS1ZNIGRldmljZSByZWdpc3RyYXRpb24gKHVucmVnaXN0ZXJpbmcgS1ZNIGRldmljZSBvcHMgb24gbW9kdWxlIGV4aXQgb3IgaW5pdCBmYWlsdXJlKS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBydW50aW1lIGRldmljZSBlbXVsYXRpb24sIGlvY3Rscywgb3IgY29yZSBleGVjdXRpb24gcGF0aHMgdGhhdCB3YXJyYW50IGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIxOjQ1LjQ5MDk2Njk3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MzE3NjU4Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIGVycm9yLXVud2luZGluZyBhbmQgbW9kdWxlIHRlYXJkb3duIGNsZWFudXAgZm9yIExvb25nQXJjaCBLVk0gZGV2aWNlIHJlZ2lzdHJhdGlvbiAodW5yZWdpc3RlcmluZyBLVk0gZGV2aWNlIG9wcyBvbiBtb2R1bGUgZXhpdCBvciBpbml0IGZhaWx1cmUpLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJ1bnRpbWUgZGV2aWNlIGVtdWxhdGlvbiwgaW9jdGxzLCBvciBjb3JlIGV4ZWN1dGlvbiBwYXRocyB0aGF0IHdhcnJhbnQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIxOjQ1LjQ5MDk3MjY0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0NTIwMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmU2N2YzMWNkMTFhMGE2YTMyNzM0MjAxNDkxNWMwZDc2ZjdkMmZhN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDIwOjIxOjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oXFxuaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaFxcbkBAIC0yMCw2ICsyMCw3IEBAIHN0cnVjdCBkbXNpbnRjX3N0YXRlIHtcXG4gfTtcXG4gXFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcXG4gdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gaW50IGRtc2ludGNfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHU2NCBhZGRyLCBpbnQgZGF0YSwgaW50IGxldmVsKTtcXG4gaW50IGRtc2ludGNfZGVsaXZlcl9tc2lfdG9fdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHZlY3RvciwgaW50IGxldmVsKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmhcXG5pbmRleCA4YjdhMmZhM2Y3Zjg2Li45NjMzZmJmYzA2NmQ2IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXFxuQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHtcXG4gfTtcXG4gXFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcXG4gdm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpO1xcbiBcXG4gI2VuZGlmIC8qIF9fQVNNX0tWTV9FSU9JTlRDX0ggKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oXFxuaW5kZXggMDYwMTYzZGZiNGEzOC4uZDFkNzJkNGJiOGQxNSAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faXBpLmhcXG5AQCAtNDEsNSArNDEsNiBAQCBzdHJ1Y3QgaXBpX3N0YXRlIHtcXG4gI2RlZmluZSBJT0NTUl9BTllfU0VORFxcdFxcdDB4MTU4XFxuIFxcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbiBcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXFxuaW5kZXggZTc0YjNiNzQyNjM0ZC4uODg3YjA0MzFmZDIwNiAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxcbkBAIC03MCw2ICs3MCw3IEBAIHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyB7XFxuIFxcbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeTtcXG4gaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XFxuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpO1xcbiB2b2lkIHBjaF9waWNfc2V0X2lycShzdHJ1Y3QgbG9vbmdhcmNoX3BjaF9waWMgKnMsIGludCBpcnEsIGludCBsZXZlbCk7XFxuIGludCBwY2hfbXNpX3NldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSwgaW50IGxldmVsKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuY1xcbmluZGV4IGJiNzI4NWM0OWRmM2EuLmM3ZDg4NDFkZjk2ZmEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXFxuQEAgLTE4MCwzICsxODAsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKVxcbiB7XFxuIFxcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcXHUwMDI2a3ZtX2Rtc2ludGNfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9ETVNJTlRDKTtcXG4gfVxcbitcXG4rdm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcXG4re1xcbitcXHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXFxuaW5kZXggODRkODRiZDQzMmQ3NC4uODBmNzhlMDdjNzRhNiAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcXG5AQCAtNjk1LDMgKzY5NSw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXFxuIHtcXG4gXFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFxcdTAwMjZrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xcbiB9XFxuK1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxcbit7XFxuK1xcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9FSU9JTlRDKTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXFxuaW5kZXggZmNmYWYxYTY2NzkwYi4uN2IzMzNhNGEwNDMwZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXFxuQEAgLTQ2MywzICs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXFxuIHtcXG4gXFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFxcdTAwMjZrdm1faXBpX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfSVBJKTtcXG4gfVxcbitcXG4rdm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKVxcbit7XFxuK1xcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuY1xcbmluZGV4IGU3Yjc3NzA1YzUxNmEuLjgzZmEyMzg2Y2Y4MTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXFxuQEAgLTUwMCwzICs1MDAsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbiB7XFxuIFxcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcXHUwMDI2a3ZtX3BjaF9waWNfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpO1xcbiB9XFxuK1xcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbit7XFxuK1xcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9QQ0hQSUMpO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuaW5kZXggM2UxMDA1NTI2ZjRiZC4uYzljYjNmYzJlNTYwNSAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xcbkBAIC0zODUsMjcgKzM4NSw1MSBAQCBzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfZW52X2luaXQodm9pZClcXG4gXFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIElQSSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpO1xcbiBcXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIGVycl9lbnY7XFxuIFxcbiBcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRUlPSU5UQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBlcnJfaXBpO1xcbiBcXG4gXFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIFBDSC1QSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbiBcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gZXJyX2Vpb2ludGM7XFxuIFxcbiBcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRE1TSU5UQyBpbnRlcnJ1cHQgY29udHJyb2xsZXIgaW50ZXJmYWNlICovXFxuLVxcdGlmIChjcHVfaGFzX21zZ2ludClcXG4rXFx0aWYgKGNwdV9oYXNfbXNnaW50KSB7XFxuIFxcdFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0Z290byBlcnJfcGNoX3BpYztcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfcGNoX3BpYzpcXG4rXFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuK2Vycl9laW9pbnRjOlxcbitcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG4rZXJyX2lwaTpcXG4rXFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcXG4rZXJyX2VudjpcXG4rXFx0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcXG4rXFx0a2ZyZWUoa3ZtX2xvb25nYXJjaF9vcHMpO1xcbitcXHRrdm1fbG9vbmdhcmNoX29wcyA9IE5VTEw7XFxuK1xcdGZyZWVfcGVyY3B1KHZtY3MpO1xcbitcXHR2bWNzID0gTlVMTDtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcXG4ge1xcbitcXHRpZiAoY3B1X2hhc19tc2dpbnQpXFxuK1xcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xcbitcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcXG4rXFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XFxuK1xcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuK1xcbiBcXHRpZiAodm1jcylcXG4gXFx0XFx0ZnJlZV9wZXJjcHUodm1jcyk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMTo0NS45NDYxNDkzNTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM4ODYyNDYyNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmU2N2YzMWNkMTFhMGE2YTMyNzM0MjAxNDkxNWMwZDc2ZjdkMmZhN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjA6MjE6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaFxuaW5kZXggNWE3MWI5Y2NiZTc4ZS4uN2MwMTU4NzY0ZDg0NCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmhcbkBAIC0yMCw2ICsyMCw3IEBAIHN0cnVjdCBkbXNpbnRjX3N0YXRlIHtcbiB9O1xuIFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xuIHZvaWQgZG1zaW50Y19pbmplY3RfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gaW50IGRtc2ludGNfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHU2NCBhZGRyLCBpbnQgZGF0YSwgaW50IGxldmVsKTtcbiBpbnQgZG1zaW50Y19kZWxpdmVyX21zaV90b192Y3B1KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdmVjdG9yLCBpbnQgbGV2ZWwpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oXG5pbmRleCA4YjdhMmZhM2Y3Zjg2Li45NjMzZmJmYzA2NmQ2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaFxuQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjIHtcbiB9O1xuIFxuIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpO1xuIHZvaWQgZWlvaW50Y19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcbiBcbiAjZW5kaWYgLyogX19BU01fS1ZNX0VJT0lOVENfSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaFxuaW5kZXggMDYwMTYzZGZiNGEzOC4uZDFkNzJkNGJiOGQxNSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2lwaS5oXG5AQCAtNDEsNSArNDEsNiBAQCBzdHJ1Y3QgaXBpX3N0YXRlIHtcbiAjZGVmaW5lIElPQ1NSX0FOWV9TRU5EXHRcdDB4MTU4XG4gXG4gaW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKTtcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oXG5pbmRleCBlNzRiM2I3NDI2MzRkLi44ODdiMDQzMWZkMjA2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaFxuQEAgLTcwLDYgKzcwLDcgQEAgc3RydWN0IGxvb25nYXJjaF9wY2hfcGljIHtcbiBcbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeTtcbiBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcbiB2b2lkIHBjaF9waWNfc2V0X2lycShzdHJ1Y3QgbG9vbmdhcmNoX3BjaF9waWMgKnMsIGludCBpcnEsIGludCBsZXZlbCk7XG4gaW50IHBjaF9tc2lfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLCBpbnQgbGV2ZWwpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuY1xuaW5kZXggYmI3Mjg1YzQ5ZGYzYS4uYzdkODg0MWRmOTZmYSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jXG5AQCAtMTgwLDMgKzE4MCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9kbXNpbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRE1TSU5UQyk7XG4gfVxuK1xuK3ZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpXG4re1xuK1x0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0RNU0lOVEMpO1xuK31cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbmluZGV4IDg0ZDg0YmQ0MzJkNzQuLjgwZjc4ZTA3Yzc0YTYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuQEAgLTY5NSwzICs2OTUsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuIHtcbiBcdHJldHVybiBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcdTAwMjZrdm1fZWlvaW50Y19kZXZfb3BzLCBLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xuIH1cbitcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuK3tcbitcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9FSU9JTlRDKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuY1xuaW5kZXggZmNmYWYxYTY2NzkwYi4uN2IzMzNhNGEwNDMwZiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuY1xuQEAgLTQ2MywzICs0NjMsOCBAQCBpbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9pcGlfZGV2X29wcywgS1ZNX0RFVl9UWVBFX0xPT05HQVJDSF9JUEkpO1xuIH1cbitcbit2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXG4re1xuK1x0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0lQSSk7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuY1xuaW5kZXggZTdiNzc3MDVjNTE2YS4uODNmYTIzODZjZjgxOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jXG5AQCAtNTAwLDMgKzUwMCw4IEBAIGludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKHZvaWQpXG4ge1xuIFx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9wY2hfcGljX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfUENIUElDKTtcbiB9XG4rXG4rdm9pZCBrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcbit7XG4rXHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfUENIUElDKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbmluZGV4IDNlMTAwNTUyNmY0YmQuLmM5Y2IzZmMyZTU2MDUgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXG5AQCAtMzg1LDI3ICszODUsNTEgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KHZvaWQpXG4gXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggSVBJIGludGVycnVwdCBjb250cm9sbGVyIGludGVyZmFjZS4gKi9cbiBcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfZW52O1xuIFxuIFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIEVJT0lOVEMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuIFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfaXBpO1xuIFxuIFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIFBDSC1QSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuIFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJfZWlvaW50YztcbiBcbiBcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBETVNJTlRDIGludGVycnVwdCBjb250cnJvbGxlciBpbnRlcmZhY2UgKi9cbi1cdGlmIChjcHVfaGFzX21zZ2ludClcbitcdGlmIChjcHVfaGFzX21zZ2ludCkge1xuIFx0XHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0Z290byBlcnJfcGNoX3BpYztcbitcdH1cbitcbitcdHJldHVybiAwO1xuK1xuK2Vycl9wY2hfcGljOlxuK1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XG4rZXJyX2Vpb2ludGM6XG4rXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcbitlcnJfaXBpOlxuK1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2UoKTtcbitlcnJfZW52OlxuK1x0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcbitcdGtmcmVlKGt2bV9sb29uZ2FyY2hfb3BzKTtcbitcdGt2bV9sb29uZ2FyY2hfb3BzID0gTlVMTDtcbitcdGZyZWVfcGVyY3B1KHZtY3MpO1xuK1x0dm1jcyA9IE5VTEw7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBrdm1fbG9vbmdhcmNoX2Vudl9leGl0KHZvaWQpXG4ge1xuK1x0aWYgKGNwdV9oYXNfbXNnaW50KVxuK1x0XHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcbitcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSgpO1xuK1x0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XG4rXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xuK1xuIFx0aWYgKHZtY3MpXG4gXHRcdGZyZWVfcGVyY3B1KHZtY3MpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjE6NDUuOTQ2MTUxODIxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU2NjkxOTAwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmV2aWV3aW5nIGEgS1ZNIFBhdGNoIGZvciBMb29uZ0FyY2gqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSd2ZSBnb3QgYSBMaW51eCBrZXJuZWwgcGF0Y2ggc2VyaWVzIGhlcmUgdGhhdCBuZWVkcyBhIGNyaXRpY2FsIGV5ZS4gRmlyc3QsIGxldCdzIHF1aWNrbHkgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIGdyb3VuZCBydWxlcy4gVGhlIGNoYW5nZXMgYXJlIGluIHRoZSBIRUFEIGNvbW1pdCwgc28gdGhlIGNvZGUgaXMgYWxyZWFkeSBhcHBsaWVkLiBNeSBqb2IgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgbWVyaXRzIGZ1enppbmc7IGlmIHRoZXJlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBuZWVkIHRoYXQgbGV2ZWwgb2Ygc2NydXRpbnkuXG5cbkkgbmVlZCB0byBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl04oCZcyBqdXN0IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBjb3NtZXRpYyBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciB0cmFjZXBvaW50cywgY29uc3RhbnQgdHdlYWtzIHRoYXQgZG9uJ3QgYWx0ZXIgZXhlY3V0aW9uLCBjb2RlIHBhdGhzIGluYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIHZlbmRvci1zcGVjaWZpYyBzdHVmZiBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgb3IgY2VydGFpbiB0ZWFyZG93biBjYWxsYmFja3MuIEJhc2ljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgKmFjdHVhbGx5KiBpbXBhY3RzIGhvdyB0aGUga2VybmVsIHJ1bnMuIExldOKAmXMgc2VlIHdoYXQgd2UgaGF2ZS5cblxuT2theSwgY2hlY2tpbmcgdGhlIHBhdGNo4oCmIGl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtXyouaGAsIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy8qLmNgLCBhbmQgYGFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNgLiBIbW0sIHdoYXQncyB0aGlzIHBhdGNoIGFjdHVhbGx5IGRvaW5nPyBMb29rcyBsaWtlIHRoZXJlIGFyZSBuZXcgYGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl8qX2RldmljZSh2b2lkKWAgZnVuY3Rpb25zIGFuZCBlcnJvciBoYW5kbGluZy9leGl0IHVud2luZGluZyBpbiBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCgpYCBhbmQgYGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKWAuIFxuXG5XYWl0LCBga3ZtX2xvb25nYXJjaF9lbnZfaW5pdGDigKYgdGhhdCdzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIEtWTSBvbiBMb29uZ0FyY2gsIHJpZ2h0PyBMb29rcyBsaWtlIGVycm9yIGhhbmRsaW5nIGFuZCB1bndpbmQgY29kZSBpbiB0aGUga3ZtIG1vZHVsZSBpbml0L2V4aXQsIHNvIEkgbmVlZCB0byBjaGVjayBgYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY2AgaW4gZGV0YWlsIHRvIGRldGVybWluZSB3aGF0IHRob3NlIG5ldyB1bnJlZ2lzdGVyIGZ1bmN0aW9ucyBhcmUgcmVtb3ZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjowMS42MTUzNDUxMzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM4MDpcXHRcXHR9XFxuIDM4MTpcXHRcXG4gMzgyOlxcdFxcdGt2bV9pbml0X2djc3JfZmxhZygpO1xcbiAzODM6XFx0XFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XFxuIDM4NDpcXHRcXG4gMzg1OlxcdFxcdC8qIFJlZ2lzdGVyIExvb25nQXJjaCBJUEkgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbiAzODY6XFx0XFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuIDM4NzpcXHRcXHRpZiAocmV0KVxcbiAzODg6XFx0XFx0XFx0Z290byBlcnJfZW52O1xcbiAzODk6XFx0XFxuIDM5MDpcXHRcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggRUlPSU5UQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIDM5MTpcXHRcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XFxuIDM5MjpcXHRcXHRpZiAocmV0KVxcbiAzOTM6XFx0XFx0XFx0Z290byBlcnJfaXBpO1xcbiAzOTQ6XFx0XFxuIDM5NTpcXHRcXHQvKiBSZWdpc3RlciBMb29uZ0FyY2ggUENILVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpbnRlcmZhY2UuICovXFxuIDM5NjpcXHRcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIDM5NzpcXHRcXHRpZiAocmV0KVxcbiAzOTg6XFx0XFx0XFx0Z290byBlcnJfZWlvaW50YztcXG4gMzk5OlxcdFxcbiA0MDA6XFx0XFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIERNU0lOVEMgaW50ZXJydXB0IGNvbnRycm9sbGVyIGludGVyZmFjZSAqL1xcbiA0MDE6XFx0XFx0aWYgKGNwdV9oYXNfbXNnaW50KSB7XFxuIDQwMjpcXHRcXHRcXHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKCk7XFxuIDQwMzpcXHRcXHRcXHRpZiAocmV0KVxcbiA0MDQ6XFx0XFx0XFx0XFx0Z290byBlcnJfcGNoX3BpYztcXG4gNDA1OlxcdFxcdH1cXG4gNDA2OlxcdFxcbiA0MDc6XFx0XFx0cmV0dXJuIDA7XFxuIDQwODpcXHRcXG4gNDA5OlxcdGVycl9wY2hfcGljOlxcbiA0MTA6XFx0XFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIDQxMTpcXHRlcnJfZWlvaW50YzpcXG4gNDEyOlxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSgpO1xcbiA0MTM6XFx0ZXJyX2lwaTpcXG4gNDE0OlxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuIDQxNTpcXHRlcnJfZW52OlxcbiA0MTY6XFx0XFx0a3ZtX3VucmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcXG4gNDE3OlxcdFxcdGtmcmVlKGt2bV9sb29uZ2FyY2hfb3BzKTtcXG4gNDE4OlxcdFxcdGt2bV9sb29uZ2FyY2hfb3BzID0gTlVMTDtcXG4gNDE5OlxcdFxcdGZyZWVfcGVyY3B1KHZtY3MpO1xcbiA0MjA6XFx0XFx0dm1jcyA9IE5VTEw7XFxuIDQyMTpcXHRcXG4gNDIyOlxcdFxcdHJldHVybiByZXQ7XFxuIDQyMzpcXHR9XFxuIDQyNDpcXHRcXG4gNDI1OlxcdHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcXG4gNDI2OlxcdHtcXG4gNDI3OlxcdFxcdGlmIChjcHVfaGFzX21zZ2ludClcXG4gNDI4OlxcdFxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSgpO1xcbiA0Mjk6XFx0XFx0a3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX3BjaF9waWNfZGV2aWNlKCk7XFxuIDQzMDpcXHRcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG4gNDMxOlxcdFxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuIDQzMjpcXHRcXG4gNDMzOlxcdFxcdGlmICh2bWNzKVxcbiA0MzQ6XFx0XFx0XFx0ZnJlZV9wZXJjcHUodm1jcyk7XFxuIDQzNTpcXHRcXG4gNDM2OlxcdFxcdGlmIChrdm1fbG9vbmdhcmNoX29wcykge1xcbiA0Mzc6XFx0XFx0XFx0a2ZyZWUoa3ZtX2xvb25nYXJjaF9vcHMpO1xcbiA0Mzg6XFx0XFx0fVxcbiA0Mzk6XFx0XFxuIDQ0MDpcXHRcXHRrdm1fdW5yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xcbiA0NDE6XFx0fVxcbiA0NDI6XFx0XFxuIDQ0MzpcXHRzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfaW5pdCh2b2lkKVxcbiA0NDQ6XFx0e1xcbiA0NDU6XFx0XFx0aW50IHI7XFxuIDQ0NjpcXHRcXG4gNDQ3OlxcdFxcdGlmICghY3B1X2hhc19sdnopIHtcXG4gNDQ4OlxcdFxcdFxcdGt2bV9pbmZvKFxcXCJIYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBub3QgYXZhaWxhYmxlXFxcXG5cXFwiKTtcXG4gNDQ5OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA0NTA6XFx0XFx0fVxcbiA0NTE6XFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfZW52X2luaXQoKTtcXG4gNDUyOlxcdFxcdGlmIChyKVxcbiA0NTM6XFx0XFx0XFx0cmV0dXJuIHI7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdHJldHVybiBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xcbiA0NTY6XFx0fVxcbiA0NTc6XFx0XFxuIDQ1ODpcXHRzdGF0aWMgdm9pZCBrdm1fbG9vbmdhcmNoX2V4aXQodm9pZClcXG4gNDU5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjI6MDEuNjE1NDQxMTQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzYyNjQ3NjI0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uIGFuZCBhc3N1bWluZyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8ga3ZtX2xvb25nYXJjaF9leGl0KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIGBrdm1fbG9vbmdhcmNoX2V4aXRgLiBJJ3ZlIGJlZW4gd29ya2luZyB3aXRoIEtWTSBvbiBMb29uZ0FyY2gsIHNvIEkga25vdyB0aGlzIGlzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBoYXBwZW5zLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgd2hhdCBjb25zdGl0dXRlcyBhbiBcImV4aXRcIiDigJMgd2hhdCB0cmlnZ2VyZWQgdGhpcywgYW5kIHdoZXJlIHdlIG5lZWQgdG8gcmV0dXJuIGFmdGVyIGhhbmRsaW5nIGl0LiBJcyB0aGlzIGEgc3lzdGVtIGNhbGwgZXhpdCwgYSBtZW1vcnkgYWNjZXNzLCBhbiBpbnRlcnJ1cHQ/IFRoZSBzcGVjaWZpY3Mgb2YgdGhlIGV4aXQgdHlwZSB3aWxsIGRpY3RhdGUgdGhlIHBhdGggd2UgdGFrZS4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNhdXNlLlxuXG5JJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBhcmNoaXRlY3R1cmFsIGRpZmZlcmVuY2VzIGJldHdlZW4gTG9vbmdBcmNoIGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzIEknbSBmYW1pbGlhciB3aXRoLCBsaWtlIHg4NiBvciBBUk0uIFdoYXQgYXJlIHRoZSBrZXkgcmVnaXN0ZXJzIHdlIG5lZWQgdG8gaW5zcGVjdD8gVGhlIHByb2dyYW0gY291bnRlciAoUEMpLCBvYnZpb3VzbHkuIEJ1dCBhbHNvLCB3aGF0IGFib3V0IHRoZSBzdGF0dXMgcmVnaXN0ZXJzLCB0aGUgY29udHJvbCByZWdpc3RlcnMsIGFuZCBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlZ2lzdGVycyB0aGF0IGhvbGQgZXhpdCBpbmZvcm1hdGlvbj8gV2hlcmUgZG9lcyBMb29uZ0FyY2ggc3RvcmUgaXRzIGV4aXQgcmVhc29uIGNvZGVzPyBBcmUgdGhleSBpbiBhIGRlZGljYXRlZCByZWdpc3RlciBvciBlbmNvZGVkIHdpdGhpbiBhIHNwZWNpZmljIG1lbW9yeSBsb2NhdGlvbj9cblxuVGhlIGdvYWwgaXMgdG8gZGV0ZXJtaW5lIHRoZSBvcHRpbWFsIHByb2Nlc3NpbmcgcGF0aC4gSWYgaXQncyBhIHRyYXAsIEkgbmVlZCB0byBmaW5kIHRoZSB0cmFwIG51bWJlci4gSWYgaXQncyBhIG1lbW9yeSBhY2Nlc3MsIGlzIGl0IGEgcmVhZCBvciBhIHdyaXRlPyBXaGF0J3MgdGhlIHZpcnR1YWwgYWRkcmVzcyBpbnZvbHZlZD8gV2hhdCBraW5kIG9mIHBhZ2UgZmF1bHQgaGFuZGxlciBkbyBJIG5lZWQgdG8gaW52b2tlLCBhbmQgZG9lcyBMb29uZ0FyY2gncyBNTVUgaGF2ZSBhbnkgcXVpcmtzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/XG5cblNvLCBJIG5lZWQgdG8gY2FyZWZ1bGx5IHBhcnNlIHRoZSBkYXRhIHN0cnVjdHVyZXMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24uIEknbSBsb29raW5nIGZvciB0aGUgZXhpdCByZWFzb24sIHRoZSBndWVzdCdzIHJlZ2lzdGVycyBhdCB0aGUgdGltZSBvZiB0aGUgZXhpdCwgYW5kIGFueSByZWxldmFudCBtZW1vcnkgaW5mb3JtYXRpb24uIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIEknbGwgbmVlZCB0byBkaXNwYXRjaCB0byB0aGUgY29ycmVjdCBoYW5kbGVyLCB1cGRhdGUgdGhlIGd1ZXN0IHN0YXRlLCBhbmQgdWx0aW1hdGVseSwgcmV0dXJuIHRoZSBndWVzdCB0byBhIHJ1bm5hYmxlIHN0YXRlLiBXaGF0IHNwZWNpZmljIGBrdm1fcnVuYCBzdHJ1Y3R1cmUgaXMgcmVsZXZhbnQgaGVyZT8gVGhhdCdzIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBMZXQncyBzZWUgaG93IHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgcHV0IHRvZ2V0aGVyLiBJIGhvcGUgdGhpcyBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGFuZCBlYXN5IHRvIGZvbGxvdy4gSeKAmW0gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsb2dpYyBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIGdlbmVyaWMgS1ZNIGZyYW1ld29yay4gSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCBob3cgdGhlc2UgdHdvIGFyZSBjb25uZWN0ZWQuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjI6MDUuMjQxOTE5NTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTU6XFx0XFx0cmV0dXJuIGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XFxuIDQ1NjpcXHR9XFxuIDQ1NzpcXHRcXG4gNDU4OlxcdHN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZXhpdCh2b2lkKVxcbiA0NTk6XFx0e1xcbiA0NjA6XFx0XFx0a3ZtX2V4aXQoKTtcXG4gNDYxOlxcdFxcdGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKTtcXG4gNDYyOlxcdH1cXG4gNDYzOlxcdFxcbiA0NjQ6XFx0bW9kdWxlX2luaXQoa3ZtX2xvb25nYXJjaF9pbml0KTtcXG4gNDY1OlxcdG1vZHVsZV9leGl0KGt2bV9sb29uZ2FyY2hfZXhpdCk7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdCNpZmRlZiBNT0RVTEVcXG4gNDY4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgY3B1X2ZlYXR1cmUga3ZtX2ZlYXR1cmVbXSA9IHtcXG4gNDY5OlxcdFxcdHsgLmZlYXR1cmUgPSBjcHVfZmVhdHVyZShMT09OR0FSQ0hfTFZaKSB9LFxcbiA0NzA6XFx0XFx0e30sXFxuIDQ3MTpcXHR9O1xcbiA0NzI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShjcHUsIGt2bV9mZWF0dXJlKTtcXG4gNDczOlxcdCNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjowNS4yNDE5ODI3NDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjM2MDcxNzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoOiBLVk0gTG9vbmdBcmNoIENsZWFudXAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIGZvY3VzZWQgc29sZWx5IG9uIGFkZGluZyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AgY2FsbHMsIHNwZWNpZmljYWxseSBmb3IgY2xlYW51cCBvcGVyYXRpb25zIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgb2YgYGt2bV9sb29uZ2FyY2hfZW52X2luaXQoKWAgYW5kIHRoZSBtb2R1bGUgdW5sb2FkIGZ1bmN0aW9uIGBrdm1fbG9vbmdhcmNoX2Vudl9leGl0KClgLiBTbywgdGhpcyBzZWVtcyBsYXNlci1mb2N1c2VkIG9uIG1vZHVsZSBpbml0IGFuZCBtb2R1bGUgdW5sb2FkIGVycm9yIGhhbmRsaW5nLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlIC0gcm9idXN0IGVycm9yIGhhbmRsaW5nIGlzIGFsd2F5cyBpbXBvcnRhbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCB0byBiZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcywgaXMgaXQgcmVhbGx5ICpqdXN0KiBhYm91dCBjbGVhbnVwIGluIHRoZXNlIHR3byBzY2VuYXJpb3M/IEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBoZXJlLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHdoYXQgYGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzYCBhbmQgYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgIGFjdHVhbGx5ICpkbyouIEl0IGxvb2tzIGxpa2UgaXQncyB0aW1lIGZvciBhIHF1aWNrIGBncmVwYCBmb3IgYGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNgLiBUaGF0IHNob3VsZCBjbGFyaWZ5IHRoaW5ncyBxdWlja2x5IGFuZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI5OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIyOjA4LjQ3ODA1NjgxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE2MzE3Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLmM9OTQ5PWludCB2Z2ljX3YzX3Byb2JlKGNvbnN0IHN0cnVjdCBnaWNfa3ZtX2luZm8gKmluZm8pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYy05OTUtXFx0XFx0a3ZtX2VycihcXFwiQ2Fubm90IHJlZ2lzdGVyIEdJQ3YzIEtWTSBkZXZpY2UuXFxcXG5cXFwiKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYzo5OTY6XFx0XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My5jLTk5Ny1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jPTE4ND12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYzoxODY6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0RNU0lOVEMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODctfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTY5OT12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDAte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo3MDE6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX0VJT0lOVEMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy03MDItfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM9NDY3PXZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2lwaV9kZXZpY2Uodm9pZClcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00Njgte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQ2OTpcXHRrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfSVBJKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00NzAtfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jPTUwND12b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzo1MDY6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfTE9PTkdBUkNIX1BDSFBJQyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTUwNy19XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9haWEuYz03NTM9dm9pZCBrdm1fcmlzY3ZfYWlhX2V4aXQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2FpYS5jLTc1OC1cXHQvKiBVbnJlZ2lzdGVyIGRldmljZSBvcGVyYXRpb25zICovXFxuYXJjaC9yaXNjdi9rdm0vYWlhLmM6NzU5OlxcdGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHMoS1ZNX0RFVl9UWVBFX1JJU0NWX0FJQSk7XFxuYXJjaC9yaXNjdi9rdm0vYWlhLmMtNzYwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0MDk9aW50IGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzLCB1MzIgdHlwZSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0MTA6dm9pZCBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKHUzMiB0eXBlKTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQxMS1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDgwNj1pbnQga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoY29uc3Qgc3RydWN0IGt2bV9kZXZpY2Vfb3BzICpvcHMsIHUzMiB0eXBlKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy00ODE3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NDgxODp2b2lkIGt2bV91bnJlZ2lzdGVyX2RldmljZV9vcHModTMyIHR5cGUpXFxudmlydC9rdm0va3ZtX21haW4uYy00ODE5LXtcXG4tLVxcbnZpcnQva3ZtL3ZmaW8uYz0zNTY9dm9pZCBrdm1fdmZpb19vcHNfZXhpdCh2b2lkKVxcbnZpcnQva3ZtL3ZmaW8uYy0zNTcte1xcbnZpcnQva3ZtL3ZmaW8uYzozNTg6XFx0a3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyhLVk1fREVWX1RZUEVfVkZJTyk7XFxudmlydC9rdm0vdmZpby5jLTM1OS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIyOjExLjI5NDM4MDE4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NzAxMTI5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AqKlxuXG5Pa2F5LCBzbyBga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wc2AgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSBhbGwgaXQgZG9lcyBpcyBudWxsaWZ5IHRoZSBlbnRyeSBpbiBga3ZtX2RldmljZV9vcHNfdGFibGVgIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGRldmljZSBgdHlwZWAuIEluIGVzc2VuY2UsIGl0J3MgZWZmZWN0aXZlbHkgdW5yZWdpc3RlcmluZyB0aGUgZGV2aWNlIG9wZXJhdGlvbnMgZm9yIHRoYXQgcGFydGljdWxhciB0eXBlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIHNvdXJjZSB0byBlbnN1cmUgdGhpcyBpcyBhbGwgdGhlcmUgaXMgdG8gaXQuIEJlc3QgdG8gbG9vayBhdCBgdmlydC9rdm0va3ZtX21haW4uY2AgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3RlcHMgaW4gdGhlIHVucmVnaXN0cmF0aW9uIHByb2Nlc3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzaWRlLWVmZmVjdHMsIHJlc291cmNlIGNsZWFuLXVwLCBvciBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoxMy43NjQ0OTU2NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODA1LFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0ODA1OlxcdFxcbjQ4MDY6XFx0aW50IGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKGNvbnN0IHN0cnVjdCBrdm1fZGV2aWNlX29wcyAqb3BzLCB1MzIgdHlwZSlcXG40ODA3OlxcdHtcXG40ODA4OlxcdFxcdGlmICh0eXBlIFxcdTAwM2U9IEFSUkFZX1NJWkUoa3ZtX2RldmljZV9vcHNfdGFibGUpKVxcbjQ4MDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuNDgxMDpcXHRcXG40ODExOlxcdFxcdGlmIChrdm1fZGV2aWNlX29wc190YWJsZVt0eXBlXSAhPSBOVUxMKVxcbjQ4MTI6XFx0XFx0XFx0cmV0dXJuIC1FRVhJU1Q7XFxuNDgxMzpcXHRcXG40ODE0OlxcdFxcdGt2bV9kZXZpY2Vfb3BzX3RhYmxlW3R5cGVdID0gb3BzO1xcbjQ4MTU6XFx0XFx0cmV0dXJuIDA7XFxuNDgxNjpcXHR9XFxuNDgxNzpcXHRcXG40ODE4OlxcdHZvaWQga3ZtX3VucmVnaXN0ZXJfZGV2aWNlX29wcyh1MzIgdHlwZSlcXG40ODE5OlxcdHtcXG40ODIwOlxcdFxcdGlmIChrdm1fZGV2aWNlX29wc190YWJsZVt0eXBlXSAhPSBOVUxMKVxcbjQ4MjE6XFx0XFx0XFx0a3ZtX2RldmljZV9vcHNfdGFibGVbdHlwZV0gPSBOVUxMO1xcbjQ4MjI6XFx0fVxcbjQ4MjM6XFx0XFxuNDgyNDpcXHRzdGF0aWMgaW50IGt2bV9pb2N0bF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBrdm0gKmt2bSxcXG40ODI1OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fY3JlYXRlX2RldmljZSAqY2QpXFxuNDgyNjpcXHR7XFxuNDgyNzpcXHRcXHRjb25zdCBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMgKm9wcztcXG40ODI4OlxcdFxcdHN0cnVjdCBrdm1fZGV2aWNlICpkZXY7XFxuNDgyOTpcXHRcXHRib29sIHRlc3QgPSBjZC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fQ1JFQVRFX0RFVklDRV9URVNUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoxMy43NjQ3MTYwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzE0Mjk0OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoRnV6emluZz1mYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBwcmltYXJpbHkgYWJvdXQgY2xlYW51cCBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgdW4taW5pdGlhbGl6YXRpb24gb2YgdGhlIEtWTSBMb29uZ0FyY2ggbW9kdWxlLCBhbmQgSSBuZWVkIHRvIGFzc2VzcyB3aGV0aGVyIGl0IG1lcml0cyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IHRob3VnaHQgaXMsIFwiV2hhdCdzIGNoYW5nZWQgZnVuY3Rpb25hbGx5P1wiIEkgc2VlIG5ldyB1bnJlZ2lzdGVyIGZ1bmN0aW9uczogYGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKClgLCBga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKClgLCBldGMuLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgd3JhcHBlcnMgYXJvdW5kIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKClgLiBUaGV5J3JlIGJlaW5nIGFkZGVkIHRvIGhhbmRsZSB0aGUgY2xlYW51cCBvZiBLVk0gZGV2aWNlcyBpbiBib3RoIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXhpdCBwYXRocyBvZiB0aGUgYGt2bV9sb29uZ2FyY2hgIG1vZHVsZS5cblxuTXkgZmlyc3QgY2hlY2sgaXMsIGlzIHRoZXJlIGFueSBydW50aW1lIGV4ZWN1dGlvbiBjaGFuZ2VzPyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KClgIGlzIG9ubHkgY2FsbGVkIG9uIG1vZHVsZSBpbml0LCBhbmQgYGt2bV9sb29uZ2FyY2hfZW52X2V4aXQoKWAgb24gbW9kdWxlIGV4aXQuIFRoZSBlcnJvciB1bndpbmQgcGF0aHMgaW4gYGt2bV9sb29uZ2FyY2hfZW52X2luaXRgIGFyZSBvbmx5IGhpdCB3aGVuIGBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcygpYCBmYWlscyAod2hpY2ggc3VnZ2VzdHMgc29tZSBraW5kIG9mIGVhcmx5IHJlZ2lzdHJhdGlvbiBlcnJvcikuIFRoZSBjbGVhbnVwIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHRoZXJlIGFuZCBpbiBga3ZtX2xvb25nYXJjaF9lbnZfZXhpdGAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGVhcmRvd24vbW9kdWxlIGV4aXQgb3IgaW5pdCBlcnJvciBwYXRocy5cblxuVGhlIGNydWNpYWwgcXVlc3Rpb24gYmVjb21lczogYXJlIHRlYXJkb3duIGFuZCBpbml0IGZhaWx1cmUgcGF0aHMgd29ydGggZnV6emluZz8gTGV0J3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lczogdGhleSBzZWVtIHRvIHN1Z2dlc3QgdGhlc2UgYXJlICpub3QqIHR5cGljYWxseSB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGV5IG1vZGlmeSBjb3JlIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMuIFNvLCBsZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY2hhbmdlcyB0byBydW50aW1lIGV4ZWN1dGlvbiBmbG93LCBpb2N0bHMsIHN5c2NhbGxzLCBvciBWTSBvcGVyYXRpb25zLlxuXG5NeSBxdWljayBpbnNwZWN0aW9uIHJldmVhbHMgdGhhdCBub25lIG9mIHRoZSBjb3JlIEtWTSBlbXVsYXRpb24sIGlvY3RscywgaW50ZXJydXB0IGluamVjdGlvbiwgdmNwdSBvcGVyYXRpb25zLCBvciBLVk0gZGV2aWNlIG9wcyBhcmUgY2hhbmdlZC4gVGhpcyBwYXRjaCAqb25seSogaW50cm9kdWNlcyB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMgYW5kIHRoZWlyIHVzZSBpbiBpbml0L2V4aXQgZXJyb3IgaGFuZGxpbmcgcGF0aHMuIEFuZCB0aGUgdW5yZWdpc3RlciBmdW5jdGlvbnMganVzdCBjYWxsIGBrdm1fdW5yZWdpc3Rlcl9kZXZpY2Vfb3BzKClgLlxuXG5MZXQncyBkbyBhIGZpbmFsIGNoZWNrIG9mIHRoZSBjb21taXQgd2l0aCBgZ2l0IGxvZ2AgYW5kIGBnaXQgZGlmZmAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBmaWxlcyBvciBjaGFuZ2VzLlxuXG5CYXNlZCBvbiBhbGwgdGhpcywgSSBjb25jbHVkZSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBydW50aW1lIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBtYWtlIHRoZSBtb2R1bGUgb3IgS1ZNIG1vcmUgaW50ZXJlc3RpbmcgdG8gZnV6eiBmcm9tIGEgcnVudGltZSBwZXJzcGVjdGl2ZS4gVGhlcmVmb3JlLCBJIHdpbGwgcmVzcG9uZCB3aXRoIFdvcnRoRnV6emluZz1mYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ3MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjIyOjE5LjA3OTAxMjgwMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NjQ1NTQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Rtc2ludGMuaD0yMj1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKTtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZG1zaW50Yy5oOjIzOnZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Rtc2ludGNfZGV2aWNlKHZvaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9kbXNpbnRjLmgtMjQtdm9pZCBkbXNpbnRjX2luamVjdF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9laW9pbnRjLmg9ODE9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2Uodm9pZCk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2Vpb2ludGMuaDo4Mjp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKTtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fZWlvaW50Yy5oLTgzLXZvaWQgZWlvaW50Y19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaD00Mz1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaDo0NDp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9pcGkuaC00NS1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9wY2hfcGljLmg9NzI9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZCk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX3BjaF9waWMuaDo3Mzp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKTtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1fcGNoX3BpYy5oLTc0LXZvaWQgcGNoX3BpY19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYz0xNzk9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZG1zaW50Y19kZXZpY2Uodm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZG1zaW50Yy5jOjE4NDp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9kbXNpbnRjX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Rtc2ludGMuYy0xODUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTY5ND1pbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5OC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njk5OnZvaWQga3ZtX2xvb25nYXJjaF91bnJlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTcwMC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYz00NjI9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfaXBpX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDY2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQ2Nzp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDY4LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYz00OTk9aW50IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfcGNoX3BpY19kZXZpY2Uodm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjUwNDp2b2lkIGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9wY2hfcGljX2RldmljZSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy01MDUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYz0zNTA9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Vudl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQwOS1lcnJfcGNoX3BpYzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQxMDpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQxMS1lcnJfZWlvaW50YzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQxMjpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTQxMy1lcnJfaXBpOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6NDE0OlxcdGt2bV9sb29uZ2FyY2hfdW5yZWdpc3Rlcl9pcGlfZGV2aWNlKCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy00MTUtZXJyX2VudjpcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9NDI1PXN0YXRpYyB2b2lkIGt2bV9sb29uZ2FyY2hfZW52X2V4aXQodm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDI3LVxcdGlmIChjcHVfaGFzX21zZ2ludClcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQyODpcXHRcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZG1zaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQyOTpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfcGNoX3BpY19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQzMDpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjQzMTpcXHRrdm1fbG9vbmdhcmNoX3VucmVnaXN0ZXJfaXBpX2RldmljZSgpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtNDMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoyMC44MzU0Nzc1MThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzk3MzEwODA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBUaGlzIFBhdGNoIGlzIE5vdCBGdXp6LVdvcnRoeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgZnV6emluZywgYnV0IGxldCdzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCB0aGUgcGF0Y2ggYWN0dWFsbHkgKmRvZXMqLiBJdCdzIGZvY3VzZWQgZW50aXJlbHkgb24gdHdvIGtleSBhcmVhczogdW5yZWdpc3RlcmluZyBkZXZpY2Ugb3BlcmF0aW9ucyBkdXJpbmcgbW9kdWxlIHRlYXJkb3duIHZpYSBga3ZtX2xvb25nYXJjaF9lbnZfZXhpdGAsIGFuZCBlcnJvciByb2xsYmFjayB3aXRoaW4gbW9kdWxlIGluaXRpYWxpemF0aW9uIGluIGBrdm1fbG9vbmdhcmNoX2Vudl9pbml0YC5cblxuVGhlIGNyaXRpY2FsIHBvaW50IGhlcmUgaXMgdGhhdCB0aGVzZSBhcmUgKmV4Y2x1c2l2ZWx5KiB0ZWFyZG93biBhbmQgZXJyb3IgaGFuZGxpbmcgcGF0aHMuIFRoZXkgZG9uJ3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSB0aGF0IGEgdXNlciB3b3VsZCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoLCBtb2RpZnkgZXhpc3RpbmcgcnVudGltZSBiZWhhdmlvciwgY3JlYXRlIGFueSBuZXcgaW50ZXJmYWNlcywgb3IgZXhwb3NlIGFueSBuZXcgcmVhY2hhYmxlIGNvZGUgdGhhdCB3b3VsZCBiZSByZWxldmFudCB0byBmdXp6aW5nLiBJdOKAmXMgYWxsIGFib3V0IGdyYWNlZnVsIGNsZWFudXAgb3IgY29udHJvbGxlZCBmYWlsdXJlLlxuXG5UaGVyZWZvcmUsIGFmdGVyIHJldmlld2luZyBhbGwgdGhlIHNwZWNpZmljcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIExldCBtZSBkb3VibGUtY2hlY2sgbXkgcmVhc29uaW5nIHRvIG1ha2Ugc3VyZSBpdCdzIGJ1bGxldHByb29mLiBNeSByZWFzb25pbmcgcmVtYWlucyBjbGVhcjogdGhlIHBhdGNoIGlzIGVudGlyZWx5IGFib3V0IGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgZXJyb3IgdW53aW5kaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBtb2R1bGUgZXhpdCwgaXQgaGFzIG5vIGltcGFjdCBvbiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ1bnRpbWUgbG9naWMgb2YgaW9jdGxzLCBvciB0aGUgZGV2aWNlIGVtdWxhdGlvbiBsb2dpYyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgcHJlcGFyZSB0aGUgZGV0YWlscyBmb3IgdGhlIGBzZXQtcmVzdWx0c2AgY2FsbCB0byBjb25maXJtIG15IGV2YWx1YXRpb246XG5cbiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggb25seSBhZGRzIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgZXJyb3ItdW53aW5kaW5nIGNsZWFudXAgcGF0aHMgZm9yIHRoZSBMb29uZ0FyY2ggS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiAoYGt2bV9sb29uZ2FyY2hfZW52X2luaXRgKSBhbmQgbW9kdWxlIHRlYXJkb3duIChga3ZtX2xvb25nYXJjaF9lbnZfZXhpdGApLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJ1bnRpbWUgZXhlY3V0aW9uIGZsb3csIGlvY3Rscywgb3IgZGV2aWNlIGVtdWxhdGlvbiBsb2dpYyB0aGF0IHdhcnJhbnQgZnV6emluZy5cbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKE5vdGhpbmcgdG8gZW5hYmxlKVxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChObyBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uKVxuXG5BbHJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBMZXQncyBtYWtlIHRoYXQgYHNldC1yZXN1bHRzYCBjYWxsIGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQwMSwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyMjoyNC44MDg1ODc3MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBlcnJvci11bndpbmRpbmcgYW5kIG1vZHVsZSB0ZWFyZG93biBjbGVhbnVwIGZvciBMb29uZ0FyY2ggS1ZNIGRldmljZSByZWdpc3RyYXRpb24gKHVucmVnaXN0ZXJpbmcgS1ZNIGRldmljZSBvcHMgb24gbW9kdWxlIGV4aXQgb3IgaW5pdCBmYWlsdXJlKS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBydW50aW1lIGRldmljZSBlbXVsYXRpb24sIGlvY3Rscywgb3IgY29yZSBleGVjdXRpb24gcGF0aHMgdGhhdCB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgZXJyb3ItdW53aW5kaW5nIGFuZCBtb2R1bGUgdGVhcmRvd24gY2xlYW51cCBmb3IgTG9vbmdBcmNoIEtWTSBkZXZpY2UgcmVnaXN0cmF0aW9uICh1bnJlZ2lzdGVyaW5nIEtWTSBkZXZpY2Ugb3BzIG9uIG1vZHVsZSBleGl0IG9yIGluaXQgZmFpbHVyZSkuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcnVudGltZSBkZXZpY2UgZW11bGF0aW9uLCBpb2N0bHMsIG9yIGNvcmUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd2FycmFudCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjI6MjQuODA4NjE0MDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvl29[1] Phase: Running StartedAt: 2026-09-02 20:22:36 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvl29[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 20:22:36 +0000 UTC FinishedAt: 2026-09-02 20:22:40 +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,}