Name: series-workflowm7jmw Phase: Failed StartedAt: 2026-09-04 17:51:29 +0000 UTC FinishedAt: 2026-09-04 18:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7jmw[0] Phase: Succeeded StartedAt: 2026-09-04 17:51:29 +0000 UTC FinishedAt: 2026-09-04 18:15:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7jmw[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 17:51:29 +0000 UTC FinishedAt: 2026-09-04 18:15: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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkzYzA2ZDAzZjM2NGY0OTM3MWY4NGMxMWQwOTBjNWI5ZmY5YTUwOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjE0OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuaW5kZXggNjdlMGIyM2E4NDcwZS4uNmRiMzMxNWNlOTZiMyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5AQCAtNTYsNiAmIzQzOzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgICAgcmVnOlxuICAgICAgICAgbWF4SXRlbXM6IDFcbiBcbiYjNDM7ICAgICAgY2xvY2stZnJlcXVlbmN5OlxuJiM0MzsgICAgICAgIGRlZmF1bHQ6IDI1MDAwMDBcbiYjNDM7XG4gICAgIHJlcXVpcmVkOlxuICAgICAgIC0gcmVnXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCAxMWQwNzhlZjk0MWNkLi40YWYyODFiOTI0YWQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0xMzAsNiAmIzQzOzEzMCw3IEBAXG4gI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFU1x0XHRcdDQwOTZcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BPUlRTXHRcdFx0MjhcbiAjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXHRcdFx0MHhhMTAwXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTFx0XHRcdEJJVCgxKVxuICNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVx0XHRCSVQoMTUpXG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFx0XHQweGExYjhcbiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXHRcdDB4YTFiY1xuQEAgLTE2OSwxMiAmIzQzOzE3MCwxNSBAQFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXHRcdDB4MDNlOFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcdFx0MHgwM2ZjXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9TTUlfR0xCX0NUUkxcdFx0XHQweDAzZjhcbiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMXHRcdFx0R0VOTUFTSyg2LCA1KVxuIFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fQlVTRVNcdFx0XHQ0XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFU1x0XHRcdDQwOTZcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BPUlRTXHRcdFx0MjhcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0dMQl9DVFJMXHRcdFx0MHhjYTAwXG4gI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZilcdEJJVCgxNiAmIzQzOyAoaW50ZikpXG4mIzQzOyNkZWZpbmUgICBSVEw5MzAwX1NNSV9GUkVRX1NFTChpbnRmKVx0XHRHRU5NQVNLKChpbnRmKSAqIDIgJiM0MzsgOSwgKGludGYpICogMiAmIzQzOyA4KVxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcdDB4Y2EwOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhjYjcwXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGNiNzRcbkBAIC0xOTYsNiAmIzQzOzIwMCw4IEBAXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1x0XHRcdDRcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTXHRcdFx0ODE5MlxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUE9SVFNcdFx0XHQ1NlxuJiM0MzsjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMFx0XHRcdDB4MGNjMFxuJiM0MzsjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZilcdFx0R0VOTUFTSygoaW50ZikgKiAyICYjNDM7IDUsIChpbnRmKSAqIDIgJiM0MzsgNClcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMVx0XHRcdDB4MGNiY1xuICNkZWZpbmUgICBSVEw5MzEwX1NNSV9HTEJfRk1UX1NFTF9DNDUoaW50ZilcdEJJVCgoaW50ZikgKiAyICYjNDM7IDEpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wXHRcdDB4MGMwMFxuQEAgLTI1MSw2ICYjNDM7MjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XG4gXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4gXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogcHJvdGVjdCBIVyBhY2Nlc3MgKi9cbiBcdERFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpO1xuJiM0MztcdHUzMiBnbG9iYWxfZnJlcTtcbiBcdHUxNiBwYWdlW01BWF9QT1JUU107XG4gXHR1OCBzbWlfYnVzW01BWF9QT1JUU107XG4gXHR1OCBzbWlfYWRkcltNQVhfUE9SVFNdO1xuQEAgLTI2OSw2ICYjNDM7Mjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XG4gXHR1OCBudW1fcG9ydHM7XG4gXHR1MTYgbnVtX3BhZ2VzO1xuIFx0dTMyIHBvbGxfY3RybDtcbiYjNDM7XHRpbnQgKCpzZXRfYnVzX2ZyZXF1ZW5jeSkoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpO1xuIFx0aW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7XG4gXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuIFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuQEAgLTc0MCw2ICYjNDM7NzQ4LDE1IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdtYXBfYXNzaWduX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLFxuJiM0MztcdFx0XHRcdFx0IFJUTDgzODBfU01JX0ZSRVFfU0VMLFxuJiM0MztcdFx0XHRcdFx0IGZyZXEgXHUwMDNlPSAxMDAwMDAwMCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIHtcbiBcdC8qXG5AQCAtNzQ5LDYgJiM0Mzs3NjYsMzQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbCA9IEZJRUxEX1BSRVAoUlRMODM5MF9TTUlfRlJFUV9TRUwsIG1pbl90KHUzMiwgZnJlcSAvIDI1MDAwMDAsIDJVKSk7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEpIHtcbiYjNDM7XHRcdC8qIFdpdGggb25seSBvbmUgZ2xvYmFsIGZyZXF1ZW5jeSBhdmFpbGFibGUgc2tpcCBzZXR1cCBmb3Igc2Vjb25kIGJ1cy4gKi9cbiYjNDM7XHRcdGlmIChmcmVxICE9IHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEpXG4mIzQzO1x0XHRcdGRldl93YXJuKFx1MDAyNmJ1cy1cdTAwM2VkZXYsIFwmIzM0O09ubHkgb25lIGZyZXF1ZW5jeSBmb3IgYWxsIGJ1c2VzIHN1cHBvcnRlZFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1x0cHJpdi1cdTAwM2VnbG9iYWxfZnJlcSA9IGZyZXE7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzOTBfU01JX0dMQl9DVFJMLCBSVEw4MzkwX1NNSV9GUkVRX1NFTCwgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MzIgbWFzaywgdmFsO1xuJiM0MztcbiYjNDM7XHRtYXNrID0gUlRMOTMwMF9TTUlfRlJFUV9TRUwoY2hhbi1cdTAwM2VtZGlvX2J1cyk7XG4mIzQzO1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzAwX1NNSV9HTEJfQ1RSTCwgbWFzaywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTc2OSw2ICYjNDM7ODE0LDE4IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MzIgbWFzaywgdmFsO1xuJiM0MztcbiYjNDM7XHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cdTAwM2VtZGlvX2J1cyk7XG4mIzQzO1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAsIG1hc2ssIHZhbCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIHtcbiBcdGludCBpLCBlcnI7XG5AQCAtODMxLDE0ICYjNDM7ODg4LDE0IEBAIHN0YXRpYyB2b2lkIG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB9XG4gXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsXG4tXHRcdFx0XHQgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXG4mIzQzO1x0XHRcdFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLVx0dTMyIG1kaW9fYnVzO1xuJiM0MztcdHUzMiBtZGlvX2J1cywgZnJlcTtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZtZGlvX2J1cyk7XG4mIzQzO1x0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZtZGlvX2J1cyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7dW5kZWZpbmVkIHNtaSBidXMgbnVtYmVyXFxuXCYjMzQ7KTtcbiBcbkBAIC04NjUsNyAmIzQzOzkyMiwxMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFxuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzLSVkXCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBtZGlvX2J1cyk7XG4gXG4tXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIHRvX29mX25vZGUobm9kZSkpO1xuJiM0MztcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDtjbG9jay1mcmVxdWVuY3lcJiMzNDssIFx1MDAyNmZyZXEpKVxuJiM0MztcdFx0ZnJlcSA9IDI1MDAwMDA7XG4mIzQzO1x0ZXJyID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXNldF9idXNfZnJlcXVlbmN5KGJ1cywgZnJlcSk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDtjYW5ub3Qgc2V0IGZyZXF1ZW5jeSBmb3IgTURJTyBidXMgJWRcXG5cJiMzNDssIG1kaW9fYnVzKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDtjYW5ub3QgcmVnaXN0ZXIgTURJTyBidXNcXG5cJiMzNDspO1xuIFxuQEAgLTEwMjcsNyAmIzQzOzEwOTAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIE1ESU8gYnVzIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbiYjNDM7XHRmb3JfZWFjaF9jaGlsZF9vZl9ub2RlX3Njb3BlZChkZXYtXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcbiBcdFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIGVycjtcbkBAIC0xMDUxLDYgJiM0MzsxMTE0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM4MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICYjNDM7MTEzOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcbiBcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuQEAgLTEwOTcsNiAmIzQzOzExNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbkBAIC0xMTIzLDYgJiM0MzsxMTg5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGFuZCBhZGRzIGJ1cyBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBsb2dpYyB0byB0aGUgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBkcml2ZXIgKG1kaW8tcmVhbHRlay1ydGw5MzAwLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFJlYWx0ZWsgTUlQUy1iYXNlZCBzd2l0Y2ggU29DcyAoTUFDSF9SRUFMVEVLX1JUTCkgYW5kIGlzIGluc3RhbnRpYXRlZCB2aWEgRGV2aWNlIFRyZWUuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB4ODYvYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTNjMDZkMDNmMzY0ZjQ5MzcxZjg0YzExZDA5MGM1YjlmZjlhNTA4ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTg6MTQ6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwKaW5kZXggNjdlMGIyM2E4NDcwZS4uNmRiMzMxNWNlOTZiMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbApAQCAtNTYsNiAmIzQzOzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6CiAgICAgICByZWc6CiAgICAgICAgIG1heEl0ZW1zOiAxCiAKJiM0MzsgICAgICBjbG9jay1mcmVxdWVuY3k6CiYjNDM7ICAgICAgICBkZWZhdWx0OiAyNTAwMDAwCiYjNDM7CiAgICAgcmVxdWlyZWQ6CiAgICAgICAtIHJlZwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMKaW5kZXggMTFkMDc4ZWY5NDFjZC4uNGFmMjgxYjkyNGFkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYwpAQCAtMTMwLDYgJiM0MzsxMzAsNyBAQAogI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw4MzgwX1NNSV9HTEJfQ1RSTAkJCTB4YTEwMAomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTAkJCUJJVCgxKQogI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FCQlCSVQoMTUpCiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wCQkweGExYjgKICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEJCTB4YTFiYwpAQCAtMTY5LDEyICYjNDM7MTcwLDE1IEBACiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1cJCTB4MDNlNAogI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSAkJMHgwM2U4CiAjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMCQkweDAzZmMKJiM0MzsjZGVmaW5lIFJUTDgzOTBfU01JX0dMQl9DVFJMCQkJMHgwM2Y4CiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMCQkJR0VOTUFTSyg2LCA1KQogCiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTCQkJNAogI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTAkJCTB4Y2EwMAogI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZikJQklUKDE2ICYjNDM7IChpbnRmKSkKJiM0MzsjZGVmaW5lICAgUlRMOTMwMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA5LCAoaW50ZikgKiAyICYjNDM7IDgpCiAjZGVmaW5lIFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMCTB4Y2EwOAogI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMAkJMHhjYjcwCiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xCQkweGNiNzQKQEAgLTE5Niw2ICYjNDM7MjAwLDggQEAKICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVMJCQk0CiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTCQkJODE5MgogI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUUwkJCTU2CiYjNDM7I2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAJCQkweDBjYzAKJiM0MzsjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA1LCAoaW50ZikgKiAyICYjNDM7IDQpCiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMQkJCTB4MGNiYwogI2RlZmluZSAgIFJUTDkzMTBfU01JX0dMQl9GTVRfU0VMX0M0NShpbnRmKQlCSVQoKGludGYpICogMiAmIzQzOyAxKQogI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wCQkweDBjMDAKQEAgLTI1MSw2ICYjNDM7MjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqLwogCURFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpOwomIzQzOwl1MzIgZ2xvYmFsX2ZyZXE7CiAJdTE2IHBhZ2VbTUFYX1BPUlRTXTsKIAl1OCBzbWlfYnVzW01BWF9QT1JUU107CiAJdTggc21pX2FkZHJbTUFYX1BPUlRTXTsKQEAgLTI2OSw2ICYjNDM7Mjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7CiAJdTggbnVtX3BvcnRzOwogCXUxNiBudW1fcGFnZXM7CiAJdTMyIHBvbGxfY3RybDsKJiM0MzsJaW50ICgqc2V0X2J1c19mcmVxdWVuY3kpKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKTsKIAlpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTsKIAlpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpOwogCWludCAoKnJlYWRfYzQ1KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTsKQEAgLTc0MCw2ICYjNDM7NzQ4LDE1IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsCiYjNDM7CQkJCQkgUlRMODM4MF9TTUlfRlJFUV9TRUwsCiYjNDM7CQkJCQkgZnJlcSAmZ3Q7PSAxMDAwMDAwMCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogewogCS8qCkBAIC03NDksNiAmIzQzOzc2NiwzNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiAJcmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSkKJiM0Mzt7CiYjNDM7CXUzMiB2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7Z2xvYmFsX2ZyZXEpIHsKJiM0MzsJCS8qIFdpdGggb25seSBvbmUgZ2xvYmFsIGZyZXF1ZW5jeSBhdmFpbGFibGUgc2tpcCBzZXR1cCBmb3Igc2Vjb25kIGJ1cy4gKi8KJiM0MzsJCWlmIChmcmVxICE9IHByaXYtJmd0O2dsb2JhbF9mcmVxKQomIzQzOwkJCWRldl93YXJuKCZhbXA7YnVzLSZndDtkZXYsICYjMzQ7T25seSBvbmUgZnJlcXVlbmN5IGZvciBhbGwgYnVzZXMgc3VwcG9ydGVkJiMzNDspOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsJcHJpdi0mZ3Q7Z2xvYmFsX2ZyZXEgPSBmcmVxOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtJmd0O3ByaXY7CiYjNDM7CXUzMiBtYXNrLCB2YWw7CiYjNDM7CiYjNDM7CW1hc2sgPSBSVEw5MzAwX1NNSV9GUkVRX1NFTChjaGFuLSZndDttZGlvX2J1cyk7CiYjNDM7CXZhbCA9IGZpZWxkX3ByZXAobWFzaywgbWluX3QodTMyLCBmcmVxIC8gMjUwMDAwMCwgMlUpKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDkzMDBfU01JX0dMQl9DVFJMLCBtYXNrLCB2YWwpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIHsKIAl1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7CkBAIC03NjksNiAmIzQzOzgxNCwxOCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtJmd0O3ByaXY7CiYjNDM7CXUzMiBtYXNrLCB2YWw7CiYjNDM7CiYjNDM7CW1hc2sgPSBSVEw5MzEwX1NNSV9GUkVRX1NFTChjaGFuLSZndDttZGlvX2J1cyk7CiYjNDM7CXZhbCA9IGZpZWxkX3ByZXAobWFzaywgbWluX3QodTMyLCBmcmVxIC8gMjUwMDAwMCwgMlUpKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDkzMTBfU01JX0dMQl9DVFJMMCwgbWFzaywgdmFsKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiB7CiAJaW50IGksIGVycjsKQEAgLTgzMSwxNCAmIzQzOzg4OCwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB9CiAKIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LAotCQkJCSBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSkKJiM0MzsJCQkJc3RydWN0IGRldmljZV9ub2RlICpub2RlKQogewogCXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47CiAJc3RydWN0IG1paV9idXMgKmJ1czsKLQl1MzIgbWRpb19idXM7CiYjNDM7CXUzMiBtZGlvX2J1cywgZnJlcTsKIAlpbnQgZXJyOwogCi0JZXJyID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICYjMzQ7cmVnJiMzNDssICZhbXA7bWRpb19idXMpOwomIzQzOwllcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3JlZyYjMzQ7LCAmYW1wO21kaW9fYnVzKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgJiMzNDt1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcbiYjMzQ7KTsKIApAQCAtODY1LDcgJiM0Mzs5MjIsMTMgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYKIAogCXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwgJiMzNDslcy0lZCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBtZGlvX2J1cyk7CiAKLQllcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIHRvX29mX25vZGUobm9kZSkpOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgJiMzNDtjbG9jay1mcmVxdWVuY3kmIzM0OywgJmFtcDtmcmVxKSkKJiM0MzsJCWZyZXEgPSAyNTAwMDAwOwomIzQzOwllcnIgPSBwcml2LSZndDtpbmZvLSZndDtzZXRfYnVzX2ZyZXF1ZW5jeShidXMsIGZyZXEpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7Y2Fubm90IHNldCBmcmVxdWVuY3kgZm9yIE1ESU8gYnVzICVkXG4mIzM0OywgbWRpb19idXMpOwomIzQzOwomIzQzOwllcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpOwogCWlmIChlcnIpCiAJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCAmIzM0O2Nhbm5vdCByZWdpc3RlciBNRElPIGJ1c1xuJiMzNDspOwogCkBAIC0xMDI3LDcgJiM0MzsxMDkwLDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgJiMzNDtmYWlsZWQgdG8gc2V0dXAgTURJTyBidXMgY29udHJvbGxlclxuJiMzNDspOwogCX0KIAotCWRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlX3Njb3BlZChkZXYsIGNoaWxkKSB7CiYjNDM7CWZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi0mZ3Q7b2Zfbm9kZSwgY2hpbGQpIHsKIAkJZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwpAQCAtMTA1MSw2ICYjNDM7MTExNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0gewogCS5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsCiAJLnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCwKJiM0MzsJLnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5LAogCS5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsCiAJLnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLAogCS5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSwKQEAgLTEwNzUsNiAmIzQzOzExMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHsKIAkubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsCiAJLm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLAogCS5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCwKJiM0MzsJLnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5LAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsCiAJLndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIsCkBAIC0xMDk3LDYgJiM0MzsxMTYyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7CiAJLm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLAogCS5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUywKIAkucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LApAQCAtMTEyMyw2ICYjNDM7MTE4OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0gewogCS5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsCiAJLnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzQ1LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTQwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIFN5emthbGxlciBQYXRjaCBmb3IgUmVhbHRlayBSVEw5MzAwIE1ESU8gU3VwcG9ydCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSByZWxhdGVkIHRvIGZ1enppbmcgd2l0aCBzeXprYWxsZXIsIGFuZCBteSBmaXJzdCBzdGVwIGlzIGFsd2F5cyBhIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZC4gVGhlIGZpbGVzIGFyZSBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AuIFRoZSBZQU1MIGZpbGUgbGlrZWx5IGRlYWxzIHdpdGggRGV2aWNlIFRyZWUgYmluZGluZ3MsIHNvIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcgYnV0IHRoZSBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AgZmlsZSBpcyB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgZHJpdmVyIGNoYW5nZSBpcy4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZHJpdmVyLCBob3cgaXQmIzM5O3MgY29uZmlndXJlZCwgYW5kIHdoZXRoZXIgaXQmIzM5O3MgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgc3lzdGVtLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC4gSSYjMzk7bGwgd2FudCB0byBjaGVjayB0aGUgS2NvbmZpZywgc2VlIGhvdyBgTURJT19SRUFMVEVLX1JUTDkzMDBgIGlzIGRlZmluZWQsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgcHJldmVudCBpdCBmcm9tIGJlaW5nIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gQSBxdWljayBgZ2l0IGdyZXBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L21kaW8vYCBkaXJlY3RvcnkgZm9yIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gaHVudCB0aGlzIGRvd24sIGZvbGxvd2VkIGJ5IGEgbWFudWFsIGNoZWNrIG9mIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIHdpbGwgdGVsbCBtZSBxdWlja2x5IGlmIHRoZSBkcml2ZXIgaXMgbW9kdWxhciBvciBidWlsdC1pbiwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBpdCB0byBiZSBlbmFibGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBxdWljayBtZW50YWwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgdXNlIGNhc2VzIGFuZCBhdHRhY2sgc3VyZmFjZXMgdGhpcyBwYXRjaCBleHBvc2VzLCBzbyBJIGNhbiBnaXZlIGEgc29saWQgZXZhbHVhdGlvbiBmb3Igc3l6a2FsbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tcmVhbHRlay1ydGw5MzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19NRElPX1BJQzY0SFBTQylcdFx0JiM0Mzs9IG1kaW8tcGljNjRocHNjLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwKVx0JiM0Mzs9IG1kaW8tcmVhbHRlay1ydGw5MzAwLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX01ESU9fUkVHTUFQKVx0XHQmIzQzOz0gbWRpby1yZWdtYXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNjYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhIG5ldHdvcmtpbmcgZXhwZXJ0IHdvcmtpbmcgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zL0xpbnV4IGtlcm5lbCBkcml2ZXJzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSVEw5MzAwIE1ESU8gRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBNRElPIGRyaXZlciByZWxhdGVkIHRvIHRoZSBSZWFsdGVrIFJUTDkzMDAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgLiBUaGlzIHN1Z2dlc3RzIEkmIzM5O20gcHJvYmFibHkgdHJvdWJsZXNob290aW5nIHNvbWV0aGluZywgcGVyaGFwcyBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBkcml2ZXIsIG9yIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBidWlsZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJIG1pZ2h0IGJlIGxvb2tpbmcgZm9yIG9wdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc3BlY2lmaWMgZmVhdHVyZXMsIHNldCBkZWZhdWx0IHZhbHVlcywgb3IgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGFydGljdWxhciBNRElPIGRyaXZlci4gVGhpcyB3b3VsZCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIHRoZSBkcml2ZXImIzM5O3MgaW5jbHVzaW9uIGludG8gdGhlIGtlcm5lbCBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNjY9Y29uZmlnIE1ESU9fSVBRODA2NFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzMtXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc0OmNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjM1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcHJvY2Vzc2luZyB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBNRElPIEtjb25maWcgRmlsZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdGhlIEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy9uZXQvbWRpby9gLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgc2VjdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE3NC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQga2luZHMgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYmUgaW4gdGhhdCBhcmVhIOKAkyBwcm9iYWJseSByZWxhdGVkIHRvIHNwZWNpZmljIE1ESU8gZHJpdmVyIGZlYXR1cmVzLCBQSFkgdHlwZXMsIG9yIG1heWJlIHNvbWUgY29yZSBNRElPIGNvbnRyb2xsZXIgc2V0dGluZ3MuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgY3VycmVudCBwcm9ibGVtIEkmIzM5O20gd29ya2luZyBvbiwgYmUgaXQgZGVidWdnaW5nIGEgZHJpdmVyLCBjdXN0b21pemluZyBhIHN5c3RlbSBpbWFnZSwgb3IganVzdCBnYWluaW5nIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIE1ESU8gc3Vic3lzdGVtJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGJlIGFibGUgdG8gcXVpY2tseSBzcG90IGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGFuZCBoZWxwIHRleHRzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdGhlbHBcbiAxNzE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXG4gMTcyOlx0XHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcbiAxNzM6XHRcbiAxNzQ6XHRjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbiAxNzU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAxNzY6XHRcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBSZWFsdGVrXG4gMTc5Olx0XHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiAxODA6XHRcbiAxODE6XHRjb25maWcgTURJT19SRUdNQVBcbiAxODI6XHRcdHRyaXN0YXRlXG4gMTgzOlx0XHRoZWxwXG4gMTg0Olx0XHQgIFRoaXMgZHJpdmVyIGFsbG93cyB1c2luZyBNRElPIGRldmljZXMgdGhhdCBhcmUgbm90IHNpdHRpbmcgb24gYVxuIDE4NTpcdFx0ICByZWd1bGFyIE1ESU8gYnVzLCBidXQgc3RpbGwgZXhwb3NlcyB0aGUgc3RhbmRhcmQgODAyLjMgcmVnaXN0ZXJcbiAxODY6XHRcdCAgbGF5b3V0LiBJdCYjMzk7cyByZWdtYXAtYmFzZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiBpbnRlZ3JhdGVkLFxuIDE4NzpcdFx0ICBtZW1vcnktbWFwcGVkIFBIWXMsIFNQSSBQSFlzIGFuZCBzbyBvbi4gQSBuZXcgdmlydHVhbCBNRElPIGJ1cyBpc1xuIDE4ODpcdFx0ICBjcmVhdGVkLCBhbmQgaXRzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhcmUgbWFwcGVkIHRvIHRoZSB1bmRlcmx5aW5nXG4gMTg5Olx0XHQgIHJlZ21hcC4gVXNlcnMgd2lsbGluZyB0byB1c2UgdGhpcyBkcml2ZXIgbXVzdCBleHBsaWNpdGx5IHNlbGVjdFxuIDE5MDpcdFx0ICBSRUdNQVAuXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnIE1ESU9fVEhVTkRFUlxuIDE5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGh1bmRlclggU09DcyBNRElPIGJ1c2VzXCYjMzQ7XG4gMTk0Olx0XHRkZXBlbmRzIG9uIDY0QklUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMyOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWx0ZWsgUlRMOTMwMCBNRElPIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgYE1ESU9fUkVBTFRFS19SVEw5MzAwYC4gSXQmIzM5O3MgY2xlYXJseSBhIGRyaXZlciwgYW5kIGZyb20gdGhlIG5hbWUsIGl0JiMzOTtzIHNwZWNpZmljIHRvIHRoZSBNRElPIGludGVyZmFjZSBmb3IgUmVhbHRlayYjMzk7cyBSVEw4M3h4L1JUTDkzeHggRXRoZXJuZXQgc3dpdGNoIFNvQ3MuIFRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcyBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZC4gSXMgdGhpcyBkcml2ZXIgdHJpZ2dlcmVkIGJ5IHRoZSBkZXZpY2UgdHJlZSAoT0YpLCBvciBpcyBpdCBhIHBsYXRmb3JtIGRyaXZlciB0YWlsb3JlZCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR1cCB3aXRoaW4gdGhlc2UgUmVhbHRlayBTb0NzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmluZyBtZWNoYW5pc20uIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4YW1pbmUgdGhlIGNvZGUgaXRzZWxmLCBzdGFydGluZyB3aXRoIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29tZXMgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDAwOlx0XG4xMDAxOlx0XHRcdGVyciA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGJ1c19kbiwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZidXMpO1xuMTAwMjpcdFx0XHRpZiAoZXJyKVxuMTAwMzpcdFx0XHRcdGdvdG8gcHV0X25vZGVzO1xuMTAwNDpcdFxuMTAwNTpcdFx0XHRpZiAoYnVzIFx1MDAzZT0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZW51bV9idXNlcykge1xuMTAwNjpcdFx0XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCBcJiMzNDtpbGxlZ2FsIHNtaSBidXMgbnVtYmVyICVkXFxuXCYjMzQ7LCBidXMpO1xuMTAwNzpcdFx0XHRcdGdvdG8gcHV0X25vZGVzO1xuMTAwODpcdFx0XHR9XG4xMDA5Olx0XG4xMDEwOlx0XHRcdGFkZHIgPSBvZl9tZGlvX3BhcnNlX2FkZHIoZGV2LCBwaHlfZG4pO1xuMTAxMTpcdFx0XHRpZiAoYWRkciBcdTAwM2MgMCkge1xuMTAxMjpcdFx0XHRcdGVyciA9IGFkZHI7XG4xMDEzOlx0XHRcdFx0Z290byBwdXRfbm9kZXM7XG4xMDE0Olx0XHRcdH1cbjEwMTU6XHRcbjEwMTY6XHRcdFx0LypcbjEwMTc6XHRcdFx0ICogVGhlIE1ESU8gYWNjZXNzZXMgZnJvbSB0aGUga2VybmVsIHdvcmsgd2l0aCB0aGUgUEhZIHBvbGxpbmcgdW5pdCBpbiB0aGVcbjEwMTg6XHRcdFx0ICogc3dpdGNoLiBUaGUgUFBVIGVpdGhlciBvcGVyYXRlcyBpbiBHUEhZIChpLmUuIGNsYXVzZSAyMikgb3IgMTBHUEhZIG1vZGVcbjEwMTk6XHRcdFx0ICogKGkuZS4gY2xhdXNlIDQ1KS4gU2VsZWN0IDEwR1BIWSBtb2RlIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBQSFkgdGhhdFxuMTAyMDpcdFx0XHQgKiBkZWNsYXJlcyBjb21wYXRpYmxlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jNDVcJiMzNDsuXG4xMDIxOlx0XHRcdCAqL1xuMTAyMjpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUocGh5X2RuLCBcJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWM0NVwmIzM0OykpXG4xMDIzOlx0XHRcdFx0cHJpdi1cdTAwM2VzbWlfYnVzX2lzX2M0NVtidXNdID0gdHJ1ZTtcbjEwMjQ6XHRcbjEwMjU6XHRcdFx0X19zZXRfYml0KHBuLCBwcml2LVx1MDAzZXZhbGlkX3BvcnRzKTtcbjEwMjY6XHRcdFx0cHJpdi1cdTAwM2VzbWlfYnVzW3BuXSA9IGJ1cztcbjEwMjc6XHRcdFx0cHJpdi1cdTAwM2VzbWlfYWRkcltwbl0gPSBhZGRyO1xuMTAyODpcdHB1dF9ub2RlczpcbjEwMjk6XHRcdFx0b2Zfbm9kZV9wdXQoYnVzX2RuKTtcbjEwMzA6XHRcdFx0b2Zfbm9kZV9wdXQocGh5X2RuKTtcbjEwMzE6XHRcdFx0b2Zfbm9kZV9wdXQoY3RybF9kbik7XG4xMDMyOlx0XHRcdGlmIChlcnIpXG4xMDMzOlx0XHRcdFx0YnJlYWs7XG4xMDM0Olx0XHR9XG4xMDM1Olx0XG4xMDM2Olx0XHRvZl9ub2RlX3B1dChwb3J0c19kbik7XG4xMDM3Olx0XG4xMDM4Olx0XHRyZXR1cm4gZXJyO1xuMTAzOTpcdH1cbjEwNDA6XHRcbjEwNDE6XHRzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4xMDQyOlx0e1xuMTA0MzpcdFx0aW50IGVycjtcbjEwNDQ6XHRcbjEwNDU6XHRcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFx1MDAzYyBwcml2LVx1MDAzZWluZm8tXHUwMDNlbnVtX3BvcnRzOyBwb3J0JiM0MzsmIzQzOykge1xuMTA0NjpcdFx0XHRlcnIgPSBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpO1xuMTA0NzpcdFx0XHRpZiAoZXJyKVxuMTA0ODpcdFx0XHRcdHJldHVybiBlcnI7XG4xMDQ5Olx0XHR9XG4xMDUwOlx0XG4xMDUxOlx0XHRyZXR1cm4gMDtcbjEwNTI6XHR9XG4xMDUzOlx0XG4xMDU0Olx0c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4xMDU1Olx0e1xuMTA1NjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4xMDU3Olx0XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuMTA1ODpcdFx0aW50IGVycjtcbjEwNTk6XHRcbjEwNjA6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbjEwNjE6XHRcdGlmICghcHJpdilcbjEwNjI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMDYzOlx0XG4xMDY0Olx0XHRlcnIgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuMTA2NTpcdFx0aWYgKGVycilcbjEwNjY6XHRcdFx0cmV0dXJuIGVycjtcbjEwNjc6XHRcbjEwNjg6XHRcdHByaXYtXHUwMDNlaW5mbyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuMTA2OTpcdFx0cHJpdi1cdTAwM2VyZWdtYXAgPSBzeXNjb25fbm9kZV90b19yZWdtYXAoZGV2LVx1MDAzZXBhcmVudC1cdTAwM2VvZl9ub2RlKTtcbjEwNzA6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VyZWdtYXApKVxuMTA3MTpcdFx0XHRyZXR1cm4gUFRSX0VSUihwcml2LVx1MDAzZXJlZ21hcCk7XG4xMDcyOlx0XG4xMDczOlx0XHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcbjEwNzQ6XHRcdGlmIChlcnIpXG4xMDc1Olx0XHRcdHJldHVybiBlcnI7XG4xMDc2Olx0XG4xMDc3Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTtcbjEwNzg6XHRcbjEwNzk6XHRcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NTUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBSVEw5MzAwIE1ESU8gRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgUmVhbHRlayBSVEw5MzAwIE1ESU8gZHJpdmVyIGlzIHN0cnVjdHVyZWQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYHBsYXRmb3JtX2RyaXZlcmAgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCB0byBleGFtaW5lIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGxhdGZvcm0gZHJpdmVyJiMzOTtzIHNldHVwIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBicm9hZGVyIGtlcm5lbCBNRElPIGZyYW1ld29yay4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBtYWdpYyBoYXBwZW5zLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBzdGFydCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMzA6XHRcdFx0LmJyb2FkY2FzdCA9IFJUTDgzOTBfQkNBU1RfUEhZSURfQ1RSTCxcbjExMzE6XHRcdFx0LmMyMl9kYXRhID0gUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkwsXG4xMTMyOlx0XHRcdC5jNDVfZGF0YSA9IFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMLFxuMTEzMzpcdFx0XHQuZXh0X3BhZ2UgPSBSVEw4MzkwX1BIWVJFR19DVFJMLFxuMTEzNDpcdFx0XHQuaW9fZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0RBVEFfQ1RSTCxcbjExMzU6XHRcdFx0LnBvcnRfbWFza19sb3cgPSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XLFxuMTEzNjpcdFx0XHQucG9ydF9tYXNrX2hpZ2ggPSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSCxcbjExMzc6XHRcdH0sXG4xMTM4Olx0XHQubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsXG4xMTM5Olx0XHQubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsXG4xMTQwOlx0XHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXG4xMTQxOlx0XHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4xMTQyOlx0XHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXG4xMTQzOlx0XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXG4xMTQ0Olx0XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG4xMTQ1Olx0XHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbjExNDY6XHRcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1LFxuMTE0NzpcdH07XG4xMTQ4Olx0XG4xMTQ5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7XG4xMTUwOlx0XHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuMTE1MTpcdFx0LmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLFxuMTE1MjpcdFx0LmNtZF9mYWlsID0gUlRMOTMwMF9QSFlfQ1RSTF9GQUlMLFxuMTE1MzpcdFx0LmNtZF9yZWFkID0gUlRMOTMwMF9QSFlfQ1RSTF9SRUFELFxuMTE1NDpcdFx0LmNtZF93cml0ZSA9IFJUTDkzMDBfUEhZX0NUUkxfV1JJVEUsXG4xMTU1Olx0XHQuY21kX3JlZ3MgPSB7XG4xMTU2Olx0XHRcdC5jMjJfZGF0YSA9IFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xLFxuMTE1NzpcdFx0XHQuYzQ1X2RhdGEgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMyxcbjExNTg6XHRcdFx0LmlvX2RhdGEgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMixcbjExNTk6XHRcdFx0LnBvcnRfbWFza19sb3cgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMCxcbjExNjA6XHRcdH0sXG4xMTYxOlx0XHQubnVtX2J1c2VzID0gUlRMOTMwMF9OVU1fQlVTRVMsXG4xMTYyOlx0XHQubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsXG4xMTYzOlx0XHQubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsXG4xMTY0Olx0XHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxuMTE2NTpcdFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuMTE2NjpcdFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbjExNjc6XHRcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcbjExNjg6XHRcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbjExNjk6XHRcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxuMTE3MDpcdFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUsXG4xMTcxOlx0fTtcbjExNzI6XHRcbjExNzM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcbjExNzQ6XHRcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkwsXG4xMTc1Olx0XHQuYnVzX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTCxcbjExNzY6XHRcdC5jbWRfZmFpbCA9IFJUTDkzMTBfUEhZX0NUUkxfRkFJTCxcbjExNzc6XHRcdC5jbWRfcmVhZCA9IFJUTDkzMTBfUEhZX0NUUkxfUkVBRCxcbjExNzg6XHRcdC5jbWRfd3JpdGUgPSBSVEw5MzEwX1BIWV9DVFJMX1dSSVRFLFxuMTE3OTpcdFx0LmNtZF9yZWdzID0ge1xuMTE4MDpcdFx0XHQuYnJvYWRjYXN0ID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0JDX1BIWUlEX0NUUkwsXG4xMTgxOlx0XHRcdC5jMjJfZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzAsXG4xMTgyOlx0XHRcdC5jNDVfZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19NTURfQ1RSTCxcbjExODM6XHRcdFx0LmV4dF9wYWdlID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMSxcbjExODQ6XHRcdFx0LmlvX2RhdGEgPSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8zLFxuMTE4NTpcdFx0XHQucG9ydF9tYXNrX2xvdyA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzJfTE9XLFxuMTE4NjpcdFx0XHQucG9ydF9tYXNrX2hpZ2ggPSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8yX0hJR0gsXG4xMTg3Olx0XHR9LFxuMTE4ODpcdFx0Lm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLFxuMTE4OTpcdFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuMTE5MDpcdFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuMTE5MTpcdFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuMTE5MjpcdFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuMTE5MzpcdFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbjExOTQ6XHRcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbjExOTU6XHRcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbjExOTY6XHRcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyLFxuMTE5NzpcdFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUsXG4xMTk4Olx0fTtcbjExOTk6XHRcbjEyMDA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xuMTIwMTpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsODM4MC1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM4MF9pbmZvIH0sXG4xMjAyOlx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzkxLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb184MzkwX2luZm8gfSxcbjEyMDM6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDkzMDEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzkzMDBfaW5mbyB9LFxuMTIwNDpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMxMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMxMF9pbmZvIH0sXG4xMjA1Olx0XHR7fVxuMTIwNjpcdH07XG4xMjA3Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb3R0b19lbWRpb19pZHMpO1xuMTIwODpcdFxuMTIwOTpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG90dG9fZW1kaW9fZHJpdmVyID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjEwNQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG90dG9fZW1kaW9fZHJpdmVyYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBTbywgSSYjMzk7bSBsb29raW5nIGF0IGBvdHRvX2VtZGlvX2RyaXZlcmAsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgbWF0Y2hlZCB1c2luZyBEZXZpY2UgVHJlZS4gVGhlIG1hdGNoIGhhcHBlbnMgdmlhIHRoZSBgb3R0b19lbWRpb19pZHNgIHRhYmxlLCB3aGljaCBzdWdnZXN0cyBpdCB1c2VzIGNvbXBhdGlibGUgc3RyaW5ncy4gR29vZCwgdGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZS4gSSBzZWUgc3RyaW5ncyBsaWtlIGByZWFsdGVrLHJ0bDgzODAtbWRpb2AgYW5kIGByZWFsdGVrLHJ0bDkzMDEtbWRpb2Ag4oCTIHNvIGl0JiMzOTtzIGxpa2VseSBkZWFsaW5nIHdpdGggUmVhbHRlayBNRElPIGNvbnRyb2xsZXJzLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIHdoYXQgYXJjaGl0ZWN0dXJlIGlzIGBNQUNIX1JFQUxURUtfUlRMYCBkZXNpZ25lZCBmb3I/IEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlIGFuZCBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBNQUNIX1JFQUxURUtfUlRMYC4gS25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBwbGF0Zm9ybSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3MgdHJhY2UgdGhhdCBtYWNyby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDSF9SRUFMVEVLX1JUTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvS2NvbmZpZz02ODE9Y29uZmlnIFJBTElOS1xuLS1cbmFyY2gvbWlwcy9LY29uZmlnLTY5OC1cbmFyY2gvbWlwcy9LY29uZmlnOjY5OTpjb25maWcgTUFDSF9SRUFMVEVLX1JUTFxuYXJjaC9taXBzL0tjb25maWctNzAwLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBiYXNlZCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdCYjNDM7PSBjaXNjb19zZzIyMC0yNi5kdGJcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjM6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHQmIzQzOz0gY2FtZW8tcnRsOTMwMmMtMngtcnRsODIyNC0yeGdlLmR0YlxuLS1cbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcdFx0JiM0Mzs9IGJvYXJkLXJhbmNodS5vXG5hcmNoL21pcHMvZ2VuZXJpYy9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IGJvYXJkLXJlYWx0ZWsub1xuLS1cbmRyaXZlcnMvZ3Bpby9LY29uZmlnPTYyNT1jb25maWcgR1BJT19SRUFMVEVLX09UVE9cbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgT3R0byBHUElPIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxuZHJpdmVycy9ncGlvL0tjb25maWctNjI5LVx0c2VsZWN0IEdQSU9fR0VORVJJQ1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnPTExMDM9Y29uZmlnIEkyQ19SVEw5MzAwXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw5MzAwIEkyQyBjb250cm9sbGVyXCYjMzQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzoxMTA1Olx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cdGhlbHBcbi0tXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVx0XHQmIzQzOz0gaXJxLXNsMjhjcGxkLm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZToxMzE6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBpcnEtcmVhbHRlay1ydGwub1xuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTEzMi1vYmotJChDT05GSUdfV1BDTTQ1MF9BSUMpXHRcdCYjNDM7PSBpcnEtd3BjbTQ1MC1haWMub1xuLS1cbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZz02ND1jb25maWcgTVREX05BTkRfRUNDX1JFQUxURUtcbi0tXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY4LSAgICAgICAgc2VsZWN0IE1URF9OQU5EX0VDQ1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NjpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzctXHRoZWxwXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZz05MTY9Y29uZmlnIFNQSV9SRUFMVEVLX1NOQU5EXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxNy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgU1BJLU5BTkQgRmxhc2ggQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxOS1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL3NwaS9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX1NQSV9SQjRYWClcdFx0XHQmIzQzOz0gc3BpLXJiNHh4Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IHNwaS1yZWFsdGVrLXJ0bC5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX1NQSV9SRUFMVEVLX1NOQU5EKVx0XHQmIzQzOz0gc3BpLXJlYWx0ZWstcnRsLXNuYW5kLm9cbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc9MTExMz1jb25maWcgUkVBTFRFS19PVFRPX1dEVFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIE90dG8gTUlQUyB3YXRjaGRvZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE2LVx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTgtXHRzZWxlY3QgUkVHTUFQX01NSU9cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE5Olx0ZGVmYXVsdCBNQUNIX1JFQUxURUtfUlRMXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2ODkKCQkJCQkJCW91dHB1dDogMTM1CgkJCQkJCQl0aG91Z2h0czogNzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGFuIGBhbWQ2NGAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgY2hhbmdlcyBpbnZvbHZlIGBNRElPX1JFQUxURUtfUlRMOTMwMGAsIHdoaWNoLCBjcml0aWNhbGx5LCByZWxpZXMgb24gZWl0aGVyIGBNQUNIX1JFQUxURUtfUlRMYCBvciBgQ09NUElMRV9URVNUYC4gTG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiwgYE1BQ0hfUkVBTFRFS19SVExgIGlzIHRpZWQgdG8gTUlQUy1iYXNlZCBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBTb0NzLiBUaGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBSZWFsdGVrIHN3aXRjaCBTb0NzIChSVEw4MzgwLCBSVEw4MzkwLCBSVEw5MzAwLCBSVEw5MzEwKSBhbmQgaXMgbWF0Y2hlZCB1c2luZyB0aGUgRGV2aWNlIFRyZWUgKE9GKS4KClRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIEl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMsIGVtYmVkZGVkIFNvQyBkcml2ZXIuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBvZiB0aGVzZSBSZWFsdGVrIHN3aXRjaCBjaGlwcywgd2hpY2ggbWVhbnMgaXQgZGVwZW5kcyBvbiBhIHBoeXNpY2FsIGRldmljZSBvciBhIGNhcmVmdWxseSBjb25zdHJ1Y3RlZCBEVCBub2RlIHRoYXQgZGVzY3JpYmVzIGEgc3BlY2lmaWMgc3lzY29uIHJlZ21hcC4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UgY2FuIHJlYWNoIHZpYSBzdGFuZGFyZCB4ODYvYW1kNjQgdmlydHVhbCBidXNlcyBsaWtlIFBDSSwgVVNCLCBvciB2aXJ0dWFsIGJ1c2VzIGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLgoKTm93LCBsZXQmIzM5O3MgY29uc3VsdCB0aGUgJiMzNDtORUdBVElWRSBDUklURVJJQSYjMzQ7IG91dGxpbmVkIGluIFNlY3Rpb24gMi4gVGhlIGNyaXRpY2FsIHNlY3Rpb24gaGVyZSBkZXNjcmliZXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsJiMzNDsgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBzd2l0Y2hlcyBhbmQgU21hcnROSUNzIHJlcXVpcmluZyBzcGVjaWZpYyBoYXJkd2FyZSB1bmF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBJdCBhbHNvIGRlc2NyaWJlcyB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuIFRoaXMgc2l0dWF0aW9uIGZpdHMgcGVyZmVjdGx5OiB0aGUgY2hhbmdlcywgY2VudGVyZWQgYXJvdW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGFuZCBkZXZpY2V0cmVlIGJpbmRpbmdzLCBhcmUgZm9yIGEgcGxhdGZvcm0gZHJpdmVyIG9uIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IEV0aGVybmV0IHN3aXRjaCBTb0NzLCBzcGVjaWZpY2FsbHkgTUlQUy1iYXNlZCBlbWJlZGRlZCBTb0NzLiBUaGlzIGRyaXZlciBleHBlY3RzIHRvIGJlIHJ1bm5pbmcgb24gTUlQUyBoYXJkd2FyZSwgbm90IGFtZDY0LCBhbmQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgaXMgY29yZS4KClRvIGJlIGV4dHJhIGNlcnRhaW4sIEkgbmVlZCB0byBjaGVjayB0aGUgZGV0YWlsczogVGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLiBUaGUgY2hhbmdlcyBhcmUgdG8gYWRkIGJ1cyBmcmVxdWVuY3kgY29uZmlnIHZpYSBkZXZpY2V0cmVlIHByb3BlcnRpZXMgKCBgY2xvY2stZnJlcXVlbmN5YCApIHRvIHRoZSAuYyBmaWxlIGFuZCB0aGUgYmluZGluZ3MgeWFtbC4gSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBtb2RpZmljYXRpb25zIHRvIGNvcmUgc3Vic3lzdGVtcyBvciB2aXJ0dWFsIGRldmljZXMsIGp1c3QgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbGAgYW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBhbmQgdGhlIE1JUFMgZGVwZW5kZW5jZSBvZiB0aGlzIGNvZGUsIGl0JiMzOTtzIGNsZWFyOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbIF0qKiAoZW1wdHkpCiogICAqKkZvY3VzU3ltYm9sczogXFsgXSoqIChlbXB0eSkKKiAgICoqUmVhc29uaW5nOioqIFBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4Mzh4L1JUTDkzeHggTUlQUyBTb0MgRXRoZXJuZXQgc3dpdGNoIE1ESU8gaW50ZXJmYWNlLiBUaGUgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBvciBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBkdWUgdG8gYSBkZXBlbmRlbmNlIG9uIGEgc3BlY2lmaWMgTUlQUy1iYXNlZCBSZWFsdGVrIFNvQyBhbmQgcmVxdWlyZWQgaGFyZHdhcmUgb3Igc3BlY2lmaWMgRFQgY29uZmlndXJhdGlvbnMuCgpPa2F5LCBsZXQmIzM5O3MgZ2VuZXJhdGUgdGhlIGBzZXQtcmVzdWx0c2AgY2FsbCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjMzLjk1MDIzNzEzOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNTQ2NTk0MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzMuOTUwMjQzMDg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc3Nzc2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5M2MwNmQwM2YzNjRmNDkzNzFmODRjMTFkMDkwYzViOWZmOWE1MDhkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTQ6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXFxuaW5kZXggNjdlMGIyM2E4NDcwZS4uNmRiMzMxNWNlOTZiMyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG5AQCAtNTYsNiArNTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgICAgcmVnOlxcbiAgICAgICAgIG1heEl0ZW1zOiAxXFxuIFxcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XFxuKyAgICAgICAgZGVmYXVsdDogMjUwMDAwMFxcbitcXG4gICAgIHJlcXVpcmVkOlxcbiAgICAgICAtIHJlZ1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXFxuaW5kZXggMTFkMDc4ZWY5NDFjZC4uNGFmMjgxYjkyNGFkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcXG5AQCAtMTMwLDYgKzEzMCw3IEBAXFxuICNkZWZpbmUgUlRMODM4MF9OVU1fUEFHRVNcXHRcXHRcXHQ0MDk2XFxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcXHRcXHRcXHQyOFxcbiAjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXFx0XFx0XFx0MHhhMTAwXFxuKyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTFxcdFxcdFxcdEJJVCgxKVxcbiAjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkVcXHRcXHRCSVQoMTUpXFxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcXHRcXHQweGExYjhcXG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVxcdFxcdDB4YTFiY1xcbkBAIC0xNjksMTIgKzE3MCwxNSBAQFxcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1dcXHRcXHQweDAzZTRcXG4gI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSFxcdFxcdDB4MDNlOFxcbiAjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMXFx0XFx0MHgwM2ZjXFxuKyNkZWZpbmUgUlRMODM5MF9TTUlfR0xCX0NUUkxcXHRcXHRcXHQweDAzZjhcXG4rI2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMXFx0XFx0XFx0R0VOTUFTSyg2LCA1KVxcbiBcXG4gI2RlZmluZSBSVEw5MzAwX05VTV9CVVNFU1xcdFxcdFxcdDRcXG4gI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFU1xcdFxcdFxcdDQwOTZcXG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1xcdFxcdFxcdDI4XFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfR0xCX0NUUkxcXHRcXHRcXHQweGNhMDBcXG4gI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZilcXHRCSVQoMTYgKyAoaW50ZikpXFxuKyNkZWZpbmUgICBSVEw5MzAwX1NNSV9GUkVRX1NFTChpbnRmKVxcdFxcdEdFTk1BU0soKGludGYpICogMiArIDksIChpbnRmKSAqIDIgKyA4KVxcbiAjZGVmaW5lIFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMXFx0MHhjYTA4XFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcXHRcXHQweGNiNzBcXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVxcdFxcdDB4Y2I3NFxcbkBAIC0xOTYsNiArMjAwLDggQEBcXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1xcdFxcdFxcdDRcXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QQUdFU1xcdFxcdFxcdDgxOTJcXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1xcdFxcdFxcdDU2XFxuKyNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwwXFx0XFx0XFx0MHgwY2MwXFxuKyNkZWZpbmUgICBSVEw5MzEwX1NNSV9GUkVRX1NFTChpbnRmKVxcdFxcdEdFTk1BU0soKGludGYpICogMiArIDUsIChpbnRmKSAqIDIgKyA0KVxcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMVxcdFxcdFxcdDB4MGNiY1xcbiAjZGVmaW5lICAgUlRMOTMxMF9TTUlfR0xCX0ZNVF9TRUxfQzQ1KGludGYpXFx0QklUKChpbnRmKSAqIDIgKyAxKVxcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzBcXHRcXHQweDBjMDBcXG5AQCAtMjUxLDYgKzI1Nyw3IEBAIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xcbiBcXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XFxuIFxcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xcbiBcXHRERUNMQVJFX0JJVE1BUCh2YWxpZF9wb3J0cywgTUFYX1BPUlRTKTtcXG4rXFx0dTMyIGdsb2JhbF9mcmVxO1xcbiBcXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xcbiBcXHR1OCBzbWlfYnVzW01BWF9QT1JUU107XFxuIFxcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XFxuQEAgLTI2OSw2ICsyNzYsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcXG4gXFx0dTggbnVtX3BvcnRzO1xcbiBcXHR1MTYgbnVtX3BhZ2VzO1xcbiBcXHR1MzIgcG9sbF9jdHJsO1xcbitcXHRpbnQgKCpzZXRfYnVzX2ZyZXF1ZW5jeSkoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpO1xcbiBcXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcXG4gXFx0aW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTtcXG4gXFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xcbkBAIC03NDAsNiArNzQ4LDE1IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4rXFxuK1xcdHJldHVybiByZWdtYXBfYXNzaWduX2JpdHMocHJpdi1cXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgzODBfU01JX0ZSRVFfU0VMLFxcbitcXHRcXHRcXHRcXHRcXHQgZnJlcSBcXHUwMDNlPSAxMDAwMDAwMCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHQvKlxcbkBAIC03NDksNiArNzY2LDM0IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHUzMiB2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWdsb2JhbF9mcmVxKSB7XFxuK1xcdFxcdC8qIFdpdGggb25seSBvbmUgZ2xvYmFsIGZyZXF1ZW5jeSBhdmFpbGFibGUgc2tpcCBzZXR1cCBmb3Igc2Vjb25kIGJ1cy4gKi9cXG4rXFx0XFx0aWYgKGZyZXEgIT0gcHJpdi1cXHUwMDNlZ2xvYmFsX2ZyZXEpXFxuK1xcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZidXMtXFx1MDAzZWRldiwgXFxcIk9ubHkgb25lIGZyZXF1ZW5jeSBmb3IgYWxsIGJ1c2VzIHN1cHBvcnRlZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXHRwcml2LVxcdTAwM2VnbG9iYWxfZnJlcSA9IGZyZXE7XFxuK1xcbitcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbitcXHR1MzIgbWFzaywgdmFsO1xcbitcXG4rXFx0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXFx1MDAzZW1kaW9fYnVzKTtcXG4rXFx0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xcbitcXG4rXFx0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDkzMDBfU01JX0dMQl9DVFJMLCBtYXNrLCB2YWwpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xcbkBAIC03NjksNiArODE0LDE4IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdHUzMiBtYXNrLCB2YWw7XFxuK1xcbitcXHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cXHUwMDNlbWRpb19idXMpO1xcbitcXHR2YWwgPSBmaWVsZF9wcmVwKG1hc2ssIG1pbl90KHUzMiwgZnJlcSAvIDI1MDAwMDAsIDJVKSk7XFxuK1xcbitcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMOTMxMF9TTUlfR0xCX0NUUkwwLCBtYXNrLCB2YWwpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0aW50IGksIGVycjtcXG5AQCAtODMxLDE0ICs4ODgsMTQgQEAgc3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG4tXFx0XFx0XFx0XFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuIHtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbjtcXG4gXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tXFx0dTMyIG1kaW9fYnVzO1xcbitcXHR1MzIgbWRpb19idXMsIGZyZXE7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRlcnIgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXFxcInJlZ1xcXCIsIFxcdTAwMjZtZGlvX2J1cyk7XFxuK1xcdGVyciA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFxcXCJyZWdcXFwiLCBcXHUwMDI2bWRpb19idXMpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcInVuZGVmaW5lZCBzbWkgYnVzIG51bWJlclxcXFxuXFxcIik7XFxuIFxcbkBAIC04NjUsNyArOTIyLDEzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2XFxuIFxcbiBcXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlcy0lZFxcXCIsIGRldl9uYW1lKGRldiksIG1kaW9fYnVzKTtcXG4gXFxuLVxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgdG9fb2Zfbm9kZShub2RlKSk7XFxuK1xcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcXFwiY2xvY2stZnJlcXVlbmN5XFxcIiwgXFx1MDAyNmZyZXEpKVxcbitcXHRcXHRmcmVxID0gMjUwMDAwMDtcXG4rXFx0ZXJyID0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJjYW5ub3Qgc2V0IGZyZXF1ZW5jeSBmb3IgTURJTyBidXMgJWRcXFxcblxcXCIsIG1kaW9fYnVzKTtcXG4rXFxuK1xcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcXFwiY2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTEwMjcsNyArMTA5MCw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcImZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gXFx0fVxcbiBcXG4tXFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcXG4rXFx0Zm9yX2VhY2hfY2hpbGRfb2Zfbm9kZV9zY29wZWQoZGV2LVxcdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xcbiBcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG5AQCAtMTA1MSw2ICsxMTE0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XFxuIFxcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxcbiBcXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxcbitcXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3ksXFxuIFxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXFxuIFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMixcXG4gXFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LFxcbkBAIC0xMDc1LDYgKzExMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHtcXG4gXFx0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxcbiBcXHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXFxuIFxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG4rXFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5LFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcXG4gXFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIsXFxuQEAgLTEwOTcsNiArMTE2Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xcbiBcXHQubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsXFxuIFxcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcXG4gXFx0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcXG4rXFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcXG5AQCAtMTEyMyw2ICsxMTg5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XFxuIFxcdC5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUyxcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxcbiBcXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXFxuK1xcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4gXFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcXG4gXFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzIyLFxcbiBcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjM0LjM3ODY1MzM2MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzMxMTgxNjIxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgYW5kIGFkZHMgYnVzIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIGxvZ2ljIHRvIHRoZSBSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGRyaXZlciAobWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgUmVhbHRlayBNSVBTLWJhc2VkIHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSBhbmQgaXMgaW5zdGFudGlhdGVkIHZpYSBEZXZpY2UgVHJlZS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHg4Ni9hbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTNjMDZkMDNmMzY0ZjQ5MzcxZjg0YzExZDA5MGM1YjlmZjlhNTA4ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTQ6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbmluZGV4IDY3ZTBiMjNhODQ3MGUuLjZkYjMzMTVjZTk2YjMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuQEAgLTU2LDYgKzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgICAgcmVnOlxuICAgICAgICAgbWF4SXRlbXM6IDFcbiBcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XG4rICAgICAgICBkZWZhdWx0OiAyNTAwMDAwXG4rXG4gICAgIHJlcXVpcmVkOlxuICAgICAgIC0gcmVnXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCAxMWQwNzhlZjk0MWNkLi40YWYyODFiOTI0YWQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0xMzAsNiArMTMwLDcgQEBcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcdFx0XHQweGExMDBcbisjZGVmaW5lICAgUlRMODM4MF9TTUlfRlJFUV9TRUxcdFx0XHRCSVQoMSlcbiAjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkVcdFx0QklUKDE1KVxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhhMWI4XG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGExYmNcbkBAIC0xNjksMTIgKzE3MCwxNSBAQFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXHRcdDB4MDNlOFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcdFx0MHgwM2ZjXG4rI2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4MDNmOFxuKyNkZWZpbmUgICBSVEw4MzkwX1NNSV9GUkVRX1NFTFx0XHRcdEdFTk1BU0soNiwgNSlcbiBcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1x0XHRcdDI4XG4gI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4Y2EwMFxuICNkZWZpbmUgICBSVEw5MzAwX0dMQl9DVFJMX0lOVEZfU0VMKGludGYpXHRCSVQoMTYgKyAoaW50ZikpXG4rI2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXHRcdEdFTk1BU0soKGludGYpICogMiArIDksIChpbnRmKSAqIDIgKyA4KVxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcdDB4Y2EwOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhjYjcwXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGNiNzRcbkBAIC0xOTYsNiArMjAwLDggQEBcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1x0XHRcdDU2XG4rI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDBcdFx0XHQweDBjYzBcbisjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZilcdFx0R0VOTUFTSygoaW50ZikgKiAyICsgNSwgKGludGYpICogMiArIDQpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDFcdFx0XHQweDBjYmNcbiAjZGVmaW5lICAgUlRMOTMxMF9TTUlfR0xCX0ZNVF9TRUxfQzQ1KGludGYpXHRCSVQoKGludGYpICogMiArIDEpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wXHRcdDB4MGMwMFxuQEAgLTI1MSw2ICsyNTcsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4rXHR1MzIgZ2xvYmFsX2ZyZXE7XG4gXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xuIFx0dTggc21pX2J1c1tNQVhfUE9SVFNdO1xuIFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcbkBAIC0yNjksNiArMjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XG4gXHR1OCBudW1fcG9ydHM7XG4gXHR1MTYgbnVtX3BhZ2VzO1xuIFx0dTMyIHBvbGxfY3RybDtcbitcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XG4gXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbiBcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG4gXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG5AQCAtNzQwLDYgKzc0OCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsXG4rXHRcdFx0XHRcdCBSVEw4MzgwX1NNSV9GUkVRX1NFTCxcbitcdFx0XHRcdFx0IGZyZXEgXHUwMDNlPSAxMDAwMDAwMCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiB7XG4gXHQvKlxuQEAgLTc0OSw2ICs3NjYsMzQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcbiB9XG4gXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4re1xuK1x0dTMyIHZhbCA9IEZJRUxEX1BSRVAoUlRMODM5MF9TTUlfRlJFUV9TRUwsIG1pbl90KHUzMiwgZnJlcSAvIDI1MDAwMDAsIDJVKSk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEpIHtcbitcdFx0LyogV2l0aCBvbmx5IG9uZSBnbG9iYWwgZnJlcXVlbmN5IGF2YWlsYWJsZSBza2lwIHNldHVwIGZvciBzZWNvbmQgYnVzLiAqL1xuK1x0XHRpZiAoZnJlcSAhPSBwcml2LVx1MDAzZWdsb2JhbF9mcmVxKVxuK1x0XHRcdGRldl93YXJuKFx1MDAyNmJ1cy1cdTAwM2VkZXYsIFwiT25seSBvbmUgZnJlcXVlbmN5IGZvciBhbGwgYnVzZXMgc3VwcG9ydGVkXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcdHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEgPSBmcmVxO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpO1xuK31cbitcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1x0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuK1x0dTMyIG1hc2ssIHZhbDtcbitcbitcdG1hc2sgPSBSVEw5MzAwX1NNSV9GUkVRX1NFTChjaGFuLVx1MDAzZW1kaW9fYnVzKTtcbitcdHZhbCA9IGZpZWxkX3ByZXAobWFzaywgbWluX3QodTMyLCBmcmVxIC8gMjUwMDAwMCwgMlUpKTtcbitcbitcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDkzMDBfU01JX0dMQl9DVFJMLCBtYXNrLCB2YWwpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTc2OSw2ICs4MTQsMTggQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4rXHR1MzIgbWFzaywgdmFsO1xuK1xuK1x0bWFzayA9IFJUTDkzMTBfU01JX0ZSRVFfU0VMKGNoYW4tXHUwMDNlbWRpb19idXMpO1xuK1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMOTMxMF9TTUlfR0xCX0NUUkwwLCBtYXNrLCB2YWwpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IGksIGVycjtcbkBAIC04MzEsMTQgKzg4OCwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gfVxuIFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuLVx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuK1x0XHRcdFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLVx0dTMyIG1kaW9fYnVzO1xuK1x0dTMyIG1kaW9fYnVzLCBmcmVxO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4rXHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCJ1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcXG5cIik7XG4gXG5AQCAtODY1LDcgKzkyMiwxMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFxuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwiJXMtJWRcIiwgZGV2X25hbWUoZGV2KSwgbWRpb19idXMpO1xuIFxuLVx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcbitcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcImNsb2NrLWZyZXF1ZW5jeVwiLCBcdTAwMjZmcmVxKSlcbitcdFx0ZnJlcSA9IDI1MDAwMDA7XG4rXHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImNhbm5vdCBzZXQgZnJlcXVlbmN5IGZvciBNRElPIGJ1cyAlZFxcblwiLCBtZGlvX2J1cyk7XG4rXG4rXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFwiY2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxuXCIpO1xuIFxuQEAgLTEwMjcsNyArMTA5MCw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXFxuXCIpO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbitcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xuIFx0XHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuQEAgLTEwNTEsNiArMTExNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcbitcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICsxMTM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG4gXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbkBAIC0xMDk3LDYgKzExNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuIFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuIFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxuQEAgLTExMjMsNiArMTE4OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuK1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjM0LjM3ODY1NDcwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyMzgyODc2MzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIFN5emthbGxlciBQYXRjaCBmb3IgUmVhbHRlayBSVEw5MzAwIE1ESU8gU3VwcG9ydCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgcmVsYXRlZCB0byBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLCBhbmQgbXkgZmlyc3Qgc3RlcCBpcyBhbHdheXMgYSB0aG9yb3VnaCB1bmRlcnN0YW5kaW5nLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgYmVlbiBjaGFuZ2VkLiBUaGUgZmlsZXMgYXJlIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxgIGFuZCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC4gVGhlIFlBTUwgZmlsZSBsaWtlbHkgZGVhbHMgd2l0aCBEZXZpY2UgVHJlZSBiaW5kaW5ncywgc28gdGhhdCdzIGludGVyZXN0aW5nIGJ1dCB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGZpbGUgaXMgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGRyaXZlciBjaGFuZ2UgaXMuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZHJpdmVyLCBob3cgaXQncyBjb25maWd1cmVkLCBhbmQgd2hldGhlciBpdCdzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHN5c3RlbS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AuIEknbGwgd2FudCB0byBjaGVjayB0aGUgS2NvbmZpZywgc2VlIGhvdyBgTURJT19SRUFMVEVLX1JUTDkzMDBgIGlzIGRlZmluZWQsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgcHJldmVudCBpdCBmcm9tIGJlaW5nIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gQSBxdWljayBgZ2l0IGdyZXBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L21kaW8vYCBkaXJlY3RvcnkgZm9yIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gaHVudCB0aGlzIGRvd24sIGZvbGxvd2VkIGJ5IGEgbWFudWFsIGNoZWNrIG9mIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIHdpbGwgdGVsbCBtZSBxdWlja2x5IGlmIHRoZSBkcml2ZXIgaXMgbW9kdWxhciBvciBidWlsdC1pbiwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBpdCB0byBiZSBlbmFibGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBxdWljayBtZW50YWwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgdXNlIGNhc2VzIGFuZCBhdHRhY2sgc3VyZmFjZXMgdGhpcyBwYXRjaCBleHBvc2VzLCBzbyBJIGNhbiBnaXZlIGEgc29saWQgZXZhbHVhdGlvbiBmb3Igc3l6a2FsbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTQwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NDYuNzYxNTM0MDA1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzY5ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8tcmVhbHRlay1ydGw5MzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfTURJT19QSUM2NEhQU0MpXFx0XFx0Kz0gbWRpby1waWM2NGhwc2Mub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwKVxcdCs9IG1kaW8tcmVhbHRlay1ydGw5MzAwLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19NRElPX1JFR01BUClcXHRcXHQrPSBtZGlvLXJlZ21hcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjQ2LjgwNjMxMDMzMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMzEwMTMxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGEgbmV0d29ya2luZyBleHBlcnQgd29ya2luZyB3aXRoIGVtYmVkZGVkIHN5c3RlbXMvTGludXgga2VybmVsIGRyaXZlcnM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUlRMOTMwMCBNRElPIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIE1ESU8gZHJpdmVyIHJlbGF0ZWQgdG8gdGhlIFJlYWx0ZWsgUlRMOTMwMC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ2AuIFRoaXMgc3VnZ2VzdHMgSSdtIHByb2JhYmx5IHRyb3VibGVzaG9vdGluZyBzb21ldGhpbmcsIHBlcmhhcHMgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgZHJpdmVyLCBvciB0cnlpbmcgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgZGVwZW5kZW5jaWVzLiBJJ20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJIG1pZ2h0IGJlIGxvb2tpbmcgZm9yIG9wdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc3BlY2lmaWMgZmVhdHVyZXMsIHNldCBkZWZhdWx0IHZhbHVlcywgb3IgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGFydGljdWxhciBNRElPIGRyaXZlci4gVGhpcyB3b3VsZCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIHRoZSBkcml2ZXIncyBpbmNsdXNpb24gaW50byB0aGUga2VybmVsIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjY2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NDkuMTM3MzI2MjM1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODI2MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNjY9Y29uZmlnIE1ESU9fSVBRODA2NFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3My1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc0OmNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzUtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjQ5LjE4MzE1NjgxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwOTQ5NDUwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBNRElPIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGZvY3VzIGlzIG9uIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvbmV0L21kaW8vYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHNlY3Rpb24sIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxNzQuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQga2luZHMgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYmUgaW4gdGhhdCBhcmVhIOKAkyBwcm9iYWJseSByZWxhdGVkIHRvIHNwZWNpZmljIE1ESU8gZHJpdmVyIGZlYXR1cmVzLCBQSFkgdHlwZXMsIG9yIG1heWJlIHNvbWUgY29yZSBNRElPIGNvbnRyb2xsZXIgc2V0dGluZ3MuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHByb2JsZW0gSSdtIHdvcmtpbmcgb24sIGJlIGl0IGRlYnVnZ2luZyBhIGRyaXZlciwgY3VzdG9taXppbmcgYSBzeXN0ZW0gaW1hZ2UsIG9yIGp1c3QgZ2FpbmluZyBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBNRElPIHN1YnN5c3RlbSdzIGNvbmZpZ3VyYXRpb24uIEknbSBleHBlY3RpbmcgdG8gYmUgYWJsZSB0byBxdWlja2x5IHNwb3QgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGhlbHAgdGV4dHMgdG8gcXVpY2tseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggb3B0aW9uLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjM1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTIuMjc4MTA0MDg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHRoZWxwXFxuIDE3MTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgbmV0d29ya1xcbiAxNzI6XFx0XFx0ICBpbnRlcmZhY2UgdW5pdHMgb2YgdGhlIElQUTgwNjQgU29DXFxuIDE3MzpcXHRcXG4gMTc0OlxcdGNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxcbiAxNzU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuIDE3NjpcXHRcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuIDE3NzpcXHRcXHRoZWxwXFxuIDE3ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgUmVhbHRla1xcbiAxNzk6XFx0XFx0ICBSVEw4M3h4L1JUTDkzeHggZmFtaWx5IG9mIEV0aGVybmV0IHN3aXRjaGVzIHdpdGggaW50ZWdyYXRlZCBTb0MuXFxuIDE4MDpcXHRcXG4gMTgxOlxcdGNvbmZpZyBNRElPX1JFR01BUFxcbiAxODI6XFx0XFx0dHJpc3RhdGVcXG4gMTgzOlxcdFxcdGhlbHBcXG4gMTg0OlxcdFxcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzaW5nIE1ESU8gZGV2aWNlcyB0aGF0IGFyZSBub3Qgc2l0dGluZyBvbiBhXFxuIDE4NTpcXHRcXHQgIHJlZ3VsYXIgTURJTyBidXMsIGJ1dCBzdGlsbCBleHBvc2VzIHRoZSBzdGFuZGFyZCA4MDIuMyByZWdpc3RlclxcbiAxODY6XFx0XFx0ICBsYXlvdXQuIEl0J3MgcmVnbWFwLWJhc2VkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgb24gaW50ZWdyYXRlZCxcXG4gMTg3OlxcdFxcdCAgbWVtb3J5LW1hcHBlZCBQSFlzLCBTUEkgUEhZcyBhbmQgc28gb24uIEEgbmV3IHZpcnR1YWwgTURJTyBidXMgaXNcXG4gMTg4OlxcdFxcdCAgY3JlYXRlZCwgYW5kIGl0cyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgYXJlIG1hcHBlZCB0byB0aGUgdW5kZXJseWluZ1xcbiAxODk6XFx0XFx0ICByZWdtYXAuIFVzZXJzIHdpbGxpbmcgdG8gdXNlIHRoaXMgZHJpdmVyIG11c3QgZXhwbGljaXRseSBzZWxlY3RcXG4gMTkwOlxcdFxcdCAgUkVHTUFQLlxcbiAxOTE6XFx0XFxuIDE5MjpcXHRjb25maWcgTURJT19USFVOREVSXFxuIDE5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGh1bmRlclggU09DcyBNRElPIGJ1c2VzXFxcIlxcbiAxOTQ6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDo1Mi4yNzgxNzc5NjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTgxNTQ1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBSVEw5MzAwIE1ESU8gRHJpdmVyKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgYE1ESU9fUkVBTFRFS19SVEw5MzAwYC4gSXQncyBjbGVhcmx5IGEgZHJpdmVyLCBhbmQgZnJvbSB0aGUgbmFtZSwgaXQncyBzcGVjaWZpYyB0byB0aGUgTURJTyBpbnRlcmZhY2UgZm9yIFJlYWx0ZWsncyBSVEw4M3h4L1JUTDkzeHggRXRoZXJuZXQgc3dpdGNoIFNvQ3MuIFRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcyBob3cgaXQncyBpbnRlZ3JhdGVkLiBJcyB0aGlzIGRyaXZlciB0cmlnZ2VyZWQgYnkgdGhlIGRldmljZSB0cmVlIChPRiksIG9yIGlzIGl0IGEgcGxhdGZvcm0gZHJpdmVyIHRhaWxvcmVkIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwIHdpdGhpbiB0aGVzZSBSZWFsdGVrIFNvQ3M/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iaW5nIG1lY2hhbmlzbS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhhbWluZSB0aGUgY29kZSBpdHNlbGYsIHN0YXJ0aW5nIHdpdGggYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AgdG8gc2VlIGhvdyB0aGlzIGFsbCBjb21lcyB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMyOCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjU0LjQ1OTcyNjMyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0XFxuMTAwMTpcXHRcXHRcXHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihidXNfZG4sIFxcXCJyZWdcXFwiLCBcXHUwMDI2YnVzKTtcXG4xMDAyOlxcdFxcdFxcdGlmIChlcnIpXFxuMTAwMzpcXHRcXHRcXHRcXHRnb3RvIHB1dF9ub2RlcztcXG4xMDA0OlxcdFxcbjEwMDU6XFx0XFx0XFx0aWYgKGJ1cyBcXHUwMDNlPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VudW1fYnVzZXMpIHtcXG4xMDA2OlxcdFxcdFxcdFxcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCBcXFwiaWxsZWdhbCBzbWkgYnVzIG51bWJlciAlZFxcXFxuXFxcIiwgYnVzKTtcXG4xMDA3OlxcdFxcdFxcdFxcdGdvdG8gcHV0X25vZGVzO1xcbjEwMDg6XFx0XFx0XFx0fVxcbjEwMDk6XFx0XFxuMTAxMDpcXHRcXHRcXHRhZGRyID0gb2ZfbWRpb19wYXJzZV9hZGRyKGRldiwgcGh5X2RuKTtcXG4xMDExOlxcdFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgMCkge1xcbjEwMTI6XFx0XFx0XFx0XFx0ZXJyID0gYWRkcjtcXG4xMDEzOlxcdFxcdFxcdFxcdGdvdG8gcHV0X25vZGVzO1xcbjEwMTQ6XFx0XFx0XFx0fVxcbjEwMTU6XFx0XFxuMTAxNjpcXHRcXHRcXHQvKlxcbjEwMTc6XFx0XFx0XFx0ICogVGhlIE1ESU8gYWNjZXNzZXMgZnJvbSB0aGUga2VybmVsIHdvcmsgd2l0aCB0aGUgUEhZIHBvbGxpbmcgdW5pdCBpbiB0aGVcXG4xMDE4OlxcdFxcdFxcdCAqIHN3aXRjaC4gVGhlIFBQVSBlaXRoZXIgb3BlcmF0ZXMgaW4gR1BIWSAoaS5lLiBjbGF1c2UgMjIpIG9yIDEwR1BIWSBtb2RlXFxuMTAxOTpcXHRcXHRcXHQgKiAoaS5lLiBjbGF1c2UgNDUpLiBTZWxlY3QgMTBHUEhZIG1vZGUgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIFBIWSB0aGF0XFxuMTAyMDpcXHRcXHRcXHQgKiBkZWNsYXJlcyBjb21wYXRpYmxlID0gXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzQ1XFxcIi5cXG4xMDIxOlxcdFxcdFxcdCAqL1xcbjEwMjI6XFx0XFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKHBoeV9kbiwgXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzQ1XFxcIikpXFxuMTAyMzpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VzbWlfYnVzX2lzX2M0NVtidXNdID0gdHJ1ZTtcXG4xMDI0OlxcdFxcbjEwMjU6XFx0XFx0XFx0X19zZXRfYml0KHBuLCBwcml2LVxcdTAwM2V2YWxpZF9wb3J0cyk7XFxuMTAyNjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzbWlfYnVzW3BuXSA9IGJ1cztcXG4xMDI3OlxcdFxcdFxcdHByaXYtXFx1MDAzZXNtaV9hZGRyW3BuXSA9IGFkZHI7XFxuMTAyODpcXHRwdXRfbm9kZXM6XFxuMTAyOTpcXHRcXHRcXHRvZl9ub2RlX3B1dChidXNfZG4pO1xcbjEwMzA6XFx0XFx0XFx0b2Zfbm9kZV9wdXQocGh5X2RuKTtcXG4xMDMxOlxcdFxcdFxcdG9mX25vZGVfcHV0KGN0cmxfZG4pO1xcbjEwMzI6XFx0XFx0XFx0aWYgKGVycilcXG4xMDMzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjEwMzQ6XFx0XFx0fVxcbjEwMzU6XFx0XFxuMTAzNjpcXHRcXHRvZl9ub2RlX3B1dChwb3J0c19kbik7XFxuMTAzNzpcXHRcXG4xMDM4OlxcdFxcdHJldHVybiBlcnI7XFxuMTAzOTpcXHR9XFxuMTA0MDpcXHRcXG4xMDQxOlxcdHN0YXRpYyBpbnQgb3R0b19lbWRpb19pbml0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4xMDQyOlxcdHtcXG4xMDQzOlxcdFxcdGludCBlcnI7XFxuMTA0NDpcXHRcXG4xMDQ1OlxcdFxcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlbnVtX3BvcnRzOyBwb3J0KyspIHtcXG4xMDQ2OlxcdFxcdFxcdGVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7XFxuMTA0NzpcXHRcXHRcXHRpZiAoZXJyKVxcbjEwNDg6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMDQ5OlxcdFxcdH1cXG4xMDUwOlxcdFxcbjEwNTE6XFx0XFx0cmV0dXJuIDA7XFxuMTA1MjpcXHR9XFxuMTA1MzpcXHRcXG4xMDU0OlxcdHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjEwNTU6XFx0e1xcbjEwNTY6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4xMDU3OlxcdFxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuMTA1ODpcXHRcXHRpbnQgZXJyO1xcbjEwNTk6XFx0XFxuMTA2MDpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuMTA2MTpcXHRcXHRpZiAoIXByaXYpXFxuMTA2MjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4xMDYzOlxcdFxcbjEwNjQ6XFx0XFx0ZXJyID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbjEwNjU6XFx0XFx0aWYgKGVycilcXG4xMDY2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTA2NzpcXHRcXG4xMDY4OlxcdFxcdHByaXYtXFx1MDAzZWluZm8gPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG4xMDY5OlxcdFxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChkZXYtXFx1MDAzZXBhcmVudC1cXHUwMDNlb2Zfbm9kZSk7XFxuMTA3MDpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCkpXFxuMTA3MTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwcml2LVxcdTAwM2VyZWdtYXApO1xcbjEwNzI6XFx0XFxuMTA3MzpcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcXG4xMDc0OlxcdFxcdGlmIChlcnIpXFxuMTA3NTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjEwNzY6XFx0XFxuMTA3NzpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTtcXG4xMDc4OlxcdFxcbjEwNzk6XFx0XFx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTQuNDU5ODQ3MzgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3ODkyMzk0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGl2aW5nIGludG8gdGhlIFJUTDkzMDAgTURJTyBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIFJlYWx0ZWsgUlRMOTMwMCBNRElPIGRyaXZlciBpcyBzdHJ1Y3R1cmVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBwbGF0Zm9ybV9kcml2ZXJgIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCB0byBleGFtaW5lIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGxhdGZvcm0gZHJpdmVyJ3Mgc2V0dXAgYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIGJyb2FkZXIga2VybmVsIE1ESU8gZnJhbWV3b3JrLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgaGFwcGVucywgc28gdGhhdCdzIHdoZXJlIEkgd2lsbCBzdGFydCFcblxuXG4iLCJJbnB1dFRva2VucyI6OTg1NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTYuMjQ5MDkwNjA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEzMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTEzMDpcXHRcXHRcXHQuYnJvYWRjYXN0ID0gUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMLFxcbjExMzE6XFx0XFx0XFx0LmMyMl9kYXRhID0gUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkwsXFxuMTEzMjpcXHRcXHRcXHQuYzQ1X2RhdGEgPSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTCxcXG4xMTMzOlxcdFxcdFxcdC5leHRfcGFnZSA9IFJUTDgzOTBfUEhZUkVHX0NUUkwsXFxuMTEzNDpcXHRcXHRcXHQuaW9fZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0RBVEFfQ1RSTCxcXG4xMTM1OlxcdFxcdFxcdC5wb3J0X21hc2tfbG93ID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVyxcXG4xMTM2OlxcdFxcdFxcdC5wb3J0X21hc2tfaGlnaCA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdILFxcbjExMzc6XFx0XFx0fSxcXG4xMTM4OlxcdFxcdC5udW1fYnVzZXMgPSBSVEw4MzkwX05VTV9CVVNFUyxcXG4xMTM5OlxcdFxcdC5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUyxcXG4xMTQwOlxcdFxcdC5udW1fcG9ydHMgPSBSVEw4MzkwX05VTV9QT1JUUyxcXG4xMTQxOlxcdFxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG4xMTQyOlxcdFxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4xMTQzOlxcdFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcXG4xMTQ0OlxcdFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcXG4xMTQ1OlxcdFxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxcbjExNDY6XFx0XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUsXFxuMTE0NzpcXHR9O1xcbjExNDg6XFx0XFxuMTE0OTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcXG4xMTUwOlxcdFxcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuMTE1MTpcXHRcXHQuYnVzX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUwsXFxuMTE1MjpcXHRcXHQuY21kX2ZhaWwgPSBSVEw5MzAwX1BIWV9DVFJMX0ZBSUwsXFxuMTE1MzpcXHRcXHQuY21kX3JlYWQgPSBSVEw5MzAwX1BIWV9DVFJMX1JFQUQsXFxuMTE1NDpcXHRcXHQuY21kX3dyaXRlID0gUlRMOTMwMF9QSFlfQ1RSTF9XUklURSxcXG4xMTU1OlxcdFxcdC5jbWRfcmVncyA9IHtcXG4xMTU2OlxcdFxcdFxcdC5jMjJfZGF0YSA9IFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xLFxcbjExNTc6XFx0XFx0XFx0LmM0NV9kYXRhID0gUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzMsXFxuMTE1ODpcXHRcXHRcXHQuaW9fZGF0YSA9IFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yLFxcbjExNTk6XFx0XFx0XFx0LnBvcnRfbWFza19sb3cgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMCxcXG4xMTYwOlxcdFxcdH0sXFxuMTE2MTpcXHRcXHQubnVtX2J1c2VzID0gUlRMOTMwMF9OVU1fQlVTRVMsXFxuMTE2MjpcXHRcXHQubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsXFxuMTE2MzpcXHRcXHQubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsXFxuMTE2NDpcXHRcXHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxcbjExNjU6XFx0XFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxcbjExNjY6XFx0XFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcXG4xMTY3OlxcdFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcXG4xMTY4OlxcdFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcXG4xMTY5OlxcdFxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxcbjExNzA6XFx0XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUsXFxuMTE3MTpcXHR9O1xcbjExNzI6XFx0XFxuMTE3MzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG4xMTc0OlxcdFxcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkwsXFxuMTE3NTpcXHRcXHQuYnVzX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTCxcXG4xMTc2OlxcdFxcdC5jbWRfZmFpbCA9IFJUTDkzMTBfUEhZX0NUUkxfRkFJTCxcXG4xMTc3OlxcdFxcdC5jbWRfcmVhZCA9IFJUTDkzMTBfUEhZX0NUUkxfUkVBRCxcXG4xMTc4OlxcdFxcdC5jbWRfd3JpdGUgPSBSVEw5MzEwX1BIWV9DVFJMX1dSSVRFLFxcbjExNzk6XFx0XFx0LmNtZF9yZWdzID0ge1xcbjExODA6XFx0XFx0XFx0LmJyb2FkY2FzdCA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19CQ19QSFlJRF9DVFJMLFxcbjExODE6XFx0XFx0XFx0LmMyMl9kYXRhID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMCxcXG4xMTgyOlxcdFxcdFxcdC5jNDVfZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19NTURfQ1RSTCxcXG4xMTgzOlxcdFxcdFxcdC5leHRfcGFnZSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzEsXFxuMTE4NDpcXHRcXHRcXHQuaW9fZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzMsXFxuMTE4NTpcXHRcXHRcXHQucG9ydF9tYXNrX2xvdyA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzJfTE9XLFxcbjExODY6XFx0XFx0XFx0LnBvcnRfbWFza19oaWdoID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMl9ISUdILFxcbjExODc6XFx0XFx0fSxcXG4xMTg4OlxcdFxcdC5udW1fYnVzZXMgPSBSVEw5MzEwX05VTV9CVVNFUyxcXG4xMTg5OlxcdFxcdC5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUyxcXG4xMTkwOlxcdFxcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcXG4xMTkxOlxcdFxcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG4xMTkyOlxcdFxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4xMTkzOlxcdFxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXFxuMTE5NDpcXHRcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXFxuMTE5NTpcXHRcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuMTE5NjpcXHRcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMixcXG4xMTk3OlxcdFxcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1LFxcbjExOTg6XFx0fTtcXG4xMTk5OlxcdFxcbjEyMDA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb3R0b19lbWRpb19pZHNbXSA9IHtcXG4xMjAxOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbjEyMDI6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDgzOTEtbWRpb1xcXCIsIC5kYXRhID0gXFx1MDAyNm90dG9fZW1kaW9fODM5MF9pbmZvIH0sXFxuMTIwMzpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsOTMwMS1tZGlvXFxcIiwgLmRhdGEgPSBcXHUwMDI2b3R0b19lbWRpb185MzAwX2luZm8gfSxcXG4xMjA0OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbjEyMDU6XFx0XFx0e31cXG4xMjA2OlxcdH07XFxuMTIwNzpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvdHRvX2VtZGlvX2lkcyk7XFxuMTIwODpcXHRcXG4xMjA5OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG90dG9fZW1kaW9fZHJpdmVyID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDo1Ni4yNDkxOTU5NjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ1NDM1NDA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBvdHRvX2VtZGlvX2RyaXZlcmAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFNvLCBJJ20gbG9va2luZyBhdCBgb3R0b19lbWRpb19kcml2ZXJgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgbWF0Y2hlZCB1c2luZyBEZXZpY2UgVHJlZS4gVGhlIG1hdGNoIGhhcHBlbnMgdmlhIHRoZSBgb3R0b19lbWRpb19pZHNgIHRhYmxlLCB3aGljaCBzdWdnZXN0cyBpdCB1c2VzIGNvbXBhdGlibGUgc3RyaW5ncy4gR29vZCwgdGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLiBJIHNlZSBzdHJpbmdzIGxpa2UgYHJlYWx0ZWsscnRsODM4MC1tZGlvYCBhbmQgYHJlYWx0ZWsscnRsOTMwMS1tZGlvYCDigJMgc28gaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIFJlYWx0ZWsgTURJTyBjb250cm9sbGVycy4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCB3aGF0IGFyY2hpdGVjdHVyZSBpcyBgTUFDSF9SRUFMVEVLX1JUTGAgZGVzaWduZWQgZm9yPyBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlIGFuZCBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBNQUNIX1JFQUxURUtfUlRMYC4gS25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBwbGF0Zm9ybSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQncyB0cmFjZSB0aGF0IG1hY3JvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjEwNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTguNzAzNTUyNjU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEyMDAxMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQ0hfUkVBTFRFS19SVExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL0tjb25maWc9NjgxPWNvbmZpZyBSQUxJTktcXG4tLVxcbmFyY2gvbWlwcy9LY29uZmlnLTY5OC1cXG5hcmNoL21pcHMvS2NvbmZpZzo2OTk6Y29uZmlnIE1BQ0hfUkVBTFRFS19SVExcXG5hcmNoL21pcHMvS2NvbmZpZy03MDAtXFx0Ym9vbCBcXFwiUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXggYmFzZWQgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZToyOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdCs9IGNpc2NvX3NnMjIwLTI2LmR0YlxcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjM6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXFx0Kz0gY2FtZW8tcnRsOTMwMmMtMngtcnRsODIyNC0yeGdlLmR0Ylxcbi0tXFxuYXJjaC9taXBzL2dlbmVyaWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1ZJUlRfQk9BUkRfUkFOQ0hVKVxcdFxcdCs9IGJvYXJkLXJhbmNodS5vXFxuYXJjaC9taXBzL2dlbmVyaWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXFx0XFx0Kz0gYm9hcmQtcmVhbHRlay5vXFxuLS1cXG5kcml2ZXJzL2dwaW8vS2NvbmZpZz02MjU9Y29uZmlnIEdQSU9fUkVBTFRFS19PVFRPXFxuZHJpdmVycy9ncGlvL0tjb25maWctNjI2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIE90dG8gR1BJTyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyNzpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9ncGlvL0tjb25maWc6NjI4OlxcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyOS1cXHRzZWxlY3QgR1BJT19HRU5FUklDXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZz0xMTAzPWNvbmZpZyBJMkNfUlRMOTMwMFxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTExMDQtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMOTMwMCBJMkMgY29udHJvbGxlclxcXCJcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzoxMTA1OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZT0xMzA9b2JqLSQoQ09ORklHX1NMMjhDUExEX0lOVEMpXFx0XFx0Kz0gaXJxLXNsMjhjcGxkLm9cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU6MTMxOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IGlycS1yZWFsdGVrLXJ0bC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTEzMi1vYmotJChDT05GSUdfV1BDTTQ1MF9BSUMpXFx0XFx0Kz0gaXJxLXdwY200NTAtYWljLm9cXG4tLVxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZz02ND1jb25maWcgTVREX05BTkRfRUNDX1JFQUxURUtcXG4tLVxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02Ni0gICAgICAgIGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc6Njc6ICAgICAgICBkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY4LSAgICAgICAgc2VsZWN0IE1URF9OQU5EX0VDQ1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTE3ND1jb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoxNzY6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZz05MTY9Y29uZmlnIFNQSV9SRUFMVEVLX1NOQU5EXFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgU1BJLU5BTkQgRmxhc2ggQ29udHJvbGxlclxcXCJcXG5kcml2ZXJzL3NwaS9LY29uZmlnOjkxODpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTktXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19TUElfUkI0WFgpXFx0XFx0XFx0Kz0gc3BpLXJiNHh4Lm9cXG5kcml2ZXJzL3NwaS9NYWtlZmlsZToxMzI6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXFx0XFx0Kz0gc3BpLXJlYWx0ZWstcnRsLm9cXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX1NQSV9SRUFMVEVLX1NOQU5EKVxcdFxcdCs9IHNwaS1yZWFsdGVrLXJ0bC1zbmFuZC5vXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc9MTExMz1jb25maWcgUkVBTFRFS19PVFRPX1dEVFxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIE90dG8gTUlQUyB3YXRjaGRvZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE1OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNi1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE4LVxcdHNlbGVjdCBSRUdNQVBfTU1JT1xcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE5OlxcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTIwLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTU6MDAuNDE1NTYwNTI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwODEyMjI5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGFuIGBhbWQ2NGAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgY2hhbmdlcyBpbnZvbHZlIGBNRElPX1JFQUxURUtfUlRMOTMwMGAsIHdoaWNoLCBjcml0aWNhbGx5LCByZWxpZXMgb24gZWl0aGVyIGBNQUNIX1JFQUxURUtfUlRMYCBvciBgQ09NUElMRV9URVNUYC4gTG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiwgYE1BQ0hfUkVBTFRFS19SVExgIGlzIHRpZWQgdG8gTUlQUy1iYXNlZCBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBTb0NzLiBUaGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBSZWFsdGVrIHN3aXRjaCBTb0NzIChSVEw4MzgwLCBSVEw4MzkwLCBSVEw5MzAwLCBSVEw5MzEwKSBhbmQgaXMgbWF0Y2hlZCB1c2luZyB0aGUgRGV2aWNlIFRyZWUgKE9GKS5cblxuVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4gSXQncyBhIGhhcmR3YXJlLXNwZWNpZmljLCBlbWJlZGRlZCBTb0MgZHJpdmVyLiBJdCdzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBvZiB0aGVzZSBSZWFsdGVrIHN3aXRjaCBjaGlwcywgd2hpY2ggbWVhbnMgaXQgZGVwZW5kcyBvbiBhIHBoeXNpY2FsIGRldmljZSBvciBhIGNhcmVmdWxseSBjb25zdHJ1Y3RlZCBEVCBub2RlIHRoYXQgZGVzY3JpYmVzIGEgc3BlY2lmaWMgc3lzY29uIHJlZ21hcC4gSXQncyBub3Qgc29tZXRoaW5nIHlvdSBjYW4gcmVhY2ggdmlhIHN0YW5kYXJkIHg4Ni9hbWQ2NCB2aXJ0dWFsIGJ1c2VzIGxpa2UgUENJLCBVU0IsIG9yIHZpcnR1YWwgYnVzZXMgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUuXG5cbk5vdywgbGV0J3MgY29uc3VsdCB0aGUgXCJORUdBVElWRSBDUklURVJJQVwiIG91dGxpbmVkIGluIFNlY3Rpb24gMi4gVGhlIGNyaXRpY2FsIHNlY3Rpb24gaGVyZSBkZXNjcmliZXMgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBzd2l0Y2hlcyBhbmQgU21hcnROSUNzIHJlcXVpcmluZyBzcGVjaWZpYyBoYXJkd2FyZSB1bmF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBJdCBhbHNvIGRlc2NyaWJlcyB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuIFRoaXMgc2l0dWF0aW9uIGZpdHMgcGVyZmVjdGx5OiB0aGUgY2hhbmdlcywgY2VudGVyZWQgYXJvdW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGFuZCBkZXZpY2V0cmVlIGJpbmRpbmdzLCBhcmUgZm9yIGEgcGxhdGZvcm0gZHJpdmVyIG9uIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IEV0aGVybmV0IHN3aXRjaCBTb0NzLCBzcGVjaWZpY2FsbHkgTUlQUy1iYXNlZCBlbWJlZGRlZCBTb0NzLiBUaGlzIGRyaXZlciBleHBlY3RzIHRvIGJlIHJ1bm5pbmcgb24gTUlQUyBoYXJkd2FyZSwgbm90IGFtZDY0LCBhbmQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgaXMgY29yZS5cblxuVG8gYmUgZXh0cmEgY2VydGFpbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXRhaWxzOiBUYXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFRoZSBjaGFuZ2VzIGFyZSB0byBhZGQgYnVzIGZyZXF1ZW5jeSBjb25maWcgdmlhIGRldmljZXRyZWUgcHJvcGVydGllcyAoIGBjbG9jay1mcmVxdWVuY3lgICkgdG8gdGhlIC5jIGZpbGUgYW5kIHRoZSBiaW5kaW5ncyB5YW1sLiBJJ20gbm90IHNlZWluZyBhbnkgbW9kaWZpY2F0aW9ucyB0byBjb3JlIHN1YnN5c3RlbXMgb3IgdmlydHVhbCBkZXZpY2VzLCBqdXN0IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxgIGFuZCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBhbmQgdGhlIE1JUFMgZGVwZW5kZW5jZSBvZiB0aGlzIGNvZGUsIGl0J3MgY2xlYXI6XG5cbiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbIF0qKiAoZW1wdHkpXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcWyBdKiogKGVtcHR5KVxuKiAgICoqUmVhc29uaW5nOioqIFBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4Mzh4L1JUTDkzeHggTUlQUyBTb0MgRXRoZXJuZXQgc3dpdGNoIE1ESU8gaW50ZXJmYWNlLiBUaGUgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBvciBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBkdWUgdG8gYSBkZXBlbmRlbmNlIG9uIGEgc3BlY2lmaWMgTUlQUy1iYXNlZCBSZWFsdGVrIFNvQyBhbmQgcmVxdWlyZWQgaGFyZHdhcmUgb3Igc3BlY2lmaWMgRFQgY29uZmlndXJhdGlvbnMuXG5cbk9rYXksIGxldCdzIGdlbmVyYXRlIHRoZSBgc2V0LXJlc3VsdHNgIGNhbGwgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY4OSwiT3V0cHV0VG9rZW5zIjoxMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTU6MDcuNDk2Nzg3MDQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTU6MDcuNDk2ODE4MDM5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7jmw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 17:51:29 +0000 UTC FinishedAt: 2026-09-04 18:15: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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkzYzA2ZDAzZjM2NGY0OTM3MWY4NGMxMWQwOTBjNWI5ZmY5YTUwOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjE0OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuaW5kZXggNjdlMGIyM2E4NDcwZS4uNmRiMzMxNWNlOTZiMyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5AQCAtNTYsNiAmIzQzOzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgICAgcmVnOlxuICAgICAgICAgbWF4SXRlbXM6IDFcbiBcbiYjNDM7ICAgICAgY2xvY2stZnJlcXVlbmN5OlxuJiM0MzsgICAgICAgIGRlZmF1bHQ6IDI1MDAwMDBcbiYjNDM7XG4gICAgIHJlcXVpcmVkOlxuICAgICAgIC0gcmVnXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCAxMWQwNzhlZjk0MWNkLi40YWYyODFiOTI0YWQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0xMzAsNiAmIzQzOzEzMCw3IEBAXG4gI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFU1x0XHRcdDQwOTZcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BPUlRTXHRcdFx0MjhcbiAjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXHRcdFx0MHhhMTAwXG4mIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTFx0XHRcdEJJVCgxKVxuICNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVx0XHRCSVQoMTUpXG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFx0XHQweGExYjhcbiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXHRcdDB4YTFiY1xuQEAgLTE2OSwxMiAmIzQzOzE3MCwxNSBAQFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXHRcdDB4MDNlOFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcdFx0MHgwM2ZjXG4mIzQzOyNkZWZpbmUgUlRMODM5MF9TTUlfR0xCX0NUUkxcdFx0XHQweDAzZjhcbiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMXHRcdFx0R0VOTUFTSyg2LCA1KVxuIFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fQlVTRVNcdFx0XHQ0XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFU1x0XHRcdDQwOTZcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BPUlRTXHRcdFx0MjhcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0dMQl9DVFJMXHRcdFx0MHhjYTAwXG4gI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZilcdEJJVCgxNiAmIzQzOyAoaW50ZikpXG4mIzQzOyNkZWZpbmUgICBSVEw5MzAwX1NNSV9GUkVRX1NFTChpbnRmKVx0XHRHRU5NQVNLKChpbnRmKSAqIDIgJiM0MzsgOSwgKGludGYpICogMiAmIzQzOyA4KVxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcdDB4Y2EwOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhjYjcwXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGNiNzRcbkBAIC0xOTYsNiAmIzQzOzIwMCw4IEBAXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1x0XHRcdDRcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTXHRcdFx0ODE5MlxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUE9SVFNcdFx0XHQ1NlxuJiM0MzsjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMFx0XHRcdDB4MGNjMFxuJiM0MzsjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZilcdFx0R0VOTUFTSygoaW50ZikgKiAyICYjNDM7IDUsIChpbnRmKSAqIDIgJiM0MzsgNClcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMVx0XHRcdDB4MGNiY1xuICNkZWZpbmUgICBSVEw5MzEwX1NNSV9HTEJfRk1UX1NFTF9DNDUoaW50ZilcdEJJVCgoaW50ZikgKiAyICYjNDM7IDEpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wXHRcdDB4MGMwMFxuQEAgLTI1MSw2ICYjNDM7MjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XG4gXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4gXHRzdHJ1Y3QgbXV0ZXggbG9jazsgLyogcHJvdGVjdCBIVyBhY2Nlc3MgKi9cbiBcdERFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpO1xuJiM0MztcdHUzMiBnbG9iYWxfZnJlcTtcbiBcdHUxNiBwYWdlW01BWF9QT1JUU107XG4gXHR1OCBzbWlfYnVzW01BWF9QT1JUU107XG4gXHR1OCBzbWlfYWRkcltNQVhfUE9SVFNdO1xuQEAgLTI2OSw2ICYjNDM7Mjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XG4gXHR1OCBudW1fcG9ydHM7XG4gXHR1MTYgbnVtX3BhZ2VzO1xuIFx0dTMyIHBvbGxfY3RybDtcbiYjNDM7XHRpbnQgKCpzZXRfYnVzX2ZyZXF1ZW5jeSkoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpO1xuIFx0aW50ICgqc2V0dXBfY29udHJvbGxlcikoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdik7XG4gXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuIFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuQEAgLTc0MCw2ICYjNDM7NzQ4LDE1IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdtYXBfYXNzaWduX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLFxuJiM0MztcdFx0XHRcdFx0IFJUTDgzODBfU01JX0ZSRVFfU0VMLFxuJiM0MztcdFx0XHRcdFx0IGZyZXEgXHUwMDNlPSAxMDAwMDAwMCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIHtcbiBcdC8qXG5AQCAtNzQ5LDYgJiM0Mzs3NjYsMzQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbCA9IEZJRUxEX1BSRVAoUlRMODM5MF9TTUlfRlJFUV9TRUwsIG1pbl90KHUzMiwgZnJlcSAvIDI1MDAwMDAsIDJVKSk7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEpIHtcbiYjNDM7XHRcdC8qIFdpdGggb25seSBvbmUgZ2xvYmFsIGZyZXF1ZW5jeSBhdmFpbGFibGUgc2tpcCBzZXR1cCBmb3Igc2Vjb25kIGJ1cy4gKi9cbiYjNDM7XHRcdGlmIChmcmVxICE9IHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEpXG4mIzQzO1x0XHRcdGRldl93YXJuKFx1MDAyNmJ1cy1cdTAwM2VkZXYsIFwmIzM0O09ubHkgb25lIGZyZXF1ZW5jeSBmb3IgYWxsIGJ1c2VzIHN1cHBvcnRlZFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1x0cHJpdi1cdTAwM2VnbG9iYWxfZnJlcSA9IGZyZXE7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzOTBfU01JX0dMQl9DVFJMLCBSVEw4MzkwX1NNSV9GUkVRX1NFTCwgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MzIgbWFzaywgdmFsO1xuJiM0MztcbiYjNDM7XHRtYXNrID0gUlRMOTMwMF9TTUlfRlJFUV9TRUwoY2hhbi1cdTAwM2VtZGlvX2J1cyk7XG4mIzQzO1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzAwX1NNSV9HTEJfQ1RSTCwgbWFzaywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTc2OSw2ICYjNDM7ODE0LDE4IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MzIgbWFzaywgdmFsO1xuJiM0MztcbiYjNDM7XHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cdTAwM2VtZGlvX2J1cyk7XG4mIzQzO1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAsIG1hc2ssIHZhbCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIHtcbiBcdGludCBpLCBlcnI7XG5AQCAtODMxLDE0ICYjNDM7ODg4LDE0IEBAIHN0YXRpYyB2b2lkIG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB9XG4gXG4gc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsXG4tXHRcdFx0XHQgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXG4mIzQzO1x0XHRcdFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLVx0dTMyIG1kaW9fYnVzO1xuJiM0MztcdHUzMiBtZGlvX2J1cywgZnJlcTtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZtZGlvX2J1cyk7XG4mIzQzO1x0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZtZGlvX2J1cyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7dW5kZWZpbmVkIHNtaSBidXMgbnVtYmVyXFxuXCYjMzQ7KTtcbiBcbkBAIC04NjUsNyAmIzQzOzkyMiwxMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFxuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzLSVkXCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBtZGlvX2J1cyk7XG4gXG4tXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIHRvX29mX25vZGUobm9kZSkpO1xuJiM0MztcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDtjbG9jay1mcmVxdWVuY3lcJiMzNDssIFx1MDAyNmZyZXEpKVxuJiM0MztcdFx0ZnJlcSA9IDI1MDAwMDA7XG4mIzQzO1x0ZXJyID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXNldF9idXNfZnJlcXVlbmN5KGJ1cywgZnJlcSk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDtjYW5ub3Qgc2V0IGZyZXF1ZW5jeSBmb3IgTURJTyBidXMgJWRcXG5cJiMzNDssIG1kaW9fYnVzKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDtjYW5ub3QgcmVnaXN0ZXIgTURJTyBidXNcXG5cJiMzNDspO1xuIFxuQEAgLTEwMjcsNyAmIzQzOzEwOTAsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIE1ESU8gYnVzIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbiYjNDM7XHRmb3JfZWFjaF9jaGlsZF9vZl9ub2RlX3Njb3BlZChkZXYtXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcbiBcdFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIGVycjtcbkBAIC0xMDUxLDYgJiM0MzsxMTE0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM4MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICYjNDM7MTEzOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcbiBcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuQEAgLTEwOTcsNiAmIzQzOzExNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbkBAIC0xMTIzLDYgJiM0MzsxMTg5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGFuZCBhZGRzIGJ1cyBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBsb2dpYyB0byB0aGUgUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBkcml2ZXIgKG1kaW8tcmVhbHRlay1ydGw5MzAwLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFJlYWx0ZWsgTUlQUy1iYXNlZCBzd2l0Y2ggU29DcyAoTUFDSF9SRUFMVEVLX1JUTCkgYW5kIGlzIGluc3RhbnRpYXRlZCB2aWEgRGV2aWNlIFRyZWUuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB4ODYvYW1kNjQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTNjMDZkMDNmMzY0ZjQ5MzcxZjg0YzExZDA5MGM1YjlmZjlhNTA4ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTg6MTQ6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwKaW5kZXggNjdlMGIyM2E4NDcwZS4uNmRiMzMxNWNlOTZiMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbApAQCAtNTYsNiAmIzQzOzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6CiAgICAgICByZWc6CiAgICAgICAgIG1heEl0ZW1zOiAxCiAKJiM0MzsgICAgICBjbG9jay1mcmVxdWVuY3k6CiYjNDM7ICAgICAgICBkZWZhdWx0OiAyNTAwMDAwCiYjNDM7CiAgICAgcmVxdWlyZWQ6CiAgICAgICAtIHJlZwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMKaW5kZXggMTFkMDc4ZWY5NDFjZC4uNGFmMjgxYjkyNGFkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYwpAQCAtMTMwLDYgJiM0MzsxMzAsNyBAQAogI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw4MzgwX1NNSV9HTEJfQ1RSTAkJCTB4YTEwMAomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTAkJCUJJVCgxKQogI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FCQlCSVQoMTUpCiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wCQkweGExYjgKICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEJCTB4YTFiYwpAQCAtMTY5LDEyICYjNDM7MTcwLDE1IEBACiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1cJCTB4MDNlNAogI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSAkJMHgwM2U4CiAjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMCQkweDAzZmMKJiM0MzsjZGVmaW5lIFJUTDgzOTBfU01JX0dMQl9DVFJMCQkJMHgwM2Y4CiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMCQkJR0VOTUFTSyg2LCA1KQogCiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTCQkJNAogI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTAkJCTB4Y2EwMAogI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZikJQklUKDE2ICYjNDM7IChpbnRmKSkKJiM0MzsjZGVmaW5lICAgUlRMOTMwMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA5LCAoaW50ZikgKiAyICYjNDM7IDgpCiAjZGVmaW5lIFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMCTB4Y2EwOAogI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMAkJMHhjYjcwCiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xCQkweGNiNzQKQEAgLTE5Niw2ICYjNDM7MjAwLDggQEAKICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVMJCQk0CiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTCQkJODE5MgogI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUUwkJCTU2CiYjNDM7I2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAJCQkweDBjYzAKJiM0MzsjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA1LCAoaW50ZikgKiAyICYjNDM7IDQpCiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMQkJCTB4MGNiYwogI2RlZmluZSAgIFJUTDkzMTBfU01JX0dMQl9GTVRfU0VMX0M0NShpbnRmKQlCSVQoKGludGYpICogMiAmIzQzOyAxKQogI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wCQkweDBjMDAKQEAgLTI1MSw2ICYjNDM7MjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqLwogCURFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpOwomIzQzOwl1MzIgZ2xvYmFsX2ZyZXE7CiAJdTE2IHBhZ2VbTUFYX1BPUlRTXTsKIAl1OCBzbWlfYnVzW01BWF9QT1JUU107CiAJdTggc21pX2FkZHJbTUFYX1BPUlRTXTsKQEAgLTI2OSw2ICYjNDM7Mjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7CiAJdTggbnVtX3BvcnRzOwogCXUxNiBudW1fcGFnZXM7CiAJdTMyIHBvbGxfY3RybDsKJiM0MzsJaW50ICgqc2V0X2J1c19mcmVxdWVuY3kpKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKTsKIAlpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTsKIAlpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpOwogCWludCAoKnJlYWRfYzQ1KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTsKQEAgLTc0MCw2ICYjNDM7NzQ4LDE1IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsCiYjNDM7CQkJCQkgUlRMODM4MF9TTUlfRlJFUV9TRUwsCiYjNDM7CQkJCQkgZnJlcSAmZ3Q7PSAxMDAwMDAwMCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogewogCS8qCkBAIC03NDksNiAmIzQzOzc2NiwzNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiAJcmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSkKJiM0Mzt7CiYjNDM7CXUzMiB2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7Z2xvYmFsX2ZyZXEpIHsKJiM0MzsJCS8qIFdpdGggb25seSBvbmUgZ2xvYmFsIGZyZXF1ZW5jeSBhdmFpbGFibGUgc2tpcCBzZXR1cCBmb3Igc2Vjb25kIGJ1cy4gKi8KJiM0MzsJCWlmIChmcmVxICE9IHByaXYtJmd0O2dsb2JhbF9mcmVxKQomIzQzOwkJCWRldl93YXJuKCZhbXA7YnVzLSZndDtkZXYsICYjMzQ7T25seSBvbmUgZnJlcXVlbmN5IGZvciBhbGwgYnVzZXMgc3VwcG9ydGVkJiMzNDspOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsJcHJpdi0mZ3Q7Z2xvYmFsX2ZyZXEgPSBmcmVxOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtJmd0O3ByaXY7CiYjNDM7CXUzMiBtYXNrLCB2YWw7CiYjNDM7CiYjNDM7CW1hc2sgPSBSVEw5MzAwX1NNSV9GUkVRX1NFTChjaGFuLSZndDttZGlvX2J1cyk7CiYjNDM7CXZhbCA9IGZpZWxkX3ByZXAobWFzaywgbWluX3QodTMyLCBmcmVxIC8gMjUwMDAwMCwgMlUpKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDkzMDBfU01JX0dMQl9DVFJMLCBtYXNrLCB2YWwpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIHsKIAl1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7CkBAIC03NjksNiAmIzQzOzgxNCwxOCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7CiYjNDM7CXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtJmd0O3ByaXY7CiYjNDM7CXUzMiBtYXNrLCB2YWw7CiYjNDM7CiYjNDM7CW1hc2sgPSBSVEw5MzEwX1NNSV9GUkVRX1NFTChjaGFuLSZndDttZGlvX2J1cyk7CiYjNDM7CXZhbCA9IGZpZWxkX3ByZXAobWFzaywgbWluX3QodTMyLCBmcmVxIC8gMjUwMDAwMCwgMlUpKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDkzMTBfU01JX0dMQl9DVFJMMCwgbWFzaywgdmFsKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiB7CiAJaW50IGksIGVycjsKQEAgLTgzMSwxNCAmIzQzOzg4OCwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB9CiAKIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LAotCQkJCSBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSkKJiM0MzsJCQkJc3RydWN0IGRldmljZV9ub2RlICpub2RlKQogewogCXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47CiAJc3RydWN0IG1paV9idXMgKmJ1czsKLQl1MzIgbWRpb19idXM7CiYjNDM7CXUzMiBtZGlvX2J1cywgZnJlcTsKIAlpbnQgZXJyOwogCi0JZXJyID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICYjMzQ7cmVnJiMzNDssICZhbXA7bWRpb19idXMpOwomIzQzOwllcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3JlZyYjMzQ7LCAmYW1wO21kaW9fYnVzKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgJiMzNDt1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcbiYjMzQ7KTsKIApAQCAtODY1LDcgJiM0Mzs5MjIsMTMgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYKIAogCXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwgJiMzNDslcy0lZCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBtZGlvX2J1cyk7CiAKLQllcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIHRvX29mX25vZGUobm9kZSkpOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgJiMzNDtjbG9jay1mcmVxdWVuY3kmIzM0OywgJmFtcDtmcmVxKSkKJiM0MzsJCWZyZXEgPSAyNTAwMDAwOwomIzQzOwllcnIgPSBwcml2LSZndDtpbmZvLSZndDtzZXRfYnVzX2ZyZXF1ZW5jeShidXMsIGZyZXEpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7Y2Fubm90IHNldCBmcmVxdWVuY3kgZm9yIE1ESU8gYnVzICVkXG4mIzM0OywgbWRpb19idXMpOwomIzQzOwomIzQzOwllcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpOwogCWlmIChlcnIpCiAJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCAmIzM0O2Nhbm5vdCByZWdpc3RlciBNRElPIGJ1c1xuJiMzNDspOwogCkBAIC0xMDI3LDcgJiM0MzsxMDkwLDcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgJiMzNDtmYWlsZWQgdG8gc2V0dXAgTURJTyBidXMgY29udHJvbGxlclxuJiMzNDspOwogCX0KIAotCWRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlX3Njb3BlZChkZXYsIGNoaWxkKSB7CiYjNDM7CWZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi0mZ3Q7b2Zfbm9kZSwgY2hpbGQpIHsKIAkJZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwpAQCAtMTA1MSw2ICYjNDM7MTExNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0gewogCS5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsCiAJLnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCwKJiM0MzsJLnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5LAogCS5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsCiAJLnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLAogCS5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSwKQEAgLTEwNzUsNiAmIzQzOzExMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHsKIAkubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsCiAJLm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLAogCS5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCwKJiM0MzsJLnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5LAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsCiAJLndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIsCkBAIC0xMDk3LDYgJiM0MzsxMTYyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7CiAJLm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLAogCS5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUywKIAkucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LApAQCAtMTEyMyw2ICYjNDM7MTE4OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0gewogCS5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsCiAJLnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzQ1LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTQwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIFN5emthbGxlciBQYXRjaCBmb3IgUmVhbHRlayBSVEw5MzAwIE1ESU8gU3VwcG9ydCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSByZWxhdGVkIHRvIGZ1enppbmcgd2l0aCBzeXprYWxsZXIsIGFuZCBteSBmaXJzdCBzdGVwIGlzIGFsd2F5cyBhIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZC4gVGhlIGZpbGVzIGFyZSBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AuIFRoZSBZQU1MIGZpbGUgbGlrZWx5IGRlYWxzIHdpdGggRGV2aWNlIFRyZWUgYmluZGluZ3MsIHNvIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcgYnV0IHRoZSBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AgZmlsZSBpcyB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgZHJpdmVyIGNoYW5nZSBpcy4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZHJpdmVyLCBob3cgaXQmIzM5O3MgY29uZmlndXJlZCwgYW5kIHdoZXRoZXIgaXQmIzM5O3MgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgc3lzdGVtLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC4gSSYjMzk7bGwgd2FudCB0byBjaGVjayB0aGUgS2NvbmZpZywgc2VlIGhvdyBgTURJT19SRUFMVEVLX1JUTDkzMDBgIGlzIGRlZmluZWQsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgcHJldmVudCBpdCBmcm9tIGJlaW5nIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gQSBxdWljayBgZ2l0IGdyZXBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L21kaW8vYCBkaXJlY3RvcnkgZm9yIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gaHVudCB0aGlzIGRvd24sIGZvbGxvd2VkIGJ5IGEgbWFudWFsIGNoZWNrIG9mIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIHdpbGwgdGVsbCBtZSBxdWlja2x5IGlmIHRoZSBkcml2ZXIgaXMgbW9kdWxhciBvciBidWlsdC1pbiwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBpdCB0byBiZSBlbmFibGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBxdWljayBtZW50YWwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgdXNlIGNhc2VzIGFuZCBhdHRhY2sgc3VyZmFjZXMgdGhpcyBwYXRjaCBleHBvc2VzLCBzbyBJIGNhbiBnaXZlIGEgc29saWQgZXZhbHVhdGlvbiBmb3Igc3l6a2FsbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tcmVhbHRlay1ydGw5MzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19NRElPX1BJQzY0SFBTQylcdFx0JiM0Mzs9IG1kaW8tcGljNjRocHNjLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwKVx0JiM0Mzs9IG1kaW8tcmVhbHRlay1ydGw5MzAwLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX01ESU9fUkVHTUFQKVx0XHQmIzQzOz0gbWRpby1yZWdtYXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNjYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhIG5ldHdvcmtpbmcgZXhwZXJ0IHdvcmtpbmcgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zL0xpbnV4IGtlcm5lbCBkcml2ZXJzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSVEw5MzAwIE1ESU8gRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBNRElPIGRyaXZlciByZWxhdGVkIHRvIHRoZSBSZWFsdGVrIFJUTDkzMDAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9tZGlvL0tjb25maWdgLiBUaGlzIHN1Z2dlc3RzIEkmIzM5O20gcHJvYmFibHkgdHJvdWJsZXNob290aW5nIHNvbWV0aGluZywgcGVyaGFwcyBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBkcml2ZXIsIG9yIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBidWlsZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJIG1pZ2h0IGJlIGxvb2tpbmcgZm9yIG9wdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc3BlY2lmaWMgZmVhdHVyZXMsIHNldCBkZWZhdWx0IHZhbHVlcywgb3IgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGFydGljdWxhciBNRElPIGRyaXZlci4gVGhpcyB3b3VsZCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIHRoZSBkcml2ZXImIzM5O3MgaW5jbHVzaW9uIGludG8gdGhlIGtlcm5lbCBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNjY9Y29uZmlnIE1ESU9fSVBRODA2NFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzMtXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc0OmNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjM1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcHJvY2Vzc2luZyB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBNRElPIEtjb25maWcgRmlsZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdGhlIEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy9uZXQvbWRpby9gLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgc2VjdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE3NC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQga2luZHMgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYmUgaW4gdGhhdCBhcmVhIOKAkyBwcm9iYWJseSByZWxhdGVkIHRvIHNwZWNpZmljIE1ESU8gZHJpdmVyIGZlYXR1cmVzLCBQSFkgdHlwZXMsIG9yIG1heWJlIHNvbWUgY29yZSBNRElPIGNvbnRyb2xsZXIgc2V0dGluZ3MuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgY3VycmVudCBwcm9ibGVtIEkmIzM5O20gd29ya2luZyBvbiwgYmUgaXQgZGVidWdnaW5nIGEgZHJpdmVyLCBjdXN0b21pemluZyBhIHN5c3RlbSBpbWFnZSwgb3IganVzdCBnYWluaW5nIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIE1ESU8gc3Vic3lzdGVtJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGJlIGFibGUgdG8gcXVpY2tseSBzcG90IGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGFuZCBoZWxwIHRleHRzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdGhlbHBcbiAxNzE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXG4gMTcyOlx0XHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcbiAxNzM6XHRcbiAxNzQ6XHRjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbiAxNzU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAxNzY6XHRcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBSZWFsdGVrXG4gMTc5Olx0XHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiAxODA6XHRcbiAxODE6XHRjb25maWcgTURJT19SRUdNQVBcbiAxODI6XHRcdHRyaXN0YXRlXG4gMTgzOlx0XHRoZWxwXG4gMTg0Olx0XHQgIFRoaXMgZHJpdmVyIGFsbG93cyB1c2luZyBNRElPIGRldmljZXMgdGhhdCBhcmUgbm90IHNpdHRpbmcgb24gYVxuIDE4NTpcdFx0ICByZWd1bGFyIE1ESU8gYnVzLCBidXQgc3RpbGwgZXhwb3NlcyB0aGUgc3RhbmRhcmQgODAyLjMgcmVnaXN0ZXJcbiAxODY6XHRcdCAgbGF5b3V0LiBJdCYjMzk7cyByZWdtYXAtYmFzZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiBpbnRlZ3JhdGVkLFxuIDE4NzpcdFx0ICBtZW1vcnktbWFwcGVkIFBIWXMsIFNQSSBQSFlzIGFuZCBzbyBvbi4gQSBuZXcgdmlydHVhbCBNRElPIGJ1cyBpc1xuIDE4ODpcdFx0ICBjcmVhdGVkLCBhbmQgaXRzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhcmUgbWFwcGVkIHRvIHRoZSB1bmRlcmx5aW5nXG4gMTg5Olx0XHQgIHJlZ21hcC4gVXNlcnMgd2lsbGluZyB0byB1c2UgdGhpcyBkcml2ZXIgbXVzdCBleHBsaWNpdGx5IHNlbGVjdFxuIDE5MDpcdFx0ICBSRUdNQVAuXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnIE1ESU9fVEhVTkRFUlxuIDE5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGh1bmRlclggU09DcyBNRElPIGJ1c2VzXCYjMzQ7XG4gMTk0Olx0XHRkZXBlbmRzIG9uIDY0QklUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMyOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWx0ZWsgUlRMOTMwMCBNRElPIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgYE1ESU9fUkVBTFRFS19SVEw5MzAwYC4gSXQmIzM5O3MgY2xlYXJseSBhIGRyaXZlciwgYW5kIGZyb20gdGhlIG5hbWUsIGl0JiMzOTtzIHNwZWNpZmljIHRvIHRoZSBNRElPIGludGVyZmFjZSBmb3IgUmVhbHRlayYjMzk7cyBSVEw4M3h4L1JUTDkzeHggRXRoZXJuZXQgc3dpdGNoIFNvQ3MuIFRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcyBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZC4gSXMgdGhpcyBkcml2ZXIgdHJpZ2dlcmVkIGJ5IHRoZSBkZXZpY2UgdHJlZSAoT0YpLCBvciBpcyBpdCBhIHBsYXRmb3JtIGRyaXZlciB0YWlsb3JlZCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR1cCB3aXRoaW4gdGhlc2UgUmVhbHRlayBTb0NzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmluZyBtZWNoYW5pc20uIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4YW1pbmUgdGhlIGNvZGUgaXRzZWxmLCBzdGFydGluZyB3aXRoIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29tZXMgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDAwOlx0XG4xMDAxOlx0XHRcdGVyciA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGJ1c19kbiwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZidXMpO1xuMTAwMjpcdFx0XHRpZiAoZXJyKVxuMTAwMzpcdFx0XHRcdGdvdG8gcHV0X25vZGVzO1xuMTAwNDpcdFxuMTAwNTpcdFx0XHRpZiAoYnVzIFx1MDAzZT0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZW51bV9idXNlcykge1xuMTAwNjpcdFx0XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCBcJiMzNDtpbGxlZ2FsIHNtaSBidXMgbnVtYmVyICVkXFxuXCYjMzQ7LCBidXMpO1xuMTAwNzpcdFx0XHRcdGdvdG8gcHV0X25vZGVzO1xuMTAwODpcdFx0XHR9XG4xMDA5Olx0XG4xMDEwOlx0XHRcdGFkZHIgPSBvZl9tZGlvX3BhcnNlX2FkZHIoZGV2LCBwaHlfZG4pO1xuMTAxMTpcdFx0XHRpZiAoYWRkciBcdTAwM2MgMCkge1xuMTAxMjpcdFx0XHRcdGVyciA9IGFkZHI7XG4xMDEzOlx0XHRcdFx0Z290byBwdXRfbm9kZXM7XG4xMDE0Olx0XHRcdH1cbjEwMTU6XHRcbjEwMTY6XHRcdFx0LypcbjEwMTc6XHRcdFx0ICogVGhlIE1ESU8gYWNjZXNzZXMgZnJvbSB0aGUga2VybmVsIHdvcmsgd2l0aCB0aGUgUEhZIHBvbGxpbmcgdW5pdCBpbiB0aGVcbjEwMTg6XHRcdFx0ICogc3dpdGNoLiBUaGUgUFBVIGVpdGhlciBvcGVyYXRlcyBpbiBHUEhZIChpLmUuIGNsYXVzZSAyMikgb3IgMTBHUEhZIG1vZGVcbjEwMTk6XHRcdFx0ICogKGkuZS4gY2xhdXNlIDQ1KS4gU2VsZWN0IDEwR1BIWSBtb2RlIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBQSFkgdGhhdFxuMTAyMDpcdFx0XHQgKiBkZWNsYXJlcyBjb21wYXRpYmxlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jNDVcJiMzNDsuXG4xMDIxOlx0XHRcdCAqL1xuMTAyMjpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUocGh5X2RuLCBcJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWM0NVwmIzM0OykpXG4xMDIzOlx0XHRcdFx0cHJpdi1cdTAwM2VzbWlfYnVzX2lzX2M0NVtidXNdID0gdHJ1ZTtcbjEwMjQ6XHRcbjEwMjU6XHRcdFx0X19zZXRfYml0KHBuLCBwcml2LVx1MDAzZXZhbGlkX3BvcnRzKTtcbjEwMjY6XHRcdFx0cHJpdi1cdTAwM2VzbWlfYnVzW3BuXSA9IGJ1cztcbjEwMjc6XHRcdFx0cHJpdi1cdTAwM2VzbWlfYWRkcltwbl0gPSBhZGRyO1xuMTAyODpcdHB1dF9ub2RlczpcbjEwMjk6XHRcdFx0b2Zfbm9kZV9wdXQoYnVzX2RuKTtcbjEwMzA6XHRcdFx0b2Zfbm9kZV9wdXQocGh5X2RuKTtcbjEwMzE6XHRcdFx0b2Zfbm9kZV9wdXQoY3RybF9kbik7XG4xMDMyOlx0XHRcdGlmIChlcnIpXG4xMDMzOlx0XHRcdFx0YnJlYWs7XG4xMDM0Olx0XHR9XG4xMDM1Olx0XG4xMDM2Olx0XHRvZl9ub2RlX3B1dChwb3J0c19kbik7XG4xMDM3Olx0XG4xMDM4Olx0XHRyZXR1cm4gZXJyO1xuMTAzOTpcdH1cbjEwNDA6XHRcbjEwNDE6XHRzdGF0aWMgaW50IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4xMDQyOlx0e1xuMTA0MzpcdFx0aW50IGVycjtcbjEwNDQ6XHRcbjEwNDU6XHRcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFx1MDAzYyBwcml2LVx1MDAzZWluZm8tXHUwMDNlbnVtX3BvcnRzOyBwb3J0JiM0MzsmIzQzOykge1xuMTA0NjpcdFx0XHRlcnIgPSBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpO1xuMTA0NzpcdFx0XHRpZiAoZXJyKVxuMTA0ODpcdFx0XHRcdHJldHVybiBlcnI7XG4xMDQ5Olx0XHR9XG4xMDUwOlx0XG4xMDUxOlx0XHRyZXR1cm4gMDtcbjEwNTI6XHR9XG4xMDUzOlx0XG4xMDU0Olx0c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4xMDU1Olx0e1xuMTA1NjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4xMDU3Olx0XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuMTA1ODpcdFx0aW50IGVycjtcbjEwNTk6XHRcbjEwNjA6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbjEwNjE6XHRcdGlmICghcHJpdilcbjEwNjI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMDYzOlx0XG4xMDY0Olx0XHRlcnIgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuMTA2NTpcdFx0aWYgKGVycilcbjEwNjY6XHRcdFx0cmV0dXJuIGVycjtcbjEwNjc6XHRcbjEwNjg6XHRcdHByaXYtXHUwMDNlaW5mbyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuMTA2OTpcdFx0cHJpdi1cdTAwM2VyZWdtYXAgPSBzeXNjb25fbm9kZV90b19yZWdtYXAoZGV2LVx1MDAzZXBhcmVudC1cdTAwM2VvZl9ub2RlKTtcbjEwNzA6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VyZWdtYXApKVxuMTA3MTpcdFx0XHRyZXR1cm4gUFRSX0VSUihwcml2LVx1MDAzZXJlZ21hcCk7XG4xMDcyOlx0XG4xMDczOlx0XHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcbjEwNzQ6XHRcdGlmIChlcnIpXG4xMDc1Olx0XHRcdHJldHVybiBlcnI7XG4xMDc2Olx0XG4xMDc3Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTtcbjEwNzg6XHRcbjEwNzk6XHRcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NTUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBSVEw5MzAwIE1ESU8gRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgUmVhbHRlayBSVEw5MzAwIE1ESU8gZHJpdmVyIGlzIHN0cnVjdHVyZWQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYHBsYXRmb3JtX2RyaXZlcmAgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCB0byBleGFtaW5lIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGxhdGZvcm0gZHJpdmVyJiMzOTtzIHNldHVwIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBicm9hZGVyIGtlcm5lbCBNRElPIGZyYW1ld29yay4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBtYWdpYyBoYXBwZW5zLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBzdGFydCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMzA6XHRcdFx0LmJyb2FkY2FzdCA9IFJUTDgzOTBfQkNBU1RfUEhZSURfQ1RSTCxcbjExMzE6XHRcdFx0LmMyMl9kYXRhID0gUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkwsXG4xMTMyOlx0XHRcdC5jNDVfZGF0YSA9IFJUTDgzOTBfUEhZUkVHX01NRF9DVFJMLFxuMTEzMzpcdFx0XHQuZXh0X3BhZ2UgPSBSVEw4MzkwX1BIWVJFR19DVFJMLFxuMTEzNDpcdFx0XHQuaW9fZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0RBVEFfQ1RSTCxcbjExMzU6XHRcdFx0LnBvcnRfbWFza19sb3cgPSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XLFxuMTEzNjpcdFx0XHQucG9ydF9tYXNrX2hpZ2ggPSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSCxcbjExMzc6XHRcdH0sXG4xMTM4Olx0XHQubnVtX2J1c2VzID0gUlRMODM5MF9OVU1fQlVTRVMsXG4xMTM5Olx0XHQubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsXG4xMTQwOlx0XHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXG4xMTQxOlx0XHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4xMTQyOlx0XHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXG4xMTQzOlx0XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXG4xMTQ0Olx0XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG4xMTQ1Olx0XHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbjExNDY6XHRcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzQ1LFxuMTE0NzpcdH07XG4xMTQ4Olx0XG4xMTQ5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzAwX2luZm8gPSB7XG4xMTUwOlx0XHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuMTE1MTpcdFx0LmJ1c19tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMLFxuMTE1MjpcdFx0LmNtZF9mYWlsID0gUlRMOTMwMF9QSFlfQ1RSTF9GQUlMLFxuMTE1MzpcdFx0LmNtZF9yZWFkID0gUlRMOTMwMF9QSFlfQ1RSTF9SRUFELFxuMTE1NDpcdFx0LmNtZF93cml0ZSA9IFJUTDkzMDBfUEhZX0NUUkxfV1JJVEUsXG4xMTU1Olx0XHQuY21kX3JlZ3MgPSB7XG4xMTU2Olx0XHRcdC5jMjJfZGF0YSA9IFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xLFxuMTE1NzpcdFx0XHQuYzQ1X2RhdGEgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMyxcbjExNTg6XHRcdFx0LmlvX2RhdGEgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMixcbjExNTk6XHRcdFx0LnBvcnRfbWFza19sb3cgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMCxcbjExNjA6XHRcdH0sXG4xMTYxOlx0XHQubnVtX2J1c2VzID0gUlRMOTMwMF9OVU1fQlVTRVMsXG4xMTYyOlx0XHQubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsXG4xMTYzOlx0XHQubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsXG4xMTY0Olx0XHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxuMTE2NTpcdFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuMTE2NjpcdFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbjExNjc6XHRcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcbjExNjg6XHRcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbjExNjk6XHRcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxuMTE3MDpcdFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUsXG4xMTcxOlx0fTtcbjExNzI6XHRcbjExNzM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcbjExNzQ6XHRcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkwsXG4xMTc1Olx0XHQuYnVzX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTCxcbjExNzY6XHRcdC5jbWRfZmFpbCA9IFJUTDkzMTBfUEhZX0NUUkxfRkFJTCxcbjExNzc6XHRcdC5jbWRfcmVhZCA9IFJUTDkzMTBfUEhZX0NUUkxfUkVBRCxcbjExNzg6XHRcdC5jbWRfd3JpdGUgPSBSVEw5MzEwX1BIWV9DVFJMX1dSSVRFLFxuMTE3OTpcdFx0LmNtZF9yZWdzID0ge1xuMTE4MDpcdFx0XHQuYnJvYWRjYXN0ID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0JDX1BIWUlEX0NUUkwsXG4xMTgxOlx0XHRcdC5jMjJfZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzAsXG4xMTgyOlx0XHRcdC5jNDVfZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19NTURfQ1RSTCxcbjExODM6XHRcdFx0LmV4dF9wYWdlID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMSxcbjExODQ6XHRcdFx0LmlvX2RhdGEgPSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8zLFxuMTE4NTpcdFx0XHQucG9ydF9tYXNrX2xvdyA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzJfTE9XLFxuMTE4NjpcdFx0XHQucG9ydF9tYXNrX2hpZ2ggPSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8yX0hJR0gsXG4xMTg3Olx0XHR9LFxuMTE4ODpcdFx0Lm51bV9idXNlcyA9IFJUTDkzMTBfTlVNX0JVU0VTLFxuMTE4OTpcdFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuMTE5MDpcdFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuMTE5MTpcdFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuMTE5MjpcdFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuMTE5MzpcdFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbjExOTQ6XHRcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbjExOTU6XHRcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbjExOTY6XHRcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyLFxuMTE5NzpcdFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUsXG4xMTk4Olx0fTtcbjExOTk6XHRcbjEyMDA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xuMTIwMTpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsODM4MC1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fODM4MF9pbmZvIH0sXG4xMjAyOlx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzkxLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb184MzkwX2luZm8gfSxcbjEyMDM6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDkzMDEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzkzMDBfaW5mbyB9LFxuMTIwNDpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMxMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMxMF9pbmZvIH0sXG4xMjA1Olx0XHR7fVxuMTIwNjpcdH07XG4xMjA3Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb3R0b19lbWRpb19pZHMpO1xuMTIwODpcdFxuMTIwOTpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG90dG9fZW1kaW9fZHJpdmVyID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjEwNQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG90dG9fZW1kaW9fZHJpdmVyYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBTbywgSSYjMzk7bSBsb29raW5nIGF0IGBvdHRvX2VtZGlvX2RyaXZlcmAsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgbWF0Y2hlZCB1c2luZyBEZXZpY2UgVHJlZS4gVGhlIG1hdGNoIGhhcHBlbnMgdmlhIHRoZSBgb3R0b19lbWRpb19pZHNgIHRhYmxlLCB3aGljaCBzdWdnZXN0cyBpdCB1c2VzIGNvbXBhdGlibGUgc3RyaW5ncy4gR29vZCwgdGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZS4gSSBzZWUgc3RyaW5ncyBsaWtlIGByZWFsdGVrLHJ0bDgzODAtbWRpb2AgYW5kIGByZWFsdGVrLHJ0bDkzMDEtbWRpb2Ag4oCTIHNvIGl0JiMzOTtzIGxpa2VseSBkZWFsaW5nIHdpdGggUmVhbHRlayBNRElPIGNvbnRyb2xsZXJzLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIHdoYXQgYXJjaGl0ZWN0dXJlIGlzIGBNQUNIX1JFQUxURUtfUlRMYCBkZXNpZ25lZCBmb3I/IEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlIGFuZCBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBNQUNIX1JFQUxURUtfUlRMYC4gS25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBwbGF0Zm9ybSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3MgdHJhY2UgdGhhdCBtYWNyby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDSF9SRUFMVEVLX1JUTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvS2NvbmZpZz02ODE9Y29uZmlnIFJBTElOS1xuLS1cbmFyY2gvbWlwcy9LY29uZmlnLTY5OC1cbmFyY2gvbWlwcy9LY29uZmlnOjY5OTpjb25maWcgTUFDSF9SRUFMVEVLX1JUTFxuYXJjaC9taXBzL0tjb25maWctNzAwLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBiYXNlZCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdCYjNDM7PSBjaXNjb19zZzIyMC0yNi5kdGJcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjM6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHQmIzQzOz0gY2FtZW8tcnRsOTMwMmMtMngtcnRsODIyNC0yeGdlLmR0YlxuLS1cbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcdFx0JiM0Mzs9IGJvYXJkLXJhbmNodS5vXG5hcmNoL21pcHMvZ2VuZXJpYy9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IGJvYXJkLXJlYWx0ZWsub1xuLS1cbmRyaXZlcnMvZ3Bpby9LY29uZmlnPTYyNT1jb25maWcgR1BJT19SRUFMVEVLX09UVE9cbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgT3R0byBHUElPIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxuZHJpdmVycy9ncGlvL0tjb25maWctNjI5LVx0c2VsZWN0IEdQSU9fR0VORVJJQ1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnPTExMDM9Y29uZmlnIEkyQ19SVEw5MzAwXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw5MzAwIEkyQyBjb250cm9sbGVyXCYjMzQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzoxMTA1Olx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cdGhlbHBcbi0tXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVx0XHQmIzQzOz0gaXJxLXNsMjhjcGxkLm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZToxMzE6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBpcnEtcmVhbHRlay1ydGwub1xuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTEzMi1vYmotJChDT05GSUdfV1BDTTQ1MF9BSUMpXHRcdCYjNDM7PSBpcnEtd3BjbTQ1MC1haWMub1xuLS1cbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZz02ND1jb25maWcgTVREX05BTkRfRUNDX1JFQUxURUtcbi0tXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY4LSAgICAgICAgc2VsZWN0IE1URF9OQU5EX0VDQ1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NjpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzctXHRoZWxwXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZz05MTY9Y29uZmlnIFNQSV9SRUFMVEVLX1NOQU5EXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxNy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgU1BJLU5BTkQgRmxhc2ggQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3NwaS9LY29uZmlnLTkxOS1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL3NwaS9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX1NQSV9SQjRYWClcdFx0XHQmIzQzOz0gc3BpLXJiNHh4Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcdFx0JiM0Mzs9IHNwaS1yZWFsdGVrLXJ0bC5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX1NQSV9SRUFMVEVLX1NOQU5EKVx0XHQmIzQzOz0gc3BpLXJlYWx0ZWstcnRsLXNuYW5kLm9cbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc9MTExMz1jb25maWcgUkVBTFRFS19PVFRPX1dEVFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIE90dG8gTUlQUyB3YXRjaGRvZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE2LVx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTgtXHRzZWxlY3QgUkVHTUFQX01NSU9cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE5Olx0ZGVmYXVsdCBNQUNIX1JFQUxURUtfUlRMXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2ODkKCQkJCQkJCW91dHB1dDogMTM1CgkJCQkJCQl0aG91Z2h0czogNzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGFuIGBhbWQ2NGAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgY2hhbmdlcyBpbnZvbHZlIGBNRElPX1JFQUxURUtfUlRMOTMwMGAsIHdoaWNoLCBjcml0aWNhbGx5LCByZWxpZXMgb24gZWl0aGVyIGBNQUNIX1JFQUxURUtfUlRMYCBvciBgQ09NUElMRV9URVNUYC4gTG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiwgYE1BQ0hfUkVBTFRFS19SVExgIGlzIHRpZWQgdG8gTUlQUy1iYXNlZCBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBTb0NzLiBUaGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBSZWFsdGVrIHN3aXRjaCBTb0NzIChSVEw4MzgwLCBSVEw4MzkwLCBSVEw5MzAwLCBSVEw5MzEwKSBhbmQgaXMgbWF0Y2hlZCB1c2luZyB0aGUgRGV2aWNlIFRyZWUgKE9GKS4KClRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIEl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMsIGVtYmVkZGVkIFNvQyBkcml2ZXIuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBvZiB0aGVzZSBSZWFsdGVrIHN3aXRjaCBjaGlwcywgd2hpY2ggbWVhbnMgaXQgZGVwZW5kcyBvbiBhIHBoeXNpY2FsIGRldmljZSBvciBhIGNhcmVmdWxseSBjb25zdHJ1Y3RlZCBEVCBub2RlIHRoYXQgZGVzY3JpYmVzIGEgc3BlY2lmaWMgc3lzY29uIHJlZ21hcC4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UgY2FuIHJlYWNoIHZpYSBzdGFuZGFyZCB4ODYvYW1kNjQgdmlydHVhbCBidXNlcyBsaWtlIFBDSSwgVVNCLCBvciB2aXJ0dWFsIGJ1c2VzIGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLgoKTm93LCBsZXQmIzM5O3MgY29uc3VsdCB0aGUgJiMzNDtORUdBVElWRSBDUklURVJJQSYjMzQ7IG91dGxpbmVkIGluIFNlY3Rpb24gMi4gVGhlIGNyaXRpY2FsIHNlY3Rpb24gaGVyZSBkZXNjcmliZXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsJiMzNDsgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBzd2l0Y2hlcyBhbmQgU21hcnROSUNzIHJlcXVpcmluZyBzcGVjaWZpYyBoYXJkd2FyZSB1bmF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBJdCBhbHNvIGRlc2NyaWJlcyB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuIFRoaXMgc2l0dWF0aW9uIGZpdHMgcGVyZmVjdGx5OiB0aGUgY2hhbmdlcywgY2VudGVyZWQgYXJvdW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGFuZCBkZXZpY2V0cmVlIGJpbmRpbmdzLCBhcmUgZm9yIGEgcGxhdGZvcm0gZHJpdmVyIG9uIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IEV0aGVybmV0IHN3aXRjaCBTb0NzLCBzcGVjaWZpY2FsbHkgTUlQUy1iYXNlZCBlbWJlZGRlZCBTb0NzLiBUaGlzIGRyaXZlciBleHBlY3RzIHRvIGJlIHJ1bm5pbmcgb24gTUlQUyBoYXJkd2FyZSwgbm90IGFtZDY0LCBhbmQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgaXMgY29yZS4KClRvIGJlIGV4dHJhIGNlcnRhaW4sIEkgbmVlZCB0byBjaGVjayB0aGUgZGV0YWlsczogVGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLiBUaGUgY2hhbmdlcyBhcmUgdG8gYWRkIGJ1cyBmcmVxdWVuY3kgY29uZmlnIHZpYSBkZXZpY2V0cmVlIHByb3BlcnRpZXMgKCBgY2xvY2stZnJlcXVlbmN5YCApIHRvIHRoZSAuYyBmaWxlIGFuZCB0aGUgYmluZGluZ3MgeWFtbC4gSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBtb2RpZmljYXRpb25zIHRvIGNvcmUgc3Vic3lzdGVtcyBvciB2aXJ0dWFsIGRldmljZXMsIGp1c3QgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbGAgYW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBhbmQgdGhlIE1JUFMgZGVwZW5kZW5jZSBvZiB0aGlzIGNvZGUsIGl0JiMzOTtzIGNsZWFyOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbIF0qKiAoZW1wdHkpCiogICAqKkZvY3VzU3ltYm9sczogXFsgXSoqIChlbXB0eSkKKiAgICoqUmVhc29uaW5nOioqIFBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4Mzh4L1JUTDkzeHggTUlQUyBTb0MgRXRoZXJuZXQgc3dpdGNoIE1ESU8gaW50ZXJmYWNlLiBUaGUgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBvciBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBkdWUgdG8gYSBkZXBlbmRlbmNlIG9uIGEgc3BlY2lmaWMgTUlQUy1iYXNlZCBSZWFsdGVrIFNvQyBhbmQgcmVxdWlyZWQgaGFyZHdhcmUgb3Igc3BlY2lmaWMgRFQgY29uZmlndXJhdGlvbnMuCgpPa2F5LCBsZXQmIzM5O3MgZ2VuZXJhdGUgdGhlIGBzZXQtcmVzdWx0c2AgY2FsbCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjMzLjk1MDIzNzEzOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNTQ2NTk0MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzMuOTUwMjQzMDg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc3Nzc2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5M2MwNmQwM2YzNjRmNDkzNzFmODRjMTFkMDkwYzViOWZmOWE1MDhkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTQ6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXFxuaW5kZXggNjdlMGIyM2E4NDcwZS4uNmRiMzMxNWNlOTZiMyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG5AQCAtNTYsNiArNTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgICAgcmVnOlxcbiAgICAgICAgIG1heEl0ZW1zOiAxXFxuIFxcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XFxuKyAgICAgICAgZGVmYXVsdDogMjUwMDAwMFxcbitcXG4gICAgIHJlcXVpcmVkOlxcbiAgICAgICAtIHJlZ1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXFxuaW5kZXggMTFkMDc4ZWY5NDFjZC4uNGFmMjgxYjkyNGFkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcXG5AQCAtMTMwLDYgKzEzMCw3IEBAXFxuICNkZWZpbmUgUlRMODM4MF9OVU1fUEFHRVNcXHRcXHRcXHQ0MDk2XFxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcXHRcXHRcXHQyOFxcbiAjZGVmaW5lIFJUTDgzODBfU01JX0dMQl9DVFJMXFx0XFx0XFx0MHhhMTAwXFxuKyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTFxcdFxcdFxcdEJJVCgxKVxcbiAjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkVcXHRcXHRCSVQoMTUpXFxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcXHRcXHQweGExYjhcXG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVxcdFxcdDB4YTFiY1xcbkBAIC0xNjksMTIgKzE3MCwxNSBAQFxcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1dcXHRcXHQweDAzZTRcXG4gI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSFxcdFxcdDB4MDNlOFxcbiAjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMXFx0XFx0MHgwM2ZjXFxuKyNkZWZpbmUgUlRMODM5MF9TTUlfR0xCX0NUUkxcXHRcXHRcXHQweDAzZjhcXG4rI2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMXFx0XFx0XFx0R0VOTUFTSyg2LCA1KVxcbiBcXG4gI2RlZmluZSBSVEw5MzAwX05VTV9CVVNFU1xcdFxcdFxcdDRcXG4gI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFU1xcdFxcdFxcdDQwOTZcXG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1xcdFxcdFxcdDI4XFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfR0xCX0NUUkxcXHRcXHRcXHQweGNhMDBcXG4gI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZilcXHRCSVQoMTYgKyAoaW50ZikpXFxuKyNkZWZpbmUgICBSVEw5MzAwX1NNSV9GUkVRX1NFTChpbnRmKVxcdFxcdEdFTk1BU0soKGludGYpICogMiArIDksIChpbnRmKSAqIDIgKyA4KVxcbiAjZGVmaW5lIFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMXFx0MHhjYTA4XFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcXHRcXHQweGNiNzBcXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVxcdFxcdDB4Y2I3NFxcbkBAIC0xOTYsNiArMjAwLDggQEBcXG4gI2RlZmluZSBSVEw5MzEwX05VTV9CVVNFU1xcdFxcdFxcdDRcXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QQUdFU1xcdFxcdFxcdDgxOTJcXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1xcdFxcdFxcdDU2XFxuKyNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwwXFx0XFx0XFx0MHgwY2MwXFxuKyNkZWZpbmUgICBSVEw5MzEwX1NNSV9GUkVRX1NFTChpbnRmKVxcdFxcdEdFTk1BU0soKGludGYpICogMiArIDUsIChpbnRmKSAqIDIgKyA0KVxcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMVxcdFxcdFxcdDB4MGNiY1xcbiAjZGVmaW5lICAgUlRMOTMxMF9TTUlfR0xCX0ZNVF9TRUxfQzQ1KGludGYpXFx0QklUKChpbnRmKSAqIDIgKyAxKVxcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzBcXHRcXHQweDBjMDBcXG5AQCAtMjUxLDYgKzI1Nyw3IEBAIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xcbiBcXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XFxuIFxcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xcbiBcXHRERUNMQVJFX0JJVE1BUCh2YWxpZF9wb3J0cywgTUFYX1BPUlRTKTtcXG4rXFx0dTMyIGdsb2JhbF9mcmVxO1xcbiBcXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xcbiBcXHR1OCBzbWlfYnVzW01BWF9QT1JUU107XFxuIFxcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XFxuQEAgLTI2OSw2ICsyNzYsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcXG4gXFx0dTggbnVtX3BvcnRzO1xcbiBcXHR1MTYgbnVtX3BhZ2VzO1xcbiBcXHR1MzIgcG9sbF9jdHJsO1xcbitcXHRpbnQgKCpzZXRfYnVzX2ZyZXF1ZW5jeSkoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpO1xcbiBcXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcXG4gXFx0aW50ICgqcmVhZF9jMjIpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTtcXG4gXFx0aW50ICgqcmVhZF9jNDUpKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xcbkBAIC03NDAsNiArNzQ4LDE1IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4rXFxuK1xcdHJldHVybiByZWdtYXBfYXNzaWduX2JpdHMocHJpdi1cXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcXG4rXFx0XFx0XFx0XFx0XFx0IFJUTDgzODBfU01JX0ZSRVFfU0VMLFxcbitcXHRcXHRcXHRcXHRcXHQgZnJlcSBcXHUwMDNlPSAxMDAwMDAwMCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHQvKlxcbkBAIC03NDksNiArNzY2LDM0IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHUzMiB2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWdsb2JhbF9mcmVxKSB7XFxuK1xcdFxcdC8qIFdpdGggb25seSBvbmUgZ2xvYmFsIGZyZXF1ZW5jeSBhdmFpbGFibGUgc2tpcCBzZXR1cCBmb3Igc2Vjb25kIGJ1cy4gKi9cXG4rXFx0XFx0aWYgKGZyZXEgIT0gcHJpdi1cXHUwMDNlZ2xvYmFsX2ZyZXEpXFxuK1xcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZidXMtXFx1MDAzZWRldiwgXFxcIk9ubHkgb25lIGZyZXF1ZW5jeSBmb3IgYWxsIGJ1c2VzIHN1cHBvcnRlZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXHRwcml2LVxcdTAwM2VnbG9iYWxfZnJlcSA9IGZyZXE7XFxuK1xcbitcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbitcXHR1MzIgbWFzaywgdmFsO1xcbitcXG4rXFx0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXFx1MDAzZW1kaW9fYnVzKTtcXG4rXFx0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xcbitcXG4rXFx0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDkzMDBfU01JX0dMQl9DVFJMLCBtYXNrLCB2YWwpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xcbkBAIC03NjksNiArODE0LDE4IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdHUzMiBtYXNrLCB2YWw7XFxuK1xcbitcXHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cXHUwMDNlbWRpb19idXMpO1xcbitcXHR2YWwgPSBmaWVsZF9wcmVwKG1hc2ssIG1pbl90KHUzMiwgZnJlcSAvIDI1MDAwMDAsIDJVKSk7XFxuK1xcbitcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMOTMxMF9TTUlfR0xCX0NUUkwwLCBtYXNrLCB2YWwpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0aW50IGksIGVycjtcXG5AQCAtODMxLDE0ICs4ODgsMTQgQEAgc3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG4tXFx0XFx0XFx0XFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuIHtcXG4gXFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbjtcXG4gXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tXFx0dTMyIG1kaW9fYnVzO1xcbitcXHR1MzIgbWRpb19idXMsIGZyZXE7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRlcnIgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXFxcInJlZ1xcXCIsIFxcdTAwMjZtZGlvX2J1cyk7XFxuK1xcdGVyciA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFxcXCJyZWdcXFwiLCBcXHUwMDI2bWRpb19idXMpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcInVuZGVmaW5lZCBzbWkgYnVzIG51bWJlclxcXFxuXFxcIik7XFxuIFxcbkBAIC04NjUsNyArOTIyLDEzIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2XFxuIFxcbiBcXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlcy0lZFxcXCIsIGRldl9uYW1lKGRldiksIG1kaW9fYnVzKTtcXG4gXFxuLVxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgdG9fb2Zfbm9kZShub2RlKSk7XFxuK1xcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcXFwiY2xvY2stZnJlcXVlbmN5XFxcIiwgXFx1MDAyNmZyZXEpKVxcbitcXHRcXHRmcmVxID0gMjUwMDAwMDtcXG4rXFx0ZXJyID0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJjYW5ub3Qgc2V0IGZyZXF1ZW5jeSBmb3IgTURJTyBidXMgJWRcXFxcblxcXCIsIG1kaW9fYnVzKTtcXG4rXFxuK1xcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcXFwiY2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTEwMjcsNyArMTA5MCw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcImZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gXFx0fVxcbiBcXG4tXFx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcXG4rXFx0Zm9yX2VhY2hfY2hpbGRfb2Zfbm9kZV9zY29wZWQoZGV2LVxcdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xcbiBcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG5AQCAtMTA1MSw2ICsxMTE0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XFxuIFxcdC5udW1fcGFnZXMgPSBSVEw4MzgwX05VTV9QQUdFUyxcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxcbiBcXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxcbitcXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3ksXFxuIFxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXFxuIFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2MyMixcXG4gXFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LFxcbkBAIC0xMDc1LDYgKzExMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzOTBfaW5mbyA9IHtcXG4gXFx0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxcbiBcXHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXFxuIFxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG4rXFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5LFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcXG4gXFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIsXFxuQEAgLTEwOTcsNiArMTE2Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xcbiBcXHQubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsXFxuIFxcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcXG4gXFx0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcXG4rXFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcXG5AQCAtMTEyMyw2ICsxMTg5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XFxuIFxcdC5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUyxcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxcbiBcXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXFxuK1xcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4gXFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcXG4gXFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzIyLFxcbiBcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjM0LjM3ODY1MzM2MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzMxMTgxNjIxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgYW5kIGFkZHMgYnVzIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIGxvZ2ljIHRvIHRoZSBSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGRyaXZlciAobWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgUmVhbHRlayBNSVBTLWJhc2VkIHN3aXRjaCBTb0NzIChNQUNIX1JFQUxURUtfUlRMKSBhbmQgaXMgaW5zdGFudGlhdGVkIHZpYSBEZXZpY2UgVHJlZS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHg4Ni9hbWQ2NCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTNjMDZkMDNmMzY0ZjQ5MzcxZjg0YzExZDA5MGM1YjlmZjlhNTA4ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTQ6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbmluZGV4IDY3ZTBiMjNhODQ3MGUuLjZkYjMzMTVjZTk2YjMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuQEAgLTU2LDYgKzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgICAgcmVnOlxuICAgICAgICAgbWF4SXRlbXM6IDFcbiBcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XG4rICAgICAgICBkZWZhdWx0OiAyNTAwMDAwXG4rXG4gICAgIHJlcXVpcmVkOlxuICAgICAgIC0gcmVnXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCAxMWQwNzhlZjk0MWNkLi40YWYyODFiOTI0YWQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0xMzAsNiArMTMwLDcgQEBcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcdFx0XHQweGExMDBcbisjZGVmaW5lICAgUlRMODM4MF9TTUlfRlJFUV9TRUxcdFx0XHRCSVQoMSlcbiAjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkVcdFx0QklUKDE1KVxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhhMWI4XG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGExYmNcbkBAIC0xNjksMTIgKzE3MCwxNSBAQFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXHRcdDB4MDNlOFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcdFx0MHgwM2ZjXG4rI2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4MDNmOFxuKyNkZWZpbmUgICBSVEw4MzkwX1NNSV9GUkVRX1NFTFx0XHRcdEdFTk1BU0soNiwgNSlcbiBcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1x0XHRcdDI4XG4gI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4Y2EwMFxuICNkZWZpbmUgICBSVEw5MzAwX0dMQl9DVFJMX0lOVEZfU0VMKGludGYpXHRCSVQoMTYgKyAoaW50ZikpXG4rI2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXHRcdEdFTk1BU0soKGludGYpICogMiArIDksIChpbnRmKSAqIDIgKyA4KVxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcdDB4Y2EwOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhjYjcwXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGNiNzRcbkBAIC0xOTYsNiArMjAwLDggQEBcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1x0XHRcdDU2XG4rI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDBcdFx0XHQweDBjYzBcbisjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZilcdFx0R0VOTUFTSygoaW50ZikgKiAyICsgNSwgKGludGYpICogMiArIDQpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDFcdFx0XHQweDBjYmNcbiAjZGVmaW5lICAgUlRMOTMxMF9TTUlfR0xCX0ZNVF9TRUxfQzQ1KGludGYpXHRCSVQoKGludGYpICogMiArIDEpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wXHRcdDB4MGMwMFxuQEAgLTI1MSw2ICsyNTcsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4rXHR1MzIgZ2xvYmFsX2ZyZXE7XG4gXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xuIFx0dTggc21pX2J1c1tNQVhfUE9SVFNdO1xuIFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcbkBAIC0yNjksNiArMjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XG4gXHR1OCBudW1fcG9ydHM7XG4gXHR1MTYgbnVtX3BhZ2VzO1xuIFx0dTMyIHBvbGxfY3RybDtcbitcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XG4gXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbiBcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG4gXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG5AQCAtNzQwLDYgKzc0OCwxNSBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF9hc3NpZ25fYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsXG4rXHRcdFx0XHRcdCBSVEw4MzgwX1NNSV9GUkVRX1NFTCxcbitcdFx0XHRcdFx0IGZyZXEgXHUwMDNlPSAxMDAwMDAwMCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiB7XG4gXHQvKlxuQEAgLTc0OSw2ICs3NjYsMzQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FKTtcbiB9XG4gXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4re1xuK1x0dTMyIHZhbCA9IEZJRUxEX1BSRVAoUlRMODM5MF9TTUlfRlJFUV9TRUwsIG1pbl90KHUzMiwgZnJlcSAvIDI1MDAwMDAsIDJVKSk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEpIHtcbitcdFx0LyogV2l0aCBvbmx5IG9uZSBnbG9iYWwgZnJlcXVlbmN5IGF2YWlsYWJsZSBza2lwIHNldHVwIGZvciBzZWNvbmQgYnVzLiAqL1xuK1x0XHRpZiAoZnJlcSAhPSBwcml2LVx1MDAzZWdsb2JhbF9mcmVxKVxuK1x0XHRcdGRldl93YXJuKFx1MDAyNmJ1cy1cdTAwM2VkZXYsIFwiT25seSBvbmUgZnJlcXVlbmN5IGZvciBhbGwgYnVzZXMgc3VwcG9ydGVkXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcdHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEgPSBmcmVxO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpO1xuK31cbitcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1x0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuK1x0dTMyIG1hc2ssIHZhbDtcbitcbitcdG1hc2sgPSBSVEw5MzAwX1NNSV9GUkVRX1NFTChjaGFuLVx1MDAzZW1kaW9fYnVzKTtcbitcdHZhbCA9IGZpZWxkX3ByZXAobWFzaywgbWluX3QodTMyLCBmcmVxIC8gMjUwMDAwMCwgMlUpKTtcbitcbitcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDkzMDBfU01JX0dMQl9DVFJMLCBtYXNrLCB2YWwpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTc2OSw2ICs4MTQsMTggQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4rXHR1MzIgbWFzaywgdmFsO1xuK1xuK1x0bWFzayA9IFJUTDkzMTBfU01JX0ZSRVFfU0VMKGNoYW4tXHUwMDNlbWRpb19idXMpO1xuK1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBtaW5fdCh1MzIsIGZyZXEgLyAyNTAwMDAwLCAyVSkpO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMOTMxMF9TTUlfR0xCX0NUUkwwLCBtYXNrLCB2YWwpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IGksIGVycjtcbkBAIC04MzEsMTQgKzg4OCwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gfVxuIFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuLVx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuK1x0XHRcdFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLVx0dTMyIG1kaW9fYnVzO1xuK1x0dTMyIG1kaW9fYnVzLCBmcmVxO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4rXHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCJ1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcXG5cIik7XG4gXG5AQCAtODY1LDcgKzkyMiwxMyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFxuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwiJXMtJWRcIiwgZGV2X25hbWUoZGV2KSwgbWRpb19idXMpO1xuIFxuLVx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcbitcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcImNsb2NrLWZyZXF1ZW5jeVwiLCBcdTAwMjZmcmVxKSlcbitcdFx0ZnJlcSA9IDI1MDAwMDA7XG4rXHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImNhbm5vdCBzZXQgZnJlcXVlbmN5IGZvciBNRElPIGJ1cyAlZFxcblwiLCBtZGlvX2J1cyk7XG4rXG4rXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFwiY2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxuXCIpO1xuIFxuQEAgLTEwMjcsNyArMTA5MCw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXFxuXCIpO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbitcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xuIFx0XHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuQEAgLTEwNTEsNiArMTExNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcbitcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICsxMTM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG4gXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbkBAIC0xMDk3LDYgKzExNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuIFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuIFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxuQEAgLTExMjMsNiArMTE4OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuK1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjM0LjM3ODY1NDcwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyMzgyODc2MzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIFN5emthbGxlciBQYXRjaCBmb3IgUmVhbHRlayBSVEw5MzAwIE1ESU8gU3VwcG9ydCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgcmVsYXRlZCB0byBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLCBhbmQgbXkgZmlyc3Qgc3RlcCBpcyBhbHdheXMgYSB0aG9yb3VnaCB1bmRlcnN0YW5kaW5nLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgYmVlbiBjaGFuZ2VkLiBUaGUgZmlsZXMgYXJlIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxgIGFuZCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC4gVGhlIFlBTUwgZmlsZSBsaWtlbHkgZGVhbHMgd2l0aCBEZXZpY2UgVHJlZSBiaW5kaW5ncywgc28gdGhhdCdzIGludGVyZXN0aW5nIGJ1dCB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGZpbGUgaXMgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGRyaXZlciBjaGFuZ2UgaXMuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZHJpdmVyLCBob3cgaXQncyBjb25maWd1cmVkLCBhbmQgd2hldGhlciBpdCdzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHN5c3RlbS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AuIEknbGwgd2FudCB0byBjaGVjayB0aGUgS2NvbmZpZywgc2VlIGhvdyBgTURJT19SRUFMVEVLX1JUTDkzMDBgIGlzIGRlZmluZWQsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgcHJldmVudCBpdCBmcm9tIGJlaW5nIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gQSBxdWljayBgZ2l0IGdyZXBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L21kaW8vYCBkaXJlY3RvcnkgZm9yIGBNRElPX1JFQUxURUtfUlRMOTMwMGAgd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gaHVudCB0aGlzIGRvd24sIGZvbGxvd2VkIGJ5IGEgbWFudWFsIGNoZWNrIG9mIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIHdpbGwgdGVsbCBtZSBxdWlja2x5IGlmIHRoZSBkcml2ZXIgaXMgbW9kdWxhciBvciBidWlsdC1pbiwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBpdCB0byBiZSBlbmFibGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBxdWljayBtZW50YWwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgdXNlIGNhc2VzIGFuZCBhdHRhY2sgc3VyZmFjZXMgdGhpcyBwYXRjaCBleHBvc2VzLCBzbyBJIGNhbiBnaXZlIGEgc29saWQgZXZhbHVhdGlvbiBmb3Igc3l6a2FsbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTQwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NDYuNzYxNTM0MDA1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzY5ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8tcmVhbHRlay1ydGw5MzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfTURJT19QSUM2NEhQU0MpXFx0XFx0Kz0gbWRpby1waWM2NGhwc2Mub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwKVxcdCs9IG1kaW8tcmVhbHRlay1ydGw5MzAwLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19NRElPX1JFR01BUClcXHRcXHQrPSBtZGlvLXJlZ21hcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjQ2LjgwNjMxMDMzMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMzEwMTMxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGEgbmV0d29ya2luZyBleHBlcnQgd29ya2luZyB3aXRoIGVtYmVkZGVkIHN5c3RlbXMvTGludXgga2VybmVsIGRyaXZlcnM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUlRMOTMwMCBNRElPIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIE1ESU8gZHJpdmVyIHJlbGF0ZWQgdG8gdGhlIFJlYWx0ZWsgUlRMOTMwMC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ2AuIFRoaXMgc3VnZ2VzdHMgSSdtIHByb2JhYmx5IHRyb3VibGVzaG9vdGluZyBzb21ldGhpbmcsIHBlcmhhcHMgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgZHJpdmVyLCBvciB0cnlpbmcgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgZGVwZW5kZW5jaWVzLiBJJ20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJIG1pZ2h0IGJlIGxvb2tpbmcgZm9yIG9wdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc3BlY2lmaWMgZmVhdHVyZXMsIHNldCBkZWZhdWx0IHZhbHVlcywgb3IgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGFydGljdWxhciBNRElPIGRyaXZlci4gVGhpcyB3b3VsZCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIHRoZSBkcml2ZXIncyBpbmNsdXNpb24gaW50byB0aGUga2VybmVsIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjY2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NDkuMTM3MzI2MjM1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODI2MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNjY9Y29uZmlnIE1ESU9fSVBRODA2NFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3My1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc0OmNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzUtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjQ5LjE4MzE1NjgxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwOTQ5NDUwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBNRElPIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGZvY3VzIGlzIG9uIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvbmV0L21kaW8vYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHNlY3Rpb24sIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxNzQuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQga2luZHMgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYmUgaW4gdGhhdCBhcmVhIOKAkyBwcm9iYWJseSByZWxhdGVkIHRvIHNwZWNpZmljIE1ESU8gZHJpdmVyIGZlYXR1cmVzLCBQSFkgdHlwZXMsIG9yIG1heWJlIHNvbWUgY29yZSBNRElPIGNvbnRyb2xsZXIgc2V0dGluZ3MuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHByb2JsZW0gSSdtIHdvcmtpbmcgb24sIGJlIGl0IGRlYnVnZ2luZyBhIGRyaXZlciwgY3VzdG9taXppbmcgYSBzeXN0ZW0gaW1hZ2UsIG9yIGp1c3QgZ2FpbmluZyBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBNRElPIHN1YnN5c3RlbSdzIGNvbmZpZ3VyYXRpb24uIEknbSBleHBlY3RpbmcgdG8gYmUgYWJsZSB0byBxdWlja2x5IHNwb3QgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGhlbHAgdGV4dHMgdG8gcXVpY2tseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggb3B0aW9uLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjM1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTIuMjc4MTA0MDg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHRoZWxwXFxuIDE3MTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgbmV0d29ya1xcbiAxNzI6XFx0XFx0ICBpbnRlcmZhY2UgdW5pdHMgb2YgdGhlIElQUTgwNjQgU29DXFxuIDE3MzpcXHRcXG4gMTc0OlxcdGNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxcbiAxNzU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuIDE3NjpcXHRcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuIDE3NzpcXHRcXHRoZWxwXFxuIDE3ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNRElPIGludGVyZmFjZSBmb3VuZCBpbiB0aGUgUmVhbHRla1xcbiAxNzk6XFx0XFx0ICBSVEw4M3h4L1JUTDkzeHggZmFtaWx5IG9mIEV0aGVybmV0IHN3aXRjaGVzIHdpdGggaW50ZWdyYXRlZCBTb0MuXFxuIDE4MDpcXHRcXG4gMTgxOlxcdGNvbmZpZyBNRElPX1JFR01BUFxcbiAxODI6XFx0XFx0dHJpc3RhdGVcXG4gMTgzOlxcdFxcdGhlbHBcXG4gMTg0OlxcdFxcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzaW5nIE1ESU8gZGV2aWNlcyB0aGF0IGFyZSBub3Qgc2l0dGluZyBvbiBhXFxuIDE4NTpcXHRcXHQgIHJlZ3VsYXIgTURJTyBidXMsIGJ1dCBzdGlsbCBleHBvc2VzIHRoZSBzdGFuZGFyZCA4MDIuMyByZWdpc3RlclxcbiAxODY6XFx0XFx0ICBsYXlvdXQuIEl0J3MgcmVnbWFwLWJhc2VkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgb24gaW50ZWdyYXRlZCxcXG4gMTg3OlxcdFxcdCAgbWVtb3J5LW1hcHBlZCBQSFlzLCBTUEkgUEhZcyBhbmQgc28gb24uIEEgbmV3IHZpcnR1YWwgTURJTyBidXMgaXNcXG4gMTg4OlxcdFxcdCAgY3JlYXRlZCwgYW5kIGl0cyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgYXJlIG1hcHBlZCB0byB0aGUgdW5kZXJseWluZ1xcbiAxODk6XFx0XFx0ICByZWdtYXAuIFVzZXJzIHdpbGxpbmcgdG8gdXNlIHRoaXMgZHJpdmVyIG11c3QgZXhwbGljaXRseSBzZWxlY3RcXG4gMTkwOlxcdFxcdCAgUkVHTUFQLlxcbiAxOTE6XFx0XFxuIDE5MjpcXHRjb25maWcgTURJT19USFVOREVSXFxuIDE5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGh1bmRlclggU09DcyBNRElPIGJ1c2VzXFxcIlxcbiAxOTQ6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDo1Mi4yNzgxNzc5NjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTgxNTQ1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBSVEw5MzAwIE1ESU8gRHJpdmVyKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgYE1ESU9fUkVBTFRFS19SVEw5MzAwYC4gSXQncyBjbGVhcmx5IGEgZHJpdmVyLCBhbmQgZnJvbSB0aGUgbmFtZSwgaXQncyBzcGVjaWZpYyB0byB0aGUgTURJTyBpbnRlcmZhY2UgZm9yIFJlYWx0ZWsncyBSVEw4M3h4L1JUTDkzeHggRXRoZXJuZXQgc3dpdGNoIFNvQ3MuIFRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcyBob3cgaXQncyBpbnRlZ3JhdGVkLiBJcyB0aGlzIGRyaXZlciB0cmlnZ2VyZWQgYnkgdGhlIGRldmljZSB0cmVlIChPRiksIG9yIGlzIGl0IGEgcGxhdGZvcm0gZHJpdmVyIHRhaWxvcmVkIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwIHdpdGhpbiB0aGVzZSBSZWFsdGVrIFNvQ3M/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iaW5nIG1lY2hhbmlzbS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhhbWluZSB0aGUgY29kZSBpdHNlbGYsIHN0YXJ0aW5nIHdpdGggYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AgdG8gc2VlIGhvdyB0aGlzIGFsbCBjb21lcyB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMyOCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjU0LjQ1OTcyNjMyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0XFxuMTAwMTpcXHRcXHRcXHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihidXNfZG4sIFxcXCJyZWdcXFwiLCBcXHUwMDI2YnVzKTtcXG4xMDAyOlxcdFxcdFxcdGlmIChlcnIpXFxuMTAwMzpcXHRcXHRcXHRcXHRnb3RvIHB1dF9ub2RlcztcXG4xMDA0OlxcdFxcbjEwMDU6XFx0XFx0XFx0aWYgKGJ1cyBcXHUwMDNlPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VudW1fYnVzZXMpIHtcXG4xMDA2OlxcdFxcdFxcdFxcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCBcXFwiaWxsZWdhbCBzbWkgYnVzIG51bWJlciAlZFxcXFxuXFxcIiwgYnVzKTtcXG4xMDA3OlxcdFxcdFxcdFxcdGdvdG8gcHV0X25vZGVzO1xcbjEwMDg6XFx0XFx0XFx0fVxcbjEwMDk6XFx0XFxuMTAxMDpcXHRcXHRcXHRhZGRyID0gb2ZfbWRpb19wYXJzZV9hZGRyKGRldiwgcGh5X2RuKTtcXG4xMDExOlxcdFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgMCkge1xcbjEwMTI6XFx0XFx0XFx0XFx0ZXJyID0gYWRkcjtcXG4xMDEzOlxcdFxcdFxcdFxcdGdvdG8gcHV0X25vZGVzO1xcbjEwMTQ6XFx0XFx0XFx0fVxcbjEwMTU6XFx0XFxuMTAxNjpcXHRcXHRcXHQvKlxcbjEwMTc6XFx0XFx0XFx0ICogVGhlIE1ESU8gYWNjZXNzZXMgZnJvbSB0aGUga2VybmVsIHdvcmsgd2l0aCB0aGUgUEhZIHBvbGxpbmcgdW5pdCBpbiB0aGVcXG4xMDE4OlxcdFxcdFxcdCAqIHN3aXRjaC4gVGhlIFBQVSBlaXRoZXIgb3BlcmF0ZXMgaW4gR1BIWSAoaS5lLiBjbGF1c2UgMjIpIG9yIDEwR1BIWSBtb2RlXFxuMTAxOTpcXHRcXHRcXHQgKiAoaS5lLiBjbGF1c2UgNDUpLiBTZWxlY3QgMTBHUEhZIG1vZGUgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIFBIWSB0aGF0XFxuMTAyMDpcXHRcXHRcXHQgKiBkZWNsYXJlcyBjb21wYXRpYmxlID0gXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzQ1XFxcIi5cXG4xMDIxOlxcdFxcdFxcdCAqL1xcbjEwMjI6XFx0XFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKHBoeV9kbiwgXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzQ1XFxcIikpXFxuMTAyMzpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VzbWlfYnVzX2lzX2M0NVtidXNdID0gdHJ1ZTtcXG4xMDI0OlxcdFxcbjEwMjU6XFx0XFx0XFx0X19zZXRfYml0KHBuLCBwcml2LVxcdTAwM2V2YWxpZF9wb3J0cyk7XFxuMTAyNjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzbWlfYnVzW3BuXSA9IGJ1cztcXG4xMDI3OlxcdFxcdFxcdHByaXYtXFx1MDAzZXNtaV9hZGRyW3BuXSA9IGFkZHI7XFxuMTAyODpcXHRwdXRfbm9kZXM6XFxuMTAyOTpcXHRcXHRcXHRvZl9ub2RlX3B1dChidXNfZG4pO1xcbjEwMzA6XFx0XFx0XFx0b2Zfbm9kZV9wdXQocGh5X2RuKTtcXG4xMDMxOlxcdFxcdFxcdG9mX25vZGVfcHV0KGN0cmxfZG4pO1xcbjEwMzI6XFx0XFx0XFx0aWYgKGVycilcXG4xMDMzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjEwMzQ6XFx0XFx0fVxcbjEwMzU6XFx0XFxuMTAzNjpcXHRcXHRvZl9ub2RlX3B1dChwb3J0c19kbik7XFxuMTAzNzpcXHRcXG4xMDM4OlxcdFxcdHJldHVybiBlcnI7XFxuMTAzOTpcXHR9XFxuMTA0MDpcXHRcXG4xMDQxOlxcdHN0YXRpYyBpbnQgb3R0b19lbWRpb19pbml0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4xMDQyOlxcdHtcXG4xMDQzOlxcdFxcdGludCBlcnI7XFxuMTA0NDpcXHRcXG4xMDQ1OlxcdFxcdGZvciAoaW50IHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlbnVtX3BvcnRzOyBwb3J0KyspIHtcXG4xMDQ2OlxcdFxcdFxcdGVyciA9IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhwcml2LCBwb3J0LCBmYWxzZSk7XFxuMTA0NzpcXHRcXHRcXHRpZiAoZXJyKVxcbjEwNDg6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMDQ5OlxcdFxcdH1cXG4xMDUwOlxcdFxcbjEwNTE6XFx0XFx0cmV0dXJuIDA7XFxuMTA1MjpcXHR9XFxuMTA1MzpcXHRcXG4xMDU0OlxcdHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjEwNTU6XFx0e1xcbjEwNTY6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4xMDU3OlxcdFxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuMTA1ODpcXHRcXHRpbnQgZXJyO1xcbjEwNTk6XFx0XFxuMTA2MDpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuMTA2MTpcXHRcXHRpZiAoIXByaXYpXFxuMTA2MjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4xMDYzOlxcdFxcbjEwNjQ6XFx0XFx0ZXJyID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbjEwNjU6XFx0XFx0aWYgKGVycilcXG4xMDY2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTA2NzpcXHRcXG4xMDY4OlxcdFxcdHByaXYtXFx1MDAzZWluZm8gPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG4xMDY5OlxcdFxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChkZXYtXFx1MDAzZXBhcmVudC1cXHUwMDNlb2Zfbm9kZSk7XFxuMTA3MDpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCkpXFxuMTA3MTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwcml2LVxcdTAwM2VyZWdtYXApO1xcbjEwNzI6XFx0XFxuMTA3MzpcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcXG4xMDc0OlxcdFxcdGlmIChlcnIpXFxuMTA3NTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjEwNzY6XFx0XFxuMTA3NzpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTtcXG4xMDc4OlxcdFxcbjEwNzk6XFx0XFx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTQuNDU5ODQ3MzgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3ODkyMzk0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGl2aW5nIGludG8gdGhlIFJUTDkzMDAgTURJTyBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIFJlYWx0ZWsgUlRMOTMwMCBNRElPIGRyaXZlciBpcyBzdHJ1Y3R1cmVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBwbGF0Zm9ybV9kcml2ZXJgIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCB0byBleGFtaW5lIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGxhdGZvcm0gZHJpdmVyJ3Mgc2V0dXAgYW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIGJyb2FkZXIga2VybmVsIE1ESU8gZnJhbWV3b3JrLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgaGFwcGVucywgc28gdGhhdCdzIHdoZXJlIEkgd2lsbCBzdGFydCFcblxuXG4iLCJJbnB1dFRva2VucyI6OTg1NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTYuMjQ5MDkwNjA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEzMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTEzMDpcXHRcXHRcXHQuYnJvYWRjYXN0ID0gUlRMODM5MF9CQ0FTVF9QSFlJRF9DVFJMLFxcbjExMzE6XFx0XFx0XFx0LmMyMl9kYXRhID0gUlRMODM5MF9QSFlSRUdfQUNDRVNTX0NUUkwsXFxuMTEzMjpcXHRcXHRcXHQuYzQ1X2RhdGEgPSBSVEw4MzkwX1BIWVJFR19NTURfQ1RSTCxcXG4xMTMzOlxcdFxcdFxcdC5leHRfcGFnZSA9IFJUTDgzOTBfUEhZUkVHX0NUUkwsXFxuMTEzNDpcXHRcXHRcXHQuaW9fZGF0YSA9IFJUTDgzOTBfUEhZUkVHX0RBVEFfQ1RSTCxcXG4xMTM1OlxcdFxcdFxcdC5wb3J0X21hc2tfbG93ID0gUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPVyxcXG4xMTM2OlxcdFxcdFxcdC5wb3J0X21hc2tfaGlnaCA9IFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdILFxcbjExMzc6XFx0XFx0fSxcXG4xMTM4OlxcdFxcdC5udW1fYnVzZXMgPSBSVEw4MzkwX05VTV9CVVNFUyxcXG4xMTM5OlxcdFxcdC5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUyxcXG4xMTQwOlxcdFxcdC5udW1fcG9ydHMgPSBSVEw4MzkwX05VTV9QT1JUUyxcXG4xMTQxOlxcdFxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG4xMTQyOlxcdFxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4xMTQzOlxcdFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcXG4xMTQ0OlxcdFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcXG4xMTQ1OlxcdFxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxcbjExNDY6XFx0XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUsXFxuMTE0NzpcXHR9O1xcbjExNDg6XFx0XFxuMTE0OTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcXG4xMTUwOlxcdFxcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuMTE1MTpcXHRcXHQuYnVzX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUwsXFxuMTE1MjpcXHRcXHQuY21kX2ZhaWwgPSBSVEw5MzAwX1BIWV9DVFJMX0ZBSUwsXFxuMTE1MzpcXHRcXHQuY21kX3JlYWQgPSBSVEw5MzAwX1BIWV9DVFJMX1JFQUQsXFxuMTE1NDpcXHRcXHQuY21kX3dyaXRlID0gUlRMOTMwMF9QSFlfQ1RSTF9XUklURSxcXG4xMTU1OlxcdFxcdC5jbWRfcmVncyA9IHtcXG4xMTU2OlxcdFxcdFxcdC5jMjJfZGF0YSA9IFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xLFxcbjExNTc6XFx0XFx0XFx0LmM0NV9kYXRhID0gUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzMsXFxuMTE1ODpcXHRcXHRcXHQuaW9fZGF0YSA9IFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8yLFxcbjExNTk6XFx0XFx0XFx0LnBvcnRfbWFza19sb3cgPSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMCxcXG4xMTYwOlxcdFxcdH0sXFxuMTE2MTpcXHRcXHQubnVtX2J1c2VzID0gUlRMOTMwMF9OVU1fQlVTRVMsXFxuMTE2MjpcXHRcXHQubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsXFxuMTE2MzpcXHRcXHQubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsXFxuMTE2NDpcXHRcXHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxcbjExNjU6XFx0XFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxcbjExNjY6XFx0XFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcXG4xMTY3OlxcdFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcXG4xMTY4OlxcdFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcXG4xMTY5OlxcdFxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyLFxcbjExNzA6XFx0XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUsXFxuMTE3MTpcXHR9O1xcbjExNzI6XFx0XFxuMTE3MzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG4xMTc0OlxcdFxcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkwsXFxuMTE3NTpcXHRcXHQuYnVzX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX1NFTCxcXG4xMTc2OlxcdFxcdC5jbWRfZmFpbCA9IFJUTDkzMTBfUEhZX0NUUkxfRkFJTCxcXG4xMTc3OlxcdFxcdC5jbWRfcmVhZCA9IFJUTDkzMTBfUEhZX0NUUkxfUkVBRCxcXG4xMTc4OlxcdFxcdC5jbWRfd3JpdGUgPSBSVEw5MzEwX1BIWV9DVFJMX1dSSVRFLFxcbjExNzk6XFx0XFx0LmNtZF9yZWdzID0ge1xcbjExODA6XFx0XFx0XFx0LmJyb2FkY2FzdCA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19CQ19QSFlJRF9DVFJMLFxcbjExODE6XFx0XFx0XFx0LmMyMl9kYXRhID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMCxcXG4xMTgyOlxcdFxcdFxcdC5jNDVfZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19NTURfQ1RSTCxcXG4xMTgzOlxcdFxcdFxcdC5leHRfcGFnZSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzEsXFxuMTE4NDpcXHRcXHRcXHQuaW9fZGF0YSA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzMsXFxuMTE4NTpcXHRcXHRcXHQucG9ydF9tYXNrX2xvdyA9IFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzJfTE9XLFxcbjExODY6XFx0XFx0XFx0LnBvcnRfbWFza19oaWdoID0gUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMl9ISUdILFxcbjExODc6XFx0XFx0fSxcXG4xMTg4OlxcdFxcdC5udW1fYnVzZXMgPSBSVEw5MzEwX05VTV9CVVNFUyxcXG4xMTg5OlxcdFxcdC5udW1fcGFnZXMgPSBSVEw5MzEwX05VTV9QQUdFUyxcXG4xMTkwOlxcdFxcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcXG4xMTkxOlxcdFxcdC5wb2xsX2N0cmwgPSBSVEw5MzEwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG4xMTkyOlxcdFxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4xMTkzOlxcdFxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXFxuMTE5NDpcXHRcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIsXFxuMTE5NTpcXHRcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuMTE5NjpcXHRcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMixcXG4xMTk3OlxcdFxcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1LFxcbjExOTg6XFx0fTtcXG4xMTk5OlxcdFxcbjEyMDA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb3R0b19lbWRpb19pZHNbXSA9IHtcXG4xMjAxOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbjEyMDI6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDgzOTEtbWRpb1xcXCIsIC5kYXRhID0gXFx1MDAyNm90dG9fZW1kaW9fODM5MF9pbmZvIH0sXFxuMTIwMzpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsOTMwMS1tZGlvXFxcIiwgLmRhdGEgPSBcXHUwMDI2b3R0b19lbWRpb185MzAwX2luZm8gfSxcXG4xMjA0OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbjEyMDU6XFx0XFx0e31cXG4xMjA2OlxcdH07XFxuMTIwNzpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvdHRvX2VtZGlvX2lkcyk7XFxuMTIwODpcXHRcXG4xMjA5OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG90dG9fZW1kaW9fZHJpdmVyID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDo1Ni4yNDkxOTU5NjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ1NDM1NDA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBvdHRvX2VtZGlvX2RyaXZlcmAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFNvLCBJJ20gbG9va2luZyBhdCBgb3R0b19lbWRpb19kcml2ZXJgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgbWF0Y2hlZCB1c2luZyBEZXZpY2UgVHJlZS4gVGhlIG1hdGNoIGhhcHBlbnMgdmlhIHRoZSBgb3R0b19lbWRpb19pZHNgIHRhYmxlLCB3aGljaCBzdWdnZXN0cyBpdCB1c2VzIGNvbXBhdGlibGUgc3RyaW5ncy4gR29vZCwgdGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLiBJIHNlZSBzdHJpbmdzIGxpa2UgYHJlYWx0ZWsscnRsODM4MC1tZGlvYCBhbmQgYHJlYWx0ZWsscnRsOTMwMS1tZGlvYCDigJMgc28gaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIFJlYWx0ZWsgTURJTyBjb250cm9sbGVycy4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCB3aGF0IGFyY2hpdGVjdHVyZSBpcyBgTUFDSF9SRUFMVEVLX1JUTGAgZGVzaWduZWQgZm9yPyBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlIGFuZCBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBNQUNIX1JFQUxURUtfUlRMYC4gS25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBwbGF0Zm9ybSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQncyB0cmFjZSB0aGF0IG1hY3JvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjEwNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6NTguNzAzNTUyNjU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEyMDAxMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQ0hfUkVBTFRFS19SVExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL0tjb25maWc9NjgxPWNvbmZpZyBSQUxJTktcXG4tLVxcbmFyY2gvbWlwcy9LY29uZmlnLTY5OC1cXG5hcmNoL21pcHMvS2NvbmZpZzo2OTk6Y29uZmlnIE1BQ0hfUkVBTFRFS19SVExcXG5hcmNoL21pcHMvS2NvbmZpZy03MDAtXFx0Ym9vbCBcXFwiUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXggYmFzZWQgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZToyOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdCs9IGNpc2NvX3NnMjIwLTI2LmR0YlxcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjM6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXFx0Kz0gY2FtZW8tcnRsOTMwMmMtMngtcnRsODIyNC0yeGdlLmR0Ylxcbi0tXFxuYXJjaC9taXBzL2dlbmVyaWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1ZJUlRfQk9BUkRfUkFOQ0hVKVxcdFxcdCs9IGJvYXJkLXJhbmNodS5vXFxuYXJjaC9taXBzL2dlbmVyaWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXFx0XFx0Kz0gYm9hcmQtcmVhbHRlay5vXFxuLS1cXG5kcml2ZXJzL2dwaW8vS2NvbmZpZz02MjU9Y29uZmlnIEdQSU9fUkVBTFRFS19PVFRPXFxuZHJpdmVycy9ncGlvL0tjb25maWctNjI2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIE90dG8gR1BJTyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyNzpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9ncGlvL0tjb25maWc6NjI4OlxcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyOS1cXHRzZWxlY3QgR1BJT19HRU5FUklDXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZz0xMTAzPWNvbmZpZyBJMkNfUlRMOTMwMFxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTExMDQtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMOTMwMCBJMkMgY29udHJvbGxlclxcXCJcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzoxMTA1OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZT0xMzA9b2JqLSQoQ09ORklHX1NMMjhDUExEX0lOVEMpXFx0XFx0Kz0gaXJxLXNsMjhjcGxkLm9cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU6MTMxOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IGlycS1yZWFsdGVrLXJ0bC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTEzMi1vYmotJChDT05GSUdfV1BDTTQ1MF9BSUMpXFx0XFx0Kz0gaXJxLXdwY200NTAtYWljLm9cXG4tLVxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZz02ND1jb25maWcgTVREX05BTkRfRUNDX1JFQUxURUtcXG4tLVxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02Ni0gICAgICAgIGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc6Njc6ICAgICAgICBkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY4LSAgICAgICAgc2VsZWN0IE1URF9OQU5EX0VDQ1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTE3ND1jb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoxNzY6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZz05MTY9Y29uZmlnIFNQSV9SRUFMVEVLX1NOQU5EXFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgU1BJLU5BTkQgRmxhc2ggQ29udHJvbGxlclxcXCJcXG5kcml2ZXJzL3NwaS9LY29uZmlnOjkxODpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTktXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19TUElfUkI0WFgpXFx0XFx0XFx0Kz0gc3BpLXJiNHh4Lm9cXG5kcml2ZXJzL3NwaS9NYWtlZmlsZToxMzI6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXFx0XFx0Kz0gc3BpLXJlYWx0ZWstcnRsLm9cXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX1NQSV9SRUFMVEVLX1NOQU5EKVxcdFxcdCs9IHNwaS1yZWFsdGVrLXJ0bC1zbmFuZC5vXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc9MTExMz1jb25maWcgUkVBTFRFS19PVFRPX1dEVFxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIE90dG8gTUlQUyB3YXRjaGRvZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE1OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNi1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE4LVxcdHNlbGVjdCBSRUdNQVBfTU1JT1xcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTE5OlxcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTIwLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTU6MDAuNDE1NTYwNTI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwODEyMjI5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGFuIGBhbWQ2NGAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgY2hhbmdlcyBpbnZvbHZlIGBNRElPX1JFQUxURUtfUlRMOTMwMGAsIHdoaWNoLCBjcml0aWNhbGx5LCByZWxpZXMgb24gZWl0aGVyIGBNQUNIX1JFQUxURUtfUlRMYCBvciBgQ09NUElMRV9URVNUYC4gTG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiwgYE1BQ0hfUkVBTFRFS19SVExgIGlzIHRpZWQgdG8gTUlQUy1iYXNlZCBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eCBTb0NzLiBUaGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBSZWFsdGVrIHN3aXRjaCBTb0NzIChSVEw4MzgwLCBSVEw4MzkwLCBSVEw5MzAwLCBSVEw5MzEwKSBhbmQgaXMgbWF0Y2hlZCB1c2luZyB0aGUgRGV2aWNlIFRyZWUgKE9GKS5cblxuVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4gSXQncyBhIGhhcmR3YXJlLXNwZWNpZmljLCBlbWJlZGRlZCBTb0MgZHJpdmVyLiBJdCdzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBvZiB0aGVzZSBSZWFsdGVrIHN3aXRjaCBjaGlwcywgd2hpY2ggbWVhbnMgaXQgZGVwZW5kcyBvbiBhIHBoeXNpY2FsIGRldmljZSBvciBhIGNhcmVmdWxseSBjb25zdHJ1Y3RlZCBEVCBub2RlIHRoYXQgZGVzY3JpYmVzIGEgc3BlY2lmaWMgc3lzY29uIHJlZ21hcC4gSXQncyBub3Qgc29tZXRoaW5nIHlvdSBjYW4gcmVhY2ggdmlhIHN0YW5kYXJkIHg4Ni9hbWQ2NCB2aXJ0dWFsIGJ1c2VzIGxpa2UgUENJLCBVU0IsIG9yIHZpcnR1YWwgYnVzZXMgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUuXG5cbk5vdywgbGV0J3MgY29uc3VsdCB0aGUgXCJORUdBVElWRSBDUklURVJJQVwiIG91dGxpbmVkIGluIFNlY3Rpb24gMi4gVGhlIGNyaXRpY2FsIHNlY3Rpb24gaGVyZSBkZXNjcmliZXMgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBzd2l0Y2hlcyBhbmQgU21hcnROSUNzIHJlcXVpcmluZyBzcGVjaWZpYyBoYXJkd2FyZSB1bmF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBJdCBhbHNvIGRlc2NyaWJlcyB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuIFRoaXMgc2l0dWF0aW9uIGZpdHMgcGVyZmVjdGx5OiB0aGUgY2hhbmdlcywgY2VudGVyZWQgYXJvdW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGFuZCBkZXZpY2V0cmVlIGJpbmRpbmdzLCBhcmUgZm9yIGEgcGxhdGZvcm0gZHJpdmVyIG9uIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IEV0aGVybmV0IHN3aXRjaCBTb0NzLCBzcGVjaWZpY2FsbHkgTUlQUy1iYXNlZCBlbWJlZGRlZCBTb0NzLiBUaGlzIGRyaXZlciBleHBlY3RzIHRvIGJlIHJ1bm5pbmcgb24gTUlQUyBoYXJkd2FyZSwgbm90IGFtZDY0LCBhbmQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgaXMgY29yZS5cblxuVG8gYmUgZXh0cmEgY2VydGFpbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXRhaWxzOiBUYXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFRoZSBjaGFuZ2VzIGFyZSB0byBhZGQgYnVzIGZyZXF1ZW5jeSBjb25maWcgdmlhIGRldmljZXRyZWUgcHJvcGVydGllcyAoIGBjbG9jay1mcmVxdWVuY3lgICkgdG8gdGhlIC5jIGZpbGUgYW5kIHRoZSBiaW5kaW5ncyB5YW1sLiBJJ20gbm90IHNlZWluZyBhbnkgbW9kaWZpY2F0aW9ucyB0byBjb3JlIHN1YnN5c3RlbXMgb3IgdmlydHVhbCBkZXZpY2VzLCBqdXN0IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxgIGFuZCBgZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jYC5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBhbmQgdGhlIE1JUFMgZGVwZW5kZW5jZSBvZiB0aGlzIGNvZGUsIGl0J3MgY2xlYXI6XG5cbiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbIF0qKiAoZW1wdHkpXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcWyBdKiogKGVtcHR5KVxuKiAgICoqUmVhc29uaW5nOioqIFBsYXRmb3JtIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4Mzh4L1JUTDkzeHggTUlQUyBTb0MgRXRoZXJuZXQgc3dpdGNoIE1ESU8gaW50ZXJmYWNlLiBUaGUgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBvciBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcyBkdWUgdG8gYSBkZXBlbmRlbmNlIG9uIGEgc3BlY2lmaWMgTUlQUy1iYXNlZCBSZWFsdGVrIFNvQyBhbmQgcmVxdWlyZWQgaGFyZHdhcmUgb3Igc3BlY2lmaWMgRFQgY29uZmlndXJhdGlvbnMuXG5cbk9rYXksIGxldCdzIGdlbmVyYXRlIHRoZSBgc2V0LXJlc3VsdHNgIGNhbGwgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY4OSwiT3V0cHV0VG9rZW5zIjoxMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTU6MDcuNDk2Nzg3MDQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBhbmQgYWRkcyBidXMgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gbG9naWMgdG8gdGhlIFJlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gZHJpdmVyIChtZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBSZWFsdGVrIE1JUFMtYmFzZWQgc3dpdGNoIFNvQ3MgKE1BQ0hfUkVBTFRFS19SVEwpIGFuZCBpcyBpbnN0YW50aWF0ZWQgdmlhIERldmljZSBUcmVlLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTU6MDcuNDk2ODE4MDM5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7jmw[1] Phase: Running StartedAt: 2026-09-04 18:15:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7jmw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 18:15:19 +0000 UTC FinishedAt: 2026-09-04 18:15:23 +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,}