Name: series-workflowpjgcm Phase: Failed StartedAt: 2026-06-27 01:23:13 +0000 UTC FinishedAt: 2026-06-27 01:31:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgcm[0] Phase: Succeeded StartedAt: 2026-06-27 01:23:13 +0000 UTC FinishedAt: 2026-06-27 01:31:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgcm[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 01:23:13 +0000 UTC FinishedAt: 2026-06-27 01:31:19 +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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1YTIyOTQyOTAwN2RlM2I1YTI1YTc3YjgxYTEwNWYyYjgyMDRkODhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMToyOToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jXG5pbmRleCAwNzI3ZDUzMzQ1YTMzYi4uYzU5ZGFhMDMyZTcwYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbkBAIC02NzIsMTAgJiM0Mzs2NzIsMTYgQEAgc3RhdGljIHZvaWQgb2FfdGM2X2NsZWFudXBfb25nb2luZ190eF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KVxuIFxuIHN0YXRpYyB2b2lkIG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiB7XG4tXHRpZiAodGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiKSB7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4mIzQzO1x0c2tiID0gdGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiO1xuJiM0MztcdHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYiA9IE5VTEw7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHNrYikge1xuIFx0XHR0YzYtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLVx0XHRrZnJlZV9za2IodGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiKTtcbi1cdFx0dGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiID0gTlVMTDtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0fVxuIH1cbiBcbkBAIC02ODYsNiAmIzQzOzY5MiwxMiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfZnJlZV9wZW5kaW5nX3NrYnMoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0b2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2IodGM2KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2KVxuJiM0Mzt7XG4mIzQzO1x0dGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XG4mIzQzO1x0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcbiYjNDM7fVxuJiM0MztcbiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZ1xuICAqIHRoZSBpbnRlcnJ1cHQgb2YgdGhlIGRldmljZSB3b24mIzM5O3Qgd29yay4gU2luY2UgU1BJIGludGVycnVwdCBpc1xuICAqIGRpc2FibGVkLCBpdCBzaG91bGQgc3RvcCB0aGUgcmVwZWF0ZWQgaW50ZXJydXB0cy5cbkBAIC03MjMsOCAmIzQzOzczNSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdH1cbiBcbiBcdGlmIChGSUVMRF9HRVQoU1RBVFVTMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJST1IsIHZhbHVlKSkge1xuLVx0XHR0YzYtXHUwMDNlcnhfYnVmX292ZXJmbG93ID0gdHJ1ZTtcbi1cdFx0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcbiYjNDM7XHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDslczogUmVjZWl2ZSBidWZmZXIgb3ZlcmZsb3cgZXJyb3JcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgdGM2LVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lKTtcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG5AQCAtODA1LDEzICYjNDM7ODE2LDM1IEBAIHN0YXRpYyB2b2lkIG9hX3RjNl9zdWJtaXRfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdHRjNi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpXG4mIzQzOy8qIE9uIG92ZXJzdWJzY3JpYmVkIHRyYWZmaWMgY29uZGl0aW9uLCBwYXJ0aWN1bGFybHkgd2l0aCBvdmVyd2hlbG1pbmcgcnhcbiYjNDM7ICogYnVmZmVyIG92ZXJmbG93IGVycm9ycywgdGhlcmUgY291bGQgYmUgZGF0YSBjaHVuayBsb3NzLiBJZiB0YWlsICYjNDM7IGxlbmd0aFxuJiM0MzsgKiBnb2VzIGJleW9uZCBlbmQgcG9pbnRlciwgdGhhdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIGRhdGEgY2h1bmsgd2l0aFxuJiM0MzsgKiBlbmRfdmFsaWQgYml0IGlzIGxvc3QuIFRpbWUgdG8gbG9vayBmb3IgYSBkYXRhIGNodW5rIHdpdGggc3RhcnRfdmFsaWQgYml0LlxuJiM0MzsgKlxuJiM0MzsgKiBJZiByeF9za2IgaXMgTlVMTCwgaXQgaXMgdGltZSB0byBzdGFydCBsb29raW5nIGZvciBkYXRhIGNodW5rIHdpdGhcbiYjNDM7ICogc3RhcnRfYml0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpXG4ge1xuJiM0MztcdGlmICghdGM2LVx1MDAzZXJ4X3NrYiB8fFxuJiM0MztcdCAgICAodGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2V0YWlsICYjNDM7IGxlbmd0aCkgXHUwMDNlIHRjNi1cdTAwM2VyeF9za2ItXHUwMDNlZW5kKSB7XG4mIzQzO1x0XHRvYV90YzZfbG9va19mb3JfbmV3X2ZyYW1lKHRjNik7XG4mIzQzO1x0XHRyZXR1cm4gLUVBR0FJTjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bWVtY3B5KHNrYl9wdXQodGM2LVx1MDAzZXJ4X3NrYiwgbGVuZ3RoKSwgcGF5bG9hZCwgbGVuZ3RoKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOy8qIE9uIG92ZXJ3aGVsbWluZyByeCBidWZmZXIgb3ZlcmZsb3cgZXJyb3JzLCBkdWUgdG8gZGF0YSBjaHVuayBsb3NzLCBpdCBpc1xuJiM0MzsgKiBwb3NzaWJsZSB0aGF0IHdlIGdldCB0d28gZGF0YSBjaHVua3Mgd2l0aCBzdGFydF92YWxpZCBiaXQgc2V0LCB3aXRob3V0XG4mIzQzOyAqIGVuZF92YWxpZCBiaXQgc2V0IGluIGJldHdlZW4uIEluIHRoaXMgY2FzZSwgcnhfc2tiIHdvdWxkIGhhdmUgYSB2YWxpZFxuJiM0MzsgKiBidWZmZXIgcG9pbnRlci4gV2Ugc2hvdWxkIHJlbGVhc2UsIGlmIGEgdmFsaWQgcG9pbnRlciBpcyBmb3VuZCBiZWZvcmVcbiYjNDM7ICogYWxsb2NhdGluZyBhIG5ldyBvbmUuXG4mIzQzOyAqL1xuIHN0YXRpYyBpbnQgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuJiM0MztcdG9hX3RjNl9jbGVhbnVwX29uZ29pbmdfcnhfc2tiKHRjNik7XG4gXHR0YzYtXHUwMDNlcnhfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYl9pcF9hbGlnbih0YzYtXHUwMDNlbmV0ZGV2LCB0YzYtXHUwMDNlbmV0ZGV2LVx1MDAzZW10dSAmIzQzO1xuIFx0XHRcdFx0XHRcdEVUSF9ITEVOICYjNDM7IEVUSF9GQ1NfTEVOKTtcbiBcdGlmICghdGM2LVx1MDAzZXJ4X3NrYikge1xuQEAgLTgzMSw3ICYjNDM7ODY0LDkgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19jb21wbGV0ZV9yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4mIzQzO1x0cmV0ID0gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcbiBcdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XG4gXG5AQCAtODQ2LDIyICYjNDM7ODgxLDI0IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfZnJhbWVfc3RhcnQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbi1cbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4mIzQzO3N0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHUxNiBzaXplKVxuIHtcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4mIzQzO1x0aW50IHJldDtcbiBcbi1cdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XG4mIzQzO1x0cmV0ID0gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbiYjNDM7XHRpZiAoIXJldClcbiYjNDM7XHRcdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLFxuLVx0XHRcdFx0XHQgdTMyIGZvb3RlcilcbiYjNDM7c3RhdGljIGludCBvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXG4mIzQzO1x0XHRcdFx0XHR1MzIgZm9vdGVyKVxuIHtcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSk7XG4mIzQzO1x0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCxcbiYjNDM7XHRcdFx0XHQgICAgT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuQEAgLTg3NCw2ICYjNDM7OTExLDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG4gXHRib29sIHN0YXJ0X3ZhbGlkID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9WQUxJRCwgZm9vdGVyKTtcbiBcdGJvb2wgZW5kX3ZhbGlkID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSUQsIGZvb3Rlcik7XG4gXHR1MTYgc2l6ZTtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0LyogUmVzdGFydCB0aGUgbmV3IHJ4IGZyYW1lIGFmdGVyIHJlY2VpdmluZyByeCBidWZmZXIgb3ZlcmZsb3cgZXJyb3IgKi9cbiBcdGlmIChzdGFydF92YWxpZCBcdTAwMjZcdTAwMjYgdGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdylcbkBAIC05MDEsOCAmIzQzOzkzOSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBvbmx5IHJ4IGZyYW1lIGVuZCAqL1xuIFx0aWYgKGVuZF92YWxpZCBcdTAwMjZcdTAwMjYgIXN0YXJ0X3ZhbGlkKSB7XG4gXHRcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgJiM0MzsgMTtcbi1cdFx0b2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7XG4tXHRcdHJldHVybiAwO1xuJiM0MztcdFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBwcmV2aW91cyByeCBmcmFtZSBlbmQgYW5kIG5leHQgcnggZnJhbWVcbkBAIC05MTUsNyAmIzQzOzk1Miw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0XHQgKi9cbiBcdFx0aWYgKHRjNi1cdTAwM2VyeF9za2IpIHtcbiBcdFx0XHRzaXplID0gZW5kX2J5dGVfb2Zmc2V0ICYjNDM7IDE7XG4tXHRcdFx0b2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7XG4mIzQzO1x0XHRcdHJldCA9IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4gXHRcdH1cbiBcdFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcbiBcdFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHRjNixcbkBAIC05MjQsOSAmIzQzOzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBvbmdvaW5nIHJ4IGZyYW1lIGRhdGEgKi9cbi1cdG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpO1xuLVxuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpO1xuIH1cbiBcbiBzdGF0aWMgdTMyIG9hX3RjNl9nZXRfcnhfY2h1bmtfZm9vdGVyKHN0cnVjdCBvYV90YzYgKnRjNiwgdTE2IGZvb3Rlcl9vZmZzZXQpXG5AQCAtMTI1MCwxMSAmIzQzOzEyODcsNiBAQCBFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfemVyb19hbGlnbl9yZWNlaXZlX2ZyYW1lX2VuYWJsZSk7XG4gICovXG4gbmV0ZGV2X3R4X3Qgb2FfdGM2X3N0YXJ0X3htaXQoc3RydWN0IG9hX3RjNiAqdGM2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdGlmICh0YzYtXHUwMDNlZGlzYWJsZV90cmFmZmljIHx8IHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYikge1xuLVx0XHRuZXRpZl9zdG9wX3F1ZXVlKHRjNi1cdTAwM2VuZXRkZXYpO1xuLVx0XHRyZXR1cm4gTkVUREVWX1RYX0JVU1k7XG4tXHR9XG4tXG4gXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4gXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdHRjNi1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7XG5AQCAtMTI2Miw2ICYjNDM7MTI5NCwxMSBAQCBuZXRkZXZfdHhfdCBvYV90YzZfc3RhcnRfeG1pdChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHR9XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbiYjNDM7XHRpZiAodGM2LVx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXHUwMDNld2FpdGluZ190eF9za2IpIHtcbiYjNDM7XHRcdG5ldGlmX3N0b3BfcXVldWUodGM2LVx1MDAzZW5ldGRldik7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0YzYtXHUwMDNldHhfc2tiX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuJiM0MztcdH1cbiBcdHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYiA9IHNrYjtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG9hX3RjNiBsaWJyYXJ5IChPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgU1BJKSwgd2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZSBsYW44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIuIFNpbmNlIFNQSSBkZXZpY2VzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICh1bmxpa2UgVVNCIHZpYSB2aGNpIG9yIFdpLUZpIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoZSBsYW44NjV4IGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NWEyMjk0MjkwMDdkZTNiNWEyNWE3N2I4MWExMDVmMmI4MjA0ZDg4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDE6Mjk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCmluZGV4IDA3MjdkNTMzNDVhMzNiLi5jNTlkYWEwMzJlNzBhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMKQEAgLTY3MiwxMCAmIzQzOzY3MiwxNiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfY2xlYW51cF9vbmdvaW5nX3R4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiAKIHN0YXRpYyB2b2lkIG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNikKIHsKLQlpZiAodGM2LSZndDt3YWl0aW5nX3R4X3NrYikgewomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKJiM0MzsJc2tiID0gdGM2LSZndDt3YWl0aW5nX3R4X3NrYjsKJiM0MzsJdGM2LSZndDt3YWl0aW5nX3R4X3NrYiA9IE5VTEw7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7dGM2LSZndDt0eF9za2JfbG9jayk7CiYjNDM7CiYjNDM7CWlmIChza2IpIHsKIAkJdGM2LSZndDtuZXRkZXYtJmd0O3N0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7OwotCQlrZnJlZV9za2IodGM2LSZndDt3YWl0aW5nX3R4X3NrYik7Ci0JCXRjNi0mZ3Q7d2FpdGluZ190eF9za2IgPSBOVUxMOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJfQogfQogCkBAIC02ODYsNiAmIzQzOzY5MiwxMiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfZnJlZV9wZW5kaW5nX3NrYnMoc3RydWN0IG9hX3RjNiAqdGM2KQogCW9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHRjNik7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBvYV90YzZfbG9va19mb3JfbmV3X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNikKJiM0Mzt7CiYjNDM7CXRjNi0mZ3Q7cnhfYnVmX292ZXJmbG93ID0gdHJ1ZTsKJiM0MzsJb2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTsKJiM0Mzt9CiYjNDM7CiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZwogICogdGhlIGludGVycnVwdCBvZiB0aGUgZGV2aWNlIHdvbiYjMzk7dCB3b3JrLiBTaW5jZSBTUEkgaW50ZXJydXB0IGlzCiAgKiBkaXNhYmxlZCwgaXQgc2hvdWxkIHN0b3AgdGhlIHJlcGVhdGVkIGludGVycnVwdHMuCkBAIC03MjMsOCAmIzQzOzczNSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNikKIAl9CiAKIAlpZiAoRklFTERfR0VUKFNUQVRVUzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUk9SLCB2YWx1ZSkpIHsKLQkJdGM2LSZndDtyeF9idWZfb3ZlcmZsb3cgPSB0cnVlOwotCQlvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpOwomIzQzOwkJb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpOwogCQluZXRfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7JXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXG4mIzM0OywKIAkJCQkgICAgdGM2LSZndDtuZXRkZXYtJmd0O25hbWUpOwogCQlyZXR1cm4gLUVBR0FJTjsKQEAgLTgwNSwxMyAmIzQzOzgxNiwzNSBAQCBzdGF0aWMgdm9pZCBvYV90YzZfc3VibWl0X3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiAJdGM2LSZndDtyeF9za2IgPSBOVUxMOwogfQogCi1zdGF0aWMgdm9pZCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpCiYjNDM7LyogT24gb3ZlcnN1YnNjcmliZWQgdHJhZmZpYyBjb25kaXRpb24sIHBhcnRpY3VsYXJseSB3aXRoIG92ZXJ3aGVsbWluZyByeAomIzQzOyAqIGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIHRoZXJlIGNvdWxkIGJlIGRhdGEgY2h1bmsgbG9zcy4gSWYgdGFpbCAmIzQzOyBsZW5ndGgKJiM0MzsgKiBnb2VzIGJleW9uZCBlbmQgcG9pbnRlciwgdGhhdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIGRhdGEgY2h1bmsgd2l0aAomIzQzOyAqIGVuZF92YWxpZCBiaXQgaXMgbG9zdC4gVGltZSB0byBsb29rIGZvciBhIGRhdGEgY2h1bmsgd2l0aCBzdGFydF92YWxpZCBiaXQuCiYjNDM7ICoKJiM0MzsgKiBJZiByeF9za2IgaXMgTlVMTCwgaXQgaXMgdGltZSB0byBzdGFydCBsb29raW5nIGZvciBkYXRhIGNodW5rIHdpdGgKJiM0MzsgKiBzdGFydF9iaXQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpCiB7CiYjNDM7CWlmICghdGM2LSZndDtyeF9za2IgfHwKJiM0MzsJICAgICh0YzYtJmd0O3J4X3NrYi0mZ3Q7dGFpbCAmIzQzOyBsZW5ndGgpICZndDsgdGM2LSZndDtyeF9za2ItJmd0O2VuZCkgewomIzQzOwkJb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpOwomIzQzOwkJcmV0dXJuIC1FQUdBSU47CiYjNDM7CX0KJiM0MzsKIAltZW1jcHkoc2tiX3B1dCh0YzYtJmd0O3J4X3NrYiwgbGVuZ3RoKSwgcGF5bG9hZCwgbGVuZ3RoKTsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKiBPbiBvdmVyd2hlbG1pbmcgcnggYnVmZmVyIG92ZXJmbG93IGVycm9ycywgZHVlIHRvIGRhdGEgY2h1bmsgbG9zcywgaXQgaXMKJiM0MzsgKiBwb3NzaWJsZSB0aGF0IHdlIGdldCB0d28gZGF0YSBjaHVua3Mgd2l0aCBzdGFydF92YWxpZCBiaXQgc2V0LCB3aXRob3V0CiYjNDM7ICogZW5kX3ZhbGlkIGJpdCBzZXQgaW4gYmV0d2Vlbi4gSW4gdGhpcyBjYXNlLCByeF9za2Igd291bGQgaGF2ZSBhIHZhbGlkCiYjNDM7ICogYnVmZmVyIHBvaW50ZXIuIFdlIHNob3VsZCByZWxlYXNlLCBpZiBhIHZhbGlkIHBvaW50ZXIgaXMgZm91bmQgYmVmb3JlCiYjNDM7ICogYWxsb2NhdGluZyBhIG5ldyBvbmUuCiYjNDM7ICovCiBzdGF0aWMgaW50IG9hX3RjNl9hbGxvY2F0ZV9yeF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KQogewomIzQzOwlvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpOwogCXRjNi0mZ3Q7cnhfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYl9pcF9hbGlnbih0YzYtJmd0O25ldGRldiwgdGM2LSZndDtuZXRkZXYtJmd0O210dSAmIzQzOwogCQkJCQkJRVRIX0hMRU4gJiM0MzsgRVRIX0ZDU19MRU4pOwogCWlmICghdGM2LSZndDtyeF9za2IpIHsKQEAgLTgzMSw3ICYjNDM7ODY0LDkgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19jb21wbGV0ZV9yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwomIzQzOwlyZXQgPSBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKIAogCW9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7CiAKQEAgLTg0NiwyMiAmIzQzOzg4MSwyNCBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHUxNiBzaXplKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwotCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpCiYjNDM7c3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpCiB7Ci0Jb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTsKJiM0MzsJaW50IHJldDsKIAotCW9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7CiYjNDM7CXJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7CiYjNDM7CWlmICghcmV0KQomIzQzOwkJb2FfdGM2X3N1Ym1pdF9yeF9za2IodGM2KTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLAotCQkJCQkgdTMyIGZvb3RlcikKJiM0MztzdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwKJiM0MzsJCQkJCXUzMiBmb290ZXIpCiB7Ci0Jb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTsKJiM0MzsJcmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwKJiM0MzsJCQkJICAgIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpOwogfQogCiBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2NodW5rX3BheWxvYWQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqZGF0YSwKQEAgLTg3NCw2ICYjNDM7OTExLDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsCiAJYm9vbCBzdGFydF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSUQsIGZvb3Rlcik7CiAJYm9vbCBlbmRfdmFsaWQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX0VORF9WQUxJRCwgZm9vdGVyKTsKIAl1MTYgc2l6ZTsKJiM0MzsJaW50IHJldDsKIAogCS8qIFJlc3RhcnQgdGhlIG5ldyByeCBmcmFtZSBhZnRlciByZWNlaXZpbmcgcnggYnVmZmVyIG92ZXJmbG93IGVycm9yICovCiAJaWYgKHN0YXJ0X3ZhbGlkICZhbXA7JmFtcDsgdGM2LSZndDtyeF9idWZfb3ZlcmZsb3cpCkBAIC05MDEsOCAmIzQzOzkzOSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLAogCS8qIFByb2Nlc3MgdGhlIGNodW5rIHdpdGggb25seSByeCBmcmFtZSBlbmQgKi8KIAlpZiAoZW5kX3ZhbGlkICZhbXA7JmFtcDsgIXN0YXJ0X3ZhbGlkKSB7CiAJCXNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgJiM0MzsgMTsKLQkJb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7Ci0JCXJldHVybiAwOwomIzQzOwkJcmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpOwogCX0KIAogCS8qIFByb2Nlc3MgdGhlIGNodW5rIHdpdGggcHJldmlvdXMgcnggZnJhbWUgZW5kIGFuZCBuZXh0IHJ4IGZyYW1lCkBAIC05MTUsNyAmIzQzOzk1Miw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLAogCQkgKi8KIAkJaWYgKHRjNi0mZ3Q7cnhfc2tiKSB7CiAJCQlzaXplID0gZW5kX2J5dGVfb2Zmc2V0ICYjNDM7IDE7Ci0JCQlvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTsKJiM0MzsJCQlyZXQgPSBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTsKJiM0MzsJCQlpZiAocmV0KQomIzQzOwkJCQlyZXR1cm4gcmV0OwogCQl9CiAJCXNpemUgPSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFIC0gc3RhcnRfYnl0ZV9vZmZzZXQ7CiAJCXJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsCkBAIC05MjQsOSAmIzQzOzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLAogCX0KIAogCS8qIFByb2Nlc3MgdGhlIGNodW5rIHdpdGggb25nb2luZyByeCBmcmFtZSBkYXRhICovCi0Jb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZSh0YzYsIGRhdGEsIGZvb3Rlcik7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpOwogfQogCiBzdGF0aWMgdTMyIG9hX3RjNl9nZXRfcnhfY2h1bmtfZm9vdGVyKHN0cnVjdCBvYV90YzYgKnRjNiwgdTE2IGZvb3Rlcl9vZmZzZXQpCkBAIC0xMjUwLDExICYjNDM7MTI4Nyw2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl96ZXJvX2FsaWduX3JlY2VpdmVfZnJhbWVfZW5hYmxlKTsKICAqLwogbmV0ZGV2X3R4X3Qgb2FfdGM2X3N0YXJ0X3htaXQoc3RydWN0IG9hX3RjNiAqdGM2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewotCWlmICh0YzYtJmd0O2Rpc2FibGVfdHJhZmZpYyB8fCB0YzYtJmd0O3dhaXRpbmdfdHhfc2tiKSB7Ci0JCW5ldGlmX3N0b3BfcXVldWUodGM2LSZndDtuZXRkZXYpOwotCQlyZXR1cm4gTkVUREVWX1RYX0JVU1k7Ci0JfQotCiAJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkgewogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQl0YzYtJmd0O25ldGRldi0mZ3Q7c3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7CkBAIC0xMjYyLDYgJiM0MzsxMjk0LDExIEBAIG5ldGRldl90eF90IG9hX3RjNl9zdGFydF94bWl0KHN0cnVjdCBvYV90YzYgKnRjNiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl9CiAKIAlzcGluX2xvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKJiM0MzsJaWYgKHRjNi0mZ3Q7ZGlzYWJsZV90cmFmZmljIHx8IHRjNi0mZ3Q7d2FpdGluZ190eF9za2IpIHsKJiM0MzsJCW5ldGlmX3N0b3BfcXVldWUodGM2LSZndDtuZXRkZXYpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKJiM0MzsJCXJldHVybiBORVRERVZfVFhfQlVTWTsKJiM0MzsJfQogCXRjNi0mZ3Q7d2FpdGluZ190eF9za2IgPSBza2I7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT0FfVEM2IEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY2AgZHJpdmVyLCB3aGljaCBpcyBmb3IgYW4gT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSBFdGhlcm5ldCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcga2V5IGZ1bmN0aW9uczogYG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiYCwgYG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWVgLCBhbGwgdGhlIHByb2Nlc3Npbmcgcm91dGluZXMgZm9yIHRoZSBSWCBwYXRoIChgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzYCwgYG9hX3RjNl91cGRhdGVfcnhfc2tiYCwgYG9hX3RjNl9hbGxvY2F0ZV9yeF9za2JgLCBgb2FfdGM2X3ByY3NfY29tcGxldGVfcnhfZnJhbWVgLCBgb2FfdGM2X3ByY3NfcnhfZnJhbWVfc3RhcnRgLCBgb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kYCwgYG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWVgLCBhbmQgYG9hX3RjNl9wcmNzX3J4X2NodW5rX3BheWxvYWRgKSBhbmQgdGhlIFRYIHBhdGggaW4gYG9hX3RjNl9zdGFydF94bWl0YC4KClR3byBrZXkgZml4ZXMgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50OiBidWZmZXIgb3ZlcmZsb3cgcHJvdGVjdGlvbiBpbiBgb2FfdGM2X3VwZGF0ZV9yeF9za2JgIHZpYSBib3VuZHMgY2hlY2tpbmcgKGB0YzYtJmd0O3J4X3NrYi0mZ3Q7dGFpbCAmIzQzOyBsZW5ndGggJmd0OyB0YzYtJmd0O3J4X3NrYi0mZ3Q7ZW5kYCkgYW5kIGEgcmFjZSBjb25kaXRpb24gZml4IGluIGBvYV90YzZfc3RhcnRfeG1pdGAgYnkgYWRkaW5nIGEgbG9jayBhcm91bmQgdGhlIGNoZWNrIGZvciBgdGM2LSZndDt3YWl0aW5nX3R4X3NrYmAuCgpOb3csIEkgbmVlZCB0byBldmFsdWF0ZSB0aGUgdGVzdGFiaWxpdHkgb2YgdGhpcyBwYXRjaCwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIGFuIFNQSS1iYXNlZCBFdGhlcm5ldCBkcml2ZXIuIFNQSSBkZXZpY2VzIGFyZSBnZW5lcmFsbHkgYSBwYWluIHRvIGVtdWxhdGUsIGVzcGVjaWFsbHkgaW4gc29tZXRoaW5nIGxpa2UgUUVNVS4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgU1BJIGNvbnRyb2xsZXIgZW11bGF0aW9uIG9yIHNvbWUgc29ydCBvZiBtb2NrIFNQSSBkcml2ZXIsIGl0JiMzOTtzIGdvaW5nIHRvIGJlIHRyaWNreS4gTGV0JiMzOTtzIGRpZyBpbnRvIGlmIHRoZXJlJiMzOTtzIGFueSBTUEkgbW9jayBvciBhIHdheSB0byBmdXp6IHRoaXMgZHJpdmVyLiBBaCwgc3l6a2FsbGVyLiBJIGtub3cgaXQgaXNuJiMzOTt0IHNldCB1cCB0byBkaXJlY3RseSBmdXp6IFNQSSBkZXZpY2VzLiBVbmxlc3Mgd2UgY2FuIGluamVjdCBTUEkgdHJhZmZpYyBvciBoYXZlIGEgdmlydHVhbCBTUEkgZGV2aWNlLCB3ZSYjMzk7cmUgcHJvYmFibHkgbm90IGdvaW5nIHRvIGdldCBmYXIgdGhlcmUuCgpIb3dldmVyLCBgb2FfdGM2X3N0YXJ0X3htaXRgIGlzIGEgc3RhbmRhcmQgYG5ldGRldl90eF90YCBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldHdvcmsgdHJhZmZpYy4gSWYgd2UgY2FuIGluc3RhbnRpYXRlIHRoZSBuZXR3b3JrIGludGVyZmFjZSwgd2UgY2FuIHRlc3QgdGhhdCBwYXJ0LiBUaGUga2V5IHF1ZXN0aW9uIG5vdyBpcywgY2FuIHdlIGluc3RhbnRpYXRlIHRoZSBpbnRlcmZhY2U/IExldCYjMzk7cyBnbyBiYWNrIGFuZCBsb29rIGF0IHRoZSBzb3VyY2UgY29kZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNgIHRvIGZpZ3VyZSB0aGF0IG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYV90YzZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE0MjU6RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X2luaXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTI2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBPQSBUQzYgTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBuZXcgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZSBpcyBpdCByZXZvbHZlcyBhcm91bmQgYSBsaWJyYXJ5IG9yIGZyYW1ld29yayByZWxhdGVkIHRvIE9BIFRDNi4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIGl0cyBpbnRlZ3JhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cywgc28gbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2Ugd2hvJiMzOTtzIGNhbGxpbmcgYG9hX3RjNl9pbml0YC4gVGhhdCBmdW5jdGlvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gaGFwcGVucywgc28gZmluZGluZyB0aG9zZSBjYWxsIHNpdGVzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGdyYXNwIG9uIGhvdyB0aGlzIGxpYnJhcnkgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gdW5wYWNrIGl0cyBwdXJwb3NlIGFuZCBmdW5jdGlvbmFsaXR5IGluIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2FfdGM2X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMzEwPUVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9zdGFydF94bWl0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMxMzogKiBvYV90YzZfaW5pdCAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb2FfdGM2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzE5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE0MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGBsYW44NjV4YCBhbmQgU1BJIERldmljZSBJbnN0YW50aWF0aW9uIGluIGEgRnV6emluZyBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBsYW44NjV4YCB0aGluZyBhbmQgaXQmIzM5O3MgYmVpbmcgcHJvYmVkIGJ5IGBsYW44NjV4X3Byb2JlYC4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGNvbnRleHQgaGVyZSBpcyB0aGF0IGl0JiMzOTtzIGFuIFNQSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0LCBhcyBhbiBleHBlcnQgaW4gdGhpcyBhcmVhLCBpczogQ2FuIHN5emthbGxlciAqZGlyZWN0bHkqIGluc3RhbnRpYXRlIFNQSSBkZXZpY2VzPyBHZW5lcmFsbHksIHRoZSBhbnN3ZXIgaXMgbm8uIFVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgY2xldmVyIFNQSSBtb2NrIHNldHVwIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBpdCYjMzk7cyB1c3VhbGx5IG5vdCB0aGF0IHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHRoZW4gbXkgYnJhaW4gc3RhcnRzIGNhdGFsb2dpbmcgdGhlIHBvc3NpYmlsaXRpZXMuLi4gd2UgaGF2ZSBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLCBgdmttc2AgZm9yIERSTSwgYHZoY2lgIGZvciBVU0IsIGB1aW5wdXRgIGZvciBpbnB1dC4gVGhlc2UgYXJlIHZpcnR1YWxpemVkIGRldmljZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhbGxvdyBzeXprYWxsZXIgdG8gdGVzdCB3aXRob3V0IHJlcXVpcmluZyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIEhtbSwgaXMgdGhlcmUgYSB2aXJ0dWFsIFNQSSBlcXVpdmFsZW50PwoKTGV0JiMzOTtzIHNlZS4uLiBXYWl0LCB5ZXMhIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBwb3NzaWJpbGl0aWVzIHRoYXQgc3ByaW5nIHRvIG1pbmQuIFRoZXJlJiMzOTtzIGBzcGktbW9ja2AsIHdoaWNoIGlzIHRoZSBtb3JlIG9idmlvdXMgb25lLCBidXQgYWxzbyB0aGF0IGBzcGktbG9vcGJhY2stdGVzdGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRob3NlIGNhbiBhY3R1YWxseSBiZSB1c2VkIHRvIHByb2JlIHRoaXMgYGxhbjg2NXhgIGRyaXZlci4gSSBuZWVkIHRvIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgcmVhbGlzdGljIHdheSwgZ2l2ZW4gb3VyIGVudmlyb25tZW50LCB0byB0cmlnZ2VyIHRoYXQgYGxhbjg2NXhfcHJvYmVgIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9MTc2MjA9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbFxuTUFJTlRBSU5FUlM6MTc2MjE6RjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuTUFJTlRBSU5FUlMtMTc2MjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjYwOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy02MS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT0xMD1sYW43NDN4LW9ianMgOj0gbGFuNzQzeF9tYWluLm8gbGFuNzQzeF9ldGh0b29sLm8gbGFuNzQzeF9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19MQU44NjVYKSAmIzQzOz0gbGFuODY1eC9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfTEFOOTY2WF9TV0lUQ0gpICYjNDM7PSBsYW45NjZ4L1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc9OD1jb25maWcgTEFOODY1WFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTYtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZzoxNzpcdCAgY2FsbGVkIGxhbjg2NXguXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MQU44NjVYKSAmIzQzOz0gbGFuODY1eC5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5OnN0cnVjdCBsYW44NjV4X3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwLVx0c3RydWN0IHdvcmtfc3RydWN0IG11bHRpY2FzdF93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHN0cnVjdCBvYV90YzYgKnRjNiwgY29uc3QgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjU1OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2LCBjb25zdCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjEtXHQvKiBDb25maWd1cmUgTUFDIGFkZHJlc3MgbG93IGJ5dGVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NjI6XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVx1MDAzZXRjNiwgbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc1LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NzY6XHRyZXN0b3JlX3JldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXHUwMDNldGM2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc3LVx0XHRcdFx0XHRcdCAgICAgICBwcml2LVx1MDAzZW5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGFuODY1eF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04NS1cdC5nZXRfbGlua19rc2V0dGluZ3MgPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjg5OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6OTE6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05Mi1cdHN0cnVjdCBzb2NrYWRkciAqYWRkcmVzcyA9IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMDI6XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIGFkZHJlc3MtXHUwMDNlc2FfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MTExPXN0YXRpYyB1MzIgZ2V0X2FkZHJlc3NfYml0KHU4IGFkZHJbRVRIX0FMRU5dLCB1MzIgYml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTE2OnN0YXRpYyB1MzIgbGFuODY1eF9oYXNoKHU4IGFkZHJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTExNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMzI6c3RhdGljIGludCBsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzOS1cdG5ldGRldl9mb3JfZWFjaF9tY19hZGRyKGhhLCBwcml2LVx1MDAzZW5ldGRldikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE0MDpcdFx0dTMyIGJpdF9udW0gPSBsYW44NjV4X2hhc2goaGEtXHUwMDNlYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTY0OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE4NjpzdGF0aWMgaW50IGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTg3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIwNTpzdGF0aWMgdm9pZCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA3Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbGFuODY1eF9wcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwOC1cdFx0XHRcdFx0XHQgbXVsdGljYXN0X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMTgtXHRcdC8qIEVuYWJsaW5nIGFsbCBtdWx0aWNhc3QgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIxOTpcdFx0aWYgKGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjAtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjYtXHRcdC8qIEVuYWJsaW5nIHNwZWNpZmljIG11bHRpY2FzdCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjI3Olx0XHRpZiAobGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIocHJpdikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI4LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM0LVx0XHQvKiBFbmFibGluZyBsb2NhbCBtYWMgYWRkcmVzcyBvbmx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjM1Olx0XHRpZiAobGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM2LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0NDpzdGF0aWMgdm9pZCBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ2Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjUxOnN0YXRpYyBuZXRkZXZfdHhfdCBsYW44NjV4X3NlbmRfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTQ6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTk6c3RhdGljIGludCBsYW44NjV4X2h3X2Rpc2FibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc0OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NjpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3Ny1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4MC1cdHBoeV9zdG9wKG5ldGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI4MTpcdHJldCA9IGxhbjg2NXhfaHdfZGlzYWJsZShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyOTA6c3RhdGljIGludCBsYW44NjV4X2h3X2VuYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI5MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDU6c3RhdGljIGludCBsYW44NjV4X25ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDc6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDgtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMTA6XHRyZXQgPSBsYW44NjV4X2h3X2VuYWJsZShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI0Olx0Lm5kb19vcGVuXHRcdD0gbGFuODY1eF9uZXRfb3BlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjU6XHQubmRvX3N0b3BcdFx0PSBsYW44NjV4X25ldF9jbG9zZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjY6XHQubmRvX3N0YXJ0X3htaXRcdFx0PSBsYW44NjV4X3NlbmRfcGFja2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcdC5uZG9fc2V0X3J4X21vZGVcdD0gbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI4Olx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gbGFuODY1eF9zZXRfbWFjX2FkZHJlc3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzI5LVx0Lm5kb192YWxpZGF0ZV9hZGRyXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzMzOnN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM1LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzY6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNy1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzOTpcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQwLVx0aWYgKCFuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ni1cdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0NzpcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5MjpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM5OS1cdG5ldGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMDpcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMTpcdG5ldGRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmxhbjg2NXhfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDE4OnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDE5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjA6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDI4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyOS1cdHsgLm5hbWUgPSBcJiMzNDtsYW44NjUwXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzMzpNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgbGFuODY1eF9pZHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MzU6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzYtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTBcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxhbjg2NXhfZHRfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQyOnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsYW44NjV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDMtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0NC1cdFx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDU6XHRcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0Ni1cdCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0NzpcdC5wcm9iZSA9IGxhbjg2NXhfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ4Olx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpcdC5pZF90YWJsZSA9IGxhbjg2NXhfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ1MTptb2R1bGVfc3BpX2RyaXZlcihsYW44NjV4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDUyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9Nzc9c3RhdGljIGNvbnN0IHUxNiBsYW44Njd4X3JldmIxX2ZpeHVwX21hc2tzWzEyXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTg3LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo4ODpzdGF0aWMgY29uc3QgdTMyIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbMTddID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy04OS1cdDB4MDBEMCwgMHgwMEUwLCAweDAwRTksIDB4MDBGNSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTk1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo5NjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbMTddID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy05Ny1cdDB4M0YzMSwgMHhDMDAwLCAweDlFNTAsIDB4MUNGOCxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwMy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTA0OnN0YXRpYyBjb25zdCB1MTYgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzWzJdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDUtXHQweDAwODQsIDB4MDA4QSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwNy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTA4OnN0YXRpYyBjb25zdCB1MzIgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzWzEyXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTA5LVx0MHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTEzLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMTQ6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1sxMl0gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNS1cdDB4MDEwMywgMHgwOTEwLCAweDFEMjYsIDB4MDAyQSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExOS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTIwOnN0YXRpYyBjb25zdCB1MTYgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVnc1szXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTIxLVx0MHgwMEFELCAweDAwQUUsIDB4MDBBRixcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTEzND1zdGF0aWMgY29uc3QgdTE2IGxhbjg2N3hfcmV2ZDBfZml4dXBfdmFsdWVzWzhdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTQ2LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNDc6c3RhdGljIGludCBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgYWRkcilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTQ4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE2Ni0gKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTY3OnN0YXRpYyBpbnQgbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzOCBvZmZzZXRzW10pXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE2OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNzItXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShmaXh1cF9yZWdzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTczOlx0XHRyZXQgPSBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChwaHlkZXYsIGZpeHVwX3JlZ3NbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNzQtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xODctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE4ODpzdGF0aWMgaW50IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4OS1cdFx0XHRcdCAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjA0LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMDU6c3RhdGljIGludCBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjA2LVx0XHRcdFx0ICAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjIwLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjE6c3RhdGljIGludCBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjIyLXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjIzOlx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzKV07XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIyNDpcdHUxNiBjZmdfcGFyYW1zW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzKV07XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyNS1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyNi1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjI3Olx0cmV0ID0gbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyOC1cdFx0XHRcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzc6XHRyZXR1cm4gbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzgtXHRcdFx0XHRcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDAtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0MTpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQyLXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjQzOlx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNDQ6XHR1MTYgY2ZnX3BhcmFtc1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQ1LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQ2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNDc6XHRyZXQgPSBsYW44NjV4X3JlYWRfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0OC1cdFx0XHRcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjU4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTk6XHRyZXR1cm4gbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVx0XHRcdFx0XHRjZmdfcmVzdWx0cywgQVJSQVlfU0laRShjZmdfcmVzdWx0cykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNjM6c3RhdGljIGludCBsYW44NjV4X3JldmJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3MC1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzE6XHRyZXQgPSBsYW44NjV4X2dlbmVyYXRlX2NmZ19vZmZzZXRzKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3NTpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzYtXHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjc3Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbaV0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3ODpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzW2ldKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjc5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjgyLVx0XHRpZiAoaSA9PSAxKSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4MzpcdFx0XHRyZXQgPSBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4NC1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODk6XHRyZXQgPSBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjkyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyOTM6XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTQtXHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk1Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVnc1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk2Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzW2ldKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjk3LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9MzI5PXN0YXRpYyBpbnQgbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMzctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMzODpcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzM5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM1My1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNTQ6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzU1Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTktXHRcdGlmIChpID09IDEpIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzYwOlx0XHRcdHJldCA9IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzYxLVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjUtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM2NjpcdHJldCA9IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM3MDpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVncyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3MS1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzI6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzW2ldLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzM6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNzQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz00OTQ9c3RhdGljIGludCBsYW44Nnh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTgtICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUxOTpzdGF0aWMgaW50IGxhbjg2NXhfcGh5X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTUyMC1cdFx0XHRcdHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MjctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUyODpzdGF0aWMgaW50IGxhbjg2NXhfcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MjktXHRcdFx0XHQgdTE2IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTUzNz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU4NC1cdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg1Olx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODYtXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1ODc6XHRcdC5yZWFkX21tZCAgICAgICAgICAgPSBsYW44NjV4X3BoeV9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg4Olx0XHQud3JpdGVfbW1kICAgICAgICAgID0gbGFuODY1eF9waHlfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODktXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDI3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgU1BJIEVtdWxhdGlvbiBpbiBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gaGFuZGxlIFNQSSBkZXZpY2VzIHdpdGhpbiB0aGUgU3l6a2FsbGVyIGVudmlyb25tZW50LiBUaGUgY3VycmVudCBkcml2ZXIgdW5kZXIgc2NydXRpbnkgaXMgYGxhbjg2NXhgLCBhbmQgaXQmIzM5O3MgYW4gU1BJIGRyaXZlciwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGVtdWxhdGUgU1BJIGNvbW11bmljYXRpb24gZWZmZWN0aXZlbHkgZm9yIHRlc3RpbmcuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIGEgU3l6a2FsbGVyLW5hdGl2ZSB3YXkgdG8gZW11bGF0ZSBTUEkgZGV2aWNlcywgc2ltaWxhciB0byBob3cgaXQgaGFuZGxlcyBVU0Igd2l0aCBgdmhjaWAgb3IgUENJIHRocm91Z2ggbW9ja2luZyBtZWNoYW5pc21zLiBIbW0sIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYSBnZW5lcmFsLCByZWFkeS10by11c2UgU1BJIGVtdWxhdG9yIGxpa2UgdGhvc2UuCgpIb2xkIG9uLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZ+KApiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9zcGkvYCBkaXJlY3RvcnkuIE1heWJlIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIHBlcmhhcHMgYSBtb2R1bGUgbGlrZSBgc3BpLW1vY2tgIG9yIHRoZSBgc3BpLWxvb3BiYWNrLXRlc3RgIG1vZHVsZT8gVGhhdCBjb3VsZCBiZSBhIGNydWNpYWwgY29tcG9uZW50IGZvciBteSBkZWJ1Z2dpbmcgYW5kIHRlc3Rpbmcgc3RyYXRlZ3kuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHJlZnJlc2ggbXkgbWVtb3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NwaV9tb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3NjMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byBzeXprYWxsZXIgYW5kIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgZXhpc3RpbmcgU1BJIG1vY2tpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkga25vdyBzeXprYWxsZXIgKmdlbmVyYWxseSogYXZvaWRzIGRpcmVjdCBmdXp6aW5nIG9mIFNQSSBkZXZpY2VzIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBpbmRpcmVjdCBlbnRyeSBwb2ludC4gSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBTUEkgbW9ja3M/CgoqKkNoZWNraW5nIGZvciBFeGlzdGluZyBTUEkgTW9ja3MgYW5kIExldmVyYWdpbmcgTGlicmFyaWVzKioKCk5vdywgc3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBgb2FfdGM2YCBsaWJyYXJ5LiBUaGF0JiMzOTtzIGludHJpZ3VpbmcuIFNpbmNlIGl0JiMzOTtzIGEgbGlicmFyeSwgSSB3b25kZXIgaWYgaXQmIzM5O3MgdXRpbGl6ZWQgYnkgb3RoZXIgZHJpdmVycyB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIHB1cnZpZXcuIElmIHNvLCB0aGF0IGNvdWxkIHByb3ZpZGUgYSBwYXRod2F5IGZvciBpbmRpcmVjdCBTUEkgZnV6emluZyB0aHJvdWdoIHRob3NlIG90aGVyIGRyaXZlcnMuIE5lZWQgdG8gY2hlY2sgaXRzIHVzYWdlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYV90YzZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MzMzPXN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzQ5Olx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUwLVx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE0MjU6RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X2luaXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0NzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIExBTjg2NXggQ29kZTogQSBGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBvbmx5IHRvdWNoZXMgdGhlIGBsYW44NjV4YCBkcml2ZXIsIGFuZCB0aGF0JiMzOTtzIGFuIFNQSSBkZXZpY2UsIHJpZ2h0PyBUaGUgaW5oZXJlbnQgY2hhbGxlbmdlIGlzIHRoYXQgU1BJIGRldmljZXMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdW5sZXNzIHRoZXJlJiMzOTtzIGEgdmVyeSBzcGVjaWZpYyBTUEkgY29udHJvbGxlciBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi4gU3l6a2FsbGVyLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24mIzM5O3QgdXN1YWxseSBzZXQgdXAgcmFuZG9tIFNQSSBkZXZpY2VzIGxpa2UgdGhpcy4KCk15IG5leHQgdGhvdWdodCBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X2Rldl9zcGlgPyBObywgSSByZW1lbWJlciBpdCBoYXMgdGhpbmdzIGZvciBVU0IsIDgwMjExLCBldGMuLCBidXQgbm90IGEgZ2VuZXJhbCBTUEkgZGV2aWNlIGluc3RhbnRpYXRpb24uIENhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBjb2RlIGF0IGFsbD8gSWYgdGhlIGRldmljZSBpc24mIzM5O3QgcHJvYmVkLCB0aGVuIGBvYV90YzZfaW5pdGAgd29uJiMzOTt0IGJlIGNhbGxlZCwgYW5kIGBvYV90YzZfc3RhcnRfeG1pdGAgd29uJiMzOTt0IGJlIHJlZ2lzdGVyZWQuIFNvLCBpcyB0aGVyZSBzb21lIG90aGVyIHdheSB0byBpbnN0YW50aWF0ZSB0aGlzLCBsaWtlIHRocm91Z2ggbmV0bGluayBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm9wZSwgaXQmIzM5O3MgYW4gU1BJIGRyaXZlciwgc28gdGhhdCBhdmVudWUgaXMgY2xvc2VkLgoKTm93IEkmIzM5O20gcmVhbGx5IHN0YXJ0aW5nIHRvIHF1ZXN0aW9uIGlmIHRoZXJlJiMzOTtzICphbnkqIGNoYW5jZSBvZiB0aGlzIGJlaW5nIHJlYWNoYWJsZS4gSWYgaXQmIzM5O3MgYW4gU1BJIGRyaXZlciwgdGhlIGRlZmF1bHQgc3l6a2FsbGVyIHNldHVwIGdlbmVyYWxseSB3b24mIzM5O3QgaW5zdGFudGlhdGUgaXQgdW5sZXNzIHRoZXJlJiMzOTtzIGEgdmlydHVhbCBTUEkgYnVzIHRoYXQgc3l6a2FsbGVyIGNhbiBzb21laG93IHVzZS4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHN5emthbGxlciBmb3IgU1BJIHN1cHBvcnQuCgpBaCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBgZGV2X3NwaWRldmAsIHdoaWNoIGxldHMgdXNlci1zcGFjZSB0YWxrIHRvIFNQSSBkZXZpY2VzLCBidXQgaXQgKmRvZXNuJiMzOTt0KiBsZXQgeW91IGluc3RhbnRpYXRlIGtlcm5lbCBTUEkgZHJpdmVycy4gSSBuZWVkIHRvIGJlIG1vcmUgY2FyZWZ1bCBoZXJlLCB3YWl0IGEgbWludXRlLCBkZXZpY2UgdHJlZSBvdmVybGF5cyEgTWF5YmUgdGhhdCYjMzk7cyB0aGUgd2F5LiBTeXprYWxsZXIgY2FuIGxvYWQgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdG8gaW5zdGFudGlhdGUgZGV2aWNlcy4gQnV0IGRvZXMgc3l6a2FsbGVyIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBmb3IgU1BJIGRldmljZXM/IE5vLCBpdCBsb29rcyBsaWtlIHN5emthbGxlciBkb2VzbiYjMzk7dCBkbyB0aGF0IGZvciBTUEkgZGV2aWNlcyBpbiBhIGdlbmVyaWMgd2F5LgoKT2theSwgSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBJIG5lZWQgdG8gYmUgdmVyeSBjYXJlZnVsIGhlcmUuIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGp1c3QgYmVjYXVzZSBpdCYjMzk7cyBhbiBTUEkgZGV2aWNlLCBpcyB0aGF0ICpjb3JyZWN0Kj8KCk5vdyBJJiMzOTttIGdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgYW5kIGl0IHNheXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBTaW5jZSB0aGlzIGlzIGFuIFNQSSBFdGhlcm5ldCBkcml2ZXIsIGFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBTUEkgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCB0aGF0IEkmIzM5O20gYXdhcmUgb2YgdGhhdCB3aWxsIGluc3RhbnRpYXRlIGFyYml0cmFyeSBTUEkgZHJpdmVycyAobGlrZSBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpIG9yIGB2aGNpYCBmb3IgVVNCKSwgdGhlbiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gV2FpdCwgaXMgdGhlcmUgYW4gU1BJIG1vY2sgZHJpdmVyPyBMZXQmIzM5O3MgZG91YmxlIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGlfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3BpL3NwaS1tZW0uYz0xMDk4PWludCBzcGlfbWVtX2RyaXZlcl9yZWdpc3Rlcl93aXRoX293bmVyKHN0cnVjdCBzcGlfbWVtX2RyaXZlciAqbWVtZHJ2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tZW0uYy0xMTA0LVxuZHJpdmVycy9zcGkvc3BpLW1lbS5jOjExMDU6XHRyZXR1cm4gX19zcGlfcmVnaXN0ZXJfZHJpdmVyKG93bmVyLCBcdTAwMjZtZW1kcnYtXHUwMDNlc3BpZHJ2KTtcbmRyaXZlcnMvc3BpL3NwaS1tZW0uYy0xMTA2LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz00NjI9RVhQT1JUX1NZTUJPTF9HUEwoc3BpX2J1c190eXBlKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy00NjQtLyoqXG5kcml2ZXJzL3NwaS9zcGkuYzo0NjU6ICogX19zcGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBTUEkgZHJpdmVyXG5kcml2ZXJzL3NwaS9zcGkuYy00NjYtICogQG93bmVyOiBvd25lciBtb2R1bGUgb2YgdGhlIGRyaXZlciB0byByZWdpc3RlclxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTQ3MS0gKi9cbmRyaXZlcnMvc3BpL3NwaS5jOjQ3MjppbnQgX19zcGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBtb2R1bGUgKm93bmVyLCBzdHJ1Y3Qgc3BpX2RyaXZlciAqc2RydilcbmRyaXZlcnMvc3BpL3NwaS5jLTQ3My17XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNTE0LX1cbmRyaXZlcnMvc3BpL3NwaS5jOjUxNTpFWFBPUlRfU1lNQk9MX0dQTChfX3NwaV9yZWdpc3Rlcl9kcml2ZXIpO1xuZHJpdmVycy9zcGkvc3BpLmMtNTE2LVxuLS1cbmRyaXZlcnMvc3BpL3NwaWRldi5jPTg2MT1zdGF0aWMgaW50IF9faW5pdCBzcGlkZXZfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvc3BpL3NwaWRldi5jLTg3OC1cbmRyaXZlcnMvc3BpL3NwaWRldi5jOjg3OTpcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2c3BpZGV2X3NwaV9kcml2ZXIpO1xuZHJpdmVycy9zcGkvc3BpZGV2LmMtODgwLVx0aWYgKHN0YXR1cyBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA3OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIFZpcnR1YWwgU1BJIENvbnRyb2xsZXIgT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBuZXcgc2V0dXAsIGFuZCBJJiMzOTttIHdvbmRlcmluZyBpZiBJIGNhbiBnZXQgYXdheSB3aXRoIGEgdmlydHVhbCBTUEkgY29udHJvbGxlci4gTm8gcGh5c2ljYWwgaGFyZHdhcmUgbmVlZGVkLCBwdXJlbHkgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgYmVuZWZpdHMgYXJlIG9idmlvdXM6IGZsZXhpYmlsaXR5LCBwb3RlbnRpYWxseSBsb3dlciBjb3N0IGZvciBjZXJ0YWluIGFwcGxpY2F0aW9ucywgYW5kIG1heWJlIGV2ZW4gZWFzaWVyIGludGVncmF0aW9uIGR1cmluZyB0aGUgZGVzaWduIHBoYXNlLiBCdXQgaXMgdGhlcmUgZXZlbiBzdWNoIGEgdGhpbmcgYXMgYSAqZ29vZCogdmlydHVhbCBTUEkgY29udHJvbGxlciBvdXQgdGhlcmUsIG9uZSB0aGF0JiMzOTtzIHJlbGlhYmxlIGVub3VnaCBmb3Igc2VyaW91cyB1c2U/IEkgbmVlZCB0byBkaWcgaW50byB0aGlzIOKAkyB3aGF0IGFyZSB0aGUgb3B0aW9ucywgd2hhdCBhcmUgdGhlaXIgbGltaXRhdGlvbnMsIGFuZCBjYW4gdGhleSBoYW5kbGUgdGhlIHRocm91Z2hwdXQgYW5kIHRpbWluZyBjb25zdHJhaW50cyBJJiMzOTttIGRlYWxpbmcgd2l0aD8gVGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlciBpZiBpdCBwYW5zIG91dC4gR290dGEgZG8gc29tZSByZXNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3NwaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg3NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTEzNDg9c3RhdGljIGludCBhdG1lbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTE0NTUtXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6MTQ1NjpcdGVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0cmwpO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTE0NTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jPTEwNjA9c3RhdGljIGludCBhaXJvaGFfc25hbmRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy0xMTMxLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6MTEzMjpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy0xMTMzLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTYwLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNjE6XHRlcnIgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jPTM1PXN0YXRpYyBpbnQgYWx0ZXJhX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMTMtXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM6MTE0Olx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM9ODIxPWludCBhbWRfc3BpX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtODM5LVx0LyogUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgd2l0aCBTUEkgZnJhbWV3b3JrICovXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6ODQwOlx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTg0MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0zMjY9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0zNjgtXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjM2OTpcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3BpZmMtXHUwMDNlZGV2LCBjdHJsKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMzcwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jPTEwOTM9c3RhdGljIGludCBhbWxfc2ZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0xMTc3LVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzoxMTc4Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdHJsKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMTE3OS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3Bpc2cuYz03MTI9c3RhdGljIGludCBhbWxfc3Bpc2dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTc5OS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaXNnLmM6ODAwOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTgwMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYz00NTc9c3RhdGljIGludCBhcHBsZV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYy01MDQtXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYzo1MDU6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1hcHBsZS5jLTUwNi1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYzo1MDc6XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCByZXQsIFwmIzM0O2Rldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1hcHBsZS5jLTUwOC1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM9MTY1PXN0YXRpYyBpbnQgYXI5MzR4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hcjkzNHguYy0yMDctXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM6MjA4Olx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWFyOTM0eC5jLTIwOS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmM9ODEzPXN0YXRpYyBpbnQgYTM3MDBfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc0LVxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmM6ODc1Olx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM9OTU3PXN0YXRpYyBpbnQgYXNwZWVkX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMTAyMy1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MTAyNDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0xMDI1LVx0aWYgKHJldClcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MTAyNjpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMTAyNy1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jPTQ3Nj1zdGF0aWMgaW50IGF0OTFfdXNhcnRfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0OTEtdXNhcnQuYy01NTQtXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jOjU1NTpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGNvbnRyb2xsZXIpO1xuZHJpdmVycy9zcGkvc3BpLWF0OTEtdXNhcnQuYy01NTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdGNzcGkyMDAuYz01NDY9c3RhdGljIGludCBhdGNzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmMtNTg5LVxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jOjU5MDpcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTU5MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM9MTI4Nz1zdGF0aWMgaW50IGF0bWVsX3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTEzMDMtXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzoxMzA0Olx0LyogU2V0dXAoKSBpcyBjYWxsZWQgZHVyaW5nIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGFrYVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMTMwNS1cdCAqIHNwaV9yZWdpc3Rlcl9tYXN0ZXIpIGJ1dCBhZnRlciBhbGwgbWVtYm1lcnMgb2YgdGhlIGNzX2dwaW9kXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM9MTU1MD1zdGF0aWMgaW50IGF0bWVsX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTE2NjgtXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzoxNjY5Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0xNjcwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpLXNwaS1lbmdpbmUuYz0xMTA0PXN0YXRpYyBpbnQgc3BpX2VuZ2luZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1heGktc3BpLWVuZ2luZS5jLTEyMzktXG5kcml2ZXJzL3NwaS9zcGktYXhpLXNwaS1lbmdpbmUuYzoxMjQwOlx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmMtMTI0MS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jPTc1Mj1zdGF0aWMgaW50IGF4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy04NDYtXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6ODQ3Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtODQ4LVx0aWYgKHJldCkge1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjg0OTpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy04NTAtXHRcdGdvdG8gZXJyX2Rpc2FibGVfcnBtO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTE0ODI9aW50IGJjbV9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtMTY1OS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjE2NjA6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jLTE2NjEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzUuYz0xMzQ5PXN0YXRpYyBpbnQgYmNtMjgzNV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNS5jLTE0MDYtXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNS5jOjE0MDc6XHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1LmMtMTQwOC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNWF1eC5jPTQ3ND1zdGF0aWMgaW50IGJjbTI4MzVhdXhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzVhdXguYy01NDMtXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNWF1eC5jOjU0NDpcdGVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzVhdXguYy01NDUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYz03NDI9c3RhdGljIGludCBiY202M3h4X2hzc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy04NTctXHQvKiByZWdpc3RlciBhbmQgd2UgYXJlIGRvbmUgKi9cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6ODU4Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTg1OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYz00OTE9c3RhdGljIGludCBiY202M3h4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtNTk5LVx0LyogcmVnaXN0ZXIgYW5kIHdlIGFyZSBkb25lICovXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jOjYwMDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYy02MDEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbWJjYS1oc3NwaS5jPTQzMj1zdGF0aWMgaW50IGJjbWJjYV9oc3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYy01NDAtXHQvKiByZWdpc3RlciBhbmQgd2UgYXJlIGRvbmUgKi9cbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYzo1NDE6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYy01NDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iaXRiYW5nLmM9NDI0PWludCBzcGlfYml0YmFuZ19zdGFydChzdHJ1Y3Qgc3BpX2JpdGJhbmcgKmJpdGJhbmcpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYy00MzUtXHQgKi9cbmRyaXZlcnMvc3BpL3NwaS1iaXRiYW5nLmM6NDM2Olx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYy00MzctfVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xNzgxPXN0YXRpYyBpbnQgY3FzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTk3NC1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxOTc1Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTk3Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM9MTE3ND1zdGF0aWMgaW50IGNkbnNfeHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy0xMjg3LVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjEyODg6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtMTI4OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jPTYzNj1zdGF0aWMgaW50IGNkbnNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYy03NDItXHR9XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jOjc0MzpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYy03NDQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jOjc0NTpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmMtNzQ2LVx0XHRnb3RvIGVycl9kaXNhYmxlX3JwbTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jPTE5PXN0YXRpYyBpbnQgb2N0ZW9uX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tb2N0ZW9uLmMtNTQtXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jOjU1Olx0ZXJyID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jLTU2LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYz0xOT1zdGF0aWMgaW50IHRodW5kZXJ4X3NwaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmMtNjgtXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmM6Njk6XHRyZXR1cm4gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmMtNzAtfVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jPTE0MT1zdGF0aWMgaW50IGNoMzQxX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwMi1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jOjIwMzpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0cmwpO1xuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2xwczcxMXguYz05MT1zdGF0aWMgaW50IHNwaV9jbHBzNzExeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jLTEzNy1cbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jOjEzODpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jLTEzOS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYz0zMzg9c3RhdGljIGludCBtY2Zxc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYy00MDYtXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jOjQwNzpcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYy00MDgtXHRpZiAoc3RhdHVzKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYz0zMTM9c3RhdGljIGludCBjczQybDQzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDEwLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0MTE6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKHByaXYtXHUwMDNlZGV2LCBwcml2LVx1MDAzZWN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM9NjgwPXN0YXRpYyBpbnQgZGxuMl9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktZGxuMi5jLTc1OC1cbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM6NzU5Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktZGxuMi5jLTc2MC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktZHctY29yZS5jPTkyMz1pbnQgZHdfc3BpX2FkZF9jb250cm9sbGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGR3X3NwaSAqZHdzKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kdy1jb3JlLmMtMTAwMy1cbmRyaXZlcnMvc3BpL3NwaS1kdy1jb3JlLmM6MTAwNDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWR3LWNvcmUuYy0xMDA1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYz02MjM9c3RhdGljIGludCBlcDkzeHhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jLTY5Mi1cbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYzo2OTM6XHRlcnJvciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jLTY5NC1cdGlmIChlcnJvcikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1mYWxjb24uYz0zOTE9c3RhdGljIGludCBmYWxjb25fc2ZsYXNoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWZhbGNvbi5jLTQwNy1cbmRyaXZlcnMvc3BpL3NwaS1mYWxjb24uYzo0MDg6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktZmFsY29uLmMtNDA5LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNpLmM9NTMxPXN0YXRpYyBpbnQgZnNpX3NwaV9wcm9iZShzdHJ1Y3QgZnNpX2RldmljZSAqZnNpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2kuYy01NzEtXG5kcml2ZXJzL3NwaS9zcGktZnNpLmM6NTcyOlx0XHRyYyA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1mc2kuYy01NzMtXHRcdGlmIChyYylcbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYz0xNTI4PXN0YXRpYyBpbnQgZHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtZHNwaS5jLTE2ODAtXG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYzoxNjgxOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYy0xNjgyLVx0aWYgKHJldCAhPSAwKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1lc3BpLmM9NjYzPXN0YXRpYyBpbnQgZnNsX2VzcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNsLWVzcGkuYy03MTctXG5kcml2ZXJzL3NwaS9zcGktZnNsLWVzcGkuYzo3MTg6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZXNwaS5jLTcxOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jPTg5Mj1zdGF0aWMgaW50IGZzbF9scHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDAzLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jOjEwMDQ6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDA1LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jOjEwMDY6XHRcdGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJldCwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jLTEwMDctXHRcdGdvdG8gZnJlZV9kbWE7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1xc3BpLmM9ODk0PXN0YXRpYyBpbnQgZnNsX3FzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05ODgtXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYzo5ODk6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05OTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmM9NTI4PXN0YXRpYyBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmZzbF9zcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmMtNjE2LVxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYzo2MTc6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmMtNjE4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM9MTA0Mj1zdGF0aWMgaW50IHNwaV9nZW5pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWdlbmktcWNvbS5jLTExNDktXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM6MTE1MDpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgc3BpKTtcbmRyaXZlcnMvc3BpL3NwaS1nZW5pLXFjb20uYy0xMTUxLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktZ3Bpby5jPTM0MD1zdGF0aWMgaW50IHNwaV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYy00MTMtXG5kcml2ZXJzL3NwaS9zcGktZ3Bpby5jOjQxNDpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1ncGlvLmMtNDE1LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktZ3hwLmM9MjUwPXN0YXRpYyBpbnQgZ3hwX3NwaWZpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWd4cC5jLTI4Ny1cbmRyaXZlcnMvc3BpL3NwaS1neHAuYzoyODg6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktZ3hwLmMtMjg5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYz00NjE9c3RhdGljIGludCBoaXNpX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYy01MjMtXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1rdW5wZW5nLmM6NTI0Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktaGlzaS1rdW5wZW5nLmMtNTI1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1zZmMtdjN4eC5jPTQzMT1zdGF0aWMgaW50IGhpc2lfc2ZjX3YzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1zZmMtdjN4eC5jLTQ5Ny1cbmRyaXZlcnMvc3BpL3NwaS1oaXNpLXNmYy12M3h4LmM6NDk4Olx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWhpc2ktc2ZjLXYzeHguYy00OTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbWctc3BmaS5jPTUyNT1zdGF0aWMgaW50IGltZ19zcGZpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWltZy1zcGZpLmMtNjQxLVxuZHJpdmVycy9zcGkvc3BpLWltZy1zcGZpLmM6NjQyOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktaW1nLXNwZmkuYy02NDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbXguYz0yMjE4PXN0YXRpYyBpbnQgc3BpX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbXguYy0yMzU4LVxuZHJpdmVycy9zcGkvc3BpLWlteC5jOjIzNTk6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcbmRyaXZlcnMvc3BpL3NwaS1pbXguYy0yMzYwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLmM9MzgzPXN0YXRpYyBpbnQgc3BpX2luZ2VuaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW5nZW5pYy5jLTQ1NC1cbmRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLmM6NDU1Olx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYy00NTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jPTE0ODk9aW50IGludGVsX3NwaV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNTEyLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTUxMzpcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE1MTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jPTE0MT1zdGF0aWMgaW50IGpjb3JlX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jLTIwMS1cdC8qIFJlZ2lzdGVyIG91ciBzcGkgY29udHJvbGxlciAqL1xuZHJpdmVycy9zcGkvc3BpLWpjb3JlLmM6MjAyOlx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWpjb3JlLmMtMjAzLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYz0zMzg9c3RhdGljIGludCBrc3BpMl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYXV4ZGV2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTM5Mi1cdGhvc3QtXHUwMDNldHJhbnNmZXJfb25lID0ga3NwaTJfdHJhbnNmZXJfb25lO1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzkzOlx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzk0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1sYW50aXEtc3NjLmM9OTA0PXN0YXRpYyBpbnQgbGFudGlxX3NzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sYW50aXEtc3NjLmMtOTkwLVxuZHJpdmVycy9zcGkvc3BpLWxhbnRpcS1zc2MuYzo5OTE6XHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1sYW50aXEtc3NjLmMtOTkyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1samNhLmM9MjE4PXN0YXRpYyBpbnQgbGpjYV9zcGlfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eGRldixcbi0tXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0Mi1cbmRyaXZlcnMvc3BpL3NwaS1samNhLmM6MjQzOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY29udHJvbGxlcik7XG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb25nc29uLWNvcmUuYz0xOTY9aW50IGxvb25nc29uX3NwaV9pbml0X2NvbnRyb2xsZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb25nc29uLWNvcmUuYy0yMjctXG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jOjIyODpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY29udHJvbGxlcik7XG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jLTIyOS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWxwODg0MS1ydGMuYz0xODI9c3BpX2xwODg0MV9ydGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxMi1cdC8qIHJlZ2lzdGVyIHdpdGggdGhlIFNQSSBmcmFtZXdvcmsgKi9cbmRyaXZlcnMvc3BpL3NwaS1scDg4NDEtcnRjLmM6MjEzOlx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxNC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYz05Nzg9c3RhdGljIGludCBtZXNvbl9zcGljY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jLTEwNzQtXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYzoxMDc1Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYy0xMDc2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGlmYy5jPTI4NT1zdGF0aWMgaW50IG1lc29uX3NwaWZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmMtMzMwLVxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmM6MzMxOlx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzcGlmYy1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmMtMzMyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmM9NzE5PXN0YXRpYyBpbnQgbWNocF9jb3JlcXNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzkyLVxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXFzcGkuYzo3OTM6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk0LVx0aWYgKHJldClcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk1LVx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmV0LFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXFzcGkuYzo3OTY6XHRcdFx0XHQgICAgIFwmIzM0O3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jLTc5Ny1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtc3BpLmM9Mjg3PXN0YXRpYyBpbnQgbWNocF9jb3Jlc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXNwaS5jLTM4Ni1cbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYzozODc6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYy0zODgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM9NDU4PXN0YXRpYyBpbnQgbXBjNTEyeF9wc2Nfc3BpX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmMtNTEzLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM6NTE0Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tcGM1MTJ4LXBzYy5jLTUxNS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmM9Mjk0PXN0YXRpYyBpbnQgbXBjNTJ4eF9wc2Nfc3BpX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmMtMzQzLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmM6MzQ0Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jLTM0NS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYz0zODc9c3RhdGljIGludCBtcGM1Mnh4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktbXBjNTJ4eC5jLTQ5Mi1cdGRldl9kYmcoXHUwMDI2b3AtXHUwMDNlZGV2LCBcJiMzNDtyZWdpc3RlcmluZyBzcGlfY29udHJvbGxlciBzdHJ1Y3RcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYzo0OTM6XHRyYyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYy00OTQtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wZnMuYz01Mjc9c3RhdGljIGludCBtcGZzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tcGZzLmMtNTc2LVxuZHJpdmVycy9zcGkvc3BpLW1wZnMuYzo1Nzc6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tcGZzLmMtNTc4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYz0xMTc1PXN0YXRpYyBpbnQgbXRrX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI3LVxuZHJpdmVycy9zcGkvc3BpLW10NjV4eC5jOjEzMjg6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYz0zMTY9c3RhdGljIGludCBtdDc2MjFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW10NzYyMS5jLTM2OS1cbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYzozNzA6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktbXQ3NjIxLmMtMzcxLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jPTgxMD1zdGF0aWMgaW50IG10a19ub3JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jLTkxNS1cbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmM6OTE2Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jLTkxNy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmM9MTMzOD1zdGF0aWMgaW50IG10a19zbmFuZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jLTE0NjQtXHRjdGxyLVx1MDAzZW1vZGVfYml0cyA9IFNQSV9SWF9EVUFMIHwgU1BJX1JYX1FVQUQgfCBTUElfVFhfRFVBTCB8IFNQSV9UWF9RVUFEO1xuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmM6MTQ2NTpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2Ni1cdGlmIChyZXQpIHtcbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jOjE0Njc6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2OC1cdFx0Z290byBmcmVlX2J1Zjtcbi0tXG5kcml2ZXJzL3NwaS9zcGktbXV4LmM9MTI2PXN0YXRpYyBpbnQgc3BpX211eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdXguYy0xNjQtXG5kcml2ZXJzL3NwaS9zcGktbXV4LmM6MTY1Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktbXV4LmMtMTY2LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbXhpYy5jPTc1NT1zdGF0aWMgaW50IG14aWNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MTktXG5kcml2ZXJzL3NwaS9zcGktbXhpYy5jOjgyMDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MjEtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3NwaS9zcGktbXhpYy5jOjgyMjpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1teGljLmMtODIzLVx0XHRwbV9ydW50aW1lX2Rpc2FibGUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1teHMuYz01Mjg9c3RhdGljIGludCBteHNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW14cy5jLTYyMC1cbmRyaXZlcnMvc3BpL3NwaS1teHMuYzo2MjE6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1teHMuYy02MjItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmM9Njg5PXN0YXRpYyBpbnQgbnBjbV9maXVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1maXUuYy03NDYtXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1maXUuYzo3NDc6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0cmwpO1xuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmMtNzQ4LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1wc3BpLmM9MzQwPXN0YXRpYyBpbnQgbnBjbV9wc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW5wY20tcHNwaS5jLTQxMi1cbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYzo0MTM6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYy00MTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jPTEyODY9c3RhdGljIGludCBueHBfZnNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jLTEzOTAtXG5kcml2ZXJzL3NwaS9zcGktbnhwLWZzcGkuYzoxMzkxOlx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLW54cC1mc3BpLmMtMTM5Mi19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmM9MTIwOD1zdGF0aWMgaW50IG54cF94c3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5MC1cbmRyaXZlcnMvc3BpL3NwaS1ueHAteHNwaS5jOjEyOTE6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5Mi19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW9tYXAyLW1jc3BpLmM9MTQ3ND1zdGF0aWMgaW50IG9tYXAyX21jc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW9tYXAyLW1jc3BpLmMtMTU4OS1cbmRyaXZlcnMvc3BpL3NwaS1vbWFwMi1tY3NwaS5jOjE1OTA6XHRzdGF0dXMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1vbWFwMi1tY3NwaS5jLTE1OTEtXHRpZiAoc3RhdHVzIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jPTY0ND1zdGF0aWMgaW50IG9yaW9uX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jLTc3OC1cbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jOjc3OTpcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW9yaW9uLmMtNzgwLVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3NwaS9zcGktcGNpMXh4eHguYz04MDA9c3RhdGljIGludCBwY2kxeHh4eF9zcGlfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLXBjaTF4eHh4LmMtOTMxLVx0XHRzcGlfY29udHJvbGxlcl9zZXRfZGV2ZGF0YShzcGlfaG9zdCwgc3BpX3N1Yl9wdHIpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzMyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFNlYXJjaCBmb3IgYSBEdW1teSBTUEkgQ29udHJvbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgZm9yIGEgd2F5IHRvIHNpbXVsYXRlIGFuIFNQSSBjb250cm9sbGVyIGFuZCBkZXZpY2VzIHdpdGhpbiB0aGUga2VybmVsLCBzb21ldGhpbmcgdGhhdCBsZXRzIHVzZXItc3BhY2UgY3JlYXRlIHZpcnR1YWwgU1BJIGRldmljZXMuIEkmIzM5O20gZHJhd2luZyBhIGJsYW5rIG9uIGFueXRoaW5nIG5hbWVkIGBzcGktbW9ja2Agb3IgYHNwaS1sb29wYmFja2AgdGhhdCBhY3R1YWxseSAqcmVnaXN0ZXJzKiBhIGNvbnRyb2xsZXIuIEhtbS4uLiB3aGF0IGFib3V0IHRoYXQgYHNwaS1sb29wYmFjay10ZXN0LmNgIGRyaXZlcj8gQWgsIG5vLCB0aGF0JiMzOTtzIGp1c3QgYSAqZGV2aWNlKiBmb3IgdGVzdGluZywgbm90IGEgY29udHJvbGxlciBpdHNlbGYuIEl0IHdvdWxkbiYjMzk7dCBsZXQgdXNlci1zcGFjZSBkcml2ZSBpdCBsaWtlIGEgcmVhbCBjb250cm9sbGVyLgoKTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgdGhhdCBpcyBmb3IgV2lGaSBzaW11bGF0aW9uLiBOb3QgdGhlIHJpZ2h0IHRyYWNrLiBBbmQgYGR1bW15X2hjZGA/IFVTQi4gRGVmaW5pdGVseSBub3Qgd2hhdCBJIG5lZWQuIFNvLi4uIEkgcmVhbGx5IG5lZWQgYSAqZHVtbXkqIFNQSSBjb250cm9sbGVyLiBEb2VzIG9uZSBldmVuIGV4aXN0PyBUaW1lIHRvIGRpZyBhcm91bmQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGBkcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jYCBhbmQgc2ltaWxhciBmaWxlcy4gSG9wZWZ1bGx5LCB0aGVyZSBpcyBzb21ldGhpbmcgdGhlcmUgdGhhdCBJJiMzOTt2ZSBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R1bW15JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjc0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM9NDgwPXN0YXRpYyBib29sIGF0bWVsX3FzcGlfc3VwcG9ydHNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNDk4LVx0aWYgKG9wLVx1MDAzZWFkZHIubmJ5dGVzID09IDIgXHUwMDI2XHUwMDI2IG9wLVx1MDAzZWNtZC5idXN3aWR0aCAhPSBvcC1cdTAwM2VhZGRyLmJ1c3dpZHRoIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjQ5OTpcdCAgICBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgPT0gMClcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01MDAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM9NTI0PXN0YXRpYyBpbnQgYXRtZWxfcXNwaV9zZXRfY2ZnKHN0cnVjdCBhdG1lbF9xc3BpICphcSxcbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTI3LVx0dTMyIGlhciwgaWNyLCBpZnI7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTI4Olx0dTMyIGR1bW15X2N5Y2xlcyA9IDA7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTI5LVx0aW50IG1vZGU7XG4tLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTUzOS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NDA6XHRpZiAob3AtXHUwMDNlZHVtbXkubmJ5dGVzKVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU0MTpcdFx0ZHVtbXlfY3ljbGVzID0gb3AtXHUwMDNlZHVtbXkubmJ5dGVzICogOCAvIG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU0Mi1cbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTQ2LVx0ICogdGhlIG9wdGlvbiBmaWVsZC4gRm9yIHRoZSAxNi1iaXQgYWRkcmVzc2VzLCB0aGUgd29ya2Fyb3VuZCBkZXBlbmRzXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTQ3Olx0ICogb2YgdGhlIG51bWJlciBvZiByZXF1ZXN0ZWQgZHVtbXkgYml0cy4gSWYgdGhlcmUgYXJlIDggb3IgbW9yZSBkdW1teVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU0ODpcdCAqIGN5Y2xlcywgdGhlIGFkZHJlc3MgaXMgc2hpZnRlZCBhbmQgc2VudCB3aXRoIHRoZSBmaXJzdCBkdW1teSBieXRlLlxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU0OS1cdCAqIE90aGVyd2lzZSBvcGNvZGUgaXMgZGlzYWJsZWQgYW5kIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBhZGRyZXNzXG4tLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU1MS1cdCAqIHVzZSB0aGUgc2FtZSBidXN3aWR0aCkuIFRoZSBsaW1pdGF0aW9uIGlzIHdoZW4gdGhlIDE2LWJpdCBhZGRyZXNzIGlzXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTUyOlx0ICogdXNlZCB3aXRob3V0IGVub3VnaCBkdW1teSBjeWNsZXMgYW5kIHRoZSBvcGNvZGUgaXMgdXNpbmcgYSBkaWZmZXJlbnRcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NTMtXHQgKiBidXN3aWR0aCB0aGFuIHRoZSBhZGRyZXNzLlxuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NjMtXHRcdGNhc2UgMjpcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NjQ6XHRcdFx0aWYgKGR1bW15X2N5Y2xlcyBcdTAwM2MgOCAvIG9wLVx1MDAzZWFkZHIuYnVzd2lkdGgpIHtcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NjUtXHRcdFx0XHRpZnIgXHUwMDI2PSB+UVNQSV9JRlJfSU5TVEVOO1xuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NzEtXHRcdFx0XHRpYXIgPSAob3AtXHUwMDNlYWRkci52YWwgXHUwMDNjXHUwMDNjIDgpIFx1MDAyNiAweGZmZmZmZjtcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NzI6XHRcdFx0XHRkdW1teV9jeWNsZXMgLT0gOCAvIG9wLVx1MDAzZWFkZHIuYnVzd2lkdGg7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTczLVx0XHRcdH1cbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTkwLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU5MTpcdC8qIFNldCBudW1iZXIgb2YgZHVtbXkgY3ljbGVzICovXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTkyOlx0aWYgKGR1bW15X2N5Y2xlcylcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1OTM6XHRcdGlmciB8PSBRU1BJX0lGUl9OQkRVTShkdW1teV9jeWNsZXMpO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU5NC1cbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM9Njg4PXN0YXRpYyBpbnQgYXRtZWxfcXNwaV9zYW1hN2c1X3NldF9jZmcoc3RydWN0IGF0bWVsX3FzcGkgKmFxLFxuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy03MDItXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzAzOlx0aWYgKG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkdW1teS5uYnl0ZXMpIHtcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDQ6XHRcdGlmIChvcC1cdTAwM2VhZGRyLmR0ciBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlZHVtbXkuZHRyIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkYXRhLmR0cilcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDU6XHRcdFx0aWZyIHw9IFFTUElfSUZSX05CRFVNKG9wLVx1MDAzZWR1bW15Lm5ieXRlcyAqIDggL1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwNjpcdFx0XHRcdFx0ICAgICAgKDIgKiBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCkpO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTcwNy1cdFx0ZWxzZVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwODpcdFx0XHRpZnIgfD0gUVNQSV9JRlJfTkJEVU0ob3AtXHUwMDNlZHVtbXkubmJ5dGVzICogOCAvXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzA5Olx0XHRcdFx0XHQgICAgICBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzEwLVx0fVxuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy03MTctXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzE4Olx0aWYgKG9wLVx1MDAzZWFkZHIuZHRyIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkdW1teS5kdHIgXHUwMDI2XHUwMDI2IG9wLVx1MDAzZWRhdGEuZHRyKSB7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzE5LVx0XHRpZnIgfD0gUVNQSV9JRlJfRERSRU47XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM9NDg2PXN0YXRpYyBib29sIGFpcm9oYV9zbmFuZF9pc19wYWdlX29wcyhjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNDk2LVx0Y2FzZSBTUElfTUVNX0RBVEFfSU46XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo0OTc6XHRcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiBCSVRTX1BFUl9CWVRFIC8gb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGggXHUwMDNlIDB4ZilcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTQ5OC1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTEwLVx0Y2FzZSBTUElfTUVNX0RBVEFfT1VUOlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6NTExOlx0XHRyZXR1cm4gIW9wLVx1MDAzZWR1bW15Lm5ieXRlcyBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlYWRkci5idXN3aWR0aCA9PSAxIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTEyLVx0XHQgICAgICAgKG9wLVx1MDAzZWRhdGEuYnVzd2lkdGggPT0gNCB8fCBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoID09IDEpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jPTUxOD1zdGF0aWMgYm9vbCBhaXJvaGFfc25hbmRfc3VwcG9ydHNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy01MzAtXHRyZXR1cm4gKCFvcC1cdTAwM2VhZGRyLm5ieXRlcyB8fCBvcC1cdTAwM2VhZGRyLmJ1c3dpZHRoID09IDEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6NTMxOlx0ICAgICAgICghb3AtXHUwMDNlZHVtbXkubmJ5dGVzIHx8IG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoID09IDEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTMyLVx0ICAgICAgICghb3AtXHUwMDNlZGF0YS5uYnl0ZXMgfHwgb3AtXHUwMDNlZGF0YS5idXN3aWR0aCA9PSAxKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYz05MzI9c3RhdGljIGludCBhaXJvaGFfc25hbmRfZXhlY19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTkzNS1cdHN0cnVjdCBhaXJvaGFfc25hbmRfY3RybCAqYXNfY3RybDtcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjkzNjpcdGludCBvcF9sZW4sIGFkZHJfbGVuLCBkdW1teV9sZW47XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05MzctXHR1OCBidWZbMjBdLCAqZGF0YTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05NDMtXHRhZGRyX2xlbiA9IG9wLVx1MDAzZWFkZHIubmJ5dGVzO1xuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTQ0Olx0ZHVtbXlfbGVuID0gb3AtXHUwMDNlZHVtbXkubmJ5dGVzO1xuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTQ1LVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTQ2Olx0aWYgKG9wX2xlbiAmIzQzOyBkdW1teV9sZW4gJiM0MzsgYWRkcl9sZW4gXHUwMDNlIHNpemVvZihidWYpKVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTQ3LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05NTMtXHRcdCpkYXRhJiM0MzsmIzQzOyA9IG9wLVx1MDAzZWFkZHIudmFsIFx1MDAzZVx1MDAzZSAoOCAqIChhZGRyX2xlbiAtIGkgLSAxKSk7XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5NTQ6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkdW1teV9sZW47IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTU1LVx0XHQqZGF0YSYjNDM7JiM0MzsgPSAweGZmO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk4MS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4MjpcdC8qIGR1bW15ICovXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05ODMtXHRkYXRhICYjNDM7PSBhZGRyX2xlbjtcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4NDpcdGlmIChkdW1teV9sZW4pIHtcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4NTpcdFx0ZXJyID0gYWlyb2hhX3NuYW5kX3dyaXRlX2RhdGEoYXNfY3RybCwgZGF0YSwgZHVtbXlfbGVuLFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTg2Olx0XHRcdFx0XHQgICAgICBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05ODctXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTU0MT1zdGF0aWMgdm9pZCBhbWRfc3BpX21lbV9kYXRhX291dChzdHJ1Y3QgYW1kX3NwaSAqYW1kX3NwaSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTg1LVx0XHRmb3IgKGkgPSAwOyBsZWZ0X2RhdGEgXHUwMDNlPSA4OyBpJiM0MzsmIzQzOywgbGVmdF9kYXRhIC09IDgpXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NTg2Olx0XHRcdGFtZF9zcGlfd3JpdGVyZWc2NChhbWRfc3BpLCBiYXNlX2FkZHIgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICYjNDM7IChpICogOCksXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTg3LVx0XHRcdFx0XHQgICAqYnVmXzY0JiM0MzsmIzQzOyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTU5MS1cdFx0XHRhbWRfc3BpX3dyaXRlcmVnOChhbWRfc3BpLFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjU5MjpcdFx0XHRcdFx0ICBiYXNlX2FkZHIgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICYjNDM7IG5ieXRlcyAmIzQzOyBpIC0gbGVmdF9kYXRhLFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTU5My1cdFx0XHRcdFx0ICBidWZbaV0pO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWQuYz02MDM9c3RhdGljIHZvaWQgYW1kX3NwaV9oaWRkbWFfcmVhZChzdHJ1Y3QgYW1kX3NwaSAqYW1kX3NwaSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjAtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjIxOlx0LyogQ29uZmlndXJlIGR1bW15IGNsb2NrIGN5Y2xlcyBmb3IgZmFzdCByZWFkLCBkdWFsLCBxdWFkIEkvTyBjb21tYW5kcyAqL1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyMi1cdGhpZF9yZWd2YWwgPSBhbWRfc3BpX3JlYWRyZWczMihhbWRfc3BpLCBBTURfU1BJX0hJRDJfUkVBRF9DTlRSTDIpO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjYyMzpcdC8qIEZhc3QgcmVhZCBkdW1teSBjeWNsZSAqL1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyNC1cdGhpZF9yZWd2YWwgXHUwMDI2PSB+R0VOTUFTSyg0LCAwKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjUtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI2Olx0LyogRmFzdCByZWFkIER1YWwgSS9PIGR1bW15IGN5Y2xlICovXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjI3LVx0aGlkX3JlZ3ZhbCBcdTAwMjY9IH5HRU5NQVNLKDEyLCA4KTtcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjgtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI5Olx0LyogRmFzdCByZWFkIFF1YWQgSS9PIGR1bW15IGN5Y2xlICovXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjMwLVx0aGlkX3JlZ3ZhbCA9IChoaWRfcmVndmFsIFx1MDAyNiB+R0VOTUFTSygyMCwgMTYpKSB8IEJJVCgxNyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTY2MT1zdGF0aWMgdm9pZCBhbWRfc3BpX21lbV9kYXRhX2luKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02OTktXHRcdGFtZF9zcGlfc2V0X2FkZHIoYW1kX3NwaSwgb3ApO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcwMDpcdFx0YW1kX3NwaV9zZXRfdHhfY291bnQoYW1kX3NwaSwgb3AtXHUwMDNlYWRkci5uYnl0ZXMgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MDEtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NzAyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTcwMy1cdFx0XHRhbWRfc3BpX3dyaXRlcmVnOChhbWRfc3BpLCAoYmFzZV9hZGRyICYjNDM7IGkpLCAweGZmKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzEwLVx0XHRmb3IgKGkgPSAwOyBsZWZ0X2RhdGEgXHUwMDNlPSA4OyBpJiM0MzsmIzQzOywgbGVmdF9kYXRhIC09IDgpXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NzExOlx0XHRcdCpidWZfNjQmIzQzOyYjNDM7ID0gYW1kX3NwaV9yZWFkcmVnNjQoYW1kX3NwaSwgYmFzZV9hZGRyICYjNDM7IG9wLVx1MDAzZWR1bW15Lm5ieXRlcyAmIzQzO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTcxMi1cdFx0XHRcdFx0XHQgICAgICAoaSAqIDgpKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzE1LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZWZ0X2RhdGE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcxNjpcdFx0XHRidWZbaV0gPSBhbWRfc3BpX3JlYWRyZWc4KGFtZF9zcGksIGJhc2VfYWRkciAmIzQzOyBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgJiM0MztcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MTctXHRcdFx0XHRcdFx0ICBuYnl0ZXMgJiM0MzsgaSAtIGxlZnRfZGF0YSk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTc5MT1zdGF0aWMgaW50IGFtZF9zcGlfc2V0dXBfaGlkZG1hKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTc5NS1cdC8qIEFsbG9jYXRlIERNQSBidWZmZXIgdG8gdXNlIGZvciBISUQgYmFzaWMgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucy4gRm9yIHdyaXRlXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6Nzk2Olx0ICogb3BlcmF0aW9ucywgdGhlIERNQSBidWZmZXIgc2hvdWxkIGluY2x1ZGUgdGhlIG9wY29kZSwgYWRkcmVzcyBieXRlcyBhbmQgZHVtbXlcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03OTctXHQgKiBieXRlcyhpZiBhbnkpIGluIGFkZGl0aW9uIHRvIHRoZSBkYXRhIGJ5dGVzLiBBZGRpdGlvbmFsbHksIHRoZSBoYXJkd2FyZSByZXF1aXJlc1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtOTEtXHRTUElGQ19BMV9VU0VSX0RVTU1ZX0VOQUJMRSB8IFxcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjkyOlx0RklFTERfUFJFUChTUElGQ19BMV9VU0VSX0RVTU1ZX01PREUsIGlsb2cyKChvcCktXHUwMDNlZHVtbXkuYnVzd2lkdGgpKSB8IFxcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjkzOlx0RklFTERfUFJFUChTUElGQ19BMV9VU0VSX0RVTU1ZX0NMS19TWUNMRVMsIChvcCktXHUwMDNlZHVtbXkubmJ5dGVzIFx1MDAzY1x1MDAzYyAzKSlcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtOTQtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0xODA9c3RhdGljIHZvaWQgYW1sb2dpY19zcGlmY19hMV9zZXRfYWRkcihzdHJ1Y3QgYW1sb2dpY19zcGlmY19hMSAqc3BpZmMsIHUzMiBhZGRyLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMTkyLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzoxOTM6c3RhdGljIHZvaWQgYW1sb2dpY19zcGlmY19hMV9zZXRfZHVtbXkoc3RydWN0IGFtbG9naWNfc3BpZmNfYTEgKnNwaWZjLFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzoxOTQ6XHRcdFx0XHQgICAgICAgdTMyIGR1bW15X2NmZylcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMTk1LXtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTE5OC1cdHZhbCBcdTAwMjY9IH4oU1BJRkNfQTFfVVNFUl9EVU1NWV9NT0RFIHwgU1BJRkNfQTFfVVNFUl9EVU1NWV9DTEtfU1lDTEVTKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MTk5Olx0dmFsIHw9IGR1bW15X2NmZztcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMjAwLVx0d3JpdGVsKHZhbCwgc3BpZmMtXHUwMDNlYmFzZSAmIzQzOyBTUElGQ19BMV9VU0VSX0NUUkwyX1JFRyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0yNTM9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTI3MS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjcyOlx0aWYgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcylcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjczOlx0XHRhbWxvZ2ljX3NwaWZjX2ExX3NldF9kdW1teShzcGlmYywgU1BJRkNfQTFfVVNFUl9EVU1NWShvcCkpO1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0yNzQtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYz0zMzc9c3RhdGljIGJvb2wgYW1sX3NmY19pc194aW9fb3AoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzUwLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNTE6c3RhdGljIGludCBhbWxfc2ZjX3NlbmRfY21kX2FkZHJfZHVtbXkoc3RydWN0IGFtbF9zZmMgKnNmYywgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNTIte1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNTM6XHR1MzIgZHVtbXlfY3ljbGUsIGNtZDtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzU0LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2My1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmM6MzY0Olx0aWYgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcykge1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNjUtXHRcdC8qICBEdW1teSBidXN3aWR0aCBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzY2LVx0XHRpZiAoYW1sX3NmY19pc194aW9fb3Aob3ApKVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNjc6XHRcdFx0ZHVtbXlfY3ljbGUgPSBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiA4IC8gb3AtXHUwMDNlZGF0YS5idXN3aWR0aDtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzY4LVx0XHRlbHNlXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM2OTpcdFx0XHRkdW1teV9jeWNsZSA9IG9wLVx1MDAzZWR1bW15Lm5ieXRlcyAqIDg7XG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM3MDpcdFx0Y21kID0gQ01EX0RVTU1ZKHNmYy1cdTAwM2Vjc19zZWwsIGR1bW15X2N5Y2xlIC0gMSk7XG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM3MS1cdFx0cmV0dXJuIHJlZ21hcF93cml0ZShzZmMtXHUwMDNlcmVnbWFwX2Jhc2UsIFNGQ19DTUQsIGNtZCk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYz03OTI9c3RhdGljIGludCBhbWxfc2ZjX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODAzLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzo4MDQ6XHRkZXZfZGJnKHNmYy1cdTAwM2VkZXYsIFwmIzM0O2NtZDoweCUwMnggLSBhZGRyOiUwOGxsWEAlZDoldSAtIGR1bW15OiVkOiV1IC0gZGF0YTolZDoldVwmIzM0OyxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODA1LVx0XHRvcC1cdTAwM2VjbWQub3Bjb2RlLCBvcC1cdTAwM2VhZGRyLnZhbCwgb3AtXHUwMDNlYWRkci5idXN3aWR0aCwgb3AtXHUwMDNlYWRkci5uYnl0ZXMsXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjgwNjpcdFx0b3AtXHUwMDNlZHVtbXkuYnVzd2lkdGgsIG9wLVx1MDAzZWR1bW15Lm5ieXRlcywgb3AtXHUwMDNlZGF0YS5idXN3aWR0aCwgb3AtXHUwMDNlZGF0YS5uYnl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MDctXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MTEtXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjgxMjpcdHJldCA9IGFtbF9zZmNfc2VuZF9jbWRfYWRkcl9kdW1teShzZmMsIG9wKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTM0LSNkZWZpbmUgICBDVFJMX0lPX0FERFJFU1NfNEJcdFx0QklUKDEzKVx0LyogQVNUMjQwMCBTUEkgb25seSAqL1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzozNTojZGVmaW5lICAgQ1RSTF9JT19EVU1NWV9TRVQoZHVtbXkpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM2Olx0KCgoKChkdW1teSkgXHUwMDNlXHUwMDNlIDIpIFx1MDAyNiAweDEpIFx1MDAzY1x1MDAzYyAxNCkgfCAoKChkdW1teSkgXHUwMDI2IDB4MykgXHUwMDNjXHUwMDNjIDYpKVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0zNy0jZGVmaW5lICAgQ1RSTF9GUkVRX1NFTF9TSElGVFx0XHQ4XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYz0yMzk9c3RhdGljIHNzaXplX3QgYXNwZWVkX3NwaV9yZWFkX3VzZXIoc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTI0My1cdGludCBpb19tb2RlID0gYXNwZWVkX3NwaV9nZXRfaW9fbW9kZShvcCk7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI0NDpcdHU4IGR1bW15ID0gMHhGRjtcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMjQ1LVx0aW50IGk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNTMtXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NDpcdGlmIChvcC1cdTAwM2VkdW1teS5idXN3aWR0aCBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlZHVtbXkubmJ5dGVzKSB7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb3AtXHUwMDNlZHVtbXkubmJ5dGVzIC8gb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzoyNTY6XHRcdFx0YXNwZWVkX3NwaV93cml0ZV90b19haGIoY2hpcC1cdTAwM2VhaGJfYmFzZSwgXHUwMDI2ZHVtbXksXHRzaXplb2YoZHVtbXkpKTtcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMjU3LVx0fVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM9Mjg3PXN0YXRpYyBib29sIGFzcGVlZF9zcGlfc3VwcG9ydHNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yOTktXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjMwMDpcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgIT0gMCkge1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzozMDE6XHRcdGlmIChvcC1cdTAwM2VkdW1teS5idXN3aWR0aCBcdTAwM2UgMSB8fCBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgXHUwMDNlIDcpXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTMwMi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYz0zMTM9c3RhdGljIGludCBkb19hc3BlZWRfc3BpX2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0zNDAtXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM0MTpcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMpXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM0MjpcdFx0Y3RsX3ZhbCB8PSBDVFJMX0lPX0RVTU1ZX1NFVChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgLyBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTM0My1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTY5Nj1zdGF0aWMgaW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJtYXBfZGVzYyAqZGVzYylcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTcwOC1cdFx0b3AtXHUwMDNlY21kLm9wY29kZSwgb3AtXHUwMDNlY21kLmJ1c3dpZHRoLCBvcC1cdTAwM2VhZGRyLmJ1c3dpZHRoLFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzo3MDk6XHRcdG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoLCBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoLFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzo3MTA6XHRcdG9wLVx1MDAzZWFkZHIubmJ5dGVzLCBvcC1cdTAwM2VkdW1teS5uYnl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy03MTEtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy03MjktXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMDpcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMpXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMTpcdFx0Y3RsX3ZhbCB8PSBDVFJMX0lPX0RVTU1ZX1NFVChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgLyBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTczMi1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmM9MTg2PXN0YXRpYyB2b2lkIGF0Y3NwaV9zZXRfdHJhbnNfY3RsKHN0cnVjdCBhdGNzcGlfZGV2ICpzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwNy1cdFx0aWYgKG9wLVx1MDAzZWRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTikge1xuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jOjIwODpcdFx0XHRpZiAob3AtXHUwMDNlZHVtbXkubmJ5dGVzKVxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwOS1cdFx0XHRcdHRjIHw9IFRSQU5TX01PREVfRE1ZX1JFQUQgfFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jOjIxMDpcdFx0XHRcdCAgICAgIFRSQU5TX0RVTU1ZX0NOVChvcC1cdTAwM2VkdW1teS5uYnl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIxMS1cdFx0XHRlbHNlXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0aDc5LmM9MTM3PXN0YXRpYyBpbnQgYXRoNzlfZXhlY19tZW1fb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRoNzkuYy0xNDctXHRpZiAob3AtXHUwMDNlY21kLm9wY29kZSAhPSAweDBiIHx8IG9wLVx1MDAzZWRhdGEuZGlyICE9IFNQSV9NRU1fREFUQV9JTiB8fFxuZHJpdmVycy9zcGkvc3BpLWF0aDc5LmM6MTQ4Olx0ICAgIG9wLVx1MDAzZWFkZHIubmJ5dGVzICE9IDMgfHwgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICE9IDEpXG5kcml2ZXJzL3NwaS9zcGktYXRoNzkuYy0xNDktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0zMTg9c3RhdGljIGJvb2wgYXRtZWxfc3BpX2lzX3YyKHN0cnVjdCBhdG1lbF9zcGkgKmFzKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTMyMy0vKlxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzI0OiAqIFNlbmQgYSBkdW1teSBtZXNzYWdlLlxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzI1LSAqXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzI4LSAqL1xuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzI5OnN0YXRpYyB2b2lkIGF0bWVsX3NwaV9zZW5kX2R1bW15KHN0cnVjdCBhdG1lbF9zcGkgKmFzLCBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBpbnQgY2hpcF9zZWxlY3QpXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0zMzAte1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTM4MC0gKiBwYWNrZXQgaXMgc2VudCwgb25jZSB0aGUgQ1MgaGFzIGFscmVhZHkgYmVlbiBhc3NlcnRlZC4gVGhlIHdvcmthcm91bmQgaXMgdG9cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jOjM4MTogKiBhdm9pZCB0aGlzIGJ5IHNlbmRpbmcgYSBmaXJzdCAoZHVtbXkpIG1lc3NhZ2UgYmVmb3JlIHRvZ2dsaW5nIHRoZSBDUyBzdGF0ZS5cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTM4Mi0gKi9cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jPTM4Mz1zdGF0aWMgdm9pZCBjc19hY3RpdmF0ZShzdHJ1Y3QgYXRtZWxfc3BpICphcywgc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MTQtXHRcdFx0XHQvKlxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6NDE1Olx0XHRcdFx0ICogTmVlZCB0byBkaXNhYmxlIHRoZSBHUElPIGJlZm9yZSBzZW5kaW5nIHRoZSBkdW1teVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtNDE2LVx0XHRcdFx0ICogbWVzc2FnZSBiZWNhdXNlIGl0IGlzIGFscmVhZHkgc2V0IGJ5IHRoZSBzcGkgY29yZS5cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MTgtXHRcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoc3BpX2dldF9jc2dwaW9kKHNwaSwgMCksIDApO1xuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6NDE5Olx0XHRcdFx0YXRtZWxfc3BpX3NlbmRfZHVtbXkoYXMsIHNwaSwgY2hpcF9zZWxlY3QpO1xuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtNDIwLVx0XHRcdFx0YXMtXHUwMDNlbGFzdF9wb2xhcml0eSA9IG5ld19wb2xhcml0eTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM9Mzk5PXN0YXRpYyBpbnQgYXhfdHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rscixcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNDM0LVx0XHQgICAodHJhbnNmZXItXHUwMDNldHhfYnVmIFx1MDAyNlx1MDAyNiB0cmFuc2Zlci1cdTAwM2VyeF9idWYpKSB7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NDM1Olx0XHQvKiBSWCBtb2RlOiBnZW5lcmF0ZSBjbG9jayBieSBmaWxsaW5nIFRYIEZJRk8gd2l0aCBkdW1teSBieXRlc1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTQzNi1cdFx0ICogRnVsbC1kdXBsZXggbW9kZTogZ2VuZXJhdGUgY2xvY2sgYnkgZmlsbGluZyBUWCBGSUZPXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jPTU1ND1zdGF0aWMgaW50IGF4X3NwaV9tZW1fZXhlY19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTU3MC1cdFx0X19mdW5jX18sIG9wLVx1MDAzZWNtZC5vcGNvZGUsIG9wLVx1MDAzZWNtZC5idXN3aWR0aCwgb3AtXHUwMDNlYWRkci5idXN3aWR0aCxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1NzE6XHRcdG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoLCBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoLCBvcC1cdTAwM2VhZGRyLnZhbCxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01NzItXHRcdG9wLVx1MDAzZWRhdGEubmJ5dGVzKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNTc3LVx0ICAgIG9wLVx1MDAzZWFkZHIuYnVzd2lkdGggIT0gMSkgfHxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1Nzg6XHQgICAgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcyBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGggIT0gMCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1Nzk6XHQgICAgb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGggIT0gMSkgfHxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01ODAtXHQgICAgKG9wLVx1MDAzZWRhdGEubmJ5dGVzIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoICE9IDEpKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTYxNS1cbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo2MTY6XHQvKiBBZGQgZHVtbXkgYnl0ZXMgKGZvciBjbG9jayBnZW5lcmF0aW9uKSBvciBhY3R1YWwgZGF0YSBieXRlcyB0byBUWF9GSUZPICovXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNjE3LVx0aWYgKG9wLVx1MDAzZWRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTikge1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjYxODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb3AtXHUwMDNlZHVtbXkubmJ5dGVzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02MTktXHRcdFx0YXhfc3BpX3dyaXRlX2IoeHNwaSwgQVhfU1BJX1RYRklGTywgMHgwMCk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTY2NS1cdFx0ICogU2luY2Ugd2Ugc2V0IFNSSSwgd2Ugb25seSBuZWVkIHRvIGRpc2NhcmQgdGhlIGFkZHJlc3MgYnl0ZXMgYW5kXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NjY2Olx0XHQgKiBkdW1teSBieXRlcyBmcm9tIHRoZSBSWCBGSUZPLlxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTY2Ny1cdFx0ICovXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NjY4Olx0XHRieXRlc190b19kaXNjYXJkX2Zyb21fcnggPSBvcC1cdTAwM2VhZGRyLm5ieXRlcyAmIzQzOyBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNjY5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBieXRlc190b19kaXNjYXJkX2Zyb21fcng7IGkmIzQzOyYjNDM7KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYz02OTk9c3RhdGljIGludCBheF9zcGlfbWVtX2FkanVzdF9vcF9zaXplKHN0cnVjdCBzcGlfbWVtICptZW0sIHN0cnVjdCBzcGlfbWVtX29wICpvcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNzA4LVx0LyogQ2FsY3VsYXRlIHByb3RvY29sIG92ZXJoZWFkIGJ5dGVzIGFjY29yZGluZyB0byB0aGUgcmVhbCBvcGVyYXRpb24gZWFjaCB0aW1lLiAqL1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjcwOTpcdHByb3RvY29sX292ZXJoZWFkX2J5dGVzID0gb3AtXHUwMDNlY21kLm5ieXRlcyAmIzQzOyBvcC1cdTAwM2VhZGRyLm5ieXRlcyAmIzQzOyBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNzEwLVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTQxNj1zdGF0aWMgaW50IGJjbV9xc3BpX2JzcGlfc2V0X2ZsZXhfbW9kZShzdHJ1Y3QgYmNtX3FzcGkgKnFzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtNDMwLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM6NDMxOlx0aWYgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcylcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjQzMjpcdFx0YnBwIHw9IChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiA4KSAvIG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoO1xuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtNDMzLVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTExNTA9c3RhdGljIGludCBiY21fcXNwaV9tc3BpX2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtMTE2OC1cdHRbMF0udHhfYnVmID0gY21kO1xuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM6MTE2OTpcdHRbMF0ubGVuID0gb3AtXHUwMDNlYWRkci5uYnl0ZXMgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICYjNDM7IDE7XG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xMTcwLVx0dFswXS5iaXRzX3Blcl93b3JkID0gc3BpLVx1MDAzZWJpdHNfcGVyX3dvcmQ7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy0xMTMtICogRGVmYXVsdCB0cmFuc2ZlciBtb2RlIGlzIGF1dG8uIElmIHRoZSBtc2cgaXMgcHJlcGVuZGFibGUsIHVzZSB0aGUgcHJlcGVuZFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzoxMTQ6ICogbW9kZS4gIElmIG5vdCwgZmFsbHMgYmFjayB0byB1c2UgdGhlIGR1bW15IGNzIHdvcmthcm91bmQgbW9kZSBidXQgbGltaXQgdGhlXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTExNS0gKiBjbG9jayB0byAyNU1IeiB0byBtYWtlIHN1cmUgaXQgd29ya3MgaW4gYWxsIGJvYXJkIGRlc2lnbi5cbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jPTU2Nz1zdGF0aWMgaW50IGJjbTYzeHhfaHNzcGlfc2V0dXAoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYwMy1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjA0OnN0YXRpYyBpbnQgYmNtNjN4eF9oc3NwaV9kb19kdW1teV9jc190eHJ4KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYwNS1cdFx0XHRcdCAgICAgIHN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjA4LVx0aW50IHN0YXR1cyA9IC1FSU5WQUw7XG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYwOTpcdGludCBkdW1teV9jcztcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjEwLVx0Ym9vbCBrZWVwX2NzID0gZmFsc2U7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MTctXHQgKiBhLiBJbnZlcnQgdGhlIHRhcmdldCBjaGlwIHNlbGVjdCYjMzk7cyBwb2xhcml0eSBzbyBpdCB3aWxsIGJlIGFjdGl2ZS5cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjE4Olx0ICogYi4gU2VsZWN0IGEgXCYjMzQ7ZHVtbXlcJiMzNDsgY2hpcCBzZWxlY3QgdG8gdXNlIGFzIHRoZSBoYXJkd2FyZSB0YXJnZXQuXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYxOTpcdCAqIGMuIEludmVydCB0aGUgZHVtbXkgY2hpcCBzZWxlY3QmIzM5O3MgcG9sYXJpdHkgc28gaXQgd2lsbCBiZSBpbmFjdGl2ZVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MjAtXHQgKiAgICBkdXJpbmcgdGhlIGFjdHVhbCB0cmFuc2ZlcnMuXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyMTpcdCAqIGQuIFRlbGwgdGhlIGhhcmR3YXJlIHRvIHNlbmQgdG8gdGhlIGR1bW15IGNoaXAgc2VsZWN0LiBUaGFua3MgdG9cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjIyLVx0ICogICAgdGhlIG11bHRpcGxleGVkIG5hdHVyZSBvZiBTUEkgdGhlIGFjdHVhbCB0YXJnZXQgd2lsbCByZWNlaXZlXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MjctXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyODpcdGR1bW15X2NzID0gIXNwaV9nZXRfY2hpcHNlbGVjdChzcGksIDApO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2Mjk6XHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIHRydWUpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MzAtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MzQtXHRcdCAqIGEuIE1lc3NhZ2UgaXMgbm90IHByZXBlbmRhYmxlIGFuZCBpbiBkZWZhdWx0IGF1dG8geGZlciBtb2RlLiBUaGlzIG1lYW5cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjM1Olx0XHQgKiAgICB3ZSBmYWxsYmFjayB0byBkdW1teSBjcyBtb2RlIGF0IG1heGltdW0gMjVNSHogc2FmZSBjbG9jayByYXRlLlxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MzY6XHRcdCAqIGIuIFVzZXIgc2V0IHRvIHVzZSB0aGUgZHVtbXkgY3MgbW9kZS5cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjM3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY0MS1cdFx0XHRcdGRldl93YXJuX29uY2UoXHUwMDI2YnMtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjY0MjpcdFx0XHRcdFx0XCYjMzQ7Rm9yY2UgdG8gZHVtbXkgY3MgbW9kZS4gUmVkdWNlIHRoZSBzcGVlZCB0byAlZEh6XCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02NDMtXHRcdFx0XHRcdHQtXHUwMDNlc3BlZWRfaHopO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjczLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2NzQ6XHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIGZhbHNlKTtcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjc1LVx0aWYgKHN0YXR1cyB8fCAha2VlcF9jcylcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jPTY4MT1zdGF0aWMgaW50IGJjbTYzeHhfaHNzcGlfdHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdCxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTcwMy1cdFx0fSBlbHNlXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjcwNDpcdFx0XHRzdGF0dXMgPSBiY202M3h4X2hzc3BpX2RvX2R1bW15X2NzX3R4cngoc3BpLCBtc2cpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy03MDUtXHR9XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYz0yMTc9c3RhdGljIGludCBiY202M3h4X3R4cnhfYnVmcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICpmaXJzdCxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jLTI1Ni1cdFx0XHQgKlxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYzoyNTc6XHRcdFx0ICogVGhlcmVmb3JlLCBmb3IgcmVhZC1vbmx5IHRyYW5zZmVycywgd2UgbmVlZCB0byB3cml0ZSBzb21lIGR1bW15XG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jLTI1OC1cdFx0XHQgKiB2YWx1ZSBpbnRvIHRoZSBGSUZPIHRvIGtlZXAgdGhlIGFjY3VtdWxhdG9yIHRyYWNraW5nIHRoZSBjb3JyZWN0XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTM5OD1zdGF0aWMgdW5zaWduZWQgaW50IGNxc3BpX2NhbGNfcmRyZWcoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MDgtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NDA5OnN0YXRpYyB1bnNpZ25lZCBpbnQgY3FzcGlfY2FsY19kdW1teShjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDEwLXtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTE6XHR1bnNpZ25lZCBpbnQgZHVtbXlfY2xrO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxMi1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTM6XHRpZiAoIW9wLVx1MDAzZWR1bW15Lm5ieXRlcylcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTQtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxNS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTY6XHRkdW1teV9jbGsgPSBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiAoOCAvIG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTctXHRpZiAob3AtXHUwMDNlY21kLmR0cilcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTg6XHRcdGR1bW15X2NsayAvPSAyO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxOS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MjA6XHRyZXR1cm4gZHVtbXlfY2xrO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQyMS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTUzOD1zdGF0aWMgaW50IGNxc3BpX2NvbW1hbmRfcmVhZChzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU0Ny1cdHVuc2lnbmVkIGludCByZWc7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTQ4Olx0dW5zaWduZWQgaW50IGR1bW15X2NsaztcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NDktXHRzaXplX3QgcmVhZF9sZW47XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU3Mi1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1NzM6XHRkdW1teV9jbGsgPSBjcXNwaV9jYWxjX2R1bW15KG9wKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1NzQ6XHRpZiAoZHVtbXlfY2xrIFx1MDAzZSBDUVNQSV9EVU1NWV9DTEtTX01BWClcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NzUtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NzYtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTc3Olx0aWYgKGR1bW15X2NsaylcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1Nzg6XHRcdHJlZyB8PSAoZHVtbXlfY2xrIFx1MDAyNiBDUVNQSV9SRUdfQ01EQ1RSTF9EVU1NWV9NQVNLKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU3OS1cdFx0ICAgICBcdTAwM2NcdTAwM2MgQ1FTUElfUkVHX0NNRENUUkxfRFVNTVlfTFNCO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz02OTA9c3RhdGljIGludCBjcXNwaV9yZWFkX3NldHVwKHN0cnVjdCBjcXNwaV9mbGFzaF9wZGF0YSAqZl9wZGF0YSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNjk0LVx0dm9pZCBfX2lvbWVtICpyZWdfYmFzZSA9IGNxc3BpLVx1MDAzZWlvYmFzZTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo2OTU6XHR1bnNpZ25lZCBpbnQgZHVtbXlfY2xrID0gMDtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy02OTYtXHR1bnNpZ25lZCBpbnQgcmVnO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MTEtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzEyOlx0LyogU2V0dXAgZHVtbXkgY2xvY2sgY3ljbGVzICovXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzEzOlx0ZHVtbXlfY2xrID0gY3FzcGlfY2FsY19kdW1teShvcCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNzE0LVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxNTpcdGlmIChkdW1teV9jbGsgXHUwMDNlIENRU1BJX0RVTU1ZX0NMS1NfTUFYKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNy1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo3MTg6XHRpZiAoZHVtbXlfY2xrKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxOTpcdFx0cmVnIHw9IChkdW1teV9jbGsgXHUwMDI2IENRU1BJX1JFR19SRF9JTlNUUl9EVU1NWV9NQVNLKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcyMC1cdFx0ICAgICAgIFx1MDAzY1x1MDAzYyBDUVNQSV9SRUdfUkRfSU5TVFJfRFVNTVlfTFNCO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xMDE3PXN0YXRpYyBpbnQgY3FzcGlfd3JpdGVfc2V0dXAoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xMDQ1LVx0ICogcGFzc2VkIGluIHRoZSBSZWFkIFNSIGNvbW1hbmQuIEFsc28sIHNvbWUgU1BJIE5PUiBmbGFzaGVzIGxpa2UgdGhlXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6MTA0NjpcdCAqIGN5cHJlc3MgU2VtcGVyIGZsYXNoIGV4cGVjdCBhIDQtYnl0ZSBkdW1teSBhZGRyZXNzIGluIHRoZSBSZWFkIFNSXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTA0Ny1cdCAqIGNvbW1hbmQgaW4gRFRSIG1vZGUuXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTEwNzQ9c3RhdGljIGludCBjcXNwaV9pbmRpcmVjdF93cml0ZV9leGVjdXRlKHN0cnVjdCBjcXNwaV9mbGFzaF9wZGF0YSAqZl9wZGF0YSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTExMi1cdCAqIElmIGEgaGF6YXJkIGV4aXN0cyBiZXR3ZWVuIHRoZSBBUEIgYW5kIEFIQiBpbnRlcmZhY2VzLCBwZXJmb3JtIGFcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMTEzOlx0ICogZHVtbXkgcmVhZGJhY2sgZnJvbSB0aGUgY29udHJvbGxlciB0byBlbnN1cmUgc3luY2hyb25pemF0aW9uLlxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTExMTQtXHQgKi9cbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM9MTMyNT1zdGF0aWMgc3NpemVfdCBjcXNwaV93cml0ZShzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzMzgtXHQvKlxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjEzMzk6XHQgKiBTb21lIGZsYXNoZXMgbGlrZSB0aGUgQ3lwcmVzcyBTZW1wZXIgZmxhc2ggZXhwZWN0IGEgZHVtbXkgNC1ieXRlXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTM0MC1cdCAqIGFkZHJlc3MgKGFsbCAwcykgd2l0aCB0aGUgcmVhZCBzdGF0dXMgcmVnaXN0ZXIgY29tbWFuZCBpbiBEVFIgbW9kZS5cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMzQxOlx0ICogQnV0IHRoaXMgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IHNlbmRpbmcgZHVtbXkgYWRkcmVzcyBieXRlcyB0b1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzNDItXHQgKiB0aGUgZmxhc2ggd2hlbiBpdCBpcyBwb2xsaW5nIHRoZSB3cml0ZSBjb21wbGV0aW9uIHJlZ2lzdGVyIGluIERUUlxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xNTE2PXN0YXRpYyBib29sIGNxc3BpX3N1cHBvcnRzX21lbV9vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xNTIyLVx0LypcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxNTIzOlx0ICogb3AtXHUwMDNlZHVtbXkuZHRyIGlzIHJlcXVpcmVkIGZvciBjb252ZXJ0aW5nIG5ieXRlcyBpbnRvIG5jeWNsZXMuXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyNC1cdCAqIEFsc28sIGRvbiYjMzk7dCBjaGVjayB0aGUgZHRyIGZpZWxkIG9mIHRoZSBvcCBwaGFzZSBoYXZpbmcgemVybyBuYnl0ZXMuXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTE1MjctXHRcdCAgICghb3AtXHUwMDNlYWRkci5uYnl0ZXMgfHwgb3AtXHUwMDNlYWRkci5kdHIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjE1Mjg6XHRcdCAgICghb3AtXHUwMDNlZHVtbXkubmJ5dGVzIHx8IG9wLVx1MDAzZWR1bW15LmR0cikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyOS1cdFx0ICAgKCFvcC1cdTAwM2VkYXRhLm5ieXRlcyB8fCBvcC1cdTAwM2VkYXRhLmR0cik7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUzMC1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxNTMxOlx0YWxsX2ZhbHNlID0gIW9wLVx1MDAzZWNtZC5kdHIgXHUwMDI2XHUwMDI2ICFvcC1cdTAwM2VhZGRyLmR0ciBcdTAwMjZcdTAwMjYgIW9wLVx1MDAzZWR1bW15LmR0ciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xNTMyLVx0XHQgICAgIW9wLVx1MDAzZWRhdGEuZHRyO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy0xODEtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6MTgyOiNkZWZpbmUgQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfMyhvcCwgZHVtbXlieXRlcykgKCBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4My1cdEZJRUxEX1BSRVAoQ0ROU19YU1BJX0NNRF9EU0VRX1IzX0RDTlRfSCwgXFxcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtMTg1LVx0RklFTERfUFJFUChDRE5TX1hTUElfQ01EX0RTRVFfUjNfTlVNX09GX0RVTU1ZLCBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NjpcdFx0ICAob3ApLVx1MDAzZWR1bW15LmJ1c3dpZHRoICE9IDAgPyBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NzpcdFx0ICAoKChkdW1teWJ5dGVzKSAqIDgpIC8gKG9wKS1cdTAwM2VkdW1teS5idXN3aWR0aCkgOiBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4OC1cdFx0ICAwKSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM9NzE5PXN0YXRpYyBpbnQgY2Ruc194c3BpX3NlbmRfc3RpZ19jb21tYW5kKHN0cnVjdCBjZG5zX3hzcGlfZGV2ICpjZG5zX3hzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTcyNS1cdGludCByZXQ7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6NzI2Olx0aW50IGR1bW15Ynl0ZXMgPSBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzI3LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NDAtXHRjbWRfcmVnc1syXSA9IENETlNfWFNQSV9DTURfRkxEX1AxX0lOU1RSX0NNRF8yKG9wKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NDE6XHRpZiAoZHVtbXlieXRlcyAhPSAwKSB7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzQyLVx0XHRjbWRfcmVnc1szXSA9IENETlNfWFNQSV9DTURfRkxEX1AxX0lOU1RSX0NNRF8zKG9wLCAxKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NDM6XHRcdGR1bW15Ynl0ZXMtLTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NDQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NTUtXHRcdGNtZF9yZWdzWzJdID0gQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfMihvcCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6NzU2Olx0XHRjbWRfcmVnc1szXSA9IENETlNfWFNQSV9DTURfRkxEX0RTRVFfQ01EXzMob3AsIGR1bW15Ynl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTc1Ny1cdFx0Y21kX3JlZ3NbNF0gPSBDRE5TX1hTUElfQ01EX0ZMRF9EU0VRX0NNRF80KG9wLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM9NjI1PXN0YXRpYyBpbnQgZGF2aW5jaV9zcGlfYnVmcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNjkyLVx0XHRcdCAqIG1hbnkgU0cgZW50cmllcyAoXHUwMDNlIDIwKSwgdXNlIHRoZSByeCBidWZmZXIgYXMgdGhlXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jOjY5MzpcdFx0XHQgKiBkdW1teSB0eCBidWZmZXIgc28gdGhhdCBkbWEgcmVsb2FkcyBhcmUgZG9uZSBhdCB0aGVcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNjk0LVx0XHRcdCAqIHNhbWUgdGltZSBmb3IgcnggYW5kIHR4LlxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNzcwLS8qKlxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYzo3NzE6ICogZHVtbXlfdGhyZWFkX2ZuIC0gZHVtbXkgdGhyZWFkIGZ1bmN0aW9uXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3Mi0gKiBAaXJxOiBJUlEgbnVtYmVyIGZvciB0aGlzIFNQSSBNYXN0ZXJcbi0tXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3Ny0gKi9cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM6Nzc4OnN0YXRpYyBpcnFyZXR1cm5fdCBkdW1teV90aHJlYWRfZm4oczMyIGlycSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNzc5LXtcbi0tXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jPTkyMj1zdGF0aWMgaW50IGRhdmluY2lfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYy05NzctXHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBkc3BpLVx1MDAzZWlycSwgZGF2aW5jaV9zcGlfaXJxLFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYzo5Nzg6XHRcdFx0XHRkdW1teV90aHJlYWRfZm4sIDAsIGRldl9uYW1lKFx1MDAyNnBkZXYtXHUwMDNlZGV2KSwgZHNwaSk7XG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTk3OS1cdGlmIChyZXQpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0NDcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG9hX3RjNl9zdGFydF94bWl0YCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdG8gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzIGBvYV90YzZfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIHRoZSBgc3BpLWxvb3BiYWNrLXRlc3QuY2AgZHJpdmVyIGNvdWxkIGJlIHVzZWQgdG8gc29tZWhvdyByZWFjaCBpdCwgYnV0IHRoYXQgc2VlbXMgbGlrZSBhIGRlYWQgZW5kLiBJJiMzOTttIHJlbWluZGVkIG9mIGEgc2l0dWF0aW9uIHdoZXJlIEkgc2hvdWxkIHJldHVybiBgZmFsc2VgIGZvciBgV29ydGhGdXp6aW5nYCBpZiB0aGUgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbCBlbnZpcm9ubWVudHM7IEkmIzM5O2xsIGtlZXAgdGhpcyBpbiBtaW5kLgoKTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGlzIGFib3V0IHZpcnR1YWwgU1BJIGNvbnRyb2xsZXJzLiBJIGNoZWNrZWQgZm9yIGEgdmlydHVhbCBjb250cm9sbGVyLiBJIGRpc21pc3NlZCBgc3BpLW1vY2suY2AgYW5kIHRoZW4gdGhvdWdodCBhYm91dCBgc3BpLWdwaW8uY2AsIHRoZSBiaXRiYW5naW5nIFNQSSBjb250cm9sbGVyLiBDYW4gc3l6a2FsbGVyIGluc3RhbnRpYXRlIHNvbWV0aGluZyBsaWtlIGBzcGktZ3Bpb2A/IEkga25vdyB0aGF0IHN5emthbGxlciAqY2FuKiB1c2UgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgdmlydHVhbCwgYnV0IGZvciBHUElPIGl0IG5lZWRzIGBncGlvLW1vY2t1cGAgb3IgYGdwaW8tc2ltYC4gSWYgSSBjb3VsZCB1c2UgYGdwaW8tc2ltYCwgdGhlbiB0aGVvcmV0aWNhbGx5IEkgY291bGQgaW5zdGFudGlhdGUgYHNwaS1ncGlvYCBvbiB0b3Agb2YgaXQgdXNpbmcgZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgcGxhdGZvcm0gZGF0YS4gQnV0IHdhaXQsIHN5emthbGxlciBkb2VzbiYjMzk7dCBjdXJyZW50bHkgaGFuZGxlIGRldmljZSB0cmVlIG92ZXJsYXlzIGZvciBgc3BpLWdwaW9gLiBUaGlzIG1lYW5zIHRoYXQgYHNwaS1ncGlvYCBpcyBub3QgYW4gb3B0aW9uLiBBbHNvLCB3aGlsZSBzeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rYCBhbmQgb3RoZXIgc3VwcG9ydCBmb3Igb3RoZXIgdGhpbmdzLCB0aGVyZSYjMzk7cyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSBTUEkgZGV2aWNlcy4KCk9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2suIEkgcmVhbGl6ZSB0aGF0IGBvYV90YzZgIGlzIGEgbGlicmFyeSBhbmQgaXQmIzM5O3Mgb25seSB1c2VkIGJ5IHRoZSBgbGFuODY1eGAgZHJpdmVyLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgbGFuODY1eGAgaXMgaW5zdGFudGlhYmxlLiBJIHNlZSB0aGF0IGl0IGhhcyBhIGRldmljZSB0cmVlIG1hdGNoOiBgbWljcm9jaGlwLGxhbjg2NTBgLiBXaXRob3V0IGRldmljZSB0cmVlIG92ZXJsYXlzLCBpdCB3b24mIzM5O3QgYmUgcHJvYmVkLiBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB0aG9zZSBvdmVybGF5cyB0byBsb2FkIFNQSSBkZXZpY2VzLgoKU28sIHRoZSBuZXh0IHRoaW5nIHRoYXQgSSBuZWVkIHRvIGRvIGlzIHRvIGNoZWNrIGlmIGBvYV90YzZfc3RhcnRfeG1pdGAgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlIHRocm91Z2ggKmFub3RoZXIqIHBhdGguIEl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBhIHBvc3NpYmlsaXR5LiBIb3dldmVyLCBJIHJlYWxpemUgb25seSBgbGFuODY1eGAgY2FsbHMgYG9hX3RjNl9pbml0YC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBsYW44NjV4YCBpcyAqb25seSogdGhlIGNhbGxlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2FfdGM2X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0PTQ1ND1UaGUgaW5jbHVkZS9saW51eC9vYV90YzYuaCBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1NS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdDo0NTY6Li4gYzpmdW5jdGlvbjo6IHN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIFxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3QtNDU3LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0zMzM9c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDk6XHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXHRpZiAoIXByaXYtXHUwMDNldGM2KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzE0LSAqIEBzcGk6IGRldmljZSB3aXRoIHdoaWNoIGRhdGEgd2lsbCBiZSBleGNoYW5nZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMjA6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE0MjQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTQyNTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxuLS1cbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9MTM9c3RydWN0IG9hX3RjNjtcbmluY2x1ZGUvbGludXgvb2FfdGM2LmgtMTQtXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oOjE1OnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNi12b2lkIG9hX3RjNl9leGl0KHN0cnVjdCBvYV90YzYgKnRjNik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTUxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBsYW44NjV4YCBpbiBhIFRlc3RpbmcgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSBzZWUgdGhhdCB0aGUgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQgaXMgb25seSBjYWxsZWQgYnkgYGxhbjg2NXhgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiBgbGFuODY1eGAgd2l0aGluIHRoZSB0ZXN0IGVudmlyb25tZW50PyBMZXQmIzM5O3Mgc2VlLi4uIEl0JiMzOTtzIGFuIFNQSSBkcml2ZXIsIHJpZ2h0PyBUaGF0JiMzOTtzIGtleS4gVGhlIG5vdGVzIHNwZWNpZmljYWxseSBtZW50aW9uIGNvZGUgcGF0aHMgYmVpbmcgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSDigJMgdGhpbmsgVVNCIGdhZGdldHMgb3IgYG1hYzgwMjExX2h3c2ltYC4gSW4gb3VyIGNhc2UsIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGFueSBzb2Z0d2FyZS1lbXVsYXRlZCBTUEkgaGFyZHdhcmUgY2FwYWJsZSBvZiBpbnN0YW50aWF0aW5nIGBsYW44NjV4YCwgbWFraW5nIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggc2VlbSBpbXBvc3NpYmxlIHRvIHRyaWdnZXIuCgpCdXQsIGhvbGQgb24uIElzIHRoZXJlICphbnkqIG90aGVyIHdheSB0byBpbmplY3QgYW4gU1BJIGRldmljZSBpbnRvIHRoZSBzeXN0ZW0/IENhbiB3ZSB1c2Ugc3lzZnMgc29tZWhvdz8gSSBrbm93IGBzcGlfYm9hcmRfaW5mb2AgZXhpc3RzLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSByZWdpc3RlciBhIGRldmljZSwgYnV0IHRoYXQmIzM5O3MgdXN1YWxseSBoYW5kbGVkIGJ5IHRoZSBib2FyZC1zcGVjaWZpYyBjb2RlLiBXaGF0IGFib3V0IGBzcGlkZXZgPyBObywgdGhhdCBqdXN0IGV4cG9zZXMgZXhpc3RpbmcgU1BJIGRldmljZXMgdG8gdXNlcnNwYWNlOyBpdCBkb2VzbiYjMzk7dCBjcmVhdGUgbmV3IG9uZXMuIEkgd2FzIGhvcGluZyBmb3Igc29tZXRoaW5nIGxpa2UgYHNwaS1tb2NrYCwgYnV0IEkmIzM5O3ZlIGFscmVhZHkgY2hlY2tlZCwgYW5kIGl0IGRvZXNuJiMzOTt0IGV4aXN0LgoKV2FpdC4uLiBJIG5lZWQgdG8gcmV0aGluayB0aGlzLiBNYXliZSB0aGVyZSYjMzk7cyBhIGRpZmZlcmVudCBzeXNmcyBpbnRlcmZhY2Ug4oCTIHBlcmhhcHMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHNwaV9uZXdfZGV2aWNlYCBvciBhIHNpbWlsYXIgY2FsbCB0aGF0IGFsbG93cyBkZXZpY2UgaW5zdGFudGlhdGlvbj8gTGV0IG1lIGNoZWNrIGludG8gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3BpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc0LVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNzU6XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIFx1MDAyNmJvYXJkX2luZm8pKSB7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3Ni1cdFx0ZGV2X2VycihkZXYsIFwmIzM0OyVzIGZhaWxlZCB0byBjcmVhdGUgU1BJIGRldmljZTogJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jPTM1PXN0YXRpYyBpbnQgYWx0ZXJhX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMTktXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBkYXRhLVx1MDAzZW51bV9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jOjEyMDpcdFx0XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVx1MDAzZWRldmljZXMgJiM0MzsgaSkpXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTIxLVx0XHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jPTE3Nj1zdGF0aWMgdm9pZCBidXR0ZXJmbHlfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjUtXHRwcC1cdTAwM2VpbmZvWzBdLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jOjI2NjpcdHBwLVx1MDAzZWRhdGFmbGFzaCA9IHNwaV9uZXdfZGV2aWNlKHBwLVx1MDAzZWJpdGJhbmcuY3RsciwgXHUwMDI2cHAtXHUwMDNlaW5mb1swXSk7XG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY3LVx0aWYgKHBwLVx1MDAzZWRhdGFmbGFzaClcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYz0xNDE9c3RhdGljIGludCBjaDM0MV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDYtXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYzoyMDc6XHRjaDM0MS1cdTAwM2VzcGlkZXYgPSBzcGlfbmV3X2RldmljZShjdHJsLCBcdTAwMjZjaGlwKTtcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwOC1cdGlmICghY2gzNDEtXHUwMDNlc3BpZGV2KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYz0zMTM9c3RhdGljIGludCBjczQybDQzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI3LVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0Mjg6XHRcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cdTAwM2VjdGxyLCBhbXBsX2luZm8pKVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjktXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cdTAwM2VkZXYsIC1FTk9ERVYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzEtXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQzMjpcdFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVx1MDAzZWN0bHIsIGFtcHJfaW5mbykpXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMy1cdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldiwgLUVOT0RFVixcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYz0xMzc1PXN0YXRpYyBpbnQgaW50ZWxfc3BpX3BvcHVsYXRlX2NoaXAoc3RydWN0IGludGVsX3NwaSAqaXNwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAxLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQwMjpcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cdTAwM2Vob3N0LCBcdTAwMjZjaGlwKSlcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDMtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzAtXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDMxOlx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVx1MDAzZWhvc3QsIFx1MDAyNmNoaXApKVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMi1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM9MzEwPXN0YXRpYyBpbnQga3NwaTJfcmVnaXN0ZXJfZGV2aWNlcyhzdHJ1Y3Qga3NwaTIgKmtzcGkpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mga3NwaS1cdTAwM2VhdXhkZXYtXHUwMDNlaW5mb19zaXplOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzE3Olx0XHRzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2aWNlID0gc3BpX25ld19kZXZpY2Uoa3NwaS1cdTAwM2Vob3N0LCBcdTAwMjZpbmZvW2ldKTtcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxOC1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jPTE4OD1zdGF0aWMgdm9pZCBzcGlfbG03MGxscF9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjYtXHRwcC1cdTAwM2VpbmZvLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNjc6XHRwcC1cdTAwM2VzcGlkZXZfbG03MCA9IHNwaV9uZXdfZGV2aWNlKHBwLVx1MDAzZWJpdGJhbmcuY3RsciwgXHUwMDI2cHAtXHUwMDNlaW5mbyk7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2OC1cdGlmIChwcC1cdTAwM2VzcGlkZXZfbG03MClcbi0tXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3MS1cdGVsc2Uge1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNzI6XHRcdGRldl93YXJuKFx1MDAyNnBkLVx1MDAzZWRldiwgXCYjMzQ7c3BpX25ld19kZXZpY2UgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjczLVx0XHRzdGF0dXMgPSAtRU5PREVWO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYz00MDI9c3RhdGljIGludCB4aWxpbnhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUwOS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGRhdGEtXHUwMDNlbnVtX2RldmljZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jOjUxMDpcdFx0XHRzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cdTAwM2VkZXZpY2VzICYjNDM7IGkpO1xuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUxMS1cdH1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz03ODg9RVhQT1JUX1NZTUJPTF9HUEwoc3BpX2FkZF9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTc5MC0vKipcbmRyaXZlcnMvc3BpL3NwaS5jOjc5MTogKiBzcGlfbmV3X2RldmljZSAtIGluc3RhbnRpYXRlIG9uZSBuZXcgU1BJIGRldmljZVxuZHJpdmVycy9zcGkvc3BpLmMtNzkyLSAqIEBjdGxyOiBDb250cm9sbGVyIHRvIHdoaWNoIGRldmljZSBpcyBjb25uZWN0ZWRcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy04MDMtICovXG5kcml2ZXJzL3NwaS9zcGkuYzo4MDQ6c3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcbmRyaXZlcnMvc3BpL3NwaS5jLTgwNS1cdFx0XHRcdCAgc3RydWN0IHNwaV9ib2FyZF9pbmZvICpjaGlwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTg1OS19XG5kcml2ZXJzL3NwaS9zcGkuYzo4NjA6RVhQT1JUX1NZTUJPTF9HUEwoc3BpX25ld19kZXZpY2UpO1xuZHJpdmVycy9zcGkvc3BpLmMtODYxLVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTg5MD1zdGF0aWMgdm9pZCBzcGlfbWF0Y2hfY29udHJvbGxlcl90b19ib2FyZGluZm8oc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTg5Ny1cbmRyaXZlcnMvc3BpL3NwaS5jOjg5ODpcdGRldiA9IHNwaV9uZXdfZGV2aWNlKGN0bHIsIGJpKTtcbmRyaXZlcnMvc3BpL3NwaS5jLTg5OS1cdGlmICghZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ5NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBoaXR0aW5nIGEgcm9hZGJsb2NrLiBJdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIG5vIHN0cmFpZ2h0Zm9yd2FyZCBzeXNmcyBpbnRlcmZhY2UsIGxpa2Ugd2Ugb2Z0ZW4gc2VlIHdpdGggb3RoZXIgYnVzc2VzLCB0byBqdXN0ICpwb29mKiBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgU1BJIGRldmljZS4gSSB3YXMgcmVhbGx5IGhvcGluZyBmb3Igc29tZXRoaW5nIGNsZWFuIGFuZCBkeW5hbWljLCBidXQgaXQgc2VlbXMgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UuCgpXYWl0IGEgc2Vjb25k4oCmIGhvbGQgb24uIFBlcmhhcHMgSSYjMzk7bSBiZWluZyB0b28gcGVzc2ltaXN0aWMuIFRoZXJlIG1pZ2h0IGJlIGEgaGlkZGVuLCBtb3JlIEkyQy1saWtlIGFwcHJvYWNoIHVzaW5nIGEgYG5ld19kZXZpY2VgIGF0dHJpYnV0ZSwgc29tZSBjbGV2ZXIgbWVjaGFuaXNtIHR1Y2tlZCBhd2F5LiBJdCB3b3VsZG4mIzM5O3QgYmUgY29tcGxldGVseSBvdXQgb2YgY2hhcmFjdGVyIGZvciB0aGUga2VybmVsIHRvIGRvIHNvbWV0aGluZyBhIGxpdHRsZSBkaWZmZXJlbnQgZm9yIFNQSS4KClJpZ2h0LCBsZXQmIzM5O3Mgc3RvcCBzcGVjdWxhdGluZyBhbmQgZ2V0IHRvIHRoZSBzb3VyY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9zcGkuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2sgdG8gc2VlIHdoYXQgdGhlIHJlYWxpdHkgaXMgYW5kIGVpdGhlciBjb25maXJtIG15IHN1c3BpY2lvbiBvciBmaWd1cmUgb3V0IGEgbmV3IHNvbHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvc3BpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvc3BpLmM9Nzg4PUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy03OTAtLyoqXG5kcml2ZXJzL3NwaS9zcGkuYzo3OTE6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTc5Mi0gKiBAY3RscjogQ29udHJvbGxlciB0byB3aGljaCBkZXZpY2UgaXMgY29ubmVjdGVkXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtODAzLSAqL1xuZHJpdmVycy9zcGkvc3BpLmM6ODA0OnN0cnVjdCBzcGlfZGV2aWNlICpzcGlfbmV3X2RldmljZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG5kcml2ZXJzL3NwaS9zcGkuYy04MDUtXHRcdFx0XHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy04NTktfVxuZHJpdmVycy9zcGkvc3BpLmM6ODYwOkVYUE9SVF9TWU1CT0xfR1BMKHNwaV9uZXdfZGV2aWNlKTtcbmRyaXZlcnMvc3BpL3NwaS5jLTg2MS1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz04OTA9c3RhdGljIHZvaWQgc3BpX21hdGNoX2NvbnRyb2xsZXJfdG9fYm9hcmRpbmZvKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rscixcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy04OTctXG5kcml2ZXJzL3NwaS9zcGkuYzo4OTg6XHRkZXYgPSBzcGlfbmV3X2RldmljZShjdGxyLCBiaSk7XG5kcml2ZXJzL3NwaS9zcGkuYy04OTktXHRpZiAoIWRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOTAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEluc3RhbnRpYXRpbmcgdGhlIExBTjg2NXggU1BJIERldmljZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBkeW5hbWljYWxseSBicmluZyB1cCB0aGlzIGBsYW44NjV4YCBTUEkgZGV2aWNlLCByaWdodD8gRmlyc3QgdGhvdWdodCBpcywgaXNuJiMzOTt0IHRoZXJlIHVzdWFsbHkgYSBgbmV3X2RldmljZWAgZW50cnkgaW4gc3lzZnMgZm9yIFNQST8gTm9wZSwgbm90aGluZyB0aGVyZS4gU28sIEkgY2FuJiMzOTt0IHRyaWdnZXIgaXQgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEhtbSwgbWF5YmUgc3l6a2FsbGVyIGhhcyBhIHRyaWNrIHVwIGl0cyBzbGVldmUuIExldCBtZSBjaGVjay4uLgoKU3l6a2FsbGVyIHVzZXMgYHN5el9kZXZfc3BpYCwgYnV0IHRoYXQganVzdCBpbnRlcmZhY2VzIHdpdGggZXhpc3RpbmcgYC9kZXYvc3BpZGV2WC5ZYCBub2Rlcy4gVXNlbGVzcy4gV2FpdCBhIHNlY29uZCwgZGlkbiYjMzk7dCBpdCBoYXZlIHNvbWV0aGluZyBmb3IgVVNCPyBBaCwgYHN5el91c2JfY29ubmVjdGAhIENvdWxkIEkgZmluZCBhIFVTQiB0byBTUEkgYnJpZGdlIGRldmljZSB0aGF0IEkgY291bGQgaW5zdGFudGlhdGUgdGhyb3VnaCBzeXprYWxsZXIsIGFuZCB0aGVuIHNvbWVob3cgZ2V0IHRoZSBgbGFuODY1eGAgZHJpdmVyIHRvIHByb2JlIHRoZSBicmlkZ2U/IExldCYjMzk7cyBpbnZlc3RpZ2F0ZSB0aGUgZXhpc3RpbmcgVVNCLXRvLVNQSSBkcml2ZXJzLgoKTGV0JiMzOTtzIGxvb2sgYXQgYHNwaS1jaDM0MS5jYCBhbmQgYHNwaS1kbG4yLmNgLiBPa2F5LCBgc3BpLWNoMzQxLmNgICppcyogYSBVU0ItdG8tU1BJIGJyaWRnZS4gQnV0IGRvZXMgaXQgaW5zdGFudGlhdGUgdGhlIHRhcmdldCBkZXZpY2U/IE5vcGUsIGl0IGp1c3QgY3JlYXRlcyBhIGBzcGlkZXZgIGVudHJ5LCBsaWtlIEkgZXhwZWN0ZWQuIFNhbWUgZm9yIGBzcGktZGxuMi5jYC4gU28sIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gTm8gbHVjayB3aXRoIHRoZSBVU0Igcm91dGUuCgpCYXNpY2FsbHksIGlmIHRoaXMgYGxhbjg2NXhgIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBgb2FfdGM2X2luaXRgLCB0aGUgYG9hX3RjNmAgY29kZSBpcyB1bnJlYWNoYWJsZSwgcmlnaHQ/IFRoYXQgbG9va3MgbGlrZSB0aGUgc2l0dWF0aW9uLiBXYWl0LCBpcyB0aGVyZSAqYW55KiBvdGhlciBwbGFjZSB0aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24/IExldCBtZSBjaGVjayBxdWlja2x5IGlmIHRoZXJlIGFyZSBvdGhlciBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYV90YzZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q9NDU0PVRoZSBpbmNsdWRlL2xpbnV4L29hX3RjNi5oIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3QtNDU1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0OjQ1NjouLiBjOmZ1bmN0aW9uOjogc3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgXFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMzEwPUVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9zdGFydF94bWl0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMxMzogKiBvYV90YzZfaW5pdCAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb2FfdGM2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzE5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE0MjYtXG4tLVxuaW5jbHVkZS9saW51eC9vYV90YzYuaD0xMz1zdHJ1Y3Qgb2FfdGM2O1xuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNC1cbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg6MTU6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTE2LXZvaWQgb2FfdGM2X2V4aXQoc3RydWN0IG9hX3RjNiAqdGM2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1MzkKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogNzAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBvYV90YzYuY2AsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQsIGlzIGEgbGlicmFyeSBzcGVjaWZpY2FsbHkgZm9yIGFuIFNQSSBFdGhlcm5ldCBNQUMtUEhZLiBUaGUgY29kZSB0aGF0IGNhbGxzIGl0IGlzIHRoZSBgbGFuODY1eGAgZHJpdmVyLCB3aGljaCBpcyBhbHNvIGFuIFNQSSBkZXZpY2UgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/CgpJbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCAmIzM0O05vIHdheS4mIzM0OyBUaGVyZSYjMzk7cyBubyBzdGFuZGFyZCBtZWNoYW5pc20gZm9yIGRpcmVjdGx5IGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IFNQSSBkZXZpY2VzIGluIHRoZXNlIGVudmlyb25tZW50cy4gV2UgY2FuJiMzOTt0IGp1c3QgbWFnaWNhbGx5IGNyZWF0ZSBhbiBgbGFuODY1eGAgaW5zdGFuY2UuICBNeSBmaXJzdCBpbnN0aW5jdCB3YXMgdGhhdCBzeXprYWxsZXIgY291bGRuJiMzOTt0IHRyaWdnZXIgdGhpcyBjb2RlIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzIGZvciBTUEkgZGV2aWNlcy4gRXZlbiBpZiBpdCAqY291bGQqLCB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gIEFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgU1BJIHRoYXQgd291bGQgbGV0IHVzIGNyZWF0ZSBhcmJpdHJhcnkgZGV2aWNlcy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGNoZWNrZWQgZm9yIG90aGVyIHdheXMgdG8gcmVhY2ggYG9hX3RjNmAgLSBsaWtlIGBuZXRkZXZzaW1gIGFuZCBgZHVtbXlgIG5ldGRldi4gTm90aGluZy4KClNvLCBJIGNpcmNsZWQgYmFjayB0byBjb25maXJtIG15IGFuYWx5c2lzLiBUaGUgYGxhbjg2NXhgIGRyaXZlciwgYmVpbmcgYW4gU1BJIGRyaXZlciwgKnJlcXVpcmVzKiBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEl0IG5lZWRzIHRvIGJlIHByZXNlbnQgaW4gdGhlIGRldmljZSB0cmVlIG9yIGJvYXJkIGluZm8uICBRRU1VL0dDRSBkb24mIzM5O3QgcHJvdmlkZSB0aGlzIGhhcmR3YXJlLCBhbmQgd2UgY2FuJiMzOTt0IHNvZnR3YXJlLWVtdWxhdGUgYW4gYXJiaXRyYXJ5IFNQSSBidXMgZm9yIHRoaXMgcHVycG9zZS4gVGhlIGBsYW44NjV4X2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfc3BpX2RyaXZlcmAsIGFuZCBpdHMgcHJvYmUgZnVuY3Rpb24sIGBsYW44NjV4X3Byb2JlYCwgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGVyZSYjMzk7cyBhIGNvbXBhdGlibGUgZGV2aWNlIHByZXNlbnQuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBgb2FfdGM2X2luaXRgIChhbmQgYnkgZXh0ZW5zaW9uIHRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCkgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gVGhleSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBvdXIgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFNvLCBjb25zaWRlcmluZyB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmdgLCBJIGFtIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IHJlc3BvbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG9hX3RjNiBsaWJyYXJ5IChPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgU1BJKSwgd2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZSBsYW44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIuIFNpbmNlIFNQSSBkZXZpY2VzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICh1bmxpa2UgVVNCIHZpYSB2aGNpIG9yIFdpLUZpIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoZSBsYW44NjV4IGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6Mjk6MzAuNTI5NzE4ODE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgxNjQ5NjA5MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6Mjk6MzAuNTI5NzIyOTY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTE5OTAzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NWEyMjk0MjkwMDdkZTNiNWEyNWE3N2I4MWExMDVmMmI4MjA0ZDg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjI5OjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG5pbmRleCAwNzI3ZDUzMzQ1YTMzYi4uYzU5ZGFhMDMyZTcwYTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xcbkBAIC02NzIsMTAgKzY3MiwxNiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfY2xlYW51cF9vbmdvaW5nX3R4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIFxcbiBzdGF0aWMgdm9pZCBvYV90YzZfY2xlYW51cF93YWl0aW5nX3R4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4tXFx0aWYgKHRjNi1cXHUwMDNld2FpdGluZ190eF9za2IpIHtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcdHNrYiA9IHRjNi1cXHUwMDNld2FpdGluZ190eF9za2I7XFxuK1xcdHRjNi1cXHUwMDNld2FpdGluZ190eF9za2IgPSBOVUxMO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcbitcXHRpZiAoc2tiKSB7XFxuIFxcdFxcdHRjNi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XFxuLVxcdFxcdGtmcmVlX3NrYih0YzYtXFx1MDAzZXdhaXRpbmdfdHhfc2tiKTtcXG4tXFx0XFx0dGM2LVxcdTAwM2V3YWl0aW5nX3R4X3NrYiA9IE5VTEw7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTY4Niw2ICs2OTIsMTIgQEAgc3RhdGljIHZvaWQgb2FfdGM2X2ZyZWVfcGVuZGluZ19za2JzKHN0cnVjdCBvYV90YzYgKnRjNilcXG4gXFx0b2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2IodGM2KTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuK3tcXG4rXFx0dGM2LVxcdTAwM2VyeF9idWZfb3ZlcmZsb3cgPSB0cnVlO1xcbitcXHRvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpO1xcbit9XFxuK1xcbiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZ1xcbiAgKiB0aGUgaW50ZXJydXB0IG9mIHRoZSBkZXZpY2Ugd29uJ3Qgd29yay4gU2luY2UgU1BJIGludGVycnVwdCBpc1xcbiAgKiBkaXNhYmxlZCwgaXQgc2hvdWxkIHN0b3AgdGhlIHJlcGVhdGVkIGludGVycnVwdHMuXFxuQEAgLTcyMyw4ICs3MzUsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChGSUVMRF9HRVQoU1RBVFVTMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJST1IsIHZhbHVlKSkge1xcbi1cXHRcXHR0YzYtXFx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XFxuLVxcdFxcdG9hX3RjNl9jbGVhbnVwX29uZ29pbmdfcnhfc2tiKHRjNik7XFxuK1xcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4gXFx0XFx0bmV0X2Vycl9yYXRlbGltaXRlZChcXFwiJXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgdGM2LVxcdTAwM2VuZXRkZXYtXFx1MDAzZW5hbWUpO1xcbiBcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG5AQCAtODA1LDEzICs4MTYsMzUgQEAgc3RhdGljIHZvaWQgb2FfdGM2X3N1Ym1pdF9yeF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KVxcbiBcXHR0YzYtXFx1MDAzZXJ4X3NrYiA9IE5VTEw7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIG9hX3RjNl91cGRhdGVfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHU4IGxlbmd0aClcXG4rLyogT24gb3ZlcnN1YnNjcmliZWQgdHJhZmZpYyBjb25kaXRpb24sIHBhcnRpY3VsYXJseSB3aXRoIG92ZXJ3aGVsbWluZyByeFxcbisgKiBidWZmZXIgb3ZlcmZsb3cgZXJyb3JzLCB0aGVyZSBjb3VsZCBiZSBkYXRhIGNodW5rIGxvc3MuIElmIHRhaWwgKyBsZW5ndGhcXG4rICogZ29lcyBiZXlvbmQgZW5kIHBvaW50ZXIsIHRoYXQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBkYXRhIGNodW5rIHdpdGhcXG4rICogZW5kX3ZhbGlkIGJpdCBpcyBsb3N0LiBUaW1lIHRvIGxvb2sgZm9yIGEgZGF0YSBjaHVuayB3aXRoIHN0YXJ0X3ZhbGlkIGJpdC5cXG4rICpcXG4rICogSWYgcnhfc2tiIGlzIE5VTEwsIGl0IGlzIHRpbWUgdG8gc3RhcnQgbG9va2luZyBmb3IgZGF0YSBjaHVuayB3aXRoXFxuKyAqIHN0YXJ0X2JpdC5cXG4rICovXFxuK3N0YXRpYyBpbnQgb2FfdGM2X3VwZGF0ZV9yeF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTggbGVuZ3RoKVxcbiB7XFxuK1xcdGlmICghdGM2LVxcdTAwM2VyeF9za2IgfHxcXG4rXFx0ICAgICh0YzYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNldGFpbCArIGxlbmd0aCkgXFx1MDAzZSB0YzYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNlZW5kKSB7XFxuK1xcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4rXFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdH1cXG4rXFxuIFxcdG1lbWNweShza2JfcHV0KHRjNi1cXHUwMDNlcnhfc2tiLCBsZW5ndGgpLCBwYXlsb2FkLCBsZW5ndGgpO1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyogT24gb3ZlcndoZWxtaW5nIHJ4IGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIGR1ZSB0byBkYXRhIGNodW5rIGxvc3MsIGl0IGlzXFxuKyAqIHBvc3NpYmxlIHRoYXQgd2UgZ2V0IHR3byBkYXRhIGNodW5rcyB3aXRoIHN0YXJ0X3ZhbGlkIGJpdCBzZXQsIHdpdGhvdXRcXG4rICogZW5kX3ZhbGlkIGJpdCBzZXQgaW4gYmV0d2Vlbi4gSW4gdGhpcyBjYXNlLCByeF9za2Igd291bGQgaGF2ZSBhIHZhbGlkXFxuKyAqIGJ1ZmZlciBwb2ludGVyLiBXZSBzaG91bGQgcmVsZWFzZSwgaWYgYSB2YWxpZCBwb2ludGVyIGlzIGZvdW5kIGJlZm9yZVxcbisgKiBhbGxvY2F0aW5nIGEgbmV3IG9uZS5cXG4rICovXFxuIHN0YXRpYyBpbnQgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4rXFx0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcXG4gXFx0dGM2LVxcdTAwM2VyeF9za2IgPSBuZXRkZXZfYWxsb2Nfc2tiX2lwX2FsaWduKHRjNi1cXHUwMDNlbmV0ZGV2LCB0YzYtXFx1MDAzZW5ldGRldi1cXHUwMDNlbXR1ICtcXG4gXFx0XFx0XFx0XFx0XFx0XFx0RVRIX0hMRU4gKyBFVEhfRkNTX0xFTik7XFxuIFxcdGlmICghdGM2LVxcdTAwM2VyeF9za2IpIHtcXG5AQCAtODMxLDcgKzg2NCw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfY29tcGxldGVfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuK1xcdHJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xcbiBcXG5AQCAtODQ2LDIyICs4ODEsMjQgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1MTYgc2l6ZSlcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1MTYgc2l6ZSlcXG4rc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXFxuIHtcXG4tXFx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcXG4rXFx0aW50IHJldDtcXG4gXFxuLVxcdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XFxuK1xcdHJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuK1xcdGlmICghcmV0KVxcbitcXHRcXHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXFxuLVxcdFxcdFxcdFxcdFxcdCB1MzIgZm9vdGVyKVxcbitzdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcXG4rXFx0XFx0XFx0XFx0XFx0dTMyIGZvb3RlcilcXG4ge1xcbi1cXHRvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xcbitcXHRyZXR1cm4gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLFxcbitcXHRcXHRcXHRcXHQgICAgT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbkBAIC04NzQsNiArOTExLDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXFxuIFxcdGJvb2wgc3RhcnRfdmFsaWQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1NUQVJUX1ZBTElELCBmb290ZXIpO1xcbiBcXHRib29sIGVuZF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX1ZBTElELCBmb290ZXIpO1xcbiBcXHR1MTYgc2l6ZTtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdC8qIFJlc3RhcnQgdGhlIG5ldyByeCBmcmFtZSBhZnRlciByZWNlaXZpbmcgcnggYnVmZmVyIG92ZXJmbG93IGVycm9yICovXFxuIFxcdGlmIChzdGFydF92YWxpZCBcXHUwMDI2XFx1MDAyNiB0YzYtXFx1MDAzZXJ4X2J1Zl9vdmVyZmxvdylcXG5AQCAtOTAxLDggKzkzOSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbiBcXHQvKiBQcm9jZXNzIHRoZSBjaHVuayB3aXRoIG9ubHkgcnggZnJhbWUgZW5kICovXFxuIFxcdGlmIChlbmRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgIXN0YXJ0X3ZhbGlkKSB7XFxuIFxcdFxcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgKyAxO1xcbi1cXHRcXHRvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTtcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTtcXG4gXFx0fVxcbiBcXG4gXFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBwcmV2aW91cyByeCBmcmFtZSBlbmQgYW5kIG5leHQgcnggZnJhbWVcXG5AQCAtOTE1LDcgKzk1Miw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKHRjNi1cXHUwMDNlcnhfc2tiKSB7XFxuIFxcdFxcdFxcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgKyAxO1xcbi1cXHRcXHRcXHRvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTtcXG4rXFx0XFx0XFx0cmV0ID0gb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7XFxuK1xcdFxcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFx0XFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcXG4gXFx0XFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHRjNixcXG5AQCAtOTI0LDkgKzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbiBcXHR9XFxuIFxcbiBcXHQvKiBQcm9jZXNzIHRoZSBjaHVuayB3aXRoIG9uZ29pbmcgcnggZnJhbWUgZGF0YSAqL1xcbi1cXHRvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHRjNiwgZGF0YSwgZm9vdGVyKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZSh0YzYsIGRhdGEsIGZvb3Rlcik7XFxuIH1cXG4gXFxuIHN0YXRpYyB1MzIgb2FfdGM2X2dldF9yeF9jaHVua19mb290ZXIoc3RydWN0IG9hX3RjNiAqdGM2LCB1MTYgZm9vdGVyX29mZnNldClcXG5AQCAtMTI1MCwxMSArMTI4Nyw2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl96ZXJvX2FsaWduX3JlY2VpdmVfZnJhbWVfZW5hYmxlKTtcXG4gICovXFxuIG5ldGRldl90eF90IG9hX3RjNl9zdGFydF94bWl0KHN0cnVjdCBvYV90YzYgKnRjNiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbi1cXHRpZiAodGM2LVxcdTAwM2VkaXNhYmxlX3RyYWZmaWMgfHwgdGM2LVxcdTAwM2V3YWl0aW5nX3R4X3NrYikge1xcbi1cXHRcXHRuZXRpZl9zdG9wX3F1ZXVlKHRjNi1cXHUwMDNlbmV0ZGV2KTtcXG4tXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xcbi1cXHR9XFxuLVxcbiBcXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIFxcdFxcdHRjNi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XFxuQEAgLTEyNjIsNiArMTI5NCwxMSBAQCBuZXRkZXZfdHhfdCBvYV90YzZfc3RhcnRfeG1pdChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdH1cXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcdGlmICh0YzYtXFx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXFx1MDAzZXdhaXRpbmdfdHhfc2tiKSB7XFxuK1xcdFxcdG5ldGlmX3N0b3BfcXVldWUodGM2LVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcdFxcdHJldHVybiBORVRERVZfVFhfQlVTWTtcXG4rXFx0fVxcbiBcXHR0YzYtXFx1MDAzZXdhaXRpbmdfdHhfc2tiID0gc2tiO1xcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTozMS4wMjIzNzM3MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NjcyMjkzOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgb2FfdGM2IGxpYnJhcnkgKE9QRU4gQWxsaWFuY2UgVEM2IDEwQkFTRS1UMVMgTUFDLVBIWSBTUEkpLCB3aGljaCBpcyBvbmx5IHVzZWQgYnkgdGhlIGxhbjg2NXggU1BJIEV0aGVybmV0IGRyaXZlci4gU2luY2UgU1BJIGRldmljZXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHVubGlrZSBVU0IgdmlhIHZoY2kgb3IgV2ktRmkgdmlhIG1hYzgwMjExX2h3c2ltKSwgdGhlIGxhbjg2NXggZHJpdmVyIHdpbGwgbmV2ZXIgcHJvYmUuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDVhMjI5NDI5MDA3ZGUzYjVhMjVhNzdiODFhMTA1ZjJiODIwNGQ4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjI5OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuaW5kZXggMDcyN2Q1MzM0NWEzM2IuLmM1OWRhYTAzMmU3MGExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jXG5AQCAtNjcyLDEwICs2NzIsMTYgQEAgc3RhdGljIHZvaWQgb2FfdGM2X2NsZWFudXBfb25nb2luZ190eF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KVxuIFxuIHN0YXRpYyB2b2lkIG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiB7XG4tXHRpZiAodGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiKSB7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4rXHRza2IgPSB0YzYtXHUwMDNld2FpdGluZ190eF9za2I7XG4rXHR0YzYtXHUwMDNld2FpdGluZ190eF9za2IgPSBOVUxMO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbitcbitcdGlmIChza2IpIHtcbiBcdFx0dGM2LVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XG4tXHRcdGtmcmVlX3NrYih0YzYtXHUwMDNld2FpdGluZ190eF9za2IpO1xuLVx0XHR0YzYtXHUwMDNld2FpdGluZ190eF9za2IgPSBOVUxMO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdH1cbiB9XG4gXG5AQCAtNjg2LDYgKzY5MiwxMiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfZnJlZV9wZW5kaW5nX3NrYnMoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0b2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2IodGM2KTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4re1xuK1x0dGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XG4rXHRvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpO1xuK31cbitcbiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZ1xuICAqIHRoZSBpbnRlcnJ1cHQgb2YgdGhlIGRldmljZSB3b24ndCB3b3JrLiBTaW5jZSBTUEkgaW50ZXJydXB0IGlzXG4gICogZGlzYWJsZWQsIGl0IHNob3VsZCBzdG9wIHRoZSByZXBlYXRlZCBpbnRlcnJ1cHRzLlxuQEAgLTcyMyw4ICs3MzUsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHR9XG4gXG4gXHRpZiAoRklFTERfR0VUKFNUQVRVUzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUk9SLCB2YWx1ZSkpIHtcbi1cdFx0dGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XG4tXHRcdG9hX3RjNl9jbGVhbnVwX29uZ29pbmdfcnhfc2tiKHRjNik7XG4rXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcIiVzOiBSZWNlaXZlIGJ1ZmZlciBvdmVyZmxvdyBlcnJvclxcblwiLFxuIFx0XHRcdFx0ICAgIHRjNi1cdTAwM2VuZXRkZXYtXHUwMDNlbmFtZSk7XG4gXHRcdHJldHVybiAtRUFHQUlOO1xuQEAgLTgwNSwxMyArODE2LDM1IEBAIHN0YXRpYyB2b2lkIG9hX3RjNl9zdWJtaXRfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdHRjNi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpXG4rLyogT24gb3ZlcnN1YnNjcmliZWQgdHJhZmZpYyBjb25kaXRpb24sIHBhcnRpY3VsYXJseSB3aXRoIG92ZXJ3aGVsbWluZyByeFxuKyAqIGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIHRoZXJlIGNvdWxkIGJlIGRhdGEgY2h1bmsgbG9zcy4gSWYgdGFpbCArIGxlbmd0aFxuKyAqIGdvZXMgYmV5b25kIGVuZCBwb2ludGVyLCB0aGF0IGlzIGFuIGluZGljYXRpb24gdGhhdCB0aGUgZGF0YSBjaHVuayB3aXRoXG4rICogZW5kX3ZhbGlkIGJpdCBpcyBsb3N0LiBUaW1lIHRvIGxvb2sgZm9yIGEgZGF0YSBjaHVuayB3aXRoIHN0YXJ0X3ZhbGlkIGJpdC5cbisgKlxuKyAqIElmIHJ4X3NrYiBpcyBOVUxMLCBpdCBpcyB0aW1lIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGRhdGEgY2h1bmsgd2l0aFxuKyAqIHN0YXJ0X2JpdC5cbisgKi9cbitzdGF0aWMgaW50IG9hX3RjNl91cGRhdGVfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHU4IGxlbmd0aClcbiB7XG4rXHRpZiAoIXRjNi1cdTAwM2VyeF9za2IgfHxcbitcdCAgICAodGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2V0YWlsICsgbGVuZ3RoKSBcdTAwM2UgdGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2VlbmQpIHtcbitcdFx0b2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpO1xuK1x0XHRyZXR1cm4gLUVBR0FJTjtcbitcdH1cbitcbiBcdG1lbWNweShza2JfcHV0KHRjNi1cdTAwM2VyeF9za2IsIGxlbmd0aCksIHBheWxvYWQsIGxlbmd0aCk7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyogT24gb3ZlcndoZWxtaW5nIHJ4IGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIGR1ZSB0byBkYXRhIGNodW5rIGxvc3MsIGl0IGlzXG4rICogcG9zc2libGUgdGhhdCB3ZSBnZXQgdHdvIGRhdGEgY2h1bmtzIHdpdGggc3RhcnRfdmFsaWQgYml0IHNldCwgd2l0aG91dFxuKyAqIGVuZF92YWxpZCBiaXQgc2V0IGluIGJldHdlZW4uIEluIHRoaXMgY2FzZSwgcnhfc2tiIHdvdWxkIGhhdmUgYSB2YWxpZFxuKyAqIGJ1ZmZlciBwb2ludGVyLiBXZSBzaG91bGQgcmVsZWFzZSwgaWYgYSB2YWxpZCBwb2ludGVyIGlzIGZvdW5kIGJlZm9yZVxuKyAqIGFsbG9jYXRpbmcgYSBuZXcgb25lLlxuKyAqL1xuIHN0YXRpYyBpbnQgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuK1x0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcbiBcdHRjNi1cdTAwM2VyeF9za2IgPSBuZXRkZXZfYWxsb2Nfc2tiX2lwX2FsaWduKHRjNi1cdTAwM2VuZXRkZXYsIHRjNi1cdTAwM2VuZXRkZXYtXHUwMDNlbXR1ICtcbiBcdFx0XHRcdFx0XHRFVEhfSExFTiArIEVUSF9GQ1NfTEVOKTtcbiBcdGlmICghdGM2LVx1MDAzZXJ4X3NrYikge1xuQEAgLTgzMSw3ICs4NjQsOSBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX2NvbXBsZXRlX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbitcdHJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuIFxuIFx0b2FfdGM2X3N1Ym1pdF9yeF9za2IodGM2KTtcbiBcbkBAIC04NDYsMjIgKzg4MSwyNCBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHUxNiBzaXplKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4tXG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4rc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4ge1xuLVx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbitcdGludCByZXQ7XG4gXG4tXHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xuK1x0cmV0ID0gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbitcdGlmICghcmV0KVxuK1x0XHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLFxuLVx0XHRcdFx0XHQgdTMyIGZvb3RlcilcbitzdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcbitcdFx0XHRcdFx0dTMyIGZvb3RlcilcbiB7XG4tXHRvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xuK1x0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCxcbitcdFx0XHRcdCAgICBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTtcbiB9XG4gXG4gc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG5AQCAtODc0LDYgKzkxMSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0Ym9vbCBzdGFydF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSUQsIGZvb3Rlcik7XG4gXHRib29sIGVuZF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX1ZBTElELCBmb290ZXIpO1xuIFx0dTE2IHNpemU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0LyogUmVzdGFydCB0aGUgbmV3IHJ4IGZyYW1lIGFmdGVyIHJlY2VpdmluZyByeCBidWZmZXIgb3ZlcmZsb3cgZXJyb3IgKi9cbiBcdGlmIChzdGFydF92YWxpZCBcdTAwMjZcdTAwMjYgdGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdylcbkBAIC05MDEsOCArOTM5LDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG4gXHQvKiBQcm9jZXNzIHRoZSBjaHVuayB3aXRoIG9ubHkgcnggZnJhbWUgZW5kICovXG4gXHRpZiAoZW5kX3ZhbGlkIFx1MDAyNlx1MDAyNiAhc3RhcnRfdmFsaWQpIHtcbiBcdFx0c2l6ZSA9IGVuZF9ieXRlX29mZnNldCArIDE7XG4tXHRcdG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuLVx0XHRyZXR1cm4gMDtcbitcdFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBwcmV2aW91cyByeCBmcmFtZSBlbmQgYW5kIG5leHQgcnggZnJhbWVcbkBAIC05MTUsNyArOTUyLDkgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG4gXHRcdCAqL1xuIFx0XHRpZiAodGM2LVx1MDAzZXJ4X3NrYikge1xuIFx0XHRcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgKyAxO1xuLVx0XHRcdG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuK1x0XHRcdHJldCA9IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuK1x0XHRcdGlmIChyZXQpXG4rXHRcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXHRcdHNpemUgPSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFIC0gc3RhcnRfYnl0ZV9vZmZzZXQ7XG4gXHRcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXG5AQCAtOTI0LDkgKzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBvbmdvaW5nIHJ4IGZyYW1lIGRhdGEgKi9cbi1cdG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpO1xuLVxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZSh0YzYsIGRhdGEsIGZvb3Rlcik7XG4gfVxuIFxuIHN0YXRpYyB1MzIgb2FfdGM2X2dldF9yeF9jaHVua19mb290ZXIoc3RydWN0IG9hX3RjNiAqdGM2LCB1MTYgZm9vdGVyX29mZnNldClcbkBAIC0xMjUwLDExICsxMjg3LDYgQEAgRVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3plcm9fYWxpZ25fcmVjZWl2ZV9mcmFtZV9lbmFibGUpO1xuICAqL1xuIG5ldGRldl90eF90IG9hX3RjNl9zdGFydF94bWl0KHN0cnVjdCBvYV90YzYgKnRjNiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4tXHRpZiAodGM2LVx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXHUwMDNld2FpdGluZ190eF9za2IpIHtcbi1cdFx0bmV0aWZfc3RvcF9xdWV1ZSh0YzYtXHUwMDNlbmV0ZGV2KTtcbi1cdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuLVx0fVxuLVxuIFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHR0YzYtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQrKztcbkBAIC0xMjYyLDYgKzEyOTQsMTEgQEAgbmV0ZGV2X3R4X3Qgb2FfdGM2X3N0YXJ0X3htaXQoc3RydWN0IG9hX3RjNiAqdGM2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4rXHRpZiAodGM2LVx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXHUwMDNld2FpdGluZ190eF9za2IpIHtcbitcdFx0bmV0aWZfc3RvcF9xdWV1ZSh0YzYtXHUwMDNlbmV0ZGV2KTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbitcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuK1x0fVxuIFx0dGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiID0gc2tiO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjI5OjMxLjAyMjM3NTA2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjQ1MjkyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPQV9UQzYgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY2AgZHJpdmVyLCB3aGljaCBpcyBmb3IgYW4gT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSBFdGhlcm5ldCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBxdWl0ZSBhIGZldyBrZXkgZnVuY3Rpb25zOiBgb2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2JgLCBgb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZWAsIGFsbCB0aGUgcHJvY2Vzc2luZyByb3V0aW5lcyBmb3IgdGhlIFJYIHBhdGggKGBvYV90YzZfcHJvY2Vzc19leHRlbmRlZF9zdGF0dXNgLCBgb2FfdGM2X3VwZGF0ZV9yeF9za2JgLCBgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYmAsIGBvYV90YzZfcHJjc19jb21wbGV0ZV9yeF9mcmFtZWAsIGBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydGAsIGBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmRgLCBgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZWAsIGFuZCBgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZGApIGFuZCB0aGUgVFggcGF0aCBpbiBgb2FfdGM2X3N0YXJ0X3htaXRgLlxuXG5Ud28ga2V5IGZpeGVzIGFyZSBpbW1lZGlhdGVseSBhcHBhcmVudDogYnVmZmVyIG92ZXJmbG93IHByb3RlY3Rpb24gaW4gYG9hX3RjNl91cGRhdGVfcnhfc2tiYCB2aWEgYm91bmRzIGNoZWNraW5nIChgdGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2V0YWlsICsgbGVuZ3RoIFx1MDAzZSB0YzYtXHUwMDNlcnhfc2tiLVx1MDAzZWVuZGApIGFuZCBhIHJhY2UgY29uZGl0aW9uIGZpeCBpbiBgb2FfdGM2X3N0YXJ0X3htaXRgIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSBjaGVjayBmb3IgYHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYmAuXG5cbk5vdywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSB0ZXN0YWJpbGl0eSBvZiB0aGlzIHBhdGNoLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgaXMgYW4gU1BJLWJhc2VkIEV0aGVybmV0IGRyaXZlci4gU1BJIGRldmljZXMgYXJlIGdlbmVyYWxseSBhIHBhaW4gdG8gZW11bGF0ZSwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VLiBVbmxlc3MgdGhlcmUncyBhIHNwZWNpZmljIFNQSSBjb250cm9sbGVyIGVtdWxhdGlvbiBvciBzb21lIHNvcnQgb2YgbW9jayBTUEkgZHJpdmVyLCBpdCdzIGdvaW5nIHRvIGJlIHRyaWNreS4gTGV0J3MgZGlnIGludG8gaWYgdGhlcmUncyBhbnkgU1BJIG1vY2sgb3IgYSB3YXkgdG8gZnV6eiB0aGlzIGRyaXZlci4gQWgsIHN5emthbGxlci4gSSBrbm93IGl0IGlzbid0IHNldCB1cCB0byBkaXJlY3RseSBmdXp6IFNQSSBkZXZpY2VzLiBVbmxlc3Mgd2UgY2FuIGluamVjdCBTUEkgdHJhZmZpYyBvciBoYXZlIGEgdmlydHVhbCBTUEkgZGV2aWNlLCB3ZSdyZSBwcm9iYWJseSBub3QgZ29pbmcgdG8gZ2V0IGZhciB0aGVyZS5cblxuSG93ZXZlciwgYG9hX3RjNl9zdGFydF94bWl0YCBpcyBhIHN0YW5kYXJkIGBuZXRkZXZfdHhfdGAgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIHRyYWZmaWMuIElmIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbmV0d29yayBpbnRlcmZhY2UsIHdlIGNhbiB0ZXN0IHRoYXQgcGFydC4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGNhbiB3ZSBpbnN0YW50aWF0ZSB0aGUgaW50ZXJmYWNlPyBMZXQncyBnbyBiYWNrIGFuZCBsb29rIGF0IHRoZSBzb3VyY2UgY29kZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNgIHRvIGZpZ3VyZSB0aGF0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjI5OjM4LjY4NjkwNjM0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY3NjQwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2FfdGM2X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTozOC44MTM2ODA1MzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjkxNDA2NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgT0EgVEM2IExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIG5ldyBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIGl0IHJldm9sdmVzIGFyb3VuZCBhIGxpYnJhcnkgb3IgZnJhbWV3b3JrIHJlbGF0ZWQgdG8gT0EgVEM2LiBNeSBpbml0aWFsIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzLCBzbyBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB3aG8ncyBjYWxsaW5nIGBvYV90YzZfaW5pdGAuIFRoYXQgZnVuY3Rpb24gaXMgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGhhcHBlbnMsIHNvIGZpbmRpbmcgdGhvc2UgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvbiBob3cgdGhpcyBsaWJyYXJ5IGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHVucGFjayBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb25hbGl0eSBpbiBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6Mjk6NDcuNTA1MDg5MTYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjI2NzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYV90YzZfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcXHRwcml2LVxcdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cXHRpZiAoIXByaXYtXFx1MDAzZXRjNikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTo0Ny42NTczNjE4ODdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Njc3NDc3MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYGxhbjg2NXhgIGFuZCBTUEkgRGV2aWNlIEluc3RhbnRpYXRpb24gaW4gYSBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBsYW44NjV4YCB0aGluZyBhbmQgaXQncyBiZWluZyBwcm9iZWQgYnkgYGxhbjg2NXhfcHJvYmVgLiBUaGUgY3JpdGljYWwgcGllY2Ugb2YgY29udGV4dCBoZXJlIGlzIHRoYXQgaXQncyBhbiBTUEkgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCwgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYSwgaXM6IENhbiBzeXprYWxsZXIgKmRpcmVjdGx5KiBpbnN0YW50aWF0ZSBTUEkgZGV2aWNlcz8gR2VuZXJhbGx5LCB0aGUgYW5zd2VyIGlzIG5vLiBVbmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgY2xldmVyIFNQSSBtb2NrIHNldHVwIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBpdCdzIHVzdWFsbHkgbm90IHRoYXQgc3RyYWlnaHRmb3J3YXJkLiBCdXQgdGhlbiBteSBicmFpbiBzdGFydHMgY2F0YWxvZ2luZyB0aGUgcG9zc2liaWxpdGllcy4uLiB3ZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGB2a21zYCBmb3IgRFJNLCBgdmhjaWAgZm9yIFVTQiwgYHVpbnB1dGAgZm9yIGlucHV0LiBUaGVzZSBhcmUgdmlydHVhbGl6ZWQgZGV2aWNlIGltcGxlbWVudGF0aW9ucyB0aGF0IGFsbG93IHN5emthbGxlciB0byB0ZXN0IHdpdGhvdXQgcmVxdWlyaW5nIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSG1tLCBpcyB0aGVyZSBhIHZpcnR1YWwgU1BJIGVxdWl2YWxlbnQ/XG5cbkxldCdzIHNlZS4uLiBXYWl0LCB5ZXMhIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBwb3NzaWJpbGl0aWVzIHRoYXQgc3ByaW5nIHRvIG1pbmQuIFRoZXJlJ3MgYHNwaS1tb2NrYCwgd2hpY2ggaXMgdGhlIG1vcmUgb2J2aW91cyBvbmUsIGJ1dCBhbHNvIHRoYXQgYHNwaS1sb29wYmFjay10ZXN0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb2YgdGhvc2UgY2FuIGFjdHVhbGx5IGJlIHVzZWQgdG8gcHJvYmUgdGhpcyBgbGFuODY1eGAgZHJpdmVyLiBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHJlYWxpc3RpYyB3YXksIGdpdmVuIG91ciBlbnZpcm9ubWVudCwgdG8gdHJpZ2dlciB0aGF0IGBsYW44NjV4X3Byb2JlYCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYxNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTo1Ny4zMzQ4NDE1OTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMzg3MTM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsYW44NjV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0xNzYyMD1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbFxcbk1BSU5UQUlORVJTOjE3NjIxOkY6XFx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuTUFJTlRBSU5FUlMtMTc2MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NjA6c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTYxLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT0xMD1sYW43NDN4LW9ianMgOj0gbGFuNzQzeF9tYWluLm8gbGFuNzQzeF9ldGh0b29sLm8gbGFuNzQzeF9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0xBTjg2NVgpICs9IGxhbjg2NXgvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19MQU45NjZYX1NXSVRDSCkgKz0gbGFuOTY2eC9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc9OD1jb25maWcgTEFOODY1WFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xNi1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc6MTc6XFx0ICBjYWxsZWQgbGFuODY1eC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MQU44NjVYKSArPSBsYW44NjV4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mzk6c3RydWN0IGxhbjg2NXhfcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBtdWx0aWNhc3Rfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDY6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIGNvbnN0IHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NTU6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYsIGNvbnN0IHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02MS1cXHQvKiBDb25maWd1cmUgTUFDIGFkZHJlc3MgbG93IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjYyOlxcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXFx1MDAzZXRjNiwgbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy03NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NzY6XFx0cmVzdG9yZV9yZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVxcdTAwM2V0YzYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBwcml2LVxcdTAwM2VuZXRkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW44NjV4X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04NS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo4OTpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHZvaWQgKmFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6OTE6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkyLVxcdHN0cnVjdCBzb2NrYWRkciAqYWRkcmVzcyA9IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMDI6XFx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcihwcml2LCBhZGRyZXNzLVxcdTAwM2VzYV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MTExPXN0YXRpYyB1MzIgZ2V0X2FkZHJlc3NfYml0KHU4IGFkZHJbRVRIX0FMRU5dLCB1MzIgYml0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTExNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTE2OnN0YXRpYyB1MzIgbGFuODY1eF9oYXNoKHU4IGFkZHJbRVRIX0FMRU5dKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTMyOnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzktXFx0bmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIHByaXYtXFx1MDAzZW5ldGRldikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNDA6XFx0XFx0dTMyIGJpdF9udW0gPSBsYW44NjV4X2hhc2goaGEtXFx1MDAzZWFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNjQ6c3RhdGljIGludCBsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE4NjpzdGF0aWMgaW50IGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMDU6c3RhdGljIHZvaWQgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA3OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGxhbjg2NXhfcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA4LVxcdFxcdFxcdFxcdFxcdFxcdCBtdWx0aWNhc3Rfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjE4LVxcdFxcdC8qIEVuYWJsaW5nIGFsbCBtdWx0aWNhc3QgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMTk6XFx0XFx0aWYgKGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjIwLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjYtXFx0XFx0LyogRW5hYmxpbmcgc3BlY2lmaWMgbXVsdGljYXN0IG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjI3OlxcdFxcdGlmIChsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihwcml2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI4LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzQtXFx0XFx0LyogRW5hYmxpbmcgbG9jYWwgbWFjIGFkZHJlc3Mgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMzU6XFx0XFx0aWYgKGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzYtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ0OnN0YXRpYyB2b2lkIGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0NjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjUxOnN0YXRpYyBuZXRkZXZfdHhfdCBsYW44NjV4X3NlbmRfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjU0OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTk6c3RhdGljIGludCBsYW44NjV4X2h3X2Rpc2FibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NDpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc3LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjgwLVxcdHBoeV9zdG9wKG5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjgxOlxcdHJldCA9IGxhbjg2NXhfaHdfZGlzYWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjgyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI5MDpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZW5hYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDU6c3RhdGljIGludCBsYW44NjV4X25ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwNzpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA4LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEwOlxcdHJldCA9IGxhbjg2NXhfaHdfZW5hYmxlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzIzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbGFuODY1eF9uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjQ6XFx0Lm5kb19vcGVuXFx0XFx0PSBsYW44NjV4X25ldF9vcGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjU6XFx0Lm5kb19zdG9wXFx0XFx0PSBsYW44NjV4X25ldF9jbG9zZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI2OlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gbGFuODY1eF9zZW5kX3BhY2tldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI3OlxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjg6XFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjktXFx0Lm5kb192YWxpZGF0ZV9hZGRyXFx0PSBldGhfdmFsaWRhdGVfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzMzpzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzNjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzctXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzk6XFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQwLVxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ni1cXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzQ3OlxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5MjpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM5OS1cXHRuZXRkZXYtXFx1MDAzZWlycSA9IHNwaS1cXHUwMDNlaXJxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MDA6XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDAxOlxcdG5ldGRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDE4OnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyMDpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyODpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbGFuODY1eF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDI5LVxcdHsgLm5hbWUgPSBcXFwibGFuODY1MFxcXCIgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDMzOk1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBsYW44NjV4X2lkcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDM1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxhbjg2NXhfZHRfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNi1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW44NjUwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbGFuODY1eF9kdF9pZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0MjpzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbGFuODY1eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0My1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDQtXFx0XFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ1OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDYtXFx0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0NzpcXHQucHJvYmUgPSBsYW44NjV4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDg6XFx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDk6XFx0LmlkX3RhYmxlID0gbGFuODY1eF9pZHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTE6bW9kdWxlX3NwaV9kcml2ZXIobGFuODY1eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTc3PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZiMV9maXh1cF9tYXNrc1sxMl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTg3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6ODg6c3RhdGljIGNvbnN0IHUzMiBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzWzE3XSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTg5LVxcdDB4MDBEMCwgMHgwMEUwLCAweDAwRTksIDB4MDBGNSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtOTUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo5NjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbMTddID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtOTctXFx0MHgzRjMxLCAweEMwMDAsIDB4OUU1MCwgMHgxQ0Y4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDQ6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3NbMl0gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDUtXFx0MHgwMDg0LCAweDAwOEEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwNy1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEwODpzdGF0aWMgY29uc3QgdTMyIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVnc1sxMl0gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDktXFx0MHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMTMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMTQ6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1sxMl0gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMTUtXFx0MHgwMTAzLCAweDA5MTAsIDB4MUQyNiwgMHgwMDJBLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMTktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMjA6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzWzNdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTIxLVxcdDB4MDBBRCwgMHgwMEFFLCAweDAwQUYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTEzND1zdGF0aWMgY29uc3QgdTE2IGxhbjg2N3hfcmV2ZDBfZml4dXBfdmFsdWVzWzhdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNDYtICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNDc6c3RhdGljIGludCBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgYWRkcilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE2Ni0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE2NzpzdGF0aWMgaW50IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTcyLVxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShmaXh1cF9yZWdzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNzM6XFx0XFx0cmV0ID0gbGFuODY1eF9yZXZiX2luZGlyZWN0X3JlYWQocGh5ZGV2LCBmaXh1cF9yZWdzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE3NC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTg3LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTg4OnN0YXRpYyBpbnQgbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4OS1cXHRcXHRcXHRcXHQgICBjb25zdCB1MTYgY2ZnX3JlZ3NbXSwgdTE2IGNmZ19wYXJhbXNbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjA0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjA1OnN0YXRpYyBpbnQgbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMDYtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMjAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjE6c3RhdGljIGludCBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyMi17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjM6XFx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzKV07XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjQ6XFx0dTE2IGNmZ19wYXJhbXNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyNS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjI3OlxcdHJldCA9IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjI4LVxcdFxcdFxcdFxcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzc6XFx0cmV0dXJuIGxhbjg2NXhfd3JpdGVfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVncyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIzOC1cXHRcXHRcXHRcXHRcXHRjZmdfcmVzdWx0cywgQVJSQVlfU0laRShjZmdfcmVzdWx0cykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNDE6c3RhdGljIGludCBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzOCBvZmZzZXRzW10pXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDIte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjQzOlxcdHUxNiBjZmdfcmVzdWx0c1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0NDpcXHR1MTYgY2ZnX3BhcmFtc1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0NS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjQ3OlxcdHJldCA9IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0OC1cXHRcXHRcXHRcXHQgICAgICBjZmdfcGFyYW1zLCBBUlJBWV9TSVpFKGNmZ19wYXJhbXMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjU4LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjU5OlxcdHJldHVybiBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVxcdFxcdFxcdFxcdFxcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI2Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI2MzpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjcwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjcxOlxcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzU6XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3Ni1cXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzc6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzg6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjc5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4Mi1cXHRcXHRpZiAoaSA9PSAxKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODM6XFx0XFx0XFx0cmV0ID0gbGFuODY1eF9zZXR1cF9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg0LVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4OTpcXHRyZXQgPSBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI5Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI5MzpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTQtXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk1OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyOTY6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI5Ny1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz0zMjk9c3RhdGljIGludCBsYW44Njd4X3JldmNfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzM3LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzM4OlxcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMzOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTMtXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzU0OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzW2ldLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzU1OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM1Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTktXFx0XFx0aWYgKGkgPT0gMSkge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzYwOlxcdFxcdFxcdHJldCA9IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2MS1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjY6XFx0cmV0ID0gbGFuODY1eF9zZXR1cF9zcWlfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzA6XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVncyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzcxLVxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM3MjpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzW2ldLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzczOlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1tpXSk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNzQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NDk0PXN0YXRpYyBpbnQgbGFuODZ4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTgtICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1MTk6c3RhdGljIGludCBsYW44NjV4X3BoeV9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTIwLVxcdFxcdFxcdFxcdHUxNiByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTUyNy1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUyODpzdGF0aWMgaW50IGxhbjg2NXhfcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTI5LVxcdFxcdFxcdFxcdCB1MTYgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz01Mzc9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU4NC1cXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg1OlxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODYtXFx0XFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1ODc6XFx0XFx0LnJlYWRfbW1kICAgICAgICAgICA9IGxhbjg2NXhfcGh5X3JlYWRfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg4OlxcdFxcdC53cml0ZV9tbWQgICAgICAgICAgPSBsYW44NjV4X3BoeV93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODktXFx0XFx0LmdldF9wbGNhX2NmZ1xcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTo1OS4zNTg3MTc1MjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgwNjUwNzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIFNQSSBFbXVsYXRpb24gaW4gU3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBoYW5kbGUgU1BJIGRldmljZXMgd2l0aGluIHRoZSBTeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBjdXJyZW50IGRyaXZlciB1bmRlciBzY3J1dGlueSBpcyBgbGFuODY1eGAsIGFuZCBpdCdzIGFuIFNQSSBkcml2ZXIsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBlbXVsYXRlIFNQSSBjb21tdW5pY2F0aW9uIGVmZmVjdGl2ZWx5IGZvciB0ZXN0aW5nLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlJ3MgYSBTeXprYWxsZXItbmF0aXZlIHdheSB0byBlbXVsYXRlIFNQSSBkZXZpY2VzLCBzaW1pbGFyIHRvIGhvdyBpdCBoYW5kbGVzIFVTQiB3aXRoIGB2aGNpYCBvciBQQ0kgdGhyb3VnaCBtb2NraW5nIG1lY2hhbmlzbXMuIEhtbSwgSSBkb24ndCByZWNhbGwgc2VlaW5nIGEgZ2VuZXJhbCwgcmVhZHktdG8tdXNlIFNQSSBlbXVsYXRvciBsaWtlIHRob3NlLlxuXG5Ib2xkIG9uLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5n4oCmIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL3NwaS9gIGRpcmVjdG9yeS4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBwZXJoYXBzIGEgbW9kdWxlIGxpa2UgYHNwaS1tb2NrYCBvciB0aGUgYHNwaS1sb29wYmFjay10ZXN0YCBtb2R1bGU/IFRoYXQgY291bGQgYmUgYSBjcnVjaWFsIGNvbXBvbmVudCBmb3IgbXkgZGVidWdnaW5nIGFuZCB0ZXN0aW5nIHN0cmF0ZWd5LiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHJlZnJlc2ggbXkgbWVtb3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQyNywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjAzLjczOTM3MDY0MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4NzEyNDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaV9tb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MDMuNzk3MjQ5MDcxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzUyODM5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byBzeXprYWxsZXIgYW5kIHNlZSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyBTUEkgbW9ja2luZyBpbmZyYXN0cnVjdHVyZS4gSSBrbm93IHN5emthbGxlciAqZ2VuZXJhbGx5KiBhdm9pZHMgZGlyZWN0IGZ1enppbmcgb2YgU1BJIGRldmljZXMgdW5sZXNzIHRoZXJlJ3MgYW4gaW5kaXJlY3QgZW50cnkgcG9pbnQuIEknbSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBTUEkgbW9ja3M/XG5cbioqQ2hlY2tpbmcgZm9yIEV4aXN0aW5nIFNQSSBNb2NrcyBhbmQgTGV2ZXJhZ2luZyBMaWJyYXJpZXMqKlxuXG5Ob3csIHNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgb2FfdGM2YCBsaWJyYXJ5LiBUaGF0J3MgaW50cmlndWluZy4gU2luY2UgaXQncyBhIGxpYnJhcnksIEkgd29uZGVyIGlmIGl0J3MgdXRpbGl6ZWQgYnkgb3RoZXIgZHJpdmVycyB3aXRoaW4gc3l6a2FsbGVyJ3MgcHVydmlldy4gSWYgc28sIHRoYXQgY291bGQgcHJvdmlkZSBhIHBhdGh3YXkgZm9yIGluZGlyZWN0IFNQSSBmdXp6aW5nIHRocm91Z2ggdGhvc2Ugb3RoZXIgZHJpdmVycy4gTmVlZCB0byBjaGVjayBpdHMgdXNhZ2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzYzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MDcuMTMyNTM1MTM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTA2NTYwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYV90YzZfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcXHRwcml2LVxcdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cXHRpZiAoIXByaXYtXFx1MDAzZXRjNikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDowNy4yMjc2MDYwOTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQwNDY1NTk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgTEFOODY1eCBDb2RlOiBBIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBvbmx5IHRvdWNoZXMgdGhlIGBsYW44NjV4YCBkcml2ZXIsIGFuZCB0aGF0J3MgYW4gU1BJIGRldmljZSwgcmlnaHQ/IFRoZSBpbmhlcmVudCBjaGFsbGVuZ2UgaXMgdGhhdCBTUEkgZGV2aWNlcyBhcmVuJ3QgdHlwaWNhbGx5IGluc3RhbnRpYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVubGVzcyB0aGVyZSdzIGEgdmVyeSBzcGVjaWZpYyBTUEkgY29udHJvbGxlciBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi4gU3l6a2FsbGVyLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24ndCB1c3VhbGx5IHNldCB1cCByYW5kb20gU1BJIGRldmljZXMgbGlrZSB0aGlzLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMsIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9kZXZfc3BpYD8gTm8sIEkgcmVtZW1iZXIgaXQgaGFzIHRoaW5ncyBmb3IgVVNCLCA4MDIxMSwgZXRjLiwgYnV0IG5vdCBhIGdlbmVyYWwgU1BJIGRldmljZSBpbnN0YW50aWF0aW9uLiBDYW4gd2UgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSBhdCBhbGw/IElmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvYmVkLCB0aGVuIGBvYV90YzZfaW5pdGAgd29uJ3QgYmUgY2FsbGVkLCBhbmQgYG9hX3RjNl9zdGFydF94bWl0YCB3b24ndCBiZSByZWdpc3RlcmVkLiBTbywgaXMgdGhlcmUgc29tZSBvdGhlciB3YXkgdG8gaW5zdGFudGlhdGUgdGhpcywgbGlrZSB0aHJvdWdoIG5ldGxpbmsgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vcGUsIGl0J3MgYW4gU1BJIGRyaXZlciwgc28gdGhhdCBhdmVudWUgaXMgY2xvc2VkLlxuXG5Ob3cgSSdtIHJlYWxseSBzdGFydGluZyB0byBxdWVzdGlvbiBpZiB0aGVyZSdzICphbnkqIGNoYW5jZSBvZiB0aGlzIGJlaW5nIHJlYWNoYWJsZS4gSWYgaXQncyBhbiBTUEkgZHJpdmVyLCB0aGUgZGVmYXVsdCBzeXprYWxsZXIgc2V0dXAgZ2VuZXJhbGx5IHdvbid0IGluc3RhbnRpYXRlIGl0IHVubGVzcyB0aGVyZSdzIGEgdmlydHVhbCBTUEkgYnVzIHRoYXQgc3l6a2FsbGVyIGNhbiBzb21laG93IHVzZS4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHN5emthbGxlciBmb3IgU1BJIHN1cHBvcnQuXG5cbkFoLCBzeXprYWxsZXIgZG9lcyBoYXZlIGBkZXZfc3BpZGV2YCwgd2hpY2ggbGV0cyB1c2VyLXNwYWNlIHRhbGsgdG8gU1BJIGRldmljZXMsIGJ1dCBpdCAqZG9lc24ndCogbGV0IHlvdSBpbnN0YW50aWF0ZSBrZXJuZWwgU1BJIGRyaXZlcnMuIEkgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwgaGVyZSwgd2FpdCBhIG1pbnV0ZSwgZGV2aWNlIHRyZWUgb3ZlcmxheXMhIE1heWJlIHRoYXQncyB0aGUgd2F5LiBTeXprYWxsZXIgY2FuIGxvYWQgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdG8gaW5zdGFudGlhdGUgZGV2aWNlcy4gQnV0IGRvZXMgc3l6a2FsbGVyIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBmb3IgU1BJIGRldmljZXM/IE5vLCBpdCBsb29rcyBsaWtlIHN5emthbGxlciBkb2Vzbid0IGRvIHRoYXQgZm9yIFNQSSBkZXZpY2VzIGluIGEgZ2VuZXJpYyB3YXkuXG5cbk9rYXksIEknbSBzdGFydGluZyB0byB0aGluayBJIG5lZWQgdG8gYmUgdmVyeSBjYXJlZnVsIGhlcmUuIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGp1c3QgYmVjYXVzZSBpdCdzIGFuIFNQSSBkZXZpY2UsIGlzIHRoYXQgKmNvcnJlY3QqP1xuXG5Ob3cgSSdtIGdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgYW5kIGl0IHNheXM6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBTaW5jZSB0aGlzIGlzIGFuIFNQSSBFdGhlcm5ldCBkcml2ZXIsIGFuZCB0aGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFNQSSBoYXJkd2FyZSBpbiB0aGUga2VybmVsIHRoYXQgSSdtIGF3YXJlIG9mIHRoYXQgd2lsbCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgU1BJIGRyaXZlcnMgKGxpa2UgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSBvciBgdmhjaWAgZm9yIFVTQiksIHRoZW4gaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFdhaXQsIGlzIHRoZXJlIGFuIFNQSSBtb2NrIGRyaXZlcj8gTGV0J3MgZG91YmxlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQ3MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoxNS42MzIyNjQwMDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTk1NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3BpL3NwaS1tZW0uYz0xMDk4PWludCBzcGlfbWVtX2RyaXZlcl9yZWdpc3Rlcl93aXRoX293bmVyKHN0cnVjdCBzcGlfbWVtX2RyaXZlciAqbWVtZHJ2LFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1lbS5jLTExMDQtXFxuZHJpdmVycy9zcGkvc3BpLW1lbS5jOjExMDU6XFx0cmV0dXJuIF9fc3BpX3JlZ2lzdGVyX2RyaXZlcihvd25lciwgXFx1MDAyNm1lbWRydi1cXHUwMDNlc3BpZHJ2KTtcXG5kcml2ZXJzL3NwaS9zcGktbWVtLmMtMTEwNi19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz00NjI9RVhQT1JUX1NZTUJPTF9HUEwoc3BpX2J1c190eXBlKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ2NC0vKipcXG5kcml2ZXJzL3NwaS9zcGkuYzo0NjU6ICogX19zcGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBTUEkgZHJpdmVyXFxuZHJpdmVycy9zcGkvc3BpLmMtNDY2LSAqIEBvd25lcjogb3duZXIgbW9kdWxlIG9mIHRoZSBkcml2ZXIgdG8gcmVnaXN0ZXJcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ3MS0gKi9cXG5kcml2ZXJzL3NwaS9zcGkuYzo0NzI6aW50IF9fc3BpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgbW9kdWxlICpvd25lciwgc3RydWN0IHNwaV9kcml2ZXIgKnNkcnYpXFxuZHJpdmVycy9zcGkvc3BpLmMtNDczLXtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTUxNC19XFxuZHJpdmVycy9zcGkvc3BpLmM6NTE1OkVYUE9SVF9TWU1CT0xfR1BMKF9fc3BpX3JlZ2lzdGVyX2RyaXZlcik7XFxuZHJpdmVycy9zcGkvc3BpLmMtNTE2LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpZGV2LmM9ODYxPXN0YXRpYyBpbnQgX19pbml0IHNwaWRldl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGlkZXYuYy04NzgtXFxuZHJpdmVycy9zcGkvc3BpZGV2LmM6ODc5OlxcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnNwaWRldl9zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL3NwaS9zcGlkZXYuYy04ODAtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MTUuNjg5ODY1Njk0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzA2MTU0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFZpcnR1YWwgU1BJIENvbnRyb2xsZXIgT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbmV3IHNldHVwLCBhbmQgSSdtIHdvbmRlcmluZyBpZiBJIGNhbiBnZXQgYXdheSB3aXRoIGEgdmlydHVhbCBTUEkgY29udHJvbGxlci4gTm8gcGh5c2ljYWwgaGFyZHdhcmUgbmVlZGVkLCBwdXJlbHkgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgYmVuZWZpdHMgYXJlIG9idmlvdXM6IGZsZXhpYmlsaXR5LCBwb3RlbnRpYWxseSBsb3dlciBjb3N0IGZvciBjZXJ0YWluIGFwcGxpY2F0aW9ucywgYW5kIG1heWJlIGV2ZW4gZWFzaWVyIGludGVncmF0aW9uIGR1cmluZyB0aGUgZGVzaWduIHBoYXNlLiBCdXQgaXMgdGhlcmUgZXZlbiBzdWNoIGEgdGhpbmcgYXMgYSAqZ29vZCogdmlydHVhbCBTUEkgY29udHJvbGxlciBvdXQgdGhlcmUsIG9uZSB0aGF0J3MgcmVsaWFibGUgZW5vdWdoIGZvciBzZXJpb3VzIHVzZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMg4oCTIHdoYXQgYXJlIHRoZSBvcHRpb25zLCB3aGF0IGFyZSB0aGVpciBsaW1pdGF0aW9ucywgYW5kIGNhbiB0aGV5IGhhbmRsZSB0aGUgdGhyb3VnaHB1dCBhbmQgdGltaW5nIGNvbnN0cmFpbnRzIEknbSBkZWFsaW5nIHdpdGg/IFRoaXMgY291bGQgYmUgYSBnYW1lLWNoYW5nZXIgaWYgaXQgcGFucyBvdXQuIEdvdHRhIGRvIHNvbWUgcmVzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDc5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoxOC43MjA0ODMxNDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNzUxMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaV9yZWdpc3Rlcl9jb250cm9sbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg3NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTEzNDg9c3RhdGljIGludCBhdG1lbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtMTQ1NS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6MTQ1NjpcXHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdHJsKTtcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtMTQ1Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM9MTA2MD1zdGF0aWMgaW50IGFpcm9oYV9zbmFuZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtMTEzMS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzoxMTMyOlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtMTEzMy19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNjAtXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNjE6XFx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTYyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM9MzU9c3RhdGljIGludCBhbHRlcmFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTEzLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYzoxMTQ6XFx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM9ODIxPWludCBhbWRfc3BpX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy04MzktXFx0LyogUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgd2l0aCBTUEkgZnJhbWV3b3JrICovXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjg0MDpcXHRlcnIgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTg0MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0zMjY9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTM2OC1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjM2OTpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKHNwaWZjLVxcdTAwM2VkZXYsIGN0cmwpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMzcwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jPTEwOTM9c3RhdGljIGludCBhbWxfc2ZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTExNzctXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzoxMTc4OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0xMTc5LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaXNnLmM9NzEyPXN0YXRpYyBpbnQgYW1sX3NwaXNnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTc5OS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jOjgwMDpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTgwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYz00NTc9c3RhdGljIGludCBhcHBsZV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hcHBsZS5jLTUwNC1cXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYzo1MDU6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYy01MDYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9zcGkvc3BpLWFwcGxlLmM6NTA3OlxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCwgXFxcImRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYy01MDgtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM9MTY1PXN0YXRpYyBpbnQgYXI5MzR4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFyOTM0eC5jLTIwNy1cXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM6MjA4OlxcdHJldHVybiBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmMtMjA5LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hcm1hZGEtMzcwMC5jPTgxMz1zdGF0aWMgaW50IGEzNzAwX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc0LVxcbmRyaXZlcnMvc3BpL3NwaS1hcm1hZGEtMzcwMC5jOjg3NTpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM9OTU3PXN0YXRpYyBpbnQgYXNwZWVkX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0xMDIzLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MTAyNDpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTEwMjUtXFx0aWYgKHJldClcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjEwMjY6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwic3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTEwMjctXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jPTQ3Nj1zdGF0aWMgaW50IGF0OTFfdXNhcnRfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jLTU1NC1cXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jOjU1NTpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jLTU1Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jPTU0Nj1zdGF0aWMgaW50IGF0Y3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTU4OS1cXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmM6NTkwOlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTU5MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM9MTI4Nz1zdGF0aWMgaW50IGF0bWVsX3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMTMwMy1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzoxMzA0OlxcdC8qIFNldHVwKCkgaXMgY2FsbGVkIGR1cmluZyBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihha2FcXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0xMzA1LVxcdCAqIHNwaV9yZWdpc3Rlcl9tYXN0ZXIpIGJ1dCBhZnRlciBhbGwgbWVtYm1lcnMgb2YgdGhlIGNzX2dwaW9kXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0xNTUwPXN0YXRpYyBpbnQgYXRtZWxfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0xNjY4LVxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jOjE2Njk6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMTY3MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmM9MTEwND1zdGF0aWMgaW50IHNwaV9lbmdpbmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGktc3BpLWVuZ2luZS5jLTEyMzktXFxuZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmM6MTI0MDpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktYXhpLXNwaS1lbmdpbmUuYy0xMjQxLX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYz03NTI9c3RhdGljIGludCBheF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy04NDYtXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjg0NzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtODQ4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6ODQ5OlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInNwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTg1MC1cXHRcXHRnb3RvIGVycl9kaXNhYmxlX3JwbTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTE0ODI9aW50IGJjbV9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xNjU5LVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjE2NjA6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtMTY2MS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzUuYz0xMzQ5PXN0YXRpYyBpbnQgYmNtMjgzNV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1LmMtMTQwNi1cXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNS5jOjE0MDc6XFx0ZXJyID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzUuYy0xNDA4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmM9NDc0PXN0YXRpYyBpbnQgYmNtMjgzNWF1eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmMtNTQzLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmM6NTQ0OlxcdGVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmMtNTQ1LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM9NzQyPXN0YXRpYyBpbnQgYmNtNjN4eF9oc3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy04NTctXFx0LyogcmVnaXN0ZXIgYW5kIHdlIGFyZSBkb25lICovXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo4NTg6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy04NTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM9NDkxPXN0YXRpYyBpbnQgYmNtNjN4eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtNTk5LVxcdC8qIHJlZ2lzdGVyIGFuZCB3ZSBhcmUgZG9uZSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM6NjAwOlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtNjAxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYz00MzI9c3RhdGljIGludCBiY21iY2FfaHNzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYy01NDAtXFx0LyogcmVnaXN0ZXIgYW5kIHdlIGFyZSBkb25lICovXFxuZHJpdmVycy9zcGkvc3BpLWJjbWJjYS1oc3NwaS5jOjU0MTpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtYmNhLWhzc3BpLmMtNTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYml0YmFuZy5jPTQyND1pbnQgc3BpX2JpdGJhbmdfc3RhcnQoc3RydWN0IHNwaV9iaXRiYW5nICpiaXRiYW5nKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYy00MzUtXFx0ICovXFxuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYzo0MzY6XFx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1iaXRiYW5nLmMtNDM3LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xNzgxPXN0YXRpYyBpbnQgY3FzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xOTc0LVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxOTc1OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xOTc2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYz0xMTc0PXN0YXRpYyBpbnQgY2Ruc194c3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtMTI4Ny1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6MTI4ODpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTEyODktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYz02MzY9c3RhdGljIGludCBjZG5zX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYy03NDItXFx0fVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmM6NzQzOlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmMtNzQ0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jOjc0NTpcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJzcGlfcmVnaXN0ZXJfY29udHJvbGxlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmMtNzQ2LVxcdFxcdGdvdG8gZXJyX2Rpc2FibGVfcnBtO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhdml1bS1vY3Rlb24uYz0xOT1zdGF0aWMgaW50IG9jdGVvbl9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tb2N0ZW9uLmMtNTQtXFxuZHJpdmVycy9zcGkvc3BpLWNhdml1bS1vY3Rlb24uYzo1NTpcXHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jLTU2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYz0xOT1zdGF0aWMgaW50IHRodW5kZXJ4X3NwaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYy02OC1cXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmM6Njk6XFx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYy03MC19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYz0xNDE9c3RhdGljIGludCBjaDM0MV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwMi1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYzoyMDM6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2xwczcxMXguYz05MT1zdGF0aWMgaW50IHNwaV9jbHBzNzExeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNscHM3MTF4LmMtMTM3LVxcbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jOjEzODpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktY2xwczcxMXguYy0xMzktfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYz0zMzg9c3RhdGljIGludCBtY2Zxc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jLTQwNi1cXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jOjQwNzpcXHRzdGF0dXMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jLTQwOC1cXHRpZiAoc3RhdHVzKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jPTMxMz1zdGF0aWMgaW50IGNzNDJsNDNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQxMC1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQxMTpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKHByaXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM9NjgwPXN0YXRpYyBpbnQgZGxuMl9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmMtNzU4LVxcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM6NzU5OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmMtNzYwLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZHctY29yZS5jPTkyMz1pbnQgZHdfc3BpX2FkZF9jb250cm9sbGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGR3X3NwaSAqZHdzKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWR3LWNvcmUuYy0xMDAzLVxcbmRyaXZlcnMvc3BpL3NwaS1kdy1jb3JlLmM6MTAwNDpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZHctY29yZS5jLTEwMDUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jPTYyMz1zdGF0aWMgaW50IGVwOTN4eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYy02OTItXFxuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jOjY5MzpcXHRlcnJvciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYy02OTQtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZmFsY29uLmM9MzkxPXN0YXRpYyBpbnQgZmFsY29uX3NmbGFzaF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWZhbGNvbi5jLTQwNy1cXG5kcml2ZXJzL3NwaS9zcGktZmFsY29uLmM6NDA4OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1mYWxjb24uYy00MDktfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWZzaS5jPTUzMT1zdGF0aWMgaW50IGZzaV9zcGlfcHJvYmUoc3RydWN0IGZzaV9kZXZpY2UgKmZzaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2kuYy01NzEtXFxuZHJpdmVycy9zcGkvc3BpLWZzaS5jOjU3MjpcXHRcXHRyYyA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZnNpLmMtNTczLVxcdFxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZHNwaS5jPTE1Mjg9c3RhdGljIGludCBkc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYy0xNjgwLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZHNwaS5jOjE2ODE6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1kc3BpLmMtMTY4Mi1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZXNwaS5jPTY2Mz1zdGF0aWMgaW50IGZzbF9lc3BpX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlc291cmNlICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZnNsLWVzcGkuYy03MTctXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1lc3BpLmM6NzE4OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZXNwaS5jLTcxOS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYz04OTI9c3RhdGljIGludCBmc2xfbHBzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDAzLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYzoxMDA0OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGNvbnRyb2xsZXIpO1xcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDA1LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jOjEwMDY6XFx0XFx0ZGV2X2Vycl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCByZXQsIFxcXCJzcGlfcmVnaXN0ZXJfY29udHJvbGxlciBlcnJvclxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jLTEwMDctXFx0XFx0Z290byBmcmVlX2RtYTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtcXNwaS5jPTg5ND1zdGF0aWMgaW50IGZzbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05ODgtXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1xc3BpLmM6OTg5OlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05OTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmM9NTI4PXN0YXRpYyBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmZzbF9zcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYy02MTYtXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYzo2MTc6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYy02MTgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM9MTA0Mj1zdGF0aWMgaW50IHNwaV9nZW5pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmMtMTE0OS1cXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM6MTE1MDpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIHNwaSk7XFxuZHJpdmVycy9zcGkvc3BpLWdlbmktcWNvbS5jLTExNTEtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYz0zNDA9c3RhdGljIGludCBzcGlfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYy00MTMtXFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYzo0MTQ6XFx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYy00MTUtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWd4cC5jPTI1MD1zdGF0aWMgaW50IGd4cF9zcGlmaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWd4cC5jLTI4Ny1cXG5kcml2ZXJzL3NwaS9zcGktZ3hwLmM6Mjg4OlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZ3hwLmMtMjg5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYz00NjE9c3RhdGljIGludCBoaXNpX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWhpc2kta3VucGVuZy5jLTUyMy1cXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1rdW5wZW5nLmM6NTI0OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYy01MjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLXNmYy12M3h4LmM9NDMxPXN0YXRpYyBpbnQgaGlzaV9zZmNfdjN4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWhpc2ktc2ZjLXYzeHguYy00OTctXFxuZHJpdmVycy9zcGkvc3BpLWhpc2ktc2ZjLXYzeHguYzo0OTg6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLXNmYy12M3h4LmMtNDk5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW1nLXNwZmkuYz01MjU9c3RhdGljIGludCBpbWdfc3BmaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWltZy1zcGZpLmMtNjQxLVxcbmRyaXZlcnMvc3BpL3NwaS1pbWctc3BmaS5jOjY0MjpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktaW1nLXNwZmkuYy02NDMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbXguYz0yMjE4PXN0YXRpYyBpbnQgc3BpX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWlteC5jLTIzNTgtXFxuZHJpdmVycy9zcGkvc3BpLWlteC5jOjIzNTk6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY29udHJvbGxlcik7XFxuZHJpdmVycy9zcGkvc3BpLWlteC5jLTIzNjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYz0zODM9c3RhdGljIGludCBzcGlfaW5nZW5pY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYy00NTQtXFxuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYzo0NTU6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLmMtNDU2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYz0xNDg5PWludCBpbnRlbF9zcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNTEyLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE1MTM6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE1MTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jPTE0MT1zdGF0aWMgaW50IGpjb3JlX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWpjb3JlLmMtMjAxLVxcdC8qIFJlZ2lzdGVyIG91ciBzcGkgY29udHJvbGxlciAqL1xcbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jOjIwMjpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktamNvcmUuYy0yMDMtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM9MzM4PXN0YXRpYyBpbnQga3NwaTJfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eGRldixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTM5Mi1cXHRob3N0LVxcdTAwM2V0cmFuc2Zlcl9vbmUgPSBrc3BpMl90cmFuc2Zlcl9vbmU7XFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzkzOlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxhbnRpcS1zc2MuYz05MDQ9c3RhdGljIGludCBsYW50aXFfc3NjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbGFudGlxLXNzYy5jLTk5MC1cXG5kcml2ZXJzL3NwaS9zcGktbGFudGlxLXNzYy5jOjk5MTpcXHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbGFudGlxLXNzYy5jLTk5Mi1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jPTIxOD1zdGF0aWMgaW50IGxqY2Ffc3BpX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphdXhkZXYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0Mi1cXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jOjI0MzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb25nc29uLWNvcmUuYz0xOTY9aW50IGxvb25nc29uX3NwaV9pbml0X2NvbnRyb2xsZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jLTIyNy1cXG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jOjIyODpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGNvbnRyb2xsZXIpO1xcbmRyaXZlcnMvc3BpL3NwaS1sb29uZ3Nvbi1jb3JlLmMtMjI5LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1scDg4NDEtcnRjLmM9MTgyPXNwaV9scDg4NDFfcnRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxMi1cXHQvKiByZWdpc3RlciB3aXRoIHRoZSBTUEkgZnJhbWV3b3JrICovXFxuZHJpdmVycy9zcGkvc3BpLWxwODg0MS1ydGMuYzoyMTM6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYz05Nzg9c3RhdGljIGludCBtZXNvbl9zcGljY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWNjLmMtMTA3NC1cXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYzoxMDc1OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jLTEwNzYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmM9Mjg1PXN0YXRpYyBpbnQgbWVzb25fc3BpZmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGlmYy5jLTMzMC1cXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpZmMuYzozMzE6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzcGlmYy1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpZmMuYy0zMzItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXFzcGkuYz03MTk9c3RhdGljIGludCBtY2hwX2NvcmVxc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jLTc5Mi1cXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jOjc5MzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jLTc5NC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk1LVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCxcXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jOjc5NjpcXHRcXHRcXHRcXHQgICAgIFxcXCJzcGlfcmVnaXN0ZXJfY29udHJvbGxlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk3LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXNwaS5jPTI4Nz1zdGF0aWMgaW50IG1jaHBfY29yZXNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXNwaS5jLTM4Ni1cXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtc3BpLmM6Mzg3OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYy0zODgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM9NDU4PXN0YXRpYyBpbnQgbXBjNTEyeF9wc2Nfc3BpX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBjNTEyeC1wc2MuYy01MTMtXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM6NTE0OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmMtNTE1LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jPTI5ND1zdGF0aWMgaW50IG1wYzUyeHhfcHNjX3NwaV9vZl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmMtMzQzLVxcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jOjM0NDpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jLTM0NS19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBjNTJ4eC5jPTM4Nz1zdGF0aWMgaW50IG1wYzUyeHhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYy00OTItXFx0ZGV2X2RiZyhcXHUwMDI2b3AtXFx1MDAzZWRldiwgXFxcInJlZ2lzdGVyaW5nIHNwaV9jb250cm9sbGVyIHN0cnVjdFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYzo0OTM6XFx0cmMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbXBjNTJ4eC5jLTQ5NC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jPTUyNz1zdGF0aWMgaW50IG1wZnNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jLTU3Ni1cXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jOjU3NzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jLTU3OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXQ2NXh4LmM9MTE3NT1zdGF0aWMgaW50IG10a19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI3LVxcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYzoxMzI4OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYz0zMTY9c3RhdGljIGludCBtdDc2MjFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXQ3NjIxLmMtMzY5LVxcbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYzozNzA6XFx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLW10NzYyMS5jLTM3MS19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jPTgxMD1zdGF0aWMgaW50IG10a19ub3JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmMtOTE1LVxcbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmM6OTE2OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmMtOTE3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmM9MTMzOD1zdGF0aWMgaW50IG10a19zbmFuZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2NC1cXHRjdGxyLVxcdTAwM2Vtb2RlX2JpdHMgPSBTUElfUlhfRFVBTCB8IFNQSV9SWF9RVUFEIHwgU1BJX1RYX0RVQUwgfCBTUElfVFhfUVVBRDtcXG5kcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYzoxNDY1OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jLTE0NjYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jOjE0Njc6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwic3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkLlxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2OC1cXHRcXHRnb3RvIGZyZWVfYnVmO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW11eC5jPTEyNj1zdGF0aWMgaW50IHNwaV9tdXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdXguYy0xNjQtXFxuZHJpdmVycy9zcGkvc3BpLW11eC5jOjE2NTpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdXguYy0xNjYtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYz03NTU9c3RhdGljIGludCBteGljX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MTktXFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYzo4MjA6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MjEtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvc3BpL3NwaS1teGljLmM6ODIyOlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInNwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MjMtXFx0XFx0cG1fcnVudGltZV9kaXNhYmxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW14cy5jPTUyOD1zdGF0aWMgaW50IG14c19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1teHMuYy02MjAtXFxuZHJpdmVycy9zcGkvc3BpLW14cy5jOjYyMTpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbXhzLmMtNjIyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLWZpdS5jPTY4OT1zdGF0aWMgaW50IG5wY21fZml1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1maXUuYy03NDYtXFxuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmM6NzQ3OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmMtNzQ4LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYz0zNDA9c3RhdGljIGludCBucGNtX3BzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYy00MTItXFxuZHJpdmVycy9zcGkvc3BpLW5wY20tcHNwaS5jOjQxMzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1wc3BpLmMtNDE0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbnhwLWZzcGkuYz0xMjg2PXN0YXRpYyBpbnQgbnhwX2ZzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jLTEzOTAtXFxuZHJpdmVycy9zcGkvc3BpLW54cC1mc3BpLmM6MTM5MTpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktbnhwLWZzcGkuYy0xMzkyLX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ueHAteHNwaS5jPTEyMDg9c3RhdGljIGludCBueHBfeHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5MC1cXG5kcml2ZXJzL3NwaS9zcGktbnhwLXhzcGkuYzoxMjkxOlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5Mi19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktb21hcDItbWNzcGkuYz0xNDc0PXN0YXRpYyBpbnQgb21hcDJfbWNzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1vbWFwMi1tY3NwaS5jLTE1ODktXFxuZHJpdmVycy9zcGkvc3BpLW9tYXAyLW1jc3BpLmM6MTU5MDpcXHRzdGF0dXMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktb21hcDItbWNzcGkuYy0xNTkxLVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW9yaW9uLmM9NjQ0PXN0YXRpYyBpbnQgb3Jpb25fc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktb3Jpb24uYy03NzgtXFxuZHJpdmVycy9zcGkvc3BpLW9yaW9uLmM6Nzc5OlxcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jLTc4MC1cXHRpZiAoc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1wY2kxeHh4eC5jPTgwMD1zdGF0aWMgaW50IHBjaTF4eHh4X3NwaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1wY2kxeHh4eC5jLTkzMS1cXHRcXHRzcGlfY29udHJvbGxlcl9zZXRfZGV2ZGF0YShzcGlfaG9zdCwgc3BpX3N1Yl9wdHIpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoxOC43OTIyMzc4MjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTcwMjgzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgU2VhcmNoIGZvciBhIER1bW15IFNQSSBDb250cm9sbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgZm9yIGEgd2F5IHRvIHNpbXVsYXRlIGFuIFNQSSBjb250cm9sbGVyIGFuZCBkZXZpY2VzIHdpdGhpbiB0aGUga2VybmVsLCBzb21ldGhpbmcgdGhhdCBsZXRzIHVzZXItc3BhY2UgY3JlYXRlIHZpcnR1YWwgU1BJIGRldmljZXMuIEknbSBkcmF3aW5nIGEgYmxhbmsgb24gYW55dGhpbmcgbmFtZWQgYHNwaS1tb2NrYCBvciBgc3BpLWxvb3BiYWNrYCB0aGF0IGFjdHVhbGx5ICpyZWdpc3RlcnMqIGEgY29udHJvbGxlci4gSG1tLi4uIHdoYXQgYWJvdXQgdGhhdCBgc3BpLWxvb3BiYWNrLXRlc3QuY2AgZHJpdmVyPyBBaCwgbm8sIHRoYXQncyBqdXN0IGEgKmRldmljZSogZm9yIHRlc3RpbmcsIG5vdCBhIGNvbnRyb2xsZXIgaXRzZWxmLiBJdCB3b3VsZG4ndCBsZXQgdXNlci1zcGFjZSBkcml2ZSBpdCBsaWtlIGEgcmVhbCBjb250cm9sbGVyLlxuXG5MZXQncyBzZWUuLi4gSSdtIGZhbWlsaWFyIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgdGhhdCBpcyBmb3IgV2lGaSBzaW11bGF0aW9uLiBOb3QgdGhlIHJpZ2h0IHRyYWNrLiBBbmQgYGR1bW15X2hjZGA/IFVTQi4gRGVmaW5pdGVseSBub3Qgd2hhdCBJIG5lZWQuIFNvLi4uIEkgcmVhbGx5IG5lZWQgYSAqZHVtbXkqIFNQSSBjb250cm9sbGVyLiBEb2VzIG9uZSBldmVuIGV4aXN0PyBUaW1lIHRvIGRpZyBhcm91bmQuIEknbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYGRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmNgIGFuZCBzaW1pbGFyIGZpbGVzLiBIb3BlZnVsbHksIHRoZXJlIGlzIHNvbWV0aGluZyB0aGVyZSB0aGF0IEkndmUgbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMzMiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoyOS4wMDkyNjg3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUzMzEzMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHVtbXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY3NCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTQ4MD1zdGF0aWMgYm9vbCBhdG1lbF9xc3BpX3N1cHBvcnRzX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNDk4LVxcdGlmIChvcC1cXHUwMDNlYWRkci5uYnl0ZXMgPT0gMiBcXHUwMDI2XFx1MDAyNiBvcC1cXHUwMDNlY21kLmJ1c3dpZHRoICE9IG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjQ5OTpcXHQgICAgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyA9PSAwKVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01MDAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTUyND1zdGF0aWMgaW50IGF0bWVsX3FzcGlfc2V0X2NmZyhzdHJ1Y3QgYXRtZWxfcXNwaSAqYXEsXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTI3LVxcdHUzMiBpYXIsIGljciwgaWZyO1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1Mjg6XFx0dTMyIGR1bW15X2N5Y2xlcyA9IDA7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTUyOS1cXHRpbnQgbW9kZTtcXG4tLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01MzktXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU0MDpcXHRpZiAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcylcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTQxOlxcdFxcdGR1bW15X2N5Y2xlcyA9IG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiA4IC8gb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoO1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NDItXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTQ2LVxcdCAqIHRoZSBvcHRpb24gZmllbGQuIEZvciB0aGUgMTYtYml0IGFkZHJlc3NlcywgdGhlIHdvcmthcm91bmQgZGVwZW5kc1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NDc6XFx0ICogb2YgdGhlIG51bWJlciBvZiByZXF1ZXN0ZWQgZHVtbXkgYml0cy4gSWYgdGhlcmUgYXJlIDggb3IgbW9yZSBkdW1teVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NDg6XFx0ICogY3ljbGVzLCB0aGUgYWRkcmVzcyBpcyBzaGlmdGVkIGFuZCBzZW50IHdpdGggdGhlIGZpcnN0IGR1bW15IGJ5dGUuXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU0OS1cXHQgKiBPdGhlcndpc2Ugb3Bjb2RlIGlzIGRpc2FibGVkIGFuZCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgYWRkcmVzc1xcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU1MS1cXHQgKiB1c2UgdGhlIHNhbWUgYnVzd2lkdGgpLiBUaGUgbGltaXRhdGlvbiBpcyB3aGVuIHRoZSAxNi1iaXQgYWRkcmVzcyBpc1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NTI6XFx0ICogdXNlZCB3aXRob3V0IGVub3VnaCBkdW1teSBjeWNsZXMgYW5kIHRoZSBvcGNvZGUgaXMgdXNpbmcgYSBkaWZmZXJlbnRcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTUzLVxcdCAqIGJ1c3dpZHRoIHRoYW4gdGhlIGFkZHJlc3MuXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTYzLVxcdFxcdGNhc2UgMjpcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTY0OlxcdFxcdFxcdGlmIChkdW1teV9jeWNsZXMgXFx1MDAzYyA4IC8gb3AtXFx1MDAzZWFkZHIuYnVzd2lkdGgpIHtcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTY1LVxcdFxcdFxcdFxcdGlmciBcXHUwMDI2PSB+UVNQSV9JRlJfSU5TVEVOO1xcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU3MS1cXHRcXHRcXHRcXHRpYXIgPSAob3AtXFx1MDAzZWFkZHIudmFsIFxcdTAwM2NcXHUwMDNjIDgpIFxcdTAwMjYgMHhmZmZmZmY7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU3MjpcXHRcXHRcXHRcXHRkdW1teV9jeWNsZXMgLT0gOCAvIG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoO1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NzMtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU5MC1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTkxOlxcdC8qIFNldCBudW1iZXIgb2YgZHVtbXkgY3ljbGVzICovXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU5MjpcXHRpZiAoZHVtbXlfY3ljbGVzKVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1OTM6XFx0XFx0aWZyIHw9IFFTUElfSUZSX05CRFVNKGR1bW15X2N5Y2xlcyk7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYz02ODg9c3RhdGljIGludCBhdG1lbF9xc3BpX3NhbWE3ZzVfc2V0X2NmZyhzdHJ1Y3QgYXRtZWxfcXNwaSAqYXEsXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzAyLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDM6XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCBcXHUwMDI2XFx1MDAyNiBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKSB7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwNDpcXHRcXHRpZiAob3AtXFx1MDAzZWFkZHIuZHRyIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkdW1teS5kdHIgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWRhdGEuZHRyKVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDU6XFx0XFx0XFx0aWZyIHw9IFFTUElfSUZSX05CRFVNKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiA4IC9cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzA2OlxcdFxcdFxcdFxcdFxcdCAgICAgICgyICogb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoKSk7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTcwNy1cXHRcXHRlbHNlXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwODpcXHRcXHRcXHRpZnIgfD0gUVNQSV9JRlJfTkJEVU0ob3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAqIDggL1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDk6XFx0XFx0XFx0XFx0XFx0ICAgICAgb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoKTtcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy03MTctXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcxODpcXHRpZiAob3AtXFx1MDAzZWFkZHIuZHRyIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkdW1teS5kdHIgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWRhdGEuZHRyKSB7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTcxOS1cXHRcXHRpZnIgfD0gUVNQSV9JRlJfRERSRU47XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYz00ODY9c3RhdGljIGJvb2wgYWlyb2hhX3NuYW5kX2lzX3BhZ2Vfb3BzKGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICpvcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTQ5Ni1cXHRjYXNlIFNQSV9NRU1fREFUQV9JTjpcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo0OTc6XFx0XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiBCSVRTX1BFUl9CWVRFIC8gb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoIFxcdTAwM2UgMHhmKVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTQ5OC1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy01MTAtXFx0Y2FzZSBTUElfTUVNX0RBVEFfT1VUOlxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjUxMTpcXHRcXHRyZXR1cm4gIW9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWFkZHIuYnVzd2lkdGggPT0gMSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTUxMi1cXHRcXHQgICAgICAgKG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoID09IDQgfHwgb3AtXFx1MDAzZWRhdGEuYnVzd2lkdGggPT0gMSk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYz01MTg9c3RhdGljIGJvb2wgYWlyb2hhX3NuYW5kX3N1cHBvcnRzX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy01MzAtXFx0cmV0dXJuICghb3AtXFx1MDAzZWFkZHIubmJ5dGVzIHx8IG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoID09IDEpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6NTMxOlxcdCAgICAgICAoIW9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgfHwgb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoID09IDEpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTMyLVxcdCAgICAgICAoIW9wLVxcdTAwM2VkYXRhLm5ieXRlcyB8fCBvcC1cXHUwMDNlZGF0YS5idXN3aWR0aCA9PSAxKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jPTkzMj1zdGF0aWMgaW50IGFpcm9oYV9zbmFuZF9leGVjX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05MzUtXFx0c3RydWN0IGFpcm9oYV9zbmFuZF9jdHJsICphc19jdHJsO1xcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjkzNjpcXHRpbnQgb3BfbGVuLCBhZGRyX2xlbiwgZHVtbXlfbGVuO1xcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTkzNy1cXHR1OCBidWZbMjBdLCAqZGF0YTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk0My1cXHRhZGRyX2xlbiA9IG9wLVxcdTAwM2VhZGRyLm5ieXRlcztcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5NDQ6XFx0ZHVtbXlfbGVuID0gb3AtXFx1MDAzZWR1bW15Lm5ieXRlcztcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05NDUtXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTQ2OlxcdGlmIChvcF9sZW4gKyBkdW1teV9sZW4gKyBhZGRyX2xlbiBcXHUwMDNlIHNpemVvZihidWYpKVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk0Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk1My1cXHRcXHQqZGF0YSsrID0gb3AtXFx1MDAzZWFkZHIudmFsIFxcdTAwM2VcXHUwMDNlICg4ICogKGFkZHJfbGVuIC0gaSAtIDEpKTtcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5NTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGR1bW15X2xlbjsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk1NS1cXHRcXHQqZGF0YSsrID0gMHhmZjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk4MS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5ODI6XFx0LyogZHVtbXkgKi9cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05ODMtXFx0ZGF0YSArPSBhZGRyX2xlbjtcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5ODQ6XFx0aWYgKGR1bW15X2xlbikge1xcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4NTpcXHRcXHRlcnIgPSBhaXJvaGFfc25hbmRfd3JpdGVfZGF0YShhc19jdHJsLCBkYXRhLCBkdW1teV9sZW4sXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTg2OlxcdFxcdFxcdFxcdFxcdCAgICAgIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCk7XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTg3LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM9NTQxPXN0YXRpYyB2b2lkIGFtZF9zcGlfbWVtX2RhdGFfb3V0KHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTU4NS1cXHRcXHRmb3IgKGkgPSAwOyBsZWZ0X2RhdGEgXFx1MDAzZT0gODsgaSsrLCBsZWZ0X2RhdGEgLT0gOClcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NTg2OlxcdFxcdFxcdGFtZF9zcGlfd3JpdGVyZWc2NChhbWRfc3BpLCBiYXNlX2FkZHIgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICsgKGkgKiA4KSxcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTg3LVxcdFxcdFxcdFxcdFxcdCAgICpidWZfNjQrKyk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTkxLVxcdFxcdFxcdGFtZF9zcGlfd3JpdGVyZWc4KGFtZF9zcGksXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjU5MjpcXHRcXHRcXHRcXHRcXHQgIGJhc2VfYWRkciArIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKyBuYnl0ZXMgKyBpIC0gbGVmdF9kYXRhLFxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy01OTMtXFx0XFx0XFx0XFx0XFx0ICBidWZbaV0pO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTYwMz1zdGF0aWMgdm9pZCBhbWRfc3BpX2hpZGRtYV9yZWFkKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjIwLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYzo2MjE6XFx0LyogQ29uZmlndXJlIGR1bW15IGNsb2NrIGN5Y2xlcyBmb3IgZmFzdCByZWFkLCBkdWFsLCBxdWFkIEkvTyBjb21tYW5kcyAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjItXFx0aGlkX3JlZ3ZhbCA9IGFtZF9zcGlfcmVhZHJlZzMyKGFtZF9zcGksIEFNRF9TUElfSElEMl9SRUFEX0NOVFJMMik7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjYyMzpcXHQvKiBGYXN0IHJlYWQgZHVtbXkgY3ljbGUgKi9cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjI0LVxcdGhpZF9yZWd2YWwgXFx1MDAyNj0gfkdFTk1BU0soNCwgMCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyNS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI2OlxcdC8qIEZhc3QgcmVhZCBEdWFsIEkvTyBkdW1teSBjeWNsZSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjctXFx0aGlkX3JlZ3ZhbCBcXHUwMDI2PSB+R0VOTUFTSygxMiwgOCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyOC1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI5OlxcdC8qIEZhc3QgcmVhZCBRdWFkIEkvTyBkdW1teSBjeWNsZSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MzAtXFx0aGlkX3JlZ3ZhbCA9IChoaWRfcmVndmFsIFxcdTAwMjYgfkdFTk1BU0soMjAsIDE2KSkgfCBCSVQoMTcpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTY2MT1zdGF0aWMgdm9pZCBhbWRfc3BpX21lbV9kYXRhX2luKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTY5OS1cXHRcXHRhbWRfc3BpX3NldF9hZGRyKGFtZF9zcGksIG9wKTtcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NzAwOlxcdFxcdGFtZF9zcGlfc2V0X3R4X2NvdW50KGFtZF9zcGksIG9wLVxcdTAwM2VhZGRyLm5ieXRlcyArIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MDEtXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcwMjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb3AtXFx1MDAzZWR1bW15Lm5ieXRlczsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MDMtXFx0XFx0XFx0YW1kX3NwaV93cml0ZXJlZzgoYW1kX3NwaSwgKGJhc2VfYWRkciArIGkpLCAweGZmKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MTAtXFx0XFx0Zm9yIChpID0gMDsgbGVmdF9kYXRhIFxcdTAwM2U9IDg7IGkrKywgbGVmdF9kYXRhIC09IDgpXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcxMTpcXHRcXHRcXHQqYnVmXzY0KysgPSBhbWRfc3BpX3JlYWRyZWc2NChhbWRfc3BpLCBiYXNlX2FkZHIgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICtcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzEyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIChpICogOCkpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTcxNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVmdF9kYXRhOyBpKyspXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcxNjpcXHRcXHRcXHRidWZbaV0gPSBhbWRfc3BpX3JlYWRyZWc4KGFtZF9zcGksIGJhc2VfYWRkciArIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgK1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MTctXFx0XFx0XFx0XFx0XFx0XFx0ICBuYnl0ZXMgKyBpIC0gbGVmdF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYz03OTE9c3RhdGljIGludCBhbWRfc3BpX3NldHVwX2hpZGRtYShzdHJ1Y3QgYW1kX3NwaSAqYW1kX3NwaSwgc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTc5NS1cXHQvKiBBbGxvY2F0ZSBETUEgYnVmZmVyIHRvIHVzZSBmb3IgSElEIGJhc2ljIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMuIEZvciB3cml0ZVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYzo3OTY6XFx0ICogb3BlcmF0aW9ucywgdGhlIERNQSBidWZmZXIgc2hvdWxkIGluY2x1ZGUgdGhlIG9wY29kZSwgYWRkcmVzcyBieXRlcyBhbmQgZHVtbXlcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzk3LVxcdCAqIGJ5dGVzKGlmIGFueSkgaW4gYWRkaXRpb24gdG8gdGhlIGRhdGEgYnl0ZXMuIEFkZGl0aW9uYWxseSwgdGhlIGhhcmR3YXJlIHJlcXVpcmVzXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTkxLVxcdFNQSUZDX0ExX1VTRVJfRFVNTVlfRU5BQkxFIHwgXFxcXFxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6OTI6XFx0RklFTERfUFJFUChTUElGQ19BMV9VU0VSX0RVTU1ZX01PREUsIGlsb2cyKChvcCktXFx1MDAzZWR1bW15LmJ1c3dpZHRoKSkgfCBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzo5MzpcXHRGSUVMRF9QUkVQKFNQSUZDX0ExX1VTRVJfRFVNTVlfQ0xLX1NZQ0xFUywgKG9wKS1cXHUwMDNlZHVtbXkubmJ5dGVzIFxcdTAwM2NcXHUwMDNjIDMpKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtOTQtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jPTE4MD1zdGF0aWMgdm9pZCBhbWxvZ2ljX3NwaWZjX2ExX3NldF9hZGRyKHN0cnVjdCBhbWxvZ2ljX3NwaWZjX2ExICpzcGlmYywgdTMyIGFkZHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTE5Mi1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjE5MzpzdGF0aWMgdm9pZCBhbWxvZ2ljX3NwaWZjX2ExX3NldF9kdW1teShzdHJ1Y3QgYW1sb2dpY19zcGlmY19hMSAqc3BpZmMsXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzoxOTQ6XFx0XFx0XFx0XFx0ICAgICAgIHUzMiBkdW1teV9jZmcpXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0xOTUte1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0xOTgtXFx0dmFsIFxcdTAwMjY9IH4oU1BJRkNfQTFfVVNFUl9EVU1NWV9NT0RFIHwgU1BJRkNfQTFfVVNFUl9EVU1NWV9DTEtfU1lDTEVTKTtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjE5OTpcXHR2YWwgfD0gZHVtbXlfY2ZnO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMjAwLVxcdHdyaXRlbCh2YWwsIHNwaWZjLVxcdTAwM2ViYXNlICsgU1BJRkNfQTFfVVNFUl9DVFJMMl9SRUcpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0yNTM9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMjcxLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjcyOlxcdGlmIChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjczOlxcdFxcdGFtbG9naWNfc3BpZmNfYTFfc2V0X2R1bW15KHNwaWZjLCBTUElGQ19BMV9VU0VSX0RVTU1ZKG9wKSk7XFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0yNzQtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jPTMzNz1zdGF0aWMgYm9vbCBhbWxfc2ZjX2lzX3hpb19vcChjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM1MC1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM1MTpzdGF0aWMgaW50IGFtbF9zZmNfc2VuZF9jbWRfYWRkcl9kdW1teShzdHJ1Y3QgYW1sX3NmYyAqc2ZjLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNTIte1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmM6MzUzOlxcdHUzMiBkdW1teV9jeWNsZSwgY21kO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzU0LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2My1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM2NDpcXHRpZiAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcykge1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzY1LVxcdFxcdC8qICBEdW1teSBidXN3aWR0aCBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2Ni1cXHRcXHRpZiAoYW1sX3NmY19pc194aW9fb3Aob3ApKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmM6MzY3OlxcdFxcdFxcdGR1bW15X2N5Y2xlID0gb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAqIDggLyBvcC1cXHUwMDNlZGF0YS5idXN3aWR0aDtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2OC1cXHRcXHRlbHNlXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNjk6XFx0XFx0XFx0ZHVtbXlfY3ljbGUgPSBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICogODtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM3MDpcXHRcXHRjbWQgPSBDTURfRFVNTVkoc2ZjLVxcdTAwM2Vjc19zZWwsIGR1bW15X2N5Y2xlIC0gMSk7XFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNzEtXFx0XFx0cmV0dXJuIHJlZ21hcF93cml0ZShzZmMtXFx1MDAzZXJlZ21hcF9iYXNlLCBTRkNfQ01ELCBjbWQpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYz03OTI9c3RhdGljIGludCBhbWxfc2ZjX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MDMtXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzo4MDQ6XFx0ZGV2X2RiZyhzZmMtXFx1MDAzZWRldiwgXFxcImNtZDoweCUwMnggLSBhZGRyOiUwOGxsWEAlZDoldSAtIGR1bW15OiVkOiV1IC0gZGF0YTolZDoldVxcXCIsXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MDUtXFx0XFx0b3AtXFx1MDAzZWNtZC5vcGNvZGUsIG9wLVxcdTAwM2VhZGRyLnZhbCwgb3AtXFx1MDAzZWFkZHIuYnVzd2lkdGgsIG9wLVxcdTAwM2VhZGRyLm5ieXRlcyxcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjgwNjpcXHRcXHRvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGgsIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMsIG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoLCBvcC1cXHUwMDNlZGF0YS5uYnl0ZXMpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODA3LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MTEtXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzo4MTI6XFx0cmV0ID0gYW1sX3NmY19zZW5kX2NtZF9hZGRyX2R1bW15KHNmYywgb3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODEzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTM0LSNkZWZpbmUgICBDVFJMX0lPX0FERFJFU1NfNEJcXHRcXHRCSVQoMTMpXFx0LyogQVNUMjQwMCBTUEkgb25seSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzU6I2RlZmluZSAgIENUUkxfSU9fRFVNTVlfU0VUKGR1bW15KVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM2OlxcdCgoKCgoZHVtbXkpIFxcdTAwM2VcXHUwMDNlIDIpIFxcdTAwMjYgMHgxKSBcXHUwMDNjXFx1MDAzYyAxNCkgfCAoKChkdW1teSkgXFx1MDAyNiAweDMpIFxcdTAwM2NcXHUwMDNjIDYpKVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMzctI2RlZmluZSAgIENUUkxfRlJFUV9TRUxfU0hJRlRcXHRcXHQ4XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTIzOT1zdGF0aWMgc3NpemVfdCBhc3BlZWRfc3BpX3JlYWRfdXNlcihzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNDMtXFx0aW50IGlvX21vZGUgPSBhc3BlZWRfc3BpX2dldF9pb19tb2RlKG9wKTtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI0NDpcXHR1OCBkdW1teSA9IDB4RkY7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNDUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTI1My1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NDpcXHRpZiAob3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpIHtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAvIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aDsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MjU2OlxcdFxcdFxcdGFzcGVlZF9zcGlfd3JpdGVfdG9fYWhiKGNoaXAtXFx1MDAzZWFoYl9iYXNlLCBcXHUwMDI2ZHVtbXksXFx0c2l6ZW9mKGR1bW15KSk7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNTctXFx0fVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYz0yODc9c3RhdGljIGJvb2wgYXNwZWVkX3NwaV9zdXBwb3J0c19tZW1fb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMjk5LVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzAwOlxcdGlmIChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICE9IDApIHtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjMwMTpcXHRcXHRpZiAob3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoIFxcdTAwM2UgMSB8fCBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzIFxcdTAwM2UgNylcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTMwMi1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTMxMz1zdGF0aWMgaW50IGRvX2FzcGVlZF9zcGlfZXhlY19tZW1fb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMzQwLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzQxOlxcdGlmIChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzQyOlxcdFxcdGN0bF92YWwgfD0gQ1RSTF9JT19EVU1NWV9TRVQob3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAvIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCk7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0zNDMtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTY5Nj1zdGF0aWMgaW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJtYXBfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtNzA4LVxcdFxcdG9wLVxcdTAwM2VjbWQub3Bjb2RlLCBvcC1cXHUwMDNlY21kLmJ1c3dpZHRoLCBvcC1cXHUwMDNlYWRkci5idXN3aWR0aCxcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjcwOTpcXHRcXHRvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGgsIG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoLFxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6NzEwOlxcdFxcdG9wLVxcdTAwM2VhZGRyLm5ieXRlcywgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyk7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy03MTEtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTcyOS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMDpcXHRpZiAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcylcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMTpcXHRcXHRjdGxfdmFsIHw9IENUUkxfSU9fRFVNTVlfU0VUKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgLyBvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGgpO1xcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtNzMyLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jPTE4Nj1zdGF0aWMgdm9pZCBhdGNzcGlfc2V0X3RyYW5zX2N0bChzdHJ1Y3QgYXRjc3BpX2RldiAqc3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwNy1cXHRcXHRpZiAob3AtXFx1MDAzZWRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTikge1xcbmRyaXZlcnMvc3BpL3NwaS1hdGNzcGkyMDAuYzoyMDg6XFx0XFx0XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwOS1cXHRcXHRcXHRcXHR0YyB8PSBUUkFOU19NT0RFX0RNWV9SRUFEIHxcXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmM6MjEwOlxcdFxcdFxcdFxcdCAgICAgIFRSQU5TX0RVTU1ZX0NOVChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKTtcXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmMtMjExLVxcdFxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hdGg3OS5jPTEzNz1zdGF0aWMgaW50IGF0aDc5X2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRoNzkuYy0xNDctXFx0aWYgKG9wLVxcdTAwM2VjbWQub3Bjb2RlICE9IDB4MGIgfHwgb3AtXFx1MDAzZWRhdGEuZGlyICE9IFNQSV9NRU1fREFUQV9JTiB8fFxcbmRyaXZlcnMvc3BpL3NwaS1hdGg3OS5jOjE0ODpcXHQgICAgb3AtXFx1MDAzZWFkZHIubmJ5dGVzICE9IDMgfHwgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAhPSAxKVxcbmRyaXZlcnMvc3BpL3NwaS1hdGg3OS5jLTE0OS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0zMTg9c3RhdGljIGJvb2wgYXRtZWxfc3BpX2lzX3YyKHN0cnVjdCBhdG1lbF9zcGkgKmFzKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzIzLS8qXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzI0OiAqIFNlbmQgYSBkdW1teSBtZXNzYWdlLlxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTMyNS0gKlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzI4LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jOjMyOTpzdGF0aWMgdm9pZCBhdG1lbF9zcGlfc2VuZF9kdW1teShzdHJ1Y3QgYXRtZWxfc3BpICphcywgc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgaW50IGNoaXBfc2VsZWN0KVxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTMzMC17XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0zODAtICogcGFja2V0IGlzIHNlbnQsIG9uY2UgdGhlIENTIGhhcyBhbHJlYWR5IGJlZW4gYXNzZXJ0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzgxOiAqIGF2b2lkIHRoaXMgYnkgc2VuZGluZyBhIGZpcnN0IChkdW1teSkgbWVzc2FnZSBiZWZvcmUgdG9nZ2xpbmcgdGhlIENTIHN0YXRlLlxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTM4Mi0gKi9cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0zODM9c3RhdGljIHZvaWQgY3NfYWN0aXZhdGUoc3RydWN0IGF0bWVsX3NwaSAqYXMsIHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MTQtXFx0XFx0XFx0XFx0LypcXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzo0MTU6XFx0XFx0XFx0XFx0ICogTmVlZCB0byBkaXNhYmxlIHRoZSBHUElPIGJlZm9yZSBzZW5kaW5nIHRoZSBkdW1teVxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTQxNi1cXHRcXHRcXHRcXHQgKiBtZXNzYWdlIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBzZXQgYnkgdGhlIHNwaSBjb3JlLlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtNDE4LVxcdFxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLCAwKSwgMCk7XFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6NDE5OlxcdFxcdFxcdFxcdGF0bWVsX3NwaV9zZW5kX2R1bW15KGFzLCBzcGksIGNoaXBfc2VsZWN0KTtcXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MjAtXFx0XFx0XFx0XFx0YXMtXFx1MDAzZWxhc3RfcG9sYXJpdHkgPSBuZXdfcG9sYXJpdHk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM9Mzk5PXN0YXRpYyBpbnQgYXhfdHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy00MzQtXFx0XFx0ICAgKHRyYW5zZmVyLVxcdTAwM2V0eF9idWYgXFx1MDAyNlxcdTAwMjYgdHJhbnNmZXItXFx1MDAzZXJ4X2J1ZikpIHtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NDM1OlxcdFxcdC8qIFJYIG1vZGU6IGdlbmVyYXRlIGNsb2NrIGJ5IGZpbGxpbmcgVFggRklGTyB3aXRoIGR1bW15IGJ5dGVzXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTQzNi1cXHRcXHQgKiBGdWxsLWR1cGxleCBtb2RlOiBnZW5lcmF0ZSBjbG9jayBieSBmaWxsaW5nIFRYIEZJRk9cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYz01NTQ9c3RhdGljIGludCBheF9zcGlfbWVtX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTU3MC1cXHRcXHRfX2Z1bmNfXywgb3AtXFx1MDAzZWNtZC5vcGNvZGUsIG9wLVxcdTAwM2VjbWQuYnVzd2lkdGgsIG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoLFxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1NzE6XFx0XFx0b3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoLCBvcC1cXHUwMDNlZGF0YS5idXN3aWR0aCwgb3AtXFx1MDAzZWFkZHIudmFsLFxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01NzItXFx0XFx0b3AtXFx1MDAzZWRhdGEubmJ5dGVzKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01NzctXFx0ICAgIG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoICE9IDEpIHx8XFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjU3ODpcXHQgICAgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoICE9IDAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NTc5OlxcdCAgICBvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGggIT0gMSkgfHxcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNTgwLVxcdCAgICAob3AtXFx1MDAzZWRhdGEubmJ5dGVzIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoICE9IDEpKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNjE1LVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo2MTY6XFx0LyogQWRkIGR1bW15IGJ5dGVzIChmb3IgY2xvY2sgZ2VuZXJhdGlvbikgb3IgYWN0dWFsIGRhdGEgYnl0ZXMgdG8gVFhfRklGTyAqL1xcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02MTctXFx0aWYgKG9wLVxcdTAwM2VkYXRhLmRpciA9PSBTUElfTUVNX0RBVEFfSU4pIHtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NjE4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzOyBpKyspXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTYxOS1cXHRcXHRcXHRheF9zcGlfd3JpdGVfYih4c3BpLCBBWF9TUElfVFhGSUZPLCAweDAwKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02NjUtXFx0XFx0ICogU2luY2Ugd2Ugc2V0IFNSSSwgd2Ugb25seSBuZWVkIHRvIGRpc2NhcmQgdGhlIGFkZHJlc3MgYnl0ZXMgYW5kXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjY2NjpcXHRcXHQgKiBkdW1teSBieXRlcyBmcm9tIHRoZSBSWCBGSUZPLlxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02NjctXFx0XFx0ICovXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjY2ODpcXHRcXHRieXRlc190b19kaXNjYXJkX2Zyb21fcnggPSBvcC1cXHUwMDNlYWRkci5uYnl0ZXMgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzO1xcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02NjktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJ5dGVzX3RvX2Rpc2NhcmRfZnJvbV9yeDsgaSsrKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jPTY5OT1zdGF0aWMgaW50IGF4X3NwaV9tZW1fYWRqdXN0X29wX3NpemUoc3RydWN0IHNwaV9tZW0gKm1lbSwgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTcwOC1cXHQvKiBDYWxjdWxhdGUgcHJvdG9jb2wgb3ZlcmhlYWQgYnl0ZXMgYWNjb3JkaW5nIHRvIHRoZSByZWFsIG9wZXJhdGlvbiBlYWNoIHRpbWUuICovXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjcwOTpcXHRwcm90b2NvbF9vdmVyaGVhZF9ieXRlcyA9IG9wLVxcdTAwM2VjbWQubmJ5dGVzICsgb3AtXFx1MDAzZWFkZHIubmJ5dGVzICsgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcztcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNzEwLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM9NDE2PXN0YXRpYyBpbnQgYmNtX3FzcGlfYnNwaV9zZXRfZmxleF9tb2RlKHN0cnVjdCBiY21fcXNwaSAqcXNwaSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jLTQzMC1cXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYzo0MzE6XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpXFxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM6NDMyOlxcdFxcdGJwcCB8PSAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAqIDgpIC8gb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoO1xcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jLTQzMy1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTExNTA9c3RhdGljIGludCBiY21fcXNwaV9tc3BpX2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xMTY4LVxcdHRbMF0udHhfYnVmID0gY21kO1xcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjExNjk6XFx0dFswXS5sZW4gPSBvcC1cXHUwMDNlYWRkci5uYnl0ZXMgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICsgMTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xMTcwLVxcdHRbMF0uYml0c19wZXJfd29yZCA9IHNwaS1cXHUwMDNlYml0c19wZXJfd29yZDtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtMTEzLSAqIERlZmF1bHQgdHJhbnNmZXIgbW9kZSBpcyBhdXRvLiBJZiB0aGUgbXNnIGlzIHByZXBlbmRhYmxlLCB1c2UgdGhlIHByZXBlbmRcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjExNDogKiBtb2RlLiAgSWYgbm90LCBmYWxscyBiYWNrIHRvIHVzZSB0aGUgZHVtbXkgY3Mgd29ya2Fyb3VuZCBtb2RlIGJ1dCBsaW1pdCB0aGVcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTExNS0gKiBjbG9jayB0byAyNU1IeiB0byBtYWtlIHN1cmUgaXQgd29ya3MgaW4gYWxsIGJvYXJkIGRlc2lnbi5cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM9NTY3PXN0YXRpYyBpbnQgYmNtNjN4eF9oc3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MDMtXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MDQ6c3RhdGljIGludCBiY202M3h4X2hzc3BpX2RvX2R1bW15X2NzX3R4cngoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSxcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYwNS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc3BpX21lc3NhZ2UgKm1zZylcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjA4LVxcdGludCBzdGF0dXMgPSAtRUlOVkFMO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjA5OlxcdGludCBkdW1teV9jcztcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYxMC1cXHRib29sIGtlZXBfY3MgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjE3LVxcdCAqIGEuIEludmVydCB0aGUgdGFyZ2V0IGNoaXAgc2VsZWN0J3MgcG9sYXJpdHkgc28gaXQgd2lsbCBiZSBhY3RpdmUuXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MTg6XFx0ICogYi4gU2VsZWN0IGEgXFxcImR1bW15XFxcIiBjaGlwIHNlbGVjdCB0byB1c2UgYXMgdGhlIGhhcmR3YXJlIHRhcmdldC5cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYxOTpcXHQgKiBjLiBJbnZlcnQgdGhlIGR1bW15IGNoaXAgc2VsZWN0J3MgcG9sYXJpdHkgc28gaXQgd2lsbCBiZSBpbmFjdGl2ZVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjIwLVxcdCAqICAgIGR1cmluZyB0aGUgYWN0dWFsIHRyYW5zZmVycy5cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyMTpcXHQgKiBkLiBUZWxsIHRoZSBoYXJkd2FyZSB0byBzZW5kIHRvIHRoZSBkdW1teSBjaGlwIHNlbGVjdC4gVGhhbmtzIHRvXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MjItXFx0ICogICAgdGhlIG11bHRpcGxleGVkIG5hdHVyZSBvZiBTUEkgdGhlIGFjdHVhbCB0YXJnZXQgd2lsbCByZWNlaXZlXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYyNy1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyODpcXHRkdW1teV9jcyA9ICFzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCAwKTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyOTpcXHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIHRydWUpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjMwLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MzQtXFx0XFx0ICogYS4gTWVzc2FnZSBpcyBub3QgcHJlcGVuZGFibGUgYW5kIGluIGRlZmF1bHQgYXV0byB4ZmVyIG1vZGUuIFRoaXMgbWVhblxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjM1OlxcdFxcdCAqICAgIHdlIGZhbGxiYWNrIHRvIGR1bW15IGNzIG1vZGUgYXQgbWF4aW11bSAyNU1IeiBzYWZlIGNsb2NrIHJhdGUuXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MzY6XFx0XFx0ICogYi4gVXNlciBzZXQgdG8gdXNlIHRoZSBkdW1teSBjcyBtb2RlLlxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjM3LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02NDEtXFx0XFx0XFx0XFx0ZGV2X3dhcm5fb25jZShcXHUwMDI2YnMtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjY0MjpcXHRcXHRcXHRcXHRcXHRcXFwiRm9yY2UgdG8gZHVtbXkgY3MgbW9kZS4gUmVkdWNlIHRoZSBzcGVlZCB0byAlZEh6XFxcIixcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY0My1cXHRcXHRcXHRcXHRcXHR0LVxcdTAwM2VzcGVlZF9oeik7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY3My1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjY3NDpcXHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIGZhbHNlKTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY3NS1cXHRpZiAoc3RhdHVzIHx8ICFrZWVwX2NzKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYz02ODE9c3RhdGljIGludCBiY202M3h4X2hzc3BpX3RyYW5zZmVyX29uZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmhvc3QsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTcwMy1cXHRcXHR9IGVsc2VcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjcwNDpcXHRcXHRcXHRzdGF0dXMgPSBiY202M3h4X2hzc3BpX2RvX2R1bW15X2NzX3R4cngoc3BpLCBtc2cpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNzA1LVxcdH1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM9MjE3PXN0YXRpYyBpbnQgYmNtNjN4eF90eHJ4X2J1ZnMoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IHNwaV90cmFuc2ZlciAqZmlyc3QsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jLTI1Ni1cXHRcXHRcXHQgKlxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM6MjU3OlxcdFxcdFxcdCAqIFRoZXJlZm9yZSwgZm9yIHJlYWQtb25seSB0cmFuc2ZlcnMsIHdlIG5lZWQgdG8gd3JpdGUgc29tZSBkdW1teVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtMjU4LVxcdFxcdFxcdCAqIHZhbHVlIGludG8gdGhlIEZJRk8gdG8ga2VlcCB0aGUgYWNjdW11bGF0b3IgdHJhY2tpbmcgdGhlIGNvcnJlY3RcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0zOTg9c3RhdGljIHVuc2lnbmVkIGludCBjcXNwaV9jYWxjX3JkcmVnKGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICpvcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MDgtXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjQwOTpzdGF0aWMgdW5zaWduZWQgaW50IGNxc3BpX2NhbGNfZHVtbXkoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTAte1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTE6XFx0dW5zaWduZWQgaW50IGR1bW15X2NsaztcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDEyLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTM6XFx0aWYgKCFvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTQtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxNS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NDE2OlxcdGR1bW15X2NsayA9IG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiAoOCAvIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCk7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxNy1cXHRpZiAob3AtXFx1MDAzZWNtZC5kdHIpXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjQxODpcXHRcXHRkdW1teV9jbGsgLz0gMjtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDE5LVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MjA6XFx0cmV0dXJuIGR1bW15X2NsaztcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDIxLX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz01Mzg9c3RhdGljIGludCBjcXNwaV9jb21tYW5kX3JlYWQoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU0Ny1cXHR1bnNpZ25lZCBpbnQgcmVnO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1NDg6XFx0dW5zaWduZWQgaW50IGR1bW15X2NsaztcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTQ5LVxcdHNpemVfdCByZWFkX2xlbjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NzItXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjU3MzpcXHRkdW1teV9jbGsgPSBjcXNwaV9jYWxjX2R1bW15KG9wKTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTc0OlxcdGlmIChkdW1teV9jbGsgXFx1MDAzZSBDUVNQSV9EVU1NWV9DTEtTX01BWClcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTc1LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTc2LVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1Nzc6XFx0aWYgKGR1bW15X2NsaylcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTc4OlxcdFxcdHJlZyB8PSAoZHVtbXlfY2xrIFxcdTAwMjYgQ1FTUElfUkVHX0NNRENUUkxfRFVNTVlfTUFTSylcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTc5LVxcdFxcdCAgICAgXFx1MDAzY1xcdTAwM2MgQ1FTUElfUkVHX0NNRENUUkxfRFVNTVlfTFNCO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTY5MD1zdGF0aWMgaW50IGNxc3BpX3JlYWRfc2V0dXAoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTY5NC1cXHR2b2lkIF9faW9tZW0gKnJlZ19iYXNlID0gY3FzcGktXFx1MDAzZWlvYmFzZTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6Njk1OlxcdHVuc2lnbmVkIGludCBkdW1teV9jbGsgPSAwO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy02OTYtXFx0dW5zaWduZWQgaW50IHJlZztcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MTEtXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxMjpcXHQvKiBTZXR1cCBkdW1teSBjbG9jayBjeWNsZXMgKi9cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzEzOlxcdGR1bW15X2NsayA9IGNxc3BpX2NhbGNfZHVtbXkob3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MTQtXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxNTpcXHRpZiAoZHVtbXlfY2xrIFxcdTAwM2UgQ1FTUElfRFVNTVlfQ0xLU19NQVgpXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNy1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzE4OlxcdGlmIChkdW1teV9jbGspXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxOTpcXHRcXHRyZWcgfD0gKGR1bW15X2NsayBcXHUwMDI2IENRU1BJX1JFR19SRF9JTlNUUl9EVU1NWV9NQVNLKVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MjAtXFx0XFx0ICAgICAgIFxcdTAwM2NcXHUwMDNjIENRU1BJX1JFR19SRF9JTlNUUl9EVU1NWV9MU0I7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM9MTAxNz1zdGF0aWMgaW50IGNxc3BpX3dyaXRlX3NldHVwKHN0cnVjdCBjcXNwaV9mbGFzaF9wZGF0YSAqZl9wZGF0YSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xMDQ1LVxcdCAqIHBhc3NlZCBpbiB0aGUgUmVhZCBTUiBjb21tYW5kLiBBbHNvLCBzb21lIFNQSSBOT1IgZmxhc2hlcyBsaWtlIHRoZVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMDQ2OlxcdCAqIGN5cHJlc3MgU2VtcGVyIGZsYXNoIGV4cGVjdCBhIDQtYnl0ZSBkdW1teSBhZGRyZXNzIGluIHRoZSBSZWFkIFNSXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEwNDctXFx0ICogY29tbWFuZCBpbiBEVFIgbW9kZS5cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xMDc0PXN0YXRpYyBpbnQgY3FzcGlfaW5kaXJlY3Rfd3JpdGVfZXhlY3V0ZShzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTExMi1cXHQgKiBJZiBhIGhhemFyZCBleGlzdHMgYmV0d2VlbiB0aGUgQVBCIGFuZCBBSEIgaW50ZXJmYWNlcywgcGVyZm9ybSBhXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjExMTM6XFx0ICogZHVtbXkgcmVhZGJhY2sgZnJvbSB0aGUgY29udHJvbGxlciB0byBlbnN1cmUgc3luY2hyb25pemF0aW9uLlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xMTE0LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTEzMjU9c3RhdGljIHNzaXplX3QgY3FzcGlfd3JpdGUoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzMzgtXFx0LypcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6MTMzOTpcXHQgKiBTb21lIGZsYXNoZXMgbGlrZSB0aGUgQ3lwcmVzcyBTZW1wZXIgZmxhc2ggZXhwZWN0IGEgZHVtbXkgNC1ieXRlXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzNDAtXFx0ICogYWRkcmVzcyAoYWxsIDBzKSB3aXRoIHRoZSByZWFkIHN0YXR1cyByZWdpc3RlciBjb21tYW5kIGluIERUUiBtb2RlLlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMzQxOlxcdCAqIEJ1dCB0aGlzIGNvbnRyb2xsZXIgZG9lcyBub3Qgc3VwcG9ydCBzZW5kaW5nIGR1bW15IGFkZHJlc3MgYnl0ZXMgdG9cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTM0Mi1cXHQgKiB0aGUgZmxhc2ggd2hlbiBpdCBpcyBwb2xsaW5nIHRoZSB3cml0ZSBjb21wbGV0aW9uIHJlZ2lzdGVyIGluIERUUlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTE1MTY9c3RhdGljIGJvb2wgY3FzcGlfc3VwcG9ydHNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyMi1cXHQvKlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxNTIzOlxcdCAqIG9wLVxcdTAwM2VkdW1teS5kdHIgaXMgcmVxdWlyZWQgZm9yIGNvbnZlcnRpbmcgbmJ5dGVzIGludG8gbmN5Y2xlcy5cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyNC1cXHQgKiBBbHNvLCBkb24ndCBjaGVjayB0aGUgZHRyIGZpZWxkIG9mIHRoZSBvcCBwaGFzZSBoYXZpbmcgemVybyBuYnl0ZXMuXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyNy1cXHRcXHQgICAoIW9wLVxcdTAwM2VhZGRyLm5ieXRlcyB8fCBvcC1cXHUwMDNlYWRkci5kdHIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjE1Mjg6XFx0XFx0ICAgKCFvcC1cXHUwMDNlZHVtbXkubmJ5dGVzIHx8IG9wLVxcdTAwM2VkdW1teS5kdHIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTE1MjktXFx0XFx0ICAgKCFvcC1cXHUwMDNlZGF0YS5uYnl0ZXMgfHwgb3AtXFx1MDAzZWRhdGEuZHRyKTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUzMC1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6MTUzMTpcXHRhbGxfZmFsc2UgPSAhb3AtXFx1MDAzZWNtZC5kdHIgXFx1MDAyNlxcdTAwMjYgIW9wLVxcdTAwM2VhZGRyLmR0ciBcXHUwMDI2XFx1MDAyNiAhb3AtXFx1MDAzZWR1bW15LmR0ciBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xNTMyLVxcdFxcdCAgICAhb3AtXFx1MDAzZWRhdGEuZHRyO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4MS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6MTgyOiNkZWZpbmUgQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfMyhvcCwgZHVtbXlieXRlcykgKCBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4My1cXHRGSUVMRF9QUkVQKENETlNfWFNQSV9DTURfRFNFUV9SM19EQ05UX0gsIFxcXFxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy0xODUtXFx0RklFTERfUFJFUChDRE5TX1hTUElfQ01EX0RTRVFfUjNfTlVNX09GX0RVTU1ZLCBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NjpcXHRcXHQgIChvcCktXFx1MDAzZWR1bW15LmJ1c3dpZHRoICE9IDAgPyBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NzpcXHRcXHQgICgoKGR1bW15Ynl0ZXMpICogOCkgLyAob3ApLVxcdTAwM2VkdW1teS5idXN3aWR0aCkgOiBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4OC1cXHRcXHQgIDApKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jPTcxOT1zdGF0aWMgaW50IGNkbnNfeHNwaV9zZW5kX3N0aWdfY29tbWFuZChzdHJ1Y3QgY2Ruc194c3BpX2RldiAqY2Ruc194c3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTcyNS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3MjY6XFx0aW50IGR1bW15Ynl0ZXMgPSBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03MjctXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzQwLVxcdGNtZF9yZWdzWzJdID0gQ0ROU19YU1BJX0NNRF9GTERfUDFfSU5TVFJfQ01EXzIob3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NDE6XFx0aWYgKGR1bW15Ynl0ZXMgIT0gMCkge1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NDItXFx0XFx0Y21kX3JlZ3NbM10gPSBDRE5TX1hTUElfQ01EX0ZMRF9QMV9JTlNUUl9DTURfMyhvcCwgMSk7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjc0MzpcXHRcXHRkdW1teWJ5dGVzLS07XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTc0NC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTc1NS1cXHRcXHRjbWRfcmVnc1syXSA9IENETlNfWFNQSV9DTURfRkxEX0RTRVFfQ01EXzIob3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NTY6XFx0XFx0Y21kX3JlZ3NbM10gPSBDRE5TX1hTUElfQ01EX0ZMRF9EU0VRX0NNRF8zKG9wLCBkdW1teWJ5dGVzKTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzU3LVxcdFxcdGNtZF9yZWdzWzRdID0gQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfNChvcCxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM9NjI1PXN0YXRpYyBpbnQgZGF2aW5jaV9zcGlfYnVmcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYy02OTItXFx0XFx0XFx0ICogbWFueSBTRyBlbnRyaWVzIChcXHUwMDNlIDIwKSwgdXNlIHRoZSByeCBidWZmZXIgYXMgdGhlXFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYzo2OTM6XFx0XFx0XFx0ICogZHVtbXkgdHggYnVmZmVyIHNvIHRoYXQgZG1hIHJlbG9hZHMgYXJlIGRvbmUgYXQgdGhlXFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYy02OTQtXFx0XFx0XFx0ICogc2FtZSB0aW1lIGZvciByeCBhbmQgdHguXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3MC0vKipcXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jOjc3MTogKiBkdW1teV90aHJlYWRfZm4gLSBkdW1teSB0aHJlYWQgZnVuY3Rpb25cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3Mi0gKiBAaXJxOiBJUlEgbnVtYmVyIGZvciB0aGlzIFNQSSBNYXN0ZXJcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNzc3LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM6Nzc4OnN0YXRpYyBpcnFyZXR1cm5fdCBkdW1teV90aHJlYWRfZm4oczMyIGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3OS17XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jPTkyMj1zdGF0aWMgaW50IGRhdmluY2lfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTk3Ny1cXHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGRzcGktXFx1MDAzZWlycSwgZGF2aW5jaV9zcGlfaXJxLFxcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM6OTc4OlxcdFxcdFxcdFxcdGR1bW15X3RocmVhZF9mbiwgMCwgZGV2X25hbWUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiksIGRzcGkpO1xcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtOTc5LVxcdGlmIChyZXQpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjI5LjE1NDYwODczN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjcwOTQxODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBvYV90YzZfc3RhcnRfeG1pdGAqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0byBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgYG9hX3RjNl9zdGFydF94bWl0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzZWUgaWYgdGhlIGBzcGktbG9vcGJhY2stdGVzdC5jYCBkcml2ZXIgY291bGQgYmUgdXNlZCB0byBzb21laG93IHJlYWNoIGl0LCBidXQgdGhhdCBzZWVtcyBsaWtlIGEgZGVhZCBlbmQuIEknbSByZW1pbmRlZCBvZiBhIHNpdHVhdGlvbiB3aGVyZSBJIHNob3VsZCByZXR1cm4gYGZhbHNlYCBmb3IgYFdvcnRoRnV6emluZ2AgaWYgdGhlIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzOyBJJ2xsIGtlZXAgdGhpcyBpbiBtaW5kLlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgaXMgYWJvdXQgdmlydHVhbCBTUEkgY29udHJvbGxlcnMuIEkgY2hlY2tlZCBmb3IgYSB2aXJ0dWFsIGNvbnRyb2xsZXIuIEkgZGlzbWlzc2VkIGBzcGktbW9jay5jYCBhbmQgdGhlbiB0aG91Z2h0IGFib3V0IGBzcGktZ3Bpby5jYCwgdGhlIGJpdGJhbmdpbmcgU1BJIGNvbnRyb2xsZXIuIENhbiBzeXprYWxsZXIgaW5zdGFudGlhdGUgc29tZXRoaW5nIGxpa2UgYHNwaS1ncGlvYD8gSSBrbm93IHRoYXQgc3l6a2FsbGVyICpjYW4qIHVzZSBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyB2aXJ0dWFsLCBidXQgZm9yIEdQSU8gaXQgbmVlZHMgYGdwaW8tbW9ja3VwYCBvciBgZ3Bpby1zaW1gLiBJZiBJIGNvdWxkIHVzZSBgZ3Bpby1zaW1gLCB0aGVuIHRoZW9yZXRpY2FsbHkgSSBjb3VsZCBpbnN0YW50aWF0ZSBgc3BpLWdwaW9gIG9uIHRvcCBvZiBpdCB1c2luZyBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciBwbGF0Zm9ybSBkYXRhLiBCdXQgd2FpdCwgc3l6a2FsbGVyIGRvZXNuJ3QgY3VycmVudGx5IGhhbmRsZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBmb3IgYHNwaS1ncGlvYC4gVGhpcyBtZWFucyB0aGF0IGBzcGktZ3Bpb2AgaXMgbm90IGFuIG9wdGlvbi4gQWxzbywgd2hpbGUgc3l6a2FsbGVyIGhhcyBgc3l6X2dlbmV0bGlua2AgYW5kIG90aGVyIHN1cHBvcnQgZm9yIG90aGVyIHRoaW5ncywgdGhlcmUncyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSBTUEkgZGV2aWNlcy5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrLiBJIHJlYWxpemUgdGhhdCBgb2FfdGM2YCBpcyBhIGxpYnJhcnkgYW5kIGl0J3Mgb25seSB1c2VkIGJ5IHRoZSBgbGFuODY1eGAgZHJpdmVyLiBJJ20gd29uZGVyaW5nIGlmIGBsYW44NjV4YCBpcyBpbnN0YW50aWFibGUuIEkgc2VlIHRoYXQgaXQgaGFzIGEgZGV2aWNlIHRyZWUgbWF0Y2g6IGBtaWNyb2NoaXAsbGFuODY1MGAuIFdpdGhvdXQgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIGl0IHdvbid0IGJlIHByb2JlZC4gU3l6a2FsbGVyIGRvZXNuJ3Qgc3VwcG9ydCB0aG9zZSBvdmVybGF5cyB0byBsb2FkIFNQSSBkZXZpY2VzLlxuXG5TbywgdGhlIG5leHQgdGhpbmcgdGhhdCBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgaWYgYG9hX3RjNl9zdGFydF94bWl0YCBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgdGhyb3VnaCAqYW5vdGhlciogcGF0aC4gSXQncyBleHBvcnRlZCwgc28gaXQncyBhIHBvc3NpYmlsaXR5LiBIb3dldmVyLCBJIHJlYWxpemUgb25seSBgbGFuODY1eGAgY2FsbHMgYG9hX3RjNl9pbml0YC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBsYW44NjV4YCBpcyAqb25seSogdGhlIGNhbGxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0NDcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MzcuNDI1NTUyOTYzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ1NTY3ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9hX3RjNl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q9NDU0PVRoZSBpbmNsdWRlL2xpbnV4L29hX3RjNi5oIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1NS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q6NDU2Oi4uIGM6ZnVuY3Rpb246OiBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBcXFxcXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1Ny0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0zMzM9c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDk6XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXFx0aWYgKCFwcml2LVxcdTAwM2V0YzYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTQyNTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cXG4tLVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9MTM9c3RydWN0IG9hX3RjNjtcXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTE0LVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg6MTU6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNi12b2lkIG9hX3RjNl9leGl0KHN0cnVjdCBvYV90YzYgKnRjNik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjM5LjQ3MTEyNzgxMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTIzNzg4OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBsYW44NjV4YCBpbiBhIFRlc3RpbmcgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IHRoZSBjb2RlIEknbSBsb29raW5nIGF0IGlzIG9ubHkgY2FsbGVkIGJ5IGBsYW44NjV4YC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5ICpyZWFjaCogYGxhbjg2NXhgIHdpdGhpbiB0aGUgdGVzdCBlbnZpcm9ubWVudD8gTGV0J3Mgc2VlLi4uIEl0J3MgYW4gU1BJIGRyaXZlciwgcmlnaHQ/IFRoYXQncyBrZXkuIFRoZSBub3RlcyBzcGVjaWZpY2FsbHkgbWVudGlvbiBjb2RlIHBhdGhzIGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUg4oCTIHRoaW5rIFVTQiBnYWRnZXRzIG9yIGBtYWM4MDIxMV9od3NpbWAuIEluIG91ciBjYXNlLCBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGFueSBzb2Z0d2FyZS1lbXVsYXRlZCBTUEkgaGFyZHdhcmUgY2FwYWJsZSBvZiBpbnN0YW50aWF0aW5nIGBsYW44NjV4YCwgbWFraW5nIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggc2VlbSBpbXBvc3NpYmxlIHRvIHRyaWdnZXIuXG5cbkJ1dCwgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IHRvIGluamVjdCBhbiBTUEkgZGV2aWNlIGludG8gdGhlIHN5c3RlbT8gQ2FuIHdlIHVzZSBzeXNmcyBzb21laG93PyBJIGtub3cgYHNwaV9ib2FyZF9pbmZvYCBleGlzdHMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IHJlZ2lzdGVyIGEgZGV2aWNlLCBidXQgdGhhdCdzIHVzdWFsbHkgaGFuZGxlZCBieSB0aGUgYm9hcmQtc3BlY2lmaWMgY29kZS4gV2hhdCBhYm91dCBgc3BpZGV2YD8gTm8sIHRoYXQganVzdCBleHBvc2VzIGV4aXN0aW5nIFNQSSBkZXZpY2VzIHRvIHVzZXJzcGFjZTsgaXQgZG9lc24ndCBjcmVhdGUgbmV3IG9uZXMuIEkgd2FzIGhvcGluZyBmb3Igc29tZXRoaW5nIGxpa2UgYHNwaS1tb2NrYCwgYnV0IEkndmUgYWxyZWFkeSBjaGVja2VkLCBhbmQgaXQgZG9lc24ndCBleGlzdC5cblxuV2FpdC4uLiBJIG5lZWQgdG8gcmV0aGluayB0aGlzLiBNYXliZSB0aGVyZSdzIGEgZGlmZmVyZW50IHN5c2ZzIGludGVyZmFjZSDigJMgcGVyaGFwcyBzb21ldGhpbmcgcmVsYXRlZCB0byBgc3BpX25ld19kZXZpY2VgIG9yIGEgc2ltaWxhciBjYWxsIHRoYXQgYWxsb3dzIGRldmljZSBpbnN0YW50aWF0aW9uPyBMZXQgbWUgY2hlY2sgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE1MSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDo0NS4zOTQ5MTg5MDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTI2NDk2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzQtXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNzU6XFx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBcXHUwMDI2Ym9hcmRfaW5mbykpIHtcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3Ni1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzIGZhaWxlZCB0byBjcmVhdGUgU1BJIGRldmljZTogJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM9MzU9c3RhdGljIGludCBhbHRlcmFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE5LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwZGF0YS1cXHUwMDNlbnVtX2RldmljZXM7IGkrKykge1xcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYzoxMjA6XFx0XFx0XFx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cXHUwMDNlZGV2aWNlcyArIGkpKVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMjEtXFx0XFx0XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYz0xNzY9c3RhdGljIHZvaWQgYnV0dGVyZmx5X2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjUtXFx0cHAtXFx1MDAzZWluZm9bMF0uY29udHJvbGxlcl9kYXRhID0gcHA7XFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jOjI2NjpcXHRwcC1cXHUwMDNlZGF0YWZsYXNoID0gc3BpX25ld19kZXZpY2UocHAtXFx1MDAzZWJpdGJhbmcuY3RsciwgXFx1MDAyNnBwLVxcdTAwM2VpbmZvWzBdKTtcXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY3LVxcdGlmIChwcC1cXHUwMDNlZGF0YWZsYXNoKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM9MTQxPXN0YXRpYyBpbnQgY2gzNDFfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDYtXFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM6MjA3OlxcdGNoMzQxLVxcdTAwM2VzcGlkZXYgPSBzcGlfbmV3X2RldmljZShjdHJsLCBcXHUwMDI2Y2hpcCk7XFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA4LVxcdGlmICghY2gzNDEtXFx1MDAzZXNwaWRldikge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYz0zMTM9c3RhdGljIGludCBjczQybDQzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjctXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0Mjg6XFx0XFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVxcdTAwM2VjdGxyLCBhbXBsX2luZm8pKVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI5LVxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMxLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDMyOlxcdFxcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cXHUwMDNlY3RsciwgYW1wcl9pbmZvKSlcXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMy1cXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIC1FTk9ERVYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYz0xMzc1PXN0YXRpYyBpbnQgaW50ZWxfc3BpX3BvcHVsYXRlX2NoaXAoc3RydWN0IGludGVsX3NwaSAqaXNwaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDEtXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQwMjpcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXFx1MDAzZWhvc3QsIFxcdTAwMjZjaGlwKSlcXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAzLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMC1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDMxOlxcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cXHUwMDNlaG9zdCwgXFx1MDAyNmNoaXApKVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzItXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYz0zMTA9c3RhdGljIGludCBrc3BpMl9yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBrc3BpMiAqa3NwaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mga3NwaS1cXHUwMDNlYXV4ZGV2LVxcdTAwM2VpbmZvX3NpemU7IGkrKykge1xcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jOjMxNzpcXHRcXHRzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2aWNlID0gc3BpX25ld19kZXZpY2Uoa3NwaS1cXHUwMDNlaG9zdCwgXFx1MDAyNmluZm9baV0pO1xcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxOC1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM9MTg4PXN0YXRpYyB2b2lkIHNwaV9sbTcwbGxwX2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY2LVxcdHBwLVxcdTAwM2VpbmZvLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjY3OlxcdHBwLVxcdTAwM2VzcGlkZXZfbG03MCA9IHNwaV9uZXdfZGV2aWNlKHBwLVxcdTAwM2ViaXRiYW5nLmN0bHIsIFxcdTAwMjZwcC1cXHUwMDNlaW5mbyk7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjgtXFx0aWYgKHBwLVxcdTAwM2VzcGlkZXZfbG03MClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjcxLVxcdGVsc2Uge1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjcyOlxcdFxcdGRldl93YXJuKFxcdTAwMjZwZC1cXHUwMDNlZGV2LCBcXFwic3BpX25ld19kZXZpY2UgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3My1cXHRcXHRzdGF0dXMgPSAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jPTQwMj1zdGF0aWMgaW50IHhpbGlueF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MDktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBkYXRhLVxcdTAwM2VudW1fZGV2aWNlczsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYzo1MTA6XFx0XFx0XFx0c3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXFx1MDAzZWRldmljZXMgKyBpKTtcXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTExLVxcdH1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jPTc4OD1FWFBPUlRfU1lNQk9MX0dQTChzcGlfYWRkX2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy03OTAtLyoqXFxuZHJpdmVycy9zcGkvc3BpLmM6NzkxOiAqIHNwaV9uZXdfZGV2aWNlIC0gaW5zdGFudGlhdGUgb25lIG5ldyBTUEkgZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmMtNzkyLSAqIEBjdGxyOiBDb250cm9sbGVyIHRvIHdoaWNoIGRldmljZSBpcyBjb25uZWN0ZWRcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTgwMy0gKi9cXG5kcml2ZXJzL3NwaS9zcGkuYzo4MDQ6c3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG5kcml2ZXJzL3NwaS9zcGkuYy04MDUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gKmNoaXApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04NTktfVxcbmRyaXZlcnMvc3BpL3NwaS5jOjg2MDpFWFBPUlRfU1lNQk9MX0dQTChzcGlfbmV3X2RldmljZSk7XFxuZHJpdmVycy9zcGkvc3BpLmMtODYxLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9ODkwPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04OTctXFxuZHJpdmVycy9zcGkvc3BpLmM6ODk4OlxcdGRldiA9IHNwaV9uZXdfZGV2aWNlKGN0bHIsIGJpKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy04OTktXFx0aWYgKCFkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjQ1LjQ5NjE4ODc0NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTY4NTQ0NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHJvYWRibG9jay4gSXQgbG9va3MgbGlrZSB0aGVyZSdzIG5vIHN0cmFpZ2h0Zm9yd2FyZCBzeXNmcyBpbnRlcmZhY2UsIGxpa2Ugd2Ugb2Z0ZW4gc2VlIHdpdGggb3RoZXIgYnVzc2VzLCB0byBqdXN0ICpwb29mKiBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgU1BJIGRldmljZS4gSSB3YXMgcmVhbGx5IGhvcGluZyBmb3Igc29tZXRoaW5nIGNsZWFuIGFuZCBkeW5hbWljLCBidXQgaXQgc2VlbXMgdGhhdCdzIG5vdCB0aGUgY2FzZS5cblxuV2FpdCBhIHNlY29uZOKApiBob2xkIG9uLiBQZXJoYXBzIEknbSBiZWluZyB0b28gcGVzc2ltaXN0aWMuIFRoZXJlIG1pZ2h0IGJlIGEgaGlkZGVuLCBtb3JlIEkyQy1saWtlIGFwcHJvYWNoIHVzaW5nIGEgYG5ld19kZXZpY2VgIGF0dHJpYnV0ZSwgc29tZSBjbGV2ZXIgbWVjaGFuaXNtIHR1Y2tlZCBhd2F5LiBJdCB3b3VsZG4ndCBiZSBjb21wbGV0ZWx5IG91dCBvZiBjaGFyYWN0ZXIgZm9yIHRoZSBrZXJuZWwgdG8gZG8gc29tZXRoaW5nIGEgbGl0dGxlIGRpZmZlcmVudCBmb3IgU1BJLlxuXG5SaWdodCwgbGV0J3Mgc3RvcCBzcGVjdWxhdGluZyBhbmQgZ2V0IHRvIHRoZSBzb3VyY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9zcGkuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byBzZWUgd2hhdCB0aGUgcmVhbGl0eSBpcyBhbmQgZWl0aGVyIGNvbmZpcm0gbXkgc3VzcGljaW9uIG9yIGZpZ3VyZSBvdXQgYSBuZXcgc29sdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDk0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6NDkuMDY0NzM1OTMzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc4Njg4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL3NwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3BpL3NwaS5jPTc4OD1FWFBPUlRfU1lNQk9MX0dQTChzcGlfYWRkX2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy03OTAtLyoqXFxuZHJpdmVycy9zcGkvc3BpLmM6NzkxOiAqIHNwaV9uZXdfZGV2aWNlIC0gaW5zdGFudGlhdGUgb25lIG5ldyBTUEkgZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmMtNzkyLSAqIEBjdGxyOiBDb250cm9sbGVyIHRvIHdoaWNoIGRldmljZSBpcyBjb25uZWN0ZWRcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTgwMy0gKi9cXG5kcml2ZXJzL3NwaS9zcGkuYzo4MDQ6c3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG5kcml2ZXJzL3NwaS9zcGkuYy04MDUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gKmNoaXApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04NTktfVxcbmRyaXZlcnMvc3BpL3NwaS5jOjg2MDpFWFBPUlRfU1lNQk9MX0dQTChzcGlfbmV3X2RldmljZSk7XFxuZHJpdmVycy9zcGkvc3BpLmMtODYxLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9ODkwPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04OTctXFxuZHJpdmVycy9zcGkvc3BpLmM6ODk4OlxcdGRldiA9IHNwaV9uZXdfZGV2aWNlKGN0bHIsIGJpKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy04OTktXFx0aWYgKCFkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjQ5LjE0MjUyOTI3MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjI4NDAxMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nIGZvciBJbnN0YW50aWF0aW5nIHRoZSBMQU44NjV4IFNQSSBEZXZpY2UqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGR5bmFtaWNhbGx5IGJyaW5nIHVwIHRoaXMgYGxhbjg2NXhgIFNQSSBkZXZpY2UsIHJpZ2h0PyBGaXJzdCB0aG91Z2h0IGlzLCBpc24ndCB0aGVyZSB1c3VhbGx5IGEgYG5ld19kZXZpY2VgIGVudHJ5IGluIHN5c2ZzIGZvciBTUEk/IE5vcGUsIG5vdGhpbmcgdGhlcmUuIFNvLCBJIGNhbid0IHRyaWdnZXIgaXQgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEhtbSwgbWF5YmUgc3l6a2FsbGVyIGhhcyBhIHRyaWNrIHVwIGl0cyBzbGVldmUuIExldCBtZSBjaGVjay4uLlxuXG5TeXprYWxsZXIgdXNlcyBgc3l6X2Rldl9zcGlgLCBidXQgdGhhdCBqdXN0IGludGVyZmFjZXMgd2l0aCBleGlzdGluZyBgL2Rldi9zcGlkZXZYLllgIG5vZGVzLiBVc2VsZXNzLiBXYWl0IGEgc2Vjb25kLCBkaWRuJ3QgaXQgaGF2ZSBzb21ldGhpbmcgZm9yIFVTQj8gQWgsIGBzeXpfdXNiX2Nvbm5lY3RgISBDb3VsZCBJIGZpbmQgYSBVU0IgdG8gU1BJIGJyaWRnZSBkZXZpY2UgdGhhdCBJIGNvdWxkIGluc3RhbnRpYXRlIHRocm91Z2ggc3l6a2FsbGVyLCBhbmQgdGhlbiBzb21laG93IGdldCB0aGUgYGxhbjg2NXhgIGRyaXZlciB0byBwcm9iZSB0aGUgYnJpZGdlPyBMZXQncyBpbnZlc3RpZ2F0ZSB0aGUgZXhpc3RpbmcgVVNCLXRvLVNQSSBkcml2ZXJzLlxuXG5MZXQncyBsb29rIGF0IGBzcGktY2gzNDEuY2AgYW5kIGBzcGktZGxuMi5jYC4gT2theSwgYHNwaS1jaDM0MS5jYCAqaXMqIGEgVVNCLXRvLVNQSSBicmlkZ2UuIEJ1dCBkb2VzIGl0IGluc3RhbnRpYXRlIHRoZSB0YXJnZXQgZGV2aWNlPyBOb3BlLCBpdCBqdXN0IGNyZWF0ZXMgYSBgc3BpZGV2YCBlbnRyeSwgbGlrZSBJIGV4cGVjdGVkLiBTYW1lIGZvciBgc3BpLWRsbjIuY2AuIFNvLCB0aGF0J3MgYSBkZWFkIGVuZC4gTm8gbHVjayB3aXRoIHRoZSBVU0Igcm91dGUuXG5cbkJhc2ljYWxseSwgaWYgdGhpcyBgbGFuODY1eGAgaXMgdGhlIG9ubHkgY2FsbGVyIG9mIGBvYV90YzZfaW5pdGAsIHRoZSBgb2FfdGM2YCBjb2RlIGlzIHVucmVhY2hhYmxlLCByaWdodD8gVGhhdCBsb29rcyBsaWtlIHRoZSBzaXR1YXRpb24uIFdhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIHBsYWNlIHRoYXQgY2FsbHMgdGhpcyBmdW5jdGlvbj8gTGV0IG1lIGNoZWNrIHF1aWNrbHkgaWYgdGhlcmUgYXJlIG90aGVyIGNhbGxlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDkwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjU1LjM3MDkzMjY3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAzNzg4MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9hX3RjNl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q9NDU0PVRoZSBpbmNsdWRlL2xpbnV4L29hX3RjNi5oIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1NS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q6NDU2Oi4uIGM6ZnVuY3Rpb246OiBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBcXFxcXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1Ny0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0zMzM9c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDk6XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXFx0aWYgKCFwcml2LVxcdTAwM2V0YzYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTQyNTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cXG4tLVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9MTM9c3RydWN0IG9hX3RjNjtcXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTE0LVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg6MTU6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNi12b2lkIG9hX3RjNl9leGl0KHN0cnVjdCBvYV90YzYgKnRjNik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjU3LjE3NDcyOTQxNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTUxOTkwNDEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLiBJdCdzIG1vZGlmeWluZyBgb2FfdGM2LmNgLCB3aGljaCwgYXMgSSB1bmRlcnN0YW5kLCBpcyBhIGxpYnJhcnkgc3BlY2lmaWNhbGx5IGZvciBhbiBTUEkgRXRoZXJuZXQgTUFDLVBIWS4gVGhlIGNvZGUgdGhhdCBjYWxscyBpdCBpcyB0aGUgYGxhbjg2NXhgIGRyaXZlciwgd2hpY2ggaXMgYWxzbyBhbiBTUEkgZGV2aWNlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFP1xuXG5Jbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCBcIk5vIHdheS5cIiBUaGVyZSdzIG5vIHN0YW5kYXJkIG1lY2hhbmlzbSBmb3IgZGlyZWN0bHkgaW5zdGFudGlhdGluZyBhcmJpdHJhcnkgU1BJIGRldmljZXMgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBXZSBjYW4ndCBqdXN0IG1hZ2ljYWxseSBjcmVhdGUgYW4gYGxhbjg2NXhgIGluc3RhbmNlLiAgTXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRoYXQgc3l6a2FsbGVyIGNvdWxkbid0IHRyaWdnZXIgdGhpcyBjb2RlIGJlY2F1c2UgaXQgZG9lc24ndCB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgZm9yIFNQSSBkZXZpY2VzLiBFdmVuIGlmIGl0ICpjb3VsZCosIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiAgQW5kIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIFNQSSB0aGF0IHdvdWxkIGxldCB1cyBjcmVhdGUgYXJiaXRyYXJ5IGRldmljZXMuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGNoZWNrZWQgZm9yIG90aGVyIHdheXMgdG8gcmVhY2ggYG9hX3RjNmAgLSBsaWtlIGBuZXRkZXZzaW1gIGFuZCBgZHVtbXlgIG5ldGRldi4gTm90aGluZy5cblxuU28sIEkgY2lyY2xlZCBiYWNrIHRvIGNvbmZpcm0gbXkgYW5hbHlzaXMuIFRoZSBgbGFuODY1eGAgZHJpdmVyLCBiZWluZyBhbiBTUEkgZHJpdmVyLCAqcmVxdWlyZXMqIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gSXQgbmVlZHMgdG8gYmUgcHJlc2VudCBpbiB0aGUgZGV2aWNlIHRyZWUgb3IgYm9hcmQgaW5mby4gIFFFTVUvR0NFIGRvbid0IHByb3ZpZGUgdGhpcyBoYXJkd2FyZSwgYW5kIHdlIGNhbid0IHNvZnR3YXJlLWVtdWxhdGUgYW4gYXJiaXRyYXJ5IFNQSSBidXMgZm9yIHRoaXMgcHVycG9zZS4gVGhlIGBsYW44NjV4X2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfc3BpX2RyaXZlcmAsIGFuZCBpdHMgcHJvYmUgZnVuY3Rpb24sIGBsYW44NjV4X3Byb2JlYCwgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGVyZSdzIGEgY29tcGF0aWJsZSBkZXZpY2UgcHJlc2VudC5cblxuVGhlcmVmb3JlLCB0aGUgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYG9hX3RjNl9pbml0YCAoYW5kIGJ5IGV4dGVuc2lvbiB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2gpIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQuIFRoZXkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gb3VyIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBTbywgY29uc2lkZXJpbmcgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nYCwgSSBhbSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1MzksIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMxOjA4LjY5NDYzNTQ0N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG9hX3RjNiBsaWJyYXJ5IChPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgU1BJKSwgd2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZSBsYW44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIuIFNpbmNlIFNQSSBkZXZpY2VzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICh1bmxpa2UgVVNCIHZpYSB2aGNpIG9yIFdpLUZpIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoZSBsYW44NjV4IGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgcm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 01:23:13 +0000 UTC FinishedAt: 2026-06-27 01:31:09 +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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1YTIyOTQyOTAwN2RlM2I1YTI1YTc3YjgxYTEwNWYyYjgyMDRkODhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMToyOToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jXG5pbmRleCAwNzI3ZDUzMzQ1YTMzYi4uYzU5ZGFhMDMyZTcwYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbkBAIC02NzIsMTAgJiM0Mzs2NzIsMTYgQEAgc3RhdGljIHZvaWQgb2FfdGM2X2NsZWFudXBfb25nb2luZ190eF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KVxuIFxuIHN0YXRpYyB2b2lkIG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiB7XG4tXHRpZiAodGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiKSB7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4mIzQzO1x0c2tiID0gdGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiO1xuJiM0MztcdHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYiA9IE5VTEw7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHNrYikge1xuIFx0XHR0YzYtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLVx0XHRrZnJlZV9za2IodGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiKTtcbi1cdFx0dGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiID0gTlVMTDtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0fVxuIH1cbiBcbkBAIC02ODYsNiAmIzQzOzY5MiwxMiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfZnJlZV9wZW5kaW5nX3NrYnMoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0b2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2IodGM2KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2KVxuJiM0Mzt7XG4mIzQzO1x0dGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XG4mIzQzO1x0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcbiYjNDM7fVxuJiM0MztcbiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZ1xuICAqIHRoZSBpbnRlcnJ1cHQgb2YgdGhlIGRldmljZSB3b24mIzM5O3Qgd29yay4gU2luY2UgU1BJIGludGVycnVwdCBpc1xuICAqIGRpc2FibGVkLCBpdCBzaG91bGQgc3RvcCB0aGUgcmVwZWF0ZWQgaW50ZXJydXB0cy5cbkBAIC03MjMsOCAmIzQzOzczNSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdH1cbiBcbiBcdGlmIChGSUVMRF9HRVQoU1RBVFVTMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJST1IsIHZhbHVlKSkge1xuLVx0XHR0YzYtXHUwMDNlcnhfYnVmX292ZXJmbG93ID0gdHJ1ZTtcbi1cdFx0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcbiYjNDM7XHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDslczogUmVjZWl2ZSBidWZmZXIgb3ZlcmZsb3cgZXJyb3JcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgdGM2LVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lKTtcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG5AQCAtODA1LDEzICYjNDM7ODE2LDM1IEBAIHN0YXRpYyB2b2lkIG9hX3RjNl9zdWJtaXRfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdHRjNi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpXG4mIzQzOy8qIE9uIG92ZXJzdWJzY3JpYmVkIHRyYWZmaWMgY29uZGl0aW9uLCBwYXJ0aWN1bGFybHkgd2l0aCBvdmVyd2hlbG1pbmcgcnhcbiYjNDM7ICogYnVmZmVyIG92ZXJmbG93IGVycm9ycywgdGhlcmUgY291bGQgYmUgZGF0YSBjaHVuayBsb3NzLiBJZiB0YWlsICYjNDM7IGxlbmd0aFxuJiM0MzsgKiBnb2VzIGJleW9uZCBlbmQgcG9pbnRlciwgdGhhdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIGRhdGEgY2h1bmsgd2l0aFxuJiM0MzsgKiBlbmRfdmFsaWQgYml0IGlzIGxvc3QuIFRpbWUgdG8gbG9vayBmb3IgYSBkYXRhIGNodW5rIHdpdGggc3RhcnRfdmFsaWQgYml0LlxuJiM0MzsgKlxuJiM0MzsgKiBJZiByeF9za2IgaXMgTlVMTCwgaXQgaXMgdGltZSB0byBzdGFydCBsb29raW5nIGZvciBkYXRhIGNodW5rIHdpdGhcbiYjNDM7ICogc3RhcnRfYml0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpXG4ge1xuJiM0MztcdGlmICghdGM2LVx1MDAzZXJ4X3NrYiB8fFxuJiM0MztcdCAgICAodGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2V0YWlsICYjNDM7IGxlbmd0aCkgXHUwMDNlIHRjNi1cdTAwM2VyeF9za2ItXHUwMDNlZW5kKSB7XG4mIzQzO1x0XHRvYV90YzZfbG9va19mb3JfbmV3X2ZyYW1lKHRjNik7XG4mIzQzO1x0XHRyZXR1cm4gLUVBR0FJTjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bWVtY3B5KHNrYl9wdXQodGM2LVx1MDAzZXJ4X3NrYiwgbGVuZ3RoKSwgcGF5bG9hZCwgbGVuZ3RoKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOy8qIE9uIG92ZXJ3aGVsbWluZyByeCBidWZmZXIgb3ZlcmZsb3cgZXJyb3JzLCBkdWUgdG8gZGF0YSBjaHVuayBsb3NzLCBpdCBpc1xuJiM0MzsgKiBwb3NzaWJsZSB0aGF0IHdlIGdldCB0d28gZGF0YSBjaHVua3Mgd2l0aCBzdGFydF92YWxpZCBiaXQgc2V0LCB3aXRob3V0XG4mIzQzOyAqIGVuZF92YWxpZCBiaXQgc2V0IGluIGJldHdlZW4uIEluIHRoaXMgY2FzZSwgcnhfc2tiIHdvdWxkIGhhdmUgYSB2YWxpZFxuJiM0MzsgKiBidWZmZXIgcG9pbnRlci4gV2Ugc2hvdWxkIHJlbGVhc2UsIGlmIGEgdmFsaWQgcG9pbnRlciBpcyBmb3VuZCBiZWZvcmVcbiYjNDM7ICogYWxsb2NhdGluZyBhIG5ldyBvbmUuXG4mIzQzOyAqL1xuIHN0YXRpYyBpbnQgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuJiM0MztcdG9hX3RjNl9jbGVhbnVwX29uZ29pbmdfcnhfc2tiKHRjNik7XG4gXHR0YzYtXHUwMDNlcnhfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYl9pcF9hbGlnbih0YzYtXHUwMDNlbmV0ZGV2LCB0YzYtXHUwMDNlbmV0ZGV2LVx1MDAzZW10dSAmIzQzO1xuIFx0XHRcdFx0XHRcdEVUSF9ITEVOICYjNDM7IEVUSF9GQ1NfTEVOKTtcbiBcdGlmICghdGM2LVx1MDAzZXJ4X3NrYikge1xuQEAgLTgzMSw3ICYjNDM7ODY0LDkgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19jb21wbGV0ZV9yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4mIzQzO1x0cmV0ID0gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcbiBcdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XG4gXG5AQCAtODQ2LDIyICYjNDM7ODgxLDI0IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfZnJhbWVfc3RhcnQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbi1cbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4mIzQzO3N0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHUxNiBzaXplKVxuIHtcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4mIzQzO1x0aW50IHJldDtcbiBcbi1cdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XG4mIzQzO1x0cmV0ID0gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbiYjNDM7XHRpZiAoIXJldClcbiYjNDM7XHRcdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLFxuLVx0XHRcdFx0XHQgdTMyIGZvb3RlcilcbiYjNDM7c3RhdGljIGludCBvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXG4mIzQzO1x0XHRcdFx0XHR1MzIgZm9vdGVyKVxuIHtcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSk7XG4mIzQzO1x0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCxcbiYjNDM7XHRcdFx0XHQgICAgT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuQEAgLTg3NCw2ICYjNDM7OTExLDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG4gXHRib29sIHN0YXJ0X3ZhbGlkID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9WQUxJRCwgZm9vdGVyKTtcbiBcdGJvb2wgZW5kX3ZhbGlkID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSUQsIGZvb3Rlcik7XG4gXHR1MTYgc2l6ZTtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0LyogUmVzdGFydCB0aGUgbmV3IHJ4IGZyYW1lIGFmdGVyIHJlY2VpdmluZyByeCBidWZmZXIgb3ZlcmZsb3cgZXJyb3IgKi9cbiBcdGlmIChzdGFydF92YWxpZCBcdTAwMjZcdTAwMjYgdGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdylcbkBAIC05MDEsOCAmIzQzOzkzOSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBvbmx5IHJ4IGZyYW1lIGVuZCAqL1xuIFx0aWYgKGVuZF92YWxpZCBcdTAwMjZcdTAwMjYgIXN0YXJ0X3ZhbGlkKSB7XG4gXHRcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgJiM0MzsgMTtcbi1cdFx0b2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7XG4tXHRcdHJldHVybiAwO1xuJiM0MztcdFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBwcmV2aW91cyByeCBmcmFtZSBlbmQgYW5kIG5leHQgcnggZnJhbWVcbkBAIC05MTUsNyAmIzQzOzk1Miw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0XHQgKi9cbiBcdFx0aWYgKHRjNi1cdTAwM2VyeF9za2IpIHtcbiBcdFx0XHRzaXplID0gZW5kX2J5dGVfb2Zmc2V0ICYjNDM7IDE7XG4tXHRcdFx0b2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7XG4mIzQzO1x0XHRcdHJldCA9IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4gXHRcdH1cbiBcdFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcbiBcdFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHRjNixcbkBAIC05MjQsOSAmIzQzOzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBvbmdvaW5nIHJ4IGZyYW1lIGRhdGEgKi9cbi1cdG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpO1xuLVxuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpO1xuIH1cbiBcbiBzdGF0aWMgdTMyIG9hX3RjNl9nZXRfcnhfY2h1bmtfZm9vdGVyKHN0cnVjdCBvYV90YzYgKnRjNiwgdTE2IGZvb3Rlcl9vZmZzZXQpXG5AQCAtMTI1MCwxMSAmIzQzOzEyODcsNiBAQCBFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfemVyb19hbGlnbl9yZWNlaXZlX2ZyYW1lX2VuYWJsZSk7XG4gICovXG4gbmV0ZGV2X3R4X3Qgb2FfdGM2X3N0YXJ0X3htaXQoc3RydWN0IG9hX3RjNiAqdGM2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdGlmICh0YzYtXHUwMDNlZGlzYWJsZV90cmFmZmljIHx8IHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYikge1xuLVx0XHRuZXRpZl9zdG9wX3F1ZXVlKHRjNi1cdTAwM2VuZXRkZXYpO1xuLVx0XHRyZXR1cm4gTkVUREVWX1RYX0JVU1k7XG4tXHR9XG4tXG4gXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4gXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdHRjNi1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7XG5AQCAtMTI2Miw2ICYjNDM7MTI5NCwxMSBAQCBuZXRkZXZfdHhfdCBvYV90YzZfc3RhcnRfeG1pdChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHR9XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbiYjNDM7XHRpZiAodGM2LVx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXHUwMDNld2FpdGluZ190eF9za2IpIHtcbiYjNDM7XHRcdG5ldGlmX3N0b3BfcXVldWUodGM2LVx1MDAzZW5ldGRldik7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0YzYtXHUwMDNldHhfc2tiX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuJiM0MztcdH1cbiBcdHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYiA9IHNrYjtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG9hX3RjNiBsaWJyYXJ5IChPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgU1BJKSwgd2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZSBsYW44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIuIFNpbmNlIFNQSSBkZXZpY2VzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICh1bmxpa2UgVVNCIHZpYSB2aGNpIG9yIFdpLUZpIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoZSBsYW44NjV4IGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NWEyMjk0MjkwMDdkZTNiNWEyNWE3N2I4MWExMDVmMmI4MjA0ZDg4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDE6Mjk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCmluZGV4IDA3MjdkNTMzNDVhMzNiLi5jNTlkYWEwMzJlNzBhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMKQEAgLTY3MiwxMCAmIzQzOzY3MiwxNiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfY2xlYW51cF9vbmdvaW5nX3R4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiAKIHN0YXRpYyB2b2lkIG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNikKIHsKLQlpZiAodGM2LSZndDt3YWl0aW5nX3R4X3NrYikgewomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKJiM0MzsJc2tiID0gdGM2LSZndDt3YWl0aW5nX3R4X3NrYjsKJiM0MzsJdGM2LSZndDt3YWl0aW5nX3R4X3NrYiA9IE5VTEw7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7dGM2LSZndDt0eF9za2JfbG9jayk7CiYjNDM7CiYjNDM7CWlmIChza2IpIHsKIAkJdGM2LSZndDtuZXRkZXYtJmd0O3N0YXRzLnR4X2Ryb3BwZWQmIzQzOyYjNDM7OwotCQlrZnJlZV9za2IodGM2LSZndDt3YWl0aW5nX3R4X3NrYik7Ci0JCXRjNi0mZ3Q7d2FpdGluZ190eF9za2IgPSBOVUxMOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJfQogfQogCkBAIC02ODYsNiAmIzQzOzY5MiwxMiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfZnJlZV9wZW5kaW5nX3NrYnMoc3RydWN0IG9hX3RjNiAqdGM2KQogCW9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHRjNik7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBvYV90YzZfbG9va19mb3JfbmV3X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNikKJiM0Mzt7CiYjNDM7CXRjNi0mZ3Q7cnhfYnVmX292ZXJmbG93ID0gdHJ1ZTsKJiM0MzsJb2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTsKJiM0Mzt9CiYjNDM7CiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZwogICogdGhlIGludGVycnVwdCBvZiB0aGUgZGV2aWNlIHdvbiYjMzk7dCB3b3JrLiBTaW5jZSBTUEkgaW50ZXJydXB0IGlzCiAgKiBkaXNhYmxlZCwgaXQgc2hvdWxkIHN0b3AgdGhlIHJlcGVhdGVkIGludGVycnVwdHMuCkBAIC03MjMsOCAmIzQzOzczNSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNikKIAl9CiAKIAlpZiAoRklFTERfR0VUKFNUQVRVUzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUk9SLCB2YWx1ZSkpIHsKLQkJdGM2LSZndDtyeF9idWZfb3ZlcmZsb3cgPSB0cnVlOwotCQlvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpOwomIzQzOwkJb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpOwogCQluZXRfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7JXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXG4mIzM0OywKIAkJCQkgICAgdGM2LSZndDtuZXRkZXYtJmd0O25hbWUpOwogCQlyZXR1cm4gLUVBR0FJTjsKQEAgLTgwNSwxMyAmIzQzOzgxNiwzNSBAQCBzdGF0aWMgdm9pZCBvYV90YzZfc3VibWl0X3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiAJdGM2LSZndDtyeF9za2IgPSBOVUxMOwogfQogCi1zdGF0aWMgdm9pZCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpCiYjNDM7LyogT24gb3ZlcnN1YnNjcmliZWQgdHJhZmZpYyBjb25kaXRpb24sIHBhcnRpY3VsYXJseSB3aXRoIG92ZXJ3aGVsbWluZyByeAomIzQzOyAqIGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIHRoZXJlIGNvdWxkIGJlIGRhdGEgY2h1bmsgbG9zcy4gSWYgdGFpbCAmIzQzOyBsZW5ndGgKJiM0MzsgKiBnb2VzIGJleW9uZCBlbmQgcG9pbnRlciwgdGhhdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIGRhdGEgY2h1bmsgd2l0aAomIzQzOyAqIGVuZF92YWxpZCBiaXQgaXMgbG9zdC4gVGltZSB0byBsb29rIGZvciBhIGRhdGEgY2h1bmsgd2l0aCBzdGFydF92YWxpZCBiaXQuCiYjNDM7ICoKJiM0MzsgKiBJZiByeF9za2IgaXMgTlVMTCwgaXQgaXMgdGltZSB0byBzdGFydCBsb29raW5nIGZvciBkYXRhIGNodW5rIHdpdGgKJiM0MzsgKiBzdGFydF9iaXQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpCiB7CiYjNDM7CWlmICghdGM2LSZndDtyeF9za2IgfHwKJiM0MzsJICAgICh0YzYtJmd0O3J4X3NrYi0mZ3Q7dGFpbCAmIzQzOyBsZW5ndGgpICZndDsgdGM2LSZndDtyeF9za2ItJmd0O2VuZCkgewomIzQzOwkJb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpOwomIzQzOwkJcmV0dXJuIC1FQUdBSU47CiYjNDM7CX0KJiM0MzsKIAltZW1jcHkoc2tiX3B1dCh0YzYtJmd0O3J4X3NrYiwgbGVuZ3RoKSwgcGF5bG9hZCwgbGVuZ3RoKTsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKiBPbiBvdmVyd2hlbG1pbmcgcnggYnVmZmVyIG92ZXJmbG93IGVycm9ycywgZHVlIHRvIGRhdGEgY2h1bmsgbG9zcywgaXQgaXMKJiM0MzsgKiBwb3NzaWJsZSB0aGF0IHdlIGdldCB0d28gZGF0YSBjaHVua3Mgd2l0aCBzdGFydF92YWxpZCBiaXQgc2V0LCB3aXRob3V0CiYjNDM7ICogZW5kX3ZhbGlkIGJpdCBzZXQgaW4gYmV0d2Vlbi4gSW4gdGhpcyBjYXNlLCByeF9za2Igd291bGQgaGF2ZSBhIHZhbGlkCiYjNDM7ICogYnVmZmVyIHBvaW50ZXIuIFdlIHNob3VsZCByZWxlYXNlLCBpZiBhIHZhbGlkIHBvaW50ZXIgaXMgZm91bmQgYmVmb3JlCiYjNDM7ICogYWxsb2NhdGluZyBhIG5ldyBvbmUuCiYjNDM7ICovCiBzdGF0aWMgaW50IG9hX3RjNl9hbGxvY2F0ZV9yeF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KQogewomIzQzOwlvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpOwogCXRjNi0mZ3Q7cnhfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYl9pcF9hbGlnbih0YzYtJmd0O25ldGRldiwgdGM2LSZndDtuZXRkZXYtJmd0O210dSAmIzQzOwogCQkJCQkJRVRIX0hMRU4gJiM0MzsgRVRIX0ZDU19MRU4pOwogCWlmICghdGM2LSZndDtyeF9za2IpIHsKQEAgLTgzMSw3ICYjNDM7ODY0LDkgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19jb21wbGV0ZV9yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwomIzQzOwlyZXQgPSBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKIAogCW9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7CiAKQEAgLTg0NiwyMiAmIzQzOzg4MSwyNCBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHUxNiBzaXplKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwotCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpCiYjNDM7c3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpCiB7Ci0Jb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTsKJiM0MzsJaW50IHJldDsKIAotCW9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7CiYjNDM7CXJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7CiYjNDM7CWlmICghcmV0KQomIzQzOwkJb2FfdGM2X3N1Ym1pdF9yeF9za2IodGM2KTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLAotCQkJCQkgdTMyIGZvb3RlcikKJiM0MztzdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwKJiM0MzsJCQkJCXUzMiBmb290ZXIpCiB7Ci0Jb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTsKJiM0MzsJcmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwKJiM0MzsJCQkJICAgIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpOwogfQogCiBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2NodW5rX3BheWxvYWQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqZGF0YSwKQEAgLTg3NCw2ICYjNDM7OTExLDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsCiAJYm9vbCBzdGFydF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSUQsIGZvb3Rlcik7CiAJYm9vbCBlbmRfdmFsaWQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX0VORF9WQUxJRCwgZm9vdGVyKTsKIAl1MTYgc2l6ZTsKJiM0MzsJaW50IHJldDsKIAogCS8qIFJlc3RhcnQgdGhlIG5ldyByeCBmcmFtZSBhZnRlciByZWNlaXZpbmcgcnggYnVmZmVyIG92ZXJmbG93IGVycm9yICovCiAJaWYgKHN0YXJ0X3ZhbGlkICZhbXA7JmFtcDsgdGM2LSZndDtyeF9idWZfb3ZlcmZsb3cpCkBAIC05MDEsOCAmIzQzOzkzOSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLAogCS8qIFByb2Nlc3MgdGhlIGNodW5rIHdpdGggb25seSByeCBmcmFtZSBlbmQgKi8KIAlpZiAoZW5kX3ZhbGlkICZhbXA7JmFtcDsgIXN0YXJ0X3ZhbGlkKSB7CiAJCXNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgJiM0MzsgMTsKLQkJb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7Ci0JCXJldHVybiAwOwomIzQzOwkJcmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpOwogCX0KIAogCS8qIFByb2Nlc3MgdGhlIGNodW5rIHdpdGggcHJldmlvdXMgcnggZnJhbWUgZW5kIGFuZCBuZXh0IHJ4IGZyYW1lCkBAIC05MTUsNyAmIzQzOzk1Miw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLAogCQkgKi8KIAkJaWYgKHRjNi0mZ3Q7cnhfc2tiKSB7CiAJCQlzaXplID0gZW5kX2J5dGVfb2Zmc2V0ICYjNDM7IDE7Ci0JCQlvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTsKJiM0MzsJCQlyZXQgPSBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTsKJiM0MzsJCQlpZiAocmV0KQomIzQzOwkJCQlyZXR1cm4gcmV0OwogCQl9CiAJCXNpemUgPSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFIC0gc3RhcnRfYnl0ZV9vZmZzZXQ7CiAJCXJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsCkBAIC05MjQsOSAmIzQzOzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLAogCX0KIAogCS8qIFByb2Nlc3MgdGhlIGNodW5rIHdpdGggb25nb2luZyByeCBmcmFtZSBkYXRhICovCi0Jb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZSh0YzYsIGRhdGEsIGZvb3Rlcik7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpOwogfQogCiBzdGF0aWMgdTMyIG9hX3RjNl9nZXRfcnhfY2h1bmtfZm9vdGVyKHN0cnVjdCBvYV90YzYgKnRjNiwgdTE2IGZvb3Rlcl9vZmZzZXQpCkBAIC0xMjUwLDExICYjNDM7MTI4Nyw2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl96ZXJvX2FsaWduX3JlY2VpdmVfZnJhbWVfZW5hYmxlKTsKICAqLwogbmV0ZGV2X3R4X3Qgb2FfdGM2X3N0YXJ0X3htaXQoc3RydWN0IG9hX3RjNiAqdGM2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewotCWlmICh0YzYtJmd0O2Rpc2FibGVfdHJhZmZpYyB8fCB0YzYtJmd0O3dhaXRpbmdfdHhfc2tiKSB7Ci0JCW5ldGlmX3N0b3BfcXVldWUodGM2LSZndDtuZXRkZXYpOwotCQlyZXR1cm4gTkVUREVWX1RYX0JVU1k7Ci0JfQotCiAJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkgewogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQl0YzYtJmd0O25ldGRldi0mZ3Q7c3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7CkBAIC0xMjYyLDYgJiM0MzsxMjk0LDExIEBAIG5ldGRldl90eF90IG9hX3RjNl9zdGFydF94bWl0KHN0cnVjdCBvYV90YzYgKnRjNiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl9CiAKIAlzcGluX2xvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKJiM0MzsJaWYgKHRjNi0mZ3Q7ZGlzYWJsZV90cmFmZmljIHx8IHRjNi0mZ3Q7d2FpdGluZ190eF9za2IpIHsKJiM0MzsJCW5ldGlmX3N0b3BfcXVldWUodGM2LSZndDtuZXRkZXYpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKJiM0MzsJCXJldHVybiBORVRERVZfVFhfQlVTWTsKJiM0MzsJfQogCXRjNi0mZ3Q7d2FpdGluZ190eF9za2IgPSBza2I7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDt0YzYtJmd0O3R4X3NrYl9sb2NrKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT0FfVEM2IEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY2AgZHJpdmVyLCB3aGljaCBpcyBmb3IgYW4gT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSBFdGhlcm5ldCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcga2V5IGZ1bmN0aW9uczogYG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiYCwgYG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWVgLCBhbGwgdGhlIHByb2Nlc3Npbmcgcm91dGluZXMgZm9yIHRoZSBSWCBwYXRoIChgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzYCwgYG9hX3RjNl91cGRhdGVfcnhfc2tiYCwgYG9hX3RjNl9hbGxvY2F0ZV9yeF9za2JgLCBgb2FfdGM2X3ByY3NfY29tcGxldGVfcnhfZnJhbWVgLCBgb2FfdGM2X3ByY3NfcnhfZnJhbWVfc3RhcnRgLCBgb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kYCwgYG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWVgLCBhbmQgYG9hX3RjNl9wcmNzX3J4X2NodW5rX3BheWxvYWRgKSBhbmQgdGhlIFRYIHBhdGggaW4gYG9hX3RjNl9zdGFydF94bWl0YC4KClR3byBrZXkgZml4ZXMgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50OiBidWZmZXIgb3ZlcmZsb3cgcHJvdGVjdGlvbiBpbiBgb2FfdGM2X3VwZGF0ZV9yeF9za2JgIHZpYSBib3VuZHMgY2hlY2tpbmcgKGB0YzYtJmd0O3J4X3NrYi0mZ3Q7dGFpbCAmIzQzOyBsZW5ndGggJmd0OyB0YzYtJmd0O3J4X3NrYi0mZ3Q7ZW5kYCkgYW5kIGEgcmFjZSBjb25kaXRpb24gZml4IGluIGBvYV90YzZfc3RhcnRfeG1pdGAgYnkgYWRkaW5nIGEgbG9jayBhcm91bmQgdGhlIGNoZWNrIGZvciBgdGM2LSZndDt3YWl0aW5nX3R4X3NrYmAuCgpOb3csIEkgbmVlZCB0byBldmFsdWF0ZSB0aGUgdGVzdGFiaWxpdHkgb2YgdGhpcyBwYXRjaCwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIGFuIFNQSS1iYXNlZCBFdGhlcm5ldCBkcml2ZXIuIFNQSSBkZXZpY2VzIGFyZSBnZW5lcmFsbHkgYSBwYWluIHRvIGVtdWxhdGUsIGVzcGVjaWFsbHkgaW4gc29tZXRoaW5nIGxpa2UgUUVNVS4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgU1BJIGNvbnRyb2xsZXIgZW11bGF0aW9uIG9yIHNvbWUgc29ydCBvZiBtb2NrIFNQSSBkcml2ZXIsIGl0JiMzOTtzIGdvaW5nIHRvIGJlIHRyaWNreS4gTGV0JiMzOTtzIGRpZyBpbnRvIGlmIHRoZXJlJiMzOTtzIGFueSBTUEkgbW9jayBvciBhIHdheSB0byBmdXp6IHRoaXMgZHJpdmVyLiBBaCwgc3l6a2FsbGVyLiBJIGtub3cgaXQgaXNuJiMzOTt0IHNldCB1cCB0byBkaXJlY3RseSBmdXp6IFNQSSBkZXZpY2VzLiBVbmxlc3Mgd2UgY2FuIGluamVjdCBTUEkgdHJhZmZpYyBvciBoYXZlIGEgdmlydHVhbCBTUEkgZGV2aWNlLCB3ZSYjMzk7cmUgcHJvYmFibHkgbm90IGdvaW5nIHRvIGdldCBmYXIgdGhlcmUuCgpIb3dldmVyLCBgb2FfdGM2X3N0YXJ0X3htaXRgIGlzIGEgc3RhbmRhcmQgYG5ldGRldl90eF90YCBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldHdvcmsgdHJhZmZpYy4gSWYgd2UgY2FuIGluc3RhbnRpYXRlIHRoZSBuZXR3b3JrIGludGVyZmFjZSwgd2UgY2FuIHRlc3QgdGhhdCBwYXJ0LiBUaGUga2V5IHF1ZXN0aW9uIG5vdyBpcywgY2FuIHdlIGluc3RhbnRpYXRlIHRoZSBpbnRlcmZhY2U/IExldCYjMzk7cyBnbyBiYWNrIGFuZCBsb29rIGF0IHRoZSBzb3VyY2UgY29kZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNgIHRvIGZpZ3VyZSB0aGF0IG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYV90YzZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE0MjU6RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X2luaXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTI2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBPQSBUQzYgTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBuZXcgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZSBpcyBpdCByZXZvbHZlcyBhcm91bmQgYSBsaWJyYXJ5IG9yIGZyYW1ld29yayByZWxhdGVkIHRvIE9BIFRDNi4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIGl0cyBpbnRlZ3JhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cywgc28gbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2Ugd2hvJiMzOTtzIGNhbGxpbmcgYG9hX3RjNl9pbml0YC4gVGhhdCBmdW5jdGlvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gaGFwcGVucywgc28gZmluZGluZyB0aG9zZSBjYWxsIHNpdGVzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGdyYXNwIG9uIGhvdyB0aGlzIGxpYnJhcnkgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gdW5wYWNrIGl0cyBwdXJwb3NlIGFuZCBmdW5jdGlvbmFsaXR5IGluIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2FfdGM2X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMzEwPUVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9zdGFydF94bWl0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMxMzogKiBvYV90YzZfaW5pdCAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb2FfdGM2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzE5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE0MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGBsYW44NjV4YCBhbmQgU1BJIERldmljZSBJbnN0YW50aWF0aW9uIGluIGEgRnV6emluZyBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBsYW44NjV4YCB0aGluZyBhbmQgaXQmIzM5O3MgYmVpbmcgcHJvYmVkIGJ5IGBsYW44NjV4X3Byb2JlYC4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGNvbnRleHQgaGVyZSBpcyB0aGF0IGl0JiMzOTtzIGFuIFNQSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0LCBhcyBhbiBleHBlcnQgaW4gdGhpcyBhcmVhLCBpczogQ2FuIHN5emthbGxlciAqZGlyZWN0bHkqIGluc3RhbnRpYXRlIFNQSSBkZXZpY2VzPyBHZW5lcmFsbHksIHRoZSBhbnN3ZXIgaXMgbm8uIFVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgY2xldmVyIFNQSSBtb2NrIHNldHVwIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBpdCYjMzk7cyB1c3VhbGx5IG5vdCB0aGF0IHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHRoZW4gbXkgYnJhaW4gc3RhcnRzIGNhdGFsb2dpbmcgdGhlIHBvc3NpYmlsaXRpZXMuLi4gd2UgaGF2ZSBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLCBgdmttc2AgZm9yIERSTSwgYHZoY2lgIGZvciBVU0IsIGB1aW5wdXRgIGZvciBpbnB1dC4gVGhlc2UgYXJlIHZpcnR1YWxpemVkIGRldmljZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhbGxvdyBzeXprYWxsZXIgdG8gdGVzdCB3aXRob3V0IHJlcXVpcmluZyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIEhtbSwgaXMgdGhlcmUgYSB2aXJ0dWFsIFNQSSBlcXVpdmFsZW50PwoKTGV0JiMzOTtzIHNlZS4uLiBXYWl0LCB5ZXMhIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBwb3NzaWJpbGl0aWVzIHRoYXQgc3ByaW5nIHRvIG1pbmQuIFRoZXJlJiMzOTtzIGBzcGktbW9ja2AsIHdoaWNoIGlzIHRoZSBtb3JlIG9idmlvdXMgb25lLCBidXQgYWxzbyB0aGF0IGBzcGktbG9vcGJhY2stdGVzdGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9mIHRob3NlIGNhbiBhY3R1YWxseSBiZSB1c2VkIHRvIHByb2JlIHRoaXMgYGxhbjg2NXhgIGRyaXZlci4gSSBuZWVkIHRvIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgcmVhbGlzdGljIHdheSwgZ2l2ZW4gb3VyIGVudmlyb25tZW50LCB0byB0cmlnZ2VyIHRoYXQgYGxhbjg2NXhfcHJvYmVgIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9MTc2MjA9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbFxuTUFJTlRBSU5FUlM6MTc2MjE6RjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuTUFJTlRBSU5FUlMtMTc2MjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjYwOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy02MS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT0xMD1sYW43NDN4LW9ianMgOj0gbGFuNzQzeF9tYWluLm8gbGFuNzQzeF9ldGh0b29sLm8gbGFuNzQzeF9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19MQU44NjVYKSAmIzQzOz0gbGFuODY1eC9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfTEFOOTY2WF9TV0lUQ0gpICYjNDM7PSBsYW45NjZ4L1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc9OD1jb25maWcgTEFOODY1WFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTYtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZzoxNzpcdCAgY2FsbGVkIGxhbjg2NXguXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MQU44NjVYKSAmIzQzOz0gbGFuODY1eC5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5OnN0cnVjdCBsYW44NjV4X3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwLVx0c3RydWN0IHdvcmtfc3RydWN0IG11bHRpY2FzdF93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHN0cnVjdCBvYV90YzYgKnRjNiwgY29uc3QgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjU1OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2LCBjb25zdCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjEtXHQvKiBDb25maWd1cmUgTUFDIGFkZHJlc3MgbG93IGJ5dGVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NjI6XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVx1MDAzZXRjNiwgbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc1LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NzY6XHRyZXN0b3JlX3JldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXHUwMDNldGM2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc3LVx0XHRcdFx0XHRcdCAgICAgICBwcml2LVx1MDAzZW5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGFuODY1eF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04NS1cdC5nZXRfbGlua19rc2V0dGluZ3MgPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjg5OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6OTE6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05Mi1cdHN0cnVjdCBzb2NrYWRkciAqYWRkcmVzcyA9IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMDI6XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIGFkZHJlc3MtXHUwMDNlc2FfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MTExPXN0YXRpYyB1MzIgZ2V0X2FkZHJlc3NfYml0KHU4IGFkZHJbRVRIX0FMRU5dLCB1MzIgYml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTE2OnN0YXRpYyB1MzIgbGFuODY1eF9oYXNoKHU4IGFkZHJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTExNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMzI6c3RhdGljIGludCBsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzOS1cdG5ldGRldl9mb3JfZWFjaF9tY19hZGRyKGhhLCBwcml2LVx1MDAzZW5ldGRldikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE0MDpcdFx0dTMyIGJpdF9udW0gPSBsYW44NjV4X2hhc2goaGEtXHUwMDNlYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTY0OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE4NjpzdGF0aWMgaW50IGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTg3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIwNTpzdGF0aWMgdm9pZCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA3Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbGFuODY1eF9wcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwOC1cdFx0XHRcdFx0XHQgbXVsdGljYXN0X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMTgtXHRcdC8qIEVuYWJsaW5nIGFsbCBtdWx0aWNhc3QgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIxOTpcdFx0aWYgKGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjAtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjYtXHRcdC8qIEVuYWJsaW5nIHNwZWNpZmljIG11bHRpY2FzdCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjI3Olx0XHRpZiAobGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIocHJpdikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI4LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM0LVx0XHQvKiBFbmFibGluZyBsb2NhbCBtYWMgYWRkcmVzcyBvbmx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjM1Olx0XHRpZiAobGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM2LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0NDpzdGF0aWMgdm9pZCBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ2Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjUxOnN0YXRpYyBuZXRkZXZfdHhfdCBsYW44NjV4X3NlbmRfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTQ6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTk6c3RhdGljIGludCBsYW44NjV4X2h3X2Rpc2FibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc0OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NjpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3Ny1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4MC1cdHBoeV9zdG9wKG5ldGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI4MTpcdHJldCA9IGxhbjg2NXhfaHdfZGlzYWJsZShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyOTA6c3RhdGljIGludCBsYW44NjV4X2h3X2VuYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI5MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDU6c3RhdGljIGludCBsYW44NjV4X25ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDc6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDgtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMTA6XHRyZXQgPSBsYW44NjV4X2h3X2VuYWJsZShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI0Olx0Lm5kb19vcGVuXHRcdD0gbGFuODY1eF9uZXRfb3BlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjU6XHQubmRvX3N0b3BcdFx0PSBsYW44NjV4X25ldF9jbG9zZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjY6XHQubmRvX3N0YXJ0X3htaXRcdFx0PSBsYW44NjV4X3NlbmRfcGFja2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcdC5uZG9fc2V0X3J4X21vZGVcdD0gbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI4Olx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gbGFuODY1eF9zZXRfbWFjX2FkZHJlc3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzI5LVx0Lm5kb192YWxpZGF0ZV9hZGRyXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzMzOnN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM1LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzY6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNy1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzOTpcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQwLVx0aWYgKCFuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ni1cdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0NzpcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5MjpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM5OS1cdG5ldGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMDpcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMTpcdG5ldGRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmxhbjg2NXhfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDE4OnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDE5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjA6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDI4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyOS1cdHsgLm5hbWUgPSBcJiMzNDtsYW44NjUwXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzMzpNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgbGFuODY1eF9pZHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MzU6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzYtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTBcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxhbjg2NXhfZHRfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQyOnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsYW44NjV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDMtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0NC1cdFx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDU6XHRcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0Ni1cdCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0NzpcdC5wcm9iZSA9IGxhbjg2NXhfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ4Olx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpcdC5pZF90YWJsZSA9IGxhbjg2NXhfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ1MTptb2R1bGVfc3BpX2RyaXZlcihsYW44NjV4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDUyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9Nzc9c3RhdGljIGNvbnN0IHUxNiBsYW44Njd4X3JldmIxX2ZpeHVwX21hc2tzWzEyXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTg3LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo4ODpzdGF0aWMgY29uc3QgdTMyIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbMTddID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy04OS1cdDB4MDBEMCwgMHgwMEUwLCAweDAwRTksIDB4MDBGNSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTk1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo5NjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbMTddID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy05Ny1cdDB4M0YzMSwgMHhDMDAwLCAweDlFNTAsIDB4MUNGOCxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwMy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTA0OnN0YXRpYyBjb25zdCB1MTYgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzWzJdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDUtXHQweDAwODQsIDB4MDA4QSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwNy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTA4OnN0YXRpYyBjb25zdCB1MzIgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzWzEyXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTA5LVx0MHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTEzLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMTQ6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1sxMl0gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNS1cdDB4MDEwMywgMHgwOTEwLCAweDFEMjYsIDB4MDAyQSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExOS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTIwOnN0YXRpYyBjb25zdCB1MTYgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVnc1szXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTIxLVx0MHgwMEFELCAweDAwQUUsIDB4MDBBRixcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTEzND1zdGF0aWMgY29uc3QgdTE2IGxhbjg2N3hfcmV2ZDBfZml4dXBfdmFsdWVzWzhdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTQ2LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNDc6c3RhdGljIGludCBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgYWRkcilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTQ4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE2Ni0gKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTY3OnN0YXRpYyBpbnQgbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzOCBvZmZzZXRzW10pXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE2OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNzItXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShmaXh1cF9yZWdzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTczOlx0XHRyZXQgPSBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChwaHlkZXYsIGZpeHVwX3JlZ3NbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNzQtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xODctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE4ODpzdGF0aWMgaW50IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4OS1cdFx0XHRcdCAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjA0LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMDU6c3RhdGljIGludCBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjA2LVx0XHRcdFx0ICAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjIwLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjE6c3RhdGljIGludCBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjIyLXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjIzOlx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzKV07XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIyNDpcdHUxNiBjZmdfcGFyYW1zW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzKV07XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyNS1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyNi1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjI3Olx0cmV0ID0gbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyOC1cdFx0XHRcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzc6XHRyZXR1cm4gbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzgtXHRcdFx0XHRcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDAtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0MTpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQyLXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjQzOlx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNDQ6XHR1MTYgY2ZnX3BhcmFtc1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQ1LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQ2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNDc6XHRyZXQgPSBsYW44NjV4X3JlYWRfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0OC1cdFx0XHRcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjU4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTk6XHRyZXR1cm4gbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVx0XHRcdFx0XHRjZmdfcmVzdWx0cywgQVJSQVlfU0laRShjZmdfcmVzdWx0cykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNjM6c3RhdGljIGludCBsYW44NjV4X3JldmJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3MC1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzE6XHRyZXQgPSBsYW44NjV4X2dlbmVyYXRlX2NmZ19vZmZzZXRzKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3NTpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzYtXHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjc3Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbaV0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3ODpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzW2ldKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjc5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjgyLVx0XHRpZiAoaSA9PSAxKSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4MzpcdFx0XHRyZXQgPSBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4NC1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODk6XHRyZXQgPSBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjkyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyOTM6XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTQtXHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk1Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVnc1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk2Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzW2ldKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjk3LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9MzI5PXN0YXRpYyBpbnQgbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMzctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMzODpcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzM5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM1My1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNTQ6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzU1Olx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTktXHRcdGlmIChpID09IDEpIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzYwOlx0XHRcdHJldCA9IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzYxLVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjUtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM2NjpcdHJldCA9IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM3MDpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVncyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3MS1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzI6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzW2ldLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzM6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNzQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz00OTQ9c3RhdGljIGludCBsYW44Nnh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTgtICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUxOTpzdGF0aWMgaW50IGxhbjg2NXhfcGh5X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTUyMC1cdFx0XHRcdHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MjctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUyODpzdGF0aWMgaW50IGxhbjg2NXhfcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MjktXHRcdFx0XHQgdTE2IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTUzNz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU4NC1cdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg1Olx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODYtXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1ODc6XHRcdC5yZWFkX21tZCAgICAgICAgICAgPSBsYW44NjV4X3BoeV9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg4Olx0XHQud3JpdGVfbW1kICAgICAgICAgID0gbGFuODY1eF9waHlfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODktXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDI3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgU1BJIEVtdWxhdGlvbiBpbiBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gaGFuZGxlIFNQSSBkZXZpY2VzIHdpdGhpbiB0aGUgU3l6a2FsbGVyIGVudmlyb25tZW50LiBUaGUgY3VycmVudCBkcml2ZXIgdW5kZXIgc2NydXRpbnkgaXMgYGxhbjg2NXhgLCBhbmQgaXQmIzM5O3MgYW4gU1BJIGRyaXZlciwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGVtdWxhdGUgU1BJIGNvbW11bmljYXRpb24gZWZmZWN0aXZlbHkgZm9yIHRlc3RpbmcuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIGEgU3l6a2FsbGVyLW5hdGl2ZSB3YXkgdG8gZW11bGF0ZSBTUEkgZGV2aWNlcywgc2ltaWxhciB0byBob3cgaXQgaGFuZGxlcyBVU0Igd2l0aCBgdmhjaWAgb3IgUENJIHRocm91Z2ggbW9ja2luZyBtZWNoYW5pc21zLiBIbW0sIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYSBnZW5lcmFsLCByZWFkeS10by11c2UgU1BJIGVtdWxhdG9yIGxpa2UgdGhvc2UuCgpIb2xkIG9uLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZ+KApiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9zcGkvYCBkaXJlY3RvcnkuIE1heWJlIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIHBlcmhhcHMgYSBtb2R1bGUgbGlrZSBgc3BpLW1vY2tgIG9yIHRoZSBgc3BpLWxvb3BiYWNrLXRlc3RgIG1vZHVsZT8gVGhhdCBjb3VsZCBiZSBhIGNydWNpYWwgY29tcG9uZW50IGZvciBteSBkZWJ1Z2dpbmcgYW5kIHRlc3Rpbmcgc3RyYXRlZ3kuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHJlZnJlc2ggbXkgbWVtb3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NwaV9tb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3NjMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byBzeXprYWxsZXIgYW5kIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgZXhpc3RpbmcgU1BJIG1vY2tpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkga25vdyBzeXprYWxsZXIgKmdlbmVyYWxseSogYXZvaWRzIGRpcmVjdCBmdXp6aW5nIG9mIFNQSSBkZXZpY2VzIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBpbmRpcmVjdCBlbnRyeSBwb2ludC4gSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBTUEkgbW9ja3M/CgoqKkNoZWNraW5nIGZvciBFeGlzdGluZyBTUEkgTW9ja3MgYW5kIExldmVyYWdpbmcgTGlicmFyaWVzKioKCk5vdywgc3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBgb2FfdGM2YCBsaWJyYXJ5LiBUaGF0JiMzOTtzIGludHJpZ3VpbmcuIFNpbmNlIGl0JiMzOTtzIGEgbGlicmFyeSwgSSB3b25kZXIgaWYgaXQmIzM5O3MgdXRpbGl6ZWQgYnkgb3RoZXIgZHJpdmVycyB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIHB1cnZpZXcuIElmIHNvLCB0aGF0IGNvdWxkIHByb3ZpZGUgYSBwYXRod2F5IGZvciBpbmRpcmVjdCBTUEkgZnV6emluZyB0aHJvdWdoIHRob3NlIG90aGVyIGRyaXZlcnMuIE5lZWQgdG8gY2hlY2sgaXRzIHVzYWdlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYV90YzZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MzMzPXN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzQ5Olx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUwLVx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE0MjU6RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X2luaXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0NzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIExBTjg2NXggQ29kZTogQSBGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBvbmx5IHRvdWNoZXMgdGhlIGBsYW44NjV4YCBkcml2ZXIsIGFuZCB0aGF0JiMzOTtzIGFuIFNQSSBkZXZpY2UsIHJpZ2h0PyBUaGUgaW5oZXJlbnQgY2hhbGxlbmdlIGlzIHRoYXQgU1BJIGRldmljZXMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdW5sZXNzIHRoZXJlJiMzOTtzIGEgdmVyeSBzcGVjaWZpYyBTUEkgY29udHJvbGxlciBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi4gU3l6a2FsbGVyLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24mIzM5O3QgdXN1YWxseSBzZXQgdXAgcmFuZG9tIFNQSSBkZXZpY2VzIGxpa2UgdGhpcy4KCk15IG5leHQgdGhvdWdodCBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X2Rldl9zcGlgPyBObywgSSByZW1lbWJlciBpdCBoYXMgdGhpbmdzIGZvciBVU0IsIDgwMjExLCBldGMuLCBidXQgbm90IGEgZ2VuZXJhbCBTUEkgZGV2aWNlIGluc3RhbnRpYXRpb24uIENhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBjb2RlIGF0IGFsbD8gSWYgdGhlIGRldmljZSBpc24mIzM5O3QgcHJvYmVkLCB0aGVuIGBvYV90YzZfaW5pdGAgd29uJiMzOTt0IGJlIGNhbGxlZCwgYW5kIGBvYV90YzZfc3RhcnRfeG1pdGAgd29uJiMzOTt0IGJlIHJlZ2lzdGVyZWQuIFNvLCBpcyB0aGVyZSBzb21lIG90aGVyIHdheSB0byBpbnN0YW50aWF0ZSB0aGlzLCBsaWtlIHRocm91Z2ggbmV0bGluayBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm9wZSwgaXQmIzM5O3MgYW4gU1BJIGRyaXZlciwgc28gdGhhdCBhdmVudWUgaXMgY2xvc2VkLgoKTm93IEkmIzM5O20gcmVhbGx5IHN0YXJ0aW5nIHRvIHF1ZXN0aW9uIGlmIHRoZXJlJiMzOTtzICphbnkqIGNoYW5jZSBvZiB0aGlzIGJlaW5nIHJlYWNoYWJsZS4gSWYgaXQmIzM5O3MgYW4gU1BJIGRyaXZlciwgdGhlIGRlZmF1bHQgc3l6a2FsbGVyIHNldHVwIGdlbmVyYWxseSB3b24mIzM5O3QgaW5zdGFudGlhdGUgaXQgdW5sZXNzIHRoZXJlJiMzOTtzIGEgdmlydHVhbCBTUEkgYnVzIHRoYXQgc3l6a2FsbGVyIGNhbiBzb21laG93IHVzZS4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHN5emthbGxlciBmb3IgU1BJIHN1cHBvcnQuCgpBaCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBgZGV2X3NwaWRldmAsIHdoaWNoIGxldHMgdXNlci1zcGFjZSB0YWxrIHRvIFNQSSBkZXZpY2VzLCBidXQgaXQgKmRvZXNuJiMzOTt0KiBsZXQgeW91IGluc3RhbnRpYXRlIGtlcm5lbCBTUEkgZHJpdmVycy4gSSBuZWVkIHRvIGJlIG1vcmUgY2FyZWZ1bCBoZXJlLCB3YWl0IGEgbWludXRlLCBkZXZpY2UgdHJlZSBvdmVybGF5cyEgTWF5YmUgdGhhdCYjMzk7cyB0aGUgd2F5LiBTeXprYWxsZXIgY2FuIGxvYWQgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdG8gaW5zdGFudGlhdGUgZGV2aWNlcy4gQnV0IGRvZXMgc3l6a2FsbGVyIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBmb3IgU1BJIGRldmljZXM/IE5vLCBpdCBsb29rcyBsaWtlIHN5emthbGxlciBkb2VzbiYjMzk7dCBkbyB0aGF0IGZvciBTUEkgZGV2aWNlcyBpbiBhIGdlbmVyaWMgd2F5LgoKT2theSwgSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBJIG5lZWQgdG8gYmUgdmVyeSBjYXJlZnVsIGhlcmUuIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGp1c3QgYmVjYXVzZSBpdCYjMzk7cyBhbiBTUEkgZGV2aWNlLCBpcyB0aGF0ICpjb3JyZWN0Kj8KCk5vdyBJJiMzOTttIGdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgYW5kIGl0IHNheXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBTaW5jZSB0aGlzIGlzIGFuIFNQSSBFdGhlcm5ldCBkcml2ZXIsIGFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBTUEkgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCB0aGF0IEkmIzM5O20gYXdhcmUgb2YgdGhhdCB3aWxsIGluc3RhbnRpYXRlIGFyYml0cmFyeSBTUEkgZHJpdmVycyAobGlrZSBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpIG9yIGB2aGNpYCBmb3IgVVNCKSwgdGhlbiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gV2FpdCwgaXMgdGhlcmUgYW4gU1BJIG1vY2sgZHJpdmVyPyBMZXQmIzM5O3MgZG91YmxlIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGlfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3BpL3NwaS1tZW0uYz0xMDk4PWludCBzcGlfbWVtX2RyaXZlcl9yZWdpc3Rlcl93aXRoX293bmVyKHN0cnVjdCBzcGlfbWVtX2RyaXZlciAqbWVtZHJ2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tZW0uYy0xMTA0LVxuZHJpdmVycy9zcGkvc3BpLW1lbS5jOjExMDU6XHRyZXR1cm4gX19zcGlfcmVnaXN0ZXJfZHJpdmVyKG93bmVyLCBcdTAwMjZtZW1kcnYtXHUwMDNlc3BpZHJ2KTtcbmRyaXZlcnMvc3BpL3NwaS1tZW0uYy0xMTA2LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz00NjI9RVhQT1JUX1NZTUJPTF9HUEwoc3BpX2J1c190eXBlKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy00NjQtLyoqXG5kcml2ZXJzL3NwaS9zcGkuYzo0NjU6ICogX19zcGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBTUEkgZHJpdmVyXG5kcml2ZXJzL3NwaS9zcGkuYy00NjYtICogQG93bmVyOiBvd25lciBtb2R1bGUgb2YgdGhlIGRyaXZlciB0byByZWdpc3RlclxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTQ3MS0gKi9cbmRyaXZlcnMvc3BpL3NwaS5jOjQ3MjppbnQgX19zcGlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBtb2R1bGUgKm93bmVyLCBzdHJ1Y3Qgc3BpX2RyaXZlciAqc2RydilcbmRyaXZlcnMvc3BpL3NwaS5jLTQ3My17XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNTE0LX1cbmRyaXZlcnMvc3BpL3NwaS5jOjUxNTpFWFBPUlRfU1lNQk9MX0dQTChfX3NwaV9yZWdpc3Rlcl9kcml2ZXIpO1xuZHJpdmVycy9zcGkvc3BpLmMtNTE2LVxuLS1cbmRyaXZlcnMvc3BpL3NwaWRldi5jPTg2MT1zdGF0aWMgaW50IF9faW5pdCBzcGlkZXZfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvc3BpL3NwaWRldi5jLTg3OC1cbmRyaXZlcnMvc3BpL3NwaWRldi5jOjg3OTpcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2c3BpZGV2X3NwaV9kcml2ZXIpO1xuZHJpdmVycy9zcGkvc3BpZGV2LmMtODgwLVx0aWYgKHN0YXR1cyBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA3OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIFZpcnR1YWwgU1BJIENvbnRyb2xsZXIgT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBuZXcgc2V0dXAsIGFuZCBJJiMzOTttIHdvbmRlcmluZyBpZiBJIGNhbiBnZXQgYXdheSB3aXRoIGEgdmlydHVhbCBTUEkgY29udHJvbGxlci4gTm8gcGh5c2ljYWwgaGFyZHdhcmUgbmVlZGVkLCBwdXJlbHkgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgYmVuZWZpdHMgYXJlIG9idmlvdXM6IGZsZXhpYmlsaXR5LCBwb3RlbnRpYWxseSBsb3dlciBjb3N0IGZvciBjZXJ0YWluIGFwcGxpY2F0aW9ucywgYW5kIG1heWJlIGV2ZW4gZWFzaWVyIGludGVncmF0aW9uIGR1cmluZyB0aGUgZGVzaWduIHBoYXNlLiBCdXQgaXMgdGhlcmUgZXZlbiBzdWNoIGEgdGhpbmcgYXMgYSAqZ29vZCogdmlydHVhbCBTUEkgY29udHJvbGxlciBvdXQgdGhlcmUsIG9uZSB0aGF0JiMzOTtzIHJlbGlhYmxlIGVub3VnaCBmb3Igc2VyaW91cyB1c2U/IEkgbmVlZCB0byBkaWcgaW50byB0aGlzIOKAkyB3aGF0IGFyZSB0aGUgb3B0aW9ucywgd2hhdCBhcmUgdGhlaXIgbGltaXRhdGlvbnMsIGFuZCBjYW4gdGhleSBoYW5kbGUgdGhlIHRocm91Z2hwdXQgYW5kIHRpbWluZyBjb25zdHJhaW50cyBJJiMzOTttIGRlYWxpbmcgd2l0aD8gVGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlciBpZiBpdCBwYW5zIG91dC4gR290dGEgZG8gc29tZSByZXNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3NwaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg3NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTEzNDg9c3RhdGljIGludCBhdG1lbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTE0NTUtXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6MTQ1NjpcdGVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0cmwpO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTE0NTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jPTEwNjA9c3RhdGljIGludCBhaXJvaGFfc25hbmRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy0xMTMxLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6MTEzMjpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy0xMTMzLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTYwLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNjE6XHRlcnIgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jPTM1PXN0YXRpYyBpbnQgYWx0ZXJhX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMTMtXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM6MTE0Olx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM9ODIxPWludCBhbWRfc3BpX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtODM5LVx0LyogUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgd2l0aCBTUEkgZnJhbWV3b3JrICovXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6ODQwOlx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTg0MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0zMjY9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0zNjgtXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjM2OTpcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3BpZmMtXHUwMDNlZGV2LCBjdHJsKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMzcwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jPTEwOTM9c3RhdGljIGludCBhbWxfc2ZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0xMTc3LVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzoxMTc4Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdHJsKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMTE3OS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3Bpc2cuYz03MTI9c3RhdGljIGludCBhbWxfc3Bpc2dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTc5OS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaXNnLmM6ODAwOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTgwMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYz00NTc9c3RhdGljIGludCBhcHBsZV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYy01MDQtXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYzo1MDU6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1hcHBsZS5jLTUwNi1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYzo1MDc6XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCByZXQsIFwmIzM0O2Rldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1hcHBsZS5jLTUwOC1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM9MTY1PXN0YXRpYyBpbnQgYXI5MzR4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hcjkzNHguYy0yMDctXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM6MjA4Olx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWFyOTM0eC5jLTIwOS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmM9ODEzPXN0YXRpYyBpbnQgYTM3MDBfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc0LVxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmM6ODc1Olx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM9OTU3PXN0YXRpYyBpbnQgYXNwZWVkX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMTAyMy1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MTAyNDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0xMDI1LVx0aWYgKHJldClcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MTAyNjpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMTAyNy1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jPTQ3Nj1zdGF0aWMgaW50IGF0OTFfdXNhcnRfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0OTEtdXNhcnQuYy01NTQtXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jOjU1NTpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGNvbnRyb2xsZXIpO1xuZHJpdmVycy9zcGkvc3BpLWF0OTEtdXNhcnQuYy01NTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdGNzcGkyMDAuYz01NDY9c3RhdGljIGludCBhdGNzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmMtNTg5LVxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jOjU5MDpcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTU5MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM9MTI4Nz1zdGF0aWMgaW50IGF0bWVsX3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTEzMDMtXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzoxMzA0Olx0LyogU2V0dXAoKSBpcyBjYWxsZWQgZHVyaW5nIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGFrYVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMTMwNS1cdCAqIHNwaV9yZWdpc3Rlcl9tYXN0ZXIpIGJ1dCBhZnRlciBhbGwgbWVtYm1lcnMgb2YgdGhlIGNzX2dwaW9kXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM9MTU1MD1zdGF0aWMgaW50IGF0bWVsX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTE2NjgtXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzoxNjY5Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0xNjcwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpLXNwaS1lbmdpbmUuYz0xMTA0PXN0YXRpYyBpbnQgc3BpX2VuZ2luZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1heGktc3BpLWVuZ2luZS5jLTEyMzktXG5kcml2ZXJzL3NwaS9zcGktYXhpLXNwaS1lbmdpbmUuYzoxMjQwOlx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmMtMTI0MS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jPTc1Mj1zdGF0aWMgaW50IGF4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy04NDYtXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6ODQ3Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtODQ4LVx0aWYgKHJldCkge1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjg0OTpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy04NTAtXHRcdGdvdG8gZXJyX2Rpc2FibGVfcnBtO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTE0ODI9aW50IGJjbV9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtMTY1OS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjE2NjA6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jLTE2NjEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzUuYz0xMzQ5PXN0YXRpYyBpbnQgYmNtMjgzNV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNS5jLTE0MDYtXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNS5jOjE0MDc6XHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1LmMtMTQwOC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNWF1eC5jPTQ3ND1zdGF0aWMgaW50IGJjbTI4MzVhdXhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzVhdXguYy01NDMtXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNWF1eC5jOjU0NDpcdGVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzVhdXguYy01NDUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYz03NDI9c3RhdGljIGludCBiY202M3h4X2hzc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy04NTctXHQvKiByZWdpc3RlciBhbmQgd2UgYXJlIGRvbmUgKi9cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6ODU4Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTg1OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYz00OTE9c3RhdGljIGludCBiY202M3h4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtNTk5LVx0LyogcmVnaXN0ZXIgYW5kIHdlIGFyZSBkb25lICovXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jOjYwMDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYy02MDEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbWJjYS1oc3NwaS5jPTQzMj1zdGF0aWMgaW50IGJjbWJjYV9oc3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYy01NDAtXHQvKiByZWdpc3RlciBhbmQgd2UgYXJlIGRvbmUgKi9cbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYzo1NDE6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYy01NDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iaXRiYW5nLmM9NDI0PWludCBzcGlfYml0YmFuZ19zdGFydChzdHJ1Y3Qgc3BpX2JpdGJhbmcgKmJpdGJhbmcpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYy00MzUtXHQgKi9cbmRyaXZlcnMvc3BpL3NwaS1iaXRiYW5nLmM6NDM2Olx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYy00MzctfVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xNzgxPXN0YXRpYyBpbnQgY3FzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTk3NC1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxOTc1Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTk3Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM9MTE3ND1zdGF0aWMgaW50IGNkbnNfeHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy0xMjg3LVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjEyODg6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtMTI4OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jPTYzNj1zdGF0aWMgaW50IGNkbnNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYy03NDItXHR9XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jOjc0MzpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYy03NDQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jOjc0NTpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmMtNzQ2LVx0XHRnb3RvIGVycl9kaXNhYmxlX3JwbTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jPTE5PXN0YXRpYyBpbnQgb2N0ZW9uX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tb2N0ZW9uLmMtNTQtXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jOjU1Olx0ZXJyID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jLTU2LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYz0xOT1zdGF0aWMgaW50IHRodW5kZXJ4X3NwaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmMtNjgtXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmM6Njk6XHRyZXR1cm4gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmMtNzAtfVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jPTE0MT1zdGF0aWMgaW50IGNoMzQxX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwMi1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jOjIwMzpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0cmwpO1xuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2xwczcxMXguYz05MT1zdGF0aWMgaW50IHNwaV9jbHBzNzExeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jLTEzNy1cbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jOjEzODpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jLTEzOS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYz0zMzg9c3RhdGljIGludCBtY2Zxc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYy00MDYtXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jOjQwNzpcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYy00MDgtXHRpZiAoc3RhdHVzKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYz0zMTM9c3RhdGljIGludCBjczQybDQzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDEwLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0MTE6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKHByaXYtXHUwMDNlZGV2LCBwcml2LVx1MDAzZWN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM9NjgwPXN0YXRpYyBpbnQgZGxuMl9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktZGxuMi5jLTc1OC1cbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM6NzU5Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktZGxuMi5jLTc2MC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktZHctY29yZS5jPTkyMz1pbnQgZHdfc3BpX2FkZF9jb250cm9sbGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGR3X3NwaSAqZHdzKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kdy1jb3JlLmMtMTAwMy1cbmRyaXZlcnMvc3BpL3NwaS1kdy1jb3JlLmM6MTAwNDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWR3LWNvcmUuYy0xMDA1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYz02MjM9c3RhdGljIGludCBlcDkzeHhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jLTY5Mi1cbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYzo2OTM6XHRlcnJvciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jLTY5NC1cdGlmIChlcnJvcikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1mYWxjb24uYz0zOTE9c3RhdGljIGludCBmYWxjb25fc2ZsYXNoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWZhbGNvbi5jLTQwNy1cbmRyaXZlcnMvc3BpL3NwaS1mYWxjb24uYzo0MDg6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktZmFsY29uLmMtNDA5LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNpLmM9NTMxPXN0YXRpYyBpbnQgZnNpX3NwaV9wcm9iZShzdHJ1Y3QgZnNpX2RldmljZSAqZnNpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2kuYy01NzEtXG5kcml2ZXJzL3NwaS9zcGktZnNpLmM6NTcyOlx0XHRyYyA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1mc2kuYy01NzMtXHRcdGlmIChyYylcbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYz0xNTI4PXN0YXRpYyBpbnQgZHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtZHNwaS5jLTE2ODAtXG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYzoxNjgxOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYy0xNjgyLVx0aWYgKHJldCAhPSAwKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1lc3BpLmM9NjYzPXN0YXRpYyBpbnQgZnNsX2VzcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNsLWVzcGkuYy03MTctXG5kcml2ZXJzL3NwaS9zcGktZnNsLWVzcGkuYzo3MTg6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZXNwaS5jLTcxOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jPTg5Mj1zdGF0aWMgaW50IGZzbF9scHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDAzLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jOjEwMDQ6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDA1LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jOjEwMDY6XHRcdGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJldCwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jLTEwMDctXHRcdGdvdG8gZnJlZV9kbWE7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWZzbC1xc3BpLmM9ODk0PXN0YXRpYyBpbnQgZnNsX3FzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05ODgtXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYzo5ODk6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05OTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmM9NTI4PXN0YXRpYyBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmZzbF9zcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmMtNjE2LVxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYzo2MTc6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmMtNjE4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM9MTA0Mj1zdGF0aWMgaW50IHNwaV9nZW5pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWdlbmktcWNvbS5jLTExNDktXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM6MTE1MDpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgc3BpKTtcbmRyaXZlcnMvc3BpL3NwaS1nZW5pLXFjb20uYy0xMTUxLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktZ3Bpby5jPTM0MD1zdGF0aWMgaW50IHNwaV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYy00MTMtXG5kcml2ZXJzL3NwaS9zcGktZ3Bpby5jOjQxNDpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1ncGlvLmMtNDE1LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktZ3hwLmM9MjUwPXN0YXRpYyBpbnQgZ3hwX3NwaWZpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWd4cC5jLTI4Ny1cbmRyaXZlcnMvc3BpL3NwaS1neHAuYzoyODg6XHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktZ3hwLmMtMjg5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYz00NjE9c3RhdGljIGludCBoaXNpX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYy01MjMtXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1rdW5wZW5nLmM6NTI0Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktaGlzaS1rdW5wZW5nLmMtNTI1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1zZmMtdjN4eC5jPTQzMT1zdGF0aWMgaW50IGhpc2lfc2ZjX3YzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1zZmMtdjN4eC5jLTQ5Ny1cbmRyaXZlcnMvc3BpL3NwaS1oaXNpLXNmYy12M3h4LmM6NDk4Olx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWhpc2ktc2ZjLXYzeHguYy00OTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbWctc3BmaS5jPTUyNT1zdGF0aWMgaW50IGltZ19zcGZpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWltZy1zcGZpLmMtNjQxLVxuZHJpdmVycy9zcGkvc3BpLWltZy1zcGZpLmM6NjQyOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktaW1nLXNwZmkuYy02NDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbXguYz0yMjE4PXN0YXRpYyBpbnQgc3BpX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbXguYy0yMzU4LVxuZHJpdmVycy9zcGkvc3BpLWlteC5jOjIzNTk6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcbmRyaXZlcnMvc3BpL3NwaS1pbXguYy0yMzYwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLmM9MzgzPXN0YXRpYyBpbnQgc3BpX2luZ2VuaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW5nZW5pYy5jLTQ1NC1cbmRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLmM6NDU1Olx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYy00NTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jPTE0ODk9aW50IGludGVsX3NwaV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNTEyLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTUxMzpcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE1MTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jPTE0MT1zdGF0aWMgaW50IGpjb3JlX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jLTIwMS1cdC8qIFJlZ2lzdGVyIG91ciBzcGkgY29udHJvbGxlciAqL1xuZHJpdmVycy9zcGkvc3BpLWpjb3JlLmM6MjAyOlx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWpjb3JlLmMtMjAzLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYz0zMzg9c3RhdGljIGludCBrc3BpMl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYXV4ZGV2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTM5Mi1cdGhvc3QtXHUwMDNldHJhbnNmZXJfb25lID0ga3NwaTJfdHJhbnNmZXJfb25lO1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzkzOlx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzk0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1sYW50aXEtc3NjLmM9OTA0PXN0YXRpYyBpbnQgbGFudGlxX3NzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sYW50aXEtc3NjLmMtOTkwLVxuZHJpdmVycy9zcGkvc3BpLWxhbnRpcS1zc2MuYzo5OTE6XHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1sYW50aXEtc3NjLmMtOTkyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1samNhLmM9MjE4PXN0YXRpYyBpbnQgbGpjYV9zcGlfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eGRldixcbi0tXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0Mi1cbmRyaXZlcnMvc3BpL3NwaS1samNhLmM6MjQzOlx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY29udHJvbGxlcik7XG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb25nc29uLWNvcmUuYz0xOTY9aW50IGxvb25nc29uX3NwaV9pbml0X2NvbnRyb2xsZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb25nc29uLWNvcmUuYy0yMjctXG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jOjIyODpcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY29udHJvbGxlcik7XG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jLTIyOS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWxwODg0MS1ydGMuYz0xODI9c3BpX2xwODg0MV9ydGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxMi1cdC8qIHJlZ2lzdGVyIHdpdGggdGhlIFNQSSBmcmFtZXdvcmsgKi9cbmRyaXZlcnMvc3BpL3NwaS1scDg4NDEtcnRjLmM6MjEzOlx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxNC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYz05Nzg9c3RhdGljIGludCBtZXNvbl9zcGljY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jLTEwNzQtXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYzoxMDc1Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYy0xMDc2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGlmYy5jPTI4NT1zdGF0aWMgaW50IG1lc29uX3NwaWZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmMtMzMwLVxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmM6MzMxOlx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzcGlmYy1cdTAwM2VkZXYsIGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmMtMzMyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmM9NzE5PXN0YXRpYyBpbnQgbWNocF9jb3JlcXNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzkyLVxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXFzcGkuYzo3OTM6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk0LVx0aWYgKHJldClcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk1LVx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmV0LFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXFzcGkuYzo3OTY6XHRcdFx0XHQgICAgIFwmIzM0O3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jLTc5Ny1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtc3BpLmM9Mjg3PXN0YXRpYyBpbnQgbWNocF9jb3Jlc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXNwaS5jLTM4Ni1cbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYzozODc6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYy0zODgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM9NDU4PXN0YXRpYyBpbnQgbXBjNTEyeF9wc2Nfc3BpX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmMtNTEzLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM6NTE0Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tcGM1MTJ4LXBzYy5jLTUxNS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmM9Mjk0PXN0YXRpYyBpbnQgbXBjNTJ4eF9wc2Nfc3BpX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmMtMzQzLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmM6MzQ0Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jLTM0NS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYz0zODc9c3RhdGljIGludCBtcGM1Mnh4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktbXBjNTJ4eC5jLTQ5Mi1cdGRldl9kYmcoXHUwMDI2b3AtXHUwMDNlZGV2LCBcJiMzNDtyZWdpc3RlcmluZyBzcGlfY29udHJvbGxlciBzdHJ1Y3RcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYzo0OTM6XHRyYyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYy00OTQtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW1wZnMuYz01Mjc9c3RhdGljIGludCBtcGZzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tcGZzLmMtNTc2LVxuZHJpdmVycy9zcGkvc3BpLW1wZnMuYzo1Nzc6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tcGZzLmMtNTc4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYz0xMTc1PXN0YXRpYyBpbnQgbXRrX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI3LVxuZHJpdmVycy9zcGkvc3BpLW10NjV4eC5jOjEzMjg6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYz0zMTY9c3RhdGljIGludCBtdDc2MjFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW10NzYyMS5jLTM2OS1cbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYzozNzA6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcdTAwMjZwZGV2LVx1MDAzZWRldiwgaG9zdCk7XG5kcml2ZXJzL3NwaS9zcGktbXQ3NjIxLmMtMzcxLX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jPTgxMD1zdGF0aWMgaW50IG10a19ub3JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jLTkxNS1cbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmM6OTE2Olx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jLTkxNy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmM9MTMzOD1zdGF0aWMgaW50IG10a19zbmFuZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jLTE0NjQtXHRjdGxyLVx1MDAzZW1vZGVfYml0cyA9IFNQSV9SWF9EVUFMIHwgU1BJX1JYX1FVQUQgfCBTUElfVFhfRFVBTCB8IFNQSV9UWF9RVUFEO1xuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmM6MTQ2NTpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2Ni1cdGlmIChyZXQpIHtcbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jOjE0Njc6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2OC1cdFx0Z290byBmcmVlX2J1Zjtcbi0tXG5kcml2ZXJzL3NwaS9zcGktbXV4LmM9MTI2PXN0YXRpYyBpbnQgc3BpX211eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1tdXguYy0xNjQtXG5kcml2ZXJzL3NwaS9zcGktbXV4LmM6MTY1Olx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgY3Rscik7XG5kcml2ZXJzL3NwaS9zcGktbXV4LmMtMTY2LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbXhpYy5jPTc1NT1zdGF0aWMgaW50IG14aWNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MTktXG5kcml2ZXJzL3NwaS9zcGktbXhpYy5jOjgyMDpcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MjEtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3NwaS9zcGktbXhpYy5jOjgyMjpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1teGljLmMtODIzLVx0XHRwbV9ydW50aW1lX2Rpc2FibGUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1teHMuYz01Mjg9c3RhdGljIGludCBteHNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW14cy5jLTYyMC1cbmRyaXZlcnMvc3BpL3NwaS1teHMuYzo2MjE6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1teHMuYy02MjItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmM9Njg5PXN0YXRpYyBpbnQgbnBjbV9maXVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1maXUuYy03NDYtXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1maXUuYzo3NDc6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0cmwpO1xuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmMtNzQ4LX1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1wc3BpLmM9MzQwPXN0YXRpYyBpbnQgbnBjbV9wc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW5wY20tcHNwaS5jLTQxMi1cbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYzo0MTM6XHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYy00MTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jPTEyODY9c3RhdGljIGludCBueHBfZnNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jLTEzOTAtXG5kcml2ZXJzL3NwaS9zcGktbnhwLWZzcGkuYzoxMzkxOlx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLW54cC1mc3BpLmMtMTM5Mi19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmM9MTIwOD1zdGF0aWMgaW50IG54cF94c3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5MC1cbmRyaXZlcnMvc3BpL3NwaS1ueHAteHNwaS5jOjEyOTE6XHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5Mi19XG4tLVxuZHJpdmVycy9zcGkvc3BpLW9tYXAyLW1jc3BpLmM9MTQ3ND1zdGF0aWMgaW50IG9tYXAyX21jc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLW9tYXAyLW1jc3BpLmMtMTU4OS1cbmRyaXZlcnMvc3BpL3NwaS1vbWFwMi1tY3NwaS5jOjE1OTA6XHRzdGF0dXMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcbmRyaXZlcnMvc3BpL3NwaS1vbWFwMi1tY3NwaS5jLTE1OTEtXHRpZiAoc3RhdHVzIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jPTY0ND1zdGF0aWMgaW50IG9yaW9uX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jLTc3OC1cbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jOjc3OTpcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xuZHJpdmVycy9zcGkvc3BpLW9yaW9uLmMtNzgwLVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3NwaS9zcGktcGNpMXh4eHguYz04MDA9c3RhdGljIGludCBwY2kxeHh4eF9zcGlfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLXBjaTF4eHh4LmMtOTMxLVx0XHRzcGlfY29udHJvbGxlcl9zZXRfZGV2ZGF0YShzcGlfaG9zdCwgc3BpX3N1Yl9wdHIpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzMyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFNlYXJjaCBmb3IgYSBEdW1teSBTUEkgQ29udHJvbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgZm9yIGEgd2F5IHRvIHNpbXVsYXRlIGFuIFNQSSBjb250cm9sbGVyIGFuZCBkZXZpY2VzIHdpdGhpbiB0aGUga2VybmVsLCBzb21ldGhpbmcgdGhhdCBsZXRzIHVzZXItc3BhY2UgY3JlYXRlIHZpcnR1YWwgU1BJIGRldmljZXMuIEkmIzM5O20gZHJhd2luZyBhIGJsYW5rIG9uIGFueXRoaW5nIG5hbWVkIGBzcGktbW9ja2Agb3IgYHNwaS1sb29wYmFja2AgdGhhdCBhY3R1YWxseSAqcmVnaXN0ZXJzKiBhIGNvbnRyb2xsZXIuIEhtbS4uLiB3aGF0IGFib3V0IHRoYXQgYHNwaS1sb29wYmFjay10ZXN0LmNgIGRyaXZlcj8gQWgsIG5vLCB0aGF0JiMzOTtzIGp1c3QgYSAqZGV2aWNlKiBmb3IgdGVzdGluZywgbm90IGEgY29udHJvbGxlciBpdHNlbGYuIEl0IHdvdWxkbiYjMzk7dCBsZXQgdXNlci1zcGFjZSBkcml2ZSBpdCBsaWtlIGEgcmVhbCBjb250cm9sbGVyLgoKTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgdGhhdCBpcyBmb3IgV2lGaSBzaW11bGF0aW9uLiBOb3QgdGhlIHJpZ2h0IHRyYWNrLiBBbmQgYGR1bW15X2hjZGA/IFVTQi4gRGVmaW5pdGVseSBub3Qgd2hhdCBJIG5lZWQuIFNvLi4uIEkgcmVhbGx5IG5lZWQgYSAqZHVtbXkqIFNQSSBjb250cm9sbGVyLiBEb2VzIG9uZSBldmVuIGV4aXN0PyBUaW1lIHRvIGRpZyBhcm91bmQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGBkcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jYCBhbmQgc2ltaWxhciBmaWxlcy4gSG9wZWZ1bGx5LCB0aGVyZSBpcyBzb21ldGhpbmcgdGhlcmUgdGhhdCBJJiMzOTt2ZSBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R1bW15JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjc0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM9NDgwPXN0YXRpYyBib29sIGF0bWVsX3FzcGlfc3VwcG9ydHNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNDk4LVx0aWYgKG9wLVx1MDAzZWFkZHIubmJ5dGVzID09IDIgXHUwMDI2XHUwMDI2IG9wLVx1MDAzZWNtZC5idXN3aWR0aCAhPSBvcC1cdTAwM2VhZGRyLmJ1c3dpZHRoIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjQ5OTpcdCAgICBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgPT0gMClcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01MDAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM9NTI0PXN0YXRpYyBpbnQgYXRtZWxfcXNwaV9zZXRfY2ZnKHN0cnVjdCBhdG1lbF9xc3BpICphcSxcbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTI3LVx0dTMyIGlhciwgaWNyLCBpZnI7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTI4Olx0dTMyIGR1bW15X2N5Y2xlcyA9IDA7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTI5LVx0aW50IG1vZGU7XG4tLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTUzOS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NDA6XHRpZiAob3AtXHUwMDNlZHVtbXkubmJ5dGVzKVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU0MTpcdFx0ZHVtbXlfY3ljbGVzID0gb3AtXHUwMDNlZHVtbXkubmJ5dGVzICogOCAvIG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU0Mi1cbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTQ2LVx0ICogdGhlIG9wdGlvbiBmaWVsZC4gRm9yIHRoZSAxNi1iaXQgYWRkcmVzc2VzLCB0aGUgd29ya2Fyb3VuZCBkZXBlbmRzXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTQ3Olx0ICogb2YgdGhlIG51bWJlciBvZiByZXF1ZXN0ZWQgZHVtbXkgYml0cy4gSWYgdGhlcmUgYXJlIDggb3IgbW9yZSBkdW1teVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU0ODpcdCAqIGN5Y2xlcywgdGhlIGFkZHJlc3MgaXMgc2hpZnRlZCBhbmQgc2VudCB3aXRoIHRoZSBmaXJzdCBkdW1teSBieXRlLlxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU0OS1cdCAqIE90aGVyd2lzZSBvcGNvZGUgaXMgZGlzYWJsZWQgYW5kIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBhZGRyZXNzXG4tLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU1MS1cdCAqIHVzZSB0aGUgc2FtZSBidXN3aWR0aCkuIFRoZSBsaW1pdGF0aW9uIGlzIHdoZW4gdGhlIDE2LWJpdCBhZGRyZXNzIGlzXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTUyOlx0ICogdXNlZCB3aXRob3V0IGVub3VnaCBkdW1teSBjeWNsZXMgYW5kIHRoZSBvcGNvZGUgaXMgdXNpbmcgYSBkaWZmZXJlbnRcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NTMtXHQgKiBidXN3aWR0aCB0aGFuIHRoZSBhZGRyZXNzLlxuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NjMtXHRcdGNhc2UgMjpcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NjQ6XHRcdFx0aWYgKGR1bW15X2N5Y2xlcyBcdTAwM2MgOCAvIG9wLVx1MDAzZWFkZHIuYnVzd2lkdGgpIHtcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NjUtXHRcdFx0XHRpZnIgXHUwMDI2PSB+UVNQSV9JRlJfSU5TVEVOO1xuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NzEtXHRcdFx0XHRpYXIgPSAob3AtXHUwMDNlYWRkci52YWwgXHUwMDNjXHUwMDNjIDgpIFx1MDAyNiAweGZmZmZmZjtcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NzI6XHRcdFx0XHRkdW1teV9jeWNsZXMgLT0gOCAvIG9wLVx1MDAzZWFkZHIuYnVzd2lkdGg7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTczLVx0XHRcdH1cbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTkwLVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU5MTpcdC8qIFNldCBudW1iZXIgb2YgZHVtbXkgY3ljbGVzICovXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTkyOlx0aWYgKGR1bW15X2N5Y2xlcylcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1OTM6XHRcdGlmciB8PSBRU1BJX0lGUl9OQkRVTShkdW1teV9jeWNsZXMpO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU5NC1cbi0tXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM9Njg4PXN0YXRpYyBpbnQgYXRtZWxfcXNwaV9zYW1hN2c1X3NldF9jZmcoc3RydWN0IGF0bWVsX3FzcGkgKmFxLFxuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy03MDItXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzAzOlx0aWYgKG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkdW1teS5uYnl0ZXMpIHtcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDQ6XHRcdGlmIChvcC1cdTAwM2VhZGRyLmR0ciBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlZHVtbXkuZHRyIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkYXRhLmR0cilcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDU6XHRcdFx0aWZyIHw9IFFTUElfSUZSX05CRFVNKG9wLVx1MDAzZWR1bW15Lm5ieXRlcyAqIDggL1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwNjpcdFx0XHRcdFx0ICAgICAgKDIgKiBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCkpO1xuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTcwNy1cdFx0ZWxzZVxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwODpcdFx0XHRpZnIgfD0gUVNQSV9JRlJfTkJEVU0ob3AtXHUwMDNlZHVtbXkubmJ5dGVzICogOCAvXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzA5Olx0XHRcdFx0XHQgICAgICBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzEwLVx0fVxuLS1cbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy03MTctXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzE4Olx0aWYgKG9wLVx1MDAzZWFkZHIuZHRyIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkdW1teS5kdHIgXHUwMDI2XHUwMDI2IG9wLVx1MDAzZWRhdGEuZHRyKSB7XG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzE5LVx0XHRpZnIgfD0gUVNQSV9JRlJfRERSRU47XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM9NDg2PXN0YXRpYyBib29sIGFpcm9oYV9zbmFuZF9pc19wYWdlX29wcyhjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNDk2LVx0Y2FzZSBTUElfTUVNX0RBVEFfSU46XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo0OTc6XHRcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiBCSVRTX1BFUl9CWVRFIC8gb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGggXHUwMDNlIDB4ZilcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTQ5OC1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTEwLVx0Y2FzZSBTUElfTUVNX0RBVEFfT1VUOlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6NTExOlx0XHRyZXR1cm4gIW9wLVx1MDAzZWR1bW15Lm5ieXRlcyBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlYWRkci5idXN3aWR0aCA9PSAxIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTEyLVx0XHQgICAgICAgKG9wLVx1MDAzZWRhdGEuYnVzd2lkdGggPT0gNCB8fCBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoID09IDEpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jPTUxOD1zdGF0aWMgYm9vbCBhaXJvaGFfc25hbmRfc3VwcG9ydHNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy01MzAtXHRyZXR1cm4gKCFvcC1cdTAwM2VhZGRyLm5ieXRlcyB8fCBvcC1cdTAwM2VhZGRyLmJ1c3dpZHRoID09IDEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6NTMxOlx0ICAgICAgICghb3AtXHUwMDNlZHVtbXkubmJ5dGVzIHx8IG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoID09IDEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTMyLVx0ICAgICAgICghb3AtXHUwMDNlZGF0YS5uYnl0ZXMgfHwgb3AtXHUwMDNlZGF0YS5idXN3aWR0aCA9PSAxKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYz05MzI9c3RhdGljIGludCBhaXJvaGFfc25hbmRfZXhlY19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTkzNS1cdHN0cnVjdCBhaXJvaGFfc25hbmRfY3RybCAqYXNfY3RybDtcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjkzNjpcdGludCBvcF9sZW4sIGFkZHJfbGVuLCBkdW1teV9sZW47XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05MzctXHR1OCBidWZbMjBdLCAqZGF0YTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05NDMtXHRhZGRyX2xlbiA9IG9wLVx1MDAzZWFkZHIubmJ5dGVzO1xuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTQ0Olx0ZHVtbXlfbGVuID0gb3AtXHUwMDNlZHVtbXkubmJ5dGVzO1xuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTQ1LVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTQ2Olx0aWYgKG9wX2xlbiAmIzQzOyBkdW1teV9sZW4gJiM0MzsgYWRkcl9sZW4gXHUwMDNlIHNpemVvZihidWYpKVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTQ3LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05NTMtXHRcdCpkYXRhJiM0MzsmIzQzOyA9IG9wLVx1MDAzZWFkZHIudmFsIFx1MDAzZVx1MDAzZSAoOCAqIChhZGRyX2xlbiAtIGkgLSAxKSk7XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5NTQ6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkdW1teV9sZW47IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTU1LVx0XHQqZGF0YSYjNDM7JiM0MzsgPSAweGZmO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk4MS1cbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4MjpcdC8qIGR1bW15ICovXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05ODMtXHRkYXRhICYjNDM7PSBhZGRyX2xlbjtcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4NDpcdGlmIChkdW1teV9sZW4pIHtcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4NTpcdFx0ZXJyID0gYWlyb2hhX3NuYW5kX3dyaXRlX2RhdGEoYXNfY3RybCwgZGF0YSwgZHVtbXlfbGVuLFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTg2Olx0XHRcdFx0XHQgICAgICBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05ODctXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTU0MT1zdGF0aWMgdm9pZCBhbWRfc3BpX21lbV9kYXRhX291dChzdHJ1Y3QgYW1kX3NwaSAqYW1kX3NwaSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTg1LVx0XHRmb3IgKGkgPSAwOyBsZWZ0X2RhdGEgXHUwMDNlPSA4OyBpJiM0MzsmIzQzOywgbGVmdF9kYXRhIC09IDgpXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NTg2Olx0XHRcdGFtZF9zcGlfd3JpdGVyZWc2NChhbWRfc3BpLCBiYXNlX2FkZHIgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICYjNDM7IChpICogOCksXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTg3LVx0XHRcdFx0XHQgICAqYnVmXzY0JiM0MzsmIzQzOyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTU5MS1cdFx0XHRhbWRfc3BpX3dyaXRlcmVnOChhbWRfc3BpLFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjU5MjpcdFx0XHRcdFx0ICBiYXNlX2FkZHIgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICYjNDM7IG5ieXRlcyAmIzQzOyBpIC0gbGVmdF9kYXRhLFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTU5My1cdFx0XHRcdFx0ICBidWZbaV0pO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWQuYz02MDM9c3RhdGljIHZvaWQgYW1kX3NwaV9oaWRkbWFfcmVhZChzdHJ1Y3QgYW1kX3NwaSAqYW1kX3NwaSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjAtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjIxOlx0LyogQ29uZmlndXJlIGR1bW15IGNsb2NrIGN5Y2xlcyBmb3IgZmFzdCByZWFkLCBkdWFsLCBxdWFkIEkvTyBjb21tYW5kcyAqL1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyMi1cdGhpZF9yZWd2YWwgPSBhbWRfc3BpX3JlYWRyZWczMihhbWRfc3BpLCBBTURfU1BJX0hJRDJfUkVBRF9DTlRSTDIpO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjYyMzpcdC8qIEZhc3QgcmVhZCBkdW1teSBjeWNsZSAqL1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyNC1cdGhpZF9yZWd2YWwgXHUwMDI2PSB+R0VOTUFTSyg0LCAwKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjUtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI2Olx0LyogRmFzdCByZWFkIER1YWwgSS9PIGR1bW15IGN5Y2xlICovXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjI3LVx0aGlkX3JlZ3ZhbCBcdTAwMjY9IH5HRU5NQVNLKDEyLCA4KTtcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjgtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI5Olx0LyogRmFzdCByZWFkIFF1YWQgSS9PIGR1bW15IGN5Y2xlICovXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjMwLVx0aGlkX3JlZ3ZhbCA9IChoaWRfcmVndmFsIFx1MDAyNiB+R0VOTUFTSygyMCwgMTYpKSB8IEJJVCgxNyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTY2MT1zdGF0aWMgdm9pZCBhbWRfc3BpX21lbV9kYXRhX2luKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02OTktXHRcdGFtZF9zcGlfc2V0X2FkZHIoYW1kX3NwaSwgb3ApO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcwMDpcdFx0YW1kX3NwaV9zZXRfdHhfY291bnQoYW1kX3NwaSwgb3AtXHUwMDNlYWRkci5uYnl0ZXMgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MDEtXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NzAyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTcwMy1cdFx0XHRhbWRfc3BpX3dyaXRlcmVnOChhbWRfc3BpLCAoYmFzZV9hZGRyICYjNDM7IGkpLCAweGZmKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzEwLVx0XHRmb3IgKGkgPSAwOyBsZWZ0X2RhdGEgXHUwMDNlPSA4OyBpJiM0MzsmIzQzOywgbGVmdF9kYXRhIC09IDgpXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NzExOlx0XHRcdCpidWZfNjQmIzQzOyYjNDM7ID0gYW1kX3NwaV9yZWFkcmVnNjQoYW1kX3NwaSwgYmFzZV9hZGRyICYjNDM7IG9wLVx1MDAzZWR1bW15Lm5ieXRlcyAmIzQzO1xuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTcxMi1cdFx0XHRcdFx0XHQgICAgICAoaSAqIDgpKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzE1LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZWZ0X2RhdGE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcxNjpcdFx0XHRidWZbaV0gPSBhbWRfc3BpX3JlYWRyZWc4KGFtZF9zcGksIGJhc2VfYWRkciAmIzQzOyBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgJiM0MztcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MTctXHRcdFx0XHRcdFx0ICBuYnl0ZXMgJiM0MzsgaSAtIGxlZnRfZGF0YSk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTc5MT1zdGF0aWMgaW50IGFtZF9zcGlfc2V0dXBfaGlkZG1hKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTc5NS1cdC8qIEFsbG9jYXRlIERNQSBidWZmZXIgdG8gdXNlIGZvciBISUQgYmFzaWMgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucy4gRm9yIHdyaXRlXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6Nzk2Olx0ICogb3BlcmF0aW9ucywgdGhlIERNQSBidWZmZXIgc2hvdWxkIGluY2x1ZGUgdGhlIG9wY29kZSwgYWRkcmVzcyBieXRlcyBhbmQgZHVtbXlcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03OTctXHQgKiBieXRlcyhpZiBhbnkpIGluIGFkZGl0aW9uIHRvIHRoZSBkYXRhIGJ5dGVzLiBBZGRpdGlvbmFsbHksIHRoZSBoYXJkd2FyZSByZXF1aXJlc1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtOTEtXHRTUElGQ19BMV9VU0VSX0RVTU1ZX0VOQUJMRSB8IFxcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjkyOlx0RklFTERfUFJFUChTUElGQ19BMV9VU0VSX0RVTU1ZX01PREUsIGlsb2cyKChvcCktXHUwMDNlZHVtbXkuYnVzd2lkdGgpKSB8IFxcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjkzOlx0RklFTERfUFJFUChTUElGQ19BMV9VU0VSX0RVTU1ZX0NMS19TWUNMRVMsIChvcCktXHUwMDNlZHVtbXkubmJ5dGVzIFx1MDAzY1x1MDAzYyAzKSlcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtOTQtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0xODA9c3RhdGljIHZvaWQgYW1sb2dpY19zcGlmY19hMV9zZXRfYWRkcihzdHJ1Y3QgYW1sb2dpY19zcGlmY19hMSAqc3BpZmMsIHUzMiBhZGRyLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMTkyLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzoxOTM6c3RhdGljIHZvaWQgYW1sb2dpY19zcGlmY19hMV9zZXRfZHVtbXkoc3RydWN0IGFtbG9naWNfc3BpZmNfYTEgKnNwaWZjLFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzoxOTQ6XHRcdFx0XHQgICAgICAgdTMyIGR1bW15X2NmZylcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMTk1LXtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTE5OC1cdHZhbCBcdTAwMjY9IH4oU1BJRkNfQTFfVVNFUl9EVU1NWV9NT0RFIHwgU1BJRkNfQTFfVVNFUl9EVU1NWV9DTEtfU1lDTEVTKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MTk5Olx0dmFsIHw9IGR1bW15X2NmZztcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMjAwLVx0d3JpdGVsKHZhbCwgc3BpZmMtXHUwMDNlYmFzZSAmIzQzOyBTUElGQ19BMV9VU0VSX0NUUkwyX1JFRyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0yNTM9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTI3MS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjcyOlx0aWYgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcylcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjczOlx0XHRhbWxvZ2ljX3NwaWZjX2ExX3NldF9kdW1teShzcGlmYywgU1BJRkNfQTFfVVNFUl9EVU1NWShvcCkpO1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0yNzQtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYz0zMzc9c3RhdGljIGJvb2wgYW1sX3NmY19pc194aW9fb3AoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzUwLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNTE6c3RhdGljIGludCBhbWxfc2ZjX3NlbmRfY21kX2FkZHJfZHVtbXkoc3RydWN0IGFtbF9zZmMgKnNmYywgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNTIte1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNTM6XHR1MzIgZHVtbXlfY3ljbGUsIGNtZDtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzU0LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2My1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmM6MzY0Olx0aWYgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcykge1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNjUtXHRcdC8qICBEdW1teSBidXN3aWR0aCBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzY2LVx0XHRpZiAoYW1sX3NmY19pc194aW9fb3Aob3ApKVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNjc6XHRcdFx0ZHVtbXlfY3ljbGUgPSBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiA4IC8gb3AtXHUwMDNlZGF0YS5idXN3aWR0aDtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzY4LVx0XHRlbHNlXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM2OTpcdFx0XHRkdW1teV9jeWNsZSA9IG9wLVx1MDAzZWR1bW15Lm5ieXRlcyAqIDg7XG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM3MDpcdFx0Y21kID0gQ01EX0RVTU1ZKHNmYy1cdTAwM2Vjc19zZWwsIGR1bW15X2N5Y2xlIC0gMSk7XG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM3MS1cdFx0cmV0dXJuIHJlZ21hcF93cml0ZShzZmMtXHUwMDNlcmVnbWFwX2Jhc2UsIFNGQ19DTUQsIGNtZCk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYz03OTI9c3RhdGljIGludCBhbWxfc2ZjX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODAzLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzo4MDQ6XHRkZXZfZGJnKHNmYy1cdTAwM2VkZXYsIFwmIzM0O2NtZDoweCUwMnggLSBhZGRyOiUwOGxsWEAlZDoldSAtIGR1bW15OiVkOiV1IC0gZGF0YTolZDoldVwmIzM0OyxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODA1LVx0XHRvcC1cdTAwM2VjbWQub3Bjb2RlLCBvcC1cdTAwM2VhZGRyLnZhbCwgb3AtXHUwMDNlYWRkci5idXN3aWR0aCwgb3AtXHUwMDNlYWRkci5uYnl0ZXMsXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjgwNjpcdFx0b3AtXHUwMDNlZHVtbXkuYnVzd2lkdGgsIG9wLVx1MDAzZWR1bW15Lm5ieXRlcywgb3AtXHUwMDNlZGF0YS5idXN3aWR0aCwgb3AtXHUwMDNlZGF0YS5uYnl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MDctXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MTEtXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjgxMjpcdHJldCA9IGFtbF9zZmNfc2VuZF9jbWRfYWRkcl9kdW1teShzZmMsIG9wKTtcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTM0LSNkZWZpbmUgICBDVFJMX0lPX0FERFJFU1NfNEJcdFx0QklUKDEzKVx0LyogQVNUMjQwMCBTUEkgb25seSAqL1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzozNTojZGVmaW5lICAgQ1RSTF9JT19EVU1NWV9TRVQoZHVtbXkpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM2Olx0KCgoKChkdW1teSkgXHUwMDNlXHUwMDNlIDIpIFx1MDAyNiAweDEpIFx1MDAzY1x1MDAzYyAxNCkgfCAoKChkdW1teSkgXHUwMDI2IDB4MykgXHUwMDNjXHUwMDNjIDYpKVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0zNy0jZGVmaW5lICAgQ1RSTF9GUkVRX1NFTF9TSElGVFx0XHQ4XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYz0yMzk9c3RhdGljIHNzaXplX3QgYXNwZWVkX3NwaV9yZWFkX3VzZXIoc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTI0My1cdGludCBpb19tb2RlID0gYXNwZWVkX3NwaV9nZXRfaW9fbW9kZShvcCk7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI0NDpcdHU4IGR1bW15ID0gMHhGRjtcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMjQ1LVx0aW50IGk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNTMtXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NDpcdGlmIChvcC1cdTAwM2VkdW1teS5idXN3aWR0aCBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlZHVtbXkubmJ5dGVzKSB7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb3AtXHUwMDNlZHVtbXkubmJ5dGVzIC8gb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzoyNTY6XHRcdFx0YXNwZWVkX3NwaV93cml0ZV90b19haGIoY2hpcC1cdTAwM2VhaGJfYmFzZSwgXHUwMDI2ZHVtbXksXHRzaXplb2YoZHVtbXkpKTtcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMjU3LVx0fVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM9Mjg3PXN0YXRpYyBib29sIGFzcGVlZF9zcGlfc3VwcG9ydHNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yOTktXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjMwMDpcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgIT0gMCkge1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzozMDE6XHRcdGlmIChvcC1cdTAwM2VkdW1teS5idXN3aWR0aCBcdTAwM2UgMSB8fCBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgXHUwMDNlIDcpXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTMwMi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYz0zMTM9c3RhdGljIGludCBkb19hc3BlZWRfc3BpX2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0zNDAtXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM0MTpcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMpXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM0MjpcdFx0Y3RsX3ZhbCB8PSBDVFJMX0lPX0RVTU1ZX1NFVChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgLyBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTM0My1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTY5Nj1zdGF0aWMgaW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJtYXBfZGVzYyAqZGVzYylcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTcwOC1cdFx0b3AtXHUwMDNlY21kLm9wY29kZSwgb3AtXHUwMDNlY21kLmJ1c3dpZHRoLCBvcC1cdTAwM2VhZGRyLmJ1c3dpZHRoLFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzo3MDk6XHRcdG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoLCBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoLFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYzo3MTA6XHRcdG9wLVx1MDAzZWFkZHIubmJ5dGVzLCBvcC1cdTAwM2VkdW1teS5uYnl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy03MTEtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy03MjktXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMDpcdGlmIChvcC1cdTAwM2VkdW1teS5uYnl0ZXMpXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMTpcdFx0Y3RsX3ZhbCB8PSBDVFJMX0lPX0RVTU1ZX1NFVChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgLyBvcC1cdTAwM2VkdW1teS5idXN3aWR0aCk7XG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTczMi1cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmM9MTg2PXN0YXRpYyB2b2lkIGF0Y3NwaV9zZXRfdHJhbnNfY3RsKHN0cnVjdCBhdGNzcGlfZGV2ICpzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwNy1cdFx0aWYgKG9wLVx1MDAzZWRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTikge1xuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jOjIwODpcdFx0XHRpZiAob3AtXHUwMDNlZHVtbXkubmJ5dGVzKVxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwOS1cdFx0XHRcdHRjIHw9IFRSQU5TX01PREVfRE1ZX1JFQUQgfFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jOjIxMDpcdFx0XHRcdCAgICAgIFRSQU5TX0RVTU1ZX0NOVChvcC1cdTAwM2VkdW1teS5uYnl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIxMS1cdFx0XHRlbHNlXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0aDc5LmM9MTM3PXN0YXRpYyBpbnQgYXRoNzlfZXhlY19tZW1fb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRoNzkuYy0xNDctXHRpZiAob3AtXHUwMDNlY21kLm9wY29kZSAhPSAweDBiIHx8IG9wLVx1MDAzZWRhdGEuZGlyICE9IFNQSV9NRU1fREFUQV9JTiB8fFxuZHJpdmVycy9zcGkvc3BpLWF0aDc5LmM6MTQ4Olx0ICAgIG9wLVx1MDAzZWFkZHIubmJ5dGVzICE9IDMgfHwgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICE9IDEpXG5kcml2ZXJzL3NwaS9zcGktYXRoNzkuYy0xNDktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0zMTg9c3RhdGljIGJvb2wgYXRtZWxfc3BpX2lzX3YyKHN0cnVjdCBhdG1lbF9zcGkgKmFzKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTMyMy0vKlxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzI0OiAqIFNlbmQgYSBkdW1teSBtZXNzYWdlLlxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzI1LSAqXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzI4LSAqL1xuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzI5OnN0YXRpYyB2b2lkIGF0bWVsX3NwaV9zZW5kX2R1bW15KHN0cnVjdCBhdG1lbF9zcGkgKmFzLCBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBpbnQgY2hpcF9zZWxlY3QpXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0zMzAte1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTM4MC0gKiBwYWNrZXQgaXMgc2VudCwgb25jZSB0aGUgQ1MgaGFzIGFscmVhZHkgYmVlbiBhc3NlcnRlZC4gVGhlIHdvcmthcm91bmQgaXMgdG9cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jOjM4MTogKiBhdm9pZCB0aGlzIGJ5IHNlbmRpbmcgYSBmaXJzdCAoZHVtbXkpIG1lc3NhZ2UgYmVmb3JlIHRvZ2dsaW5nIHRoZSBDUyBzdGF0ZS5cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTM4Mi0gKi9cbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jPTM4Mz1zdGF0aWMgdm9pZCBjc19hY3RpdmF0ZShzdHJ1Y3QgYXRtZWxfc3BpICphcywgc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MTQtXHRcdFx0XHQvKlxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6NDE1Olx0XHRcdFx0ICogTmVlZCB0byBkaXNhYmxlIHRoZSBHUElPIGJlZm9yZSBzZW5kaW5nIHRoZSBkdW1teVxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtNDE2LVx0XHRcdFx0ICogbWVzc2FnZSBiZWNhdXNlIGl0IGlzIGFscmVhZHkgc2V0IGJ5IHRoZSBzcGkgY29yZS5cbi0tXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MTgtXHRcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoc3BpX2dldF9jc2dwaW9kKHNwaSwgMCksIDApO1xuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6NDE5Olx0XHRcdFx0YXRtZWxfc3BpX3NlbmRfZHVtbXkoYXMsIHNwaSwgY2hpcF9zZWxlY3QpO1xuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtNDIwLVx0XHRcdFx0YXMtXHUwMDNlbGFzdF9wb2xhcml0eSA9IG5ld19wb2xhcml0eTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM9Mzk5PXN0YXRpYyBpbnQgYXhfdHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rscixcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNDM0LVx0XHQgICAodHJhbnNmZXItXHUwMDNldHhfYnVmIFx1MDAyNlx1MDAyNiB0cmFuc2Zlci1cdTAwM2VyeF9idWYpKSB7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NDM1Olx0XHQvKiBSWCBtb2RlOiBnZW5lcmF0ZSBjbG9jayBieSBmaWxsaW5nIFRYIEZJRk8gd2l0aCBkdW1teSBieXRlc1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTQzNi1cdFx0ICogRnVsbC1kdXBsZXggbW9kZTogZ2VuZXJhdGUgY2xvY2sgYnkgZmlsbGluZyBUWCBGSUZPXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jPTU1ND1zdGF0aWMgaW50IGF4X3NwaV9tZW1fZXhlY19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTU3MC1cdFx0X19mdW5jX18sIG9wLVx1MDAzZWNtZC5vcGNvZGUsIG9wLVx1MDAzZWNtZC5idXN3aWR0aCwgb3AtXHUwMDNlYWRkci5idXN3aWR0aCxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1NzE6XHRcdG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoLCBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoLCBvcC1cdTAwM2VhZGRyLnZhbCxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01NzItXHRcdG9wLVx1MDAzZWRhdGEubmJ5dGVzKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNTc3LVx0ICAgIG9wLVx1MDAzZWFkZHIuYnVzd2lkdGggIT0gMSkgfHxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1Nzg6XHQgICAgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcyBcdTAwMjZcdTAwMjYgb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGggIT0gMCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1Nzk6XHQgICAgb3AtXHUwMDNlZHVtbXkuYnVzd2lkdGggIT0gMSkgfHxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01ODAtXHQgICAgKG9wLVx1MDAzZWRhdGEubmJ5dGVzIFx1MDAyNlx1MDAyNiBvcC1cdTAwM2VkYXRhLmJ1c3dpZHRoICE9IDEpKSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTYxNS1cbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo2MTY6XHQvKiBBZGQgZHVtbXkgYnl0ZXMgKGZvciBjbG9jayBnZW5lcmF0aW9uKSBvciBhY3R1YWwgZGF0YSBieXRlcyB0byBUWF9GSUZPICovXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNjE3LVx0aWYgKG9wLVx1MDAzZWRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTikge1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjYxODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb3AtXHUwMDNlZHVtbXkubmJ5dGVzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02MTktXHRcdFx0YXhfc3BpX3dyaXRlX2IoeHNwaSwgQVhfU1BJX1RYRklGTywgMHgwMCk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTY2NS1cdFx0ICogU2luY2Ugd2Ugc2V0IFNSSSwgd2Ugb25seSBuZWVkIHRvIGRpc2NhcmQgdGhlIGFkZHJlc3MgYnl0ZXMgYW5kXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NjY2Olx0XHQgKiBkdW1teSBieXRlcyBmcm9tIHRoZSBSWCBGSUZPLlxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTY2Ny1cdFx0ICovXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NjY4Olx0XHRieXRlc190b19kaXNjYXJkX2Zyb21fcnggPSBvcC1cdTAwM2VhZGRyLm5ieXRlcyAmIzQzOyBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNjY5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBieXRlc190b19kaXNjYXJkX2Zyb21fcng7IGkmIzQzOyYjNDM7KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYz02OTk9c3RhdGljIGludCBheF9zcGlfbWVtX2FkanVzdF9vcF9zaXplKHN0cnVjdCBzcGlfbWVtICptZW0sIHN0cnVjdCBzcGlfbWVtX29wICpvcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNzA4LVx0LyogQ2FsY3VsYXRlIHByb3RvY29sIG92ZXJoZWFkIGJ5dGVzIGFjY29yZGluZyB0byB0aGUgcmVhbCBvcGVyYXRpb24gZWFjaCB0aW1lLiAqL1xuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjcwOTpcdHByb3RvY29sX292ZXJoZWFkX2J5dGVzID0gb3AtXHUwMDNlY21kLm5ieXRlcyAmIzQzOyBvcC1cdTAwM2VhZGRyLm5ieXRlcyAmIzQzOyBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7XG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNzEwLVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTQxNj1zdGF0aWMgaW50IGJjbV9xc3BpX2JzcGlfc2V0X2ZsZXhfbW9kZShzdHJ1Y3QgYmNtX3FzcGkgKnFzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtNDMwLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM6NDMxOlx0aWYgKG9wLVx1MDAzZWR1bW15Lm5ieXRlcylcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjQzMjpcdFx0YnBwIHw9IChvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiA4KSAvIG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoO1xuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtNDMzLVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTExNTA9c3RhdGljIGludCBiY21fcXNwaV9tc3BpX2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtMTE2OC1cdHRbMF0udHhfYnVmID0gY21kO1xuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM6MTE2OTpcdHRbMF0ubGVuID0gb3AtXHUwMDNlYWRkci5uYnl0ZXMgJiM0Mzsgb3AtXHUwMDNlZHVtbXkubmJ5dGVzICYjNDM7IDE7XG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xMTcwLVx0dFswXS5iaXRzX3Blcl93b3JkID0gc3BpLVx1MDAzZWJpdHNfcGVyX3dvcmQ7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy0xMTMtICogRGVmYXVsdCB0cmFuc2ZlciBtb2RlIGlzIGF1dG8uIElmIHRoZSBtc2cgaXMgcHJlcGVuZGFibGUsIHVzZSB0aGUgcHJlcGVuZFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzoxMTQ6ICogbW9kZS4gIElmIG5vdCwgZmFsbHMgYmFjayB0byB1c2UgdGhlIGR1bW15IGNzIHdvcmthcm91bmQgbW9kZSBidXQgbGltaXQgdGhlXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTExNS0gKiBjbG9jayB0byAyNU1IeiB0byBtYWtlIHN1cmUgaXQgd29ya3MgaW4gYWxsIGJvYXJkIGRlc2lnbi5cbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jPTU2Nz1zdGF0aWMgaW50IGJjbTYzeHhfaHNzcGlfc2V0dXAoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYwMy1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjA0OnN0YXRpYyBpbnQgYmNtNjN4eF9oc3NwaV9kb19kdW1teV9jc190eHJ4KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYwNS1cdFx0XHRcdCAgICAgIHN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjA4LVx0aW50IHN0YXR1cyA9IC1FSU5WQUw7XG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYwOTpcdGludCBkdW1teV9jcztcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjEwLVx0Ym9vbCBrZWVwX2NzID0gZmFsc2U7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MTctXHQgKiBhLiBJbnZlcnQgdGhlIHRhcmdldCBjaGlwIHNlbGVjdCYjMzk7cyBwb2xhcml0eSBzbyBpdCB3aWxsIGJlIGFjdGl2ZS5cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjE4Olx0ICogYi4gU2VsZWN0IGEgXCYjMzQ7ZHVtbXlcJiMzNDsgY2hpcCBzZWxlY3QgdG8gdXNlIGFzIHRoZSBoYXJkd2FyZSB0YXJnZXQuXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYxOTpcdCAqIGMuIEludmVydCB0aGUgZHVtbXkgY2hpcCBzZWxlY3QmIzM5O3MgcG9sYXJpdHkgc28gaXQgd2lsbCBiZSBpbmFjdGl2ZVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MjAtXHQgKiAgICBkdXJpbmcgdGhlIGFjdHVhbCB0cmFuc2ZlcnMuXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyMTpcdCAqIGQuIFRlbGwgdGhlIGhhcmR3YXJlIHRvIHNlbmQgdG8gdGhlIGR1bW15IGNoaXAgc2VsZWN0LiBUaGFua3MgdG9cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjIyLVx0ICogICAgdGhlIG11bHRpcGxleGVkIG5hdHVyZSBvZiBTUEkgdGhlIGFjdHVhbCB0YXJnZXQgd2lsbCByZWNlaXZlXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MjctXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyODpcdGR1bW15X2NzID0gIXNwaV9nZXRfY2hpcHNlbGVjdChzcGksIDApO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2Mjk6XHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIHRydWUpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MzAtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MzQtXHRcdCAqIGEuIE1lc3NhZ2UgaXMgbm90IHByZXBlbmRhYmxlIGFuZCBpbiBkZWZhdWx0IGF1dG8geGZlciBtb2RlLiBUaGlzIG1lYW5cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjM1Olx0XHQgKiAgICB3ZSBmYWxsYmFjayB0byBkdW1teSBjcyBtb2RlIGF0IG1heGltdW0gMjVNSHogc2FmZSBjbG9jayByYXRlLlxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MzY6XHRcdCAqIGIuIFVzZXIgc2V0IHRvIHVzZSB0aGUgZHVtbXkgY3MgbW9kZS5cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjM3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY0MS1cdFx0XHRcdGRldl93YXJuX29uY2UoXHUwMDI2YnMtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjY0MjpcdFx0XHRcdFx0XCYjMzQ7Rm9yY2UgdG8gZHVtbXkgY3MgbW9kZS4gUmVkdWNlIHRoZSBzcGVlZCB0byAlZEh6XCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02NDMtXHRcdFx0XHRcdHQtXHUwMDNlc3BlZWRfaHopO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjczLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2NzQ6XHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIGZhbHNlKTtcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjc1LVx0aWYgKHN0YXR1cyB8fCAha2VlcF9jcylcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jPTY4MT1zdGF0aWMgaW50IGJjbTYzeHhfaHNzcGlfdHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdCxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTcwMy1cdFx0fSBlbHNlXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjcwNDpcdFx0XHRzdGF0dXMgPSBiY202M3h4X2hzc3BpX2RvX2R1bW15X2NzX3R4cngoc3BpLCBtc2cpO1xuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy03MDUtXHR9XG4tLVxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYz0yMTc9c3RhdGljIGludCBiY202M3h4X3R4cnhfYnVmcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICpmaXJzdCxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jLTI1Ni1cdFx0XHQgKlxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYzoyNTc6XHRcdFx0ICogVGhlcmVmb3JlLCBmb3IgcmVhZC1vbmx5IHRyYW5zZmVycywgd2UgbmVlZCB0byB3cml0ZSBzb21lIGR1bW15XG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jLTI1OC1cdFx0XHQgKiB2YWx1ZSBpbnRvIHRoZSBGSUZPIHRvIGtlZXAgdGhlIGFjY3VtdWxhdG9yIHRyYWNraW5nIHRoZSBjb3JyZWN0XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTM5OD1zdGF0aWMgdW5zaWduZWQgaW50IGNxc3BpX2NhbGNfcmRyZWcoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MDgtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NDA5OnN0YXRpYyB1bnNpZ25lZCBpbnQgY3FzcGlfY2FsY19kdW1teShjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDEwLXtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTE6XHR1bnNpZ25lZCBpbnQgZHVtbXlfY2xrO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxMi1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTM6XHRpZiAoIW9wLVx1MDAzZWR1bW15Lm5ieXRlcylcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTQtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxNS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTY6XHRkdW1teV9jbGsgPSBvcC1cdTAwM2VkdW1teS5uYnl0ZXMgKiAoOCAvIG9wLVx1MDAzZWR1bW15LmJ1c3dpZHRoKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTctXHRpZiAob3AtXHUwMDNlY21kLmR0cilcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTg6XHRcdGR1bW15X2NsayAvPSAyO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxOS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MjA6XHRyZXR1cm4gZHVtbXlfY2xrO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQyMS19XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTUzOD1zdGF0aWMgaW50IGNxc3BpX2NvbW1hbmRfcmVhZChzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU0Ny1cdHVuc2lnbmVkIGludCByZWc7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTQ4Olx0dW5zaWduZWQgaW50IGR1bW15X2NsaztcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NDktXHRzaXplX3QgcmVhZF9sZW47XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU3Mi1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1NzM6XHRkdW1teV9jbGsgPSBjcXNwaV9jYWxjX2R1bW15KG9wKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1NzQ6XHRpZiAoZHVtbXlfY2xrIFx1MDAzZSBDUVNQSV9EVU1NWV9DTEtTX01BWClcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NzUtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NzYtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTc3Olx0aWYgKGR1bW15X2NsaylcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1Nzg6XHRcdHJlZyB8PSAoZHVtbXlfY2xrIFx1MDAyNiBDUVNQSV9SRUdfQ01EQ1RSTF9EVU1NWV9NQVNLKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU3OS1cdFx0ICAgICBcdTAwM2NcdTAwM2MgQ1FTUElfUkVHX0NNRENUUkxfRFVNTVlfTFNCO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz02OTA9c3RhdGljIGludCBjcXNwaV9yZWFkX3NldHVwKHN0cnVjdCBjcXNwaV9mbGFzaF9wZGF0YSAqZl9wZGF0YSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNjk0LVx0dm9pZCBfX2lvbWVtICpyZWdfYmFzZSA9IGNxc3BpLVx1MDAzZWlvYmFzZTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo2OTU6XHR1bnNpZ25lZCBpbnQgZHVtbXlfY2xrID0gMDtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy02OTYtXHR1bnNpZ25lZCBpbnQgcmVnO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MTEtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzEyOlx0LyogU2V0dXAgZHVtbXkgY2xvY2sgY3ljbGVzICovXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzEzOlx0ZHVtbXlfY2xrID0gY3FzcGlfY2FsY19kdW1teShvcCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNzE0LVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxNTpcdGlmIChkdW1teV9jbGsgXHUwMDNlIENRU1BJX0RVTU1ZX0NMS1NfTUFYKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNy1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo3MTg6XHRpZiAoZHVtbXlfY2xrKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxOTpcdFx0cmVnIHw9IChkdW1teV9jbGsgXHUwMDI2IENRU1BJX1JFR19SRF9JTlNUUl9EVU1NWV9NQVNLKVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcyMC1cdFx0ICAgICAgIFx1MDAzY1x1MDAzYyBDUVNQSV9SRUdfUkRfSU5TVFJfRFVNTVlfTFNCO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xMDE3PXN0YXRpYyBpbnQgY3FzcGlfd3JpdGVfc2V0dXAoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xMDQ1LVx0ICogcGFzc2VkIGluIHRoZSBSZWFkIFNSIGNvbW1hbmQuIEFsc28sIHNvbWUgU1BJIE5PUiBmbGFzaGVzIGxpa2UgdGhlXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6MTA0NjpcdCAqIGN5cHJlc3MgU2VtcGVyIGZsYXNoIGV4cGVjdCBhIDQtYnl0ZSBkdW1teSBhZGRyZXNzIGluIHRoZSBSZWFkIFNSXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTA0Ny1cdCAqIGNvbW1hbmQgaW4gRFRSIG1vZGUuXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTEwNzQ9c3RhdGljIGludCBjcXNwaV9pbmRpcmVjdF93cml0ZV9leGVjdXRlKHN0cnVjdCBjcXNwaV9mbGFzaF9wZGF0YSAqZl9wZGF0YSxcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTExMi1cdCAqIElmIGEgaGF6YXJkIGV4aXN0cyBiZXR3ZWVuIHRoZSBBUEIgYW5kIEFIQiBpbnRlcmZhY2VzLCBwZXJmb3JtIGFcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMTEzOlx0ICogZHVtbXkgcmVhZGJhY2sgZnJvbSB0aGUgY29udHJvbGxlciB0byBlbnN1cmUgc3luY2hyb25pemF0aW9uLlxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTExMTQtXHQgKi9cbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM9MTMyNT1zdGF0aWMgc3NpemVfdCBjcXNwaV93cml0ZShzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzMzgtXHQvKlxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjEzMzk6XHQgKiBTb21lIGZsYXNoZXMgbGlrZSB0aGUgQ3lwcmVzcyBTZW1wZXIgZmxhc2ggZXhwZWN0IGEgZHVtbXkgNC1ieXRlXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTM0MC1cdCAqIGFkZHJlc3MgKGFsbCAwcykgd2l0aCB0aGUgcmVhZCBzdGF0dXMgcmVnaXN0ZXIgY29tbWFuZCBpbiBEVFIgbW9kZS5cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMzQxOlx0ICogQnV0IHRoaXMgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IHNlbmRpbmcgZHVtbXkgYWRkcmVzcyBieXRlcyB0b1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzNDItXHQgKiB0aGUgZmxhc2ggd2hlbiBpdCBpcyBwb2xsaW5nIHRoZSB3cml0ZSBjb21wbGV0aW9uIHJlZ2lzdGVyIGluIERUUlxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xNTE2PXN0YXRpYyBib29sIGNxc3BpX3N1cHBvcnRzX21lbV9vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xNTIyLVx0LypcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxNTIzOlx0ICogb3AtXHUwMDNlZHVtbXkuZHRyIGlzIHJlcXVpcmVkIGZvciBjb252ZXJ0aW5nIG5ieXRlcyBpbnRvIG5jeWNsZXMuXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyNC1cdCAqIEFsc28sIGRvbiYjMzk7dCBjaGVjayB0aGUgZHRyIGZpZWxkIG9mIHRoZSBvcCBwaGFzZSBoYXZpbmcgemVybyBuYnl0ZXMuXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTE1MjctXHRcdCAgICghb3AtXHUwMDNlYWRkci5uYnl0ZXMgfHwgb3AtXHUwMDNlYWRkci5kdHIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjE1Mjg6XHRcdCAgICghb3AtXHUwMDNlZHVtbXkubmJ5dGVzIHx8IG9wLVx1MDAzZWR1bW15LmR0cikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyOS1cdFx0ICAgKCFvcC1cdTAwM2VkYXRhLm5ieXRlcyB8fCBvcC1cdTAwM2VkYXRhLmR0cik7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUzMC1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxNTMxOlx0YWxsX2ZhbHNlID0gIW9wLVx1MDAzZWNtZC5kdHIgXHUwMDI2XHUwMDI2ICFvcC1cdTAwM2VhZGRyLmR0ciBcdTAwMjZcdTAwMjYgIW9wLVx1MDAzZWR1bW15LmR0ciBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xNTMyLVx0XHQgICAgIW9wLVx1MDAzZWRhdGEuZHRyO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy0xODEtXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6MTgyOiNkZWZpbmUgQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfMyhvcCwgZHVtbXlieXRlcykgKCBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4My1cdEZJRUxEX1BSRVAoQ0ROU19YU1BJX0NNRF9EU0VRX1IzX0RDTlRfSCwgXFxcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtMTg1LVx0RklFTERfUFJFUChDRE5TX1hTUElfQ01EX0RTRVFfUjNfTlVNX09GX0RVTU1ZLCBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NjpcdFx0ICAob3ApLVx1MDAzZWR1bW15LmJ1c3dpZHRoICE9IDAgPyBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NzpcdFx0ICAoKChkdW1teWJ5dGVzKSAqIDgpIC8gKG9wKS1cdTAwM2VkdW1teS5idXN3aWR0aCkgOiBcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4OC1cdFx0ICAwKSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM9NzE5PXN0YXRpYyBpbnQgY2Ruc194c3BpX3NlbmRfc3RpZ19jb21tYW5kKHN0cnVjdCBjZG5zX3hzcGlfZGV2ICpjZG5zX3hzcGksXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTcyNS1cdGludCByZXQ7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6NzI2Olx0aW50IGR1bW15Ynl0ZXMgPSBvcC1cdTAwM2VkdW1teS5uYnl0ZXM7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzI3LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NDAtXHRjbWRfcmVnc1syXSA9IENETlNfWFNQSV9DTURfRkxEX1AxX0lOU1RSX0NNRF8yKG9wKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NDE6XHRpZiAoZHVtbXlieXRlcyAhPSAwKSB7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzQyLVx0XHRjbWRfcmVnc1szXSA9IENETlNfWFNQSV9DTURfRkxEX1AxX0lOU1RSX0NNRF8zKG9wLCAxKTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NDM6XHRcdGR1bW15Ynl0ZXMtLTtcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NDQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NTUtXHRcdGNtZF9yZWdzWzJdID0gQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfMihvcCk7XG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6NzU2Olx0XHRjbWRfcmVnc1szXSA9IENETlNfWFNQSV9DTURfRkxEX0RTRVFfQ01EXzMob3AsIGR1bW15Ynl0ZXMpO1xuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTc1Ny1cdFx0Y21kX3JlZ3NbNF0gPSBDRE5TX1hTUElfQ01EX0ZMRF9EU0VRX0NNRF80KG9wLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM9NjI1PXN0YXRpYyBpbnQgZGF2aW5jaV9zcGlfYnVmcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNjkyLVx0XHRcdCAqIG1hbnkgU0cgZW50cmllcyAoXHUwMDNlIDIwKSwgdXNlIHRoZSByeCBidWZmZXIgYXMgdGhlXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jOjY5MzpcdFx0XHQgKiBkdW1teSB0eCBidWZmZXIgc28gdGhhdCBkbWEgcmVsb2FkcyBhcmUgZG9uZSBhdCB0aGVcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNjk0LVx0XHRcdCAqIHNhbWUgdGltZSBmb3IgcnggYW5kIHR4LlxuLS1cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNzcwLS8qKlxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYzo3NzE6ICogZHVtbXlfdGhyZWFkX2ZuIC0gZHVtbXkgdGhyZWFkIGZ1bmN0aW9uXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3Mi0gKiBAaXJxOiBJUlEgbnVtYmVyIGZvciB0aGlzIFNQSSBNYXN0ZXJcbi0tXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3Ny0gKi9cbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM6Nzc4OnN0YXRpYyBpcnFyZXR1cm5fdCBkdW1teV90aHJlYWRfZm4oczMyIGlycSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNzc5LXtcbi0tXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jPTkyMj1zdGF0aWMgaW50IGRhdmluY2lfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYy05NzctXHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBkc3BpLVx1MDAzZWlycSwgZGF2aW5jaV9zcGlfaXJxLFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYzo5Nzg6XHRcdFx0XHRkdW1teV90aHJlYWRfZm4sIDAsIGRldl9uYW1lKFx1MDAyNnBkZXYtXHUwMDNlZGV2KSwgZHNwaSk7XG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTk3OS1cdGlmIChyZXQpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0NDcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG9hX3RjNl9zdGFydF94bWl0YCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdG8gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzIGBvYV90YzZfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIHRoZSBgc3BpLWxvb3BiYWNrLXRlc3QuY2AgZHJpdmVyIGNvdWxkIGJlIHVzZWQgdG8gc29tZWhvdyByZWFjaCBpdCwgYnV0IHRoYXQgc2VlbXMgbGlrZSBhIGRlYWQgZW5kLiBJJiMzOTttIHJlbWluZGVkIG9mIGEgc2l0dWF0aW9uIHdoZXJlIEkgc2hvdWxkIHJldHVybiBgZmFsc2VgIGZvciBgV29ydGhGdXp6aW5nYCBpZiB0aGUgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbCBlbnZpcm9ubWVudHM7IEkmIzM5O2xsIGtlZXAgdGhpcyBpbiBtaW5kLgoKTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGlzIGFib3V0IHZpcnR1YWwgU1BJIGNvbnRyb2xsZXJzLiBJIGNoZWNrZWQgZm9yIGEgdmlydHVhbCBjb250cm9sbGVyLiBJIGRpc21pc3NlZCBgc3BpLW1vY2suY2AgYW5kIHRoZW4gdGhvdWdodCBhYm91dCBgc3BpLWdwaW8uY2AsIHRoZSBiaXRiYW5naW5nIFNQSSBjb250cm9sbGVyLiBDYW4gc3l6a2FsbGVyIGluc3RhbnRpYXRlIHNvbWV0aGluZyBsaWtlIGBzcGktZ3Bpb2A/IEkga25vdyB0aGF0IHN5emthbGxlciAqY2FuKiB1c2UgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgdmlydHVhbCwgYnV0IGZvciBHUElPIGl0IG5lZWRzIGBncGlvLW1vY2t1cGAgb3IgYGdwaW8tc2ltYC4gSWYgSSBjb3VsZCB1c2UgYGdwaW8tc2ltYCwgdGhlbiB0aGVvcmV0aWNhbGx5IEkgY291bGQgaW5zdGFudGlhdGUgYHNwaS1ncGlvYCBvbiB0b3Agb2YgaXQgdXNpbmcgZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgcGxhdGZvcm0gZGF0YS4gQnV0IHdhaXQsIHN5emthbGxlciBkb2VzbiYjMzk7dCBjdXJyZW50bHkgaGFuZGxlIGRldmljZSB0cmVlIG92ZXJsYXlzIGZvciBgc3BpLWdwaW9gLiBUaGlzIG1lYW5zIHRoYXQgYHNwaS1ncGlvYCBpcyBub3QgYW4gb3B0aW9uLiBBbHNvLCB3aGlsZSBzeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rYCBhbmQgb3RoZXIgc3VwcG9ydCBmb3Igb3RoZXIgdGhpbmdzLCB0aGVyZSYjMzk7cyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSBTUEkgZGV2aWNlcy4KCk9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2suIEkgcmVhbGl6ZSB0aGF0IGBvYV90YzZgIGlzIGEgbGlicmFyeSBhbmQgaXQmIzM5O3Mgb25seSB1c2VkIGJ5IHRoZSBgbGFuODY1eGAgZHJpdmVyLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgbGFuODY1eGAgaXMgaW5zdGFudGlhYmxlLiBJIHNlZSB0aGF0IGl0IGhhcyBhIGRldmljZSB0cmVlIG1hdGNoOiBgbWljcm9jaGlwLGxhbjg2NTBgLiBXaXRob3V0IGRldmljZSB0cmVlIG92ZXJsYXlzLCBpdCB3b24mIzM5O3QgYmUgcHJvYmVkLiBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB0aG9zZSBvdmVybGF5cyB0byBsb2FkIFNQSSBkZXZpY2VzLgoKU28sIHRoZSBuZXh0IHRoaW5nIHRoYXQgSSBuZWVkIHRvIGRvIGlzIHRvIGNoZWNrIGlmIGBvYV90YzZfc3RhcnRfeG1pdGAgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlIHRocm91Z2ggKmFub3RoZXIqIHBhdGguIEl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBhIHBvc3NpYmlsaXR5LiBIb3dldmVyLCBJIHJlYWxpemUgb25seSBgbGFuODY1eGAgY2FsbHMgYG9hX3RjNl9pbml0YC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBsYW44NjV4YCBpcyAqb25seSogdGhlIGNhbGxlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2FfdGM2X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0PTQ1ND1UaGUgaW5jbHVkZS9saW51eC9vYV90YzYuaCBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1NS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdDo0NTY6Li4gYzpmdW5jdGlvbjo6IHN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIFxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3QtNDU3LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0zMzM9c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDk6XHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXHRpZiAoIXByaXYtXHUwMDNldGM2KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzE0LSAqIEBzcGk6IGRldmljZSB3aXRoIHdoaWNoIGRhdGEgd2lsbCBiZSBleGNoYW5nZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMjA6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE0MjQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTQyNTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxuLS1cbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9MTM9c3RydWN0IG9hX3RjNjtcbmluY2x1ZGUvbGludXgvb2FfdGM2LmgtMTQtXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oOjE1OnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNi12b2lkIG9hX3RjNl9leGl0KHN0cnVjdCBvYV90YzYgKnRjNik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAxOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTUxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBsYW44NjV4YCBpbiBhIFRlc3RpbmcgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSBzZWUgdGhhdCB0aGUgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQgaXMgb25seSBjYWxsZWQgYnkgYGxhbjg2NXhgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiBgbGFuODY1eGAgd2l0aGluIHRoZSB0ZXN0IGVudmlyb25tZW50PyBMZXQmIzM5O3Mgc2VlLi4uIEl0JiMzOTtzIGFuIFNQSSBkcml2ZXIsIHJpZ2h0PyBUaGF0JiMzOTtzIGtleS4gVGhlIG5vdGVzIHNwZWNpZmljYWxseSBtZW50aW9uIGNvZGUgcGF0aHMgYmVpbmcgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSDigJMgdGhpbmsgVVNCIGdhZGdldHMgb3IgYG1hYzgwMjExX2h3c2ltYC4gSW4gb3VyIGNhc2UsIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGFueSBzb2Z0d2FyZS1lbXVsYXRlZCBTUEkgaGFyZHdhcmUgY2FwYWJsZSBvZiBpbnN0YW50aWF0aW5nIGBsYW44NjV4YCwgbWFraW5nIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggc2VlbSBpbXBvc3NpYmxlIHRvIHRyaWdnZXIuCgpCdXQsIGhvbGQgb24uIElzIHRoZXJlICphbnkqIG90aGVyIHdheSB0byBpbmplY3QgYW4gU1BJIGRldmljZSBpbnRvIHRoZSBzeXN0ZW0/IENhbiB3ZSB1c2Ugc3lzZnMgc29tZWhvdz8gSSBrbm93IGBzcGlfYm9hcmRfaW5mb2AgZXhpc3RzLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSByZWdpc3RlciBhIGRldmljZSwgYnV0IHRoYXQmIzM5O3MgdXN1YWxseSBoYW5kbGVkIGJ5IHRoZSBib2FyZC1zcGVjaWZpYyBjb2RlLiBXaGF0IGFib3V0IGBzcGlkZXZgPyBObywgdGhhdCBqdXN0IGV4cG9zZXMgZXhpc3RpbmcgU1BJIGRldmljZXMgdG8gdXNlcnNwYWNlOyBpdCBkb2VzbiYjMzk7dCBjcmVhdGUgbmV3IG9uZXMuIEkgd2FzIGhvcGluZyBmb3Igc29tZXRoaW5nIGxpa2UgYHNwaS1tb2NrYCwgYnV0IEkmIzM5O3ZlIGFscmVhZHkgY2hlY2tlZCwgYW5kIGl0IGRvZXNuJiMzOTt0IGV4aXN0LgoKV2FpdC4uLiBJIG5lZWQgdG8gcmV0aGluayB0aGlzLiBNYXliZSB0aGVyZSYjMzk7cyBhIGRpZmZlcmVudCBzeXNmcyBpbnRlcmZhY2Ug4oCTIHBlcmhhcHMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHNwaV9uZXdfZGV2aWNlYCBvciBhIHNpbWlsYXIgY2FsbCB0aGF0IGFsbG93cyBkZXZpY2UgaW5zdGFudGlhdGlvbj8gTGV0IG1lIGNoZWNrIGludG8gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3BpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc0LVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNzU6XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIFx1MDAyNmJvYXJkX2luZm8pKSB7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3Ni1cdFx0ZGV2X2VycihkZXYsIFwmIzM0OyVzIGZhaWxlZCB0byBjcmVhdGUgU1BJIGRldmljZTogJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jPTM1PXN0YXRpYyBpbnQgYWx0ZXJhX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMTktXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBkYXRhLVx1MDAzZW51bV9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jOjEyMDpcdFx0XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVx1MDAzZWRldmljZXMgJiM0MzsgaSkpXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTIxLVx0XHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jPTE3Nj1zdGF0aWMgdm9pZCBidXR0ZXJmbHlfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjUtXHRwcC1cdTAwM2VpbmZvWzBdLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jOjI2NjpcdHBwLVx1MDAzZWRhdGFmbGFzaCA9IHNwaV9uZXdfZGV2aWNlKHBwLVx1MDAzZWJpdGJhbmcuY3RsciwgXHUwMDI2cHAtXHUwMDNlaW5mb1swXSk7XG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY3LVx0aWYgKHBwLVx1MDAzZWRhdGFmbGFzaClcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYz0xNDE9c3RhdGljIGludCBjaDM0MV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDYtXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYzoyMDc6XHRjaDM0MS1cdTAwM2VzcGlkZXYgPSBzcGlfbmV3X2RldmljZShjdHJsLCBcdTAwMjZjaGlwKTtcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwOC1cdGlmICghY2gzNDEtXHUwMDNlc3BpZGV2KSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYz0zMTM9c3RhdGljIGludCBjczQybDQzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI3LVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0Mjg6XHRcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cdTAwM2VjdGxyLCBhbXBsX2luZm8pKVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjktXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cdTAwM2VkZXYsIC1FTk9ERVYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzEtXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQzMjpcdFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVx1MDAzZWN0bHIsIGFtcHJfaW5mbykpXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMy1cdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldiwgLUVOT0RFVixcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYz0xMzc1PXN0YXRpYyBpbnQgaW50ZWxfc3BpX3BvcHVsYXRlX2NoaXAoc3RydWN0IGludGVsX3NwaSAqaXNwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAxLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQwMjpcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cdTAwM2Vob3N0LCBcdTAwMjZjaGlwKSlcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDMtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzAtXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDMxOlx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVx1MDAzZWhvc3QsIFx1MDAyNmNoaXApKVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMi1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM9MzEwPXN0YXRpYyBpbnQga3NwaTJfcmVnaXN0ZXJfZGV2aWNlcyhzdHJ1Y3Qga3NwaTIgKmtzcGkpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mga3NwaS1cdTAwM2VhdXhkZXYtXHUwMDNlaW5mb19zaXplOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzE3Olx0XHRzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2aWNlID0gc3BpX25ld19kZXZpY2Uoa3NwaS1cdTAwM2Vob3N0LCBcdTAwMjZpbmZvW2ldKTtcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxOC1cbi0tXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jPTE4OD1zdGF0aWMgdm9pZCBzcGlfbG03MGxscF9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjYtXHRwcC1cdTAwM2VpbmZvLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNjc6XHRwcC1cdTAwM2VzcGlkZXZfbG03MCA9IHNwaV9uZXdfZGV2aWNlKHBwLVx1MDAzZWJpdGJhbmcuY3RsciwgXHUwMDI2cHAtXHUwMDNlaW5mbyk7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2OC1cdGlmIChwcC1cdTAwM2VzcGlkZXZfbG03MClcbi0tXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3MS1cdGVsc2Uge1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNzI6XHRcdGRldl93YXJuKFx1MDAyNnBkLVx1MDAzZWRldiwgXCYjMzQ7c3BpX25ld19kZXZpY2UgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjczLVx0XHRzdGF0dXMgPSAtRU5PREVWO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYz00MDI9c3RhdGljIGludCB4aWxpbnhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUwOS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGRhdGEtXHUwMDNlbnVtX2RldmljZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jOjUxMDpcdFx0XHRzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cdTAwM2VkZXZpY2VzICYjNDM7IGkpO1xuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUxMS1cdH1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz03ODg9RVhQT1JUX1NZTUJPTF9HUEwoc3BpX2FkZF9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTc5MC0vKipcbmRyaXZlcnMvc3BpL3NwaS5jOjc5MTogKiBzcGlfbmV3X2RldmljZSAtIGluc3RhbnRpYXRlIG9uZSBuZXcgU1BJIGRldmljZVxuZHJpdmVycy9zcGkvc3BpLmMtNzkyLSAqIEBjdGxyOiBDb250cm9sbGVyIHRvIHdoaWNoIGRldmljZSBpcyBjb25uZWN0ZWRcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy04MDMtICovXG5kcml2ZXJzL3NwaS9zcGkuYzo4MDQ6c3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcbmRyaXZlcnMvc3BpL3NwaS5jLTgwNS1cdFx0XHRcdCAgc3RydWN0IHNwaV9ib2FyZF9pbmZvICpjaGlwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTg1OS19XG5kcml2ZXJzL3NwaS9zcGkuYzo4NjA6RVhQT1JUX1NZTUJPTF9HUEwoc3BpX25ld19kZXZpY2UpO1xuZHJpdmVycy9zcGkvc3BpLmMtODYxLVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTg5MD1zdGF0aWMgdm9pZCBzcGlfbWF0Y2hfY29udHJvbGxlcl90b19ib2FyZGluZm8oc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTg5Ny1cbmRyaXZlcnMvc3BpL3NwaS5jOjg5ODpcdGRldiA9IHNwaV9uZXdfZGV2aWNlKGN0bHIsIGJpKTtcbmRyaXZlcnMvc3BpL3NwaS5jLTg5OS1cdGlmICghZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ5NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBoaXR0aW5nIGEgcm9hZGJsb2NrLiBJdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIG5vIHN0cmFpZ2h0Zm9yd2FyZCBzeXNmcyBpbnRlcmZhY2UsIGxpa2Ugd2Ugb2Z0ZW4gc2VlIHdpdGggb3RoZXIgYnVzc2VzLCB0byBqdXN0ICpwb29mKiBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgU1BJIGRldmljZS4gSSB3YXMgcmVhbGx5IGhvcGluZyBmb3Igc29tZXRoaW5nIGNsZWFuIGFuZCBkeW5hbWljLCBidXQgaXQgc2VlbXMgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UuCgpXYWl0IGEgc2Vjb25k4oCmIGhvbGQgb24uIFBlcmhhcHMgSSYjMzk7bSBiZWluZyB0b28gcGVzc2ltaXN0aWMuIFRoZXJlIG1pZ2h0IGJlIGEgaGlkZGVuLCBtb3JlIEkyQy1saWtlIGFwcHJvYWNoIHVzaW5nIGEgYG5ld19kZXZpY2VgIGF0dHJpYnV0ZSwgc29tZSBjbGV2ZXIgbWVjaGFuaXNtIHR1Y2tlZCBhd2F5LiBJdCB3b3VsZG4mIzM5O3QgYmUgY29tcGxldGVseSBvdXQgb2YgY2hhcmFjdGVyIGZvciB0aGUga2VybmVsIHRvIGRvIHNvbWV0aGluZyBhIGxpdHRsZSBkaWZmZXJlbnQgZm9yIFNQSS4KClJpZ2h0LCBsZXQmIzM5O3Mgc3RvcCBzcGVjdWxhdGluZyBhbmQgZ2V0IHRvIHRoZSBzb3VyY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9zcGkuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2sgdG8gc2VlIHdoYXQgdGhlIHJlYWxpdHkgaXMgYW5kIGVpdGhlciBjb25maXJtIG15IHN1c3BpY2lvbiBvciBmaWd1cmUgb3V0IGEgbmV3IHNvbHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvc3BpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvc3BpLmM9Nzg4PUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy03OTAtLyoqXG5kcml2ZXJzL3NwaS9zcGkuYzo3OTE6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTc5Mi0gKiBAY3RscjogQ29udHJvbGxlciB0byB3aGljaCBkZXZpY2UgaXMgY29ubmVjdGVkXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtODAzLSAqL1xuZHJpdmVycy9zcGkvc3BpLmM6ODA0OnN0cnVjdCBzcGlfZGV2aWNlICpzcGlfbmV3X2RldmljZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG5kcml2ZXJzL3NwaS9zcGkuYy04MDUtXHRcdFx0XHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy04NTktfVxuZHJpdmVycy9zcGkvc3BpLmM6ODYwOkVYUE9SVF9TWU1CT0xfR1BMKHNwaV9uZXdfZGV2aWNlKTtcbmRyaXZlcnMvc3BpL3NwaS5jLTg2MS1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz04OTA9c3RhdGljIHZvaWQgc3BpX21hdGNoX2NvbnRyb2xsZXJfdG9fYm9hcmRpbmZvKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rscixcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy04OTctXG5kcml2ZXJzL3NwaS9zcGkuYzo4OTg6XHRkZXYgPSBzcGlfbmV3X2RldmljZShjdGxyLCBiaSk7XG5kcml2ZXJzL3NwaS9zcGkuYy04OTktXHRpZiAoIWRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOTAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEluc3RhbnRpYXRpbmcgdGhlIExBTjg2NXggU1BJIERldmljZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBkeW5hbWljYWxseSBicmluZyB1cCB0aGlzIGBsYW44NjV4YCBTUEkgZGV2aWNlLCByaWdodD8gRmlyc3QgdGhvdWdodCBpcywgaXNuJiMzOTt0IHRoZXJlIHVzdWFsbHkgYSBgbmV3X2RldmljZWAgZW50cnkgaW4gc3lzZnMgZm9yIFNQST8gTm9wZSwgbm90aGluZyB0aGVyZS4gU28sIEkgY2FuJiMzOTt0IHRyaWdnZXIgaXQgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEhtbSwgbWF5YmUgc3l6a2FsbGVyIGhhcyBhIHRyaWNrIHVwIGl0cyBzbGVldmUuIExldCBtZSBjaGVjay4uLgoKU3l6a2FsbGVyIHVzZXMgYHN5el9kZXZfc3BpYCwgYnV0IHRoYXQganVzdCBpbnRlcmZhY2VzIHdpdGggZXhpc3RpbmcgYC9kZXYvc3BpZGV2WC5ZYCBub2Rlcy4gVXNlbGVzcy4gV2FpdCBhIHNlY29uZCwgZGlkbiYjMzk7dCBpdCBoYXZlIHNvbWV0aGluZyBmb3IgVVNCPyBBaCwgYHN5el91c2JfY29ubmVjdGAhIENvdWxkIEkgZmluZCBhIFVTQiB0byBTUEkgYnJpZGdlIGRldmljZSB0aGF0IEkgY291bGQgaW5zdGFudGlhdGUgdGhyb3VnaCBzeXprYWxsZXIsIGFuZCB0aGVuIHNvbWVob3cgZ2V0IHRoZSBgbGFuODY1eGAgZHJpdmVyIHRvIHByb2JlIHRoZSBicmlkZ2U/IExldCYjMzk7cyBpbnZlc3RpZ2F0ZSB0aGUgZXhpc3RpbmcgVVNCLXRvLVNQSSBkcml2ZXJzLgoKTGV0JiMzOTtzIGxvb2sgYXQgYHNwaS1jaDM0MS5jYCBhbmQgYHNwaS1kbG4yLmNgLiBPa2F5LCBgc3BpLWNoMzQxLmNgICppcyogYSBVU0ItdG8tU1BJIGJyaWRnZS4gQnV0IGRvZXMgaXQgaW5zdGFudGlhdGUgdGhlIHRhcmdldCBkZXZpY2U/IE5vcGUsIGl0IGp1c3QgY3JlYXRlcyBhIGBzcGlkZXZgIGVudHJ5LCBsaWtlIEkgZXhwZWN0ZWQuIFNhbWUgZm9yIGBzcGktZGxuMi5jYC4gU28sIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gTm8gbHVjayB3aXRoIHRoZSBVU0Igcm91dGUuCgpCYXNpY2FsbHksIGlmIHRoaXMgYGxhbjg2NXhgIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBgb2FfdGM2X2luaXRgLCB0aGUgYG9hX3RjNmAgY29kZSBpcyB1bnJlYWNoYWJsZSwgcmlnaHQ/IFRoYXQgbG9va3MgbGlrZSB0aGUgc2l0dWF0aW9uLiBXYWl0LCBpcyB0aGVyZSAqYW55KiBvdGhlciBwbGFjZSB0aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24/IExldCBtZSBjaGVjayBxdWlja2x5IGlmIHRoZXJlIGFyZSBvdGhlciBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYV90YzZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q9NDU0PVRoZSBpbmNsdWRlL2xpbnV4L29hX3RjNi5oIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3QtNDU1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0OjQ1NjouLiBjOmZ1bmN0aW9uOjogc3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgXFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMzEwPUVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9zdGFydF94bWl0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMxMzogKiBvYV90YzZfaW5pdCAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb2FfdGM2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzE5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE0MjYtXG4tLVxuaW5jbHVkZS9saW51eC9vYV90YzYuaD0xMz1zdHJ1Y3Qgb2FfdGM2O1xuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNC1cbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg6MTU6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTE2LXZvaWQgb2FfdGM2X2V4aXQoc3RydWN0IG9hX3RjNiAqdGM2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1MzkKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogNzAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBvYV90YzYuY2AsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQsIGlzIGEgbGlicmFyeSBzcGVjaWZpY2FsbHkgZm9yIGFuIFNQSSBFdGhlcm5ldCBNQUMtUEhZLiBUaGUgY29kZSB0aGF0IGNhbGxzIGl0IGlzIHRoZSBgbGFuODY1eGAgZHJpdmVyLCB3aGljaCBpcyBhbHNvIGFuIFNQSSBkZXZpY2UgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/CgpJbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCAmIzM0O05vIHdheS4mIzM0OyBUaGVyZSYjMzk7cyBubyBzdGFuZGFyZCBtZWNoYW5pc20gZm9yIGRpcmVjdGx5IGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IFNQSSBkZXZpY2VzIGluIHRoZXNlIGVudmlyb25tZW50cy4gV2UgY2FuJiMzOTt0IGp1c3QgbWFnaWNhbGx5IGNyZWF0ZSBhbiBgbGFuODY1eGAgaW5zdGFuY2UuICBNeSBmaXJzdCBpbnN0aW5jdCB3YXMgdGhhdCBzeXprYWxsZXIgY291bGRuJiMzOTt0IHRyaWdnZXIgdGhpcyBjb2RlIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzIGZvciBTUEkgZGV2aWNlcy4gRXZlbiBpZiBpdCAqY291bGQqLCB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gIEFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgU1BJIHRoYXQgd291bGQgbGV0IHVzIGNyZWF0ZSBhcmJpdHJhcnkgZGV2aWNlcy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGNoZWNrZWQgZm9yIG90aGVyIHdheXMgdG8gcmVhY2ggYG9hX3RjNmAgLSBsaWtlIGBuZXRkZXZzaW1gIGFuZCBgZHVtbXlgIG5ldGRldi4gTm90aGluZy4KClNvLCBJIGNpcmNsZWQgYmFjayB0byBjb25maXJtIG15IGFuYWx5c2lzLiBUaGUgYGxhbjg2NXhgIGRyaXZlciwgYmVpbmcgYW4gU1BJIGRyaXZlciwgKnJlcXVpcmVzKiBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEl0IG5lZWRzIHRvIGJlIHByZXNlbnQgaW4gdGhlIGRldmljZSB0cmVlIG9yIGJvYXJkIGluZm8uICBRRU1VL0dDRSBkb24mIzM5O3QgcHJvdmlkZSB0aGlzIGhhcmR3YXJlLCBhbmQgd2UgY2FuJiMzOTt0IHNvZnR3YXJlLWVtdWxhdGUgYW4gYXJiaXRyYXJ5IFNQSSBidXMgZm9yIHRoaXMgcHVycG9zZS4gVGhlIGBsYW44NjV4X2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfc3BpX2RyaXZlcmAsIGFuZCBpdHMgcHJvYmUgZnVuY3Rpb24sIGBsYW44NjV4X3Byb2JlYCwgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGVyZSYjMzk7cyBhIGNvbXBhdGlibGUgZGV2aWNlIHByZXNlbnQuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBgb2FfdGM2X2luaXRgIChhbmQgYnkgZXh0ZW5zaW9uIHRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCkgd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZC4gVGhleSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBvdXIgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFNvLCBjb25zaWRlcmluZyB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmdgLCBJIGFtIGNvbmZpZGVudCB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IHJlc3BvbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG9hX3RjNiBsaWJyYXJ5IChPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgU1BJKSwgd2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZSBsYW44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIuIFNpbmNlIFNQSSBkZXZpY2VzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICh1bmxpa2UgVVNCIHZpYSB2aGNpIG9yIFdpLUZpIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoZSBsYW44NjV4IGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6Mjk6MzAuNTI5NzE4ODE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgxNjQ5NjA5MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6Mjk6MzAuNTI5NzIyOTY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTE5OTAzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NWEyMjk0MjkwMDdkZTNiNWEyNWE3N2I4MWExMDVmMmI4MjA0ZDg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjI5OjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG5pbmRleCAwNzI3ZDUzMzQ1YTMzYi4uYzU5ZGFhMDMyZTcwYTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xcbkBAIC02NzIsMTAgKzY3MiwxNiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfY2xlYW51cF9vbmdvaW5nX3R4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIFxcbiBzdGF0aWMgdm9pZCBvYV90YzZfY2xlYW51cF93YWl0aW5nX3R4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4tXFx0aWYgKHRjNi1cXHUwMDNld2FpdGluZ190eF9za2IpIHtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcdHNrYiA9IHRjNi1cXHUwMDNld2FpdGluZ190eF9za2I7XFxuK1xcdHRjNi1cXHUwMDNld2FpdGluZ190eF9za2IgPSBOVUxMO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcbitcXHRpZiAoc2tiKSB7XFxuIFxcdFxcdHRjNi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XFxuLVxcdFxcdGtmcmVlX3NrYih0YzYtXFx1MDAzZXdhaXRpbmdfdHhfc2tiKTtcXG4tXFx0XFx0dGM2LVxcdTAwM2V3YWl0aW5nX3R4X3NrYiA9IE5VTEw7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTY4Niw2ICs2OTIsMTIgQEAgc3RhdGljIHZvaWQgb2FfdGM2X2ZyZWVfcGVuZGluZ19za2JzKHN0cnVjdCBvYV90YzYgKnRjNilcXG4gXFx0b2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2IodGM2KTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuK3tcXG4rXFx0dGM2LVxcdTAwM2VyeF9idWZfb3ZlcmZsb3cgPSB0cnVlO1xcbitcXHRvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpO1xcbit9XFxuK1xcbiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZ1xcbiAgKiB0aGUgaW50ZXJydXB0IG9mIHRoZSBkZXZpY2Ugd29uJ3Qgd29yay4gU2luY2UgU1BJIGludGVycnVwdCBpc1xcbiAgKiBkaXNhYmxlZCwgaXQgc2hvdWxkIHN0b3AgdGhlIHJlcGVhdGVkIGludGVycnVwdHMuXFxuQEAgLTcyMyw4ICs3MzUsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChGSUVMRF9HRVQoU1RBVFVTMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJST1IsIHZhbHVlKSkge1xcbi1cXHRcXHR0YzYtXFx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XFxuLVxcdFxcdG9hX3RjNl9jbGVhbnVwX29uZ29pbmdfcnhfc2tiKHRjNik7XFxuK1xcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4gXFx0XFx0bmV0X2Vycl9yYXRlbGltaXRlZChcXFwiJXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgdGM2LVxcdTAwM2VuZXRkZXYtXFx1MDAzZW5hbWUpO1xcbiBcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG5AQCAtODA1LDEzICs4MTYsMzUgQEAgc3RhdGljIHZvaWQgb2FfdGM2X3N1Ym1pdF9yeF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KVxcbiBcXHR0YzYtXFx1MDAzZXJ4X3NrYiA9IE5VTEw7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIG9hX3RjNl91cGRhdGVfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHU4IGxlbmd0aClcXG4rLyogT24gb3ZlcnN1YnNjcmliZWQgdHJhZmZpYyBjb25kaXRpb24sIHBhcnRpY3VsYXJseSB3aXRoIG92ZXJ3aGVsbWluZyByeFxcbisgKiBidWZmZXIgb3ZlcmZsb3cgZXJyb3JzLCB0aGVyZSBjb3VsZCBiZSBkYXRhIGNodW5rIGxvc3MuIElmIHRhaWwgKyBsZW5ndGhcXG4rICogZ29lcyBiZXlvbmQgZW5kIHBvaW50ZXIsIHRoYXQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBkYXRhIGNodW5rIHdpdGhcXG4rICogZW5kX3ZhbGlkIGJpdCBpcyBsb3N0LiBUaW1lIHRvIGxvb2sgZm9yIGEgZGF0YSBjaHVuayB3aXRoIHN0YXJ0X3ZhbGlkIGJpdC5cXG4rICpcXG4rICogSWYgcnhfc2tiIGlzIE5VTEwsIGl0IGlzIHRpbWUgdG8gc3RhcnQgbG9va2luZyBmb3IgZGF0YSBjaHVuayB3aXRoXFxuKyAqIHN0YXJ0X2JpdC5cXG4rICovXFxuK3N0YXRpYyBpbnQgb2FfdGM2X3VwZGF0ZV9yeF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTggbGVuZ3RoKVxcbiB7XFxuK1xcdGlmICghdGM2LVxcdTAwM2VyeF9za2IgfHxcXG4rXFx0ICAgICh0YzYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNldGFpbCArIGxlbmd0aCkgXFx1MDAzZSB0YzYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNlZW5kKSB7XFxuK1xcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4rXFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdH1cXG4rXFxuIFxcdG1lbWNweShza2JfcHV0KHRjNi1cXHUwMDNlcnhfc2tiLCBsZW5ndGgpLCBwYXlsb2FkLCBsZW5ndGgpO1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyogT24gb3ZlcndoZWxtaW5nIHJ4IGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIGR1ZSB0byBkYXRhIGNodW5rIGxvc3MsIGl0IGlzXFxuKyAqIHBvc3NpYmxlIHRoYXQgd2UgZ2V0IHR3byBkYXRhIGNodW5rcyB3aXRoIHN0YXJ0X3ZhbGlkIGJpdCBzZXQsIHdpdGhvdXRcXG4rICogZW5kX3ZhbGlkIGJpdCBzZXQgaW4gYmV0d2Vlbi4gSW4gdGhpcyBjYXNlLCByeF9za2Igd291bGQgaGF2ZSBhIHZhbGlkXFxuKyAqIGJ1ZmZlciBwb2ludGVyLiBXZSBzaG91bGQgcmVsZWFzZSwgaWYgYSB2YWxpZCBwb2ludGVyIGlzIGZvdW5kIGJlZm9yZVxcbisgKiBhbGxvY2F0aW5nIGEgbmV3IG9uZS5cXG4rICovXFxuIHN0YXRpYyBpbnQgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4rXFx0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcXG4gXFx0dGM2LVxcdTAwM2VyeF9za2IgPSBuZXRkZXZfYWxsb2Nfc2tiX2lwX2FsaWduKHRjNi1cXHUwMDNlbmV0ZGV2LCB0YzYtXFx1MDAzZW5ldGRldi1cXHUwMDNlbXR1ICtcXG4gXFx0XFx0XFx0XFx0XFx0XFx0RVRIX0hMRU4gKyBFVEhfRkNTX0xFTik7XFxuIFxcdGlmICghdGM2LVxcdTAwM2VyeF9za2IpIHtcXG5AQCAtODMxLDcgKzg2NCw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfY29tcGxldGVfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuK1xcdHJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xcbiBcXG5AQCAtODQ2LDIyICs4ODEsMjQgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1MTYgc2l6ZSlcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1MTYgc2l6ZSlcXG4rc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXFxuIHtcXG4tXFx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcXG4rXFx0aW50IHJldDtcXG4gXFxuLVxcdG9hX3RjNl9zdWJtaXRfcnhfc2tiKHRjNik7XFxuK1xcdHJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XFxuK1xcdGlmICghcmV0KVxcbitcXHRcXHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXFxuLVxcdFxcdFxcdFxcdFxcdCB1MzIgZm9vdGVyKVxcbitzdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcXG4rXFx0XFx0XFx0XFx0XFx0dTMyIGZvb3RlcilcXG4ge1xcbi1cXHRvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xcbitcXHRyZXR1cm4gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLFxcbitcXHRcXHRcXHRcXHQgICAgT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbkBAIC04NzQsNiArOTExLDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXFxuIFxcdGJvb2wgc3RhcnRfdmFsaWQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1NUQVJUX1ZBTElELCBmb290ZXIpO1xcbiBcXHRib29sIGVuZF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX1ZBTElELCBmb290ZXIpO1xcbiBcXHR1MTYgc2l6ZTtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdC8qIFJlc3RhcnQgdGhlIG5ldyByeCBmcmFtZSBhZnRlciByZWNlaXZpbmcgcnggYnVmZmVyIG92ZXJmbG93IGVycm9yICovXFxuIFxcdGlmIChzdGFydF92YWxpZCBcXHUwMDI2XFx1MDAyNiB0YzYtXFx1MDAzZXJ4X2J1Zl9vdmVyZmxvdylcXG5AQCAtOTAxLDggKzkzOSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbiBcXHQvKiBQcm9jZXNzIHRoZSBjaHVuayB3aXRoIG9ubHkgcnggZnJhbWUgZW5kICovXFxuIFxcdGlmIChlbmRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgIXN0YXJ0X3ZhbGlkKSB7XFxuIFxcdFxcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgKyAxO1xcbi1cXHRcXHRvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTtcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTtcXG4gXFx0fVxcbiBcXG4gXFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBwcmV2aW91cyByeCBmcmFtZSBlbmQgYW5kIG5leHQgcnggZnJhbWVcXG5AQCAtOTE1LDcgKzk1Miw5IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKHRjNi1cXHUwMDNlcnhfc2tiKSB7XFxuIFxcdFxcdFxcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgKyAxO1xcbi1cXHRcXHRcXHRvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQodGM2LCBkYXRhLCBzaXplKTtcXG4rXFx0XFx0XFx0cmV0ID0gb2FfdGM2X3ByY3NfcnhfZnJhbWVfZW5kKHRjNiwgZGF0YSwgc2l6ZSk7XFxuK1xcdFxcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdH1cXG4gXFx0XFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcXG4gXFx0XFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHRjNixcXG5AQCAtOTI0LDkgKzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxcbiBcXHR9XFxuIFxcbiBcXHQvKiBQcm9jZXNzIHRoZSBjaHVuayB3aXRoIG9uZ29pbmcgcnggZnJhbWUgZGF0YSAqL1xcbi1cXHRvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHRjNiwgZGF0YSwgZm9vdGVyKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZSh0YzYsIGRhdGEsIGZvb3Rlcik7XFxuIH1cXG4gXFxuIHN0YXRpYyB1MzIgb2FfdGM2X2dldF9yeF9jaHVua19mb290ZXIoc3RydWN0IG9hX3RjNiAqdGM2LCB1MTYgZm9vdGVyX29mZnNldClcXG5AQCAtMTI1MCwxMSArMTI4Nyw2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl96ZXJvX2FsaWduX3JlY2VpdmVfZnJhbWVfZW5hYmxlKTtcXG4gICovXFxuIG5ldGRldl90eF90IG9hX3RjNl9zdGFydF94bWl0KHN0cnVjdCBvYV90YzYgKnRjNiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbi1cXHRpZiAodGM2LVxcdTAwM2VkaXNhYmxlX3RyYWZmaWMgfHwgdGM2LVxcdTAwM2V3YWl0aW5nX3R4X3NrYikge1xcbi1cXHRcXHRuZXRpZl9zdG9wX3F1ZXVlKHRjNi1cXHUwMDNlbmV0ZGV2KTtcXG4tXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xcbi1cXHR9XFxuLVxcbiBcXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIFxcdFxcdHRjNi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XFxuQEAgLTEyNjIsNiArMTI5NCwxMSBAQCBuZXRkZXZfdHhfdCBvYV90YzZfc3RhcnRfeG1pdChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdH1cXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcdGlmICh0YzYtXFx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXFx1MDAzZXdhaXRpbmdfdHhfc2tiKSB7XFxuK1xcdFxcdG5ldGlmX3N0b3BfcXVldWUodGM2LVxcdTAwM2VuZXRkZXYpO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuK1xcdFxcdHJldHVybiBORVRERVZfVFhfQlVTWTtcXG4rXFx0fVxcbiBcXHR0YzYtXFx1MDAzZXdhaXRpbmdfdHhfc2tiID0gc2tiO1xcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGM2LVxcdTAwM2V0eF9za2JfbG9jayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTozMS4wMjIzNzM3MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NjcyMjkzOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgb2FfdGM2IGxpYnJhcnkgKE9QRU4gQWxsaWFuY2UgVEM2IDEwQkFTRS1UMVMgTUFDLVBIWSBTUEkpLCB3aGljaCBpcyBvbmx5IHVzZWQgYnkgdGhlIGxhbjg2NXggU1BJIEV0aGVybmV0IGRyaXZlci4gU2luY2UgU1BJIGRldmljZXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHVubGlrZSBVU0IgdmlhIHZoY2kgb3IgV2ktRmkgdmlhIG1hYzgwMjExX2h3c2ltKSwgdGhlIGxhbjg2NXggZHJpdmVyIHdpbGwgbmV2ZXIgcHJvYmUuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDVhMjI5NDI5MDA3ZGUzYjVhMjVhNzdiODFhMTA1ZjJiODIwNGQ4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAxOjI5OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuaW5kZXggMDcyN2Q1MzM0NWEzM2IuLmM1OWRhYTAzMmU3MGExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jXG5AQCAtNjcyLDEwICs2NzIsMTYgQEAgc3RhdGljIHZvaWQgb2FfdGM2X2NsZWFudXBfb25nb2luZ190eF9za2Ioc3RydWN0IG9hX3RjNiAqdGM2KVxuIFxuIHN0YXRpYyB2b2lkIG9hX3RjNl9jbGVhbnVwX3dhaXRpbmdfdHhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiB7XG4tXHRpZiAodGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiKSB7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4rXHRza2IgPSB0YzYtXHUwMDNld2FpdGluZ190eF9za2I7XG4rXHR0YzYtXHUwMDNld2FpdGluZ190eF9za2IgPSBOVUxMO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbitcbitcdGlmIChza2IpIHtcbiBcdFx0dGM2LVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkKys7XG4tXHRcdGtmcmVlX3NrYih0YzYtXHUwMDNld2FpdGluZ190eF9za2IpO1xuLVx0XHR0YzYtXHUwMDNld2FpdGluZ190eF9za2IgPSBOVUxMO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdH1cbiB9XG4gXG5AQCAtNjg2LDYgKzY5MiwxMiBAQCBzdGF0aWMgdm9pZCBvYV90YzZfZnJlZV9wZW5kaW5nX3NrYnMoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0b2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2IodGM2KTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4re1xuK1x0dGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XG4rXHRvYV90YzZfY2xlYW51cF9vbmdvaW5nX3J4X3NrYih0YzYpO1xuK31cbitcbiAvKiBJZiB0aGUgZmFpbHVyZSBpcyBhdCBTUEkgaW50ZXJmYWNlIGxldmVsLCBtYXNraW5nIGFuZCBjbGVhcmluZ1xuICAqIHRoZSBpbnRlcnJ1cHQgb2YgdGhlIGRldmljZSB3b24ndCB3b3JrLiBTaW5jZSBTUEkgaW50ZXJydXB0IGlzXG4gICogZGlzYWJsZWQsIGl0IHNob3VsZCBzdG9wIHRoZSByZXBlYXRlZCBpbnRlcnJ1cHRzLlxuQEAgLTcyMyw4ICs3MzUsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHR9XG4gXG4gXHRpZiAoRklFTERfR0VUKFNUQVRVUzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUk9SLCB2YWx1ZSkpIHtcbi1cdFx0dGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdyA9IHRydWU7XG4tXHRcdG9hX3RjNl9jbGVhbnVwX29uZ29pbmdfcnhfc2tiKHRjNik7XG4rXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcIiVzOiBSZWNlaXZlIGJ1ZmZlciBvdmVyZmxvdyBlcnJvclxcblwiLFxuIFx0XHRcdFx0ICAgIHRjNi1cdTAwM2VuZXRkZXYtXHUwMDNlbmFtZSk7XG4gXHRcdHJldHVybiAtRUFHQUlOO1xuQEAgLTgwNSwxMyArODE2LDM1IEBAIHN0YXRpYyB2b2lkIG9hX3RjNl9zdWJtaXRfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdHRjNi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfdXBkYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLCB1OCBsZW5ndGgpXG4rLyogT24gb3ZlcnN1YnNjcmliZWQgdHJhZmZpYyBjb25kaXRpb24sIHBhcnRpY3VsYXJseSB3aXRoIG92ZXJ3aGVsbWluZyByeFxuKyAqIGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIHRoZXJlIGNvdWxkIGJlIGRhdGEgY2h1bmsgbG9zcy4gSWYgdGFpbCArIGxlbmd0aFxuKyAqIGdvZXMgYmV5b25kIGVuZCBwb2ludGVyLCB0aGF0IGlzIGFuIGluZGljYXRpb24gdGhhdCB0aGUgZGF0YSBjaHVuayB3aXRoXG4rICogZW5kX3ZhbGlkIGJpdCBpcyBsb3N0LiBUaW1lIHRvIGxvb2sgZm9yIGEgZGF0YSBjaHVuayB3aXRoIHN0YXJ0X3ZhbGlkIGJpdC5cbisgKlxuKyAqIElmIHJ4X3NrYiBpcyBOVUxMLCBpdCBpcyB0aW1lIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGRhdGEgY2h1bmsgd2l0aFxuKyAqIHN0YXJ0X2JpdC5cbisgKi9cbitzdGF0aWMgaW50IG9hX3RjNl91cGRhdGVfcnhfc2tiKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHU4IGxlbmd0aClcbiB7XG4rXHRpZiAoIXRjNi1cdTAwM2VyeF9za2IgfHxcbitcdCAgICAodGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2V0YWlsICsgbGVuZ3RoKSBcdTAwM2UgdGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2VlbmQpIHtcbitcdFx0b2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpO1xuK1x0XHRyZXR1cm4gLUVBR0FJTjtcbitcdH1cbitcbiBcdG1lbWNweShza2JfcHV0KHRjNi1cdTAwM2VyeF9za2IsIGxlbmd0aCksIHBheWxvYWQsIGxlbmd0aCk7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyogT24gb3ZlcndoZWxtaW5nIHJ4IGJ1ZmZlciBvdmVyZmxvdyBlcnJvcnMsIGR1ZSB0byBkYXRhIGNodW5rIGxvc3MsIGl0IGlzXG4rICogcG9zc2libGUgdGhhdCB3ZSBnZXQgdHdvIGRhdGEgY2h1bmtzIHdpdGggc3RhcnRfdmFsaWQgYml0IHNldCwgd2l0aG91dFxuKyAqIGVuZF92YWxpZCBiaXQgc2V0IGluIGJldHdlZW4uIEluIHRoaXMgY2FzZSwgcnhfc2tiIHdvdWxkIGhhdmUgYSB2YWxpZFxuKyAqIGJ1ZmZlciBwb2ludGVyLiBXZSBzaG91bGQgcmVsZWFzZSwgaWYgYSB2YWxpZCBwb2ludGVyIGlzIGZvdW5kIGJlZm9yZVxuKyAqIGFsbG9jYXRpbmcgYSBuZXcgb25lLlxuKyAqL1xuIHN0YXRpYyBpbnQgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuK1x0b2FfdGM2X2NsZWFudXBfb25nb2luZ19yeF9za2IodGM2KTtcbiBcdHRjNi1cdTAwM2VyeF9za2IgPSBuZXRkZXZfYWxsb2Nfc2tiX2lwX2FsaWduKHRjNi1cdTAwM2VuZXRkZXYsIHRjNi1cdTAwM2VuZXRkZXYtXHUwMDNlbXR1ICtcbiBcdFx0XHRcdFx0XHRFVEhfSExFTiArIEVUSF9GQ1NfTEVOKTtcbiBcdGlmICghdGM2LVx1MDAzZXJ4X3NrYikge1xuQEAgLTgzMSw3ICs4NjQsOSBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX2NvbXBsZXRlX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbitcdHJldCA9IG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuIFxuIFx0b2FfdGM2X3N1Ym1pdF9yeF9za2IodGM2KTtcbiBcbkBAIC04NDYsMjIgKzg4MSwyNCBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsIHUxNiBzaXplKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCwgc2l6ZSk7XG4tXG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIHNpemUpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4rc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCwgdTE2IHNpemUpXG4ge1xuLVx0b2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbitcdGludCByZXQ7XG4gXG4tXHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xuK1x0cmV0ID0gb2FfdGM2X3VwZGF0ZV9yeF9za2IodGM2LCBwYXlsb2FkLCBzaXplKTtcbitcdGlmICghcmV0KVxuK1x0XHRvYV90YzZfc3VibWl0X3J4X3NrYih0YzYpO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpwYXlsb2FkLFxuLVx0XHRcdFx0XHQgdTMyIGZvb3RlcilcbitzdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcbitcdFx0XHRcdFx0dTMyIGZvb3RlcilcbiB7XG4tXHRvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xuK1x0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCxcbitcdFx0XHRcdCAgICBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTtcbiB9XG4gXG4gc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG5AQCAtODc0LDYgKzkxMSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0Ym9vbCBzdGFydF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSUQsIGZvb3Rlcik7XG4gXHRib29sIGVuZF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX1ZBTElELCBmb290ZXIpO1xuIFx0dTE2IHNpemU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0LyogUmVzdGFydCB0aGUgbmV3IHJ4IGZyYW1lIGFmdGVyIHJlY2VpdmluZyByeCBidWZmZXIgb3ZlcmZsb3cgZXJyb3IgKi9cbiBcdGlmIChzdGFydF92YWxpZCBcdTAwMjZcdTAwMjYgdGM2LVx1MDAzZXJ4X2J1Zl9vdmVyZmxvdylcbkBAIC05MDEsOCArOTM5LDcgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG4gXHQvKiBQcm9jZXNzIHRoZSBjaHVuayB3aXRoIG9ubHkgcnggZnJhbWUgZW5kICovXG4gXHRpZiAoZW5kX3ZhbGlkIFx1MDAyNlx1MDAyNiAhc3RhcnRfdmFsaWQpIHtcbiBcdFx0c2l6ZSA9IGVuZF9ieXRlX29mZnNldCArIDE7XG4tXHRcdG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuLVx0XHRyZXR1cm4gMDtcbitcdFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBwcmV2aW91cyByeCBmcmFtZSBlbmQgYW5kIG5leHQgcnggZnJhbWVcbkBAIC05MTUsNyArOTUyLDkgQEAgc3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXG4gXHRcdCAqL1xuIFx0XHRpZiAodGM2LVx1MDAzZXJ4X3NrYikge1xuIFx0XHRcdHNpemUgPSBlbmRfYnl0ZV9vZmZzZXQgKyAxO1xuLVx0XHRcdG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuK1x0XHRcdHJldCA9IG9hX3RjNl9wcmNzX3J4X2ZyYW1lX2VuZCh0YzYsIGRhdGEsIHNpemUpO1xuK1x0XHRcdGlmIChyZXQpXG4rXHRcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXHRcdHNpemUgPSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFIC0gc3RhcnRfYnl0ZV9vZmZzZXQ7XG4gXHRcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXG5AQCAtOTI0LDkgKzk2Myw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4ICpkYXRhLFxuIFx0fVxuIFxuIFx0LyogUHJvY2VzcyB0aGUgY2h1bmsgd2l0aCBvbmdvaW5nIHJ4IGZyYW1lIGRhdGEgKi9cbi1cdG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUodGM2LCBkYXRhLCBmb290ZXIpO1xuLVxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZSh0YzYsIGRhdGEsIGZvb3Rlcik7XG4gfVxuIFxuIHN0YXRpYyB1MzIgb2FfdGM2X2dldF9yeF9jaHVua19mb290ZXIoc3RydWN0IG9hX3RjNiAqdGM2LCB1MTYgZm9vdGVyX29mZnNldClcbkBAIC0xMjUwLDExICsxMjg3LDYgQEAgRVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3plcm9fYWxpZ25fcmVjZWl2ZV9mcmFtZV9lbmFibGUpO1xuICAqL1xuIG5ldGRldl90eF90IG9hX3RjNl9zdGFydF94bWl0KHN0cnVjdCBvYV90YzYgKnRjNiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4tXHRpZiAodGM2LVx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXHUwMDNld2FpdGluZ190eF9za2IpIHtcbi1cdFx0bmV0aWZfc3RvcF9xdWV1ZSh0YzYtXHUwMDNlbmV0ZGV2KTtcbi1cdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuLVx0fVxuLVxuIFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHR0YzYtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQrKztcbkBAIC0xMjYyLDYgKzEyOTQsMTEgQEAgbmV0ZGV2X3R4X3Qgb2FfdGM2X3N0YXJ0X3htaXQoc3RydWN0IG9hX3RjNiAqdGM2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnRjNi1cdTAwM2V0eF9za2JfbG9jayk7XG4rXHRpZiAodGM2LVx1MDAzZWRpc2FibGVfdHJhZmZpYyB8fCB0YzYtXHUwMDNld2FpdGluZ190eF9za2IpIHtcbitcdFx0bmV0aWZfc3RvcF9xdWV1ZSh0YzYtXHUwMDNlbmV0ZGV2KTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbitcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuK1x0fVxuIFx0dGM2LVx1MDAzZXdhaXRpbmdfdHhfc2tiID0gc2tiO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dGM2LVx1MDAzZXR4X3NrYl9sb2NrKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjI5OjMxLjAyMjM3NTA2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjQ1MjkyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPQV9UQzYgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY2AgZHJpdmVyLCB3aGljaCBpcyBmb3IgYW4gT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSBFdGhlcm5ldCBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBxdWl0ZSBhIGZldyBrZXkgZnVuY3Rpb25zOiBgb2FfdGM2X2NsZWFudXBfd2FpdGluZ190eF9za2JgLCBgb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZWAsIGFsbCB0aGUgcHJvY2Vzc2luZyByb3V0aW5lcyBmb3IgdGhlIFJYIHBhdGggKGBvYV90YzZfcHJvY2Vzc19leHRlbmRlZF9zdGF0dXNgLCBgb2FfdGM2X3VwZGF0ZV9yeF9za2JgLCBgb2FfdGM2X2FsbG9jYXRlX3J4X3NrYmAsIGBvYV90YzZfcHJjc19jb21wbGV0ZV9yeF9mcmFtZWAsIGBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydGAsIGBvYV90YzZfcHJjc19yeF9mcmFtZV9lbmRgLCBgb2FfdGM2X3ByY3Nfb25nb2luZ19yeF9mcmFtZWAsIGFuZCBgb2FfdGM2X3ByY3NfcnhfY2h1bmtfcGF5bG9hZGApIGFuZCB0aGUgVFggcGF0aCBpbiBgb2FfdGM2X3N0YXJ0X3htaXRgLlxuXG5Ud28ga2V5IGZpeGVzIGFyZSBpbW1lZGlhdGVseSBhcHBhcmVudDogYnVmZmVyIG92ZXJmbG93IHByb3RlY3Rpb24gaW4gYG9hX3RjNl91cGRhdGVfcnhfc2tiYCB2aWEgYm91bmRzIGNoZWNraW5nIChgdGM2LVx1MDAzZXJ4X3NrYi1cdTAwM2V0YWlsICsgbGVuZ3RoIFx1MDAzZSB0YzYtXHUwMDNlcnhfc2tiLVx1MDAzZWVuZGApIGFuZCBhIHJhY2UgY29uZGl0aW9uIGZpeCBpbiBgb2FfdGM2X3N0YXJ0X3htaXRgIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSBjaGVjayBmb3IgYHRjNi1cdTAwM2V3YWl0aW5nX3R4X3NrYmAuXG5cbk5vdywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSB0ZXN0YWJpbGl0eSBvZiB0aGlzIHBhdGNoLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgaXMgYW4gU1BJLWJhc2VkIEV0aGVybmV0IGRyaXZlci4gU1BJIGRldmljZXMgYXJlIGdlbmVyYWxseSBhIHBhaW4gdG8gZW11bGF0ZSwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VLiBVbmxlc3MgdGhlcmUncyBhIHNwZWNpZmljIFNQSSBjb250cm9sbGVyIGVtdWxhdGlvbiBvciBzb21lIHNvcnQgb2YgbW9jayBTUEkgZHJpdmVyLCBpdCdzIGdvaW5nIHRvIGJlIHRyaWNreS4gTGV0J3MgZGlnIGludG8gaWYgdGhlcmUncyBhbnkgU1BJIG1vY2sgb3IgYSB3YXkgdG8gZnV6eiB0aGlzIGRyaXZlci4gQWgsIHN5emthbGxlci4gSSBrbm93IGl0IGlzbid0IHNldCB1cCB0byBkaXJlY3RseSBmdXp6IFNQSSBkZXZpY2VzLiBVbmxlc3Mgd2UgY2FuIGluamVjdCBTUEkgdHJhZmZpYyBvciBoYXZlIGEgdmlydHVhbCBTUEkgZGV2aWNlLCB3ZSdyZSBwcm9iYWJseSBub3QgZ29pbmcgdG8gZ2V0IGZhciB0aGVyZS5cblxuSG93ZXZlciwgYG9hX3RjNl9zdGFydF94bWl0YCBpcyBhIHN0YW5kYXJkIGBuZXRkZXZfdHhfdGAgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIHRyYWZmaWMuIElmIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbmV0d29yayBpbnRlcmZhY2UsIHdlIGNhbiB0ZXN0IHRoYXQgcGFydC4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGNhbiB3ZSBpbnN0YW50aWF0ZSB0aGUgaW50ZXJmYWNlPyBMZXQncyBnbyBiYWNrIGFuZCBsb29rIGF0IHRoZSBzb3VyY2UgY29kZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNgIHRvIGZpZ3VyZSB0aGF0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjI5OjM4LjY4NjkwNjM0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY3NjQwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2FfdGM2X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTozOC44MTM2ODA1MzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjkxNDA2NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgT0EgVEM2IExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIG5ldyBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIGl0IHJldm9sdmVzIGFyb3VuZCBhIGxpYnJhcnkgb3IgZnJhbWV3b3JrIHJlbGF0ZWQgdG8gT0EgVEM2LiBNeSBpbml0aWFsIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzLCBzbyBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB3aG8ncyBjYWxsaW5nIGBvYV90YzZfaW5pdGAuIFRoYXQgZnVuY3Rpb24gaXMgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGhhcHBlbnMsIHNvIGZpbmRpbmcgdGhvc2UgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvbiBob3cgdGhpcyBsaWJyYXJ5IGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHVucGFjayBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb25hbGl0eSBpbiBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6Mjk6NDcuNTA1MDg5MTYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjI2NzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYV90YzZfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcXHRwcml2LVxcdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cXHRpZiAoIXByaXYtXFx1MDAzZXRjNikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTo0Ny42NTczNjE4ODdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Njc3NDc3MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYGxhbjg2NXhgIGFuZCBTUEkgRGV2aWNlIEluc3RhbnRpYXRpb24gaW4gYSBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBsYW44NjV4YCB0aGluZyBhbmQgaXQncyBiZWluZyBwcm9iZWQgYnkgYGxhbjg2NXhfcHJvYmVgLiBUaGUgY3JpdGljYWwgcGllY2Ugb2YgY29udGV4dCBoZXJlIGlzIHRoYXQgaXQncyBhbiBTUEkgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCwgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYSwgaXM6IENhbiBzeXprYWxsZXIgKmRpcmVjdGx5KiBpbnN0YW50aWF0ZSBTUEkgZGV2aWNlcz8gR2VuZXJhbGx5LCB0aGUgYW5zd2VyIGlzIG5vLiBVbmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgY2xldmVyIFNQSSBtb2NrIHNldHVwIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBpdCdzIHVzdWFsbHkgbm90IHRoYXQgc3RyYWlnaHRmb3J3YXJkLiBCdXQgdGhlbiBteSBicmFpbiBzdGFydHMgY2F0YWxvZ2luZyB0aGUgcG9zc2liaWxpdGllcy4uLiB3ZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGB2a21zYCBmb3IgRFJNLCBgdmhjaWAgZm9yIFVTQiwgYHVpbnB1dGAgZm9yIGlucHV0LiBUaGVzZSBhcmUgdmlydHVhbGl6ZWQgZGV2aWNlIGltcGxlbWVudGF0aW9ucyB0aGF0IGFsbG93IHN5emthbGxlciB0byB0ZXN0IHdpdGhvdXQgcmVxdWlyaW5nIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSG1tLCBpcyB0aGVyZSBhIHZpcnR1YWwgU1BJIGVxdWl2YWxlbnQ/XG5cbkxldCdzIHNlZS4uLiBXYWl0LCB5ZXMhIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBwb3NzaWJpbGl0aWVzIHRoYXQgc3ByaW5nIHRvIG1pbmQuIFRoZXJlJ3MgYHNwaS1tb2NrYCwgd2hpY2ggaXMgdGhlIG1vcmUgb2J2aW91cyBvbmUsIGJ1dCBhbHNvIHRoYXQgYHNwaS1sb29wYmFjay10ZXN0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb2YgdGhvc2UgY2FuIGFjdHVhbGx5IGJlIHVzZWQgdG8gcHJvYmUgdGhpcyBgbGFuODY1eGAgZHJpdmVyLiBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHJlYWxpc3RpYyB3YXksIGdpdmVuIG91ciBlbnZpcm9ubWVudCwgdG8gdHJpZ2dlciB0aGF0IGBsYW44NjV4X3Byb2JlYCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYxNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTo1Ny4zMzQ4NDE1OTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMzg3MTM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsYW44NjV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0xNzYyMD1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbFxcbk1BSU5UQUlORVJTOjE3NjIxOkY6XFx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuTUFJTlRBSU5FUlMtMTc2MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NjA6c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTYxLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT0xMD1sYW43NDN4LW9ianMgOj0gbGFuNzQzeF9tYWluLm8gbGFuNzQzeF9ldGh0b29sLm8gbGFuNzQzeF9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0xBTjg2NVgpICs9IGxhbjg2NXgvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19MQU45NjZYX1NXSVRDSCkgKz0gbGFuOTY2eC9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc9OD1jb25maWcgTEFOODY1WFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xNi1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc6MTc6XFx0ICBjYWxsZWQgbGFuODY1eC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MQU44NjVYKSArPSBsYW44NjV4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mzk6c3RydWN0IGxhbjg2NXhfcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBtdWx0aWNhc3Rfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDY6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIGNvbnN0IHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NTU6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYsIGNvbnN0IHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02MS1cXHQvKiBDb25maWd1cmUgTUFDIGFkZHJlc3MgbG93IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjYyOlxcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXFx1MDAzZXRjNiwgbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy03NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NzY6XFx0cmVzdG9yZV9yZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVxcdTAwM2V0YzYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBwcml2LVxcdTAwM2VuZXRkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW44NjV4X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04NS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo4OTpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHZvaWQgKmFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6OTE6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkyLVxcdHN0cnVjdCBzb2NrYWRkciAqYWRkcmVzcyA9IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMDI6XFx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcihwcml2LCBhZGRyZXNzLVxcdTAwM2VzYV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MTExPXN0YXRpYyB1MzIgZ2V0X2FkZHJlc3NfYml0KHU4IGFkZHJbRVRIX0FMRU5dLCB1MzIgYml0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTExNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTE2OnN0YXRpYyB1MzIgbGFuODY1eF9oYXNoKHU4IGFkZHJbRVRIX0FMRU5dKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTMyOnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzktXFx0bmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIHByaXYtXFx1MDAzZW5ldGRldikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNDA6XFx0XFx0dTMyIGJpdF9udW0gPSBsYW44NjV4X2hhc2goaGEtXFx1MDAzZWFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNjQ6c3RhdGljIGludCBsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE4NjpzdGF0aWMgaW50IGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMDU6c3RhdGljIHZvaWQgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA3OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGxhbjg2NXhfcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA4LVxcdFxcdFxcdFxcdFxcdFxcdCBtdWx0aWNhc3Rfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjE4LVxcdFxcdC8qIEVuYWJsaW5nIGFsbCBtdWx0aWNhc3QgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMTk6XFx0XFx0aWYgKGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjIwLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjYtXFx0XFx0LyogRW5hYmxpbmcgc3BlY2lmaWMgbXVsdGljYXN0IG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjI3OlxcdFxcdGlmIChsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihwcml2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI4LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzQtXFx0XFx0LyogRW5hYmxpbmcgbG9jYWwgbWFjIGFkZHJlc3Mgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMzU6XFx0XFx0aWYgKGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzYtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ0OnN0YXRpYyB2b2lkIGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0NjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjUxOnN0YXRpYyBuZXRkZXZfdHhfdCBsYW44NjV4X3NlbmRfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjU0OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTk6c3RhdGljIGludCBsYW44NjV4X2h3X2Rpc2FibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NDpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc3LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjgwLVxcdHBoeV9zdG9wKG5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjgxOlxcdHJldCA9IGxhbjg2NXhfaHdfZGlzYWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjgyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI5MDpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZW5hYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDU6c3RhdGljIGludCBsYW44NjV4X25ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwNzpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA4LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEwOlxcdHJldCA9IGxhbjg2NXhfaHdfZW5hYmxlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzIzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbGFuODY1eF9uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjQ6XFx0Lm5kb19vcGVuXFx0XFx0PSBsYW44NjV4X25ldF9vcGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjU6XFx0Lm5kb19zdG9wXFx0XFx0PSBsYW44NjV4X25ldF9jbG9zZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI2OlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gbGFuODY1eF9zZW5kX3BhY2tldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI3OlxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjg6XFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjktXFx0Lm5kb192YWxpZGF0ZV9hZGRyXFx0PSBldGhfdmFsaWRhdGVfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzMzpzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzNjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzctXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzk6XFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQwLVxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ni1cXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzQ3OlxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5MjpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM5OS1cXHRuZXRkZXYtXFx1MDAzZWlycSA9IHNwaS1cXHUwMDNlaXJxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MDA6XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDAxOlxcdG5ldGRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDE4OnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyMDpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyODpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbGFuODY1eF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDI5LVxcdHsgLm5hbWUgPSBcXFwibGFuODY1MFxcXCIgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDMzOk1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBsYW44NjV4X2lkcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDM1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxhbjg2NXhfZHRfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNi1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW44NjUwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbGFuODY1eF9kdF9pZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0MjpzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbGFuODY1eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0My1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDQtXFx0XFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ1OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDYtXFx0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0NzpcXHQucHJvYmUgPSBsYW44NjV4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDg6XFx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDk6XFx0LmlkX3RhYmxlID0gbGFuODY1eF9pZHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTE6bW9kdWxlX3NwaV9kcml2ZXIobGFuODY1eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTc3PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZiMV9maXh1cF9tYXNrc1sxMl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTg3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6ODg6c3RhdGljIGNvbnN0IHUzMiBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzWzE3XSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTg5LVxcdDB4MDBEMCwgMHgwMEUwLCAweDAwRTksIDB4MDBGNSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtOTUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo5NjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbMTddID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtOTctXFx0MHgzRjMxLCAweEMwMDAsIDB4OUU1MCwgMHgxQ0Y4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDQ6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3NbMl0gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDUtXFx0MHgwMDg0LCAweDAwOEEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwNy1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEwODpzdGF0aWMgY29uc3QgdTMyIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVnc1sxMl0gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDktXFx0MHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMTMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMTQ6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1sxMl0gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMTUtXFx0MHgwMTAzLCAweDA5MTAsIDB4MUQyNiwgMHgwMDJBLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMTktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMjA6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzWzNdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTIxLVxcdDB4MDBBRCwgMHgwMEFFLCAweDAwQUYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTEzND1zdGF0aWMgY29uc3QgdTE2IGxhbjg2N3hfcmV2ZDBfZml4dXBfdmFsdWVzWzhdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNDYtICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNDc6c3RhdGljIGludCBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgYWRkcilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE2Ni0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE2NzpzdGF0aWMgaW50IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTcyLVxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShmaXh1cF9yZWdzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNzM6XFx0XFx0cmV0ID0gbGFuODY1eF9yZXZiX2luZGlyZWN0X3JlYWQocGh5ZGV2LCBmaXh1cF9yZWdzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE3NC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTg3LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTg4OnN0YXRpYyBpbnQgbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4OS1cXHRcXHRcXHRcXHQgICBjb25zdCB1MTYgY2ZnX3JlZ3NbXSwgdTE2IGNmZ19wYXJhbXNbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjA0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjA1OnN0YXRpYyBpbnQgbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMDYtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMjAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjE6c3RhdGljIGludCBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyMi17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjM6XFx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzKV07XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMjQ6XFx0dTE2IGNmZ19wYXJhbXNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIyNS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjI3OlxcdHJldCA9IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjI4LVxcdFxcdFxcdFxcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzc6XFx0cmV0dXJuIGxhbjg2NXhfd3JpdGVfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVncyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIzOC1cXHRcXHRcXHRcXHRcXHRjZmdfcmVzdWx0cywgQVJSQVlfU0laRShjZmdfcmVzdWx0cykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNDE6c3RhdGljIGludCBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzOCBvZmZzZXRzW10pXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDIte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjQzOlxcdHUxNiBjZmdfcmVzdWx0c1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0NDpcXHR1MTYgY2ZnX3BhcmFtc1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0NS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjQ3OlxcdHJldCA9IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0OC1cXHRcXHRcXHRcXHQgICAgICBjZmdfcGFyYW1zLCBBUlJBWV9TSVpFKGNmZ19wYXJhbXMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjU4LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjU5OlxcdHJldHVybiBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVxcdFxcdFxcdFxcdFxcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI2Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI2MzpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjcwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjcxOlxcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzU6XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI3Ni1cXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzc6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzg6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjc5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4Mi1cXHRcXHRpZiAoaSA9PSAxKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODM6XFx0XFx0XFx0cmV0ID0gbGFuODY1eF9zZXR1cF9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg0LVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4OTpcXHRyZXQgPSBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI5Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI5MzpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTQtXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk1OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyOTY6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI5Ny1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz0zMjk9c3RhdGljIGludCBsYW44Njd4X3JldmNfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzM3LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzM4OlxcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMzOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTMtXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzU0OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzW2ldLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzU1OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM1Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTktXFx0XFx0aWYgKGkgPT0gMSkge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzYwOlxcdFxcdFxcdHJldCA9IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2MS1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjY6XFx0cmV0ID0gbGFuODY1eF9zZXR1cF9zcWlfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNjktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzA6XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVncyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzcxLVxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM3MjpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzW2ldLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzczOlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1tpXSk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNzQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NDk0PXN0YXRpYyBpbnQgbGFuODZ4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTgtICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1MTk6c3RhdGljIGludCBsYW44NjV4X3BoeV9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTIwLVxcdFxcdFxcdFxcdHUxNiByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTUyNy1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUyODpzdGF0aWMgaW50IGxhbjg2NXhfcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTI5LVxcdFxcdFxcdFxcdCB1MTYgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz01Mzc9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU4NC1cXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg1OlxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODYtXFx0XFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1ODc6XFx0XFx0LnJlYWRfbW1kICAgICAgICAgICA9IGxhbjg2NXhfcGh5X3JlYWRfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTg4OlxcdFxcdC53cml0ZV9tbWQgICAgICAgICAgPSBsYW44NjV4X3BoeV93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODktXFx0XFx0LmdldF9wbGNhX2NmZ1xcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMToyOTo1OS4zNTg3MTc1MjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgwNjUwNzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIFNQSSBFbXVsYXRpb24gaW4gU3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBoYW5kbGUgU1BJIGRldmljZXMgd2l0aGluIHRoZSBTeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBjdXJyZW50IGRyaXZlciB1bmRlciBzY3J1dGlueSBpcyBgbGFuODY1eGAsIGFuZCBpdCdzIGFuIFNQSSBkcml2ZXIsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBlbXVsYXRlIFNQSSBjb21tdW5pY2F0aW9uIGVmZmVjdGl2ZWx5IGZvciB0ZXN0aW5nLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlJ3MgYSBTeXprYWxsZXItbmF0aXZlIHdheSB0byBlbXVsYXRlIFNQSSBkZXZpY2VzLCBzaW1pbGFyIHRvIGhvdyBpdCBoYW5kbGVzIFVTQiB3aXRoIGB2aGNpYCBvciBQQ0kgdGhyb3VnaCBtb2NraW5nIG1lY2hhbmlzbXMuIEhtbSwgSSBkb24ndCByZWNhbGwgc2VlaW5nIGEgZ2VuZXJhbCwgcmVhZHktdG8tdXNlIFNQSSBlbXVsYXRvciBsaWtlIHRob3NlLlxuXG5Ib2xkIG9uLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5n4oCmIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL3NwaS9gIGRpcmVjdG9yeS4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBwZXJoYXBzIGEgbW9kdWxlIGxpa2UgYHNwaS1tb2NrYCBvciB0aGUgYHNwaS1sb29wYmFjay10ZXN0YCBtb2R1bGU/IFRoYXQgY291bGQgYmUgYSBjcnVjaWFsIGNvbXBvbmVudCBmb3IgbXkgZGVidWdnaW5nIGFuZCB0ZXN0aW5nIHN0cmF0ZWd5LiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHJlZnJlc2ggbXkgbWVtb3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQyNywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjAzLjczOTM3MDY0MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4NzEyNDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaV9tb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MDMuNzk3MjQ5MDcxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzUyODM5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byBzeXprYWxsZXIgYW5kIHNlZSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyBTUEkgbW9ja2luZyBpbmZyYXN0cnVjdHVyZS4gSSBrbm93IHN5emthbGxlciAqZ2VuZXJhbGx5KiBhdm9pZHMgZGlyZWN0IGZ1enppbmcgb2YgU1BJIGRldmljZXMgdW5sZXNzIHRoZXJlJ3MgYW4gaW5kaXJlY3QgZW50cnkgcG9pbnQuIEknbSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBTUEkgbW9ja3M/XG5cbioqQ2hlY2tpbmcgZm9yIEV4aXN0aW5nIFNQSSBNb2NrcyBhbmQgTGV2ZXJhZ2luZyBMaWJyYXJpZXMqKlxuXG5Ob3csIHNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgb2FfdGM2YCBsaWJyYXJ5LiBUaGF0J3MgaW50cmlndWluZy4gU2luY2UgaXQncyBhIGxpYnJhcnksIEkgd29uZGVyIGlmIGl0J3MgdXRpbGl6ZWQgYnkgb3RoZXIgZHJpdmVycyB3aXRoaW4gc3l6a2FsbGVyJ3MgcHVydmlldy4gSWYgc28sIHRoYXQgY291bGQgcHJvdmlkZSBhIHBhdGh3YXkgZm9yIGluZGlyZWN0IFNQSSBmdXp6aW5nIHRocm91Z2ggdGhvc2Ugb3RoZXIgZHJpdmVycy4gTmVlZCB0byBjaGVjayBpdHMgdXNhZ2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzYzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MDcuMTMyNTM1MTM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTA2NTYwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYV90YzZfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0OTpcXHRwcml2LVxcdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MC1cXHRpZiAoIXByaXYtXFx1MDAzZXRjNikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfc3RhcnRfeG1pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMzEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEzMTM6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxNC0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzIwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNDI1OkVYUE9SVF9TWU1CT0xfR1BMKG9hX3RjNl9pbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNDI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDowNy4yMjc2MDYwOTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQwNDY1NTk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgTEFOODY1eCBDb2RlOiBBIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBvbmx5IHRvdWNoZXMgdGhlIGBsYW44NjV4YCBkcml2ZXIsIGFuZCB0aGF0J3MgYW4gU1BJIGRldmljZSwgcmlnaHQ/IFRoZSBpbmhlcmVudCBjaGFsbGVuZ2UgaXMgdGhhdCBTUEkgZGV2aWNlcyBhcmVuJ3QgdHlwaWNhbGx5IGluc3RhbnRpYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVubGVzcyB0aGVyZSdzIGEgdmVyeSBzcGVjaWZpYyBTUEkgY29udHJvbGxlciBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi4gU3l6a2FsbGVyLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24ndCB1c3VhbGx5IHNldCB1cCByYW5kb20gU1BJIGRldmljZXMgbGlrZSB0aGlzLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMsIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9kZXZfc3BpYD8gTm8sIEkgcmVtZW1iZXIgaXQgaGFzIHRoaW5ncyBmb3IgVVNCLCA4MDIxMSwgZXRjLiwgYnV0IG5vdCBhIGdlbmVyYWwgU1BJIGRldmljZSBpbnN0YW50aWF0aW9uLiBDYW4gd2UgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSBhdCBhbGw/IElmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvYmVkLCB0aGVuIGBvYV90YzZfaW5pdGAgd29uJ3QgYmUgY2FsbGVkLCBhbmQgYG9hX3RjNl9zdGFydF94bWl0YCB3b24ndCBiZSByZWdpc3RlcmVkLiBTbywgaXMgdGhlcmUgc29tZSBvdGhlciB3YXkgdG8gaW5zdGFudGlhdGUgdGhpcywgbGlrZSB0aHJvdWdoIG5ldGxpbmsgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vcGUsIGl0J3MgYW4gU1BJIGRyaXZlciwgc28gdGhhdCBhdmVudWUgaXMgY2xvc2VkLlxuXG5Ob3cgSSdtIHJlYWxseSBzdGFydGluZyB0byBxdWVzdGlvbiBpZiB0aGVyZSdzICphbnkqIGNoYW5jZSBvZiB0aGlzIGJlaW5nIHJlYWNoYWJsZS4gSWYgaXQncyBhbiBTUEkgZHJpdmVyLCB0aGUgZGVmYXVsdCBzeXprYWxsZXIgc2V0dXAgZ2VuZXJhbGx5IHdvbid0IGluc3RhbnRpYXRlIGl0IHVubGVzcyB0aGVyZSdzIGEgdmlydHVhbCBTUEkgYnVzIHRoYXQgc3l6a2FsbGVyIGNhbiBzb21laG93IHVzZS4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHN5emthbGxlciBmb3IgU1BJIHN1cHBvcnQuXG5cbkFoLCBzeXprYWxsZXIgZG9lcyBoYXZlIGBkZXZfc3BpZGV2YCwgd2hpY2ggbGV0cyB1c2VyLXNwYWNlIHRhbGsgdG8gU1BJIGRldmljZXMsIGJ1dCBpdCAqZG9lc24ndCogbGV0IHlvdSBpbnN0YW50aWF0ZSBrZXJuZWwgU1BJIGRyaXZlcnMuIEkgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwgaGVyZSwgd2FpdCBhIG1pbnV0ZSwgZGV2aWNlIHRyZWUgb3ZlcmxheXMhIE1heWJlIHRoYXQncyB0aGUgd2F5LiBTeXprYWxsZXIgY2FuIGxvYWQgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdG8gaW5zdGFudGlhdGUgZGV2aWNlcy4gQnV0IGRvZXMgc3l6a2FsbGVyIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBmb3IgU1BJIGRldmljZXM/IE5vLCBpdCBsb29rcyBsaWtlIHN5emthbGxlciBkb2Vzbid0IGRvIHRoYXQgZm9yIFNQSSBkZXZpY2VzIGluIGEgZ2VuZXJpYyB3YXkuXG5cbk9rYXksIEknbSBzdGFydGluZyB0byB0aGluayBJIG5lZWQgdG8gYmUgdmVyeSBjYXJlZnVsIGhlcmUuIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGp1c3QgYmVjYXVzZSBpdCdzIGFuIFNQSSBkZXZpY2UsIGlzIHRoYXQgKmNvcnJlY3QqP1xuXG5Ob3cgSSdtIGdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgYW5kIGl0IHNheXM6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBTaW5jZSB0aGlzIGlzIGFuIFNQSSBFdGhlcm5ldCBkcml2ZXIsIGFuZCB0aGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIFNQSSBoYXJkd2FyZSBpbiB0aGUga2VybmVsIHRoYXQgSSdtIGF3YXJlIG9mIHRoYXQgd2lsbCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgU1BJIGRyaXZlcnMgKGxpa2UgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSBvciBgdmhjaWAgZm9yIFVTQiksIHRoZW4gaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFdhaXQsIGlzIHRoZXJlIGFuIFNQSSBtb2NrIGRyaXZlcj8gTGV0J3MgZG91YmxlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQ3MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoxNS42MzIyNjQwMDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTk1NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3BpL3NwaS1tZW0uYz0xMDk4PWludCBzcGlfbWVtX2RyaXZlcl9yZWdpc3Rlcl93aXRoX293bmVyKHN0cnVjdCBzcGlfbWVtX2RyaXZlciAqbWVtZHJ2LFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1lbS5jLTExMDQtXFxuZHJpdmVycy9zcGkvc3BpLW1lbS5jOjExMDU6XFx0cmV0dXJuIF9fc3BpX3JlZ2lzdGVyX2RyaXZlcihvd25lciwgXFx1MDAyNm1lbWRydi1cXHUwMDNlc3BpZHJ2KTtcXG5kcml2ZXJzL3NwaS9zcGktbWVtLmMtMTEwNi19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz00NjI9RVhQT1JUX1NZTUJPTF9HUEwoc3BpX2J1c190eXBlKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ2NC0vKipcXG5kcml2ZXJzL3NwaS9zcGkuYzo0NjU6ICogX19zcGlfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBTUEkgZHJpdmVyXFxuZHJpdmVycy9zcGkvc3BpLmMtNDY2LSAqIEBvd25lcjogb3duZXIgbW9kdWxlIG9mIHRoZSBkcml2ZXIgdG8gcmVnaXN0ZXJcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ3MS0gKi9cXG5kcml2ZXJzL3NwaS9zcGkuYzo0NzI6aW50IF9fc3BpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgbW9kdWxlICpvd25lciwgc3RydWN0IHNwaV9kcml2ZXIgKnNkcnYpXFxuZHJpdmVycy9zcGkvc3BpLmMtNDczLXtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTUxNC19XFxuZHJpdmVycy9zcGkvc3BpLmM6NTE1OkVYUE9SVF9TWU1CT0xfR1BMKF9fc3BpX3JlZ2lzdGVyX2RyaXZlcik7XFxuZHJpdmVycy9zcGkvc3BpLmMtNTE2LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpZGV2LmM9ODYxPXN0YXRpYyBpbnQgX19pbml0IHNwaWRldl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGlkZXYuYy04NzgtXFxuZHJpdmVycy9zcGkvc3BpZGV2LmM6ODc5OlxcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnNwaWRldl9zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL3NwaS9zcGlkZXYuYy04ODAtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MTUuNjg5ODY1Njk0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzA2MTU0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFZpcnR1YWwgU1BJIENvbnRyb2xsZXIgT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbmV3IHNldHVwLCBhbmQgSSdtIHdvbmRlcmluZyBpZiBJIGNhbiBnZXQgYXdheSB3aXRoIGEgdmlydHVhbCBTUEkgY29udHJvbGxlci4gTm8gcGh5c2ljYWwgaGFyZHdhcmUgbmVlZGVkLCBwdXJlbHkgc29mdHdhcmUgZW11bGF0aW9uLiBUaGUgYmVuZWZpdHMgYXJlIG9idmlvdXM6IGZsZXhpYmlsaXR5LCBwb3RlbnRpYWxseSBsb3dlciBjb3N0IGZvciBjZXJ0YWluIGFwcGxpY2F0aW9ucywgYW5kIG1heWJlIGV2ZW4gZWFzaWVyIGludGVncmF0aW9uIGR1cmluZyB0aGUgZGVzaWduIHBoYXNlLiBCdXQgaXMgdGhlcmUgZXZlbiBzdWNoIGEgdGhpbmcgYXMgYSAqZ29vZCogdmlydHVhbCBTUEkgY29udHJvbGxlciBvdXQgdGhlcmUsIG9uZSB0aGF0J3MgcmVsaWFibGUgZW5vdWdoIGZvciBzZXJpb3VzIHVzZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMg4oCTIHdoYXQgYXJlIHRoZSBvcHRpb25zLCB3aGF0IGFyZSB0aGVpciBsaW1pdGF0aW9ucywgYW5kIGNhbiB0aGV5IGhhbmRsZSB0aGUgdGhyb3VnaHB1dCBhbmQgdGltaW5nIGNvbnN0cmFpbnRzIEknbSBkZWFsaW5nIHdpdGg/IFRoaXMgY291bGQgYmUgYSBnYW1lLWNoYW5nZXIgaWYgaXQgcGFucyBvdXQuIEdvdHRhIGRvIHNvbWUgcmVzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDc5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoxOC43MjA0ODMxNDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNzUxMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaV9yZWdpc3Rlcl9jb250cm9sbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg3NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTEzNDg9c3RhdGljIGludCBhdG1lbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtMTQ1NS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6MTQ1NjpcXHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdHJsKTtcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtMTQ1Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM9MTA2MD1zdGF0aWMgaW50IGFpcm9oYV9zbmFuZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtMTEzMS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzoxMTMyOlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtMTEzMy19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNjAtXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNjE6XFx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTYyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM9MzU9c3RhdGljIGludCBhbHRlcmFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTEzLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYzoxMTQ6XFx0ZXJyID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM9ODIxPWludCBhbWRfc3BpX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy04MzktXFx0LyogUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgd2l0aCBTUEkgZnJhbWV3b3JrICovXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjg0MDpcXHRlcnIgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTg0MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0zMjY9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTM2OC1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjM2OTpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKHNwaWZjLVxcdTAwM2VkZXYsIGN0cmwpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMzcwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jPTEwOTM9c3RhdGljIGludCBhbWxfc2ZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTExNzctXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzoxMTc4OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0xMTc5LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaXNnLmM9NzEyPXN0YXRpYyBpbnQgYW1sX3NwaXNnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTc5OS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jOjgwMDpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jLTgwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYz00NTc9c3RhdGljIGludCBhcHBsZV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hcHBsZS5jLTUwNC1cXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYzo1MDU6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYy01MDYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9zcGkvc3BpLWFwcGxlLmM6NTA3OlxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCwgXFxcImRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGktYXBwbGUuYy01MDgtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM9MTY1PXN0YXRpYyBpbnQgYXI5MzR4X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFyOTM0eC5jLTIwNy1cXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmM6MjA4OlxcdHJldHVybiBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXI5MzR4LmMtMjA5LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hcm1hZGEtMzcwMC5jPTgxMz1zdGF0aWMgaW50IGEzNzAwX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc0LVxcbmRyaXZlcnMvc3BpL3NwaS1hcm1hZGEtMzcwMC5jOjg3NTpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWFybWFkYS0zNzAwLmMtODc2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM9OTU3PXN0YXRpYyBpbnQgYXNwZWVkX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0xMDIzLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MTAyNDpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTEwMjUtXFx0aWYgKHJldClcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjEwMjY6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwic3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTEwMjctXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jPTQ3Nj1zdGF0aWMgaW50IGF0OTFfdXNhcnRfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jLTU1NC1cXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jOjU1NTpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXQ5MS11c2FydC5jLTU1Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jPTU0Nj1zdGF0aWMgaW50IGF0Y3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTU4OS1cXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmM6NTkwOlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTU5MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM9MTI4Nz1zdGF0aWMgaW50IGF0bWVsX3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMTMwMy1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzoxMzA0OlxcdC8qIFNldHVwKCkgaXMgY2FsbGVkIGR1cmluZyBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihha2FcXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0xMzA1LVxcdCAqIHNwaV9yZWdpc3Rlcl9tYXN0ZXIpIGJ1dCBhZnRlciBhbGwgbWVtYm1lcnMgb2YgdGhlIGNzX2dwaW9kXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0xNTUwPXN0YXRpYyBpbnQgYXRtZWxfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0xNjY4LVxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jOjE2Njk6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMTY3MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmM9MTEwND1zdGF0aWMgaW50IHNwaV9lbmdpbmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGktc3BpLWVuZ2luZS5jLTEyMzktXFxuZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmM6MTI0MDpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktYXhpLXNwaS1lbmdpbmUuYy0xMjQxLX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYz03NTI9c3RhdGljIGludCBheF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy04NDYtXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjg0NzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtODQ4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6ODQ5OlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInNwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTg1MC1cXHRcXHRnb3RvIGVycl9kaXNhYmxlX3JwbTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTE0ODI9aW50IGJjbV9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xNjU5LVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjE2NjA6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmMtMTY2MS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzUuYz0xMzQ5PXN0YXRpYyBpbnQgYmNtMjgzNV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1LmMtMTQwNi1cXG5kcml2ZXJzL3NwaS9zcGktYmNtMjgzNS5jOjE0MDc6XFx0ZXJyID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLWJjbTI4MzUuYy0xNDA4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmM9NDc0PXN0YXRpYyBpbnQgYmNtMjgzNWF1eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmMtNTQzLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmM6NTQ0OlxcdGVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY20yODM1YXV4LmMtNTQ1LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM9NzQyPXN0YXRpYyBpbnQgYmNtNjN4eF9oc3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy04NTctXFx0LyogcmVnaXN0ZXIgYW5kIHdlIGFyZSBkb25lICovXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo4NTg6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy04NTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM9NDkxPXN0YXRpYyBpbnQgYmNtNjN4eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtNTk5LVxcdC8qIHJlZ2lzdGVyIGFuZCB3ZSBhcmUgZG9uZSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM6NjAwOlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtNjAxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYz00MzI9c3RhdGljIGludCBiY21iY2FfaHNzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY21iY2EtaHNzcGkuYy01NDAtXFx0LyogcmVnaXN0ZXIgYW5kIHdlIGFyZSBkb25lICovXFxuZHJpdmVycy9zcGkvc3BpLWJjbWJjYS1oc3NwaS5jOjU0MTpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtYmNhLWhzc3BpLmMtNTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYml0YmFuZy5jPTQyND1pbnQgc3BpX2JpdGJhbmdfc3RhcnQoc3RydWN0IHNwaV9iaXRiYW5nICpiaXRiYW5nKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYy00MzUtXFx0ICovXFxuZHJpdmVycy9zcGkvc3BpLWJpdGJhbmcuYzo0MzY6XFx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1iaXRiYW5nLmMtNDM3LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xNzgxPXN0YXRpYyBpbnQgY3FzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xOTc0LVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxOTc1OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xOTc2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYz0xMTc0PXN0YXRpYyBpbnQgY2Ruc194c3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtMTI4Ny1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6MTI4ODpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTEyODktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYz02MzY9c3RhdGljIGludCBjZG5zX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UuYy03NDItXFx0fVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmM6NzQzOlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmMtNzQ0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS5jOjc0NTpcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJzcGlfcmVnaXN0ZXJfY29udHJvbGxlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLmMtNzQ2LVxcdFxcdGdvdG8gZXJyX2Rpc2FibGVfcnBtO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhdml1bS1vY3Rlb24uYz0xOT1zdGF0aWMgaW50IG9jdGVvbl9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tb2N0ZW9uLmMtNTQtXFxuZHJpdmVycy9zcGkvc3BpLWNhdml1bS1vY3Rlb24uYzo1NTpcXHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLW9jdGVvbi5jLTU2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYz0xOT1zdGF0aWMgaW50IHRodW5kZXJ4X3NwaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYy02OC1cXG5kcml2ZXJzL3NwaS9zcGktY2F2aXVtLXRodW5kZXJ4LmM6Njk6XFx0cmV0dXJuIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1jYXZpdW0tdGh1bmRlcnguYy03MC19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYz0xNDE9c3RhdGljIGludCBjaDM0MV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwMi1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYzoyMDM6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2xwczcxMXguYz05MT1zdGF0aWMgaW50IHNwaV9jbHBzNzExeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNscHM3MTF4LmMtMTM3LVxcbmRyaXZlcnMvc3BpL3NwaS1jbHBzNzExeC5jOjEzODpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktY2xwczcxMXguYy0xMzktfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNvbGRmaXJlLXFzcGkuYz0zMzg9c3RhdGljIGludCBtY2Zxc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jLTQwNi1cXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jOjQwNzpcXHRzdGF0dXMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktY29sZGZpcmUtcXNwaS5jLTQwOC1cXHRpZiAoc3RhdHVzKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jPTMxMz1zdGF0aWMgaW50IGNzNDJsNDNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQxMC1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQxMTpcXHRyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKHByaXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM9NjgwPXN0YXRpYyBpbnQgZGxuMl9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmMtNzU4LVxcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmM6NzU5OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1kbG4yLmMtNzYwLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZHctY29yZS5jPTkyMz1pbnQgZHdfc3BpX2FkZF9jb250cm9sbGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGR3X3NwaSAqZHdzKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWR3LWNvcmUuYy0xMDAzLVxcbmRyaXZlcnMvc3BpL3NwaS1kdy1jb3JlLmM6MTAwNDpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZHctY29yZS5jLTEwMDUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jPTYyMz1zdGF0aWMgaW50IGVwOTN4eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYy02OTItXFxuZHJpdmVycy9zcGkvc3BpLWVwOTN4eC5jOjY5MzpcXHRlcnJvciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1lcDkzeHguYy02OTQtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZmFsY29uLmM9MzkxPXN0YXRpYyBpbnQgZmFsY29uX3NmbGFzaF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWZhbGNvbi5jLTQwNy1cXG5kcml2ZXJzL3NwaS9zcGktZmFsY29uLmM6NDA4OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1mYWxjb24uYy00MDktfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWZzaS5jPTUzMT1zdGF0aWMgaW50IGZzaV9zcGlfcHJvYmUoc3RydWN0IGZzaV9kZXZpY2UgKmZzaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2kuYy01NzEtXFxuZHJpdmVycy9zcGkvc3BpLWZzaS5jOjU3MjpcXHRcXHRyYyA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZnNpLmMtNTczLVxcdFxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZHNwaS5jPTE1Mjg9c3RhdGljIGludCBkc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYy0xNjgwLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZHNwaS5jOjE2ODE6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1kc3BpLmMtMTY4Mi1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZXNwaS5jPTY2Mz1zdGF0aWMgaW50IGZzbF9lc3BpX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlc291cmNlICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZnNsLWVzcGkuYy03MTctXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1lc3BpLmM6NzE4OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1mc2wtZXNwaS5jLTcxOS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYz04OTI9c3RhdGljIGludCBmc2xfbHBzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDAzLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYzoxMDA0OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGNvbnRyb2xsZXIpO1xcbmRyaXZlcnMvc3BpL3NwaS1mc2wtbHBzcGkuYy0xMDA1LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jOjEwMDY6XFx0XFx0ZGV2X2Vycl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCByZXQsIFxcXCJzcGlfcmVnaXN0ZXJfY29udHJvbGxlciBlcnJvclxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jLTEwMDctXFx0XFx0Z290byBmcmVlX2RtYTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtcXNwaS5jPTg5ND1zdGF0aWMgaW50IGZzbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05ODgtXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1xc3BpLmM6OTg5OlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZnNsLXFzcGkuYy05OTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1mc2wtc3BpLmM9NTI4PXN0YXRpYyBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmZzbF9zcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYy02MTYtXFxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYzo2MTc6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWZzbC1zcGkuYy02MTgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM9MTA0Mj1zdGF0aWMgaW50IHNwaV9nZW5pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmMtMTE0OS1cXG5kcml2ZXJzL3NwaS9zcGktZ2VuaS1xY29tLmM6MTE1MDpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIHNwaSk7XFxuZHJpdmVycy9zcGkvc3BpLWdlbmktcWNvbS5jLTExNTEtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYz0zNDA9c3RhdGljIGludCBzcGlfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYy00MTMtXFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYzo0MTQ6XFx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLWdwaW8uYy00MTUtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWd4cC5jPTI1MD1zdGF0aWMgaW50IGd4cF9zcGlmaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWd4cC5jLTI4Ny1cXG5kcml2ZXJzL3NwaS9zcGktZ3hwLmM6Mjg4OlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktZ3hwLmMtMjg5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYz00NjE9c3RhdGljIGludCBoaXNpX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWhpc2kta3VucGVuZy5jLTUyMy1cXG5kcml2ZXJzL3NwaS9zcGktaGlzaS1rdW5wZW5nLmM6NTI0OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLWt1bnBlbmcuYy01MjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLXNmYy12M3h4LmM9NDMxPXN0YXRpYyBpbnQgaGlzaV9zZmNfdjN4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWhpc2ktc2ZjLXYzeHguYy00OTctXFxuZHJpdmVycy9zcGkvc3BpLWhpc2ktc2ZjLXYzeHguYzo0OTg6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1oaXNpLXNmYy12M3h4LmMtNDk5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW1nLXNwZmkuYz01MjU9c3RhdGljIGludCBpbWdfc3BmaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWltZy1zcGZpLmMtNjQxLVxcbmRyaXZlcnMvc3BpL3NwaS1pbWctc3BmaS5jOjY0MjpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktaW1nLXNwZmkuYy02NDMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbXguYz0yMjE4PXN0YXRpYyBpbnQgc3BpX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWlteC5jLTIzNTgtXFxuZHJpdmVycy9zcGkvc3BpLWlteC5jOjIzNTk6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoY29udHJvbGxlcik7XFxuZHJpdmVycy9zcGkvc3BpLWlteC5jLTIzNjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYz0zODM9c3RhdGljIGludCBzcGlfaW5nZW5pY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYy00NTQtXFxuZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMuYzo0NTU6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLmMtNDU2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYz0xNDg5PWludCBpbnRlbF9zcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNTEyLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE1MTM6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE1MTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jPTE0MT1zdGF0aWMgaW50IGpjb3JlX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWpjb3JlLmMtMjAxLVxcdC8qIFJlZ2lzdGVyIG91ciBzcGkgY29udHJvbGxlciAqL1xcbmRyaXZlcnMvc3BpL3NwaS1qY29yZS5jOjIwMjpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktamNvcmUuYy0yMDMtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM9MzM4PXN0YXRpYyBpbnQga3NwaTJfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eGRldixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTM5Mi1cXHRob3N0LVxcdTAwM2V0cmFuc2Zlcl9vbmUgPSBrc3BpMl90cmFuc2Zlcl9vbmU7XFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzkzOlxcdHJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxhbnRpcS1zc2MuYz05MDQ9c3RhdGljIGludCBsYW50aXFfc3NjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbGFudGlxLXNzYy5jLTk5MC1cXG5kcml2ZXJzL3NwaS9zcGktbGFudGlxLXNzYy5jOjk5MTpcXHRlcnIgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbGFudGlxLXNzYy5jLTk5Mi1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jPTIxOD1zdGF0aWMgaW50IGxqY2Ffc3BpX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphdXhkZXYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0Mi1cXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jOjI0MzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjb250cm9sbGVyKTtcXG5kcml2ZXJzL3NwaS9zcGktbGpjYS5jLTI0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb25nc29uLWNvcmUuYz0xOTY9aW50IGxvb25nc29uX3NwaV9pbml0X2NvbnRyb2xsZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jLTIyNy1cXG5kcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tY29yZS5jOjIyODpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGNvbnRyb2xsZXIpO1xcbmRyaXZlcnMvc3BpL3NwaS1sb29uZ3Nvbi1jb3JlLmMtMjI5LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1scDg4NDEtcnRjLmM9MTgyPXNwaV9scDg4NDFfcnRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxMi1cXHQvKiByZWdpc3RlciB3aXRoIHRoZSBTUEkgZnJhbWV3b3JrICovXFxuZHJpdmVycy9zcGkvc3BpLWxwODg0MS1ydGMuYzoyMTM6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbHA4ODQxLXJ0Yy5jLTIxNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYz05Nzg9c3RhdGljIGludCBtZXNvbl9zcGljY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWNjLmMtMTA3NC1cXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYzoxMDc1OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jLTEwNzYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWZjLmM9Mjg1PXN0YXRpYyBpbnQgbWVzb25fc3BpZmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGlmYy5jLTMzMC1cXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpZmMuYzozMzE6XFx0cmV0ID0gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzcGlmYy1cXHUwMDNlZGV2LCBob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpZmMuYy0zMzItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXFzcGkuYz03MTk9c3RhdGljIGludCBtY2hwX2NvcmVxc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jLTc5Mi1cXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jOjc5MzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jLTc5NC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk1LVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCxcXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jOjc5NjpcXHRcXHRcXHRcXHQgICAgIFxcXCJzcGlfcmVnaXN0ZXJfY29udHJvbGxlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMtNzk3LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXNwaS5jPTI4Nz1zdGF0aWMgaW50IG1jaHBfY29yZXNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1pY3JvY2hpcC1jb3JlLXNwaS5jLTM4Ni1cXG5kcml2ZXJzL3NwaS9zcGktbWljcm9jaGlwLWNvcmUtc3BpLmM6Mzg3OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYy0zODgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM9NDU4PXN0YXRpYyBpbnQgbXBjNTEyeF9wc2Nfc3BpX29mX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBjNTEyeC1wc2MuYy01MTMtXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmM6NTE0OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLW1wYzUxMngtcHNjLmMtNTE1LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jPTI5ND1zdGF0aWMgaW50IG1wYzUyeHhfcHNjX3NwaV9vZl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHgtcHNjLmMtMzQzLVxcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jOjM0NDpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihkZXYsIGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1tcGM1Mnh4LXBzYy5jLTM0NS19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBjNTJ4eC5jPTM4Nz1zdGF0aWMgaW50IG1wYzUyeHhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYy00OTItXFx0ZGV2X2RiZyhcXHUwMDI2b3AtXFx1MDAzZWRldiwgXFxcInJlZ2lzdGVyaW5nIHNwaV9jb250cm9sbGVyIHN0cnVjdFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLW1wYzUyeHguYzo0OTM6XFx0cmMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbXBjNTJ4eC5jLTQ5NC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jPTUyNz1zdGF0aWMgaW50IG1wZnNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jLTU3Ni1cXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jOjU3NzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbXBmcy5jLTU3OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXQ2NXh4LmM9MTE3NT1zdGF0aWMgaW50IG10a19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI3LVxcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYzoxMzI4OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdDY1eHguYy0xMzI5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYz0zMTY9c3RhdGljIGludCBtdDc2MjFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXQ3NjIxLmMtMzY5LVxcbmRyaXZlcnMvc3BpL3NwaS1tdDc2MjEuYzozNzA6XFx0cmV0dXJuIGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLW10NzYyMS5jLTM3MS19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbXRrLW5vci5jPTgxMD1zdGF0aWMgaW50IG10a19ub3JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmMtOTE1LVxcbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmM6OTE2OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdGstbm9yLmMtOTE3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmM9MTMzOD1zdGF0aWMgaW50IG10a19zbmFuZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2NC1cXHRjdGxyLVxcdTAwM2Vtb2RlX2JpdHMgPSBTUElfUlhfRFVBTCB8IFNQSV9SWF9RVUFEIHwgU1BJX1RYX0RVQUwgfCBTUElfVFhfUVVBRDtcXG5kcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYzoxNDY1OlxcdHJldCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jLTE0NjYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jOjE0Njc6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwic3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkLlxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMtMTQ2OC1cXHRcXHRnb3RvIGZyZWVfYnVmO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW11eC5jPTEyNj1zdGF0aWMgaW50IHNwaV9tdXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1tdXguYy0xNjQtXFxuZHJpdmVycy9zcGkvc3BpLW11eC5jOjE2NTpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGN0bHIpO1xcbmRyaXZlcnMvc3BpL3NwaS1tdXguYy0xNjYtfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYz03NTU9c3RhdGljIGludCBteGljX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MTktXFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYzo4MjA6XFx0cmV0ID0gc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoaG9zdCk7XFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MjEtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvc3BpL3NwaS1teGljLmM6ODIyOlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInNwaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLW14aWMuYy04MjMtXFx0XFx0cG1fcnVudGltZV9kaXNhYmxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW14cy5jPTUyOD1zdGF0aWMgaW50IG14c19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1teHMuYy02MjAtXFxuZHJpdmVycy9zcGkvc3BpLW14cy5jOjYyMTpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbXhzLmMtNjIyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLWZpdS5jPTY4OT1zdGF0aWMgaW50IG5wY21fZml1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1maXUuYy03NDYtXFxuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmM6NzQ3OlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3RybCk7XFxuZHJpdmVycy9zcGkvc3BpLW5wY20tZml1LmMtNzQ4LX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYz0zNDA9c3RhdGljIGludCBucGNtX3BzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ucGNtLXBzcGkuYy00MTItXFxuZHJpdmVycy9zcGkvc3BpLW5wY20tcHNwaS5jOjQxMzpcXHRyZXQgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihob3N0KTtcXG5kcml2ZXJzL3NwaS9zcGktbnBjbS1wc3BpLmMtNDE0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbnhwLWZzcGkuYz0xMjg2PXN0YXRpYyBpbnQgbnhwX2ZzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jLTEzOTAtXFxuZHJpdmVycy9zcGkvc3BpLW54cC1mc3BpLmM6MTM5MTpcXHRyZXR1cm4gZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktbnhwLWZzcGkuYy0xMzkyLX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1ueHAteHNwaS5jPTEyMDg9c3RhdGljIGludCBueHBfeHNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5MC1cXG5kcml2ZXJzL3NwaS9zcGktbnhwLXhzcGkuYzoxMjkxOlxcdHJldHVybiBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGRldiwgY3Rscik7XFxuZHJpdmVycy9zcGkvc3BpLW54cC14c3BpLmMtMTI5Mi19XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktb21hcDItbWNzcGkuYz0xNDc0PXN0YXRpYyBpbnQgb21hcDJfbWNzcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1vbWFwMi1tY3NwaS5jLTE1ODktXFxuZHJpdmVycy9zcGkvc3BpLW9tYXAyLW1jc3BpLmM6MTU5MDpcXHRzdGF0dXMgPSBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihjdGxyKTtcXG5kcml2ZXJzL3NwaS9zcGktb21hcDItbWNzcGkuYy0xNTkxLVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLW9yaW9uLmM9NjQ0PXN0YXRpYyBpbnQgb3Jpb25fc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktb3Jpb24uYy03NzgtXFxuZHJpdmVycy9zcGkvc3BpLW9yaW9uLmM6Nzc5OlxcdHN0YXR1cyA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGhvc3QpO1xcbmRyaXZlcnMvc3BpL3NwaS1vcmlvbi5jLTc4MC1cXHRpZiAoc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1wY2kxeHh4eC5jPTgwMD1zdGF0aWMgaW50IHBjaTF4eHh4X3NwaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1wY2kxeHh4eC5jLTkzMS1cXHRcXHRzcGlfY29udHJvbGxlcl9zZXRfZGV2ZGF0YShzcGlfaG9zdCwgc3BpX3N1Yl9wdHIpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoxOC43OTIyMzc4MjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTcwMjgzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgU2VhcmNoIGZvciBhIER1bW15IFNQSSBDb250cm9sbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgZm9yIGEgd2F5IHRvIHNpbXVsYXRlIGFuIFNQSSBjb250cm9sbGVyIGFuZCBkZXZpY2VzIHdpdGhpbiB0aGUga2VybmVsLCBzb21ldGhpbmcgdGhhdCBsZXRzIHVzZXItc3BhY2UgY3JlYXRlIHZpcnR1YWwgU1BJIGRldmljZXMuIEknbSBkcmF3aW5nIGEgYmxhbmsgb24gYW55dGhpbmcgbmFtZWQgYHNwaS1tb2NrYCBvciBgc3BpLWxvb3BiYWNrYCB0aGF0IGFjdHVhbGx5ICpyZWdpc3RlcnMqIGEgY29udHJvbGxlci4gSG1tLi4uIHdoYXQgYWJvdXQgdGhhdCBgc3BpLWxvb3BiYWNrLXRlc3QuY2AgZHJpdmVyPyBBaCwgbm8sIHRoYXQncyBqdXN0IGEgKmRldmljZSogZm9yIHRlc3RpbmcsIG5vdCBhIGNvbnRyb2xsZXIgaXRzZWxmLiBJdCB3b3VsZG4ndCBsZXQgdXNlci1zcGFjZSBkcml2ZSBpdCBsaWtlIGEgcmVhbCBjb250cm9sbGVyLlxuXG5MZXQncyBzZWUuLi4gSSdtIGZhbWlsaWFyIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgdGhhdCBpcyBmb3IgV2lGaSBzaW11bGF0aW9uLiBOb3QgdGhlIHJpZ2h0IHRyYWNrLiBBbmQgYGR1bW15X2hjZGA/IFVTQi4gRGVmaW5pdGVseSBub3Qgd2hhdCBJIG5lZWQuIFNvLi4uIEkgcmVhbGx5IG5lZWQgYSAqZHVtbXkqIFNQSSBjb250cm9sbGVyLiBEb2VzIG9uZSBldmVuIGV4aXN0PyBUaW1lIHRvIGRpZyBhcm91bmQuIEknbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYGRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmNgIGFuZCBzaW1pbGFyIGZpbGVzLiBIb3BlZnVsbHksIHRoZXJlIGlzIHNvbWV0aGluZyB0aGVyZSB0aGF0IEkndmUgbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMzMiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDoyOS4wMDkyNjg3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUzMzEzMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHVtbXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY3NCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTQ4MD1zdGF0aWMgYm9vbCBhdG1lbF9xc3BpX3N1cHBvcnRzX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNDk4LVxcdGlmIChvcC1cXHUwMDNlYWRkci5uYnl0ZXMgPT0gMiBcXHUwMDI2XFx1MDAyNiBvcC1cXHUwMDNlY21kLmJ1c3dpZHRoICE9IG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjQ5OTpcXHQgICAgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyA9PSAwKVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01MDAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jPTUyND1zdGF0aWMgaW50IGF0bWVsX3FzcGlfc2V0X2NmZyhzdHJ1Y3QgYXRtZWxfcXNwaSAqYXEsXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTI3LVxcdHUzMiBpYXIsIGljciwgaWZyO1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1Mjg6XFx0dTMyIGR1bW15X2N5Y2xlcyA9IDA7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTUyOS1cXHRpbnQgbW9kZTtcXG4tLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01MzktXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU0MDpcXHRpZiAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcylcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTQxOlxcdFxcdGR1bW15X2N5Y2xlcyA9IG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiA4IC8gb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoO1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NDItXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTQ2LVxcdCAqIHRoZSBvcHRpb24gZmllbGQuIEZvciB0aGUgMTYtYml0IGFkZHJlc3NlcywgdGhlIHdvcmthcm91bmQgZGVwZW5kc1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NDc6XFx0ICogb2YgdGhlIG51bWJlciBvZiByZXF1ZXN0ZWQgZHVtbXkgYml0cy4gSWYgdGhlcmUgYXJlIDggb3IgbW9yZSBkdW1teVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NDg6XFx0ICogY3ljbGVzLCB0aGUgYWRkcmVzcyBpcyBzaGlmdGVkIGFuZCBzZW50IHdpdGggdGhlIGZpcnN0IGR1bW15IGJ5dGUuXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU0OS1cXHQgKiBPdGhlcndpc2Ugb3Bjb2RlIGlzIGRpc2FibGVkIGFuZCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgYWRkcmVzc1xcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU1MS1cXHQgKiB1c2UgdGhlIHNhbWUgYnVzd2lkdGgpLiBUaGUgbGltaXRhdGlvbiBpcyB3aGVuIHRoZSAxNi1iaXQgYWRkcmVzcyBpc1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1NTI6XFx0ICogdXNlZCB3aXRob3V0IGVub3VnaCBkdW1teSBjeWNsZXMgYW5kIHRoZSBvcGNvZGUgaXMgdXNpbmcgYSBkaWZmZXJlbnRcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTUzLVxcdCAqIGJ1c3dpZHRoIHRoYW4gdGhlIGFkZHJlc3MuXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTYzLVxcdFxcdGNhc2UgMjpcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTY0OlxcdFxcdFxcdGlmIChkdW1teV9jeWNsZXMgXFx1MDAzYyA4IC8gb3AtXFx1MDAzZWFkZHIuYnVzd2lkdGgpIHtcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNTY1LVxcdFxcdFxcdFxcdGlmciBcXHUwMDI2PSB+UVNQSV9JRlJfSU5TVEVOO1xcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU3MS1cXHRcXHRcXHRcXHRpYXIgPSAob3AtXFx1MDAzZWFkZHIudmFsIFxcdTAwM2NcXHUwMDNjIDgpIFxcdTAwMjYgMHhmZmZmZmY7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU3MjpcXHRcXHRcXHRcXHRkdW1teV9jeWNsZXMgLT0gOCAvIG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoO1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy01NzMtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU5MC1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NTkxOlxcdC8qIFNldCBudW1iZXIgb2YgZHVtbXkgY3ljbGVzICovXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjU5MjpcXHRpZiAoZHVtbXlfY3ljbGVzKVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo1OTM6XFx0XFx0aWZyIHw9IFFTUElfSUZSX05CRFVNKGR1bW15X2N5Y2xlcyk7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYz02ODg9c3RhdGljIGludCBhdG1lbF9xc3BpX3NhbWE3ZzVfc2V0X2NmZyhzdHJ1Y3QgYXRtZWxfcXNwaSAqYXEsXFxuLS1cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzAyLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDM6XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCBcXHUwMDI2XFx1MDAyNiBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKSB7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwNDpcXHRcXHRpZiAob3AtXFx1MDAzZWFkZHIuZHRyIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkdW1teS5kdHIgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWRhdGEuZHRyKVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDU6XFx0XFx0XFx0aWZyIHw9IFFTUElfSUZSX05CRFVNKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiA4IC9cXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmM6NzA2OlxcdFxcdFxcdFxcdFxcdCAgICAgICgyICogb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoKSk7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTcwNy1cXHRcXHRlbHNlXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcwODpcXHRcXHRcXHRpZnIgfD0gUVNQSV9JRlJfTkJEVU0ob3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAqIDggL1xcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYzo3MDk6XFx0XFx0XFx0XFx0XFx0ICAgICAgb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoKTtcXG5kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMtNzEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvc3BpL2F0bWVsLXF1YWRzcGkuYy03MTctXFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jOjcxODpcXHRpZiAob3AtXFx1MDAzZWFkZHIuZHRyIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkdW1teS5kdHIgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWRhdGEuZHRyKSB7XFxuZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jLTcxOS1cXHRcXHRpZnIgfD0gUVNQSV9JRlJfRERSRU47XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYz00ODY9c3RhdGljIGJvb2wgYWlyb2hhX3NuYW5kX2lzX3BhZ2Vfb3BzKGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICpvcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTQ5Ni1cXHRjYXNlIFNQSV9NRU1fREFUQV9JTjpcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo0OTc6XFx0XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiBCSVRTX1BFUl9CWVRFIC8gb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoIFxcdTAwM2UgMHhmKVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTQ5OC1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy01MTAtXFx0Y2FzZSBTUElfTUVNX0RBVEFfT1VUOlxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjUxMTpcXHRcXHRyZXR1cm4gIW9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWFkZHIuYnVzd2lkdGggPT0gMSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTUxMi1cXHRcXHQgICAgICAgKG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoID09IDQgfHwgb3AtXFx1MDAzZWRhdGEuYnVzd2lkdGggPT0gMSk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYz01MTg9c3RhdGljIGJvb2wgYWlyb2hhX3NuYW5kX3N1cHBvcnRzX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy01MzAtXFx0cmV0dXJuICghb3AtXFx1MDAzZWFkZHIubmJ5dGVzIHx8IG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoID09IDEpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6NTMxOlxcdCAgICAgICAoIW9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgfHwgb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoID09IDEpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtNTMyLVxcdCAgICAgICAoIW9wLVxcdTAwM2VkYXRhLm5ieXRlcyB8fCBvcC1cXHUwMDNlZGF0YS5idXN3aWR0aCA9PSAxKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jPTkzMj1zdGF0aWMgaW50IGFpcm9oYV9zbmFuZF9leGVjX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05MzUtXFx0c3RydWN0IGFpcm9oYV9zbmFuZF9jdHJsICphc19jdHJsO1xcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjkzNjpcXHRpbnQgb3BfbGVuLCBhZGRyX2xlbiwgZHVtbXlfbGVuO1xcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTkzNy1cXHR1OCBidWZbMjBdLCAqZGF0YTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk0My1cXHRhZGRyX2xlbiA9IG9wLVxcdTAwM2VhZGRyLm5ieXRlcztcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5NDQ6XFx0ZHVtbXlfbGVuID0gb3AtXFx1MDAzZWR1bW15Lm5ieXRlcztcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05NDUtXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTQ2OlxcdGlmIChvcF9sZW4gKyBkdW1teV9sZW4gKyBhZGRyX2xlbiBcXHUwMDNlIHNpemVvZihidWYpKVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk0Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk1My1cXHRcXHQqZGF0YSsrID0gb3AtXFx1MDAzZWFkZHIudmFsIFxcdTAwM2VcXHUwMDNlICg4ICogKGFkZHJfbGVuIC0gaSAtIDEpKTtcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5NTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGR1bW15X2xlbjsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk1NS1cXHRcXHQqZGF0YSsrID0gMHhmZjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jLTk4MS1cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5ODI6XFx0LyogZHVtbXkgKi9cXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYy05ODMtXFx0ZGF0YSArPSBhZGRyX2xlbjtcXG5kcml2ZXJzL3NwaS9zcGktYWlyb2hhLXNuZmkuYzo5ODQ6XFx0aWYgKGR1bW15X2xlbikge1xcbmRyaXZlcnMvc3BpL3NwaS1haXJvaGEtc25maS5jOjk4NTpcXHRcXHRlcnIgPSBhaXJvaGFfc25hbmRfd3JpdGVfZGF0YShhc19jdHJsLCBkYXRhLCBkdW1teV9sZW4sXFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmM6OTg2OlxcdFxcdFxcdFxcdFxcdCAgICAgIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCk7XFxuZHJpdmVycy9zcGkvc3BpLWFpcm9oYS1zbmZpLmMtOTg3LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM9NTQxPXN0YXRpYyB2b2lkIGFtZF9zcGlfbWVtX2RhdGFfb3V0KHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTU4NS1cXHRcXHRmb3IgKGkgPSAwOyBsZWZ0X2RhdGEgXFx1MDAzZT0gODsgaSsrLCBsZWZ0X2RhdGEgLT0gOClcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NTg2OlxcdFxcdFxcdGFtZF9zcGlfd3JpdGVyZWc2NChhbWRfc3BpLCBiYXNlX2FkZHIgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICsgKGkgKiA4KSxcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTg3LVxcdFxcdFxcdFxcdFxcdCAgICpidWZfNjQrKyk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNTkxLVxcdFxcdFxcdGFtZF9zcGlfd3JpdGVyZWc4KGFtZF9zcGksXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjU5MjpcXHRcXHRcXHRcXHRcXHQgIGJhc2VfYWRkciArIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKyBuYnl0ZXMgKyBpIC0gbGVmdF9kYXRhLFxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy01OTMtXFx0XFx0XFx0XFx0XFx0ICBidWZbaV0pO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTYwMz1zdGF0aWMgdm9pZCBhbWRfc3BpX2hpZGRtYV9yZWFkKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjIwLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYzo2MjE6XFx0LyogQ29uZmlndXJlIGR1bW15IGNsb2NrIGN5Y2xlcyBmb3IgZmFzdCByZWFkLCBkdWFsLCBxdWFkIEkvTyBjb21tYW5kcyAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjItXFx0aGlkX3JlZ3ZhbCA9IGFtZF9zcGlfcmVhZHJlZzMyKGFtZF9zcGksIEFNRF9TUElfSElEMl9SRUFEX0NOVFJMMik7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjYyMzpcXHQvKiBGYXN0IHJlYWQgZHVtbXkgY3ljbGUgKi9cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNjI0LVxcdGhpZF9yZWd2YWwgXFx1MDAyNj0gfkdFTk1BU0soNCwgMCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyNS1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI2OlxcdC8qIEZhc3QgcmVhZCBEdWFsIEkvTyBkdW1teSBjeWNsZSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MjctXFx0aGlkX3JlZ3ZhbCBcXHUwMDI2PSB+R0VOTUFTSygxMiwgOCk7XFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTYyOC1cXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NjI5OlxcdC8qIEZhc3QgcmVhZCBRdWFkIEkvTyBkdW1teSBjeWNsZSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy02MzAtXFx0aGlkX3JlZ3ZhbCA9IChoaWRfcmVndmFsIFxcdTAwMjYgfkdFTk1BU0soMjAsIDE2KSkgfCBCSVQoMTcpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jPTY2MT1zdGF0aWMgdm9pZCBhbWRfc3BpX21lbV9kYXRhX2luKHN0cnVjdCBhbWRfc3BpICphbWRfc3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTY5OS1cXHRcXHRhbWRfc3BpX3NldF9hZGRyKGFtZF9zcGksIG9wKTtcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmM6NzAwOlxcdFxcdGFtZF9zcGlfc2V0X3R4X2NvdW50KGFtZF9zcGksIG9wLVxcdTAwM2VhZGRyLm5ieXRlcyArIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MDEtXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcwMjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb3AtXFx1MDAzZWR1bW15Lm5ieXRlczsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MDMtXFx0XFx0XFx0YW1kX3NwaV93cml0ZXJlZzgoYW1kX3NwaSwgKGJhc2VfYWRkciArIGkpLCAweGZmKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MTAtXFx0XFx0Zm9yIChpID0gMDsgbGVmdF9kYXRhIFxcdTAwM2U9IDg7IGkrKywgbGVmdF9kYXRhIC09IDgpXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcxMTpcXHRcXHRcXHQqYnVmXzY0KysgPSBhbWRfc3BpX3JlYWRyZWc2NChhbWRfc3BpLCBiYXNlX2FkZHIgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICtcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzEyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIChpICogOCkpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTcxNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVmdF9kYXRhOyBpKyspXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jOjcxNjpcXHRcXHRcXHRidWZbaV0gPSBhbWRfc3BpX3JlYWRyZWc4KGFtZF9zcGksIGJhc2VfYWRkciArIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgK1xcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYy03MTctXFx0XFx0XFx0XFx0XFx0XFx0ICBuYnl0ZXMgKyBpIC0gbGVmdF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYz03OTE9c3RhdGljIGludCBhbWRfc3BpX3NldHVwX2hpZGRtYShzdHJ1Y3QgYW1kX3NwaSAqYW1kX3NwaSwgc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtZC5jLTc5NS1cXHQvKiBBbGxvY2F0ZSBETUEgYnVmZmVyIHRvIHVzZSBmb3IgSElEIGJhc2ljIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMuIEZvciB3cml0ZVxcbmRyaXZlcnMvc3BpL3NwaS1hbWQuYzo3OTY6XFx0ICogb3BlcmF0aW9ucywgdGhlIERNQSBidWZmZXIgc2hvdWxkIGluY2x1ZGUgdGhlIG9wY29kZSwgYWRkcmVzcyBieXRlcyBhbmQgZHVtbXlcXG5kcml2ZXJzL3NwaS9zcGktYW1kLmMtNzk3LVxcdCAqIGJ5dGVzKGlmIGFueSkgaW4gYWRkaXRpb24gdG8gdGhlIGRhdGEgYnl0ZXMuIEFkZGl0aW9uYWxseSwgdGhlIGhhcmR3YXJlIHJlcXVpcmVzXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTkxLVxcdFNQSUZDX0ExX1VTRVJfRFVNTVlfRU5BQkxFIHwgXFxcXFxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6OTI6XFx0RklFTERfUFJFUChTUElGQ19BMV9VU0VSX0RVTU1ZX01PREUsIGlsb2cyKChvcCktXFx1MDAzZWR1bW15LmJ1c3dpZHRoKSkgfCBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzo5MzpcXHRGSUVMRF9QUkVQKFNQSUZDX0ExX1VTRVJfRFVNTVlfQ0xLX1NZQ0xFUywgKG9wKS1cXHUwMDNlZHVtbXkubmJ5dGVzIFxcdTAwM2NcXHUwMDNjIDMpKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtOTQtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jPTE4MD1zdGF0aWMgdm9pZCBhbWxvZ2ljX3NwaWZjX2ExX3NldF9hZGRyKHN0cnVjdCBhbWxvZ2ljX3NwaWZjX2ExICpzcGlmYywgdTMyIGFkZHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jLTE5Mi1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjE5MzpzdGF0aWMgdm9pZCBhbWxvZ2ljX3NwaWZjX2ExX3NldF9kdW1teShzdHJ1Y3QgYW1sb2dpY19zcGlmY19hMSAqc3BpZmMsXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYzoxOTQ6XFx0XFx0XFx0XFx0ICAgICAgIHUzMiBkdW1teV9jZmcpXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0xOTUte1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0xOTgtXFx0dmFsIFxcdTAwMjY9IH4oU1BJRkNfQTFfVVNFUl9EVU1NWV9NT0RFIHwgU1BJRkNfQTFfVVNFUl9EVU1NWV9DTEtfU1lDTEVTKTtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hMS5jOjE5OTpcXHR2YWwgfD0gZHVtbXlfY2ZnO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMjAwLVxcdHdyaXRlbCh2YWwsIHNwaWZjLVxcdTAwM2ViYXNlICsgU1BJRkNfQTFfVVNFUl9DVFJMMl9SRUcpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYz0yNTM9c3RhdGljIGludCBhbWxvZ2ljX3NwaWZjX2ExX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMtMjcxLVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjcyOlxcdGlmIChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWExLmM6MjczOlxcdFxcdGFtbG9naWNfc3BpZmNfYTFfc2V0X2R1bW15KHNwaWZjLCBTUElGQ19BMV9VU0VSX0RVTU1ZKG9wKSk7XFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTEuYy0yNzQtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jPTMzNz1zdGF0aWMgYm9vbCBhbWxfc2ZjX2lzX3hpb19vcChjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM1MC1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM1MTpzdGF0aWMgaW50IGFtbF9zZmNfc2VuZF9jbWRfYWRkcl9kdW1teShzdHJ1Y3QgYW1sX3NmYyAqc2ZjLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNTIte1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmM6MzUzOlxcdHUzMiBkdW1teV9jeWNsZSwgY21kO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzU0LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2My1cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM2NDpcXHRpZiAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcykge1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtMzY1LVxcdFxcdC8qICBEdW1teSBidXN3aWR0aCBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2Ni1cXHRcXHRpZiAoYW1sX3NmY19pc194aW9fb3Aob3ApKVxcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmM6MzY3OlxcdFxcdFxcdGR1bW15X2N5Y2xlID0gb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAqIDggLyBvcC1cXHUwMDNlZGF0YS5idXN3aWR0aDtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jLTM2OC1cXHRcXHRlbHNlXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzozNjk6XFx0XFx0XFx0ZHVtbXlfY3ljbGUgPSBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICogODtcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjM3MDpcXHRcXHRjbWQgPSBDTURfRFVNTVkoc2ZjLVxcdTAwM2Vjc19zZWwsIGR1bW15X2N5Y2xlIC0gMSk7XFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy0zNzEtXFx0XFx0cmV0dXJuIHJlZ21hcF93cml0ZShzZmMtXFx1MDAzZXJlZ21hcF9iYXNlLCBTRkNfQ01ELCBjbWQpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYz03OTI9c3RhdGljIGludCBhbWxfc2ZjX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MDMtXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzo4MDQ6XFx0ZGV2X2RiZyhzZmMtXFx1MDAzZWRldiwgXFxcImNtZDoweCUwMnggLSBhZGRyOiUwOGxsWEAlZDoldSAtIGR1bW15OiVkOiV1IC0gZGF0YTolZDoldVxcXCIsXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MDUtXFx0XFx0b3AtXFx1MDAzZWNtZC5vcGNvZGUsIG9wLVxcdTAwM2VhZGRyLnZhbCwgb3AtXFx1MDAzZWFkZHIuYnVzd2lkdGgsIG9wLVxcdTAwM2VhZGRyLm5ieXRlcyxcXG5kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlmYy1hNC5jOjgwNjpcXHRcXHRvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGgsIG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMsIG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoLCBvcC1cXHUwMDNlZGF0YS5uYnl0ZXMpO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODA3LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYy04MTEtXFxuZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3BpZmMtYTQuYzo4MTI6XFx0cmV0ID0gYW1sX3NmY19zZW5kX2NtZF9hZGRyX2R1bW15KHNmYywgb3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaWZjLWE0LmMtODEzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTM0LSNkZWZpbmUgICBDVFJMX0lPX0FERFJFU1NfNEJcXHRcXHRCSVQoMTMpXFx0LyogQVNUMjQwMCBTUEkgb25seSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzU6I2RlZmluZSAgIENUUkxfSU9fRFVNTVlfU0VUKGR1bW15KVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjM2OlxcdCgoKCgoZHVtbXkpIFxcdTAwM2VcXHUwMDNlIDIpIFxcdTAwMjYgMHgxKSBcXHUwMDNjXFx1MDAzYyAxNCkgfCAoKChkdW1teSkgXFx1MDAyNiAweDMpIFxcdTAwM2NcXHUwMDNjIDYpKVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMzctI2RlZmluZSAgIENUUkxfRlJFUV9TRUxfU0hJRlRcXHRcXHQ4XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTIzOT1zdGF0aWMgc3NpemVfdCBhc3BlZWRfc3BpX3JlYWRfdXNlcihzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNDMtXFx0aW50IGlvX21vZGUgPSBhc3BlZWRfc3BpX2dldF9pb19tb2RlKG9wKTtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI0NDpcXHR1OCBkdW1teSA9IDB4RkY7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNDUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTI1My1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NDpcXHRpZiAob3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpIHtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjI1NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAvIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aDsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MjU2OlxcdFxcdFxcdGFzcGVlZF9zcGlfd3JpdGVfdG9fYWhiKGNoaXAtXFx1MDAzZWFoYl9iYXNlLCBcXHUwMDI2ZHVtbXksXFx0c2l6ZW9mKGR1bW15KSk7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0yNTctXFx0fVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYz0yODc9c3RhdGljIGJvb2wgYXNwZWVkX3NwaV9zdXBwb3J0c19tZW1fb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMjk5LVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzAwOlxcdGlmIChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICE9IDApIHtcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjMwMTpcXHRcXHRpZiAob3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoIFxcdTAwM2UgMSB8fCBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzIFxcdTAwM2UgNylcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTMwMi1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTMxMz1zdGF0aWMgaW50IGRvX2FzcGVlZF9zcGlfZXhlY19tZW1fb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtMzQwLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzQxOlxcdGlmIChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6MzQyOlxcdFxcdGN0bF92YWwgfD0gQ1RSTF9JT19EVU1NWV9TRVQob3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAvIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCk7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy0zNDMtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jPTY5Nj1zdGF0aWMgaW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJtYXBfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtNzA4LVxcdFxcdG9wLVxcdTAwM2VjbWQub3Bjb2RlLCBvcC1cXHUwMDNlY21kLmJ1c3dpZHRoLCBvcC1cXHUwMDNlYWRkci5idXN3aWR0aCxcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjcwOTpcXHRcXHRvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGgsIG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoLFxcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmM6NzEwOlxcdFxcdG9wLVxcdTAwM2VhZGRyLm5ieXRlcywgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyk7XFxuZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYy03MTEtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jLTcyOS1cXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMDpcXHRpZiAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcylcXG5kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jOjczMTpcXHRcXHRjdGxfdmFsIHw9IENUUkxfSU9fRFVNTVlfU0VUKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgLyBvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGgpO1xcbmRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMtNzMyLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jPTE4Nj1zdGF0aWMgdm9pZCBhdGNzcGlfc2V0X3RyYW5zX2N0bChzdHJ1Y3QgYXRjc3BpX2RldiAqc3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwNy1cXHRcXHRpZiAob3AtXFx1MDAzZWRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTikge1xcbmRyaXZlcnMvc3BpL3NwaS1hdGNzcGkyMDAuYzoyMDg6XFx0XFx0XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpXFxuZHJpdmVycy9zcGkvc3BpLWF0Y3NwaTIwMC5jLTIwOS1cXHRcXHRcXHRcXHR0YyB8PSBUUkFOU19NT0RFX0RNWV9SRUFEIHxcXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmM6MjEwOlxcdFxcdFxcdFxcdCAgICAgIFRSQU5TX0RVTU1ZX0NOVChvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKTtcXG5kcml2ZXJzL3NwaS9zcGktYXRjc3BpMjAwLmMtMjExLVxcdFxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hdGg3OS5jPTEzNz1zdGF0aWMgaW50IGF0aDc5X2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRoNzkuYy0xNDctXFx0aWYgKG9wLVxcdTAwM2VjbWQub3Bjb2RlICE9IDB4MGIgfHwgb3AtXFx1MDAzZWRhdGEuZGlyICE9IFNQSV9NRU1fREFUQV9JTiB8fFxcbmRyaXZlcnMvc3BpL3NwaS1hdGg3OS5jOjE0ODpcXHQgICAgb3AtXFx1MDAzZWFkZHIubmJ5dGVzICE9IDMgfHwgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAhPSAxKVxcbmRyaXZlcnMvc3BpL3NwaS1hdGg3OS5jLTE0OS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0zMTg9c3RhdGljIGJvb2wgYXRtZWxfc3BpX2lzX3YyKHN0cnVjdCBhdG1lbF9zcGkgKmFzKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzIzLS8qXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzI0OiAqIFNlbmQgYSBkdW1teSBtZXNzYWdlLlxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTMyNS0gKlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtMzI4LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jOjMyOTpzdGF0aWMgdm9pZCBhdG1lbF9zcGlfc2VuZF9kdW1teShzdHJ1Y3QgYXRtZWxfc3BpICphcywgc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgaW50IGNoaXBfc2VsZWN0KVxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTMzMC17XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy0zODAtICogcGFja2V0IGlzIHNlbnQsIG9uY2UgdGhlIENTIGhhcyBhbHJlYWR5IGJlZW4gYXNzZXJ0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6MzgxOiAqIGF2b2lkIHRoaXMgYnkgc2VuZGluZyBhIGZpcnN0IChkdW1teSkgbWVzc2FnZSBiZWZvcmUgdG9nZ2xpbmcgdGhlIENTIHN0YXRlLlxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTM4Mi0gKi9cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYz0zODM9c3RhdGljIHZvaWQgY3NfYWN0aXZhdGUoc3RydWN0IGF0bWVsX3NwaSAqYXMsIHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MTQtXFx0XFx0XFx0XFx0LypcXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYzo0MTU6XFx0XFx0XFx0XFx0ICogTmVlZCB0byBkaXNhYmxlIHRoZSBHUElPIGJlZm9yZSBzZW5kaW5nIHRoZSBkdW1teVxcbmRyaXZlcnMvc3BpL3NwaS1hdG1lbC5jLTQxNi1cXHRcXHRcXHRcXHQgKiBtZXNzYWdlIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBzZXQgYnkgdGhlIHNwaSBjb3JlLlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmMtNDE4LVxcdFxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLCAwKSwgMCk7XFxuZHJpdmVycy9zcGkvc3BpLWF0bWVsLmM6NDE5OlxcdFxcdFxcdFxcdGF0bWVsX3NwaV9zZW5kX2R1bW15KGFzLCBzcGksIGNoaXBfc2VsZWN0KTtcXG5kcml2ZXJzL3NwaS9zcGktYXRtZWwuYy00MjAtXFx0XFx0XFx0XFx0YXMtXFx1MDAzZWxhc3RfcG9sYXJpdHkgPSBuZXdfcG9sYXJpdHk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM9Mzk5PXN0YXRpYyBpbnQgYXhfdHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy00MzQtXFx0XFx0ICAgKHRyYW5zZmVyLVxcdTAwM2V0eF9idWYgXFx1MDAyNlxcdTAwMjYgdHJhbnNmZXItXFx1MDAzZXJ4X2J1ZikpIHtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NDM1OlxcdFxcdC8qIFJYIG1vZGU6IGdlbmVyYXRlIGNsb2NrIGJ5IGZpbGxpbmcgVFggRklGTyB3aXRoIGR1bW15IGJ5dGVzXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTQzNi1cXHRcXHQgKiBGdWxsLWR1cGxleCBtb2RlOiBnZW5lcmF0ZSBjbG9jayBieSBmaWxsaW5nIFRYIEZJRk9cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYz01NTQ9c3RhdGljIGludCBheF9zcGlfbWVtX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTU3MC1cXHRcXHRfX2Z1bmNfXywgb3AtXFx1MDAzZWNtZC5vcGNvZGUsIG9wLVxcdTAwM2VjbWQuYnVzd2lkdGgsIG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoLFxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo1NzE6XFx0XFx0b3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoLCBvcC1cXHUwMDNlZGF0YS5idXN3aWR0aCwgb3AtXFx1MDAzZWFkZHIudmFsLFxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01NzItXFx0XFx0b3AtXFx1MDAzZWRhdGEubmJ5dGVzKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy01NzctXFx0ICAgIG9wLVxcdTAwM2VhZGRyLmJ1c3dpZHRoICE9IDEpIHx8XFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjU3ODpcXHQgICAgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgXFx1MDAyNlxcdTAwMjYgb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoICE9IDAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NTc5OlxcdCAgICBvcC1cXHUwMDNlZHVtbXkuYnVzd2lkdGggIT0gMSkgfHxcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNTgwLVxcdCAgICAob3AtXFx1MDAzZWRhdGEubmJ5dGVzIFxcdTAwMjZcXHUwMDI2IG9wLVxcdTAwM2VkYXRhLmJ1c3dpZHRoICE9IDEpKSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNjE1LVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYzo2MTY6XFx0LyogQWRkIGR1bW15IGJ5dGVzIChmb3IgY2xvY2sgZ2VuZXJhdGlvbikgb3IgYWN0dWFsIGRhdGEgYnl0ZXMgdG8gVFhfRklGTyAqL1xcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02MTctXFx0aWYgKG9wLVxcdTAwM2VkYXRhLmRpciA9PSBTUElfTUVNX0RBVEFfSU4pIHtcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmM6NjE4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzOyBpKyspXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTYxOS1cXHRcXHRcXHRheF9zcGlfd3JpdGVfYih4c3BpLCBBWF9TUElfVFhGSUZPLCAweDAwKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02NjUtXFx0XFx0ICogU2luY2Ugd2Ugc2V0IFNSSSwgd2Ugb25seSBuZWVkIHRvIGRpc2NhcmQgdGhlIGFkZHJlc3MgYnl0ZXMgYW5kXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjY2NjpcXHRcXHQgKiBkdW1teSBieXRlcyBmcm9tIHRoZSBSWCBGSUZPLlxcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02NjctXFx0XFx0ICovXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjY2ODpcXHRcXHRieXRlc190b19kaXNjYXJkX2Zyb21fcnggPSBvcC1cXHUwMDNlYWRkci5uYnl0ZXMgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzO1xcbmRyaXZlcnMvc3BpL3NwaS1heGlhZG8uYy02NjktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJ5dGVzX3RvX2Rpc2NhcmRfZnJvbV9yeDsgaSsrKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jPTY5OT1zdGF0aWMgaW50IGF4X3NwaV9tZW1fYWRqdXN0X29wX3NpemUoc3RydWN0IHNwaV9tZW0gKm1lbSwgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jLTcwOC1cXHQvKiBDYWxjdWxhdGUgcHJvdG9jb2wgb3ZlcmhlYWQgYnl0ZXMgYWNjb3JkaW5nIHRvIHRoZSByZWFsIG9wZXJhdGlvbiBlYWNoIHRpbWUuICovXFxuZHJpdmVycy9zcGkvc3BpLWF4aWFkby5jOjcwOTpcXHRwcm90b2NvbF9vdmVyaGVhZF9ieXRlcyA9IG9wLVxcdTAwM2VjbWQubmJ5dGVzICsgb3AtXFx1MDAzZWFkZHIubmJ5dGVzICsgb3AtXFx1MDAzZWR1bW15Lm5ieXRlcztcXG5kcml2ZXJzL3NwaS9zcGktYXhpYWRvLmMtNzEwLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM9NDE2PXN0YXRpYyBpbnQgYmNtX3FzcGlfYnNwaV9zZXRfZmxleF9tb2RlKHN0cnVjdCBiY21fcXNwaSAqcXNwaSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jLTQzMC1cXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYzo0MzE6XFx0aWYgKG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMpXFxuZHJpdmVycy9zcGkvc3BpLWJjbS1xc3BpLmM6NDMyOlxcdFxcdGJwcCB8PSAob3AtXFx1MDAzZWR1bW15Lm5ieXRlcyAqIDgpIC8gb3AtXFx1MDAzZWR1bW15LmJ1c3dpZHRoO1xcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jLTQzMy1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jPTExNTA9c3RhdGljIGludCBiY21fcXNwaV9tc3BpX2V4ZWNfbWVtX29wKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xMTY4LVxcdHRbMF0udHhfYnVmID0gY21kO1xcbmRyaXZlcnMvc3BpL3NwaS1iY20tcXNwaS5jOjExNjk6XFx0dFswXS5sZW4gPSBvcC1cXHUwMDNlYWRkci5uYnl0ZXMgKyBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzICsgMTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtLXFzcGkuYy0xMTcwLVxcdHRbMF0uYml0c19wZXJfd29yZCA9IHNwaS1cXHUwMDNlYml0c19wZXJfd29yZDtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtMTEzLSAqIERlZmF1bHQgdHJhbnNmZXIgbW9kZSBpcyBhdXRvLiBJZiB0aGUgbXNnIGlzIHByZXBlbmRhYmxlLCB1c2UgdGhlIHByZXBlbmRcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjExNDogKiBtb2RlLiAgSWYgbm90LCBmYWxscyBiYWNrIHRvIHVzZSB0aGUgZHVtbXkgY3Mgd29ya2Fyb3VuZCBtb2RlIGJ1dCBsaW1pdCB0aGVcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTExNS0gKiBjbG9jayB0byAyNU1IeiB0byBtYWtlIHN1cmUgaXQgd29ya3MgaW4gYWxsIGJvYXJkIGRlc2lnbi5cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM9NTY3PXN0YXRpYyBpbnQgYmNtNjN4eF9oc3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MDMtXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MDQ6c3RhdGljIGludCBiY202M3h4X2hzc3BpX2RvX2R1bW15X2NzX3R4cngoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSxcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYwNS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc3BpX21lc3NhZ2UgKm1zZylcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjA4LVxcdGludCBzdGF0dXMgPSAtRUlOVkFMO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjA5OlxcdGludCBkdW1teV9jcztcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYxMC1cXHRib29sIGtlZXBfY3MgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjE3LVxcdCAqIGEuIEludmVydCB0aGUgdGFyZ2V0IGNoaXAgc2VsZWN0J3MgcG9sYXJpdHkgc28gaXQgd2lsbCBiZSBhY3RpdmUuXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MTg6XFx0ICogYi4gU2VsZWN0IGEgXFxcImR1bW15XFxcIiBjaGlwIHNlbGVjdCB0byB1c2UgYXMgdGhlIGhhcmR3YXJlIHRhcmdldC5cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYxOTpcXHQgKiBjLiBJbnZlcnQgdGhlIGR1bW15IGNoaXAgc2VsZWN0J3MgcG9sYXJpdHkgc28gaXQgd2lsbCBiZSBpbmFjdGl2ZVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjIwLVxcdCAqICAgIGR1cmluZyB0aGUgYWN0dWFsIHRyYW5zZmVycy5cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyMTpcXHQgKiBkLiBUZWxsIHRoZSBoYXJkd2FyZSB0byBzZW5kIHRvIHRoZSBkdW1teSBjaGlwIHNlbGVjdC4gVGhhbmtzIHRvXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MjItXFx0ICogICAgdGhlIG11bHRpcGxleGVkIG5hdHVyZSBvZiBTUEkgdGhlIGFjdHVhbCB0YXJnZXQgd2lsbCByZWNlaXZlXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTYyNy1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyODpcXHRkdW1teV9jcyA9ICFzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCAwKTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjYyOTpcXHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIHRydWUpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjMwLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02MzQtXFx0XFx0ICogYS4gTWVzc2FnZSBpcyBub3QgcHJlcGVuZGFibGUgYW5kIGluIGRlZmF1bHQgYXV0byB4ZmVyIG1vZGUuIFRoaXMgbWVhblxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmM6NjM1OlxcdFxcdCAqICAgIHdlIGZhbGxiYWNrIHRvIGR1bW15IGNzIG1vZGUgYXQgbWF4aW11bSAyNU1IeiBzYWZlIGNsb2NrIHJhdGUuXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYzo2MzY6XFx0XFx0ICogYi4gVXNlciBzZXQgdG8gdXNlIHRoZSBkdW1teSBjcyBtb2RlLlxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNjM3LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYy02NDEtXFx0XFx0XFx0XFx0ZGV2X3dhcm5fb25jZShcXHUwMDI2YnMtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjY0MjpcXHRcXHRcXHRcXHRcXHRcXFwiRm9yY2UgdG8gZHVtbXkgY3MgbW9kZS4gUmVkdWNlIHRoZSBzcGVlZCB0byAlZEh6XFxcIixcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY0My1cXHRcXHRcXHRcXHRcXHR0LVxcdTAwM2VzcGVlZF9oeik7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY3My1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjY3NDpcXHRiY202M3h4X2hzc3BpX3NldF9jcyhicywgZHVtbXlfY3MsIGZhbHNlKTtcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTY3NS1cXHRpZiAoc3RhdHVzIHx8ICFrZWVwX2NzKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJjbTYzeHgtaHNzcGkuYz02ODE9c3RhdGljIGludCBiY202M3h4X2hzc3BpX3RyYW5zZmVyX29uZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmhvc3QsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jLTcwMy1cXHRcXHR9IGVsc2VcXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC1oc3NwaS5jOjcwNDpcXHRcXHRcXHRzdGF0dXMgPSBiY202M3h4X2hzc3BpX2RvX2R1bW15X2NzX3R4cngoc3BpLCBtc2cpO1xcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LWhzc3BpLmMtNzA1LVxcdH1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM9MjE3PXN0YXRpYyBpbnQgYmNtNjN4eF90eHJ4X2J1ZnMoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IHNwaV90cmFuc2ZlciAqZmlyc3QsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYmNtNjN4eC5jLTI1Ni1cXHRcXHRcXHQgKlxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmM6MjU3OlxcdFxcdFxcdCAqIFRoZXJlZm9yZSwgZm9yIHJlYWQtb25seSB0cmFuc2ZlcnMsIHdlIG5lZWQgdG8gd3JpdGUgc29tZSBkdW1teVxcbmRyaXZlcnMvc3BpL3NwaS1iY202M3h4LmMtMjU4LVxcdFxcdFxcdCAqIHZhbHVlIGludG8gdGhlIEZJRk8gdG8ga2VlcCB0aGUgYWNjdW11bGF0b3IgdHJhY2tpbmcgdGhlIGNvcnJlY3RcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0zOTg9c3RhdGljIHVuc2lnbmVkIGludCBjcXNwaV9jYWxjX3JkcmVnKGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICpvcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MDgtXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjQwOTpzdGF0aWMgdW5zaWduZWQgaW50IGNxc3BpX2NhbGNfZHVtbXkoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTAte1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTE6XFx0dW5zaWduZWQgaW50IGR1bW15X2NsaztcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDEyLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MTM6XFx0aWYgKCFvcC1cXHUwMDNlZHVtbXkubmJ5dGVzKVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy00MTQtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxNS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NDE2OlxcdGR1bW15X2NsayA9IG9wLVxcdTAwM2VkdW1teS5uYnl0ZXMgKiAoOCAvIG9wLVxcdTAwM2VkdW1teS5idXN3aWR0aCk7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTQxNy1cXHRpZiAob3AtXFx1MDAzZWNtZC5kdHIpXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjQxODpcXHRcXHRkdW1teV9jbGsgLz0gMjtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDE5LVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo0MjA6XFx0cmV0dXJuIGR1bW15X2NsaztcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNDIxLX1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz01Mzg9c3RhdGljIGludCBjcXNwaV9jb21tYW5kX3JlYWQoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTU0Ny1cXHR1bnNpZ25lZCBpbnQgcmVnO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1NDg6XFx0dW5zaWduZWQgaW50IGR1bW15X2NsaztcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTQ5LVxcdHNpemVfdCByZWFkX2xlbjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy01NzItXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjU3MzpcXHRkdW1teV9jbGsgPSBjcXNwaV9jYWxjX2R1bW15KG9wKTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTc0OlxcdGlmIChkdW1teV9jbGsgXFx1MDAzZSBDUVNQSV9EVU1NWV9DTEtTX01BWClcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTc1LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTc2LVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzo1Nzc6XFx0aWYgKGR1bW15X2NsaylcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NTc4OlxcdFxcdHJlZyB8PSAoZHVtbXlfY2xrIFxcdTAwMjYgQ1FTUElfUkVHX0NNRENUUkxfRFVNTVlfTUFTSylcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtNTc5LVxcdFxcdCAgICAgXFx1MDAzY1xcdTAwM2MgQ1FTUElfUkVHX0NNRENUUkxfRFVNTVlfTFNCO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTY5MD1zdGF0aWMgaW50IGNxc3BpX3JlYWRfc2V0dXAoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTY5NC1cXHR2b2lkIF9faW9tZW0gKnJlZ19iYXNlID0gY3FzcGktXFx1MDAzZWlvYmFzZTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6Njk1OlxcdHVuc2lnbmVkIGludCBkdW1teV9jbGsgPSAwO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy02OTYtXFx0dW5zaWduZWQgaW50IHJlZztcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MTEtXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxMjpcXHQvKiBTZXR1cCBkdW1teSBjbG9jayBjeWNsZXMgKi9cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzEzOlxcdGR1bW15X2NsayA9IGNxc3BpX2NhbGNfZHVtbXkob3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MTQtXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxNTpcXHRpZiAoZHVtbXlfY2xrIFxcdTAwM2UgQ1FTUElfRFVNTVlfQ0xLU19NQVgpXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTcxNy1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6NzE4OlxcdGlmIChkdW1teV9jbGspXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjcxOTpcXHRcXHRyZWcgfD0gKGR1bW15X2NsayBcXHUwMDI2IENRU1BJX1JFR19SRF9JTlNUUl9EVU1NWV9NQVNLKVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy03MjAtXFx0XFx0ICAgICAgIFxcdTAwM2NcXHUwMDNjIENRU1BJX1JFR19SRF9JTlNUUl9EVU1NWV9MU0I7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM9MTAxNz1zdGF0aWMgaW50IGNxc3BpX3dyaXRlX3NldHVwKHN0cnVjdCBjcXNwaV9mbGFzaF9wZGF0YSAqZl9wZGF0YSxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xMDQ1LVxcdCAqIHBhc3NlZCBpbiB0aGUgUmVhZCBTUiBjb21tYW5kLiBBbHNvLCBzb21lIFNQSSBOT1IgZmxhc2hlcyBsaWtlIHRoZVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMDQ2OlxcdCAqIGN5cHJlc3MgU2VtcGVyIGZsYXNoIGV4cGVjdCBhIDQtYnl0ZSBkdW1teSBhZGRyZXNzIGluIHRoZSBSZWFkIFNSXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEwNDctXFx0ICogY29tbWFuZCBpbiBEVFIgbW9kZS5cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz0xMDc0PXN0YXRpYyBpbnQgY3FzcGlfaW5kaXJlY3Rfd3JpdGVfZXhlY3V0ZShzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTExMi1cXHQgKiBJZiBhIGhhemFyZCBleGlzdHMgYmV0d2VlbiB0aGUgQVBCIGFuZCBBSEIgaW50ZXJmYWNlcywgcGVyZm9ybSBhXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjExMTM6XFx0ICogZHVtbXkgcmVhZGJhY2sgZnJvbSB0aGUgY29udHJvbGxlciB0byBlbnN1cmUgc3luY2hyb25pemF0aW9uLlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xMTE0LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTEzMjU9c3RhdGljIHNzaXplX3QgY3FzcGlfd3JpdGUoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzMzgtXFx0LypcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6MTMzOTpcXHQgKiBTb21lIGZsYXNoZXMgbGlrZSB0aGUgQ3lwcmVzcyBTZW1wZXIgZmxhc2ggZXhwZWN0IGEgZHVtbXkgNC1ieXRlXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTEzNDAtXFx0ICogYWRkcmVzcyAoYWxsIDBzKSB3aXRoIHRoZSByZWFkIHN0YXR1cyByZWdpc3RlciBjb21tYW5kIGluIERUUiBtb2RlLlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxMzQxOlxcdCAqIEJ1dCB0aGlzIGNvbnRyb2xsZXIgZG9lcyBub3Qgc3VwcG9ydCBzZW5kaW5nIGR1bW15IGFkZHJlc3MgYnl0ZXMgdG9cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTM0Mi1cXHQgKiB0aGUgZmxhc2ggd2hlbiBpdCBpcyBwb2xsaW5nIHRoZSB3cml0ZSBjb21wbGV0aW9uIHJlZ2lzdGVyIGluIERUUlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jPTE1MTY9c3RhdGljIGJvb2wgY3FzcGlfc3VwcG9ydHNfbWVtX29wKHN0cnVjdCBzcGlfbWVtICptZW0sXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyMi1cXHQvKlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYzoxNTIzOlxcdCAqIG9wLVxcdTAwM2VkdW1teS5kdHIgaXMgcmVxdWlyZWQgZm9yIGNvbnZlcnRpbmcgbmJ5dGVzIGludG8gbmN5Y2xlcy5cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyNC1cXHQgKiBBbHNvLCBkb24ndCBjaGVjayB0aGUgZHRyIGZpZWxkIG9mIHRoZSBvcCBwaGFzZSBoYXZpbmcgemVybyBuYnl0ZXMuXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUyNy1cXHRcXHQgICAoIW9wLVxcdTAwM2VhZGRyLm5ieXRlcyB8fCBvcC1cXHUwMDNlYWRkci5kdHIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jOjE1Mjg6XFx0XFx0ICAgKCFvcC1cXHUwMDNlZHVtbXkubmJ5dGVzIHx8IG9wLVxcdTAwM2VkdW1teS5kdHIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLTE1MjktXFx0XFx0ICAgKCFvcC1cXHUwMDNlZGF0YS5uYnl0ZXMgfHwgb3AtXFx1MDAzZWRhdGEuZHRyKTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmMtMTUzMC1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS1xdWFkc3BpLmM6MTUzMTpcXHRhbGxfZmFsc2UgPSAhb3AtXFx1MDAzZWNtZC5kdHIgXFx1MDAyNlxcdTAwMjYgIW9wLVxcdTAwM2VhZGRyLmR0ciBcXHUwMDI2XFx1MDAyNiAhb3AtXFx1MDAzZWR1bW15LmR0ciBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYy0xNTMyLVxcdFxcdCAgICAhb3AtXFx1MDAzZWRhdGEuZHRyO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4MS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmM6MTgyOiNkZWZpbmUgQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfMyhvcCwgZHVtbXlieXRlcykgKCBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4My1cXHRGSUVMRF9QUkVQKENETlNfWFNQSV9DTURfRFNFUV9SM19EQ05UX0gsIFxcXFxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy0xODUtXFx0RklFTERfUFJFUChDRE5TX1hTUElfQ01EX0RTRVFfUjNfTlVNX09GX0RVTU1ZLCBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NjpcXHRcXHQgIChvcCktXFx1MDAzZWR1bW15LmJ1c3dpZHRoICE9IDAgPyBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjE4NzpcXHRcXHQgICgoKGR1bW15Ynl0ZXMpICogOCkgLyAob3ApLVxcdTAwM2VkdW1teS5idXN3aWR0aCkgOiBcXFxcXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTE4OC1cXHRcXHQgIDApKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jPTcxOT1zdGF0aWMgaW50IGNkbnNfeHNwaV9zZW5kX3N0aWdfY29tbWFuZChzdHJ1Y3QgY2Ruc194c3BpX2RldiAqY2Ruc194c3BpLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTcyNS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3MjY6XFx0aW50IGR1bW15Ynl0ZXMgPSBvcC1cXHUwMDNlZHVtbXkubmJ5dGVzO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03MjctXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzQwLVxcdGNtZF9yZWdzWzJdID0gQ0ROU19YU1BJX0NNRF9GTERfUDFfSU5TVFJfQ01EXzIob3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NDE6XFx0aWYgKGR1bW15Ynl0ZXMgIT0gMCkge1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYy03NDItXFx0XFx0Y21kX3JlZ3NbM10gPSBDRE5TX1hTUElfQ01EX0ZMRF9QMV9JTlNUUl9DTURfMyhvcCwgMSk7XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jOjc0MzpcXHRcXHRkdW1teWJ5dGVzLS07XFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTc0NC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UteHNwaS5jLTc1NS1cXHRcXHRjbWRfcmVnc1syXSA9IENETlNfWFNQSV9DTURfRkxEX0RTRVFfQ01EXzIob3ApO1xcbmRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXhzcGkuYzo3NTY6XFx0XFx0Y21kX3JlZ3NbM10gPSBDRE5TX1hTUElfQ01EX0ZMRF9EU0VRX0NNRF8zKG9wLCBkdW1teWJ5dGVzKTtcXG5kcml2ZXJzL3NwaS9zcGktY2FkZW5jZS14c3BpLmMtNzU3LVxcdFxcdGNtZF9yZWdzWzRdID0gQ0ROU19YU1BJX0NNRF9GTERfRFNFUV9DTURfNChvcCxcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM9NjI1PXN0YXRpYyBpbnQgZGF2aW5jaV9zcGlfYnVmcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYy02OTItXFx0XFx0XFx0ICogbWFueSBTRyBlbnRyaWVzIChcXHUwMDNlIDIwKSwgdXNlIHRoZSByeCBidWZmZXIgYXMgdGhlXFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYzo2OTM6XFx0XFx0XFx0ICogZHVtbXkgdHggYnVmZmVyIHNvIHRoYXQgZG1hIHJlbG9hZHMgYXJlIGRvbmUgYXQgdGhlXFxuZHJpdmVycy9zcGkvc3BpLWRhdmluY2kuYy02OTQtXFx0XFx0XFx0ICogc2FtZSB0aW1lIGZvciByeCBhbmQgdHguXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3MC0vKipcXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jOjc3MTogKiBkdW1teV90aHJlYWRfZm4gLSBkdW1teSB0aHJlYWQgZnVuY3Rpb25cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3Mi0gKiBAaXJxOiBJUlEgbnVtYmVyIGZvciB0aGlzIFNQSSBNYXN0ZXJcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtNzc3LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM6Nzc4OnN0YXRpYyBpcnFyZXR1cm5fdCBkdW1teV90aHJlYWRfZm4oczMyIGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTc3OS17XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jPTkyMj1zdGF0aWMgaW50IGRhdmluY2lfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktZGF2aW5jaS5jLTk3Ny1cXHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGRzcGktXFx1MDAzZWlycSwgZGF2aW5jaV9zcGlfaXJxLFxcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmM6OTc4OlxcdFxcdFxcdFxcdGR1bW15X3RocmVhZF9mbiwgMCwgZGV2X25hbWUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiksIGRzcGkpO1xcbmRyaXZlcnMvc3BpL3NwaS1kYXZpbmNpLmMtOTc5LVxcdGlmIChyZXQpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjI5LjE1NDYwODczN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjcwOTQxODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBvYV90YzZfc3RhcnRfeG1pdGAqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0byBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgYG9hX3RjNl9zdGFydF94bWl0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzZWUgaWYgdGhlIGBzcGktbG9vcGJhY2stdGVzdC5jYCBkcml2ZXIgY291bGQgYmUgdXNlZCB0byBzb21laG93IHJlYWNoIGl0LCBidXQgdGhhdCBzZWVtcyBsaWtlIGEgZGVhZCBlbmQuIEknbSByZW1pbmRlZCBvZiBhIHNpdHVhdGlvbiB3aGVyZSBJIHNob3VsZCByZXR1cm4gYGZhbHNlYCBmb3IgYFdvcnRoRnV6emluZ2AgaWYgdGhlIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzOyBJJ2xsIGtlZXAgdGhpcyBpbiBtaW5kLlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgaXMgYWJvdXQgdmlydHVhbCBTUEkgY29udHJvbGxlcnMuIEkgY2hlY2tlZCBmb3IgYSB2aXJ0dWFsIGNvbnRyb2xsZXIuIEkgZGlzbWlzc2VkIGBzcGktbW9jay5jYCBhbmQgdGhlbiB0aG91Z2h0IGFib3V0IGBzcGktZ3Bpby5jYCwgdGhlIGJpdGJhbmdpbmcgU1BJIGNvbnRyb2xsZXIuIENhbiBzeXprYWxsZXIgaW5zdGFudGlhdGUgc29tZXRoaW5nIGxpa2UgYHNwaS1ncGlvYD8gSSBrbm93IHRoYXQgc3l6a2FsbGVyICpjYW4qIHVzZSBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyB2aXJ0dWFsLCBidXQgZm9yIEdQSU8gaXQgbmVlZHMgYGdwaW8tbW9ja3VwYCBvciBgZ3Bpby1zaW1gLiBJZiBJIGNvdWxkIHVzZSBgZ3Bpby1zaW1gLCB0aGVuIHRoZW9yZXRpY2FsbHkgSSBjb3VsZCBpbnN0YW50aWF0ZSBgc3BpLWdwaW9gIG9uIHRvcCBvZiBpdCB1c2luZyBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciBwbGF0Zm9ybSBkYXRhLiBCdXQgd2FpdCwgc3l6a2FsbGVyIGRvZXNuJ3QgY3VycmVudGx5IGhhbmRsZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBmb3IgYHNwaS1ncGlvYC4gVGhpcyBtZWFucyB0aGF0IGBzcGktZ3Bpb2AgaXMgbm90IGFuIG9wdGlvbi4gQWxzbywgd2hpbGUgc3l6a2FsbGVyIGhhcyBgc3l6X2dlbmV0bGlua2AgYW5kIG90aGVyIHN1cHBvcnQgZm9yIG90aGVyIHRoaW5ncywgdGhlcmUncyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSBTUEkgZGV2aWNlcy5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrLiBJIHJlYWxpemUgdGhhdCBgb2FfdGM2YCBpcyBhIGxpYnJhcnkgYW5kIGl0J3Mgb25seSB1c2VkIGJ5IHRoZSBgbGFuODY1eGAgZHJpdmVyLiBJJ20gd29uZGVyaW5nIGlmIGBsYW44NjV4YCBpcyBpbnN0YW50aWFibGUuIEkgc2VlIHRoYXQgaXQgaGFzIGEgZGV2aWNlIHRyZWUgbWF0Y2g6IGBtaWNyb2NoaXAsbGFuODY1MGAuIFdpdGhvdXQgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIGl0IHdvbid0IGJlIHByb2JlZC4gU3l6a2FsbGVyIGRvZXNuJ3Qgc3VwcG9ydCB0aG9zZSBvdmVybGF5cyB0byBsb2FkIFNQSSBkZXZpY2VzLlxuXG5TbywgdGhlIG5leHQgdGhpbmcgdGhhdCBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgaWYgYG9hX3RjNl9zdGFydF94bWl0YCBpcyBwb3RlbnRpYWxseSByZWFjaGFibGUgdGhyb3VnaCAqYW5vdGhlciogcGF0aC4gSXQncyBleHBvcnRlZCwgc28gaXQncyBhIHBvc3NpYmlsaXR5LiBIb3dldmVyLCBJIHJlYWxpemUgb25seSBgbGFuODY1eGAgY2FsbHMgYG9hX3RjNl9pbml0YC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBsYW44NjV4YCBpcyAqb25seSogdGhlIGNhbGxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0NDcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6MzcuNDI1NTUyOTYzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ1NTY3ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9hX3RjNl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q9NDU0PVRoZSBpbmNsdWRlL2xpbnV4L29hX3RjNi5oIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1NS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q6NDU2Oi4uIGM6ZnVuY3Rpb246OiBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBcXFxcXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1Ny0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0zMzM9c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDk6XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXFx0aWYgKCFwcml2LVxcdTAwM2V0YzYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTQyNTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cXG4tLVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9MTM9c3RydWN0IG9hX3RjNjtcXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTE0LVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg6MTU6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNi12b2lkIG9hX3RjNl9leGl0KHN0cnVjdCBvYV90YzYgKnRjNik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjM5LjQ3MTEyNzgxMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTIzNzg4OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBsYW44NjV4YCBpbiBhIFRlc3RpbmcgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IHRoZSBjb2RlIEknbSBsb29raW5nIGF0IGlzIG9ubHkgY2FsbGVkIGJ5IGBsYW44NjV4YC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5ICpyZWFjaCogYGxhbjg2NXhgIHdpdGhpbiB0aGUgdGVzdCBlbnZpcm9ubWVudD8gTGV0J3Mgc2VlLi4uIEl0J3MgYW4gU1BJIGRyaXZlciwgcmlnaHQ/IFRoYXQncyBrZXkuIFRoZSBub3RlcyBzcGVjaWZpY2FsbHkgbWVudGlvbiBjb2RlIHBhdGhzIGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUg4oCTIHRoaW5rIFVTQiBnYWRnZXRzIG9yIGBtYWM4MDIxMV9od3NpbWAuIEluIG91ciBjYXNlLCBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGFueSBzb2Z0d2FyZS1lbXVsYXRlZCBTUEkgaGFyZHdhcmUgY2FwYWJsZSBvZiBpbnN0YW50aWF0aW5nIGBsYW44NjV4YCwgbWFraW5nIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggc2VlbSBpbXBvc3NpYmxlIHRvIHRyaWdnZXIuXG5cbkJ1dCwgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IHRvIGluamVjdCBhbiBTUEkgZGV2aWNlIGludG8gdGhlIHN5c3RlbT8gQ2FuIHdlIHVzZSBzeXNmcyBzb21laG93PyBJIGtub3cgYHNwaV9ib2FyZF9pbmZvYCBleGlzdHMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IHJlZ2lzdGVyIGEgZGV2aWNlLCBidXQgdGhhdCdzIHVzdWFsbHkgaGFuZGxlZCBieSB0aGUgYm9hcmQtc3BlY2lmaWMgY29kZS4gV2hhdCBhYm91dCBgc3BpZGV2YD8gTm8sIHRoYXQganVzdCBleHBvc2VzIGV4aXN0aW5nIFNQSSBkZXZpY2VzIHRvIHVzZXJzcGFjZTsgaXQgZG9lc24ndCBjcmVhdGUgbmV3IG9uZXMuIEkgd2FzIGhvcGluZyBmb3Igc29tZXRoaW5nIGxpa2UgYHNwaS1tb2NrYCwgYnV0IEkndmUgYWxyZWFkeSBjaGVja2VkLCBhbmQgaXQgZG9lc24ndCBleGlzdC5cblxuV2FpdC4uLiBJIG5lZWQgdG8gcmV0aGluayB0aGlzLiBNYXliZSB0aGVyZSdzIGEgZGlmZmVyZW50IHN5c2ZzIGludGVyZmFjZSDigJMgcGVyaGFwcyBzb21ldGhpbmcgcmVsYXRlZCB0byBgc3BpX25ld19kZXZpY2VgIG9yIGEgc2ltaWxhciBjYWxsIHRoYXQgYWxsb3dzIGRldmljZSBpbnN0YW50aWF0aW9uPyBMZXQgbWUgY2hlY2sgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE1MSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMTozMDo0NS4zOTQ5MTg5MDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTI2NDk2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jPTEyND1zdGF0aWMgaW50IGRmbF9zcGlfYWx0ZXJhX3Byb2JlKHN0cnVjdCBkZmxfZGV2aWNlICpkZmxfZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzQtXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYzoxNzU6XFx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBcXHUwMDI2Ym9hcmRfaW5mbykpIHtcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3Ni1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzIGZhaWxlZCB0byBjcmVhdGUgU1BJIGRldmljZTogJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM9MzU9c3RhdGljIGludCBhbHRlcmFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE5LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwZGF0YS1cXHUwMDNlbnVtX2RldmljZXM7IGkrKykge1xcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYzoxMjA6XFx0XFx0XFx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cXHUwMDNlZGV2aWNlcyArIGkpKVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMjEtXFx0XFx0XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYz0xNzY9c3RhdGljIHZvaWQgYnV0dGVyZmx5X2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjUtXFx0cHAtXFx1MDAzZWluZm9bMF0uY29udHJvbGxlcl9kYXRhID0gcHA7XFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jOjI2NjpcXHRwcC1cXHUwMDNlZGF0YWZsYXNoID0gc3BpX25ld19kZXZpY2UocHAtXFx1MDAzZWJpdGJhbmcuY3RsciwgXFx1MDAyNnBwLVxcdTAwM2VpbmZvWzBdKTtcXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY3LVxcdGlmIChwcC1cXHUwMDNlZGF0YWZsYXNoKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM9MTQxPXN0YXRpYyBpbnQgY2gzNDFfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDYtXFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM6MjA3OlxcdGNoMzQxLVxcdTAwM2VzcGlkZXYgPSBzcGlfbmV3X2RldmljZShjdHJsLCBcXHUwMDI2Y2hpcCk7XFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA4LVxcdGlmICghY2gzNDEtXFx1MDAzZXNwaWRldikge1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYz0zMTM9c3RhdGljIGludCBjczQybDQzX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjctXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0Mjg6XFx0XFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVxcdTAwM2VjdGxyLCBhbXBsX2luZm8pKVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI5LVxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMxLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDMyOlxcdFxcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cXHUwMDNlY3RsciwgYW1wcl9pbmZvKSlcXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMy1cXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIC1FTk9ERVYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYz0xMzc1PXN0YXRpYyBpbnQgaW50ZWxfc3BpX3BvcHVsYXRlX2NoaXAoc3RydWN0IGludGVsX3NwaSAqaXNwaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDEtXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQwMjpcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXFx1MDAzZWhvc3QsIFxcdTAwMjZjaGlwKSlcXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAzLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMC1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDMxOlxcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cXHUwMDNlaG9zdCwgXFx1MDAyNmNoaXApKVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzItXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYz0zMTA9c3RhdGljIGludCBrc3BpMl9yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBrc3BpMiAqa3NwaSlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mga3NwaS1cXHUwMDNlYXV4ZGV2LVxcdTAwM2VpbmZvX3NpemU7IGkrKykge1xcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jOjMxNzpcXHRcXHRzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2aWNlID0gc3BpX25ld19kZXZpY2Uoa3NwaS1cXHUwMDNlaG9zdCwgXFx1MDAyNmluZm9baV0pO1xcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxOC1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM9MTg4PXN0YXRpYyB2b2lkIHNwaV9sbTcwbGxwX2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY2LVxcdHBwLVxcdTAwM2VpbmZvLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjY3OlxcdHBwLVxcdTAwM2VzcGlkZXZfbG03MCA9IHNwaV9uZXdfZGV2aWNlKHBwLVxcdTAwM2ViaXRiYW5nLmN0bHIsIFxcdTAwMjZwcC1cXHUwMDNlaW5mbyk7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjgtXFx0aWYgKHBwLVxcdTAwM2VzcGlkZXZfbG03MClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjcxLVxcdGVsc2Uge1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjcyOlxcdFxcdGRldl93YXJuKFxcdTAwMjZwZC1cXHUwMDNlZGV2LCBcXFwic3BpX25ld19kZXZpY2UgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3My1cXHRcXHRzdGF0dXMgPSAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jPTQwMj1zdGF0aWMgaW50IHhpbGlueF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MDktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBkYXRhLVxcdTAwM2VudW1fZGV2aWNlczsgaSsrKVxcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYzo1MTA6XFx0XFx0XFx0c3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXFx1MDAzZWRldmljZXMgKyBpKTtcXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTExLVxcdH1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jPTc4OD1FWFBPUlRfU1lNQk9MX0dQTChzcGlfYWRkX2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy03OTAtLyoqXFxuZHJpdmVycy9zcGkvc3BpLmM6NzkxOiAqIHNwaV9uZXdfZGV2aWNlIC0gaW5zdGFudGlhdGUgb25lIG5ldyBTUEkgZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmMtNzkyLSAqIEBjdGxyOiBDb250cm9sbGVyIHRvIHdoaWNoIGRldmljZSBpcyBjb25uZWN0ZWRcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTgwMy0gKi9cXG5kcml2ZXJzL3NwaS9zcGkuYzo4MDQ6c3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG5kcml2ZXJzL3NwaS9zcGkuYy04MDUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gKmNoaXApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04NTktfVxcbmRyaXZlcnMvc3BpL3NwaS5jOjg2MDpFWFBPUlRfU1lNQk9MX0dQTChzcGlfbmV3X2RldmljZSk7XFxuZHJpdmVycy9zcGkvc3BpLmMtODYxLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9ODkwPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04OTctXFxuZHJpdmVycy9zcGkvc3BpLmM6ODk4OlxcdGRldiA9IHNwaV9uZXdfZGV2aWNlKGN0bHIsIGJpKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy04OTktXFx0aWYgKCFkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjQ1LjQ5NjE4ODc0NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTY4NTQ0NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHJvYWRibG9jay4gSXQgbG9va3MgbGlrZSB0aGVyZSdzIG5vIHN0cmFpZ2h0Zm9yd2FyZCBzeXNmcyBpbnRlcmZhY2UsIGxpa2Ugd2Ugb2Z0ZW4gc2VlIHdpdGggb3RoZXIgYnVzc2VzLCB0byBqdXN0ICpwb29mKiBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgU1BJIGRldmljZS4gSSB3YXMgcmVhbGx5IGhvcGluZyBmb3Igc29tZXRoaW5nIGNsZWFuIGFuZCBkeW5hbWljLCBidXQgaXQgc2VlbXMgdGhhdCdzIG5vdCB0aGUgY2FzZS5cblxuV2FpdCBhIHNlY29uZOKApiBob2xkIG9uLiBQZXJoYXBzIEknbSBiZWluZyB0b28gcGVzc2ltaXN0aWMuIFRoZXJlIG1pZ2h0IGJlIGEgaGlkZGVuLCBtb3JlIEkyQy1saWtlIGFwcHJvYWNoIHVzaW5nIGEgYG5ld19kZXZpY2VgIGF0dHJpYnV0ZSwgc29tZSBjbGV2ZXIgbWVjaGFuaXNtIHR1Y2tlZCBhd2F5LiBJdCB3b3VsZG4ndCBiZSBjb21wbGV0ZWx5IG91dCBvZiBjaGFyYWN0ZXIgZm9yIHRoZSBrZXJuZWwgdG8gZG8gc29tZXRoaW5nIGEgbGl0dGxlIGRpZmZlcmVudCBmb3IgU1BJLlxuXG5SaWdodCwgbGV0J3Mgc3RvcCBzcGVjdWxhdGluZyBhbmQgZ2V0IHRvIHRoZSBzb3VyY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9zcGkuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byBzZWUgd2hhdCB0aGUgcmVhbGl0eSBpcyBhbmQgZWl0aGVyIGNvbmZpcm0gbXkgc3VzcGljaW9uIG9yIGZpZ3VyZSBvdXQgYSBuZXcgc29sdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDk0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDE6MzA6NDkuMDY0NzM1OTMzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc4Njg4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3BpL3NwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3BpL3NwaS5jPTc4OD1FWFBPUlRfU1lNQk9MX0dQTChzcGlfYWRkX2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy03OTAtLyoqXFxuZHJpdmVycy9zcGkvc3BpLmM6NzkxOiAqIHNwaV9uZXdfZGV2aWNlIC0gaW5zdGFudGlhdGUgb25lIG5ldyBTUEkgZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmMtNzkyLSAqIEBjdGxyOiBDb250cm9sbGVyIHRvIHdoaWNoIGRldmljZSBpcyBjb25uZWN0ZWRcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTgwMy0gKi9cXG5kcml2ZXJzL3NwaS9zcGkuYzo4MDQ6c3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfZGV2aWNlKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG5kcml2ZXJzL3NwaS9zcGkuYy04MDUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gKmNoaXApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04NTktfVxcbmRyaXZlcnMvc3BpL3NwaS5jOjg2MDpFWFBPUlRfU1lNQk9MX0dQTChzcGlfbmV3X2RldmljZSk7XFxuZHJpdmVycy9zcGkvc3BpLmMtODYxLVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9ODkwPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy04OTctXFxuZHJpdmVycy9zcGkvc3BpLmM6ODk4OlxcdGRldiA9IHNwaV9uZXdfZGV2aWNlKGN0bHIsIGJpKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy04OTktXFx0aWYgKCFkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjQ5LjE0MjUyOTI3MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjI4NDAxMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nIGZvciBJbnN0YW50aWF0aW5nIHRoZSBMQU44NjV4IFNQSSBEZXZpY2UqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGR5bmFtaWNhbGx5IGJyaW5nIHVwIHRoaXMgYGxhbjg2NXhgIFNQSSBkZXZpY2UsIHJpZ2h0PyBGaXJzdCB0aG91Z2h0IGlzLCBpc24ndCB0aGVyZSB1c3VhbGx5IGEgYG5ld19kZXZpY2VgIGVudHJ5IGluIHN5c2ZzIGZvciBTUEk/IE5vcGUsIG5vdGhpbmcgdGhlcmUuIFNvLCBJIGNhbid0IHRyaWdnZXIgaXQgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHkuIEhtbSwgbWF5YmUgc3l6a2FsbGVyIGhhcyBhIHRyaWNrIHVwIGl0cyBzbGVldmUuIExldCBtZSBjaGVjay4uLlxuXG5TeXprYWxsZXIgdXNlcyBgc3l6X2Rldl9zcGlgLCBidXQgdGhhdCBqdXN0IGludGVyZmFjZXMgd2l0aCBleGlzdGluZyBgL2Rldi9zcGlkZXZYLllgIG5vZGVzLiBVc2VsZXNzLiBXYWl0IGEgc2Vjb25kLCBkaWRuJ3QgaXQgaGF2ZSBzb21ldGhpbmcgZm9yIFVTQj8gQWgsIGBzeXpfdXNiX2Nvbm5lY3RgISBDb3VsZCBJIGZpbmQgYSBVU0IgdG8gU1BJIGJyaWRnZSBkZXZpY2UgdGhhdCBJIGNvdWxkIGluc3RhbnRpYXRlIHRocm91Z2ggc3l6a2FsbGVyLCBhbmQgdGhlbiBzb21laG93IGdldCB0aGUgYGxhbjg2NXhgIGRyaXZlciB0byBwcm9iZSB0aGUgYnJpZGdlPyBMZXQncyBpbnZlc3RpZ2F0ZSB0aGUgZXhpc3RpbmcgVVNCLXRvLVNQSSBkcml2ZXJzLlxuXG5MZXQncyBsb29rIGF0IGBzcGktY2gzNDEuY2AgYW5kIGBzcGktZGxuMi5jYC4gT2theSwgYHNwaS1jaDM0MS5jYCAqaXMqIGEgVVNCLXRvLVNQSSBicmlkZ2UuIEJ1dCBkb2VzIGl0IGluc3RhbnRpYXRlIHRoZSB0YXJnZXQgZGV2aWNlPyBOb3BlLCBpdCBqdXN0IGNyZWF0ZXMgYSBgc3BpZGV2YCBlbnRyeSwgbGlrZSBJIGV4cGVjdGVkLiBTYW1lIGZvciBgc3BpLWRsbjIuY2AuIFNvLCB0aGF0J3MgYSBkZWFkIGVuZC4gTm8gbHVjayB3aXRoIHRoZSBVU0Igcm91dGUuXG5cbkJhc2ljYWxseSwgaWYgdGhpcyBgbGFuODY1eGAgaXMgdGhlIG9ubHkgY2FsbGVyIG9mIGBvYV90YzZfaW5pdGAsIHRoZSBgb2FfdGM2YCBjb2RlIGlzIHVucmVhY2hhYmxlLCByaWdodD8gVGhhdCBsb29rcyBsaWtlIHRoZSBzaXR1YXRpb24uIFdhaXQsIGlzIHRoZXJlICphbnkqIG90aGVyIHBsYWNlIHRoYXQgY2FsbHMgdGhpcyBmdW5jdGlvbj8gTGV0IG1lIGNoZWNrIHF1aWNrbHkgaWYgdGhlcmUgYXJlIG90aGVyIGNhbGxlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDkwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjU1LjM3MDkzMjY3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAzNzg4MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9hX3RjNl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q9NDU0PVRoZSBpbmNsdWRlL2xpbnV4L29hX3RjNi5oIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1NS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q6NDU2Oi4uIGM6ZnVuY3Rpb246OiBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBcXFxcXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1Ny0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0zMzM9c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDk6XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXFx0aWYgKCFwcml2LVxcdTAwM2V0YzYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEzMTA9RVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X3N0YXJ0X3htaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTMxMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMzEzOiAqIG9hX3RjNl9pbml0IC0gYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvYV90YzYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTQtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTMyMDpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTQyNTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTQyNi1cXG4tLVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9MTM9c3RydWN0IG9hX3RjNjtcXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTE0LVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg6MTU6c3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC0xNi12b2lkIG9hX3RjNl9leGl0KHN0cnVjdCBvYV90YzYgKnRjNik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMwOjU3LjE3NDcyOTQxNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTUxOTkwNDEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLiBJdCdzIG1vZGlmeWluZyBgb2FfdGM2LmNgLCB3aGljaCwgYXMgSSB1bmRlcnN0YW5kLCBpcyBhIGxpYnJhcnkgc3BlY2lmaWNhbGx5IGZvciBhbiBTUEkgRXRoZXJuZXQgTUFDLVBIWS4gVGhlIGNvZGUgdGhhdCBjYWxscyBpdCBpcyB0aGUgYGxhbjg2NXhgIGRyaXZlciwgd2hpY2ggaXMgYWxzbyBhbiBTUEkgZGV2aWNlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFP1xuXG5Jbml0aWFsbHksIG15IHRob3VnaHQgd2FzLCBcIk5vIHdheS5cIiBUaGVyZSdzIG5vIHN0YW5kYXJkIG1lY2hhbmlzbSBmb3IgZGlyZWN0bHkgaW5zdGFudGlhdGluZyBhcmJpdHJhcnkgU1BJIGRldmljZXMgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBXZSBjYW4ndCBqdXN0IG1hZ2ljYWxseSBjcmVhdGUgYW4gYGxhbjg2NXhgIGluc3RhbmNlLiAgTXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRoYXQgc3l6a2FsbGVyIGNvdWxkbid0IHRyaWdnZXIgdGhpcyBjb2RlIGJlY2F1c2UgaXQgZG9lc24ndCB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgZm9yIFNQSSBkZXZpY2VzLiBFdmVuIGlmIGl0ICpjb3VsZCosIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiAgQW5kIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIFNQSSB0aGF0IHdvdWxkIGxldCB1cyBjcmVhdGUgYXJiaXRyYXJ5IGRldmljZXMuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJIGNoZWNrZWQgZm9yIG90aGVyIHdheXMgdG8gcmVhY2ggYG9hX3RjNmAgLSBsaWtlIGBuZXRkZXZzaW1gIGFuZCBgZHVtbXlgIG5ldGRldi4gTm90aGluZy5cblxuU28sIEkgY2lyY2xlZCBiYWNrIHRvIGNvbmZpcm0gbXkgYW5hbHlzaXMuIFRoZSBgbGFuODY1eGAgZHJpdmVyLCBiZWluZyBhbiBTUEkgZHJpdmVyLCAqcmVxdWlyZXMqIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gSXQgbmVlZHMgdG8gYmUgcHJlc2VudCBpbiB0aGUgZGV2aWNlIHRyZWUgb3IgYm9hcmQgaW5mby4gIFFFTVUvR0NFIGRvbid0IHByb3ZpZGUgdGhpcyBoYXJkd2FyZSwgYW5kIHdlIGNhbid0IHNvZnR3YXJlLWVtdWxhdGUgYW4gYXJiaXRyYXJ5IFNQSSBidXMgZm9yIHRoaXMgcHVycG9zZS4gVGhlIGBsYW44NjV4X2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfc3BpX2RyaXZlcmAsIGFuZCBpdHMgcHJvYmUgZnVuY3Rpb24sIGBsYW44NjV4X3Byb2JlYCwgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGVyZSdzIGEgY29tcGF0aWJsZSBkZXZpY2UgcHJlc2VudC5cblxuVGhlcmVmb3JlLCB0aGUgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYG9hX3RjNl9pbml0YCAoYW5kIGJ5IGV4dGVuc2lvbiB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2gpIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQuIFRoZXkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gb3VyIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBTbywgY29uc2lkZXJpbmcgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nYCwgSSBhbSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1MzksIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAxOjMxOjA4LjY5NDYzNTQ0N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBvYV90YzYgbGlicmFyeSAoT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIFNQSSksIHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGUgbGFuODY1eCBTUEkgRXRoZXJuZXQgZHJpdmVyLiBTaW5jZSBTUEkgZGV2aWNlcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAodW5saWtlIFVTQiB2aWEgdmhjaSBvciBXaS1GaSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGUgbGFuODY1eCBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG9hX3RjNiBsaWJyYXJ5IChPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgU1BJKSwgd2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZSBsYW44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIuIFNpbmNlIFNQSSBkZXZpY2VzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICh1bmxpa2UgVVNCIHZpYSB2aGNpIG9yIFdpLUZpIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoZSBsYW44NjV4IGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgcm[1] Phase: Running StartedAt: 2026-06-27 01:31:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgcm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-27 01:31:19 +0000 UTC FinishedAt: 2026-06-27 01:31:26 +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,}